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 1bc0a1983..d4124a9fc 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 @@ -22,7 +22,10 @@ import net.momirealms.craftengine.core.item.recipe.UniqueIdItem; import net.momirealms.craftengine.core.pack.AbstractPackManager; import net.momirealms.craftengine.core.plugin.config.Config; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; -import net.momirealms.craftengine.core.util.*; +import net.momirealms.craftengine.core.util.GsonHelper; +import net.momirealms.craftengine.core.util.Key; +import net.momirealms.craftengine.core.util.UniqueKey; +import net.momirealms.craftengine.core.util.VersionHelper; import org.bukkit.Bukkit; import org.bukkit.event.HandlerList; import org.bukkit.inventory.ItemStack; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java index 9ff3d186c..061181d48 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/item/recipe/RecipeEventListener.java @@ -643,6 +643,7 @@ public class RecipeEventListener implements Listener { } Player player = InventoryUtils.getPlayerFromInventoryEvent(event); BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player); + // todo shift点击应该更好地处理,包括function执行次数也是 if (craftingTableRecipe.hasVisualResult()) { if (event.isShiftClick()) { event.setCancelled(true); @@ -651,7 +652,7 @@ public class RecipeEventListener implements Listener { CraftingInput input = getCraftingInput(inventory); inventory.setResult(craftingTableRecipe.assemble(input, ItemBuildContext.of(serverPlayer))); } - Function[] functions = craftingTableRecipe.craftingFunctions(); + Function[] functions = craftingTableRecipe.functions(); if (functions != null) { PlayerOptionalContext context = PlayerOptionalContext.of(serverPlayer); for (Function function : functions) { @@ -660,6 +661,53 @@ public class RecipeEventListener implements Listener { } } + @EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST) + public void onSmithingFinish(SmithItemEvent event) { + if (!Config.enableRecipeSystem() || !VersionHelper.PREMIUM) return; + org.bukkit.inventory.Recipe recipe = event.getInventory().getRecipe(); + if (recipe instanceof SmithingTransformRecipe transformRecipe) { + Key recipeId = Key.of(transformRecipe.getKey().namespace(), transformRecipe.getKey().value()); + Optional> optionalRecipe = this.recipeManager.recipeById(recipeId); + // 也许是其他插件注册的配方,直接无视 + if (optionalRecipe.isEmpty() || !(optionalRecipe.get() instanceof CustomSmithingTransformRecipe smithingRecipe)) { + return; + } + SmithingInventory inventory = event.getInventory(); + Player player = InventoryUtils.getPlayerFromInventoryEvent(event); + BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player); + if (smithingRecipe.hasVisualResult()) { + if (event.isShiftClick()) { + event.setCancelled(true); + return; + } + SmithingInput input = getSmithingInput(inventory); + inventory.setResult(smithingRecipe.assemble(input, ItemBuildContext.of(serverPlayer))); + } + Function[] functions = smithingRecipe.functions(); + if (functions != null) { + PlayerOptionalContext context = PlayerOptionalContext.of(serverPlayer); + for (Function function : functions) { + function.run(context); + } + } + } else if (recipe instanceof SmithingTrimRecipe trimRecipe) { + Key recipeId = Key.of(trimRecipe.getKey().namespace(), trimRecipe.getKey().value()); + Optional> optionalRecipe = this.recipeManager.recipeById(recipeId); + if (optionalRecipe.isEmpty() || !(optionalRecipe.get() instanceof CustomSmithingTrimRecipe smithingRecipe)) { + return; + } + Player player = InventoryUtils.getPlayerFromInventoryEvent(event); + BukkitServerPlayer serverPlayer = BukkitAdaptors.adapt(player); + Function[] functions = smithingRecipe.functions(); + if (functions != null) { + PlayerOptionalContext context = PlayerOptionalContext.of(serverPlayer); + for (Function function : functions) { + function.run(context); + } + } + } + } + private CraftingInput getCraftingInput(CraftingInventory inventory) { ItemStack[] ingredients = inventory.getMatrix(); List> uniqueIdItems = new ArrayList<>(); @@ -712,7 +760,6 @@ public class RecipeEventListener implements Listener { event.setResult(null); return; } - SmithingInput input = getSmithingInput(inventory); if (smithingTrimRecipe.matches(input)) { ItemStack result = smithingTrimRecipe.assemble(getSmithingInput(inventory), itemBuildContext); @@ -736,11 +783,19 @@ public class RecipeEventListener implements Listener { event.setResult(null); return; } + Player player = InventoryUtils.getPlayerFromInventoryEvent(event); + ItemBuildContext itemBuildContext = ItemBuildContext.of(BukkitAdaptors.adapt(player)); + if (!smithingTransformRecipe.canUse(itemBuildContext)) { + event.setResult(null); + return; + } SmithingInput input = getSmithingInput(inventory); if (smithingTransformRecipe.matches(input)) { - Player player = InventoryUtils.getPlayerFromInventoryEvent(event); - ItemStack processed = smithingTransformRecipe.assemble(input, ItemBuildContext.of(BukkitAdaptors.adapt(player))); - event.setResult(processed); + if (smithingTransformRecipe.hasVisualResult() && VersionHelper.PREMIUM) { + event.setResult(smithingTransformRecipe.assembleVisual(input, itemBuildContext)); + } else { + event.setResult(smithingTransformRecipe.assemble(input, itemBuildContext)); + } } else { event.setResult(null); } diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java index 5e64e98cf..7ac528244 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/command/BukkitCommandManager.java @@ -6,8 +6,6 @@ import net.momirealms.craftengine.bukkit.plugin.command.feature.*; import net.momirealms.craftengine.core.plugin.command.AbstractCommandManager; import net.momirealms.craftengine.core.plugin.command.CommandFeature; import net.momirealms.craftengine.core.plugin.command.sender.Sender; -import net.momirealms.craftengine.core.util.ReflectionUtils; -import net.momirealms.craftengine.core.util.VersionHelper; import org.bukkit.command.CommandSender; import org.incendo.cloud.SenderMapper; import org.incendo.cloud.bukkit.CloudBukkitCapabilities; diff --git a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java index 3c5d6e10d..3e1f8e548 100644 --- a/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java +++ b/bukkit/src/main/java/net/momirealms/craftengine/bukkit/plugin/network/BukkitNetworkManager.java @@ -119,7 +119,6 @@ import java.io.IOException; import java.nio.charset.StandardCharsets; import java.util.*; import java.util.concurrent.ConcurrentHashMap; -import java.util.function.BiConsumer; import java.util.function.BiFunction; public class BukkitNetworkManager implements NetworkManager, Listener, PluginMessageListener { diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java b/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java index d3a86d4f2..f408f7e4c 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/ItemManager.java @@ -11,7 +11,6 @@ import net.momirealms.craftengine.core.pack.model.ModernItemModel; import net.momirealms.craftengine.core.pack.model.generation.ModelGenerator; import net.momirealms.craftengine.core.plugin.Manageable; import net.momirealms.craftengine.core.plugin.config.ConfigParser; -import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.UniqueKey; import org.incendo.cloud.suggestion.Suggestion; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractedFixedResultRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractedFixedResultRecipe.java index fa9d8a674..fa72950bc 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractedFixedResultRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/AbstractedFixedResultRecipe.java @@ -5,7 +5,7 @@ import net.momirealms.craftengine.core.item.recipe.input.RecipeInput; import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult; import net.momirealms.craftengine.core.util.Key; -public abstract class AbstractedFixedResultRecipe extends AbstractRecipe { +public abstract class AbstractedFixedResultRecipe extends AbstractRecipe implements FixedResultRecipe { protected CustomRecipeResult result; public AbstractedFixedResultRecipe(Key id, boolean showNotification, CustomRecipeResult result) { @@ -13,10 +13,7 @@ public abstract class AbstractedFixedResultRecipe extends AbstractRecipe { this.result = result; } - public T result(ItemBuildContext context) { - return this.result.buildItemStack(context); - } - + @Override public CustomRecipeResult result() { return this.result; } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/ConditionalRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/ConditionalRecipe.java index fd0a8b649..911301b06 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/ConditionalRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/ConditionalRecipe.java @@ -2,7 +2,7 @@ package net.momirealms.craftengine.core.item.recipe; import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; -public interface ConditionalRecipe { +public interface ConditionalRecipe extends Recipe { boolean canUse(final PlayerOptionalContext context); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomCraftingTableRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomCraftingTableRecipe.java index 13783dabc..829cb0563 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomCraftingTableRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomCraftingTableRecipe.java @@ -1,8 +1,5 @@ package net.momirealms.craftengine.core.item.recipe; -import net.momirealms.craftengine.core.item.Item; -import net.momirealms.craftengine.core.item.ItemBuildContext; -import net.momirealms.craftengine.core.item.recipe.input.RecipeInput; import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; @@ -10,7 +7,8 @@ import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.util.Key; import org.jetbrains.annotations.Nullable; -public abstract class CustomCraftingTableRecipe extends AbstractGroupedRecipe implements ConditionalRecipe { +public abstract class CustomCraftingTableRecipe extends AbstractGroupedRecipe + implements ConditionalRecipe, VisualResultRecipe, FunctionalRecipe { protected final CraftingRecipeCategory category; private final CustomRecipeResult visualResult; private final Function[] craftingFunctions; @@ -38,7 +36,7 @@ public abstract class CustomCraftingTableRecipe extends AbstractGroupedRecipe } public CraftingRecipeCategory category() { - return category; + return this.category; } @Override @@ -46,31 +44,13 @@ public abstract class CustomCraftingTableRecipe extends AbstractGroupedRecipe return RecipeType.CRAFTING; } + @Override public CustomRecipeResult visualResult() { - return visualResult; + return this.visualResult; } - public boolean hasVisualResult() { - return visualResult != null; - } - - public T assembleVisual(RecipeInput input, ItemBuildContext context) { - if (this.visualResult != null) { - return this.visualResult.buildItemStack(context); - } else { - throw new IllegalStateException("No visual result available"); - } - } - - public Item buildVisualOrActualResult(ItemBuildContext context) { - if (this.visualResult != null) { - return this.visualResult.buildItem(context); - } else { - return super.result.buildItem(context); - } - } - - public Function[] craftingFunctions() { - return craftingFunctions; + @Override + public Function[] functions() { + return this.craftingFunctions; } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java index 852b8ff8e..0ad09593b 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTransformRecipe.java @@ -9,6 +9,7 @@ import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.plugin.locale.LocalizedResourceConfigException; import net.momirealms.craftengine.core.registry.BuiltInRegistries; import net.momirealms.craftengine.core.registry.Registries; @@ -22,7 +23,8 @@ import java.util.List; import java.util.Map; import java.util.Objects; -public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecipe implements ConditionalRecipe { +public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecipe + implements ConditionalRecipe, VisualResultRecipe, FunctionalRecipe { public static final Serializer SERIALIZER = new Serializer<>(); private final Ingredient base; private final Ingredient template; @@ -30,6 +32,8 @@ public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecip private final boolean mergeComponents; private final List processors; private final Condition condition; + private final Function[] smithingFunctions; + private final CustomRecipeResult visualResult; public CustomSmithingTransformRecipe(Key id, boolean showNotification, @@ -37,8 +41,10 @@ public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecip @NotNull Ingredient base, @Nullable Ingredient addition, CustomRecipeResult result, + @Nullable CustomRecipeResult visualResult, List processors, boolean mergeComponents, + Function[] smithingFunctions, Condition condition ) { super(id, showNotification, result); @@ -48,6 +54,18 @@ public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecip this.processors = processors; this.mergeComponents = mergeComponents; this.condition = condition; + this.smithingFunctions = smithingFunctions; + this.visualResult = visualResult; + } + + @Override + public Function[] functions() { + return this.smithingFunctions; + } + + @Override + public @Nullable CustomRecipeResult visualResult() { + return this.visualResult; } @Override @@ -150,9 +168,10 @@ public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecip ResourceConfigUtils.requireNonNullOrThrow(toIngredient(base), "warning.config.recipe.smithing_transform.missing_base"), toIngredient(addition), parseResult(arguments), + parseVisualResult(arguments), ItemDataProcessors.fromMapList(processors), mergeComponents, - conditions(arguments) + functions(arguments), conditions(arguments) ); } @@ -166,8 +185,9 @@ public class CustomSmithingTransformRecipe extends AbstractedFixedResultRecip toIngredient(VANILLA_RECIPE_HELPER.singleIngredient(json.get("addition"))), parseResult(VANILLA_RECIPE_HELPER.smithingResult(json.getAsJsonObject("result"))), null, + null, true, - null + null, null ); } } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTrimRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTrimRecipe.java index 020a5d460..4cbfa2305 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTrimRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/CustomSmithingTrimRecipe.java @@ -8,6 +8,7 @@ import net.momirealms.craftengine.core.item.recipe.input.SmithingInput; import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.plugin.context.Condition; import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.function.Function; import net.momirealms.craftengine.core.util.Key; import net.momirealms.craftengine.core.util.MiscUtils; import net.momirealms.craftengine.core.util.ResourceConfigUtils; @@ -20,7 +21,8 @@ import java.util.List; import java.util.Map; import java.util.Objects; -public class CustomSmithingTrimRecipe extends AbstractRecipe implements ConditionalRecipe { +public class CustomSmithingTrimRecipe extends AbstractRecipe + implements ConditionalRecipe, FunctionalRecipe { public static final Serializer SERIALIZER = new Serializer<>(); private final Ingredient base; private final Ingredient template; @@ -29,6 +31,7 @@ public class CustomSmithingTrimRecipe extends AbstractRecipe implements Co private final Key pattern; @Nullable private final Condition condition; + private final Function[] smithingFunctions; public CustomSmithingTrimRecipe(@NotNull Key id, boolean showNotification, @@ -36,6 +39,7 @@ public class CustomSmithingTrimRecipe extends AbstractRecipe implements Co @NotNull Ingredient base, @NotNull Ingredient addition, @Nullable Key pattern, + Function[] smithingFunctions, @Nullable Condition condition ) { super(id, showNotification); @@ -44,11 +48,17 @@ public class CustomSmithingTrimRecipe extends AbstractRecipe implements Co this.addition = addition; this.pattern = pattern; this.condition = condition; + this.smithingFunctions = smithingFunctions; if (pattern == null && VersionHelper.isOrAbove1_21_5()) { throw new IllegalStateException("SmithingTrimRecipe cannot have a null pattern on 1.21.5 and above."); } } + @Override + public Function[] functions() { + return this.smithingFunctions; + } + @Override public boolean canUse(PlayerOptionalContext context) { if (this.condition != null) return this.condition.test(context); @@ -135,6 +145,7 @@ public class CustomSmithingTrimRecipe extends AbstractRecipe implements Co ResourceConfigUtils.requireNonNullOrThrow(toIngredient(base), "warning.config.recipe.smithing_trim.missing_base"), ResourceConfigUtils.requireNonNullOrThrow(toIngredient(addition), "warning.config.recipe.smithing_trim.missing_addition"), pattern, + functions(arguments), conditions(arguments) ); } @@ -147,6 +158,7 @@ public class CustomSmithingTrimRecipe extends AbstractRecipe implements Co Objects.requireNonNull(toIngredient(VANILLA_RECIPE_HELPER.singleIngredient(json.get("base")))), Objects.requireNonNull(toIngredient(VANILLA_RECIPE_HELPER.singleIngredient(json.get("addition")))), VersionHelper.isOrAbove1_21_5() ? Key.of(json.get("pattern").getAsString()) : null, + null, null ); } diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FixedResultRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FixedResultRecipe.java new file mode 100644 index 000000000..6bfec4abc --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FixedResultRecipe.java @@ -0,0 +1,13 @@ +package net.momirealms.craftengine.core.item.recipe; + +import net.momirealms.craftengine.core.item.ItemBuildContext; +import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult; + +public interface FixedResultRecipe extends Recipe { + + CustomRecipeResult result(); + + default T result(ItemBuildContext context) { + return this.result().buildItemStack(context); + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FunctionalRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FunctionalRecipe.java new file mode 100644 index 000000000..af1f0620f --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/FunctionalRecipe.java @@ -0,0 +1,10 @@ +package net.momirealms.craftengine.core.item.recipe; + +import net.momirealms.craftengine.core.plugin.context.PlayerOptionalContext; +import net.momirealms.craftengine.core.plugin.context.function.Function; + +public interface FunctionalRecipe extends Recipe { + + + Function[] functions(); +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/VisualResultRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/VisualResultRecipe.java new file mode 100644 index 000000000..c6d55b68c --- /dev/null +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/VisualResultRecipe.java @@ -0,0 +1,33 @@ +package net.momirealms.craftengine.core.item.recipe; + +import net.momirealms.craftengine.core.item.Item; +import net.momirealms.craftengine.core.item.ItemBuildContext; +import net.momirealms.craftengine.core.item.recipe.input.RecipeInput; +import net.momirealms.craftengine.core.item.recipe.result.CustomRecipeResult; +import org.jetbrains.annotations.Nullable; + +public interface VisualResultRecipe extends FixedResultRecipe { + @Nullable + CustomRecipeResult visualResult(); + + default boolean hasVisualResult() { + return visualResult() != null; + } + + default T assembleVisual(RecipeInput input, ItemBuildContext context) { + CustomRecipeResult result = visualResult(); + if (result != null) { + return result.buildItemStack(context); + } + return null; + } + + default Item buildVisualOrActualResult(ItemBuildContext context) { + CustomRecipeResult visualResult = visualResult(); + if (visualResult != null) { + return visualResult.buildItem(context); + } else { + return this.result().buildItem(context); + } + } +} diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapedRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapedRecipe.java index 9f4ee26b1..c4c753951 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapedRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapedRecipe.java @@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.item.recipe.network.legacy; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.recipe.CraftingRecipeCategory; -import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import net.momirealms.craftengine.core.util.VersionHelper; import org.jetbrains.annotations.ApiStatus; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapelessRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapelessRecipe.java index 24000bd85..df2f07dd4 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapelessRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacyShapelessRecipe.java @@ -2,7 +2,6 @@ package net.momirealms.craftengine.core.item.recipe.network.legacy; import net.momirealms.craftengine.core.item.Item; import net.momirealms.craftengine.core.item.recipe.CraftingRecipeCategory; -import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.ApiStatus; diff --git a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacySmithingTransformRecipe.java b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacySmithingTransformRecipe.java index b763db11b..befb36317 100644 --- a/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacySmithingTransformRecipe.java +++ b/core/src/main/java/net/momirealms/craftengine/core/item/recipe/network/legacy/LegacySmithingTransformRecipe.java @@ -1,7 +1,6 @@ package net.momirealms.craftengine.core.item.recipe.network.legacy; import net.momirealms.craftengine.core.item.Item; -import net.momirealms.craftengine.core.plugin.CraftEngine; import net.momirealms.craftengine.core.util.FriendlyByteBuf; import org.jetbrains.annotations.ApiStatus; diff --git a/gradle.properties b/gradle.properties index 8e7519429..358858b38 100644 --- a/gradle.properties +++ b/gradle.properties @@ -50,7 +50,7 @@ byte_buddy_version=1.17.8 ahocorasick_version=0.6.3 snake_yaml_version=2.5 anti_grief_version=1.0.2 -nms_helper_version=1.0.113 +nms_helper_version=1.0.114 evalex_version=3.5.0 reactive_streams_version=1.0.4 amazon_awssdk_version=2.34.5