From 16822314fb9c784735aa7a52d01719d1e7592cbf Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sat, 12 Apr 2025 16:22:02 +0800 Subject: [PATCH 01/10] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=A3=8E=E5=BC=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../bukkit/block/BlockEventListener.java | 7 +++++++ .../craftengine/bukkit/util/ExplosionUtils.java | 16 ++++++++++++++++ gradle.properties | 2 +- 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ExplosionUtils.java diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BlockEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BlockEventListener.java index f8879f586..fda52637e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BlockEventListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/block/BlockEventListener.java @@ -16,6 +16,7 @@ import net.momirealms.craftengine.core.loot.LootTable; import net.momirealms.craftengine.core.loot.parameter.LootParameters; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.VersionHelper; import net.momirealms.craftengine.core.util.context.ContextHolder; import net.momirealms.craftengine.core.world.BlockPos; import net.momirealms.craftengine.core.world.Vec3d; @@ -294,11 +295,17 @@ public class BlockEventListener implements Listener { @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) public void onEntityExplode(EntityExplodeEvent event) { + if (VersionHelper.isVersionNewerThan1_21()) { + if (!ExplosionUtils.isDroppingItems(event)) return; + } handleExplodeEvent(event.blockList(), new BukkitWorld(event.getEntity().getWorld()), event.getYield()); } @EventHandler(ignoreCancelled = true, priority = EventPriority.MONITOR) public void onBlockExplode(BlockExplodeEvent event) { + if (VersionHelper.isVersionNewerThan1_21()) { + if (!ExplosionUtils.isDroppingItems(event)) return; + } handleExplodeEvent(event.blockList(), new BukkitWorld(event.getBlock().getWorld()), event.getYield()); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ExplosionUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ExplosionUtils.java new file mode 100644 index 000000000..e3de0e969 --- /dev/null +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ExplosionUtils.java @@ -0,0 +1,16 @@ +package net.momirealms.craftengine.bukkit.util; + +import org.bukkit.ExplosionResult; +import org.bukkit.event.block.BlockExplodeEvent; +import org.bukkit.event.entity.EntityExplodeEvent; + +public class ExplosionUtils { + + public static boolean isDroppingItems(BlockExplodeEvent event) { + return event.getExplosionResult() != ExplosionResult.KEEP && event.getExplosionResult() != ExplosionResult.TRIGGER_BLOCK; + } + + public static boolean isDroppingItems(EntityExplodeEvent event) { + return event.getExplosionResult() != ExplosionResult.KEEP && event.getExplosionResult() != ExplosionResult.TRIGGER_BLOCK; + } +} diff --git a/gradle.properties b/gradle.properties index 617b4f248..dc9fb4f15 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx1G # Project settings # Rule: [major update].[feature update].[bug fix] -project_version=0.0.46.3 +project_version=0.0.47 config_version=24 lang_version=4 project_group=net.momirealms From bacad56714ac6b62591ad3f0ee8ff72315b5b3a3 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sat, 12 Apr 2025 20:52:30 +0800 Subject: [PATCH 02/10] Update ExplosionUtils.java --- .../net/momirealms/craftengine/bukkit/util/ExplosionUtils.java | 1 + 1 file changed, 1 insertion(+) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ExplosionUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ExplosionUtils.java index e3de0e969..3d8de7149 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ExplosionUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/ExplosionUtils.java @@ -4,6 +4,7 @@ import org.bukkit.ExplosionResult; import org.bukkit.event.block.BlockExplodeEvent; import org.bukkit.event.entity.EntityExplodeEvent; +@SuppressWarnings("UnstableApiUsage") public class ExplosionUtils { public static boolean isDroppingItems(BlockExplodeEvent event) { From b5ca0383d8398ff2848f73aceaa60b01896462f0 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sat, 12 Apr 2025 21:36:11 +0800 Subject: [PATCH 03/10] =?UTF-8?q?=E6=B7=BB=E5=8A=A0emoji=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resources/default/configuration/emoji.yml | 133 +++++++++++++++++- .../minecraft/textures/font/image/emojis.png | Bin 0 -> 1537 bytes .../core/pack/AbstractPackManager.java | 1 + gradle.properties | 2 +- 4 files changed, 132 insertions(+), 4 deletions(-) create mode 100644 bukkit/loader/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/font/image/emojis.png diff --git a/bukkit/loader/src/main/resources/resources/default/configuration/emoji.yml b/bukkit/loader/src/main/resources/resources/default/configuration/emoji.yml index 755db9585..a6e520f09 100644 --- a/bukkit/loader/src/main/resources/resources/default/configuration/emoji.yml +++ b/bukkit/loader/src/main/resources/resources/default/configuration/emoji.yml @@ -1,8 +1,8 @@ templates: default:emoji/basic: - content: "'>" + content: "'>" default:emoji/addition_info: - content: "'>{text}" + content: "'>{text}" emoji: default:emoji_location: @@ -23,4 +23,131 @@ emoji: image: "default:icons:0:1" permission: emoji.time keywords: - - ":time:" \ No newline at end of file + - ":time:" + + default:emoji_smiley: + template: "default:emoji/basic" + overrides: + image: "default:emojis:0:0" + permission: emoji.smile + keywords: + - ":)" + - ":smiley:" + - ":smile:" + default:emoji_angry: + template: "default:emoji/basic" + overrides: + image: "default:emojis:0:1" + permission: emoji.angry + keywords: + - ":angry:" + default:emoji_grin: + template: "default:emoji/basic" + overrides: + image: "default:emojis:0:2" + permission: emoji.grin + keywords: + - ":grin:" + default:emoji_sob: + template: "default:emoji/basic" + overrides: + image: "default:emojis:0:3" + permission: emoji.sob + keywords: + - ":sob:" + default:emoji_sweat_smile: + template: "default:emoji/basic" + overrides: + image: "default:emojis:1:0" + permission: emoji.sweat_smile + keywords: + - ":sweat_smile:" + default:emoji_blush: + template: "default:emoji/basic" + overrides: + image: "default:emojis:1:1" + permission: emoji.blush + keywords: + - ":blush:" + default:emoji_joy: + template: "default:emoji/basic" + overrides: + image: "default:emojis:1:2" + permission: emoji.joy + keywords: + - ":joy:" + default:emoji_slight_frown: + template: "default:emoji/basic" + overrides: + image: "default:emojis:1:3" + permission: emoji.slight_frown + keywords: + - ":slight_frown:" + default:emoji_unamused: + template: "default:emoji/basic" + overrides: + image: "default:emojis:2:0" + permission: emoji.unamused + keywords: + - ":unamused:" + default:emoji_laughing: + template: "default:emoji/basic" + overrides: + image: "default:emojis:2:1" + permission: emoji.laughing + keywords: + - ":laughing:" + default:emoji_sunglasses: + template: "default:emoji/basic" + overrides: + image: "default:emojis:2:2" + permission: emoji.sunglasses + keywords: + - ":sunglasses:" + default:emoji_innocent: + template: "default:emoji/basic" + overrides: + image: "default:emojis:2:3" + permission: emoji.innocent + keywords: + - ":innocent:" + default:emoji_face_vomiting: + template: "default:emoji/basic" + overrides: + image: "default:emojis:3:0" + permission: emoji.face_vomiting + keywords: + - ":face_vomiting:" + default:emoji_rolling_eyes: + template: "default:emoji/basic" + overrides: + image: "default:emojis:3:1" + permission: emoji.rolling_eyes + keywords: + - ":rolling_eyes:" + default:emoji_yum: + template: "default:emoji/basic" + overrides: + image: "default:emojis:3:2" + permission: emoji.yum + keywords: + - ":yum:" + default:emoji_confounded: + template: "default:emoji/basic" + overrides: + image: "default:emojis:3:2" + permission: emoji.confounded + keywords: + - ":confounded:" + +images: + default:emojis: + height: 10 + ascent: 8 + font: minecraft:emoji + file: minecraft:font/image/emojis.png + chars: + - '\ub000\ub001\ub002\ub003' + - '\ub004\ub005\ub006\ub007' + - '\ub008\ub009\ub00a\ub00b' + - '\ub00c\ub00d\ub00e\ub00f' \ No newline at end of file diff --git a/bukkit/loader/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/font/image/emojis.png b/bukkit/loader/src/main/resources/resources/default/resourcepack/assets/minecraft/textures/font/image/emojis.png new file mode 100644 index 0000000000000000000000000000000000000000..59efa8e7851ffef869db90e1b1ea9c9327cdb25c GIT binary patch literal 1537 zcmV+c2LAbpP)Px)yGcYrRCt{2TTe(FR~Y|o5*8G-E4C~4plC%26f4E)rjkQ@Fcmyhs2HRT*hALK zKpQFakW&eP9;`idDeU&pfI<&7U@3xW4{brVTBX5c&HK&wy*F=W-}ifOfDpk(gfG-|^_gBs#oStivL8nNF`j(?t1bXQ zw5^dOmhw9QfcO|pF^I#;KO$CAk=>5%B|ka1CE1gMTl?bw2vs54l(GfEm)#u1`d1L^ zUy+V6yBnYR;r;VAFMRgl`RpU|r4axCYSvaiv)FFg#nEN!0Ctb?Wy+?)UhrAqnZLm!!H< z2LOORVIY;JY~BI@APqG?TmZPVx?n4Nxee!*3)TqWJCgT3w_LDsY#mVCG*HtKLnNrDIZqz4)j6iN8fiBY+QrI_8GrChg3v@q6WeZn=Or>+M&a z{T8o2Aaua>&;I}bJlA%IJo%q_HqnZb$DcI++()kg0B*OD6GfcMmyciJ_<^4ahX@fO z*a-YX(6=6N=3xp~lBW(#K3^^0mmYBDVG027M&>(ZZ$A}!fGPk0wroq~K-2{I@_y?9 zfImG$8UaoLu*N%eLacuUMmAx~{aKk3N+?vS2Qc{2Ge|u^6~Ol=hcUNYz}cRD@b89c|-CD<|8^24Pm>k@~#{FFcc*5p(I;MnO5<1R0ZfG8;gr*}#y7Y2A~k7{dce);b*r8VGxa)j(0YJM)S%#1 zk0A8`C<0)0L=7CGC~Z{{z?0T(^s z)VITEJAa?N1uM}bNIgImfLlI(^yPUJH(_-mb?)bf4PaG$j>oM>DD{93U$j@e{n?!Z zuLo4Z5ByX(M2HZO@!RiO}F*EC&91j>N6j0ILxjXzp4EFXalJ2*34pV zEn@2cw!Y86GCRtq3Xsjgsbq++0p5F0@q+iU*5?GHFCdP3l*!XZM02sQ%$5DdH?aNyn-h>zuz%j;sg?Bqk_tNcrP zKqdJ+&yO~hH&KjhL$=iT|EaOA~m=~zv z<$VITI&3e37{9n@fkE0Iz&BQ0pHB{Md46A@w5?nG(zZ_4QSn&}d Date: Sat, 12 Apr 2025 21:49:17 +0800 Subject: [PATCH 04/10] Update emoji.yml --- .../main/resources/resources/default/configuration/emoji.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/bukkit/loader/src/main/resources/resources/default/configuration/emoji.yml b/bukkit/loader/src/main/resources/resources/default/configuration/emoji.yml index a6e520f09..996057731 100644 --- a/bukkit/loader/src/main/resources/resources/default/configuration/emoji.yml +++ b/bukkit/loader/src/main/resources/resources/default/configuration/emoji.yml @@ -142,8 +142,8 @@ emoji: images: default:emojis: - height: 10 - ascent: 8 + height: 11 + ascent: 9 font: minecraft:emoji file: minecraft:font/image/emojis.png chars: From 081ca840a491eda1b239222175384ba07cebdca3 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Sat, 12 Apr 2025 22:08:50 +0800 Subject: [PATCH 05/10] =?UTF-8?q?feat(network):=20=E6=8B=A6=E6=88=AA?= =?UTF-8?q?=E5=92=8C=E5=A4=84=E7=90=86=E8=AE=BE=E7=BD=AE=E5=88=86=E6=95=B0?= =?UTF-8?q?=E7=9A=84=E7=BD=91=E7=BB=9C=E6=95=B0=E6=8D=AE=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bukkit/loader/src/main/resources/config.yml | 1 + .../plugin/network/BukkitNetworkManager.java | 1 + .../plugin/network/PacketConsumers.java | 80 ++++++++++++++++++- .../bukkit/plugin/network/PacketIds.java | 2 + .../plugin/network/id/PacketIds1_20.java | 6 ++ .../plugin/network/id/PacketIds1_20_5.java | 6 ++ .../craftengine/bukkit/util/Reflections.java | 7 ++ .../core/plugin/config/Config.java | 6 ++ gradle.properties | 2 +- 9 files changed, 109 insertions(+), 2 deletions(-) diff --git a/bukkit/loader/src/main/resources/config.yml b/bukkit/loader/src/main/resources/config.yml index 7ba3c04e5..e09b121c9 100644 --- a/bukkit/loader/src/main/resources/config.yml +++ b/bukkit/loader/src/main/resources/config.yml @@ -158,6 +158,7 @@ image: system-chat: true tab-list: true # Tab list header and footer player-info: true # User list in tab + set-score: true actionbar: true title: true bossbar: true diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java index 0afcc7e55..02f13cf9b 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java @@ -157,6 +157,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.TAB_LIST_1_20_3 : PacketConsumers.TAB_LIST_1_20, this.packetIds.clientboundTabListPacket()); registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.TEAM_1_20_3 : PacketConsumers.TEAM_1_20, this.packetIds.clientboundSetPlayerTeamPacket()); registerByteBufPacketConsumer(VersionHelper.isVersionNewerThan1_20_3() ? PacketConsumers.SET_OBJECTIVE_1_20_3 : PacketConsumers.SET_OBJECTIVE_1_20, this.packetIds.clientboundSetObjectivePacket()); + registerByteBufPacketConsumer(PacketConsumers.SET_SCORE_1_20_3, VersionHelper.isVersionNewerThan1_20_3() ? this.packetIds.clientboundSetScorePacket() : -1); registerByteBufPacketConsumer(PacketConsumers.REMOVE_ENTITY, this.packetIds.clientboundRemoveEntitiesPacket()); registerByteBufPacketConsumer(PacketConsumers.ADD_ENTITY_BYTEBUFFER, this.packetIds.clientboundAddEntityPacket()); registerByteBufPacketConsumer(PacketConsumers.SOUND, this.packetIds.clientboundSoundPacket()); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java index 0d9f63c9a..7d1707bed 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java @@ -33,6 +33,7 @@ import net.momirealms.craftengine.core.world.chunk.PalettedContainer; import net.momirealms.craftengine.core.world.chunk.packet.MCSection; import net.momirealms.sparrow.nbt.Tag; import org.bukkit.*; +import org.bukkit.block.Block; import org.bukkit.block.data.BlockData; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -1275,7 +1276,7 @@ public class PacketConsumers { // do ray trace to get current block RayTraceResult result = bukkitPlayer.rayTraceBlocks(interactionRange, FluidCollisionMode.NEVER); if (result == null) return; - org.bukkit.block.Block hitBlock = result.getHitBlock(); + Block hitBlock = result.getHitBlock(); if (hitBlock == null) return; ImmutableBlockState state = BukkitBlockManager.instance().getImmutableBlockState(BlockStateUtils.blockDataToId(hitBlock.getBlockData())); // not a custom block @@ -2006,4 +2007,81 @@ public class PacketConsumers { CraftEngine.instance().logger().warn("Failed to handle ClientboundSetEntityDataPacket", e); } }; + + public static final BiConsumer SET_SCORE_1_20_3 = (user, event) -> { + try { + if (!Config.interceptSetScore()) return; + boolean isChanged = false; + FriendlyByteBuf buf = event.getBuffer(); + String owner = buf.readUtf(); + String objectiveName = buf.readUtf(); + int score = buf.readVarInt(); + boolean hasDisplay = buf.readBoolean(); + Tag displayName = null; + if (hasDisplay) { + displayName = buf.readNbt(false); + } + outside : if (displayName != null) { + Map tokens = CraftEngine.instance().imageManager().matchTags(displayName.getAsString()); + if (tokens.isEmpty()) break outside; + Component component = AdventureHelper.tagToComponent(displayName); + for (Map.Entry token : tokens.entrySet()) { + component = component.replaceText(b -> b.matchLiteral(token.getKey()).replacement(token.getValue())); + } + displayName = AdventureHelper.componentToTag(component); + isChanged = true; + } + boolean hasNumberFormat = buf.readBoolean(); + int format = -1; + Tag style = null; + Tag fixed = null; + if (hasNumberFormat) { + format = buf.readVarInt(); + if (format == 0) { + if (displayName == null) return; + } else if (format == 1) { + if (displayName == null) return; + style = buf.readNbt(false); + } else if (format == 2) { + fixed = buf.readNbt(false); + if (fixed == null) return; + Map tokens = CraftEngine.instance().imageManager().matchTags(fixed.getAsString()); + if (tokens.isEmpty() && !isChanged) return; + if (!tokens.isEmpty()) { + Component component = AdventureHelper.tagToComponent(fixed); + for (Map.Entry token : tokens.entrySet()) { + component = component.replaceText(b -> b.matchLiteral(token.getKey()).replacement(token.getValue())); + } + fixed = AdventureHelper.componentToTag(component); + isChanged = true; + } + } + } + if (isChanged) { + event.setChanged(true); + buf.clear(); + buf.writeVarInt(event.packetID()); + buf.writeUtf(owner); + buf.writeUtf(objectiveName); + buf.writeVarInt(score); + if (hasDisplay) { + buf.writeBoolean(true); + buf.writeNbt(displayName, false); + } else { + buf.writeBoolean(false); + } + if (hasNumberFormat) { + buf.writeBoolean(true); + buf.writeVarInt(format); + if (format == 1) { + buf.writeNbt(style, false); + } else if (format == 2) { + buf.writeNbt(fixed, false); + } + } + } + } catch (Exception e) { + CraftEngine.instance().logger().warn("Failed to handle ClientboundSetScorePacket", e); + } + }; } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketIds.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketIds.java index 978507531..3ac33c779 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketIds.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketIds.java @@ -39,4 +39,6 @@ public interface PacketIds { int clientboundLevelChunkWithLightPacket(); int clientboundPlayerInfoUpdatePacket(); + + int clientboundSetScorePacket(); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20.java index a42831d0b..08c4fab48 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20.java @@ -2,6 +2,7 @@ package net.momirealms.craftengine.bukkit.plugin.network.id; import net.momirealms.craftengine.bukkit.plugin.network.PacketIds; import net.momirealms.craftengine.bukkit.util.Reflections; +import net.momirealms.craftengine.core.util.VersionHelper; public class PacketIds1_20 implements PacketIds { @@ -99,4 +100,9 @@ public class PacketIds1_20 implements PacketIds { public int clientboundPlayerInfoUpdatePacket() { return PacketIdFinder.clientboundByClazz(Reflections.clazz$ClientboundPlayerInfoUpdatePacket); } + + @Override + public int clientboundSetScorePacket() { + return PacketIdFinder.clientboundByClazz(Reflections.clazz$ClientboundSetScorePacket); + } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20_5.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20_5.java index 290f16df7..cc5a611fb 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20_5.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20_5.java @@ -1,6 +1,7 @@ package net.momirealms.craftengine.bukkit.plugin.network.id; import net.momirealms.craftengine.bukkit.plugin.network.PacketIds; +import net.momirealms.craftengine.bukkit.util.Reflections; public class PacketIds1_20_5 implements PacketIds { @@ -98,4 +99,9 @@ public class PacketIds1_20_5 implements PacketIds { public int clientboundPlayerInfoUpdatePacket() { return PacketIdFinder.clientboundByName("minecraft:player_info_update"); } + + @Override + public int clientboundSetScorePacket() { + return PacketIdFinder.clientboundByName("minecraft:set_score"); + } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java index a163b570d..43cb6780e 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/Reflections.java @@ -6425,4 +6425,11 @@ public class Reflections { throw new RuntimeException(e); } } + + public static final Class clazz$ClientboundSetScorePacket = requireNonNull( + ReflectionUtils.getClazz( + BukkitReflectionUtils.assembleMCClass("network.protocol.game.ClientboundSetScorePacket"), + BukkitReflectionUtils.assembleMCClass("network.protocol.game.PacketPlayOutScoreboardScore") + ) + ); } 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 8e976ca03..13f81cb36 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 @@ -135,6 +135,7 @@ public class Config { protected boolean image$intercept_packets$text_display; protected boolean image$intercept_packets$armor_stand; protected boolean image$intercept_packets$player_info; + protected boolean image$intercept_packets$set_score; public Config(CraftEngine plugin) { this.plugin = plugin; @@ -304,6 +305,7 @@ public class Config { image$intercept_packets$text_display = config.getBoolean("image.intercept-packets.text-display", true); image$intercept_packets$armor_stand = config.getBoolean("image.intercept-packets.armor-stand", true); image$intercept_packets$player_info = config.getBoolean("image.intercept-packets.player-info", true); + image$intercept_packets$set_score = config.getBoolean("image.intercept-packets.set-score", true); Class modClazz = ReflectionUtils.getClazz(CraftEngine.MOD_CLASS); if (modClazz != null) { @@ -656,6 +658,10 @@ public class Config { return instance.image$intercept_packets$player_info; } + public static boolean interceptSetScore() { + return instance.image$intercept_packets$set_score; + } + public YamlDocument loadOrCreateYamlData(String fileName) { File file = new File(this.plugin.dataFolderFile(), fileName); if (!file.exists()) { diff --git a/gradle.properties b/gradle.properties index dc9fb4f15..262a6d571 100644 --- a/gradle.properties +++ b/gradle.properties @@ -3,7 +3,7 @@ org.gradle.jvmargs=-Xmx1G # Project settings # Rule: [major update].[feature update].[bug fix] project_version=0.0.47 -config_version=24 +config_version=25 lang_version=4 project_group=net.momirealms latest_supported_version=1.21.5 From b518e62286b768a7beb5c6a01dc276725332b9fb Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Sat, 12 Apr 2025 22:09:35 +0800 Subject: [PATCH 06/10] =?UTF-8?q?build(gradle):=20=E6=9B=B4=E6=96=B0?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E7=89=88=E6=9C=AC=E5=8F=B7?= 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 262a6d571..bfc5dfdfd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx1G # Project settings # Rule: [major update].[feature update].[bug fix] -project_version=0.0.47 +project_version=0.0.48 config_version=25 lang_version=4 project_group=net.momirealms From 48e811e69649c8da56f525731b7a12755928a935 Mon Sep 17 00:00:00 2001 From: jhqwqmc <2110242767@qq.com> Date: Sat, 12 Apr 2025 22:16:31 +0800 Subject: [PATCH 07/10] =?UTF-8?q?fix(network):=20=E5=B0=91=E5=86=99?= =?UTF-8?q?=E4=BA=86=E4=B8=AAfalse?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../craftengine/bukkit/plugin/network/PacketConsumers.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java index 7d1707bed..252144ad5 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java @@ -2078,6 +2078,8 @@ public class PacketConsumers { } else if (format == 2) { buf.writeNbt(fixed, false); } + } else { + buf.writeBoolean(false); } } } catch (Exception e) { From 08eebba982833658d856a094771f4c355389cfa2 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sat, 12 Apr 2025 22:59:06 +0800 Subject: [PATCH 08/10] =?UTF-8?q?=E4=BF=AE=E6=94=B9fontmanger()?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../compatibility/papi/ImageExpansion.java | 2 +- .../compatibility/papi/ShiftExpansion.java | 8 +- .../plugin/network/PacketConsumers.java | 80 +++++++++---------- .../plugin/network/id/PacketIds1_20.java | 1 - .../plugin/network/id/PacketIds1_20_5.java | 1 - .../core/pack/AbstractPackManager.java | 2 +- .../craftengine/core/plugin/CraftEngine.java | 2 +- .../craftengine/core/plugin/Plugin.java | 2 +- .../plugin/text/minimessage/ImageTag.java | 2 +- .../plugin/text/minimessage/ShiftTag.java | 2 +- 10 files changed, 50 insertions(+), 52 deletions(-) diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/papi/ImageExpansion.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/papi/ImageExpansion.java index 4f527f7af..c6ac983c1 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/papi/ImageExpansion.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/papi/ImageExpansion.java @@ -51,7 +51,7 @@ public class ImageExpansion extends PlaceholderExpansion { plugin.logger().warn("Invalid image namespaced key: " + param[0] + ":" + param[1]); return null; } - Optional optional = plugin.imageManager().bitmapImageByImageId(key); + Optional optional = plugin.fontManager().bitmapImageByImageId(key); if (optional.isEmpty()) { return null; } diff --git a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/papi/ShiftExpansion.java b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/papi/ShiftExpansion.java index ea10750f9..10f165435 100644 --- a/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/papi/ShiftExpansion.java +++ b/bukkit/compatibility/src/main/java/net/momirealms/craftengine/bukkit/compatibility/papi/ShiftExpansion.java @@ -40,7 +40,7 @@ public class ShiftExpansion extends PlaceholderExpansion { case "mini", "minimessage", "mm" -> { if (split.length != 2) return null; try { - return plugin.imageManager().createMiniMessageOffsets(Integer.parseInt(split[1])); + return plugin.fontManager().createMiniMessageOffsets(Integer.parseInt(split[1])); } catch (NumberFormatException e) { return null; } @@ -48,7 +48,7 @@ public class ShiftExpansion extends PlaceholderExpansion { case "md", "minedown" -> { if (split.length != 2) return null; try { - return plugin.imageManager().createMineDownOffsets(Integer.parseInt(split[1])); + return plugin.fontManager().createMineDownOffsets(Integer.parseInt(split[1])); } catch (NumberFormatException e) { return null; } @@ -56,7 +56,7 @@ public class ShiftExpansion extends PlaceholderExpansion { case "raw" -> { if (split.length != 2) return null; try { - return plugin.imageManager().createRawOffsets(Integer.parseInt(split[1])); + return plugin.fontManager().createRawOffsets(Integer.parseInt(split[1])); } catch (NumberFormatException e) { return null; } @@ -64,7 +64,7 @@ public class ShiftExpansion extends PlaceholderExpansion { default -> { if (split.length != 1) return null; try { - return plugin.imageManager().createMiniMessageOffsets(Integer.parseInt(split[0])); + return plugin.fontManager().createMiniMessageOffsets(Integer.parseInt(split[0])); } catch (NumberFormatException e) { return null; } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java index 252144ad5..052bab0d8 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/PacketConsumers.java @@ -261,9 +261,9 @@ public class PacketConsumers { Tag suffix = buf.readNbt(false); if (suffix == null) return; - Map tokens1 = CraftEngine.instance().imageManager().matchTags(displayName.getAsString()); - Map tokens2 = CraftEngine.instance().imageManager().matchTags(prefix.getAsString()); - Map tokens3 = CraftEngine.instance().imageManager().matchTags(suffix.getAsString()); + Map tokens1 = CraftEngine.instance().fontManager().matchTags(displayName.getAsString()); + Map tokens2 = CraftEngine.instance().fontManager().matchTags(prefix.getAsString()); + Map tokens3 = CraftEngine.instance().fontManager().matchTags(suffix.getAsString()); if (tokens1.isEmpty() && tokens2.isEmpty() && tokens3.isEmpty()) return; event.setChanged(true); @@ -349,7 +349,7 @@ public class PacketConsumers { continue; } String json = ComponentUtils.minecraftToJson(mcComponent); - Map tokens = CraftEngine.instance().imageManager().matchTags(json); + Map tokens = CraftEngine.instance().fontManager().matchTags(json); if (tokens.isEmpty()) { newEntries.add(entry); continue; @@ -387,9 +387,9 @@ public class PacketConsumers { String prefix = buf.readUtf(); String suffix = buf.readUtf(); - Map tokens1 = CraftEngine.instance().imageManager().matchTags(displayName); - Map tokens2 = CraftEngine.instance().imageManager().matchTags(prefix); - Map tokens3 = CraftEngine.instance().imageManager().matchTags(suffix); + Map tokens1 = CraftEngine.instance().fontManager().matchTags(displayName); + Map tokens2 = CraftEngine.instance().fontManager().matchTags(prefix); + Map tokens3 = CraftEngine.instance().fontManager().matchTags(suffix); if (tokens1.isEmpty() && tokens2.isEmpty() && tokens3.isEmpty()) return; event.setChanged(true); @@ -456,7 +456,7 @@ public class PacketConsumers { int actionType = buf.readVarInt(); if (actionType == 0) { String json = buf.readUtf(); - Map tokens = CraftEngine.instance().imageManager().matchTags(json); + Map tokens = CraftEngine.instance().fontManager().matchTags(json); if (tokens.isEmpty()) return; Component component = AdventureHelper.jsonToComponent(json); for (Map.Entry token : tokens.entrySet()) { @@ -478,7 +478,7 @@ public class PacketConsumers { buf.writeByte(flag); } else if (actionType == 3) { String json = buf.readUtf(); - Map tokens = CraftEngine.instance().imageManager().matchTags(json); + Map tokens = CraftEngine.instance().fontManager().matchTags(json); if (tokens.isEmpty()) return; event.setChanged(true); Component component = AdventureHelper.jsonToComponent(json); @@ -505,7 +505,7 @@ public class PacketConsumers { if (actionType == 0) { Tag nbt = buf.readNbt(false); if (nbt == null) return; - Map tokens = CraftEngine.instance().imageManager().matchTags(nbt.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString()); if (tokens.isEmpty()) return; Component component = AdventureHelper.tagToComponent(nbt); for (Map.Entry token : tokens.entrySet()) { @@ -528,7 +528,7 @@ public class PacketConsumers { } else if (actionType == 3) { Tag nbt = buf.readNbt(false); if (nbt == null) return; - Map tokens = CraftEngine.instance().imageManager().matchTags(nbt.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString()); if (tokens.isEmpty()) return; event.setChanged(true); Component component = AdventureHelper.tagToComponent(nbt); @@ -555,7 +555,7 @@ public class PacketConsumers { if (mode != 0 && mode != 2) return; String displayName = buf.readUtf(); int renderType = buf.readVarInt(); - Map tokens = CraftEngine.instance().imageManager().matchTags(displayName); + Map tokens = CraftEngine.instance().fontManager().matchTags(displayName); if (tokens.isEmpty()) return; event.setChanged(true); Component component = AdventureHelper.jsonToComponent(displayName); @@ -587,7 +587,7 @@ public class PacketConsumers { if (optionalNumberFormat) { int format = buf.readVarInt(); if (format == 0) { - Map tokens = CraftEngine.instance().imageManager().matchTags(displayName.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(displayName.getAsString()); if (tokens.isEmpty()) return; event.setChanged(true); Component component = AdventureHelper.tagToComponent(displayName); @@ -603,7 +603,7 @@ public class PacketConsumers { buf.writeBoolean(true); buf.writeVarInt(0); } else if (format == 1) { - Map tokens = CraftEngine.instance().imageManager().matchTags(displayName.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(displayName.getAsString()); if (tokens.isEmpty()) return; Tag style = buf.readNbt(false); event.setChanged(true); @@ -623,8 +623,8 @@ public class PacketConsumers { } else if (format == 2) { Tag fixed = buf.readNbt(false); if (fixed == null) return; - Map tokens1 = CraftEngine.instance().imageManager().matchTags(displayName.getAsString()); - Map tokens2 = CraftEngine.instance().imageManager().matchTags(fixed.getAsString()); + Map tokens1 = CraftEngine.instance().fontManager().matchTags(displayName.getAsString()); + Map tokens2 = CraftEngine.instance().fontManager().matchTags(fixed.getAsString()); if (tokens1.isEmpty() && tokens2.isEmpty()) return; event.setChanged(true); buf.clear(); @@ -654,7 +654,7 @@ public class PacketConsumers { } } } else { - Map tokens = CraftEngine.instance().imageManager().matchTags(displayName.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(displayName.getAsString()); if (tokens.isEmpty()) return; event.setChanged(true); Component component = AdventureHelper.tagToComponent(displayName); @@ -679,7 +679,7 @@ public class PacketConsumers { try { FriendlyByteBuf buf = event.getBuffer(); String jsonOrPlainString = buf.readUtf(); - Map tokens = CraftEngine.instance().imageManager().matchTags(jsonOrPlainString); + Map tokens = CraftEngine.instance().fontManager().matchTags(jsonOrPlainString); if (tokens.isEmpty()) return; boolean overlay = buf.readBoolean(); event.setChanged(true); @@ -702,7 +702,7 @@ public class PacketConsumers { FriendlyByteBuf buf = event.getBuffer(); Tag nbt = buf.readNbt(false); if (nbt == null) return; - Map tokens = CraftEngine.instance().imageManager().matchTags(nbt.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString()); if (tokens.isEmpty()) return; boolean overlay = buf.readBoolean(); event.setChanged(true); @@ -724,7 +724,7 @@ public class PacketConsumers { try { FriendlyByteBuf buf = event.getBuffer(); String json = buf.readUtf(); - Map tokens = CraftEngine.instance().imageManager().matchTags(json); + Map tokens = CraftEngine.instance().fontManager().matchTags(json); if (tokens.isEmpty()) return; event.setChanged(true); Component component = AdventureHelper.jsonToComponent(json); @@ -745,7 +745,7 @@ public class PacketConsumers { FriendlyByteBuf buf = event.getBuffer(); Tag nbt = buf.readNbt(false); if (nbt == null) return; - Map tokens = CraftEngine.instance().imageManager().matchTags(nbt.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString()); if (tokens.isEmpty()) return; event.setChanged(true); Component component = AdventureHelper.tagToComponent(nbt); @@ -765,7 +765,7 @@ public class PacketConsumers { try { FriendlyByteBuf buf = event.getBuffer(); String json = buf.readUtf(); - Map tokens = CraftEngine.instance().imageManager().matchTags(json); + Map tokens = CraftEngine.instance().fontManager().matchTags(json); if (tokens.isEmpty()) return; event.setChanged(true); Component component = AdventureHelper.jsonToComponent(json); @@ -786,7 +786,7 @@ public class PacketConsumers { FriendlyByteBuf buf = event.getBuffer(); Tag nbt = buf.readNbt(false); if (nbt == null) return; - Map tokens = CraftEngine.instance().imageManager().matchTags(nbt.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString()); if (tokens.isEmpty()) return; event.setChanged(true); Component component = AdventureHelper.tagToComponent(nbt); @@ -806,7 +806,7 @@ public class PacketConsumers { try { FriendlyByteBuf buf = event.getBuffer(); String json = buf.readUtf(); - Map tokens = CraftEngine.instance().imageManager().matchTags(json); + Map tokens = CraftEngine.instance().fontManager().matchTags(json); if (tokens.isEmpty()) return; event.setChanged(true); Component component = AdventureHelper.jsonToComponent(json); @@ -827,7 +827,7 @@ public class PacketConsumers { FriendlyByteBuf buf = event.getBuffer(); Tag nbt = buf.readNbt(false); if (nbt == null) return; - Map tokens = CraftEngine.instance().imageManager().matchTags(nbt.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString()); if (tokens.isEmpty()) return; event.setChanged(true); Component component = AdventureHelper.tagToComponent(nbt); @@ -848,8 +848,8 @@ public class PacketConsumers { FriendlyByteBuf buf = event.getBuffer(); String json1 = buf.readUtf(); String json2 = buf.readUtf(); - Map tokens1 = CraftEngine.instance().imageManager().matchTags(json1); - Map tokens2 = CraftEngine.instance().imageManager().matchTags(json2); + Map tokens1 = CraftEngine.instance().fontManager().matchTags(json1); + Map tokens2 = CraftEngine.instance().fontManager().matchTags(json2); if (tokens1.isEmpty() && tokens2.isEmpty()) return; event.setChanged(true); buf.clear(); @@ -885,8 +885,8 @@ public class PacketConsumers { if (nbt1 == null) return; Tag nbt2 = buf.readNbt(false); if (nbt2 == null) return; - Map tokens1 = CraftEngine.instance().imageManager().matchTags(nbt1.getAsString()); - Map tokens2 = CraftEngine.instance().imageManager().matchTags(nbt2.getAsString()); + Map tokens1 = CraftEngine.instance().fontManager().matchTags(nbt1.getAsString()); + Map tokens2 = CraftEngine.instance().fontManager().matchTags(nbt2.getAsString()); if (tokens1.isEmpty() && tokens2.isEmpty()) return; event.setChanged(true); buf.clear(); @@ -921,7 +921,7 @@ public class PacketConsumers { int containerId = buf.readVarInt(); int type = buf.readVarInt(); String json = buf.readUtf(); - Map tokens = CraftEngine.instance().imageManager().matchTags(json); + Map tokens = CraftEngine.instance().fontManager().matchTags(json); if (tokens.isEmpty()) return; event.setChanged(true); Component component = AdventureHelper.jsonToComponent(json); @@ -946,7 +946,7 @@ public class PacketConsumers { int type = buf.readVarInt(); Tag nbt = buf.readNbt(false); if (nbt == null) return; - Map tokens = CraftEngine.instance().imageManager().matchTags(nbt.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString()); if (tokens.isEmpty()) return; Component component = AdventureHelper.tagToComponent(nbt); for (Map.Entry token : tokens.entrySet()) { @@ -1695,7 +1695,7 @@ public class PacketConsumers { String message = (String) Reflections.field$ServerboundRenameItemPacket$name.get(packet); if (message != null && !message.isEmpty()) { // check bypass - FontManager manager = CraftEngine.instance().imageManager(); + FontManager manager = CraftEngine.instance().fontManager(); IllegalCharacterProcessResult result = manager.processIllegalCharacters(message); if (result.has()) { try { @@ -1719,7 +1719,7 @@ public class PacketConsumers { return; } String[] lines = (String[]) Reflections.field$ServerboundSignUpdatePacket$lines.get(packet); - FontManager manager = CraftEngine.instance().imageManager(); + FontManager manager = CraftEngine.instance().fontManager(); if (!manager.isDefaultFontInUse()) return; for (int i = 0; i < lines.length; i++) { String line = lines[i]; @@ -1740,7 +1740,7 @@ public class PacketConsumers { public static final TriConsumer EDIT_BOOK = (user, event, packet) -> { try { if (!Config.filterBook()) return; - FontManager manager = CraftEngine.instance().imageManager(); + FontManager manager = CraftEngine.instance().fontManager(); if (!manager.isDefaultFontInUse()) return; // check bypass if (((BukkitServerPlayer) user).hasPermission(FontManager.BYPASS_BOOK)) { @@ -1882,7 +1882,7 @@ public class PacketConsumers { if (optionalTextComponent.isPresent()) { Object textComponent = optionalTextComponent.get(); String json = ComponentUtils.minecraftToJson(textComponent); - Map tokens = CraftEngine.instance().imageManager().matchTags(json); + Map tokens = CraftEngine.instance().fontManager().matchTags(json); if (!tokens.isEmpty()) { Component component = AdventureHelper.jsonToComponent(json); for (Map.Entry token : tokens.entrySet()) { @@ -1915,7 +1915,7 @@ public class PacketConsumers { Object textComponent = FastNMS.INSTANCE.field$SynchedEntityData$DataValue$value(packedItem); if (textComponent == Reflections.instance$Component$empty) break; String json = ComponentUtils.minecraftToJson(textComponent); - Map tokens = CraftEngine.instance().imageManager().matchTags(json); + Map tokens = CraftEngine.instance().fontManager().matchTags(json); if (!tokens.isEmpty()) { Component component = AdventureHelper.jsonToComponent(json); for (Map.Entry token : tokens.entrySet()) { @@ -1948,7 +1948,7 @@ public class PacketConsumers { if (optionalTextComponent.isPresent()) { Object textComponent = optionalTextComponent.get(); String json = ComponentUtils.minecraftToJson(textComponent); - Map tokens = CraftEngine.instance().imageManager().matchTags(json); + Map tokens = CraftEngine.instance().fontManager().matchTags(json); if (!tokens.isEmpty()) { Component component = AdventureHelper.jsonToComponent(json); for (Map.Entry token : tokens.entrySet()) { @@ -1981,7 +1981,7 @@ public class PacketConsumers { if (optionalTextComponent.isPresent()) { Object textComponent = optionalTextComponent.get(); String json = ComponentUtils.minecraftToJson(textComponent); - Map tokens = CraftEngine.instance().imageManager().matchTags(json); + Map tokens = CraftEngine.instance().fontManager().matchTags(json); if (!tokens.isEmpty()) { Component component = AdventureHelper.jsonToComponent(json); for (Map.Entry token : tokens.entrySet()) { @@ -2022,7 +2022,7 @@ public class PacketConsumers { displayName = buf.readNbt(false); } outside : if (displayName != null) { - Map tokens = CraftEngine.instance().imageManager().matchTags(displayName.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(displayName.getAsString()); if (tokens.isEmpty()) break outside; Component component = AdventureHelper.tagToComponent(displayName); for (Map.Entry token : tokens.entrySet()) { @@ -2045,7 +2045,7 @@ public class PacketConsumers { } else if (format == 2) { fixed = buf.readNbt(false); if (fixed == null) return; - Map tokens = CraftEngine.instance().imageManager().matchTags(fixed.getAsString()); + Map tokens = CraftEngine.instance().fontManager().matchTags(fixed.getAsString()); if (tokens.isEmpty() && !isChanged) return; if (!tokens.isEmpty()) { Component component = AdventureHelper.tagToComponent(fixed); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20.java index 08c4fab48..a1c2c9831 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20.java @@ -2,7 +2,6 @@ package net.momirealms.craftengine.bukkit.plugin.network.id; import net.momirealms.craftengine.bukkit.plugin.network.PacketIds; import net.momirealms.craftengine.bukkit.util.Reflections; -import net.momirealms.craftengine.core.util.VersionHelper; public class PacketIds1_20 implements PacketIds { diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20_5.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20_5.java index cc5a611fb..ea3437281 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20_5.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/id/PacketIds1_20_5.java @@ -1,7 +1,6 @@ package net.momirealms.craftengine.bukkit.plugin.network.id; import net.momirealms.craftengine.bukkit.plugin.network.PacketIds; -import net.momirealms.craftengine.bukkit.util.Reflections; public class PacketIds1_20_5 implements PacketIds { diff --git a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java index 09eceac63..24d1cda5a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/pack/AbstractPackManager.java @@ -1072,7 +1072,7 @@ public abstract class AbstractPackManager implements PackManager { private void generateFonts(Path generatedPackPath) { // generate image font json - for (Font font : plugin.imageManager().fonts()) { + for (Font font : plugin.fontManager().fonts()) { Key namespacedKey = font.key(); Path fontPath = generatedPackPath.resolve("assets") .resolve(namespacedKey.namespace()) diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/CraftEngine.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/CraftEngine.java index 6634f8462..4c9540d7a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/CraftEngine.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/CraftEngine.java @@ -344,7 +344,7 @@ public abstract class CraftEngine implements Plugin { } @Override - public FontManager imageManager() { + public FontManager fontManager() { return fontManager; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/Plugin.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/Plugin.java index d34729e3d..b7022151b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/Plugin.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/Plugin.java @@ -57,7 +57,7 @@ public interface Plugin { NetworkManager networkManager(); - FontManager imageManager(); + FontManager fontManager(); Config config(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/ImageTag.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/ImageTag.java index 4e726e415..a6d718aea 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/ImageTag.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/ImageTag.java @@ -29,7 +29,7 @@ public class ImageTag implements TagResolver { } String namespace = arguments.popOr("No argument namespace provided").toString(); String id = arguments.popOr("No argument id provided").toString(); - Optional optional = CraftEngine.instance().imageManager().bitmapImageByImageId(Key.of(namespace, id)); + Optional optional = CraftEngine.instance().fontManager().bitmapImageByImageId(Key.of(namespace, id)); if (optional.isPresent()) { if (arguments.hasNext()) { int row = arguments.popOr("No argument row provided").asInt().orElseThrow(() -> ctx.newException("Invalid argument number", arguments)); diff --git a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/ShiftTag.java b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/ShiftTag.java index dc27e9ff0..e5ccf26ae 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/ShiftTag.java +++ b/core/src/main/java/net/momirealms/craftengine/core/plugin/text/minimessage/ShiftTag.java @@ -25,7 +25,7 @@ public class ShiftTag implements TagResolver { String shiftAmount = arguments.popOr("No argument shift provided").toString(); try { int shift = Integer.parseInt(shiftAmount); - return Tag.inserting(AdventureHelper.miniMessage().deserialize(CraftEngine.instance().imageManager().createMiniMessageOffsets(shift))); + return Tag.inserting(AdventureHelper.miniMessage().deserialize(CraftEngine.instance().fontManager().createMiniMessageOffsets(shift))); } catch (NumberFormatException e) { throw ctx.newException("Invalid shift value", arguments); } From 741a01457d5647b406f9f221baf26b726aad6ed0 Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sat, 12 Apr 2025 22:59:31 +0800 Subject: [PATCH 09/10] Update gradle.properties --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index ef4111505..bfc5dfdfd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx1G # Project settings # Rule: [major update].[feature update].[bug fix] -project_version=1.0.0 +project_version=0.0.48 config_version=25 lang_version=4 project_group=net.momirealms From 6329b11dc871715827b3605841a480ca8707038d Mon Sep 17 00:00:00 2001 From: XiaoMoMi Date: Sun, 13 Apr 2025 01:53:07 +0800 Subject: [PATCH 10/10] small changes --- .../momirealms/craftengine/bukkit/font/BukkitFontManager.java | 4 ++-- .../craftengine/bukkit/item/recipe/RecipeEventListener.java | 1 + gradle.properties | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java index 40bd35005..d39ef7e35 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/font/BukkitFontManager.java @@ -103,14 +103,14 @@ public class BukkitFontManager extends AbstractFontManager implements Listener { } } - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) @SuppressWarnings("UnstableApiUsage") public void onChat(AsyncChatDecorateEvent event) { if (!Config.filterChat()) return; this.processChatEvent(event); } - @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true) + @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) @SuppressWarnings("UnstableApiUsage") public void onChatCommand(AsyncChatCommandDecorateEvent event) { if (!Config.filterChat()) return; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java index f0eb1042f..5d4bd2632 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java @@ -343,6 +343,7 @@ public class RecipeEventListener implements Listener { ItemStack itemStack = event.getItem(); if (ItemUtils.isEmpty(itemStack)) return; try { + @SuppressWarnings("unchecked") Optional optionalMCRecipe = FastNMS.INSTANCE.method$RecipeManager$getRecipeFor( BukkitRecipeManager.nmsRecipeManager(), Reflections.instance$RecipeType$CAMPFIRE_COOKING, diff --git a/gradle.properties b/gradle.properties index bfc5dfdfd..d069cdc54 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ org.gradle.jvmargs=-Xmx1G # Project settings # Rule: [major update].[feature update].[bug fix] -project_version=0.0.48 +project_version=0.0.47.1 config_version=25 lang_version=4 project_group=net.momirealms