9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-27 02:49:15 +00:00

fixed requests of jhqwqmc

This commit is contained in:
Arubik
2025-07-05 09:44:54 -05:00
parent f8d501e6e7
commit e7d2741de5
5 changed files with 28 additions and 52 deletions

View File

@@ -1,32 +1,5 @@
package net.momirealms.craftengine.bukkit.entity.furniture;
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import java.util.Set;
import java.util.UUID;
import java.util.Vector;
import org.bukkit.Location;
import org.bukkit.attribute.Attribute;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.ItemDisplay;
import org.bukkit.entity.Player;
import org.bukkit.persistence.PersistentDataType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.joml.Quaternionf;
import org.joml.Vector3f;
import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap;
import it.unimi.dsi.fastutil.ints.IntArrayList;
import net.momirealms.craftengine.bukkit.entity.BukkitEntity;
@@ -35,16 +8,7 @@ import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflect
import net.momirealms.craftengine.bukkit.util.EntityUtils;
import net.momirealms.craftengine.bukkit.util.LegacyAttributeUtils;
import net.momirealms.craftengine.bukkit.util.LocationUtils;
import net.momirealms.craftengine.core.entity.furniture.AnchorType;
import net.momirealms.craftengine.core.entity.furniture.Collider;
import net.momirealms.craftengine.core.entity.furniture.CustomFurniture;
import net.momirealms.craftengine.core.entity.furniture.ExternalModel;
import net.momirealms.craftengine.core.entity.furniture.Furniture;
import net.momirealms.craftengine.core.entity.furniture.FurnitureElement;
import net.momirealms.craftengine.core.entity.furniture.FurnitureExtraData;
import net.momirealms.craftengine.core.entity.furniture.FurnitureManager;
import net.momirealms.craftengine.core.entity.furniture.HitBox;
import net.momirealms.craftengine.core.entity.furniture.Seat;
import net.momirealms.craftengine.core.entity.furniture.*;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.util.ArrayUtils;
import net.momirealms.craftengine.core.util.Key;
@@ -52,6 +16,18 @@ import net.momirealms.craftengine.core.util.QuaternionUtils;
import net.momirealms.craftengine.core.util.VersionHelper;
import net.momirealms.craftengine.core.world.WorldPosition;
import net.momirealms.craftengine.core.world.collision.AABB;
import org.bukkit.Location;
import org.bukkit.attribute.Attribute;
import org.bukkit.entity.*;
import org.bukkit.persistence.PersistentDataType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.joml.Quaternionf;
import org.joml.Vector3f;
import java.io.IOException;
import java.lang.ref.WeakReference;
import java.util.*;
public class BukkitFurniture implements Furniture {
private final Key id;
@@ -161,6 +137,7 @@ public class BukkitFurniture implements Furniture {
@NotNull
public Object spawnPacket(Player player) {
// TODO hasPermission might be slow, can we use a faster way in the future?
// TODO Make it based on conditions. So we can dynamically control which furniture should be sent to the player
if (!this.minimized || player.hasPermission(FurnitureManager.FURNITURE_ADMIN_NODE)) {
return this.cachedSpawnPacket;
} else {
@@ -385,4 +362,4 @@ public class BukkitFurniture implements Furniture {
newLocation.add(offset.x, offset.y + 0.6, -offset.z);
return newLocation;
}
}
}

View File

@@ -1,8 +1,5 @@
package net.momirealms.craftengine.core.entity.furniture;
import java.util.Map;
import java.util.Optional;
import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException;
import net.momirealms.craftengine.core.registry.BuiltInRegistries;
import net.momirealms.craftengine.core.registry.Holder;
@@ -11,6 +8,9 @@ import net.momirealms.craftengine.core.registry.WritableRegistry;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.ResourceKey;
import java.util.Map;
import java.util.Optional;
public class HitBoxTypes {
public static final Key INTERACTION = Key.of("minecraft:interaction");
public static final Key SHULKER = Key.of("minecraft:shulker");
@@ -31,4 +31,4 @@ public class HitBoxTypes {
}
return factory.create(arguments);
}
}
}

View File

@@ -26,14 +26,14 @@ public class RemoveFurnitureFunction<CTX extends Context> extends AbstractCondit
public void runInternal(CTX ctx) {
Optional<WorldPosition> optionalWorldPosition = ctx.getOptionalParameter(DirectContextParameters.POSITION);
if (optionalWorldPosition.isPresent()) {
// Buscar muebles en el contexto
// Search for furniture in the context
Optional<Furniture> optionalFurniture = ctx.getOptionalParameter(DirectContextParameters.FURNITURE);
if (optionalFurniture.isPresent()) {
Furniture furniture = optionalFurniture.get();
if (furniture.isValid()) {
furniture.destroy();
// TODO: Implementar lógica para dropear loot y reproducir sonidos
// usando this.dropLoot y this.playSound cuando sea necesario
// TODO: Implement logic to drop loot and play sounds
// using this.dropLoot and this.playSound when necessary
}
}
}

View File

@@ -52,7 +52,7 @@ public class ReplaceFurnitureFunction<CTX extends Context> extends AbstractCondi
if (optionalWorldPosition.isPresent() && optionalOldFurniture.isPresent()) {
Furniture oldFurniture = optionalOldFurniture.get();
// Obtener la nueva posición o usar la actual del mueble
// Get the new position or use the current furniture position
double xPos = this.x.getDouble(ctx);
double yPos = this.y.getDouble(ctx);
double zPos = this.z.getDouble(ctx);
@@ -61,19 +61,18 @@ public class ReplaceFurnitureFunction<CTX extends Context> extends AbstractCondi
WorldPosition newPosition = new WorldPosition(optionalWorldPosition.get().world(), xPos, yPos, zPos, pitchValue, yawValue);
// Obtener el nuevo mueble
// Get the new furniture
Optional<CustomFurniture> optionalNewFurniture = CraftEngine.instance().furnitureManager().furnitureById(this.newFurnitureId);
if (optionalNewFurniture.isPresent()) {
CustomFurniture newFurniture = optionalNewFurniture.get();
AnchorType anchor = this.anchorType != null ? this.anchorType : newFurniture.getAnyAnchorType();
// Remover el mueble antiguo
// Remove the old furniture
if (oldFurniture.isValid()) {
oldFurniture.destroy();
// TODO: Implementar lógica para dropear loot usando this.dropLoot
}
// Colocar el nuevo mueble
// Place the new furniture
FurnitureExtraData extraData = FurnitureExtraData.builder().anchorType(anchor).build();
CraftEngine.instance().furnitureManager().place(newPosition, newFurniture, extraData, this.playSound);
}

View File

@@ -18,8 +18,8 @@ public class FurnitureParameterProvider implements ChainParameterProvider<Furnit
CONTEXT_FUNCTIONS.put(DirectContextParameters.X, furniture -> furniture.position().x());
CONTEXT_FUNCTIONS.put(DirectContextParameters.Y, furniture -> furniture.position().y());
CONTEXT_FUNCTIONS.put(DirectContextParameters.Z, furniture -> furniture.position().z());
CONTEXT_FUNCTIONS.put(DirectContextParameters.PITCH, furniture -> furniture.pitch());
CONTEXT_FUNCTIONS.put(DirectContextParameters.YAW, furniture -> furniture.yaw());
CONTEXT_FUNCTIONS.put(DirectContextParameters.PITCH, furniture -> furniture.position().xRot());
CONTEXT_FUNCTIONS.put(DirectContextParameters.YAW, furniture -> furniture.position().yRot());
}
@SuppressWarnings("unchecked")