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 2c5fbe6a7..fcc0c2a5a 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 @@ -62,6 +62,10 @@ public abstract class AbstractItemManager extends AbstractModelGenerator impl Map data = MiscUtils.castToMap(obj, false); return new TagsModifier<>(data); }, "tags", "tag", "nbt"); + registerDataFunction((obj) -> { + boolean value = TypeUtils.checkType(obj, Boolean.class); + return new UnbreakableModifier<>(value); + }, "unbreakable"); if (VersionHelper.isVersionNewerThan1_20_5()) { registerDataFunction((obj) -> { String name = TypeUtils.checkType(obj, String.class); diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/context/DirectionalPlaceContext.java b/core/src/main/java/net/momirealms/craftengine/core/item/context/DirectionalPlaceContext.java deleted file mode 100644 index afde21e42..000000000 --- a/core/src/main/java/net/momirealms/craftengine/core/item/context/DirectionalPlaceContext.java +++ /dev/null @@ -1,69 +0,0 @@ -package net.momirealms.craftengine.core.item.context; - -import net.momirealms.craftengine.core.entity.player.InteractionHand; -import net.momirealms.craftengine.core.item.Item; -import net.momirealms.craftengine.core.util.Direction; -import net.momirealms.craftengine.core.world.BlockHitResult; -import net.momirealms.craftengine.core.world.BlockPos; -import net.momirealms.craftengine.core.world.Vec3d; -import net.momirealms.craftengine.core.world.World; - -public class DirectionalPlaceContext extends BlockPlaceContext { - private final Direction direction; - - public DirectionalPlaceContext(World world, BlockPos pos, Direction facing, Item stack, Direction side) { - super(world, null, InteractionHand.MAIN_HAND, stack, new BlockHitResult(Vec3d.atBottomCenterOf(pos), side, pos, false)); - this.direction = facing; - } - - @Override - public BlockPos getClickedPos() { - return this.getHitResult().getBlockPos(); - } - - @Override - public boolean canPlace() { - return this.getLevel().getBlockAt(this.getHitResult().getBlockPos()).canBeReplaced(this); - } - - @Override - public boolean replacingClickedOnBlock() { - return this.canPlace(); - } - - public Direction getNearestLookingDirection() { - return Direction.DOWN; - } - - public Direction[] getNearestLookingDirections() { - return switch (this.direction) { - case UP -> - new Direction[]{Direction.DOWN, Direction.UP, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST}; - case NORTH -> - new Direction[]{Direction.DOWN, Direction.NORTH, Direction.EAST, Direction.WEST, Direction.UP, Direction.SOUTH}; - case SOUTH -> - new Direction[]{Direction.DOWN, Direction.SOUTH, Direction.EAST, Direction.WEST, Direction.UP, Direction.NORTH}; - case WEST -> - new Direction[]{Direction.DOWN, Direction.WEST, Direction.SOUTH, Direction.UP, Direction.NORTH, Direction.EAST}; - case EAST -> - new Direction[]{Direction.DOWN, Direction.EAST, Direction.SOUTH, Direction.UP, Direction.NORTH, Direction.WEST}; - default -> - new Direction[]{Direction.DOWN, Direction.NORTH, Direction.EAST, Direction.SOUTH, Direction.WEST, Direction.UP}; - }; - } - - @Override - public Direction getHorizontalDirection() { - return this.direction.axis() == Direction.Axis.Y ? Direction.NORTH : this.direction; - } - - @Override - public boolean isSecondaryUseActive() { - return false; - } - - @Override - public float getRotation() { - return (float) (this.direction.data2d() * 90); - } -} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/context/UseOnContext.java b/core/src/main/java/net/momirealms/craftengine/core/item/context/UseOnContext.java index 82bd60a38..18b5e4c1f 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/context/UseOnContext.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/context/UseOnContext.java @@ -65,11 +65,11 @@ public class UseOnContext { } public Direction getHorizontalDirection() { - return this.player == null ? Direction.NORTH : this.player.getDirection(); + return this.player.getDirection(); } public boolean isSecondaryUseActive() { - return this.player != null && this.player.isSecondaryUseActive(); + return this.player.isSecondaryUseActive(); } public float getRotation() { 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 a9d49c43a..d38734bdc 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 @@ -8,14 +8,14 @@ import net.momirealms.craftengine.core.util.YamlUtils; import java.util.Map; public class ComponentModifier implements ItemModifier { - private final Map parameters; + private final Map arguments; - public ComponentModifier(Map parameters) { - this.parameters = parameters; + public ComponentModifier(Map arguments) { + this.arguments = arguments; } public ComponentModifier(Section section) { - this.parameters = YamlUtils.sectionToMap(section); + this.arguments = YamlUtils.sectionToMap(section); } @Override @@ -25,7 +25,7 @@ public class ComponentModifier implements ItemModifier { @Override public void apply(Item item, Player player) { - for (Map.Entry entry : parameters.entrySet()) { + for (Map.Entry entry : arguments.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); item.setComponent(key, value); 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 818781117..256bcc1a2 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 @@ -4,10 +4,10 @@ import net.momirealms.craftengine.core.entity.player.Player; import net.momirealms.craftengine.core.item.Item; public class CustomModelDataModifier implements ItemModifier { - private final int parameter; + private final int argument; - public CustomModelDataModifier(int parameter) { - this.parameter = parameter; + public CustomModelDataModifier(int argument) { + this.argument = argument; } @Override @@ -17,6 +17,6 @@ public class CustomModelDataModifier implements ItemModifier { @Override public void apply(Item item, Player player) { - item.customModelData(parameter); + item.customModelData(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 a5a0fd458..0f8cca3c9 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 @@ -7,10 +7,10 @@ import net.momirealms.craftengine.core.plugin.minimessage.PlaceholderTag; import net.momirealms.craftengine.core.util.AdventureHelper; public class DisplayNameModifier implements ItemModifier { - private final String parameter; + private final String argument; - public DisplayNameModifier(String parameter) { - this.parameter = parameter; + public DisplayNameModifier(String argument) { + this.argument = argument; } @Override @@ -21,6 +21,6 @@ public class DisplayNameModifier implements ItemModifier { @Override public void apply(Item item, Player player) { item.displayName(AdventureHelper.componentToJson(AdventureHelper.miniMessage().deserialize( - parameter, ImageTag.instance(), new PlaceholderTag(player)))); + argument, ImageTag.instance(), new PlaceholderTag(player)))); } } 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 34682960c..86f8e9d06 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 @@ -5,10 +5,10 @@ import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.util.Key; public class IdModifier implements ItemModifier { - private final Key parameter; + private final Key argument; - public IdModifier(Key parameter) { - this.parameter = parameter; + public IdModifier(Key argument) { + this.argument = argument; } @Override @@ -18,6 +18,6 @@ public class IdModifier implements ItemModifier { @Override public void apply(Item item, Player player) { - item.setTag(parameter.toString(), "craftengine:id"); + item.setTag(argument.toString(), "craftengine:id"); } } 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 b6007279d..c65286405 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 @@ -7,11 +7,12 @@ import net.momirealms.craftengine.core.plugin.minimessage.PlaceholderTag; import net.momirealms.craftengine.core.util.AdventureHelper; public class ItemNameModifier implements ItemModifier { - private final String parameter; + private final String argument; - public ItemNameModifier(String parameter) { - this.parameter = parameter; + public ItemNameModifier(String argument) { + this.argument = argument; } + @Override public String name() { return "item-name"; @@ -20,6 +21,6 @@ public class ItemNameModifier implements ItemModifier { @Override public void apply(Item item, Player player) { item.itemName(AdventureHelper.componentToJson(AdventureHelper.miniMessage().deserialize( - parameter, ImageTag.instance(), new PlaceholderTag(player)))); + argument, ImageTag.instance(), new PlaceholderTag(player)))); } } 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 72f619170..4bd282dfb 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 @@ -9,10 +9,10 @@ import net.momirealms.craftengine.core.util.AdventureHelper; import java.util.List; public class LoreModifier implements ItemModifier { - private final List parameter; + private final List argument; - public LoreModifier(List parameter) { - this.parameter = parameter; + public LoreModifier(List argument) { + this.argument = argument; } @Override @@ -22,7 +22,7 @@ public class LoreModifier implements ItemModifier { @Override public void apply(Item item, Player player) { - item.lore(parameter.stream().map(it -> AdventureHelper.componentToJson(AdventureHelper.miniMessage().deserialize( + item.lore(argument.stream().map(it -> AdventureHelper.componentToJson(AdventureHelper.miniMessage().deserialize( it, ImageTag.instance(), new PlaceholderTag(player)))).toList()); } } 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 4cb36662f..4ab14a996 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 @@ -9,10 +9,10 @@ import java.util.LinkedHashMap; import java.util.Map; public class TagsModifier implements ItemModifier { - private final Map parameters; + private final Map arguments; - public TagsModifier(Map parameters) { - this.parameters = mapToMap(parameters); + public TagsModifier(Map arguments) { + this.arguments = mapToMap(arguments); } @Override @@ -22,7 +22,7 @@ public class TagsModifier implements ItemModifier { @Override public void apply(Item item, Player player) { - for (Map.Entry entry : parameters.entrySet()) { + for (Map.Entry entry : arguments.entrySet()) { String key = entry.getKey(); Object value = entry.getValue(); item.setTag(value, key); 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 new file mode 100644 index 000000000..421e8555d --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/modifier/UnbreakableModifier.java @@ -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 UnbreakableModifier implements ItemModifier { + private final boolean argument; + + public UnbreakableModifier(boolean argument) { + this.argument = argument; + } + + @Override + public String name() { + return "unbreakable"; + } + + @Override + public void apply(Item item, Player player) { + item.unbreakable(argument); + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/StackedContents.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/StackedContents.java index cf9ff0c43..c6a483ac6 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/StackedContents.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/StackedContents.java @@ -266,9 +266,7 @@ public class StackedContents { private int getConnectionIndex(int itemIndex, int ingredientIndex) { assert itemIndex >= 0 && itemIndex < this.itemCount; - assert ingredientIndex >= 0 && ingredientIndex < this.ingredientCount; - return this.connectionOffset() + itemIndex * this.ingredientCount + ingredientIndex; } @@ -278,25 +276,19 @@ public class StackedContents { private void assign(int itemIndex, int ingredientIndex) { int i = this.getResidualIndex(itemIndex, ingredientIndex); - assert !this.data.get(i); - this.data.set(i); } private void unassign(int itemIndex, int ingredientIndex) { int i = this.getResidualIndex(itemIndex, ingredientIndex); - assert this.data.get(i); - this.data.clear(i); } private int getResidualIndex(int itemIndex, int ingredientIndex) { assert itemIndex >= 0 && itemIndex < this.itemCount; - assert ingredientIndex >= 0 && ingredientIndex < this.ingredientCount; - return this.residualOffset() + itemIndex * this.ingredientCount + ingredientIndex; } @@ -310,7 +302,6 @@ public class StackedContents { private int getVisitedIngredientIndex(int index) { assert index >= 0 && index < this.ingredientCount; - return this.visitedIngredientOffset() + index; }