mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-27 10:59:07 +00:00
添加其他物品的名称拦截
This commit is contained in:
@@ -74,10 +74,13 @@ public class ModernNetworkItemHandler implements NetworkItemHandler {
|
||||
public Optional<ItemStack> process() {
|
||||
if (VersionHelper.isOrAbove1_21_5()) {
|
||||
processModernLore();
|
||||
processModernCustomName();
|
||||
processModernItemName();
|
||||
} else {
|
||||
processLore();
|
||||
processCustomName();
|
||||
processItemName();
|
||||
}
|
||||
|
||||
if (this.globalChanged) {
|
||||
CompoundTag customData = Optional.ofNullable(this.item.getNBTComponent(ComponentTypes.CUSTOM_DATA)).map(CompoundTag.class::cast).orElse(new CompoundTag());
|
||||
customData.put(NETWORK_ITEM_TAG, getOrCreateTag());
|
||||
@@ -115,6 +118,56 @@ public class ModernNetworkItemHandler implements NetworkItemHandler {
|
||||
}
|
||||
}
|
||||
|
||||
private void processItemName() {
|
||||
Optional<String> optionalItemName = this.item.itemNameJson();
|
||||
if (optionalItemName.isPresent()) {
|
||||
String line = optionalItemName.get();
|
||||
Map<String, Component> tokens = CraftEngine.instance().fontManager().matchTags(line);
|
||||
if (!tokens.isEmpty()) {
|
||||
this.item.itemNameJson(AdventureHelper.componentToJson(AdventureHelper.replaceText(AdventureHelper.jsonToComponent(line), tokens)));
|
||||
this.globalChanged = true;
|
||||
getOrCreateTag().put(ComponentKeys.ITEM_NAME.asString(), NetworkItemHandler.pack(Operation.ADD, new StringTag(line)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processModernItemName() {
|
||||
Tag nameTag = this.item.getNBTComponent(ComponentTypes.ITEM_NAME);
|
||||
if (nameTag == null) return;
|
||||
String tagStr = nameTag.getAsString();
|
||||
Map<String, Component> tokens = CraftEngine.instance().fontManager().matchTags(tagStr);
|
||||
if (!tokens.isEmpty()) {
|
||||
this.item.setNBTComponent(ComponentKeys.ITEM_NAME, AdventureHelper.componentToNbt(AdventureHelper.replaceText(AdventureHelper.nbtToComponent(nameTag), tokens)));
|
||||
this.globalChanged = true;
|
||||
getOrCreateTag().put(ComponentKeys.ITEM_NAME.asString(), NetworkItemHandler.pack(Operation.ADD, nameTag));
|
||||
}
|
||||
}
|
||||
|
||||
private void processCustomName() {
|
||||
Optional<String> optionalCustomName = this.item.customNameJson();
|
||||
if (optionalCustomName.isPresent()) {
|
||||
String line = optionalCustomName.get();
|
||||
Map<String, Component> tokens = CraftEngine.instance().fontManager().matchTags(line);
|
||||
if (!tokens.isEmpty()) {
|
||||
this.item.customNameJson(AdventureHelper.componentToJson(AdventureHelper.replaceText(AdventureHelper.jsonToComponent(line), tokens)));
|
||||
this.globalChanged = true;
|
||||
getOrCreateTag().put(ComponentKeys.CUSTOM_NAME.asString(), NetworkItemHandler.pack(Operation.ADD, new StringTag(line)));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void processModernCustomName() {
|
||||
Tag nameTag = this.item.getNBTComponent(ComponentTypes.CUSTOM_NAME);
|
||||
if (nameTag == null) return;
|
||||
String tagStr = nameTag.getAsString();
|
||||
Map<String, Component> tokens = CraftEngine.instance().fontManager().matchTags(tagStr);
|
||||
if (!tokens.isEmpty()) {
|
||||
this.item.setNBTComponent(ComponentKeys.CUSTOM_NAME, AdventureHelper.componentToNbt(AdventureHelper.replaceText(AdventureHelper.nbtToComponent(nameTag), tokens)));
|
||||
this.globalChanged = true;
|
||||
getOrCreateTag().put(ComponentKeys.CUSTOM_NAME.asString(), NetworkItemHandler.pack(Operation.ADD, nameTag));
|
||||
}
|
||||
}
|
||||
|
||||
private void processModernLore() {
|
||||
Tag loreTag = this.item.getNBTComponent(ComponentTypes.LORE);
|
||||
if (loreTag == null) return;
|
||||
|
||||
@@ -40,6 +40,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
||||
private static BukkitNetworkManager instance;
|
||||
private static final Map<Class<?>, TriConsumer<NetWorkUser, NMSPacketEvent, Object>> NMS_PACKET_HANDLERS = new HashMap<>();
|
||||
// only for game stage for the moment
|
||||
// todo 优化成 数组
|
||||
private static final Map<Integer, BiConsumer<NetWorkUser, ByteBufPacketEvent>> S2C_BYTE_BUFFER_PACKET_HANDLERS = new HashMap<>();
|
||||
private static final Map<Integer, BiConsumer<NetWorkUser, ByteBufPacketEvent>> C2S_BYTE_BUFFER_PACKET_HANDLERS = new HashMap<>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user