9
0
mirror of https://github.com/Xiao-MoMi/craft-engine.git synced 2025-12-23 08:59:27 +00:00

添加can-place物品设置,准备重构物品

This commit is contained in:
XiaoMoMi
2025-04-13 17:01:14 +08:00
parent 002876c3e6
commit c7001bc092
25 changed files with 190 additions and 92 deletions

View File

@@ -1,5 +1,6 @@
package net.momirealms.craftengine.bukkit.item;
import com.google.common.collect.ImmutableMap;
import net.momirealms.craftengine.bukkit.plugin.BukkitCraftEngine;
import net.momirealms.craftengine.bukkit.util.MaterialUtils;
import net.momirealms.craftengine.core.item.CustomItem;
@@ -7,57 +8,97 @@ import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.item.ItemSettings;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.modifier.ItemModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.util.Key;
import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
public class BukkitCustomItem implements CustomItem<ItemStack> {
private final Key id;
private final Key materialKey;
private final Material material;
private final List<ItemModifier<ItemStack>> modifiers;
private final List<ItemBehavior> behavior;
private final List<ItemDataModifier<ItemStack>> modifiers;
private final Map<String, ItemDataModifier<ItemStack>> modifierMap;
private final List<ItemDataModifier<ItemStack>> clientBoundModifiers;
private final Map<String, ItemDataModifier<ItemStack>> clientBoundModifierMap;
private final List<ItemBehavior> behaviors;
private final ItemSettings settings;
public BukkitCustomItem(Key id, Key materialKey, Material material, List<ItemModifier<ItemStack>> modifiers, List<ItemBehavior> behavior, ItemSettings settings) {
public BukkitCustomItem(Key id,
Key materialKey,
Material material,
List<ItemDataModifier<ItemStack>> modifiers,
List<ItemDataModifier<ItemStack>> clientBoundModifiers,
List<ItemBehavior> behaviors,
ItemSettings settings) {
this.id = id;
this.material = material;
this.modifiers = modifiers;
this.behavior = behavior;
this.materialKey = materialKey;
this.modifiers = List.copyOf(modifiers);
this.clientBoundModifiers = List.copyOf(clientBoundModifiers);
this.behaviors = List.copyOf(behaviors);
this.settings = settings;
ImmutableMap.Builder<String, ItemDataModifier<ItemStack>> modifierMapBuilder = ImmutableMap.builder();
for (ItemDataModifier<ItemStack> modifier : modifiers) {
modifierMapBuilder.put(modifier.name(), modifier);
}
this.modifierMap = modifierMapBuilder.build();
ImmutableMap.Builder<String, ItemDataModifier<ItemStack>> clientSideModifierMapBuilder = ImmutableMap.builder();
for (ItemDataModifier<ItemStack> modifier : clientBoundModifiers) {
clientSideModifierMapBuilder.put(modifier.name(), modifier);
}
this.clientBoundModifierMap = clientSideModifierMapBuilder.build();
}
@Override
public Key id() {
return id;
return this.id;
}
@Override
public Key material() {
return materialKey;
return this.materialKey;
}
@Override
public List<ItemModifier<ItemStack>> modifiers() {
return modifiers;
public List<ItemDataModifier<ItemStack>> dataModifiers() {
return this.modifiers;
}
@Override
public Map<String, ItemDataModifier<ItemStack>> dataModifierMap() {
return this.modifierMap;
}
@Override
public boolean hasClientBoundDataModifier() {
return !this.clientBoundModifiers.isEmpty();
}
@Override
public List<ItemDataModifier<ItemStack>> clientBoundDataModifiers() {
return this.clientBoundModifiers;
}
@Override
public Map<String, ItemDataModifier<ItemStack>> clientBoundDataModifierMap() {
return this.clientBoundModifierMap;
}
@Override
public ItemStack buildItemStack(ItemBuildContext context, int count) {
ItemStack item = new ItemStack(material);
ItemStack item = new ItemStack(this.material);
if (this.modifiers.isEmpty()) {
return item;
}
Item<ItemStack> wrapped = BukkitCraftEngine.instance().itemManager().wrap(item);
wrapped.count(count);
for (ItemModifier<ItemStack> modifier : this.modifiers) {
for (ItemDataModifier<ItemStack> modifier : this.modifiers) {
modifier.apply(wrapped, context);
}
return wrapped.load();
@@ -70,9 +111,9 @@ public class BukkitCustomItem implements CustomItem<ItemStack> {
@Override
public Item<ItemStack> buildItem(ItemBuildContext context) {
ItemStack item = new ItemStack(material);
ItemStack item = new ItemStack(this.material);
Item<ItemStack> wrapped = BukkitCraftEngine.instance().itemManager().wrap(item);
for (ItemModifier<ItemStack> modifier : modifiers()) {
for (ItemDataModifier<ItemStack> modifier : dataModifiers()) {
modifier.apply(wrapped, context);
}
wrapped.load();
@@ -81,7 +122,7 @@ public class BukkitCustomItem implements CustomItem<ItemStack> {
@Override
public @NotNull List<ItemBehavior> behaviors() {
return this.behavior;
return this.behaviors;
}
public static Builder<ItemStack> builder() {
@@ -92,9 +133,10 @@ public class BukkitCustomItem implements CustomItem<ItemStack> {
private Key id;
private Material material;
private Key materialKey;
private List<ItemBehavior> behavior = List.of();
private final List<ItemBehavior> behaviors = new ArrayList<>();
private ItemSettings settings = ItemSettings.of();
private final List<ItemModifier<ItemStack>> modifiers = new ArrayList<>();
private final List<ItemDataModifier<ItemStack>> modifiers = new ArrayList<>();
private final List<ItemDataModifier<ItemStack>> clientBoundModifiers = new ArrayList<>();
@Override
public Builder<ItemStack> id(Key id) {
@@ -110,26 +152,38 @@ public class BukkitCustomItem implements CustomItem<ItemStack> {
}
@Override
public Builder<ItemStack> modifier(ItemModifier<ItemStack> modifier) {
public Builder<ItemStack> dataModifier(ItemDataModifier<ItemStack> modifier) {
this.modifiers.add(modifier);
return this;
}
@Override
public Builder<ItemStack> modifiers(List<ItemModifier<ItemStack>> list) {
this.modifiers.addAll(list);
public Builder<ItemStack> dataModifiers(List<ItemDataModifier<ItemStack>> modifiers) {
this.modifiers.addAll(modifiers);
return this;
}
@Override
public Builder<ItemStack> clientBoundDataModifier(ItemDataModifier<ItemStack> modifier) {
this.clientBoundModifiers.add(modifier);
return this;
}
@Override
public Builder<ItemStack> clientBoundDataModifiers(List<ItemDataModifier<ItemStack>> modifiers) {
this.clientBoundModifiers.addAll(modifiers);
return null;
}
@Override
public Builder<ItemStack> behavior(ItemBehavior behavior) {
this.behavior= List.of(behavior);
this.behaviors.add(behavior);
return this;
}
@Override
public Builder<ItemStack> behavior(List<ItemBehavior> behaviors) {
this.behavior = behaviors;
public Builder<ItemStack> behaviors(List<ItemBehavior> behaviors) {
this.behaviors.addAll(behaviors);
return this;
}
@@ -142,7 +196,7 @@ public class BukkitCustomItem implements CustomItem<ItemStack> {
@Override
public CustomItem<ItemStack> build() {
this.modifiers.addAll(this.settings.modifiers());
return new BukkitCustomItem(id, materialKey, material, Collections.unmodifiableList(modifiers), behavior, settings);
return new BukkitCustomItem(id, materialKey, material, modifiers, clientBoundModifiers, behaviors, settings);
}
}
}

View File

@@ -235,14 +235,14 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
Key itemModelKey = null;
CustomItem.Builder<ItemStack> itemBuilder = BukkitCustomItem.builder().id(id).material(materialId);
itemBuilder.modifier(new IdModifier<>(id));
itemBuilder.dataModifier(new IdModifier<>(id));
boolean hasItemModelSection = section.containsKey("item-model");
// To get at least one model provider
// Sets some basic model info
if (customModelData != 0) {
itemBuilder.modifier(new CustomModelDataModifier<>(customModelData));
itemBuilder.dataModifier(new CustomModelDataModifier<>(customModelData));
}
// Requires the item to have model before apply item-model
else if (!hasItemModelSection && section.containsKey("model") && VersionHelper.isVersionNewerThan1_21_2()) {
@@ -250,7 +250,7 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
// customize or use the id
itemModelKey = Key.from(section.getOrDefault("item-model", id.toString()).toString());
if (ResourceLocation.isValid(itemModelKey.toString())) {
itemBuilder.modifier(new ItemModelModifier<>(itemModelKey));
itemBuilder.dataModifier(new ItemModelModifier<>(itemModelKey));
} else {
itemModelKey = null;
}
@@ -258,7 +258,7 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
if (hasItemModelSection) {
itemModelKey = Key.from(section.get("item-model").toString());
itemBuilder.modifier(new ItemModelModifier<>(itemModelKey));
itemBuilder.dataModifier(new ItemModelModifier<>(itemModelKey));
}
// Get item behaviors
@@ -270,7 +270,7 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
for (Map<String, Object> behaviorMap : behavior) {
behaviors.add(ItemBehaviors.fromMap(pack, path, id, behaviorMap));
}
itemBuilder.behavior(behaviors);
itemBuilder.behaviors(behaviors);
} else if (behaviorConfig instanceof Map<?, ?>) {
Map<String, Object> behaviorSection = MiscUtils.castToMap(section.get("behavior"), true);
if (behaviorSection != null) {
@@ -284,7 +284,7 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
for (Map.Entry<String, Object> dataEntry : dataSection.entrySet()) {
Optional.ofNullable(dataFunctions.get(dataEntry.getKey())).ifPresent(function -> {
try {
itemBuilder.modifier(function.apply(dataEntry.getValue()));
itemBuilder.dataModifier(function.apply(dataEntry.getValue()));
} catch (IllegalArgumentException e) {
plugin.logger().warn("Invalid data format", e);
}
@@ -292,6 +292,20 @@ public class BukkitItemManager extends AbstractItemManager<ItemStack> {
}
}
// Get item data
Map<String, Object> clientSideDataSection = MiscUtils.castToMap(section.get("client-bound-data"), true);
if (clientSideDataSection != null) {
for (Map.Entry<String, Object> dataEntry : clientSideDataSection.entrySet()) {
Optional.ofNullable(dataFunctions.get(dataEntry.getKey())).ifPresent(function -> {
try {
itemBuilder.clientBoundDataModifier(function.apply(dataEntry.getValue()));
} catch (IllegalArgumentException e) {
plugin.logger().warn("Invalid client bound data format", e);
}
});
}
}
if (section.containsKey("settings")) {
Map<String, Object> settings = MiscUtils.castToMap(section.get("settings"), false);
itemBuilder.settings(ItemSettings.fromMap(settings));

View File

@@ -11,6 +11,7 @@ import net.momirealms.craftengine.bukkit.util.*;
import net.momirealms.craftengine.core.block.ImmutableBlockState;
import net.momirealms.craftengine.core.entity.player.InteractionHand;
import net.momirealms.craftengine.core.entity.player.InteractionResult;
import net.momirealms.craftengine.core.item.CustomItem;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.context.UseOnContext;
@@ -138,7 +139,12 @@ public class ItemEventListener implements Listener {
boolean interactable = InteractUtils.isInteractable(BlockStateUtils.getBlockOwnerId(clickedBlock), bukkitPlayer, clickedBlock.getBlockData(), hitResult, itemInHand);
// do not allow to place block if it's a vanilla block
if (itemInHand.isBlockItem() && itemInHand.isCustomItem()) {
Optional<CustomItem<ItemStack>> optionalCustomItem = itemInHand.getCustomItem();
if (itemInHand.isBlockItem() && optionalCustomItem.isPresent()) {
// it's a custom item, but now it's ignored
if (optionalCustomItem.get().settings().canPlaceRelatedVanillaBlock()) {
return;
}
if (!interactable || player.isSecondaryUseActive()) {
event.setCancelled(true);
}

View File

@@ -1,16 +1,17 @@
package net.momirealms.craftengine.bukkit.plugin.command.feature;
import com.saicone.rtag.RtagItem;
import net.momirealms.craftengine.bukkit.plugin.command.BukkitCommandFeature;
import net.momirealms.craftengine.core.item.ComponentKeys;
import net.momirealms.craftengine.core.plugin.CraftEngine;
import net.momirealms.craftengine.core.plugin.command.CraftEngineCommandManager;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity;
import org.bukkit.entity.Player;
import org.bukkit.entity.Shulker;
import org.bukkit.inventory.ItemStack;
import org.incendo.cloud.Command;
import java.util.Collection;
import java.util.Map;
public class TestCommand extends BukkitCommandFeature<CommandSender> {
@@ -24,16 +25,11 @@ public class TestCommand extends BukkitCommandFeature<CommandSender> {
.senderType(Player.class)
.handler(context -> {
Player player = context.sender();
Location location = player.getLocation();
try {
Collection<Entity> entities = player.getLocation().getNearbyEntities(2,2,2);
for (Entity entity : entities) {
if (entity instanceof Shulker) {
}
}
} catch (Exception e) {
e.printStackTrace();
}
ItemStack itemStack = new ItemStack(Material.STONE);
RtagItem rtagItem = new RtagItem(itemStack);
rtagItem.setComponent(ComponentKeys.CUSTOM_DATA, Map.of("test1", "1"));
rtagItem.setComponent(ComponentKeys.CUSTOM_DATA, Map.of("test2", "2"));
player.getInventory().addItem(rtagItem.load());
});
}

View File

@@ -24,7 +24,7 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
protected static final Map<Key, List<Holder<Key>>> VANILLA_ITEM_TAGS = new HashMap<>();
protected final Map<String, ExternalItemProvider<I>> externalItemProviders = new HashMap<>();
protected final Map<String, Function<Object, ItemModifier<I>>> dataFunctions = new HashMap<>();
protected final Map<String, Function<Object, ItemDataModifier<I>>> dataFunctions = new HashMap<>();
protected final Map<Key, CustomItem<I>> customItems = new HashMap<>();
protected final Map<Key, List<Holder<Key>>> customItemTags;
protected final Map<Key, Map<Integer, Key>> cmdConflictChecker;
@@ -37,7 +37,7 @@ public abstract class AbstractItemManager<I> extends AbstractModelGenerator impl
protected final List<Suggestion> cachedSuggestions = new ArrayList<>();
protected final List<Suggestion> cachedTotemSuggestions = new ArrayList<>();
protected void registerDataFunction(Function<Object, ItemModifier<I>> function, String... alias) {
protected void registerDataFunction(Function<Object, ItemDataModifier<I>> function, String... alias) {
for (String a : alias) {
dataFunctions.put(a, function);
}

View File

@@ -1,23 +1,24 @@
package net.momirealms.craftengine.core.item;
import net.kyori.adventure.key.Key;
import net.momirealms.craftengine.core.util.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();
public static final String ENCHANTMENT_GLINT_OVERRIDE = Key.key("minecraft", "enchantment_glint_override").asString();
public static final String ENCHANTMENTS = Key.key("minecraft", "enchantments").asString();
public static final String STORED_ENCHANTMENTS = Key.key("minecraft", "stored_enchantments").asString();
public static final String UNBREAKABLE = Key.key("minecraft", "unbreakable").asString();
public static final String MAX_STACK_SIZE = Key.key("minecraft", "max_stack_size").asString();
public static final String EQUIPPABLE = Key.key("minecraft", "equippable").asString();
public static final String ITEM_MODEL = Key.key("minecraft", "item_model").asString();
public static final String TOOLTIP_STYLE = Key.key("minecraft", "tooltip_style").asString();
public static final String JUKEBOX_PLAYABLE = Key.key("minecraft", "jukebox_playable").asString();
public static final String TRIM = Key.key("minecraft", "trim").asString();
public static final String REPAIR_COST = Key.key("minecraft", "repair_cost").asString();
public static final String CUSTOM_MODEL_DATA = Key.of("minecraft", "custom_model_data").toString();
public static final String CUSTOM_NAME = Key.of("minecraft", "custom_name").toString();
public static final String ITEM_NAME = Key.of("minecraft", "item_name").toString();
public static final String LORE = Key.of("minecraft", "lore").toString();
public static final String DAMAGE = Key.of("minecraft", "damage").toString();
public static final String MAX_DAMAGE = Key.of("minecraft", "max_damage").toString();
public static final String ENCHANTMENT_GLINT_OVERRIDE = Key.of("minecraft", "enchantment_glint_override").toString();
public static final String ENCHANTMENTS = Key.of("minecraft", "enchantments").toString();
public static final String STORED_ENCHANTMENTS = Key.of("minecraft", "stored_enchantments").toString();
public static final String UNBREAKABLE = Key.of("minecraft", "unbreakable").toString();
public static final String MAX_STACK_SIZE = Key.of("minecraft", "max_stack_size").toString();
public static final String EQUIPPABLE = Key.of("minecraft", "equippable").toString();
public static final String ITEM_MODEL = Key.of("minecraft", "item_model").toString();
public static final String TOOLTIP_STYLE = Key.of("minecraft", "tooltip_style").toString();
public static final String JUKEBOX_PLAYABLE = Key.of("minecraft", "jukebox_playable").toString();
public static final String TRIM = Key.of("minecraft", "trim").toString();
public static final String REPAIR_COST = Key.of("minecraft", "repair_cost").toString();
public static final String CUSTOM_DATA = Key.of("minecraft", "custom_data").toString();
}

View File

@@ -2,12 +2,13 @@ package net.momirealms.craftengine.core.item;
import net.momirealms.craftengine.core.entity.player.Player;
import net.momirealms.craftengine.core.item.behavior.ItemBehavior;
import net.momirealms.craftengine.core.item.modifier.ItemModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.context.ContextHolder;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.Map;
public interface CustomItem<I> extends BuildableItem<I> {
@@ -15,7 +16,15 @@ public interface CustomItem<I> extends BuildableItem<I> {
Key material();
List<ItemModifier<I>> modifiers();
List<ItemDataModifier<I>> dataModifiers();
Map<String, ItemDataModifier<I>> dataModifierMap();
boolean hasClientBoundDataModifier();
List<ItemDataModifier<I>> clientBoundDataModifiers();
Map<String, ItemDataModifier<I>> clientBoundDataModifierMap();
ItemSettings settings();
@@ -37,13 +46,17 @@ public interface CustomItem<I> extends BuildableItem<I> {
Builder<I> material(Key material);
Builder<I> modifiers(List<ItemModifier<I>> modifiers);
Builder<I> dataModifier(ItemDataModifier<I> modifier);
Builder<I> modifier(ItemModifier<I> modifier);
Builder<I> dataModifiers(List<ItemDataModifier<I>> modifiers);
Builder<I> clientBoundDataModifier(ItemDataModifier<I> modifier);
Builder<I> clientBoundDataModifiers(List<ItemDataModifier<I>> modifiers);
Builder<I> behavior(ItemBehavior behavior);
Builder<I> behavior(List<ItemBehavior> behaviors);
Builder<I> behaviors(List<ItemBehavior> behaviors);
Builder<I> settings(ItemSettings settings);

View File

@@ -1,7 +1,7 @@
package net.momirealms.craftengine.core.item;
import net.momirealms.craftengine.core.item.modifier.EquippableModifier;
import net.momirealms.craftengine.core.item.modifier.ItemModifier;
import net.momirealms.craftengine.core.item.modifier.ItemDataModifier;
import net.momirealms.craftengine.core.pack.misc.EquipmentGeneration;
import net.momirealms.craftengine.core.util.Key;
import net.momirealms.craftengine.core.util.MiscUtils;
@@ -19,13 +19,14 @@ public class ItemSettings {
boolean canRepair = true;
List<AnvilRepairItem> anvilRepairItems = List.of();
boolean renameable = true;
boolean canPlaceRelatedVanillaBlock = false;
private ItemSettings() {}
public <I> List<ItemModifier<I>> modifiers() {
ArrayList<ItemModifier<I>> modifiers = new ArrayList<>();
public <I> List<ItemDataModifier<I>> modifiers() {
ArrayList<ItemDataModifier<I>> modifiers = new ArrayList<>();
if (VersionHelper.isVersionNewerThan1_21_2() && this.equipment != null && this.equipment.modernData() != null) modifiers.add(new EquippableModifier<>(this.equipment.modernData()));
// TODO 1.20
// TODO 1.20 leather armor
return modifiers;
}
@@ -45,6 +46,7 @@ public class ItemSettings {
newSettings.canRepair = settings.canRepair;
newSettings.anvilRepairItems = settings.anvilRepairItems;
newSettings.renameable = settings.renameable;
newSettings.canPlaceRelatedVanillaBlock = settings.canPlaceRelatedVanillaBlock;
return newSettings;
}
@@ -60,6 +62,10 @@ public class ItemSettings {
return settings;
}
public boolean canPlaceRelatedVanillaBlock() {
return canPlaceRelatedVanillaBlock;
}
public boolean canRepair() {
return canRepair;
}
@@ -100,6 +106,11 @@ public class ItemSettings {
return this;
}
public ItemSettings canPlaceRelatedVanillaBlock(boolean canPlaceRelatedVanillaBlock) {
this.canPlaceRelatedVanillaBlock = canPlaceRelatedVanillaBlock;
return this;
}
public ItemSettings fuelTime(int fuelTime) {
this.fuelTime = fuelTime;
return this;
@@ -175,6 +186,10 @@ public class ItemSettings {
);
return settings -> settings.equipment(equipment);
}));
registerFactory("can-place", (value -> {
boolean bool = (boolean) value;
return settings -> settings.canPlaceRelatedVanillaBlock(bool);
}));
}
private static void registerFactory(String id, ItemSettings.Modifier.Factory factory) {

View File

@@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.item.ItemBuildContext;
import java.util.Map;
public class ComponentModifier<I> implements ItemModifier<I> {
public class ComponentModifier<I> implements ItemDataModifier<I> {
private final Map<String, Object> arguments;
public ComponentModifier(Map<String, Object> arguments) {

View File

@@ -3,7 +3,7 @@ package net.momirealms.craftengine.core.item.modifier;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
public class CustomModelDataModifier<I> implements ItemModifier<I> {
public class CustomModelDataModifier<I> implements ItemDataModifier<I> {
private final int argument;
public CustomModelDataModifier(int argument) {

View File

@@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.plugin.config.Config;
import net.momirealms.craftengine.core.util.AdventureHelper;
public class DisplayNameModifier<I> implements ItemModifier<I> {
public class DisplayNameModifier<I> implements ItemDataModifier<I> {
private final String argument;
public DisplayNameModifier(String argument) {

View File

@@ -7,7 +7,7 @@ import net.momirealms.craftengine.core.item.ItemKeys;
import java.util.List;
public class EnchantmentModifier<I> implements ItemModifier<I> {
public class EnchantmentModifier<I> implements ItemDataModifier<I> {
private final List<Enchantment> enchantments;
public EnchantmentModifier(List<Enchantment> enchantments) {

View File

@@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.item.EquipmentData;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
public class EquippableModifier<I> implements ItemModifier<I> {
public class EquippableModifier<I> implements ItemDataModifier<I> {
private final EquipmentData data;
public EquippableModifier(EquipmentData data) {

View File

@@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.plugin.CraftEngine;
public class ExternalModifier<I> implements ItemModifier<I> {
public class ExternalModifier<I> implements ItemDataModifier<I> {
private final String id;
private final ExternalItemProvider<I> provider;

View File

@@ -4,7 +4,7 @@ import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.util.Key;
public class IdModifier<I> implements ItemModifier<I> {
public class IdModifier<I> implements ItemDataModifier<I> {
public static final String CRAFT_ENGINE_ID = "craftengine:id";
private final Key argument;

View File

@@ -3,7 +3,7 @@ package net.momirealms.craftengine.core.item.modifier;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
public interface ItemModifier<I> {
public interface ItemDataModifier<I> {
String name();

View File

@@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.util.Key;
public class ItemModelModifier<I> implements ItemModifier<I> {
public class ItemModelModifier<I> implements ItemDataModifier<I> {
private final Key data;
public ItemModelModifier(Key data) {

View File

@@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.plugin.config.Config;
import net.momirealms.craftengine.core.util.AdventureHelper;
public class ItemNameModifier<I> implements ItemModifier<I> {
public class ItemNameModifier<I> implements ItemDataModifier<I> {
private final String argument;
public ItemNameModifier(String argument) {

View File

@@ -8,7 +8,7 @@ import net.momirealms.craftengine.core.util.VersionHelper;
import java.util.Map;
public class JukeboxSongModifier<I> implements ItemModifier<I> {
public class JukeboxSongModifier<I> implements ItemDataModifier<I> {
private final Key song;
public JukeboxSongModifier(Key song) {

View File

@@ -7,7 +7,7 @@ import net.momirealms.craftengine.core.util.AdventureHelper;
import java.util.List;
public class LoreModifier<I> implements ItemModifier<I> {
public class LoreModifier<I> implements ItemDataModifier<I> {
private final List<String> argument;
public LoreModifier(List<String> argument) {

View File

@@ -8,7 +8,7 @@ import net.momirealms.craftengine.core.util.TypeUtils;
import java.util.LinkedHashMap;
import java.util.Map;
public class TagsModifier<I> implements ItemModifier<I> {
public class TagsModifier<I> implements ItemDataModifier<I> {
private final Map<String, Object> arguments;
public TagsModifier(Map<String, Object> arguments) {

View File

@@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
import net.momirealms.craftengine.core.util.Key;
public class TooltipStyleModifier<I> implements ItemModifier<I> {
public class TooltipStyleModifier<I> implements ItemDataModifier<I> {
private final Key argument;
public TooltipStyleModifier(Key argument) {

View File

@@ -7,7 +7,7 @@ import net.momirealms.craftengine.core.util.VersionHelper;
import java.util.Map;
public class TrimModifier<I> implements ItemModifier<I> {
public class TrimModifier<I> implements ItemDataModifier<I> {
private final String material;
private final String pattern;

View File

@@ -3,7 +3,7 @@ package net.momirealms.craftengine.core.item.modifier;
import net.momirealms.craftengine.core.item.Item;
import net.momirealms.craftengine.core.item.ItemBuildContext;
public class UnbreakableModifier<I> implements ItemModifier<I> {
public class UnbreakableModifier<I> implements ItemDataModifier<I> {
private final boolean argument;
public UnbreakableModifier(boolean argument) {

View File

@@ -17,7 +17,6 @@ import net.minecraft.world.phys.shapes.VoxelShape;
import net.momirealms.craftengine.mod.util.NoteBlockUtils;
import net.momirealms.craftengine.shared.ObjectHolder;
import net.momirealms.craftengine.shared.block.*;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
public class CraftEngineBlock