From ca17b29559bdc574e306075dd9004d9bf07f999d Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sun, 7 Dec 2025 00:55:33 +0800 Subject: [PATCH 01/11] =?UTF-8?q?=E4=BF=AE=E5=A4=8Drelease=E5=8F=91?= =?UTF-8?q?=E5=B8=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bukkit/build.gradle.kts | 2 +- core/build.gradle.kts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bukkit/build.gradle.kts b/bukkit/build.gradle.kts index 6dea04b48..f532acde6 100644 --- a/bukkit/build.gradle.kts +++ b/bukkit/build.gradle.kts @@ -170,7 +170,7 @@ publishing { tasks.register("publishRelease") { group = "publishing" description = "Publishes to the release repository" - dependsOn("publishMavenJavaPublicationToReleaseRepository") + dependsOn("publishMavenJavaPublicationToReleasesRepository") } tasks.register("publishSnapshot") { diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 6c138b529..802335f5c 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -175,7 +175,7 @@ publishing { tasks.register("publishRelease") { group = "publishing" description = "Publishes to the release repository" - dependsOn("publishMavenJavaPublicationToReleaseRepository") + dependsOn("publishMavenJavaPublicationToReleasesRepository") } tasks.register("publishSnapshot") { From 6e8515c3a7002295ce94b840ac48d6bfea12dcf5 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sun, 7 Dec 2025 00:58:53 +0800 Subject: [PATCH 02/11] Update config.yml --- common-files/src/main/resources/config.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common-files/src/main/resources/config.yml b/common-files/src/main/resources/config.yml index 26716aa71..6132f428e 100644 --- a/common-files/src/main/resources/config.yml +++ b/common-files/src/main/resources/config.yml @@ -562,7 +562,7 @@ chunk-system: client-optimization: # Requires a restart to fully apply. entity-culling: - enable: false + enable: true # Using server-side ray tracing algorithms to hide block entities/furniture and reduce client-side rendering pressure. ray-tracing: true # Cull entities based on distance From fae874646cd001537c05e6f81c561f68a4205e01 Mon Sep 17 00:00:00 2001 From: jhqwqmc Date: Sun, 7 Dec 2025 07:16:16 +0800 Subject: [PATCH 03/11] =?UTF-8?q?=E8=A1=A5=E5=85=A8=E7=9B=94=E7=94=B2?= =?UTF-8?q?=E6=9E=B6=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/entity/data/ArmorStandData.java | 8 +++++ .../reflection/minecraft/CoreReflections.java | 31 +++++++++++++++++++ 2 files changed, 39 insertions(+) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/ArmorStandData.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/ArmorStandData.java index b57c49046..6ebb93b9f 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/ArmorStandData.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/entity/data/ArmorStandData.java @@ -1,8 +1,16 @@ package net.momirealms.craftengine.bukkit.entity.data; +import net.momirealms.craftengine.bukkit.plugin.reflection.minecraft.CoreReflections; + public class ArmorStandData extends LivingEntityData { public static final ArmorStandData ArmorStandFlags = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$BYTE, (byte) 0); // rotations + public static final ArmorStandData HeadPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_HEAD_POSE); + public static final ArmorStandData BodyPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_BODY_POSE); + public static final ArmorStandData LeftArmPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_LEFT_ARM_POSE); + public static final ArmorStandData RightArmPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_RIGHT_ARM_POSE); + public static final ArmorStandData LeftLegPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_LEFT_LEG_POSE); + public static final ArmorStandData RightLegPose = new ArmorStandData<>(ArmorStandData.class, EntityDataValue.Serializers$ROTATIONS, CoreReflections.instance$ArmorStand$DEFAULT_RIGHT_LEG_POSE); public ArmorStandData(Class clazz, Object serializer, T defaultValue) { super(clazz, serializer, defaultValue); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java index c1f11650e..06ea0d4a1 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/reflection/minecraft/CoreReflections.java @@ -4644,4 +4644,35 @@ public final class CoreReflections { "world.scores.PlayerTeam" ) ); + + public static final Class clazz$Rotations = requireNonNull( + BukkitReflectionUtils.findReobfOrMojmapClass( + "core.Vector3f", + "core.Rotations" + ) + ); + + public static final Constructor constructor$Rotations = requireNonNull( + ReflectionUtils.getConstructor(clazz$Rotations, float.class, float.class, float.class) + ); + + public static final Object instance$ArmorStand$DEFAULT_HEAD_POSE; + public static final Object instance$ArmorStand$DEFAULT_BODY_POSE; + public static final Object instance$ArmorStand$DEFAULT_LEFT_ARM_POSE; + public static final Object instance$ArmorStand$DEFAULT_RIGHT_ARM_POSE; + public static final Object instance$ArmorStand$DEFAULT_LEFT_LEG_POSE; + public static final Object instance$ArmorStand$DEFAULT_RIGHT_LEG_POSE; + + static { + try { + instance$ArmorStand$DEFAULT_HEAD_POSE = constructor$Rotations.newInstance(0.0F, 0.0F, 0.0F); + instance$ArmorStand$DEFAULT_BODY_POSE = constructor$Rotations.newInstance(0.0F, 0.0F, 0.0F); + instance$ArmorStand$DEFAULT_LEFT_ARM_POSE = constructor$Rotations.newInstance(-10.0F, 0.0F, -10.0F); + instance$ArmorStand$DEFAULT_RIGHT_ARM_POSE = constructor$Rotations.newInstance(-15.0F, 0.0F, 10.0F); + instance$ArmorStand$DEFAULT_LEFT_LEG_POSE = constructor$Rotations.newInstance(-1.0F, 0.0F, -1.0F); + instance$ArmorStand$DEFAULT_RIGHT_LEG_POSE = constructor$Rotations.newInstance(1.0F, 0.0F, 1.0F); + } catch (ReflectiveOperationException e) { + throw new ReflectionInitException("Failed to init ArmorStand", e); + } + } } From ef143abcbe2120eade29f4700dd3e486cce1cce0 Mon Sep 17 00:00:00 2001 From: jhqwqmc Date: Sun, 7 Dec 2025 12:12:34 +0800 Subject: [PATCH 04/11] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=BC=80=E5=8F=91?= =?UTF-8?q?=E9=9B=86=E6=88=90=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E5=8F=B0=E8=BE=93=E5=87=BA=E4=B8=AD=E6=96=87=E7=BC=96=E7=A0=81?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bukkit/paper-loader/build.gradle.kts | 3 +++ .../net/momirealms/craftengine/core/util/VersionHelper.java | 1 + 2 files changed, 4 insertions(+) diff --git a/bukkit/paper-loader/build.gradle.kts b/bukkit/paper-loader/build.gradle.kts index aba556f45..41bb27752 100644 --- a/bukkit/paper-loader/build.gradle.kts +++ b/bukkit/paper-loader/build.gradle.kts @@ -217,6 +217,9 @@ fun registerPaperTask( languageVersion = JavaLanguageVersion.of(javaVersion) } systemProperties["com.mojang.eula.agree"] = true + systemProperties["net.momirealms.craftengine.dev"] = true + jvmArgs("-Dsun.stdout.encoding=UTF-8") + jvmArgs("-Dsun.stderr.encoding=UTF-8") jvmArgs("-Ddisable.watchdog=true") jvmArgs("-Xlog:redefine+class*=info") jvmArgs("-XX:+AllowEnhancedClassRedefinition") diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/VersionHelper.java b/core/src/main/java/net/momirealms/craftengine/core/util/VersionHelper.java index 633dcba99..a412035c4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/util/VersionHelper.java +++ b/core/src/main/java/net/momirealms/craftengine/core/util/VersionHelper.java @@ -9,6 +9,7 @@ import java.util.Objects; public class VersionHelper { public static final boolean PREMIUM = true; + public static final boolean IS_RUNNING_IN_DEV = Boolean.getBoolean("net.momirealms.craftengine.dev"); public static final MinecraftVersion MINECRAFT_VERSION; public static final boolean COMPONENT_RELEASE; private static final int version; From b2241fc5f5dc73f56d21d270c8a4cffd7b7b9b4d Mon Sep 17 00:00:00 2001 From: jhqwqmc Date: Sun, 7 Dec 2025 15:54:31 +0800 Subject: [PATCH 05/11] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=88=A4=E6=96=AD?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E6=98=AF=E5=9F=BA=E5=B2=A9=E7=89=88=E7=8E=A9?= =?UTF-8?q?=E5=AE=B6api?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/plugin/user/BukkitServerPlayer.java | 10 ++++++++++ .../craftengine/core/entity/player/Player.java | 2 ++ 2 files changed, 12 insertions(+) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java index d9ebbbe69..d690465e9 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/user/BukkitServerPlayer.java @@ -168,6 +168,8 @@ public class BukkitServerPlayer extends Player { private int lastHitFurnitureTick; // 控制展示实体可见距离 private double displayEntityViewDistance; + // 是否是基岩版 + private Tristate isBedrock = Tristate.UNDEFINED; public BukkitServerPlayer(BukkitCraftEngine plugin, @Nullable Channel channel) { this.channel = channel; @@ -1517,6 +1519,14 @@ public class BukkitServerPlayer extends Player { return FastNMS.INSTANCE.method$Inventory$clearOrCountMatchingItems(inventory, predicate, count, craftSlots); } + @Override + public boolean isBedrock() { + if (this.isBedrock == Tristate.UNDEFINED) { + this.isBedrock = Tristate.of(this.plugin.compatibilityManager().isBedrockPlayer(this)); + } + return this.isBedrock.asBoolean(); + } + @Override public void addTrackedFurniture(int entityId, Furniture furniture) { this.trackedFurniture.put(entityId, new VirtualCullableObject(furniture)); diff --git a/core/src/main/java/net/momirealms/craftengine/core/entity/player/Player.java b/core/src/main/java/net/momirealms/craftengine/core/entity/player/Player.java index f7f85bdf5..b5814c9b4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/entity/player/Player.java +++ b/core/src/main/java/net/momirealms/craftengine/core/entity/player/Player.java @@ -232,6 +232,8 @@ public abstract class Player extends AbstractEntity implements NetWorkUser { public abstract int clearOrCountMatchingInventoryItems(Key itemId, int count); + public abstract boolean isBedrock(); + @Override public void remove() { } From 0d42069a1a749f53909611390cbde9f483481f8c Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Mon, 8 Dec 2025 04:30:29 +0800 Subject: [PATCH 06/11] Update BukkitWorldManager.java --- .../bukkit/world/BukkitWorldManager.java | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java index 98ef141a8..1f25f192b 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/world/BukkitWorldManager.java @@ -295,21 +295,23 @@ public class BukkitWorldManager implements WorldManager, Listener { Object chunkSource = FastNMS.INSTANCE.method$ServerLevel$getChunkSource(worldServer); Object levelChunk = FastNMS.INSTANCE.method$ServerChunkCache$getChunkAtIfLoadedMainThread(chunkSource, chunk.getX(), chunk.getZ()); Object[] sections = FastNMS.INSTANCE.method$ChunkAccess$getSections(levelChunk); - for (int i = 0; i < ceSections.length; i++) { - CESection ceSection = ceSections[i]; - Object section = sections[i]; - WorldStorageInjector.uninjectLevelChunkSection(section); - if (Config.restoreVanillaBlocks()) { - if (!ceSection.statesContainer().isEmpty()) { - for (int x = 0; x < 16; x++) { - for (int z = 0; z < 16; z++) { - for (int y = 0; y < 16; y++) { - ImmutableBlockState customState = ceSection.getBlockState(x, y, z); - if (!customState.isEmpty()) { - BlockStateWrapper wrapper = customState.restoreBlockState(); - if (wrapper != null) { - FastNMS.INSTANCE.method$LevelChunkSection$setBlockState(section, x, y, z, wrapper.literalObject(), false); - unsaved = true; + synchronized (sections) { + for (int i = 0; i < ceSections.length; i++) { + CESection ceSection = ceSections[i]; + Object section = sections[i]; + WorldStorageInjector.uninjectLevelChunkSection(section); + if (Config.restoreVanillaBlocks()) { + if (!ceSection.statesContainer().isEmpty()) { + for (int x = 0; x < 16; x++) { + for (int z = 0; z < 16; z++) { + for (int y = 0; y < 16; y++) { + ImmutableBlockState customState = ceSection.getBlockState(x, y, z); + if (!customState.isEmpty()) { + BlockStateWrapper wrapper = customState.restoreBlockState(); + if (wrapper != null) { + FastNMS.INSTANCE.method$LevelChunkSection$setBlockState(section, x, y, z, wrapper.literalObject(), false); + unsaved = true; + } } } } From c51637af5399b205f94559b612e51baf70f2dd93 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Mon, 8 Dec 2025 04:50:32 +0800 Subject: [PATCH 07/11] Update gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 1488dee0e..2e664fc98 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ org.gradle.jvmargs=-Xmx1G # Project settings -project_version=0.0.66 +project_version=0.0.66.1 config_version=60 lang_version=43 project_group=net.momirealms From 01270aa24b1291db79486008b3554452ca02955d Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Mon, 8 Dec 2025 23:34:54 +0800 Subject: [PATCH 08/11] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=AF=AD=E8=A8=80?= =?UTF-8?q?=E6=96=87=E4=BB=B6=E9=87=8C=E7=B4=AF=E8=B5=98=E7=9A=84KB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../textures/block/custom/pickaxe_block_back.png | Bin 386 -> 0 bytes .../textures/block/custom/pickaxe_block_down.png | Bin 327 -> 0 bytes .../textures/block/custom/pickaxe_block_front.png | Bin 547 -> 0 bytes .../textures/block/custom/pickaxe_block_side.png | Bin 421 -> 0 bytes .../textures/block/custom/pickaxe_block_top.png | Bin 347 -> 0 bytes .../textures/block/custom/place_block_back.png | Bin 455 -> 0 bytes .../textures/block/custom/place_block_down.png | Bin 337 -> 0 bytes .../textures/block/custom/place_block_front.png | Bin 371 -> 0 bytes .../textures/block/custom/place_block_side.png | Bin 397 -> 0 bytes .../textures/block/custom/place_block_top.png | Bin 275 -> 0 bytes .../src/main/resources/translations/en.yml | 2 +- .../src/main/resources/translations/zh_cn.yml | 2 +- gradle.properties | 2 +- 13 files changed, 3 insertions(+), 3 deletions(-) delete mode 100644 common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pickaxe_block_back.png delete mode 100644 common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pickaxe_block_down.png delete mode 100644 common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pickaxe_block_front.png delete mode 100644 common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pickaxe_block_side.png delete mode 100644 common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pickaxe_block_top.png delete mode 100644 common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/place_block_back.png delete mode 100644 common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/place_block_down.png delete mode 100644 common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/place_block_front.png delete mode 100644 common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/place_block_side.png delete mode 100644 common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/place_block_top.png diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pickaxe_block_back.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pickaxe_block_back.png deleted file mode 100644 index bee2f3c2b30bd5df30fb53376347a586689eba52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmV-|0e$|7P)Px$JV``BR5*==l0j?2Koo>0WsSSRSl7K3|3LzZ(DqnLA^4MvH^ocat7$2;(1Y|A zqMMjajSKq94Y|5-*es0 zg3gZcCPY&x1n@j3>el)S2{1G(`!j%E=6b5bKs_b_S_ghAs} zA%vZ2yIibXx5Mo5wBW)s#t0$k%Y|pRr2k4m7%Uen0CK3f@Z?ZYtL0*4@2{$ZGoDPj z@RVvtBT3TI6pVh^eqRtO4X)}Y=iSm2XIQF3K|VRT*6$ymjHX;`Lgi*OqA2lWDe9jX ga~>X_THDuk1n`NTKPx$0ZBwbR5*=|QZa7BFbrf22_l0Su-YjenkOX4|38xs&eXbqj7SET4(Ae%)dIbV zw(pKdle_cfN<>|Z-g~N`s#brEBN4eS#``ejoNIQCW8XXI-cBd@l`?Ng%mK~cZ#N=x z_93N-Ih6dU1u0E!dqAp&We;!WKtwrbi)S@+uwj-CrOYKi)>P|o9|jSDFU#J+c#Zh- zN<_%E`5DZiSwD*iit+QqsP+Z{T1Sw68NwH%Qu_>)CWwuLmU5s#Q+k>jsgL?0c%^Y^;%k`g^hn}vB@vqwka1NnqVf}0r!&5Hm4002ovPDHLkV1n)1jB)?~ diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pickaxe_block_front.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pickaxe_block_front.png deleted file mode 100644 index 56b8678bffd6f6376873817120e742d56fed7386..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 547 zcmV+;0^I$HP)Px$-AP12R5*>5QbB7PQ4s#LyQUkn>Sk+bJk*}{wM`-Gf?CpwoB9L90l_X1@LA&3qf#wH*K{!x;O1$}j)` zh{x9f+}+J7rPkQ@0VpZMC=~NaT}KFw#s>iP`rB}E!ui$Zb#(0ev*~og`Puo!U@$m4 zznE|?8I)2a(a5gt?Crg{>HWFw_obMoX#j)}GEHx7x#iN)QB$F6&arR%{q0N!K%tnI zUtV2a0~mT<&ap`%YHXSSetiE4KvmU3G0&LAn3dFZ#;kYsH>#>ig0X2TrfJ9tImc$q zdf)gc4|Q-@lPv(IX(&OkJU#s^-%X%7t!8`V4XJh9J_hh8n~la|YWQ{|Zy1lSGiH$w z4>Q~0ZY-uM04kOJjYQ()(+L1#w3=<{8tq!GRg=2@)rIi#%Y?SX&Oyf zi21!IPoJgJ53-N5LM+_ZF2&BT&T6%))~Z4*UX@->r#$D__t)0E;Yb0nkw_$U-7S{@ lP$c|Qq<<_@-ml<)@E1fz>kvnQF|7aq002ovPDHLkV1kMo2UP$7 diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pickaxe_block_side.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pickaxe_block_side.png deleted file mode 100644 index 4b2b7cffe7a20129ba84f07d204b17846a3dc777..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 421 zcmV;W0b2fvP)Px$Ur9tkR5*=|Qo&BbKoEV9wzeRpYmG+m-~mwyiAFDmi!uI&;o|T3OMZZQ@&bWq z!hx1pOt#%Ev}`XP78im@e215rd9$;VnaQ1BTmo<(N1VSrziP_&JP$yp+gn?^adsk&oNOscl7mVmO=lbWG0m-zQY}dm%d!BB ze1Ai>f<|`SG?@aZ9oL9creP!n;*(n7Sk21<8_;Yv6bq4QhM_A>maLx68GvaOmf0}$#aQK6rd1Fk zlPu%!9|OezwB?ozLw8*QK(aD~$YdizWO>eGsc|05$*3twSBOkW;~-cp&ay1EliyI% z{FVT;TG!jQ4PfmR0f-svbbH#e5HrRYi*0-50b|Vm3FdBY??OuDdH)CBX)31AD`m;? P00000NkvXXu0mjfHb1p4 diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pickaxe_block_top.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/pickaxe_block_top.png deleted file mode 100644 index a6c59abed099243e1c04ef0de89d7a0dd6bd88f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347 zcmV-h0i^zkP)Px$6-h)vR5*>Ll0i?yAQ*<<8C+p2ZAp#B&4Y>ctl7!zPn-Q7XX3%lXzXZdS6FxP zK*CzKoqP}Q@xlWi@C}}xX8;l*(9w820pAbYq!20Zg0C*-+IQvtx{?SeEFd4BjM;v&vNdubax zUnFtc?&T);0sAt;;iYS3Q37b&y`Ay_qZ_%&8DriZwANko0L{RcT7a6;ac3Wopy002ovPDHLkV1ggtlqUcH diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/place_block_back.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/place_block_back.png deleted file mode 100644 index f1ca41066a4ef0efe04d3e19c15277eb5db024d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmV;&0XY7NP)Px$fk{L`R5*==lFv@tKoEyN(p|@)b{yjqNt9F^TIB?))N<-GAl{(&J`Z!IvxF{;W)9i1)otf3n*8ahJpyT^mYrq%-NL-gOW)a7L z>iGW0!w;V8*3(IrJ#)nT{_Tfa#PK8y^LATY=P^jKY>nn=3Z!WYDB#!cOTf09Kv^yY zDvR5CdAqeOrYee}C<^~oUMBwxU_TqEBEE9~pGUD6<}E!IM{1Su_Vj7{eGUNQ51E9#?aHic~lCfs>)cF_FAj29eVoW=NZtF<6cvI z0jkQVo7t?_@2%e8J+-RqDlyOiZf3Ksx9>*48)wN&y3Ct^IyydDHGN#3`cjA~&OQKY x5{5t+O<(NL@9hGrE!!4Nr<2Kl=-qBt$OntFn9yV0uL%GE002ovPDHLkV1k5I*tY-x diff --git a/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/place_block_down.png b/common-files/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/block/custom/place_block_down.png deleted file mode 100644 index c220083d781e16f21afae23eb776be684acc3eaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmV-X0j~auP)Px$3rR#lR5*=|Qo&BcFbsW6vErarqA-DyR_w#rXHVRRw)V8`&}m8K3kO4#(N5xB z;yCX)&$1srHX8u@L*I8D?!$-BHXgv@KWqSf*X<8I0JGhG#u(q%YXBmW()fqUY>5cK z*KP;E#2EEq7%t2<#p_fs440}}>OTw3iU_j>5M#_Ga?ET+M3Y93l*SaVCAD<#oMZQR zBPdZnzW`8grBbmdFU~m)&ZlFh=H!gv$KG$>*~VQ#SyhcqUCs2MjH&w@0kdVcPj#&$ zSKq4fAPx$ElET{R5*==QcX+4Kop$9CQXwjX3fn;{RxVo9!321>Rk~OOwxKtS+?DLY}{Nt zJiCM{>6{)j13T~SOfD|30K}Z*5H?Z*U@_-6x7SBuIMlXPwZ{-nbulseQ*H_#*Y&KVK{ePXT)brUsW{# zmLyyV>AFtSv~-8Rh&c}eA3&0DW=s#@{OlA!mKUq#YR|n$7o-Xyjp-RB$?{?(k5ygQ zVKmtnyqVwW)>^%pZ&e{AfZs@2UNlWhHzkvW5VC1n+QFEft;>=eLEsZRf^}Ik`m*7P zhP@h+o;U4u`%jmKr68V|TB(=UH%3#f6jkLUP033Au`P;r9h=Px$M@d9MR5*=|l2J>;Fc8Q8ooQ^xIv0zBt;2~-#V18jKgRH5t6xFEN!wv8@He2O605%Zf=JtBe^O~`>lz$WwAMPL7D$nCE zEc<;@d%w^9umS*#%HlUj$X^vzgv;yCgEDlv1j-0mCq{?*qs` zvcu_=b2|znlZ=R95@=n&E*3;G-xpbyyROT*O;>wf4*;!FmH;RO!1u+@^ypY?z1h^s zTk;JHK(StBX{xo(($oS-uat7#E@P}?PPdxp^*FaXThgX5rgcsG*~tt*mgNV-p@F0< zgGoTI0zm7UQCmtWt!vJ0^Ei!v5GLt+l31r_=i65WfX(mbPx#%}GQ-R5*>5Qo#;_FbpkZ3!5i)kVG(Y!L!Ey{}Z`j024fn6Pww^Lrt@Qf!Ryf zcJKAAYjnBZ03cNgwrtcI0GJ<;6~_Vqy0%-wSgO>s@BLJDt_W7&Yrk~JbB2!kAh!?h z+RhiutbJQEQH(NXl1Q+SJ0?V8&9u)lOgZNWOvIdX0C)|95DBC5qiI$~bSg_c#E1?w z&UqYu``ZDXFFgpbX~g)SBSjlCl5*002ovPDHLkV1lEtZs`C3 diff --git a/common-files/src/main/resources/translations/en.yml b/common-files/src/main/resources/translations/en.yml index edac2828b..1a2907784 100644 --- a/common-files/src/main/resources/translations/en.yml +++ b/common-files/src/main/resources/translations/en.yml @@ -46,7 +46,7 @@ info.resource_pack.validate: "Validated resource pack in ms" info.resource_pack.optimize: "Optimized resource pack in ms" info.resource_pack.optimize.json: "> Optimizing json files..." info.resource_pack.optimize.texture: "> Optimizing textures..." -info.resource_pack.optimize.result: "□ Before/After/Ratio: KB/ KB/%" +info.resource_pack.optimize.result: "□ Before/After/Ratio: //%" info.resource_pack.create: "Created resource pack zip in ms" info.resource_pack.upload: "Completed uploading resource pack" info.host.self.netty_server: "Netty HTTP server started on port: " diff --git a/common-files/src/main/resources/translations/zh_cn.yml b/common-files/src/main/resources/translations/zh_cn.yml index 5ea020fd7..7ef4922c2 100644 --- a/common-files/src/main/resources/translations/zh_cn.yml +++ b/common-files/src/main/resources/translations/zh_cn.yml @@ -46,7 +46,7 @@ info.resource_pack.validate: "验证资源包耗时 ms" info.resource_pack.optimize: "优化资源包耗时 ms" info.resource_pack.optimize.json: "> 正在优化json文件..." info.resource_pack.optimize.texture: "> 正在优化贴图文件..." -info.resource_pack.optimize.result: "□ 优化前/优化后/比例: KB/ KB/%" +info.resource_pack.optimize.result: "□ 优化前/优化后/比例: //%" info.resource_pack.create: "创建资源包文件耗时 ms" info.resource_pack.upload: "资源包上传完成" info.host.self.netty_server: "Netty HTTP 服务已在端口 开启" diff --git a/gradle.properties b/gradle.properties index 2e664fc98..2f42c8818 100644 --- a/gradle.properties +++ b/gradle.properties @@ -38,7 +38,7 @@ zstd_version=1.5.7-6 commons_io_version=2.21.0 commons_lang3_version=3.20.0 sparrow_nbt_version=0.10.6 -sparrow_util_version=0.68 +sparrow_util_version=0.69 fastutil_version=8.5.18 netty_version=4.1.128.Final joml_version=1.10.8 From 4ce4812523655745de107faba1cd54723ed41e54 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Tue, 9 Dec 2025 00:00:49 +0800 Subject: [PATCH 09/11] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E7=BB=84=E4=BB=B6=E5=BC=82=E6=9E=84=E5=88=97=E8=A1=A8=E5=8F=82?= =?UTF-8?q?=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 2f42c8818..4d21c038e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -37,7 +37,7 @@ geantyref_version=1.3.16 zstd_version=1.5.7-6 commons_io_version=2.21.0 commons_lang3_version=3.20.0 -sparrow_nbt_version=0.10.6 +sparrow_nbt_version=0.10.8 sparrow_util_version=0.69 fastutil_version=8.5.18 netty_version=4.1.128.Final From da2f25cde55250fa3bb4fa3f16693960c2594a76 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Tue, 9 Dec 2025 02:01:36 +0800 Subject: [PATCH 10/11] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E6=8C=87=E4=BB=A4?= =?UTF-8?q?=E7=94=A8=E4=BA=8E=E4=BF=AE=E6=94=B9=E7=BB=93=E6=9E=84nbt?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bukkit/build.gradle.kts | 2 +- bukkit/legacy/build.gradle.kts | 2 +- bukkit/loader/build.gradle.kts | 2 +- bukkit/paper-loader/build.gradle.kts | 2 +- .../plugin/command/BukkitCommandManager.java | 1 + ...ebugOptimizeFurnitureStructureCommand.java | 175 ++++++++++++++++++ common-files/src/main/resources/commands.yml | 7 + core/build.gradle.kts | 2 +- .../craftengine/core/util/NBTUtils.java | 26 +++ gradle.properties | 4 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 11 files changed, 217 insertions(+), 8 deletions(-) create mode 100644 bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugOptimizeFurnitureStructureCommand.java create mode 100644 core/src/main/java/net/momirealms/craftengine/core/util/NBTUtils.java diff --git a/bukkit/build.gradle.kts b/bukkit/build.gradle.kts index f532acde6..10489df7f 100644 --- a/bukkit/build.gradle.kts +++ b/bukkit/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("com.gradleup.shadow") version "9.2.2" + id("com.gradleup.shadow") version "9.3.0" id("maven-publish") } diff --git a/bukkit/legacy/build.gradle.kts b/bukkit/legacy/build.gradle.kts index 75ecb2c84..0196a21b3 100644 --- a/bukkit/legacy/build.gradle.kts +++ b/bukkit/legacy/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("com.gradleup.shadow") version "9.2.2" + id("com.gradleup.shadow") version "9.3.0" } repositories { diff --git a/bukkit/loader/build.gradle.kts b/bukkit/loader/build.gradle.kts index 901f5444a..b8d526844 100644 --- a/bukkit/loader/build.gradle.kts +++ b/bukkit/loader/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("com.gradleup.shadow") version "9.2.2" + id("com.gradleup.shadow") version "9.3.0" id("de.eldoria.plugin-yml.bukkit") version "0.7.1" } diff --git a/bukkit/paper-loader/build.gradle.kts b/bukkit/paper-loader/build.gradle.kts index 41bb27752..71d886cdf 100644 --- a/bukkit/paper-loader/build.gradle.kts +++ b/bukkit/paper-loader/build.gradle.kts @@ -4,7 +4,7 @@ import xyz.jpenilla.runtask.pluginsapi.DownloadPluginsSpec import java.net.URI plugins { - id("com.gradleup.shadow") version "9.2.2" + id("com.gradleup.shadow") version "9.3.0" id("de.eldoria.plugin-yml.paper") version "0.7.1" id("xyz.jpenilla.run-paper") version "3.0.2" } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java index 5f44c5689..3ea7fa6a2 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java @@ -60,6 +60,7 @@ public class BukkitCommandManager extends AbstractCommandManager new DebugIsSectionInjectedCommand(this, plugin), new DebugMigrateTemplatesCommand(this, plugin), new DebugIsChunkPersistentLoadedCommand(this, plugin), + new DebugOptimizeFurnitureStructureCommand(this, plugin), new TotemAnimationCommand(this, plugin), new EnableResourceCommand(this, plugin), new DisableResourceCommand(this, plugin), diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugOptimizeFurnitureStructureCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugOptimizeFurnitureStructureCommand.java new file mode 100644 index 000000000..e3ff5fce1 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/DebugOptimizeFurnitureStructureCommand.java @@ -0,0 +1,175 @@ +package net.momirealms.craftengine.bukkit.plugin.command.feature; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature; +import net.momirealms.craftengine.core.plugin.CraftEngine; +import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager; +import net.momirealms.craftengine.core.plugin.command.sender.Sender; +import net.momirealms.craftengine.core.util.NBTUtils; +import net.momirealms.sparrow.nbt.CompoundTag; +import net.momirealms.sparrow.nbt.DoubleTag; +import net.momirealms.sparrow.nbt.ListTag; +import net.momirealms.sparrow.nbt.Tag; +import org.bukkit.NamespacedKey; +import org.bukkit.World; +import org.bukkit.command.CommandSender; +import org.checkerframework.checker.nullness.qual.NonNull; +import org.incendo.cloud.Command; +import org.incendo.cloud.bukkit.parser.NamespacedKeyParser; +import org.incendo.cloud.bukkit.parser.WorldParser; +import org.incendo.cloud.context.CommandContext; +import org.incendo.cloud.context.CommandInput; +import org.incendo.cloud.parser.standard.DoubleParser; +import org.incendo.cloud.suggestion.Suggestion; +import org.incendo.cloud.suggestion.SuggestionProvider; + +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.nio.file.FileVisitOption; +import java.nio.file.Files; +import java.nio.file.Path; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Objects; +import java.util.concurrent.CompletableFuture; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class DebugOptimizeFurnitureStructureCommand extends BukkitCommandFeature { + + public DebugOptimizeFurnitureStructureCommand(CraftEngineCommandManager commandManager, CraftEngine plugin) { + super(commandManager, plugin); + } + + @Override + public Command.Builder assembleCommand(org.incendo.cloud.CommandManager manager, Command.Builder builder) { + return builder + .required("world", WorldParser.worldParser()) + .required("file", NamespacedKeyParser.namespacedKeyComponent().suggestionProvider(new SuggestionProvider<>() { + @Override + public @NonNull CompletableFuture> suggestionsFuture(@NonNull CommandContext context, @NonNull CommandInput input) { + World world = context.get("world"); + Path generated = world.getWorldFolder().toPath().resolve("generated"); + if (!Files.exists(generated)) { + return CompletableFuture.completedFuture(Collections.emptyList()); + } + try { + return CompletableFuture.completedFuture(findStructures(generated).stream().map(Suggestion::suggestion).collect(Collectors.toList())); + } catch (IOException e) { + return CompletableFuture.completedFuture(Collections.emptyList()); + } + } + })) + .optional("y-offset", DoubleParser.doubleParser()) + .handler(context -> { + World world = context.get("world"); + NamespacedKey file = context.get("file"); + double offset = (double) context.optional("y-offset").orElse(0d); + Path filePath = world.getWorldFolder().toPath().resolve("generated").resolve(file.getNamespace()).resolve("structures").resolve(file.getKey() + ".nbt"); + Sender sender = plugin().senderFactory().wrap(context.sender()); + if (!Files.exists(filePath)) { + sender.sendMessage(Component.text("File not found", NamedTextColor.RED)); + return; + } + try (InputStream is = Files.newInputStream(filePath)) { + CompoundTag structureTag = NBTUtils.readCompressed(is); + ListTag entitiesTag = structureTag.getList("entities"); + if (entitiesTag == null) { + sender.sendMessage(Component.text("Entities not found", NamedTextColor.RED)); + return; + } + int count = 0; + ListTag toSave = new ListTag(); + for (Tag entityTag0 : entitiesTag) { + CompoundTag entityTag = (CompoundTag) entityTag0; + CompoundTag entityNBTTag = (CompoundTag) entityTag.get("nbt"); + if (entityNBTTag != null) { + CompoundTag bukkitValuesTag = (CompoundTag) entityNBTTag.get("BukkitValues"); + if (bukkitValuesTag != null) { + // 不保存碰撞实体 + if (bukkitValuesTag.containsKey("craftengine:collision")) { + count++; + continue; + } + if (bukkitValuesTag.containsKey("craftengine:furniture_id")) { + if (offset != 0) { + ListTag pos = (ListTag) entityTag.get("pos"); + double previousY = pos.getDouble(1); + pos.set(1, new DoubleTag(previousY + offset)); + count++; + } + } + } + } + toSave.add(entityTag); + } + if (count == 0) { + sender.sendMessage(Component.text("Nothing changed", NamedTextColor.WHITE)); + } else { + structureTag.put("entities", toSave); + try (OutputStream os = Files.newOutputStream(filePath)) { + NBTUtils.writeCompressed(structureTag, os); + } catch (IOException e) { + sender.sendMessage(Component.text("Internal error", NamedTextColor.RED)); + plugin().logger().severe("Cannot write structure NBT file", e); + return; + } + sender.sendMessage(Component.text(count + " entities modified", NamedTextColor.WHITE)); + } + } catch (IOException e) { + sender.sendMessage(Component.text("Internal error", NamedTextColor.RED)); + plugin().logger().severe("Cannot read structure NBT file", e); + } + }); + } + + @Override + public String getFeatureID() { + return "debug_optimize_furniture_structure"; + } + + public static List findStructures(Path startPath) throws IOException { + // 并行遍历文件树,使用自定义的BiPredicate进行过滤 + try (Stream stream = Files.walk(startPath, FileVisitOption.FOLLOW_LINKS)) { + return stream.filter(Files::isRegularFile) + .filter(path -> { + String filename = path.getFileName().toString(); + return filename.endsWith(".nbt") && + filename.length() > 4; // 确保有文件名(不只是.nbt) + }) + .map(path -> { + try { + return extractPair(startPath, path); + } catch (Exception e) { + return null; + } + }) + .filter(Objects::nonNull) + .collect(Collectors.toList()); + } + } + + private static String extractPair(Path basePath, Path nbtFile) { + try { + Path relativePath = basePath.relativize(nbtFile); + List parts = new ArrayList<>(); + for (Path part : relativePath) { + parts.add(part.toString()); + } + // 检查是否符合 xxx/structures/xxx.nbt 模式 + if (parts.size() >= 3 && "structures".equals(parts.get(parts.size() - 2))) { + String firstXxx = parts.get(parts.size() - 3); + String fileName = parts.getLast(); + if (fileName.endsWith(".nbt")) { + String secondXxx = fileName.substring(0, fileName.length() - 4); + return firstXxx + ":" + secondXxx; + } + } + } catch (Exception ignored) { + } + return null; + } +} diff --git a/common-files/src/main/resources/commands.yml b/common-files/src/main/resources/commands.yml index e9929cd06..26ec2fe89 100644 --- a/common-files/src/main/resources/commands.yml +++ b/common-files/src/main/resources/commands.yml @@ -283,6 +283,13 @@ debug_furniture: - /craftengine debug furniture - /ce debug furniture +debug_optimize_furniture_structure: + enable: true + permission: ce.command.debug.optimize_furniture_structure + usage: + - /craftengine debug optimize-furniture-structure + - /ce debug optimize-furniture-structure + debug_test: enable: true permission: ce.command.debug.test diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 802335f5c..f49d99ae4 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("com.gradleup.shadow") version "9.2.2" + id("com.gradleup.shadow") version "9.3.0" id("maven-publish") } diff --git a/core/src/main/java/net/momirealms/craftengine/core/util/NBTUtils.java b/core/src/main/java/net/momirealms/craftengine/core/util/NBTUtils.java new file mode 100644 index 000000000..6c92e63e8 --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/util/NBTUtils.java @@ -0,0 +1,26 @@ +package net.momirealms.craftengine.core.util; + +import net.momirealms.sparrow.nbt.CompoundTag; +import net.momirealms.sparrow.nbt.NBT; + +import java.io.*; +import java.util.zip.GZIPInputStream; +import java.util.zip.GZIPOutputStream; + +public final class NBTUtils { + + private NBTUtils() { + } + + public static void writeCompressed(CompoundTag nbt, OutputStream stream) throws IOException { + try (DataOutputStream dataoutputstream = new DataOutputStream(new BufferedOutputStream(new GZIPOutputStream(stream)))) { + NBT.writeCompound(nbt, dataoutputstream, true); + } + } + + public static CompoundTag readCompressed(InputStream stream) throws IOException { + try (DataInputStream datainputstream = new DataInputStream(new BufferedInputStream(new GZIPInputStream(stream)))) { + return NBT.readCompound(datainputstream, true); + } + } +} diff --git a/gradle.properties b/gradle.properties index 4d21c038e..459452d32 100644 --- a/gradle.properties +++ b/gradle.properties @@ -37,7 +37,7 @@ geantyref_version=1.3.16 zstd_version=1.5.7-6 commons_io_version=2.21.0 commons_lang3_version=3.20.0 -sparrow_nbt_version=0.10.8 +sparrow_nbt_version=0.10.9 sparrow_util_version=0.69 fastutil_version=8.5.18 netty_version=4.1.128.Final @@ -48,7 +48,7 @@ byte_buddy_version=1.18.1 ahocorasick_version=0.6.3 snake_yaml_version=2.5 anti_grief_version=1.0.5 -nms_helper_version=1.0.148 +nms_helper_version=1.0.149 evalex_version=3.5.0 reactive_streams_version=1.0.4 amazon_awssdk_version=2.38.7 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ab521aa07..cd4b7aa89 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-9.1.0-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 4918c391a1b040677257c782961825acf71d6406 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Tue, 9 Dec 2025 16:47:03 +0800 Subject: [PATCH 11/11] =?UTF-8?q?=E6=94=B9=E8=BF=9B=E5=85=BC=E5=AE=B9?= =?UTF-8?q?=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/entity/furniture/BukkitFurniture.java | 8 ++++++++ gradle.properties | 2 +- 2 files changed, 9 insertions(+), 1 deletion(-) 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 237f8de2a..09446dee3 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 @@ -178,4 +178,12 @@ public class BukkitFurniture extends Furniture { public Entity getBukkitEntity() { return this.metaEntity.get(); } + + /** + * Use {@link #getBukkitEntity()} instead + */ + @Deprecated + public Entity baseEntity() { + return getBukkitEntity(); + } } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 459452d32..1b68adee0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ org.gradle.jvmargs=-Xmx1G # Project settings -project_version=0.0.66.1 +project_version=0.0.66.2 config_version=60 lang_version=43 project_group=net.momirealms