mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2026-01-06 15:52:03 +00:00
添加其他物品的名称拦截
This commit is contained in:
@@ -74,10 +74,13 @@ public class ModernNetworkItemHandler implements NetworkItemHandler {
|
|||||||
public Optional<ItemStack> process() {
|
public Optional<ItemStack> process() {
|
||||||
if (VersionHelper.isOrAbove1_21_5()) {
|
if (VersionHelper.isOrAbove1_21_5()) {
|
||||||
processModernLore();
|
processModernLore();
|
||||||
|
processModernCustomName();
|
||||||
|
processModernItemName();
|
||||||
} else {
|
} else {
|
||||||
processLore();
|
processLore();
|
||||||
|
processCustomName();
|
||||||
|
processItemName();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.globalChanged) {
|
if (this.globalChanged) {
|
||||||
CompoundTag customData = Optional.ofNullable(this.item.getNBTComponent(ComponentTypes.CUSTOM_DATA)).map(CompoundTag.class::cast).orElse(new CompoundTag());
|
CompoundTag customData = Optional.ofNullable(this.item.getNBTComponent(ComponentTypes.CUSTOM_DATA)).map(CompoundTag.class::cast).orElse(new CompoundTag());
|
||||||
customData.put(NETWORK_ITEM_TAG, getOrCreateTag());
|
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() {
|
private void processModernLore() {
|
||||||
Tag loreTag = this.item.getNBTComponent(ComponentTypes.LORE);
|
Tag loreTag = this.item.getNBTComponent(ComponentTypes.LORE);
|
||||||
if (loreTag == null) return;
|
if (loreTag == null) return;
|
||||||
|
|||||||
@@ -40,6 +40,7 @@ public class BukkitNetworkManager implements NetworkManager, Listener, PluginMes
|
|||||||
private static BukkitNetworkManager instance;
|
private static BukkitNetworkManager instance;
|
||||||
private static final Map<Class<?>, TriConsumer<NetWorkUser, NMSPacketEvent, Object>> NMS_PACKET_HANDLERS = new HashMap<>();
|
private static final Map<Class<?>, TriConsumer<NetWorkUser, NMSPacketEvent, Object>> NMS_PACKET_HANDLERS = new HashMap<>();
|
||||||
// only for game stage for the moment
|
// 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>> S2C_BYTE_BUFFER_PACKET_HANDLERS = new HashMap<>();
|
||||||
private static final Map<Integer, BiConsumer<NetWorkUser, ByteBufPacketEvent>> C2S_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