diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurniture.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurniture.java index b3aa0479c..c31816e18 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurniture.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/BukkitFurniture.java @@ -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; } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxTypes.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxTypes.java index 20c2115f3..881f8c609 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxTypes.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/HitBoxTypes.java @@ -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); } -} +} \ No newline at end of file diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveFurnitureFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveFurnitureFunction.java index 7acd7f40d..e2caefed5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveFurnitureFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/RemoveFurnitureFunction.java @@ -26,14 +26,14 @@ public class RemoveFurnitureFunction extends AbstractCondit public void runInternal(CTX ctx) { Optional optionalWorldPosition = ctx.getOptionalParameter(DirectContextParameters.POSITION); if (optionalWorldPosition.isPresent()) { - // Buscar muebles en el contexto + // Search for furniture in the context Optional 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 } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ReplaceFurnitureFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ReplaceFurnitureFunction.java index 2a2ac74db..fd671a065 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ReplaceFurnitureFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ReplaceFurnitureFunction.java @@ -52,7 +52,7 @@ public class ReplaceFurnitureFunction 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 extends AbstractCondi WorldPosition newPosition = new WorldPosition(optionalWorldPosition.get().world(), xPos, yPos, zPos, pitchValue, yawValue); - // Obtener el nuevo mueble + // Get the new furniture Optional 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); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/FurnitureParameterProvider.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/FurnitureParameterProvider.java index 8ca0d81ee..8b3974115 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/FurnitureParameterProvider.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/parameter/FurnitureParameterProvider.java @@ -18,8 +18,8 @@ public class FurnitureParameterProvider implements ChainParameterProvider 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")