diff --git a/bukkit/loader/src/main/resources/resources/default/configuration/plants.yml b/bukkit/loader/src/main/resources/resources/default/configuration/plants.yml index 89e99122c..953afbe86 100644 --- a/bukkit/loader/src/main/resources/resources/default/configuration/plants.yml +++ b/bukkit/loader/src/main/resources/resources/default/configuration/plants.yml @@ -248,6 +248,7 @@ blocks: - type: set_count add: true count: -1 + - type: swing_hand states: properties: age: 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 a8a39911e..22c58dbbf 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 @@ -88,7 +88,6 @@ public class Reflections { ) ); - public static final Class clazz$ClientboundSetActionBarTextPacket = requireNonNull( ReflectionUtils.getClazz( BukkitReflectionUtils.assembleMCClass("network.protocol.game.ClientboundSetActionBarTextPacket") diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/TagUtils.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/TagUtils.java index 28e6e971e..530ccc248 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/TagUtils.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/util/TagUtils.java @@ -43,11 +43,14 @@ public final class TagUtils { public static Object createUpdateTagsPacket(Map> tags) { Map registriesNetworkPayload = (Map) FastNMS.INSTANCE.method$TagNetworkSerialization$serializeTagsToNetwork(); Map modified = new HashMap<>(); - for (Map.Entry> entry : tags.entrySet()) { - Object existingPayload = registriesNetworkPayload.get(entry.getKey()); - if (existingPayload == null) continue; + for (Map.Entry payload : registriesNetworkPayload.entrySet()) { + List overrides = tags.get(payload.getKey()); + if (overrides == null || overrides.isEmpty()) { + modified.put(payload.getKey(), payload.getValue()); + continue; + } FriendlyByteBuf deserializeBuf = new FriendlyByteBuf(Unpooled.buffer()); - FastNMS.INSTANCE.method$TagNetworkSerialization$NetworkPayload$write(existingPayload, deserializeBuf); + FastNMS.INSTANCE.method$TagNetworkSerialization$NetworkPayload$write(payload.getValue(), deserializeBuf); Map originalTags = deserializeBuf.readMap( FriendlyByteBuf::readUtf, FriendlyByteBuf::readIntIdList @@ -58,7 +61,7 @@ public final class TagUtils { reversedTags.computeIfAbsent(id, k -> new ArrayList<>()).add(tagEntry.getKey()); } } - for (TagEntry tagEntry : entry.getValue()) { + for (TagEntry tagEntry : overrides) { reversedTags.remove(tagEntry.id); for (String tag : tagEntry.tags) { reversedTags.computeIfAbsent(tagEntry.id, k -> new ArrayList<>()).add(tag); @@ -76,7 +79,7 @@ public final class TagUtils { FriendlyByteBuf::writeIntIdList ); Object mergedPayload = FastNMS.INSTANCE.method$TagNetworkSerialization$NetworkPayload$read(serializeBuf); - modified.put(entry.getKey(), mergedPayload); + modified.put(payload.getKey(), mergedPayload); } return FastNMS.INSTANCE.constructor$ClientboundUpdateTagsPacket(modified); }