mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-27 10:59:07 +00:00
feat(item): 添加物品名称属性- 在 Item 接口中新增 itemName 方法用于获取和设置物品名称- 在 ItemFactory 接口中添加对应的抽象方法
- 实现 UniversalItemFactory 和 ComponentItemFactory 中的物品名称相关方法 - 在 AbstractItem 中实现新的物品名称相关方法 - 更新 AbstractItemManager 以支持物品名称属性
This commit is contained in:
@@ -84,6 +84,11 @@ public class AbstractItem<W extends ItemWrapper<I>, I> implements Item<I> {
|
||||
return this.factory.displayName(this.item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<String> itemName() {
|
||||
return this.factory.itemName(this.item);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item<I> lore(List<String> lore) {
|
||||
this.factory.lore(this.item, lore);
|
||||
@@ -111,6 +116,11 @@ public class AbstractItem<W extends ItemWrapper<I>, I> implements Item<I> {
|
||||
this.factory.displayName(this.item, displayName);
|
||||
return this;
|
||||
}
|
||||
@Override
|
||||
public Item<I> itemName(String itemName) {
|
||||
this.factory.itemName(this.item, itemName);
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Item<I> skull(String data) {
|
||||
|
||||
@@ -49,6 +49,14 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
|
||||
String name = TypeUtils.checkType(obj, String.class);
|
||||
return new DisplayNameModifier<>(name);
|
||||
}, "name", "display-name", "custom-name");
|
||||
registerDataFunction((obj) -> {
|
||||
String name = TypeUtils.checkType(obj, String.class);
|
||||
return new ItemNameModifier<>(name);
|
||||
}, "item-name");
|
||||
registerDataFunction((obj) -> {
|
||||
String name = TypeUtils.checkType(obj, String.class);
|
||||
return new ItemNameModifier<>(name);
|
||||
}, "item-name");
|
||||
registerDataFunction((obj) -> {
|
||||
@SuppressWarnings("unchecked")
|
||||
List<String> name = (List<String>) TypeUtils.checkType(obj, List.class);
|
||||
|
||||
@@ -5,6 +5,7 @@ import net.kyori.adventure.key.Key;
|
||||
public class ComponentKeys {
|
||||
public static final String CUSTOM_MODEL_DATA = Key.key("minecraft", "custom_model_data").asString();
|
||||
public static final String CUSTOM_NAME = Key.key("minecraft", "custom_name").asString();
|
||||
public static final String ITEM_NAME = Key.key("minecraft", "item_name").asString();
|
||||
public static final String LORE = Key.key("minecraft", "lore").asString();
|
||||
public static final String DAMAGE = Key.key("minecraft", "damage").asString();
|
||||
public static final String MAX_DAMAGE = Key.key("minecraft", "max_damage").asString();
|
||||
|
||||
@@ -42,6 +42,10 @@ public interface Item<I> {
|
||||
|
||||
Optional<String> displayName();
|
||||
|
||||
Item<I> itemName(String itemName);
|
||||
|
||||
Optional<String> itemName();
|
||||
|
||||
Item<I> lore(List<String> lore);
|
||||
|
||||
Optional<List<String>> lore();
|
||||
|
||||
@@ -53,6 +53,10 @@ public abstract class ItemFactory<P extends Plugin, W extends ItemWrapper<I>, I>
|
||||
|
||||
protected abstract Optional<String> displayName(ItemWrapper<I> item);
|
||||
|
||||
protected abstract void itemName(ItemWrapper<I> item, String json);
|
||||
|
||||
protected abstract Optional<String> itemName(ItemWrapper<I> item);
|
||||
|
||||
protected abstract void skull(ItemWrapper<I> item, String skullData);
|
||||
|
||||
protected abstract Optional<List<String>> lore(ItemWrapper<I> item);
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package net.momirealms.craftengine.core.item.modifier;
|
||||
|
||||
import net.momirealms.craftengine.core.entity.player.Player;
|
||||
import net.momirealms.craftengine.core.item.Item;
|
||||
import net.momirealms.craftengine.core.plugin.minimessage.ImageTag;
|
||||
import net.momirealms.craftengine.core.plugin.minimessage.PlaceholderTag;
|
||||
import net.momirealms.craftengine.core.util.AdventureHelper;
|
||||
|
||||
public class ItemNameModifier<I> implements ItemModifier<I> {
|
||||
private final String parameter;
|
||||
|
||||
public ItemNameModifier(String parameter) {
|
||||
this.parameter = parameter;
|
||||
}
|
||||
@Override
|
||||
public String name() {
|
||||
return "item-name";
|
||||
}
|
||||
|
||||
@Override
|
||||
public void apply(Item<I> item, Player player) {
|
||||
item.itemName(AdventureHelper.componentToJson(AdventureHelper.miniMessage().deserialize(
|
||||
parameter, ImageTag.instance(), new PlaceholderTag(player))));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user