9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2026-01-04 15:41:38 +00:00

优化visitor

This commit is contained in:
XiaoMoMi
2025-10-12 23:49:46 +08:00
parent 0ffad0621f
commit fd7167d66f
6 changed files with 105 additions and 33 deletions

View File

@@ -227,8 +227,7 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler<ItemSt
public static boolean processModernItemName(Item<ItemStack> item, Supplier<CompoundTag> tag, Context context) {
Tag nameTag = item.getSparrowNBTComponent(ComponentTypes.ITEM_NAME);
if (nameTag == null) return false;
String tagStr = nameTag.getAsString();
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(tagStr);
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(nameTag);
if (!tokens.isEmpty()) {
item.setNBTComponent(ComponentKeys.ITEM_NAME, AdventureHelper.componentToNbt(AdventureHelper.replaceText(AdventureHelper.nbtToComponent(nameTag), tokens, context)));
tag.get().put(ComponentIds.ITEM_NAME, NetworkItemHandler.pack(Operation.ADD, nameTag));
@@ -240,8 +239,7 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler<ItemSt
public static boolean processModernCustomName(Item<ItemStack> item, Supplier<CompoundTag> tag, Context context) {
Tag nameTag = item.getSparrowNBTComponent(ComponentTypes.CUSTOM_NAME);
if (nameTag == null) return false;
String tagStr = nameTag.getAsString();
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(tagStr);
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(nameTag);
if (!tokens.isEmpty()) {
item.setNBTComponent(ComponentKeys.CUSTOM_NAME, AdventureHelper.componentToNbt(AdventureHelper.replaceText(AdventureHelper.nbtToComponent(nameTag), tokens, context)));
tag.get().put(ComponentIds.CUSTOM_NAME, NetworkItemHandler.pack(Operation.ADD, nameTag));
@@ -258,8 +256,7 @@ public final class ModernNetworkItemHandler implements NetworkItemHandler<ItemSt
}
ListTag newLore = new ListTag();
for (Tag tag : listTag) {
String tagStr = tag.getAsString();
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(tagStr);
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(tag);
if (tokens.isEmpty()) {
newLore.add(tag);
} else {

View File

@@ -2509,7 +2509,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
buf.writeVarInt(event.packetID());
Component component = AdventureHelper.tagToComponent(nbt);
if (Config.interceptSystemChat()) {
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString());
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(nbt);
if (!tokens.isEmpty()) {
component = AdventureHelper.replaceText(component, tokens, NetworkTextReplaceContext.of((BukkitServerPlayer) user));
}
@@ -2552,8 +2552,8 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
if (nbt1 == null) return;
Tag nbt2 = buf.readNbt(false);
if (nbt2 == null) return;
Map<String, ComponentProvider> tokens1 = CraftEngine.instance().fontManager().matchTags(nbt1.getAsString());
Map<String, ComponentProvider> tokens2 = CraftEngine.instance().fontManager().matchTags(nbt2.getAsString());
Map<String, ComponentProvider> tokens1 = CraftEngine.instance().fontManager().matchTags(nbt1);
Map<String, ComponentProvider> tokens2 = CraftEngine.instance().fontManager().matchTags(nbt2);
if (tokens1.isEmpty() && tokens2.isEmpty()) return;
event.setChanged(true);
buf.clear();
@@ -2588,7 +2588,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
FriendlyByteBuf buf = event.getBuffer();
Tag nbt = buf.readNbt(false);
if (nbt == null) return;
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString());
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(nbt);
if (tokens.isEmpty()) return;
event.setChanged(true);
buf.clear();
@@ -2621,7 +2621,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
FriendlyByteBuf buf = event.getBuffer();
Tag nbt = buf.readNbt(false);
if (nbt == null) return;
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString());
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(nbt);
if (tokens.isEmpty()) return;
event.setChanged(true);
buf.clear();
@@ -2654,7 +2654,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
FriendlyByteBuf buf = event.getBuffer();
Tag nbt = buf.readNbt(false);
if (nbt == null) return;
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString());
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(nbt);
if (tokens.isEmpty()) return;
event.setChanged(true);
buf.clear();
@@ -2714,7 +2714,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
if (actionType == 0) {
Tag nbt = buf.readNbt(false);
if (nbt == null) return;
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString());
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(nbt);
if (tokens.isEmpty()) return;
float health = buf.readFloat();
int color = buf.readVarInt();
@@ -2733,7 +2733,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
} else if (actionType == 3) {
Tag nbt = buf.readNbt(false);
if (nbt == null) return;
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(nbt.getAsString());
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(nbt);
if (tokens.isEmpty()) return;
event.setChanged(true);
buf.clear();
@@ -2807,9 +2807,9 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
if (prefix == null) return;
Tag suffix = buf.readNbt(false);
if (suffix == null) return;
Map<String, ComponentProvider> tokens1 = CraftEngine.instance().fontManager().matchTags(displayName.getAsString());
Map<String, ComponentProvider> tokens2 = CraftEngine.instance().fontManager().matchTags(prefix.getAsString());
Map<String, ComponentProvider> tokens3 = CraftEngine.instance().fontManager().matchTags(suffix.getAsString());
Map<String, ComponentProvider> tokens1 = CraftEngine.instance().fontManager().matchTags(displayName);
Map<String, ComponentProvider> tokens2 = CraftEngine.instance().fontManager().matchTags(prefix);
Map<String, ComponentProvider> tokens3 = CraftEngine.instance().fontManager().matchTags(suffix);
if (tokens1.isEmpty() && tokens2.isEmpty() && tokens3.isEmpty()) return;
NetworkTextReplaceContext context = NetworkTextReplaceContext.of((BukkitServerPlayer) user);
List<String> entities = method == 0 ? buf.readStringList() : null;
@@ -2870,7 +2870,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
if (optionalNumberFormat) {
int format = buf.readVarInt();
if (format == 0) {
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(displayName.getAsString());
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(displayName);
if (tokens.isEmpty()) return;
event.setChanged(true);
buf.clear();
@@ -2882,7 +2882,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
buf.writeBoolean(true);
buf.writeVarInt(0);
} else if (format == 1) {
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(displayName.getAsString());
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(displayName);
if (tokens.isEmpty()) return;
Tag style = buf.readNbt(false);
event.setChanged(true);
@@ -2898,8 +2898,8 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
} else if (format == 2) {
Tag fixed = buf.readNbt(false);
if (fixed == null) return;
Map<String, ComponentProvider> tokens1 = CraftEngine.instance().fontManager().matchTags(displayName.getAsString());
Map<String, ComponentProvider> tokens2 = CraftEngine.instance().fontManager().matchTags(fixed.getAsString());
Map<String, ComponentProvider> tokens1 = CraftEngine.instance().fontManager().matchTags(displayName);
Map<String, ComponentProvider> tokens2 = CraftEngine.instance().fontManager().matchTags(fixed);
if (tokens1.isEmpty() && tokens2.isEmpty()) return;
event.setChanged(true);
buf.clear();
@@ -2913,7 +2913,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
buf.writeNbt(tokens2.isEmpty() ? fixed : AdventureHelper.componentToTag(AdventureHelper.replaceText(AdventureHelper.tagToComponent(fixed), tokens2, NetworkTextReplaceContext.of((BukkitServerPlayer) user))), false);
}
} else {
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(displayName.getAsString());
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(displayName);
if (tokens.isEmpty()) return;
event.setChanged(true);
buf.clear();
@@ -2945,7 +2945,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
}
outside:
if (displayName != null) {
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(displayName.getAsString());
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(displayName);
if (tokens.isEmpty()) break outside;
Component component = AdventureHelper.tagToComponent(displayName);
component = AdventureHelper.replaceText(component, tokens, NetworkTextReplaceContext.of(serverPlayer));
@@ -2966,7 +2966,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
} else if (format == 2) {
fixed = buf.readNbt(false);
if (fixed == null) return;
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(fixed.getAsString());
Map<String, ComponentProvider> tokens = CraftEngine.instance().fontManager().matchTags(fixed);
if (tokens.isEmpty() && !isChanged) return;
if (!tokens.isEmpty()) {
Component component = AdventureHelper.tagToComponent(fixed);