9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2026-01-04 15:41:38 +00:00
This commit is contained in:
jhqwqmc
2025-11-07 20:46:32 +08:00
parent 58843ecb67
commit 1eb9c05a45
2 changed files with 6 additions and 4 deletions

View File

@@ -59,7 +59,7 @@ public final class BukkitBlockManager extends AbstractBlockManager {
private Map<Integer, List<String>> clientBoundTags = Map.of();
private Map<Integer, List<String>> previousClientBoundTags = Map.of();
// 缓存的原版方块tag包
private Map<Object, List<TagUtils.TagEntry>> cachedUpdateTags;
private List<TagUtils.TagEntry> cachedUpdateTags = List.of();
// 被移除声音的原版方块
private Set<Object> missingPlaceSounds = Set.of();
private Set<Object> missingBreakSounds = Set.of();
@@ -157,7 +157,7 @@ public final class BukkitBlockManager extends AbstractBlockManager {
for (Map.Entry<Integer, List<String>> entry : this.clientBoundTags.entrySet()) {
list.add(new TagUtils.TagEntry(entry.getKey(), entry.getValue()));
}
this.cachedUpdateTags = Map.of(MRegistries.BLOCK, list);
this.cachedUpdateTags = list;
Object packet = TagUtils.createUpdateTagsPacket(Map.of(MRegistries.BLOCK, list));
for (BukkitServerPlayer player : this.plugin.networkManager().onlineUsers()) {
player.sendPacket(packet, false);
@@ -359,7 +359,7 @@ public final class BukkitBlockManager extends AbstractBlockManager {
}
}
public Map<Object, List<TagUtils.TagEntry>> cachedUpdateTags() {
public List<TagUtils.TagEntry> cachedUpdateTags() {
return this.cachedUpdateTags;
}

View File

@@ -1860,6 +1860,8 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
@SuppressWarnings("unchecked")
@Override
public void onPacketSend(NetWorkUser user, NMSPacketEvent event, Object packet) {
List<TagUtils.TagEntry> cachedUpdateTags = BukkitBlockManager.instance().cachedUpdateTags();
if (cachedUpdateTags.isEmpty()) return;
Map<Object, Object> tags;
try {
tags = (Map<Object, Object>) NetworkReflections.field$ClientboundUpdateTagsPacket$tags.get(packet);
@@ -1868,7 +1870,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
return;
}
if (tags.get(MRegistries.BLOCK) == null) return;
event.replacePacket(TagUtils.createUpdateTagsPacket(BukkitBlockManager.instance().cachedUpdateTags(), tags));
event.replacePacket(TagUtils.createUpdateTagsPacket(Map.of(MRegistries.BLOCK, cachedUpdateTags), tags));
}
}