diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java index 6d32b362d..0ccf7e0fb 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitCustomItem.java @@ -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 { private final Key id; private final Key materialKey; private final Material material; - private final List> modifiers; - private final List behavior; + private final List> modifiers; + private final Map> modifierMap; + private final List> clientBoundModifiers; + private final Map> clientBoundModifierMap; + private final List behaviors; private final ItemSettings settings; - public BukkitCustomItem(Key id, Key materialKey, Material material, List> modifiers, List behavior, ItemSettings settings) { + public BukkitCustomItem(Key id, + Key materialKey, + Material material, + List> modifiers, + List> clientBoundModifiers, + List 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> modifierMapBuilder = ImmutableMap.builder(); + for (ItemDataModifier modifier : modifiers) { + modifierMapBuilder.put(modifier.name(), modifier); + } + this.modifierMap = modifierMapBuilder.build(); + ImmutableMap.Builder> clientSideModifierMapBuilder = ImmutableMap.builder(); + for (ItemDataModifier 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> modifiers() { - return modifiers; + public List> dataModifiers() { + return this.modifiers; + } + + @Override + public Map> dataModifierMap() { + return this.modifierMap; + } + + @Override + public boolean hasClientBoundDataModifier() { + return !this.clientBoundModifiers.isEmpty(); + } + + @Override + public List> clientBoundDataModifiers() { + return this.clientBoundModifiers; + } + + @Override + public Map> 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 wrapped = BukkitCraftEngine.instance().itemManager().wrap(item); wrapped.count(count); - for (ItemModifier modifier : this.modifiers) { + for (ItemDataModifier modifier : this.modifiers) { modifier.apply(wrapped, context); } return wrapped.load(); @@ -70,9 +111,9 @@ public class BukkitCustomItem implements CustomItem { @Override public Item buildItem(ItemBuildContext context) { - ItemStack item = new ItemStack(material); + ItemStack item = new ItemStack(this.material); Item wrapped = BukkitCraftEngine.instance().itemManager().wrap(item); - for (ItemModifier modifier : modifiers()) { + for (ItemDataModifier modifier : dataModifiers()) { modifier.apply(wrapped, context); } wrapped.load(); @@ -81,7 +122,7 @@ public class BukkitCustomItem implements CustomItem { @Override public @NotNull List behaviors() { - return this.behavior; + return this.behaviors; } public static Builder builder() { @@ -92,9 +133,10 @@ public class BukkitCustomItem implements CustomItem { private Key id; private Material material; private Key materialKey; - private List behavior = List.of(); + private final List behaviors = new ArrayList<>(); private ItemSettings settings = ItemSettings.of(); - private final List> modifiers = new ArrayList<>(); + private final List> modifiers = new ArrayList<>(); + private final List> clientBoundModifiers = new ArrayList<>(); @Override public Builder id(Key id) { @@ -110,26 +152,38 @@ public class BukkitCustomItem implements CustomItem { } @Override - public Builder modifier(ItemModifier modifier) { + public Builder dataModifier(ItemDataModifier modifier) { this.modifiers.add(modifier); return this; } @Override - public Builder modifiers(List> list) { - this.modifiers.addAll(list); + public Builder dataModifiers(List> modifiers) { + this.modifiers.addAll(modifiers); return this; } + @Override + public Builder clientBoundDataModifier(ItemDataModifier modifier) { + this.clientBoundModifiers.add(modifier); + return this; + } + + @Override + public Builder clientBoundDataModifiers(List> modifiers) { + this.clientBoundModifiers.addAll(modifiers); + return null; + } + @Override public Builder behavior(ItemBehavior behavior) { - this.behavior= List.of(behavior); + this.behaviors.add(behavior); return this; } @Override - public Builder behavior(List behaviors) { - this.behavior = behaviors; + public Builder behaviors(List behaviors) { + this.behaviors.addAll(behaviors); return this; } @@ -142,7 +196,7 @@ public class BukkitCustomItem implements CustomItem { @Override public CustomItem 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); } } } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java index ab17f6790..ff9bc20c4 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/BukkitItemManager.java @@ -235,14 +235,14 @@ public class BukkitItemManager extends AbstractItemManager { Key itemModelKey = null; CustomItem.Builder 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 { // 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 { 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 { for (Map behaviorMap : behavior) { behaviors.add(ItemBehaviors.fromMap(pack, path, id, behaviorMap)); } - itemBuilder.behavior(behaviors); + itemBuilder.behaviors(behaviors); } else if (behaviorConfig instanceof Map) { Map behaviorSection = MiscUtils.castToMap(section.get("behavior"), true); if (behaviorSection != null) { @@ -284,7 +284,7 @@ public class BukkitItemManager extends AbstractItemManager { for (Map.Entry 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 { } } + // Get item data + Map clientSideDataSection = MiscUtils.castToMap(section.get("client-bound-data"), true); + if (clientSideDataSection != null) { + for (Map.Entry 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 settings = MiscUtils.castToMap(section.get("settings"), false); itemBuilder.settings(ItemSettings.fromMap(settings)); diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ItemEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ItemEventListener.java index f10b37e8a..e5ae2d0ad 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ItemEventListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/ItemEventListener.java @@ -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> 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); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TestCommand.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TestCommand.java index 834abb7b1..0d5724a59 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TestCommand.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/feature/TestCommand.java @@ -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 { @@ -24,16 +25,11 @@ public class TestCommand extends BukkitCommandFeature { .senderType(Player.class) .handler(context -> { Player player = context.sender(); - Location location = player.getLocation(); - try { - Collection 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()); }); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java index 12c56a597..bcc2ffa4a 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/AbstractItemManager.java @@ -24,7 +24,7 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl protected static final Map>> VANILLA_ITEM_TAGS = new HashMap<>(); protected final Map> externalItemProviders = new HashMap<>(); - protected final Map>> dataFunctions = new HashMap<>(); + protected final Map>> dataFunctions = new HashMap<>(); protected final Map> customItems = new HashMap<>(); protected final Map>> customItemTags; protected final Map> cmdConflictChecker; @@ -37,7 +37,7 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl protected final List cachedSuggestions = new ArrayList<>(); protected final List cachedTotemSuggestions = new ArrayList<>(); - protected void registerDataFunction(Function> function, String... alias) { + protected void registerDataFunction(Function> function, String... alias) { for (String a : alias) { dataFunctions.put(a, function); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ComponentKeys.java b/core/src/main/java/net/momirealms/craftengine/core/item/ComponentKeys.java index 07779468a..f0205d6ed 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ComponentKeys.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ComponentKeys.java @@ -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(); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java b/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java index 916f7a510..9bdde3010 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/CustomItem.java @@ -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 extends BuildableItem { @@ -15,7 +16,15 @@ public interface CustomItem extends BuildableItem { Key material(); - List> modifiers(); + List> dataModifiers(); + + Map> dataModifierMap(); + + boolean hasClientBoundDataModifier(); + + List> clientBoundDataModifiers(); + + Map> clientBoundDataModifierMap(); ItemSettings settings(); @@ -37,13 +46,17 @@ public interface CustomItem extends BuildableItem { Builder material(Key material); - Builder modifiers(List> modifiers); + Builder dataModifier(ItemDataModifier modifier); - Builder modifier(ItemModifier modifier); + Builder dataModifiers(List> modifiers); + + Builder clientBoundDataModifier(ItemDataModifier modifier); + + Builder clientBoundDataModifiers(List> modifiers); Builder behavior(ItemBehavior behavior); - Builder behavior(List behaviors); + Builder behaviors(List behaviors); Builder settings(ItemSettings settings); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java index 9a2106eaf..3e5897b11 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemSettings.java @@ -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 anvilRepairItems = List.of(); boolean renameable = true; + boolean canPlaceRelatedVanillaBlock = false; private ItemSettings() {} - public List> modifiers() { - ArrayList> modifiers = new ArrayList<>(); + public List> modifiers() { + ArrayList> 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) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentModifier.java index af953405c..384cc34b6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ComponentModifier.java @@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.item.ItemBuildContext; import java.util.Map; -public class ComponentModifier implements ItemModifier { +public class ComponentModifier implements ItemDataModifier { private final Map arguments; public ComponentModifier(Map arguments) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java index 806faf77e..31a0b3d0b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/CustomModelDataModifier.java @@ -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 implements ItemModifier { +public class CustomModelDataModifier implements ItemDataModifier { private final int argument; public CustomModelDataModifier(int argument) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/DisplayNameModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/DisplayNameModifier.java index b0c1a95cd..8aa5d2c20 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/DisplayNameModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/DisplayNameModifier.java @@ -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 implements ItemModifier { +public class DisplayNameModifier implements ItemDataModifier { private final String argument; public DisplayNameModifier(String argument) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentModifier.java index ba9aefb51..f33382b3b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EnchantmentModifier.java @@ -7,7 +7,7 @@ import net.momirealms.craftengine.core.item.ItemKeys; import java.util.List; -public class EnchantmentModifier implements ItemModifier { +public class EnchantmentModifier implements ItemDataModifier { private final List enchantments; public EnchantmentModifier(List enchantments) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java index 375ae9646..ddc3aafff 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/EquippableModifier.java @@ -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 implements ItemModifier { +public class EquippableModifier implements ItemDataModifier { private final EquipmentData data; public EquippableModifier(EquipmentData data) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ExternalModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ExternalModifier.java index 296810e37..0cf95a6e1 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ExternalModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ExternalModifier.java @@ -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 implements ItemModifier { +public class ExternalModifier implements ItemDataModifier { private final String id; private final ExternalItemProvider provider; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/IdModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/IdModifier.java index ba00849b2..1a2e35715 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/IdModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/IdModifier.java @@ -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 implements ItemModifier { +public class IdModifier implements ItemDataModifier { public static final String CRAFT_ENGINE_ID = "craftengine:id"; private final Key argument; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemDataModifier.java similarity index 86% rename from core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModifier.java rename to core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemDataModifier.java index d98c3992a..c9ce5259f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemDataModifier.java @@ -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 { +public interface ItemDataModifier { String name(); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java index 973badeee..5fb400aa1 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemModelModifier.java @@ -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 implements ItemModifier { +public class ItemModelModifier implements ItemDataModifier { private final Key data; public ItemModelModifier(Key data) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java index 624941d51..ba438cc9f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/ItemNameModifier.java @@ -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 implements ItemModifier { +public class ItemNameModifier implements ItemDataModifier { private final String argument; public ItemNameModifier(String argument) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/JukeboxSongModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/JukeboxSongModifier.java index 6c4aa4080..04ebde7e7 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/JukeboxSongModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/JukeboxSongModifier.java @@ -8,7 +8,7 @@ import net.momirealms.craftengine.core.util.VersionHelper; import java.util.Map; -public class JukeboxSongModifier implements ItemModifier { +public class JukeboxSongModifier implements ItemDataModifier { private final Key song; public JukeboxSongModifier(Key song) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/LoreModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/LoreModifier.java index 7d8e5d1ae..356b09c83 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/LoreModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/LoreModifier.java @@ -7,7 +7,7 @@ import net.momirealms.craftengine.core.util.AdventureHelper; import java.util.List; -public class LoreModifier implements ItemModifier { +public class LoreModifier implements ItemDataModifier { private final List argument; public LoreModifier(List argument) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java index 06942fa79..f3744d975 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TagsModifier.java @@ -8,7 +8,7 @@ import net.momirealms.craftengine.core.util.TypeUtils; import java.util.LinkedHashMap; import java.util.Map; -public class TagsModifier implements ItemModifier { +public class TagsModifier implements ItemDataModifier { private final Map arguments; public TagsModifier(Map arguments) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java index dafcde51e..9bf55c19e 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TooltipStyleModifier.java @@ -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 implements ItemModifier { +public class TooltipStyleModifier implements ItemDataModifier { private final Key argument; public TooltipStyleModifier(Key argument) { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java index 09086a956..ed560d4af 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/TrimModifier.java @@ -7,7 +7,7 @@ import net.momirealms.craftengine.core.util.VersionHelper; import java.util.Map; -public class TrimModifier implements ItemModifier { +public class TrimModifier implements ItemDataModifier { private final String material; private final String pattern; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java index 90cc19fba..20c998cd4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java @@ -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 implements ItemModifier { +public class UnbreakableModifier implements ItemDataModifier { private final boolean argument; public UnbreakableModifier(boolean argument) { diff --git a/server-mod/src/main/java/net/momirealms/craftengine/mod/CraftEngineBlock.java b/server-mod/src/main/java/net/momirealms/craftengine/mod/CraftEngineBlock.java index 200eeb700..f7d481ee7 100644 --- a/server-mod/src/main/java/net/momirealms/craftengine/mod/CraftEngineBlock.java +++ b/server-mod/src/main/java/net/momirealms/craftengine/mod/CraftEngineBlock.java @@ -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