From 7082020220fd4c1e98f598649c7b41cd8abc7cce Mon Sep 17 00:00:00 2001 From: jhqwqmc Date: Wed, 3 Dec 2025 07:38:36 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=BF=AB=E4=B9=90=E6=81=B6?= =?UTF-8?q?=E9=AD=82=E7=A2=B0=E6=92=9E=E7=AE=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/api/CraftEngineFurniture.java | 8 +- .../event/AsyncResourcePackCacheEvent.java | 2 +- .../behavior/NearLiquidBlockBehavior.java | 2 +- .../block/behavior/OnLiquidBlockBehavior.java | 2 +- .../entity/data/ItemDisplayEntityData.java | 2 +- .../hitbox/BukkitFurnitureHitboxTypes.java | 7 +- .../hitbox/HappyGhastFurnitureHitbox.java | 88 +++++++++++++++++++ .../HappyGhastFurnitureHitboxConfig.java | 83 +++++++++++++++++ .../hitbox/InteractionFurnitureHitbox.java | 14 +-- .../InteractionFurnitureHitboxConfig.java | 30 ++++++- .../hitbox/ShulkerFurnitureHitbox.java | 12 +-- .../hitbox/ShulkerFurnitureHitboxConfig.java | 28 +++--- .../bukkit/plugin/BukkitPlatform.java | 4 +- .../command/feature/DebugItemDataCommand.java | 2 +- .../feature/DebugSpawnFurnitureCommand.java | 5 +- .../handler/ProjectilePacketHandler.java | 2 +- .../plugin/network/payload/PayloadHelper.java | 4 +- .../craftengine/core/block/BlockBehavior.java | 2 +- .../behavior/IsPathFindableBlockBehavior.java | 2 +- .../element/BlockEntityElementConfigs.java | 7 +- .../entity/furniture/FurnitureConfig.java | 1 + .../furniture/FurnitureDataAccessor.java | 3 +- .../element/FurnitureElementConfigs.java | 7 +- .../hitbox/FurnitureHitBoxTypes.java | 7 +- .../craftengine/core/item/Item.java | 2 +- .../craftengine/core/item/ItemSettings.java | 4 +- .../recipe/CustomSmithingTransformRecipe.java | 2 +- .../item/recipe/CustomSmithingTrimRecipe.java | 2 +- .../function/ApplyBonusCountFunction.java | 4 +- .../core/pack/model/ItemModels.java | 2 +- .../model/condition/ConditionProperties.java | 2 +- .../RangeDispatchProperties.java | 2 +- .../pack/model/select/SelectProperties.java | 2 +- .../pack/model/special/SignSpecialModel.java | 2 +- .../pack/model/special/SpecialModels.java | 2 +- .../core/pack/model/tint/Tints.java | 2 +- .../core/pack/obfuscation/ObfA.java | 2 +- .../plugin/command/sender/AbstractSender.java | 2 +- .../core/plugin/config/Config.java | 4 +- .../plugin/config/StringKeyConstructor.java | 10 +-- .../argument/ExpressionTemplateArgument.java | 2 +- .../template/argument/TemplateArguments.java | 2 +- .../context/function/DamageFunction.java | 2 +- .../context/function/OpenWindowFunction.java | 2 +- .../function/ReplaceFurnitureFunction.java | 3 +- .../function/SpawnFurnitureFunction.java | 2 +- .../context/function/ToastFunction.java | 2 +- .../core/plugin/locale/LangData.java | 2 +- .../core/registry/BuiltInRegistries.java | 6 +- .../craftengine/core/registry/Registries.java | 6 +- .../craftengine/core/sound/SoundData.java | 2 +- .../craftengine/core/util/Pair.java | 8 +- .../core/util/ReflectionUtils.java | 2 +- .../core/util/ResourceConfigUtils.java | 72 ++++++++------- .../craftengine/core/util/SNBTReader.java | 2 +- .../craftengine/core/util/Tuple.java | 12 +-- .../craftengine/core/util/TypeUtils.java | 14 +-- 57 files changed, 359 insertions(+), 152 deletions(-) create mode 100644 bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/HappyGhastFurnitureHitbox.java create mode 100644 bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/HappyGhastFurnitureHitboxConfig.java diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/CraftEngineFurniture.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/CraftEngineFurniture.java index 5d5c4532f..7f2a1cabe 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/CraftEngineFurniture.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/CraftEngineFurniture.java @@ -80,7 +80,7 @@ public final class CraftEngineFurniture { * * @param location location * @param furnitureId furniture to place - * @param anchorType anchor id + * @param anchorType anchor type * @return the loaded furniture */ @Nullable @@ -98,7 +98,7 @@ public final class CraftEngineFurniture { * * @param location location * @param furniture furniture to place - * @param anchorType anchor id + * @param anchorType anchor type * @return the loaded furniture */ @NotNull @@ -114,7 +114,7 @@ public final class CraftEngineFurniture { * * @param location location * @param furnitureId furniture to place - * @param anchorType anchor id + * @param anchorType anchor type * @param playSound whether to play place sounds * @return the loaded furniture */ @@ -133,7 +133,7 @@ public final class CraftEngineFurniture { * * @param location location * @param furniture furniture to place - * @param anchorType anchor id + * @param anchorType anchor type * @param playSound whether to play place sounds * @return the loaded furniture */ diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/AsyncResourcePackCacheEvent.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/AsyncResourcePackCacheEvent.java index 62099bba8..dfa064fa3 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/AsyncResourcePackCacheEvent.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/api/event/AsyncResourcePackCacheEvent.java @@ -49,7 +49,7 @@ public final class AsyncResourcePackCacheEvent extends Event { * Adds an external resource pack to the cache. *

* This method accepts either a .zip file or a directory path representing a resource pack. - * The resource pack will be added to the appropriate cache collection based on its id. + * The resource pack will be added to the appropriate cache collection based on its type. *

* * @param path the file system path to the resource pack. Must be either a .zip file or a directory. diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/NearLiquidBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/NearLiquidBlockBehavior.java index 060282f7d..9c9b02c65 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/NearLiquidBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/NearLiquidBlockBehavior.java @@ -45,7 +45,7 @@ public class NearLiquidBlockBehavior extends AbstractCanSurviveBlockBehavior { public static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { - List liquidTypes = MiscUtils.getAsStringList(arguments.getOrDefault("liquid-id", List.of("water"))); + List liquidTypes = MiscUtils.getAsStringList(arguments.getOrDefault("liquid-type", List.of("water"))); boolean stackable = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("stackable", false), "stackable"); int delay = ResourceConfigUtils.getAsInt(arguments.getOrDefault("delay", 0), "delay"); List positionsToCheck = MiscUtils.getAsStringList(arguments.getOrDefault("positions", List.of())); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/OnLiquidBlockBehavior.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/OnLiquidBlockBehavior.java index 3e8a3fed1..e71780c7c 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/OnLiquidBlockBehavior.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/behavior/OnLiquidBlockBehavior.java @@ -40,7 +40,7 @@ public class OnLiquidBlockBehavior extends AbstractCanSurviveBlockBehavior { public static class Factory implements BlockBehaviorFactory { @Override public BlockBehavior create(CustomBlock block, Map arguments) { - List liquidTypes = MiscUtils.getAsStringList(arguments.getOrDefault("liquid-id", List.of("water"))); + List liquidTypes = MiscUtils.getAsStringList(arguments.getOrDefault("liquid-type", List.of("water"))); boolean stackable = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("stackable", false), "stackable"); int delay = ResourceConfigUtils.getAsInt(arguments.getOrDefault("delay", 0), "delay"); return new OnLiquidBlockBehavior(block, delay, stackable, liquidTypes.contains("water"), liquidTypes.contains("lava")); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/ItemDisplayEntityData.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/ItemDisplayEntityData.java index 091f8654e..09d39ebdc 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/ItemDisplayEntityData.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/ItemDisplayEntityData.java @@ -6,7 +6,7 @@ public class ItemDisplayEntityData extends DisplayEntityData { // Item display only public static final ItemDisplayEntityData DisplayedItem = new ItemDisplayEntityData<>(ItemDisplayEntityData.class, EntityDataValue.Serializers$ITEM_STACK, CoreReflections.instance$ItemStack$EMPTY); /** - * Display id: + * Display type: * 0 = NONE * 1 = THIRD_PERSON_LEFT_HAND * 2 = THIRD_PERSON_RIGHT_HAND diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/BukkitFurnitureHitboxTypes.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/BukkitFurnitureHitboxTypes.java index b930275bc..10c1a33d2 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/BukkitFurnitureHitboxTypes.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/BukkitFurnitureHitboxTypes.java @@ -1,6 +1,7 @@ package net.momirealms.craftengine.bukkit.entity.furniture.hitbox; import net.momirealms.craftengine.core.entity.furniture.hitbox.FurnitureHitBoxTypes; +import net.momirealms.craftengine.core.util.VersionHelper; public class BukkitFurnitureHitboxTypes extends FurnitureHitBoxTypes { @@ -9,7 +10,9 @@ public class BukkitFurnitureHitboxTypes extends FurnitureHitBoxTypes { static { register(INTERACTION, InteractionFurnitureHitboxConfig.FACTORY); register(SHULKER, ShulkerFurnitureHitboxConfig.FACTORY); -// register(HAPPY_GHAST, HappyGhastFurnitureHitboxConfig.FACTORY); -// register(CUSTOM, CustomFurnitureHitboxConfig.FACTORY); + // register(CUSTOM, CustomFurnitureHitboxConfig.FACTORY); + if (VersionHelper.isOrAbove1_21_6()) { + register(HAPPY_GHAST, HappyGhastFurnitureHitboxConfig.FACTORY); + } } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/HappyGhastFurnitureHitbox.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/HappyGhastFurnitureHitbox.java new file mode 100644 index 000000000..8905b7c2f --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/HappyGhastFurnitureHitbox.java @@ -0,0 +1,88 @@ +package net.momirealms.craftengine.bukkit.entity.furniture.hitbox; + +import it.unimi.dsi.fastutil.ints.IntArrayList; +import net.momirealms.craftengine.bukkit.nms.FastNMS; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MAttributeHolders; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MEntityTypes; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.NetworkReflections; +import net.momirealms.craftengine.core.entity.furniture.Collider; +import net.momirealms.craftengine.core.entity.furniture.Furniture; +import net.momirealms.craftengine.core.entity.furniture.hitbox.FurnitureHitboxPart; +import net.momirealms.craftengine.core.entity.player.Player; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.util.QuaternionUtils; +import net.momirealms.craftengine.core.world.Vec3d; +import net.momirealms.craftengine.core.world.WorldPosition; +import net.momirealms.craftengine.core.world.collision.AABB; +import org.joml.Quaternionf; +import org.joml.Vector3f; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.UUID; +import java.util.function.Consumer; + +public class HappyGhastFurnitureHitbox extends AbstractFurnitureHitBox { + private final HappyGhastFurnitureHitboxConfig config; + private final Collider collider; + private final Object spawnPacket; + private final Object despawnPacket; + private final FurnitureHitboxPart part; + + public HappyGhastFurnitureHitbox(Furniture furniture, HappyGhastFurnitureHitboxConfig config) { + super(furniture, config); + this.config = config; + WorldPosition position = furniture.position(); + Quaternionf conjugated = QuaternionUtils.toQuaternionf(0f, (float) Math.toRadians(180 - position.yRot()), 0f).conjugate(); + Vector3f offset = conjugated.transform(new Vector3f(config.position())); + Vec3d pos = Furniture.getRelativePosition(position, config.position()); + AABB aabb = AABB.fromInteraction(pos, 3 * config.scale(), 3 * config.scale()); + int happyGhastId = CoreReflections.instance$Entity$ENTITY_COUNTER.incrementAndGet(); + List packets = new ArrayList<>(3); + packets.add(FastNMS.INSTANCE.constructor$ClientboundAddEntityPacket( + happyGhastId, UUID.randomUUID(), position.x + offset.x, position.y + offset.y, position.z + offset.z, 0, position.yRot, + MEntityTypes.HAPPY_GHAST, 0, CoreReflections.instance$Vec3$Zero, 0 + )); + packets.add(FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(happyGhastId, config.cachedValues())); + if (config.scale() != 1) { + try { + Object attributeInstance = CoreReflections.constructor$AttributeInstance.newInstance(MAttributeHolders.SCALE, (Consumer) (o) -> {}); + CoreReflections.method$AttributeInstance$setBaseValue.invoke(attributeInstance, config.scale()); + packets.add(NetworkReflections.constructor$ClientboundUpdateAttributesPacket0.newInstance(happyGhastId, Collections.singletonList(attributeInstance))); + } catch (ReflectiveOperationException e) { + CraftEngine.instance().logger().warn("Failed to apply scale attribute", e); + } + } + this.collider = createCollider(furniture.world(), pos, aabb, config.hardCollision(), config.blocksBuilding(), config.canBeHitByProjectile()); + this.part = new FurnitureHitboxPart(happyGhastId, aabb, pos); + this.spawnPacket = FastNMS.INSTANCE.constructor$ClientboundBundlePacket(packets); + this.despawnPacket = FastNMS.INSTANCE.constructor$ClientboundRemoveEntitiesPacket(new IntArrayList() {{ add(happyGhastId); }}); + } + + @Override + public List colliders() { + return List.of(this.collider); + } + + @Override + public List parts() { + return List.of(this.part); + } + + @Override + public void show(Player player) { + player.sendPacket(this.spawnPacket, false); + } + + @Override + public void hide(Player player) { + player.sendPacket(this.despawnPacket, false); + } + + @Override + public HappyGhastFurnitureHitboxConfig config() { + return this.config; + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/HappyGhastFurnitureHitboxConfig.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/HappyGhastFurnitureHitboxConfig.java new file mode 100644 index 000000000..7e28b68da --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/HappyGhastFurnitureHitboxConfig.java @@ -0,0 +1,83 @@ +package net.momirealms.craftengine.bukkit.entity.furniture.hitbox; + +import net.momirealms.craftengine.bukkit.entity.data.HappyGhastData; +import net.momirealms.craftengine.core.entity.furniture.Furniture; +import net.momirealms.craftengine.core.entity.furniture.hitbox.AbstractFurnitureHitBoxConfig; +import net.momirealms.craftengine.core.entity.furniture.hitbox.FurnitureHitBoxConfig; +import net.momirealms.craftengine.core.entity.furniture.hitbox.FurnitureHitBoxConfigFactory; +import net.momirealms.craftengine.core.entity.seat.SeatConfig; +import net.momirealms.craftengine.core.util.ResourceConfigUtils; +import net.momirealms.craftengine.core.world.Vec3d; +import net.momirealms.craftengine.core.world.WorldPosition; +import net.momirealms.craftengine.core.world.collision.AABB; +import org.joml.Vector3f; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.function.Consumer; + +public class HappyGhastFurnitureHitboxConfig extends AbstractFurnitureHitBoxConfig { + public static final Factory FACTORY = new Factory(); + private final double scale; + private final boolean hardCollision; + private final List cachedValues = new ArrayList<>(3); + + public HappyGhastFurnitureHitboxConfig(SeatConfig[] seats, + Vector3f position, + boolean canUseItemOn, + boolean blocksBuilding, + boolean canBeHitByProjectile, + double scale, + boolean hardCollision) { + super(seats, position, canUseItemOn, blocksBuilding, canBeHitByProjectile); + this.scale = scale; + this.hardCollision = hardCollision; + HappyGhastData.StaysStill.addEntityDataIfNotDefaultValue(hardCollision, this.cachedValues); + HappyGhastData.MobFlags.addEntityDataIfNotDefaultValue((byte) 0x01, this.cachedValues); // NO AI + HappyGhastData.SharedFlags.addEntityDataIfNotDefaultValue((byte) 0x20, this.cachedValues); // Invisible + } + + public double scale() { + return scale; + } + + public boolean hardCollision() { + return hardCollision; + } + + public List cachedValues() { + return cachedValues; + } + + @Override + public HappyGhastFurnitureHitbox create(Furniture furniture) { + return new HappyGhastFurnitureHitbox(furniture, this); + } + + @Override + public void prepareForPlacement(WorldPosition targetPos, Consumer aabbConsumer) { + if (this.blocksBuilding) { + Vec3d relativePosition = Furniture.getRelativePosition(targetPos, this.position); + aabbConsumer.accept(AABB.fromInteraction(relativePosition, 3 * this.scale, 3 * this.scale)); + } + } + + public static class Factory implements FurnitureHitBoxConfigFactory { + + @Override + public FurnitureHitBoxConfig create(Map arguments) { + Vector3f position = ResourceConfigUtils.getAsVector3f(arguments.getOrDefault("position", 0), "position"); + boolean canUseItemOn = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("can-use-item-on", true), "can-use-item-on"); + boolean blocksBuilding = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("blocks-building", true), "blocks-building"); + boolean canBeHitByProjectile = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("can-be-hit-by-projectile", true), "can-be-hit-by-projectile"); + double scale = ResourceConfigUtils.getAsDouble(arguments.getOrDefault("scale", 1), "scale"); + boolean hardCollision = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("hard-collision", true), "hard-collision"); + return new HappyGhastFurnitureHitboxConfig( + SeatConfig.fromObj(arguments.get("seats")), + position, canUseItemOn, blocksBuilding, canBeHitByProjectile, + scale, hardCollision + ); + } + } +} diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/InteractionFurnitureHitbox.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/InteractionFurnitureHitbox.java index 836434808..44380525c 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/InteractionFurnitureHitbox.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/InteractionFurnitureHitbox.java @@ -1,8 +1,6 @@ package net.momirealms.craftengine.bukkit.entity.furniture.hitbox; import it.unimi.dsi.fastutil.ints.IntArrayList; -import net.momirealms.craftengine.bukkit.entity.data.BaseEntityData; -import net.momirealms.craftengine.bukkit.entity.data.InteractionEntityData; import net.momirealms.craftengine.bukkit.nms.FastNMS; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.MEntityTypes; @@ -14,7 +12,6 @@ import net.momirealms.craftengine.core.world.Vec3d; import net.momirealms.craftengine.core.world.WorldPosition; import net.momirealms.craftengine.core.world.collision.AABB; -import java.util.ArrayList; import java.util.List; import java.util.UUID; @@ -30,22 +27,15 @@ public class InteractionFurnitureHitbox extends AbstractFurnitureHitBox { this.config = config; WorldPosition position = furniture.position(); Vec3d pos = Furniture.getRelativePosition(position, config.position()); - AABB aabb = AABB.fromInteraction(pos, config.size.x, config.size.y); + AABB aabb = AABB.fromInteraction(pos, config.size().x, config.size().y); this.collider = createCollider(furniture.world(), pos, aabb, false, config.blocksBuilding(), config.canBeHitByProjectile()); int interactionId = CoreReflections.instance$Entity$ENTITY_COUNTER.incrementAndGet(); - List values = new ArrayList<>(4); - InteractionEntityData.Height.addEntityDataIfNotDefaultValue(config.size.y, values); - InteractionEntityData.Width.addEntityDataIfNotDefaultValue(config.size.x, values); - InteractionEntityData.Responsive.addEntityDataIfNotDefaultValue(config.responsive, values); - if (config.invisible) { - BaseEntityData.SharedFlags.addEntityDataIfNotDefaultValue((byte) 0x20, values); - } this.spawnPacket = FastNMS.INSTANCE.constructor$ClientboundBundlePacket(List.of( FastNMS.INSTANCE.constructor$ClientboundAddEntityPacket( interactionId, UUID.randomUUID(), position.x, position.y, position.z, 0, position.yRot, MEntityTypes.INTERACTION, 0, CoreReflections.instance$Vec3$Zero, 0 ), - FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(interactionId, values) + FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(interactionId, config.cachedValues()) )); this.part = new FurnitureHitboxPart(interactionId, aabb, pos); this.despawnPacket = FastNMS.INSTANCE.constructor$ClientboundRemoveEntitiesPacket(new IntArrayList() {{ add(interactionId); }}); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/InteractionFurnitureHitboxConfig.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/InteractionFurnitureHitboxConfig.java index 7711218c2..a3e853d17 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/InteractionFurnitureHitboxConfig.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/InteractionFurnitureHitboxConfig.java @@ -1,5 +1,7 @@ package net.momirealms.craftengine.bukkit.entity.furniture.hitbox; +import net.momirealms.craftengine.bukkit.entity.data.BaseEntityData; +import net.momirealms.craftengine.bukkit.entity.data.InteractionEntityData; import net.momirealms.craftengine.core.entity.furniture.Furniture; import net.momirealms.craftengine.core.entity.furniture.hitbox.AbstractFurnitureHitBoxConfig; import net.momirealms.craftengine.core.entity.furniture.hitbox.FurnitureHitBoxConfigFactory; @@ -10,16 +12,19 @@ import net.momirealms.craftengine.core.world.WorldPosition; import net.momirealms.craftengine.core.world.collision.AABB; import org.joml.Vector3f; +import java.util.ArrayList; +import java.util.List; import java.util.Map; import java.util.function.Consumer; public class InteractionFurnitureHitboxConfig extends AbstractFurnitureHitBoxConfig { public static final Factory FACTORY = new Factory(); - public static final InteractionFurnitureHitboxConfig DEFAULT = new InteractionFurnitureHitboxConfig(new SeatConfig[0], new Vector3f(), false, false, false, false, new Vector3f(1,1,1), true); + public static final InteractionFurnitureHitboxConfig DEFAULT = new InteractionFurnitureHitboxConfig(); - public final Vector3f size; - public final boolean responsive; - public final boolean invisible; + private final Vector3f size; + private final boolean responsive; + private final boolean invisible; + private final List cachedValues = new ArrayList<>(4); public InteractionFurnitureHitboxConfig(SeatConfig[] seats, Vector3f position, @@ -33,6 +38,19 @@ public class InteractionFurnitureHitboxConfig extends AbstractFurnitureHitBoxCon this.size = size; this.responsive = responsive; this.invisible = invisible; + InteractionEntityData.Height.addEntityDataIfNotDefaultValue(size.y, cachedValues); + InteractionEntityData.Width.addEntityDataIfNotDefaultValue(size.x, cachedValues); + InteractionEntityData.Responsive.addEntityDataIfNotDefaultValue(responsive, cachedValues); + if (invisible) { + BaseEntityData.SharedFlags.addEntityDataIfNotDefaultValue((byte) 0x20, cachedValues); + } + } + + private InteractionFurnitureHitboxConfig() { + super(new SeatConfig[0], new Vector3f(), false, false, false); + this.size = new Vector3f(1); + this.responsive = true; + this.invisible = false; } public Vector3f size() { @@ -47,6 +65,10 @@ public class InteractionFurnitureHitboxConfig extends AbstractFurnitureHitBoxCon return invisible; } + public List cachedValues() { + return cachedValues; + } + @Override public void prepareForPlacement(WorldPosition targetPos, Consumer aabbConsumer) { if (this.blocksBuilding) { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerFurnitureHitbox.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerFurnitureHitbox.java index 69842ded6..9a6c39d43 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerFurnitureHitbox.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerFurnitureHitbox.java @@ -58,7 +58,7 @@ public class ShulkerFurnitureHitbox extends AbstractFurnitureHitBox { entityIds[1], UUID.randomUUID(), x + offset.x, processedY, z - offset.z, 0, yaw, MEntityTypes.SHULKER, 0, CoreReflections.instance$Vec3$Zero, 0 )); - packets.add(FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(entityIds[1], List.copyOf(config.cachedShulkerValues))); + packets.add(FastNMS.INSTANCE.constructor$ClientboundSetEntityDataPacket(entityIds[1], List.copyOf(config.cachedShulkerValues()))); packets.add(FastNMS.INSTANCE.constructor$ClientboundSetPassengersPacket(entityIds[0], entityIds[1])); // fix some special occasions @@ -73,16 +73,16 @@ public class ShulkerFurnitureHitbox extends AbstractFurnitureHitBox { CraftEngine.instance().logger().warn("Failed to construct ClientboundMoveEntityPacket$Pos", e); } } - if (VersionHelper.isOrAbove1_20_5() && config.scale != 1) { + if (VersionHelper.isOrAbove1_20_5() && config.scale() != 1) { try { Object attributeInstance = CoreReflections.constructor$AttributeInstance.newInstance(MAttributeHolders.SCALE, (Consumer) (o) -> {}); - CoreReflections.method$AttributeInstance$setBaseValue.invoke(attributeInstance, config.scale); + CoreReflections.method$AttributeInstance$setBaseValue.invoke(attributeInstance, config.scale()); packets.add(NetworkReflections.constructor$ClientboundUpdateAttributesPacket0.newInstance(entityIds[1], Collections.singletonList(attributeInstance))); } catch (ReflectiveOperationException e) { CraftEngine.instance().logger().warn("Failed to apply scale attribute", e); } } - config.spawner.accept(entityIds, position.world(), x, y, z, yaw, offset, packets::add, colliders::add, parts::add); + config.spawner().accept(entityIds, position.world(), x, y, z, yaw, offset, packets::add, colliders::add, parts::add); this.parts = parts; this.colliders = colliders; this.spawnPacket = FastNMS.INSTANCE.constructor$ClientboundBundlePacket(packets); @@ -115,8 +115,8 @@ public class ShulkerFurnitureHitbox extends AbstractFurnitureHitBox { } public int[] acquireEntityIds(Supplier entityIdSupplier) { - if (config.interactionEntity) { - if (config.direction.stepY() != 0) { + if (config.interactionEntity()) { + if (config.direction().stepY() != 0) { // 展示实体 // 潜影贝 // 交互实体 return new int[] {entityIdSupplier.get(), entityIdSupplier.get(), entityIdSupplier.get()}; } else { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerFurnitureHitboxConfig.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerFurnitureHitboxConfig.java index 4a86ba359..004b73d26 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerFurnitureHitboxConfig.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/furniture/hitbox/ShulkerFurnitureHitboxConfig.java @@ -32,14 +32,14 @@ import java.util.function.Consumer; public class ShulkerFurnitureHitboxConfig extends AbstractFurnitureHitBoxConfig { public static final Factory FACTORY = new Factory(); - public final float scale; - public final byte peek; - public final boolean interactive; - public final boolean interactionEntity; - public final Direction direction; - public final DirectionalShulkerSpawner spawner; - public final List cachedShulkerValues = new ArrayList<>(); - public final AABBCreator aabbCreator; + private final float scale; + private final byte peek; + private final boolean interactive; + private final boolean interactionEntity; + private final Direction direction; + private final DirectionalShulkerSpawner spawner; + private final List cachedShulkerValues = new ArrayList<>(6); + private final AABBCreator aabbCreator; public ShulkerFurnitureHitboxConfig(SeatConfig[] seats, Vector3f position, @@ -178,6 +178,14 @@ public class ShulkerFurnitureHitboxConfig extends AbstractFurnitureHitBoxConfig< return direction; } + public DirectionalShulkerSpawner spawner() { + return spawner; + } + + public List cachedShulkerValues() { + return cachedShulkerValues; + } + @Override public ShulkerFurnitureHitbox create(Furniture furniture) { return new ShulkerFurnitureHitbox(furniture, this); @@ -297,8 +305,8 @@ public class ShulkerFurnitureHitboxConfig extends AbstractFurnitureHitBoxConfig< @Override public ShulkerFurnitureHitboxConfig create(Map arguments) { - Vector3f position = ResourceConfigUtils.getAsVector3f(arguments.getOrDefault("position", "0"), "position"); - float scale = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("scale", "1"), "scale"); + Vector3f position = ResourceConfigUtils.getAsVector3f(arguments.getOrDefault("position", 0), "position"); + float scale = ResourceConfigUtils.getAsFloat(arguments.getOrDefault("scale", 1), "scale"); byte peek = (byte) ResourceConfigUtils.getAsInt(arguments.getOrDefault("peek", 0), "peek"); Direction directionEnum = ResourceConfigUtils.getAsEnum(arguments.get("direction"), Direction.class, Direction.UP); boolean interactive = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("interactive", true), "interactive"); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitPlatform.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitPlatform.java index 352ffd619..9a6729b0a 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitPlatform.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/BukkitPlatform.java @@ -39,7 +39,7 @@ public class BukkitPlatform implements Platform { Map map = (Map) MRegistryOps.NBT.convertTo(MRegistryOps.JAVA, tag); return map.get("root"); } catch (CommandSyntaxException e) { - throw new LocalizedResourceConfigException("warning.config.id.snbt.invalid_syntax", e, nbt); + throw new LocalizedResourceConfigException("warning.config.type.snbt.invalid_syntax", e, nbt); } } @@ -55,7 +55,7 @@ public class BukkitPlatform implements Platform { CompoundTag map = (CompoundTag) MRegistryOps.NBT.convertTo(MRegistryOps.SPARROW_NBT, tag); return map.get("root"); } catch (CommandSyntaxException e) { - throw new LocalizedResourceConfigException("warning.config.id.snbt.invalid_syntax", e, nbt); + throw new LocalizedResourceConfigException("warning.config.type.snbt.invalid_syntax", e, nbt); } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugItemDataCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugItemDataCommand.java index 1b4b1a942..861c01eb5 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugItemDataCommand.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugItemDataCommand.java @@ -115,7 +115,7 @@ public class DebugItemDataCommand extends BukkitCommandFeature { } else if (nbt instanceof short[]) { value = Arrays.toString((short[]) nbt); } else { - value = "Unknown array id"; + value = "Unknown array type"; } } else { value = nbt.toString(); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugSpawnFurnitureCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugSpawnFurnitureCommand.java index c07060832..7b32aeba1 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugSpawnFurnitureCommand.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugSpawnFurnitureCommand.java @@ -24,6 +24,7 @@ public class DebugSpawnFurnitureCommand extends BukkitCommandFeature assembleCommand(org.incendo.cloud.CommandManager manager, Command.Builder builder) { return builder @@ -34,7 +35,7 @@ public class DebugSpawnFurnitureCommand extends BukkitCommandFeature { // fixme 指令 @@ -47,7 +48,7 @@ public class DebugSpawnFurnitureCommand extends BukkitCommandFeature codec = (NetworkCodec) BuiltInRegistries.MOD_PACKET.getValue(data.type()); if (codec == null) { - CraftEngine.instance().logger().warn("Unknown data id class: " + data.getClass().getName()); + CraftEngine.instance().logger().warn("Unknown data type class: " + data.getClass().getName()); return; } FriendlyByteBuf buf = new FriendlyByteBuf(Unpooled.buffer()); @@ -65,7 +65,7 @@ public class PayloadHelper { @SuppressWarnings("unchecked") NetworkCodec codec = (NetworkCodec) BuiltInRegistries.MOD_PACKET.getValue(type); if (codec == null) { - Debugger.COMMON.debug(() -> "Unknown data id received: " + type); + Debugger.COMMON.debug(() -> "Unknown data type received: " + type); return; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java b/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java index b32258402..6d794219f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/BlockBehavior.java @@ -78,7 +78,7 @@ public abstract class BlockBehavior { return (boolean) superMethod.call(); } - // 1.20-1.20.4 BlockState state, BlockGetter world, BlockPos pos, PathComputationType id + // 1.20-1.20.4 BlockState state, BlockGetter world, BlockPos pos, PathComputationType type // 1.20.5+ BlockState state, PathComputationType pathComputationType public boolean isPathFindable(Object thisBlock, Object[] args, Callable superMethod) throws Exception { return (boolean) superMethod.call(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/behavior/IsPathFindableBlockBehavior.java b/core/src/main/java/net/momirealms/craftengine/core/block/behavior/IsPathFindableBlockBehavior.java index dca06a1bc..7fe7d8e06 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/behavior/IsPathFindableBlockBehavior.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/behavior/IsPathFindableBlockBehavior.java @@ -4,7 +4,7 @@ import java.util.concurrent.Callable; public interface IsPathFindableBlockBehavior { - // 1.20-1.20.4 BlockState state, BlockGetter world, BlockPos pos, PathComputationType id + // 1.20-1.20.4 BlockState state, BlockGetter world, BlockPos pos, PathComputationType type // 1.20.5+ BlockState state, PathComputationType pathComputationType boolean isPathFindable(Object thisBlock, Object[] args, Callable superMethod) throws Exception; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/block/entity/render/element/BlockEntityElementConfigs.java b/core/src/main/java/net/momirealms/craftengine/core/block/entity/render/element/BlockEntityElementConfigs.java index 1dabfa3be..c355c4eb2 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/block/entity/render/element/BlockEntityElementConfigs.java +++ b/core/src/main/java/net/momirealms/craftengine/core/block/entity/render/element/BlockEntityElementConfigs.java @@ -15,14 +15,15 @@ public abstract class BlockEntityElementConfigs { public static final Key TEXT_DISPLAY = Key.of("craftengine:text_display"); public static final Key ITEM = Key.of("craftengine:item"); - public static void register(Key key, BlockEntityElementConfigFactory type) { - ((WritableRegistry) BuiltInRegistries.BLOCK_ENTITY_ELEMENT_TYPE) + public static void register(Key key, BlockEntityElementConfigFactory type) { + ((WritableRegistry>) BuiltInRegistries.BLOCK_ENTITY_ELEMENT_TYPE) .register(ResourceKey.create(Registries.BLOCK_ENTITY_ELEMENT_TYPE.location(), key), type); } public static BlockEntityElementConfig fromMap(Map arguments) { Key type = Optional.ofNullable(arguments.get("type")).map(String::valueOf).map(it -> Key.withDefaultNamespace(it, "craftengine")).orElse(ITEM_DISPLAY); - BlockEntityElementConfigFactory factory = BuiltInRegistries.BLOCK_ENTITY_ELEMENT_TYPE.getValue(type); + @SuppressWarnings("unchecked") + BlockEntityElementConfigFactory factory = (BlockEntityElementConfigFactory) BuiltInRegistries.BLOCK_ENTITY_ELEMENT_TYPE.getValue(type); if (factory == null) { throw new LocalizedResourceConfigException("warning.config.block.state.entity_renderer.invalid_type", type.toString()); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureConfig.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureConfig.java index b9f34c864..cd5634893 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureConfig.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureConfig.java @@ -48,6 +48,7 @@ public interface FurnitureConfig { if (optionalVariant.isPresent()) { variantName = optionalVariant.get(); } else { + @SuppressWarnings("deprecation") Optional optionalAnchorType = accessor.anchorType(); if (optionalAnchorType.isPresent()) { variantName = optionalAnchorType.get().name().toLowerCase(Locale.ROOT); diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureDataAccessor.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureDataAccessor.java index e1bb1bd0e..c6bc0793a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureDataAccessor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/FurnitureDataAccessor.java @@ -106,6 +106,7 @@ public class FurnitureDataAccessor { this.data.putString(VARIANT, variant); } + @SuppressWarnings("deprecation") @ApiStatus.Obsolete public Optional anchorType() { if (this.data.containsKey(ANCHOR_TYPE)) return Optional.of(AnchorType.byId(this.data.getInt(ANCHOR_TYPE))); @@ -113,7 +114,7 @@ public class FurnitureDataAccessor { } @ApiStatus.Obsolete - public FurnitureDataAccessor anchorType(AnchorType type) { + public FurnitureDataAccessor anchorType(@SuppressWarnings("deprecation") AnchorType type) { this.data.putInt(ANCHOR_TYPE, type.getId()); return this; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/element/FurnitureElementConfigs.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/element/FurnitureElementConfigs.java index 8e375a743..7247cdf0e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/element/FurnitureElementConfigs.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/element/FurnitureElementConfigs.java @@ -15,14 +15,15 @@ public class FurnitureElementConfigs { public static final Key TEXT_DISPLAY = Key.of("craftengine:text_display"); public static final Key ITEM = Key.of("craftengine:item"); - public static void register(Key key, FurnitureElementConfigFactory type) { - ((WritableRegistry) BuiltInRegistries.FURNITURE_ELEMENT_TYPE) + public static void register(Key key, FurnitureElementConfigFactory type) { + ((WritableRegistry>) BuiltInRegistries.FURNITURE_ELEMENT_TYPE) .register(ResourceKey.create(Registries.FURNITURE_ELEMENT_TYPE.location(), key), type); } public static FurnitureElementConfig fromMap(Map arguments) { Key type = Optional.ofNullable(arguments.get("type")).map(String::valueOf).map(it -> Key.withDefaultNamespace(it, "craftengine")).orElse(ITEM_DISPLAY); - FurnitureElementConfigFactory factory = BuiltInRegistries.FURNITURE_ELEMENT_TYPE.getValue(type); + @SuppressWarnings("unchecked") + FurnitureElementConfigFactory factory = (FurnitureElementConfigFactory) BuiltInRegistries.FURNITURE_ELEMENT_TYPE.getValue(type); if (factory == null) { throw new LocalizedResourceConfigException("warning.config.furniture.element.invalid_type", type.toString()); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/hitbox/FurnitureHitBoxTypes.java b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/hitbox/FurnitureHitBoxTypes.java index d4f002a9c..61fc5b871 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/hitbox/FurnitureHitBoxTypes.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/furniture/hitbox/FurnitureHitBoxTypes.java @@ -17,14 +17,15 @@ public class FurnitureHitBoxTypes { public static final Key VIRTUAL = Key.of("minecraft:virtual"); public static final Key CUSTOM = Key.of("minecraft:custom"); - public static void register(Key key, FurnitureHitBoxConfigFactory factory) { - ((WritableRegistry) BuiltInRegistries.FURNITURE_HITBOX_TYPE) + public static void register(Key key, FurnitureHitBoxConfigFactory factory) { + ((WritableRegistry>) BuiltInRegistries.FURNITURE_HITBOX_TYPE) .register(ResourceKey.create(Registries.FURNITURE_HITBOX_TYPE.location(), key), factory); } public static FurnitureHitBoxConfig fromMap(Map arguments) { Key type = Optional.ofNullable(arguments.get("type")).map(String::valueOf).map(Key::of).orElse(FurnitureHitBoxTypes.INTERACTION); - FurnitureHitBoxConfigFactory factory = BuiltInRegistries.FURNITURE_HITBOX_TYPE.getValue(type); + @SuppressWarnings("unchecked") + FurnitureHitBoxConfigFactory factory = (FurnitureHitBoxConfigFactory) BuiltInRegistries.FURNITURE_HITBOX_TYPE.getValue(type); if (factory == null) { throw new LocalizedResourceConfigException("warning.config.furniture.hitbox.invalid_type", type.toString()); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/Item.java b/core/src/main/java/net/momirealms/craftengine/core/item/Item.java index f48a6bf39..5b7c2f563 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/Item.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/Item.java @@ -28,7 +28,7 @@ import java.util.Optional; * This interface provides methods for managing item properties such as custom model data, * damage, display name, lore, enchantments, and tags. * - * @param the id of the item implementation + * @param the type of the item implementation */ public interface Item { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java index 0c125097d..64a67c8dd 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java @@ -446,8 +446,8 @@ public class ItemSettings { Key customTridentItemId = Key.of(ResourceConfigUtils.requireNonEmptyStringOrThrow(args.get("item"), "warning.config.item.settings.projectile.missing_item")); ItemDisplayContext displayType = ItemDisplayContext.valueOf(args.getOrDefault("display-transform", "NONE").toString().toUpperCase(Locale.ENGLISH)); Billboard billboard = Billboard.valueOf(args.getOrDefault("billboard", "FIXED").toString().toUpperCase(Locale.ENGLISH)); - Vector3f translation = ResourceConfigUtils.getAsVector3f(args.getOrDefault("translation", "0"), "translation"); - Vector3f scale = ResourceConfigUtils.getAsVector3f(args.getOrDefault("scale", "1"), "scale"); + Vector3f translation = ResourceConfigUtils.getAsVector3f(args.getOrDefault("translation", 0), "translation"); + Vector3f scale = ResourceConfigUtils.getAsVector3f(args.getOrDefault("scale", 1), "scale"); Quaternionf rotation = ResourceConfigUtils.getAsQuaternionf(ResourceConfigUtils.get(args, "rotation"), "rotation"); double range = ResourceConfigUtils.getAsDouble(args.getOrDefault("range", 1), "range"); return settings -> settings.projectileMeta(new ProjectileMeta(customTridentItemId, displayType, billboard, scale, translation, rotation, range)); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java index 206655f05..190ee8004 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java @@ -190,7 +190,7 @@ public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecip @Override public CustomSmithingTransformRecipe readMap(Key id, Map arguments) { List base = MiscUtils.getAsStringList(arguments.get("base")); - List template = MiscUtils.getAsStringList(arguments.get("template-id")); + List template = MiscUtils.getAsStringList(arguments.get("template-type")); List addition = MiscUtils.getAsStringList(arguments.get("addition")); boolean mergeComponents = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("merge-components", true), "merge-components"); boolean mergeEnchantments = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("merge-enchantments", false), "merge-enchantments"); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTrimRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTrimRecipe.java index c3a749435..7119a5f48 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTrimRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTrimRecipe.java @@ -141,7 +141,7 @@ public class CustomSmithingTrimRecipe extends AbstractRecipe @Override public CustomSmithingTrimRecipe readMap(Key id, Map arguments) { List base = MiscUtils.getAsStringList(arguments.get("base")); - List template = MiscUtils.getAsStringList(arguments.get("template-id")); + List template = MiscUtils.getAsStringList(arguments.get("template-type")); List addition = MiscUtils.getAsStringList(arguments.get("addition")); Key pattern = VersionHelper.isOrAbove1_21_5() ? Key.of(ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("pattern"), "warning.config.recipe.smithing_trim.missing_pattern")) : null; return new CustomSmithingTrimRecipe<>(id, diff --git a/core/src/main/java/net/momirealms/craftengine/core/loot/function/ApplyBonusCountFunction.java b/core/src/main/java/net/momirealms/craftengine/core/loot/function/ApplyBonusCountFunction.java index b5d118862..c0475500d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/loot/function/ApplyBonusCountFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/loot/function/ApplyBonusCountFunction.java @@ -87,12 +87,12 @@ public class ApplyBonusCountFunction extends AbstractLootConditionalFunction< public static Formula fromMap(Map map) { String type = (String) map.get("type"); if (type == null) { - throw new NullPointerException("number id cannot be null"); + throw new NullPointerException("number type cannot be null"); } Key key = Key.withDefaultNamespace(type, Key.DEFAULT_NAMESPACE); FormulaFactory factory = BuiltInRegistries.FORMULA_FACTORY.getValue(key); if (factory == null) { - throw new IllegalArgumentException("Unknown formula id: " + type); + throw new IllegalArgumentException("Unknown formula type: " + type); } return factory.create(map); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/ItemModels.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/ItemModels.java index c79c52a8a..e6d151250 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/ItemModels.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/ItemModels.java @@ -75,7 +75,7 @@ public class ItemModels { Key key = Key.withDefaultNamespace(type, "minecraft"); ItemModelReader reader = BuiltInRegistries.ITEM_MODEL_READER.getValue(key); if (reader == null) { - throw new IllegalArgumentException("Invalid item model id: " + key); + throw new IllegalArgumentException("Invalid item model type: " + key); } return reader.read(json); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/condition/ConditionProperties.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/condition/ConditionProperties.java index ce19f4e75..f2d5022fa 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/condition/ConditionProperties.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/condition/ConditionProperties.java @@ -80,7 +80,7 @@ public class ConditionProperties { Key key = Key.withDefaultNamespace(type, "minecraft"); ConditionPropertyReader reader = BuiltInRegistries.CONDITION_PROPERTY_READER.getValue(key); if (reader == null) { - throw new IllegalArgumentException("Invalid condition property id: " + key); + throw new IllegalArgumentException("Invalid condition property type: " + key); } return reader.read(json); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/rangedisptach/RangeDispatchProperties.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/rangedisptach/RangeDispatchProperties.java index 0d98ca88b..a8f09bcc0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/rangedisptach/RangeDispatchProperties.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/rangedisptach/RangeDispatchProperties.java @@ -71,7 +71,7 @@ public class RangeDispatchProperties { Key key = Key.withDefaultNamespace(type, "minecraft"); RangeDispatchPropertyReader reader = BuiltInRegistries.RANGE_DISPATCH_PROPERTY_READER.getValue(key); if (reader == null) { - throw new IllegalArgumentException("Invalid range dispatch property id: " + key); + throw new IllegalArgumentException("Invalid range dispatch property type: " + key); } return reader.read(json); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/SelectProperties.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/SelectProperties.java index 464c79fc3..e6f5b46e0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/SelectProperties.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/select/SelectProperties.java @@ -71,7 +71,7 @@ public class SelectProperties { Key key = Key.withDefaultNamespace(type, "minecraft"); SelectPropertyReader reader = BuiltInRegistries.SELECT_PROPERTY_READER.getValue(key); if (reader == null) { - throw new IllegalArgumentException("Invalid select property id: " + key); + throw new IllegalArgumentException("Invalid select property type: " + key); } return reader.read(json); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SignSpecialModel.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SignSpecialModel.java index cdfffd3bb..b6a83032c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SignSpecialModel.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SignSpecialModel.java @@ -45,7 +45,7 @@ public class SignSpecialModel implements SpecialModel { @Override public SpecialModel create(Map arguments) { Key type = Key.of(arguments.get("type").toString()); - String woodType = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("wood-id"), "warning.config.item.model.special.sign.missing_wood_type"); + String woodType = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("wood-type"), "warning.config.item.model.special.sign.missing_wood_type"); String texture = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("texture"), "warning.config.item.model.special.sign.missing_texture"); return new SignSpecialModel(type, woodType, texture); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SpecialModels.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SpecialModels.java index 8b222da2b..c27c4bba3 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SpecialModels.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/special/SpecialModels.java @@ -80,7 +80,7 @@ public class SpecialModels { Key key = Key.withDefaultNamespace(type, "minecraft"); SpecialModelReader reader = BuiltInRegistries.SPECIAL_MODEL_READER.getValue(key); if (reader == null) { - throw new IllegalArgumentException("Invalid special model id: " + key); + throw new IllegalArgumentException("Invalid special model type: " + key); } return reader.read(json); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/model/tint/Tints.java b/core/src/main/java/net/momirealms/craftengine/core/pack/model/tint/Tints.java index 8148873b5..d44d3102d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/model/tint/Tints.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/model/tint/Tints.java @@ -65,7 +65,7 @@ public class Tints { Key key = Key.withDefaultNamespace(type, "minecraft"); TintReader reader = BuiltInRegistries.TINT_READER.getValue(key); if (reader == null) { - throw new IllegalArgumentException("Invalid tint id: " + type); + throw new IllegalArgumentException("Invalid tint type: " + type); } return reader.read(json); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/obfuscation/ObfA.java b/core/src/main/java/net/momirealms/craftengine/core/pack/obfuscation/ObfA.java index 7833ea8fc..9d545f67d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/obfuscation/ObfA.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/obfuscation/ObfA.java @@ -36,7 +36,7 @@ public enum ObfA { return type; } } - throw new IllegalArgumentException("Unknown resource id: " + xclf); + throw new IllegalArgumentException("Unknown resource type: " + xclf); } public static final byte[] VALUES = new byte[] { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/command/sender/AbstractSender.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/command/sender/AbstractSender.java index 96a87ede0..ff1e71fa1 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/command/sender/AbstractSender.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/command/sender/AbstractSender.java @@ -9,7 +9,7 @@ import java.util.UUID; /** * Simple implementation of {@link Sender} using a {@link SenderFactory} * - * @param the command sender id + * @param the command sender type */ public final class AbstractSender implements Sender { private final Plugin plugin; diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java index 2ec08dbdf..df09a8b08 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/Config.java @@ -448,10 +448,10 @@ public class Config { // furniture furniture$hide_base_entity = config.getBoolean("furniture.hide-base-entity", true); - furniture$collision_entity_type = ColliderType.valueOf(config.getString("furniture.collision-entity-id", "interaction").toUpperCase(Locale.ENGLISH)); + furniture$collision_entity_type = ColliderType.valueOf(config.getString("furniture.collision-entity-type", "interaction").toUpperCase(Locale.ENGLISH)); // equipment - equipment$sacrificed_vanilla_armor$type = config.getString("equipment.sacrificed-vanilla-armor.id", "chainmail").toLowerCase(Locale.ENGLISH); + equipment$sacrificed_vanilla_armor$type = config.getString("equipment.sacrificed-vanilla-armor.type", "chainmail").toLowerCase(Locale.ENGLISH); if (!AbstractPackManager.ALLOWED_VANILLA_EQUIPMENT.contains(equipment$sacrificed_vanilla_armor$type)) { TranslationManager.instance().log("warning.config.equipment.invalid_sacrificed_armor", equipment$sacrificed_vanilla_armor$type); equipment$sacrificed_vanilla_armor$type = "chainmail"; diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/StringKeyConstructor.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/StringKeyConstructor.java index 4c3ea46fc..10f7f8bea 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/StringKeyConstructor.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/StringKeyConstructor.java @@ -259,7 +259,7 @@ public class StringKeyConstructor extends SafeConstructor { if (value instanceof Number number) { return number.byteValue(); } - throw new RuntimeException("Unexpected id: " + value.getClass().getName()); + throw new RuntimeException("Unexpected type: " + value.getClass().getName()); } } @@ -271,7 +271,7 @@ public class StringKeyConstructor extends SafeConstructor { if (value instanceof Number number) { return number.shortValue(); } - throw new RuntimeException("Unexpected id: " + value.getClass().getName()); + throw new RuntimeException("Unexpected type: " + value.getClass().getName()); } } @@ -283,7 +283,7 @@ public class StringKeyConstructor extends SafeConstructor { if (value instanceof Number number) { return number.longValue(); } - throw new RuntimeException("Unexpected id: " + value.getClass().getName()); + throw new RuntimeException("Unexpected type: " + value.getClass().getName()); } } @@ -295,7 +295,7 @@ public class StringKeyConstructor extends SafeConstructor { if (value instanceof Number number) { return number.floatValue(); } - throw new RuntimeException("Unexpected id: " + value.getClass().getName()); + throw new RuntimeException("Unexpected type: " + value.getClass().getName()); } } @@ -307,7 +307,7 @@ public class StringKeyConstructor extends SafeConstructor { if (value instanceof Number number) { return number.doubleValue(); } - throw new RuntimeException("Unexpected id: " + value.getClass().getName()); + throw new RuntimeException("Unexpected type: " + value.getClass().getName()); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/argument/ExpressionTemplateArgument.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/argument/ExpressionTemplateArgument.java index 790641d5d..cf02eeb46 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/argument/ExpressionTemplateArgument.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/argument/ExpressionTemplateArgument.java @@ -61,7 +61,7 @@ public class ExpressionTemplateArgument implements TemplateArgument { public TemplateArgument create(Map arguments) { return new ExpressionTemplateArgument( arguments.getOrDefault("expression", "").toString(), - ValueType.valueOf(arguments.getOrDefault("value-id", "double").toString().toUpperCase(Locale.ROOT)) + ValueType.valueOf(arguments.getOrDefault("value-type", "double").toString().toUpperCase(Locale.ROOT)) ); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/argument/TemplateArguments.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/argument/TemplateArguments.java index 4c0e9baa7..9b1a8ef91 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/argument/TemplateArguments.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/config/template/argument/TemplateArguments.java @@ -58,7 +58,7 @@ public class TemplateArguments { Key key = Key.withDefaultNamespace(type0, Key.DEFAULT_NAMESPACE); TemplateArgumentFactory factory = BuiltInRegistries.TEMPLATE_ARGUMENT_FACTORY.getValue(key); if (factory == null) { - throw new IllegalArgumentException("Unknown argument id: " + type); + throw new IllegalArgumentException("Unknown argument type: " + type); } return factory.create(map); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageFunction.java index fa33c8b7f..97e197b55 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/DamageFunction.java @@ -43,7 +43,7 @@ public class DamageFunction extends AbstractConditionalFunc @Override public Function create(Map arguments) { PlayerSelector selector = PlayerSelectors.fromObject(arguments.getOrDefault("target", "self"), conditionFactory()); - Key damageType = Key.of(ResourceConfigUtils.getAsStringOrNull(arguments.getOrDefault("damage-id", "generic"))); + Key damageType = Key.of(ResourceConfigUtils.getAsStringOrNull(arguments.getOrDefault("damage-type", "generic"))); NumberProvider amount = NumberProviders.fromObject(arguments.getOrDefault("amount", 1f)); return new DamageFunction<>(selector, damageType, amount, getPredicates(arguments)); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/OpenWindowFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/OpenWindowFunction.java index 1d1b17e4e..bbe2fe3d0 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/OpenWindowFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/OpenWindowFunction.java @@ -65,7 +65,7 @@ public class OpenWindowFunction extends AbstractConditional @Override public Function create(Map arguments) { String title = Optional.ofNullable(arguments.get("title")).map(String::valueOf).orElse(null); - String rawType = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("gui-id"), "warning.config.function.open_window.missing_gui_type"); + String rawType = ResourceConfigUtils.requireNonEmptyStringOrThrow(arguments.get("gui-type"), "warning.config.function.open_window.missing_gui_type"); try { GuiType type = GuiType.valueOf(rawType.toUpperCase(Locale.ENGLISH)); return new OpenWindowFunction<>(getPredicates(arguments), PlayerSelectors.fromObject(arguments.get("target"), conditionFactory()), type, title); 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 20dee5084..61eec5c6c 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 @@ -15,6 +15,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +@SuppressWarnings("deprecation") public class ReplaceFurnitureFunction extends AbstractConditionalFunction { private final Key newFurnitureId; private final NumberProvider x; @@ -95,7 +96,7 @@ public class ReplaceFurnitureFunction extends AbstractCondi NumberProvider z = NumberProviders.fromObject(arguments.getOrDefault("z", "")); NumberProvider pitch = NumberProviders.fromObject(arguments.getOrDefault("pitch", "")); NumberProvider yaw = NumberProviders.fromObject(arguments.getOrDefault("yaw", "")); - AnchorType anchorType = ResourceConfigUtils.getAsEnum(arguments.get("anchor-id"), AnchorType.class, null); + AnchorType anchorType = ResourceConfigUtils.getAsEnum(arguments.get("anchor-type"), AnchorType.class, null); boolean dropLoot = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("drop-loot", true), "drop-loot"); boolean playSound = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("play-sound", true), "play-sound"); return new ReplaceFurnitureFunction<>(furnitureId, x, y, z, pitch, yaw, anchorType, dropLoot, playSound, getPredicates(arguments)); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SpawnFurnitureFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SpawnFurnitureFunction.java index 1db66e416..d29b7758e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SpawnFurnitureFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/SpawnFurnitureFunction.java @@ -87,7 +87,7 @@ public class SpawnFurnitureFunction extends AbstractConditi NumberProvider z = NumberProviders.fromObject(arguments.getOrDefault("z", "")); NumberProvider pitch = NumberProviders.fromObject(arguments.getOrDefault("pitch", "")); NumberProvider yaw = NumberProviders.fromObject(arguments.getOrDefault("yaw", "")); - String variant = ResourceConfigUtils.getAsStringOrNull(ResourceConfigUtils.get(arguments, "variant", "anchor-id")); + String variant = ResourceConfigUtils.getAsStringOrNull(ResourceConfigUtils.get(arguments, "variant", "anchor-type")); boolean playSound = ResourceConfigUtils.getAsBoolean(arguments.getOrDefault("play-sound", true), "play-sound"); return new SpawnFurnitureFunction<>(furnitureId, x, y, z, pitch, yaw, variant, playSound, getPredicates(arguments)); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ToastFunction.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ToastFunction.java index ec63aa261..853cc7c28 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ToastFunction.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/context/function/ToastFunction.java @@ -63,7 +63,7 @@ public class ToastFunction extends AbstractConditionalFunct @Override public Function create(Map arguments) { AdvancementType advancementType; - String advancementName = arguments.getOrDefault("advancement-id", "goal").toString(); + String advancementName = arguments.getOrDefault("advancement-type", "goal").toString(); try { advancementType = AdvancementType.valueOf(advancementName.toUpperCase(Locale.ROOT)); } catch (IllegalArgumentException e) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/LangData.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/LangData.java index b0f6d19dd..b677d18a5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/LangData.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/locale/LangData.java @@ -53,7 +53,7 @@ public class LangData { temp.put(result, entry.getValue()); } }, - () -> CraftEngine.instance().logger().warn("Unknown lang id: " + key) + () -> CraftEngine.instance().logger().warn("Unknown lang type: " + key) ); } else { temp.put(key, entry.getValue()); diff --git a/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java b/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java index 62bf71645..287ca2752 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java +++ b/core/src/main/java/net/momirealms/craftengine/core/registry/BuiltInRegistries.java @@ -89,10 +89,10 @@ public class BuiltInRegistries { public static final Registry> ITEM_UPDATER_TYPE = createConstantBoundRegistry(Registries.ITEM_UPDATER_TYPE, 16); public static final Registry> MOD_PACKET = createConstantBoundRegistry(Registries.MOD_PACKET, 16); public static final Registry> BLOCK_ENTITY_TYPE = createConstantBoundRegistry(Registries.BLOCK_ENTITY_TYPE, 64); - public static final Registry BLOCK_ENTITY_ELEMENT_TYPE = createConstantBoundRegistry(Registries.BLOCK_ENTITY_ELEMENT_TYPE, 16); + public static final Registry> BLOCK_ENTITY_ELEMENT_TYPE = createConstantBoundRegistry(Registries.BLOCK_ENTITY_ELEMENT_TYPE, 16); public static final Registry CRAFT_REMAINDER_FACTORY = createConstantBoundRegistry(Registries.CRAFT_REMAINDER_FACTORY, 16); - public static final Registry FURNITURE_ELEMENT_TYPE = createConstantBoundRegistry(Registries.FURNITURE_ELEMENT_TYPE, 16); - public static final Registry FURNITURE_HITBOX_TYPE = createConstantBoundRegistry(Registries.FURNITURE_HITBOX_TYPE, 16); + public static final Registry> FURNITURE_ELEMENT_TYPE = createConstantBoundRegistry(Registries.FURNITURE_ELEMENT_TYPE, 16); + public static final Registry> FURNITURE_HITBOX_TYPE = createConstantBoundRegistry(Registries.FURNITURE_HITBOX_TYPE, 16); private static Registry createConstantBoundRegistry(ResourceKey> key, int expectedSize) { return new ConstantBoundRegistry<>(key, expectedSize); diff --git a/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java b/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java index 9b728d316..4afecdcd7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java +++ b/core/src/main/java/net/momirealms/craftengine/core/registry/Registries.java @@ -91,8 +91,8 @@ public class Registries { public static final ResourceKey>> ITEM_UPDATER_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("item_updater_type")); public static final ResourceKey>> MOD_PACKET = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("mod_packet_type")); public static final ResourceKey>> BLOCK_ENTITY_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block_entity_type")); - public static final ResourceKey> BLOCK_ENTITY_ELEMENT_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block_entity_element_type")); + public static final ResourceKey>> BLOCK_ENTITY_ELEMENT_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("block_entity_element_type")); public static final ResourceKey> CRAFT_REMAINDER_FACTORY = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("craft_remainder_factory")); - public static final ResourceKey> FURNITURE_ELEMENT_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("furniture_element_type")); - public static final ResourceKey> FURNITURE_HITBOX_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("furniture_hitbox_type")); + public static final ResourceKey>> FURNITURE_ELEMENT_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("furniture_element_type")); + public static final ResourceKey>> FURNITURE_HITBOX_TYPE = ResourceKey.create(ROOT_REGISTRY, Key.withDefaultNamespace("furniture_hitbox_type")); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/sound/SoundData.java b/core/src/main/java/net/momirealms/craftengine/core/sound/SoundData.java index cc7919e9c..af0356c6e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/sound/SoundData.java +++ b/core/src/main/java/net/momirealms/craftengine/core/sound/SoundData.java @@ -22,7 +22,7 @@ public record SoundData(Key id, SoundValue volume, SoundValue pitch) { SoundValue pitchValue = Optional.ofNullable(SoundValue.of(map.get("pitch"))).orElse(volume); return new SoundData(id, volumeValue, pitchValue); } else { - throw new IllegalArgumentException("Illegal object id for sound data: " + obj.getClass()); + throw new IllegalArgumentException("Illegal object type for sound data: " + obj.getClass()); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/Pair.java b/core/src/main/java/net/momirealms/craftengine/core/util/Pair.java index 7d5e95ce6..de9774f5c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/Pair.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/Pair.java @@ -6,8 +6,8 @@ import java.util.Objects; * A generic class representing a pair of values. * This class provides methods to create and access pairs of values. * - * @param the id of the left value - * @param the id of the right value + * @param the type of the left value + * @param the type of the right value */ public record Pair(L left, R right) { @@ -16,8 +16,8 @@ public record Pair(L left, R right) { * * @param left the left value * @param right the right value - * @param the id of the left value - * @param the id of the right value + * @param the type of the left value + * @param the type of the right value * @return a new {@link Pair} with the specified values */ public static Pair of(final L left, final R right) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/ReflectionUtils.java b/core/src/main/java/net/momirealms/craftengine/core/util/ReflectionUtils.java index 30472678c..703571af4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/ReflectionUtils.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/ReflectionUtils.java @@ -439,7 +439,7 @@ public class ReflectionUtils { public static List getMethods(@NotNull Class clazz, @NotNull Class returnType, @NotNull Class... parameterTypes) { List list = new ArrayList<>(); for (Method method : clazz.getMethods()) { - if (!returnType.isAssignableFrom(method.getReturnType()) // check id + if (!returnType.isAssignableFrom(method.getReturnType()) // check type || method.getParameterCount() != parameterTypes.length // check length ) continue; Class[] types = method.getParameterTypes(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/ResourceConfigUtils.java b/core/src/main/java/net/momirealms/craftengine/core/util/ResourceConfigUtils.java index 08308a8fa..43a35d7dc 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/ResourceConfigUtils.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/ResourceConfigUtils.java @@ -137,13 +137,13 @@ public final class ResourceConfigUtils { try { return Integer.parseInt(s.replace("_", "")); } catch (NumberFormatException e) { - throw new LocalizedResourceConfigException("warning.config.id.int", e, s, option); + throw new LocalizedResourceConfigException("warning.config.type.int", e, s, option); } } case Boolean b -> { return b ? 1 : 0; } - default -> throw new LocalizedResourceConfigException("warning.config.id.int", o.toString(), option); + default -> throw new LocalizedResourceConfigException("warning.config.type.int", o.toString(), option); } } @@ -162,11 +162,11 @@ public final class ResourceConfigUtils { try { return Double.parseDouble(s); } catch (NumberFormatException e) { - throw new LocalizedResourceConfigException("warning.config.id.double", e, s, option); + throw new LocalizedResourceConfigException("warning.config.type.double", e, s, option); } } default -> { - throw new LocalizedResourceConfigException("warning.config.id.double", o.toString(), option); + throw new LocalizedResourceConfigException("warning.config.type.double", o.toString(), option); } } } @@ -183,14 +183,14 @@ public final class ResourceConfigUtils { try { return Float.parseFloat(s); } catch (NumberFormatException e) { - throw new LocalizedResourceConfigException("warning.config.id.float", e, s, option); + throw new LocalizedResourceConfigException("warning.config.type.float", e, s, option); } } case Number number -> { return number.floatValue(); } default -> { - throw new LocalizedResourceConfigException("warning.config.id.float", o.toString(), option); + throw new LocalizedResourceConfigException("warning.config.type.float", o.toString(), option); } } } @@ -206,15 +206,15 @@ public final class ResourceConfigUtils { case Number n -> { if (n.byteValue() == 0) return false; if (n.byteValue() == 1) return true; - throw new LocalizedResourceConfigException("warning.config.id.boolean", String.valueOf(n), option); + throw new LocalizedResourceConfigException("warning.config.type.boolean", String.valueOf(n), option); } case String s -> { if (s.equalsIgnoreCase("true")) return true; if (s.equalsIgnoreCase("false")) return false; - throw new LocalizedResourceConfigException("warning.config.id.boolean", s, option); + throw new LocalizedResourceConfigException("warning.config.type.boolean", s, option); } default -> { - throw new LocalizedResourceConfigException("warning.config.id.boolean", o.toString(), option); + throw new LocalizedResourceConfigException("warning.config.type.boolean", o.toString(), option); } } } @@ -234,11 +234,11 @@ public final class ResourceConfigUtils { try { return Long.parseLong(s.replace("_", "")); } catch (NumberFormatException e) { - throw new LocalizedResourceConfigException("warning.config.id.long", e, s, option); + throw new LocalizedResourceConfigException("warning.config.type.long", e, s, option); } } default -> { - throw new LocalizedResourceConfigException("warning.config.id.long", o.toString(), option); + throw new LocalizedResourceConfigException("warning.config.type.long", o.toString(), option); } } } @@ -248,7 +248,7 @@ public final class ResourceConfigUtils { if (obj instanceof Map map) { return (Map) map; } - throw new LocalizedResourceConfigException("warning.config.id.map", String.valueOf(obj), option); + throw new LocalizedResourceConfigException("warning.config.type.map", String.valueOf(obj), option); } @SuppressWarnings("unchecked") @@ -259,24 +259,30 @@ public final class ResourceConfigUtils { if (obj instanceof Map map) { return (Map) map; } - throw new LocalizedResourceConfigException("warning.config.id.map", String.valueOf(obj), option); + throw new LocalizedResourceConfigException("warning.config.type.map", String.valueOf(obj), option); } public static Vector3f getAsVector3f(Object o, String option) { - if (o == null) return new Vector3f(); - if (o instanceof List list && list.size() == 3) { - return new Vector3f(Float.parseFloat(list.get(0).toString()), Float.parseFloat(list.get(1).toString()), Float.parseFloat(list.get(2).toString())); - } else if (o instanceof Number number) { - return new Vector3f(number.floatValue()); - } else { - String stringFormat = o.toString(); - String[] split = stringFormat.split(","); - if (split.length == 3) { - return new Vector3f(Float.parseFloat(split[0]), Float.parseFloat(split[1]), Float.parseFloat(split[2])); - } else if (split.length == 1) { - return new Vector3f(Float.parseFloat(split[0])); - } else { - throw new LocalizedResourceConfigException("warning.config.id.vector3f", stringFormat, option); + switch (o) { + case null -> { + return new Vector3f(); + } + case List list when list.size() == 3 -> { + return new Vector3f(Float.parseFloat(list.get(0).toString()), Float.parseFloat(list.get(1).toString()), Float.parseFloat(list.get(2).toString())); + } + case Number number -> { + return new Vector3f(number.floatValue()); + } + default -> { + String stringFormat = o.toString(); + String[] split = stringFormat.split(","); + if (split.length == 3) { + return new Vector3f(Float.parseFloat(split[0]), Float.parseFloat(split[1]), Float.parseFloat(split[2])); + } else if (split.length == 1) { + return new Vector3f(Float.parseFloat(split[0])); + } else { + throw new LocalizedResourceConfigException("warning.config.type.vector3f", stringFormat, option); + } } } } @@ -295,7 +301,7 @@ public final class ResourceConfigUtils { } else if (split.length == 1) { return QuaternionUtils.toQuaternionf(0, (float) -Math.toRadians(Float.parseFloat(split[0])), 0); } else { - throw new LocalizedResourceConfigException("warning.config.id.quaternionf", stringFormat, option); + throw new LocalizedResourceConfigException("warning.config.type.quaternionf", stringFormat, option); } } } @@ -313,7 +319,7 @@ public final class ResourceConfigUtils { double d = Double.parseDouble(split[0]); return new Vec3d(d, d, d); } else { - throw new LocalizedResourceConfigException("warning.config.id.vec3d", stringFormat, option); + throw new LocalizedResourceConfigException("warning.config.type.vec3d", stringFormat, option); } } } @@ -347,7 +353,7 @@ public final class ResourceConfigUtils { public static AABB getAsAABB(Object o, String option) { switch (o) { - case null -> throw new LocalizedResourceConfigException("warning.config.id.aabb", "null", option); + case null -> throw new LocalizedResourceConfigException("warning.config.type.aabb", "null", option); case AABB aabb -> { return aabb; } @@ -367,7 +373,7 @@ public final class ResourceConfigUtils { try { args[i] = Double.parseDouble(list.get(i).toString()); } catch (NumberFormatException e) { - throw new LocalizedResourceConfigException("warning.config.id.aabb", o.toString(), option); + throw new LocalizedResourceConfigException("warning.config.type.aabb", o.toString(), option); } } } @@ -378,7 +384,7 @@ public final class ResourceConfigUtils { try { args[i] = Double.parseDouble(split[i]); } catch (NumberFormatException e) { - throw new LocalizedResourceConfigException("warning.config.id.aabb", o.toString(), option); + throw new LocalizedResourceConfigException("warning.config.type.aabb", o.toString(), option); } } } @@ -391,7 +397,7 @@ public final class ResourceConfigUtils { } else if (args.length == 6) { return new AABB(args[0], args[1], args[2], args[3], args[4], args[5]); } else { - throw new LocalizedResourceConfigException("warning.config.id.aabb", o.toString(), option); + throw new LocalizedResourceConfigException("warning.config.type.aabb", o.toString(), option); } } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/SNBTReader.java b/core/src/main/java/net/momirealms/craftengine/core/util/SNBTReader.java index 27fd39740..0be81388d 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/SNBTReader.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/SNBTReader.java @@ -156,7 +156,7 @@ public final class SNBTReader extends DefaultStringReader { // 1.21.6的SNBT原版是支持 {key:[B;1,2b,0xFF]} 这种奇葩写法的, 越界部分会被自动舍弃, 如0xff的byte值为-1. // 如果需要和原版对齐, 那么只需要判断是否是数字就行了. // if (!(element instanceof Number number)) - // throw new IllegalArgumentException("Error element id at pos " + getCursor()); + // throw new IllegalArgumentException("Error element type at pos " + getCursor()); if (!(element instanceof Number number)) throw new IllegalArgumentException("Error parsing number at pos " + getCursor()); diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/Tuple.java b/core/src/main/java/net/momirealms/craftengine/core/util/Tuple.java index d91a2afaf..e4cf6baf5 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/Tuple.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/Tuple.java @@ -6,9 +6,9 @@ import java.util.Objects; * A generic class representing a tuple with three values. * This class provides methods for creating and accessing tuples with three values. * - * @param the id of the left value - * @param the id of the middle value - * @param the id of the right value + * @param the type of the left value + * @param the type of the middle value + * @param the type of the right value */ public record Tuple(L left, M mid, R right) { @@ -18,9 +18,9 @@ public record Tuple(L left, M mid, R right) { * @param left the left value * @param mid the middle value * @param right the right value - * @param the id of the left value - * @param the id of the middle value - * @param the id of the right value + * @param the type of the left value + * @param the type of the middle value + * @param the type of the right value * @return a new {@link Tuple} with the specified values */ public static Tuple of(final L left, final M mid, final R right) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/TypeUtils.java b/core/src/main/java/net/momirealms/craftengine/core/util/TypeUtils.java index 02687838f..8e3b3dc1a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/TypeUtils.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/TypeUtils.java @@ -8,18 +8,18 @@ public class TypeUtils { private TypeUtils() {} /** - * Checks if the provided object is of the specified id. + * Checks if the provided object is of the specified type. * If not, throws an IllegalArgumentException with a detailed message. * * @param object The object to check. - * @param expectedType The expected class id. - * @param The id parameter for expectedType. - * @return The object cast to the expected id if it matches. - * @throws IllegalArgumentException if the object's id does not match the expected id. + * @param expectedType The expected class type. + * @param The type parameter for expectedType. + * @return The object cast to the expected type if it matches. + * @throws IllegalArgumentException if the object's type does not match the expected type. */ public static T checkType(Object object, Class expectedType) { if (!expectedType.isInstance(object)) { - throw new IllegalArgumentException("Expected id: " + expectedType.getName() + + throw new IllegalArgumentException("Expected type: " + expectedType.getName() + ", but got: " + (object == null ? "null" : object.getClass().getName())); } return expectedType.cast(object); @@ -48,7 +48,7 @@ public class TypeUtils { } yield bytes; } - default -> throw new IllegalStateException("Unsupported id: " + type.toLowerCase(Locale.ENGLISH)); + default -> throw new IllegalStateException("Unsupported type: " + type.toLowerCase(Locale.ENGLISH)); }; }