diff --git a/build.gradle.kts b/build.gradle.kts index e411972f..4d9adf15 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,5 +1,5 @@ import java.text.SimpleDateFormat -version = "1.9.3" +version = "1.9.4-dev1" plugins { `java-library` @@ -40,7 +40,7 @@ dependencies { compileOnly("io.lumine:Mythic-Dist:5.3.5") compileOnly("io.lumine:MythicLib-dist:1.6.2-SNAPSHOT") compileOnly("net.Indyuce:MMOItems-API:6.9.5-SNAPSHOT") - implementation("com.crypticlib:CrypticLib:0.16.1") + implementation("com.crypticlib:CrypticLib:0.16.9") } group = "com.github.yufiriamazenta" diff --git a/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/item/GiveItemCommand.java b/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/item/GiveItemCommand.java index b20336fc..3e2bc1cd 100644 --- a/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/item/GiveItemCommand.java +++ b/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/item/GiveItemCommand.java @@ -1,10 +1,13 @@ package com.github.yufiriamazenta.craftorithm.cmd.sub.item; +import com.github.yufiriamazenta.craftorithm.Craftorithm; import com.github.yufiriamazenta.craftorithm.cmd.sub.AbstractSubCommand; import com.github.yufiriamazenta.craftorithm.config.Languages; import com.github.yufiriamazenta.craftorithm.item.impl.CraftorithmItemProvider; import com.github.yufiriamazenta.craftorithm.util.CollectionsUtil; import com.github.yufiriamazenta.craftorithm.util.LangUtil; +import crypticlib.CrypticLib; +import crypticlib.platform.IPlatform; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -52,8 +55,17 @@ public boolean execute(CommandSender sender, List args) { HashMap failedItems = player.getInventory().addItem(itemStack); if (!failedItems.isEmpty()) { - for (ItemStack stack : failedItems.values()) { - player.getWorld().dropItem(player.getLocation(), stack); + if (!CrypticLib.platform().platform().equals(IPlatform.Platform.FOLIA)) { + for (ItemStack stack : failedItems.values()) { + player.getWorld().dropItem(player.getLocation(), stack); + } + } else { + Runnable dropTask = () -> { + for (ItemStack stack : failedItems.values()) { + player.getWorld().dropItem(player.getLocation(), stack); + } + }; + CrypticLib.platform().scheduler().runTaskOnEntity(Craftorithm.instance(), player, dropTask, dropTask); } } LangUtil.sendLang(sender, Languages.COMMAND_ITEM_GIVE_SUCCESS); @@ -63,9 +75,7 @@ public boolean execute(CommandSender sender, List args) { @Override public List tab(CommandSender sender, List args) { if (args.size() < 2) { - List tabList = new ArrayList<>(CraftorithmItemProvider.INSTANCE.itemMap().keySet()); - filterTabList(tabList, args.get(0)); - return tabList; + return new ArrayList<>(CraftorithmItemProvider.INSTANCE.itemMap().keySet()); } else return getOnlinePlayerNameList(); diff --git a/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/item/SaveItemCommand.java b/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/item/SaveItemCommand.java index e88466cd..04773aea 100644 --- a/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/item/SaveItemCommand.java +++ b/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/item/SaveItemCommand.java @@ -45,9 +45,7 @@ public boolean execute(CommandSender sender, List args) { @Override public List tab(CommandSender sender, List args) { if (args.size() < 2) { - List tabList = new ArrayList<>(CraftorithmItemProvider.INSTANCE.itemConfigFileMap().keySet()); - filterTabList(tabList, args.get(0)); - return tabList; + return new ArrayList<>(CraftorithmItemProvider.INSTANCE.itemConfigFileMap().keySet()); } else { return Collections.singletonList(""); } diff --git a/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/recipe/CreateRecipeCommand.java b/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/recipe/CreateRecipeCommand.java index 482a669a..57911def 100644 --- a/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/recipe/CreateRecipeCommand.java +++ b/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/recipe/CreateRecipeCommand.java @@ -101,9 +101,7 @@ public boolean execute(CommandSender sender, List args) { @Override public List tab(CommandSender sender, List args) { if (args.size() <= 1) { - List tabList = new ArrayList<>(recipeTypeList); - filterTabList(tabList, args.get(0)); - return tabList; + return new ArrayList<>(recipeTypeList); } return Collections.singletonList(""); } diff --git a/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/recipe/DisableRecipeCommand.java b/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/recipe/DisableRecipeCommand.java index 0159b3c9..5c3c3bec 100644 --- a/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/recipe/DisableRecipeCommand.java +++ b/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/recipe/DisableRecipeCommand.java @@ -48,7 +48,6 @@ public List tab(CommandSender sender, List args) { if (str.contains(args.get(0))) tabList.add(key.toString()); } - filterTabList(tabList, args.get(0)); return tabList; } return super.onTabComplete(sender, args); diff --git a/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/recipe/RemoveRecipeCommand.java b/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/recipe/RemoveRecipeCommand.java index e9fc248d..a4c975e8 100644 --- a/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/recipe/RemoveRecipeCommand.java +++ b/src/main/java/com/github/yufiriamazenta/craftorithm/cmd/sub/recipe/RemoveRecipeCommand.java @@ -44,7 +44,6 @@ public List tab(CommandSender sender, List args) { for (Map recipeGroupMap : RecipeManager.INSTANCE.recipeMap().values()) { tabList.addAll(recipeGroupMap.keySet()); } - filterTabList(tabList, args.get(0)); return tabList; } return super.onTabComplete(sender, args); diff --git a/src/main/java/com/github/yufiriamazenta/craftorithm/menu/creator/AnvilRecipeCreator.java b/src/main/java/com/github/yufiriamazenta/craftorithm/menu/creator/AnvilRecipeCreator.java index f19a362d..91ab7a55 100644 --- a/src/main/java/com/github/yufiriamazenta/craftorithm/menu/creator/AnvilRecipeCreator.java +++ b/src/main/java/com/github/yufiriamazenta/craftorithm/menu/creator/AnvilRecipeCreator.java @@ -56,37 +56,37 @@ public AnvilRecipeCreator(@NotNull Player player, @NotNull String recipeName) { layoutMap.put('*', new Icon(Material.CYAN_STAINED_GLASS_PANE, Languages.MENU_RECIPE_CREATOR_ICON_ANVIL_FRAME.value(player))); layoutMap.put('B', getCopyNbtIcon()); layoutMap.put('C', getCostLevelIcon()); - layoutMap.put('A', new Icon(Material.ANVIL, Languages.MENU_RECIPE_CREATOR_ICON_CONFIRM.value(player), - event -> { - StoredMenu creator = (StoredMenu) event.getClickedInventory().getHolder(); - ItemStack result = Objects.requireNonNull(creator).storedItems().get(24); - ItemStack base = creator.storedItems().get(19); - ItemStack addition = creator.storedItems().get(21); - if (ItemUtil.isAir(result)) { - LangUtil.sendLang(event.getWhoClicked(), Languages.COMMAND_CREATE_NULL_RESULT); - return; - } - if (ItemUtil.isAir(addition) || ItemUtil.isAir(base)) { - LangUtil.sendLang(event.getWhoClicked(), Languages.COMMAND_CREATE_NULL_SOURCE); - return; - } - String resultName = ItemUtils.matchItemNameOrCreate(result, false); - String inputName = ItemUtils.matchItemNameOrCreate(base, false); - String ingredientName = ItemUtils.matchItemNameOrCreate(addition, false); - ConfigWrapper recipeConfig = createRecipeConfig(recipeName); - recipeConfig.set("source.copy_nbt", event.getInventory().getItem(40).getItemMeta().hasEnchants()); - recipeConfig.set("type", "anvil"); - recipeConfig.set("source.base", inputName); - recipeConfig.set("source.addition", ingredientName); - recipeConfig.set("source.cost_level", costLevel); - recipeConfig.set("result", resultName); - recipeConfig.saveConfig(); - recipeConfig.reloadConfig(); - regRecipeGroup(recipeConfig); - event.getWhoClicked().closeInventory(); - sendSuccessMsg(player, recipeName); - }) - ); + layoutMap.put('A', new Icon(Material.ANVIL, Languages.MENU_RECIPE_CREATOR_ICON_CONFIRM.value(player)) + .setClickAction( + event -> { + StoredMenu creator = (StoredMenu) event.getClickedInventory().getHolder(); + ItemStack result = Objects.requireNonNull(creator).storedItems().get(24); + ItemStack base = creator.storedItems().get(19); + ItemStack addition = creator.storedItems().get(21); + if (ItemUtil.isAir(result)) { + LangUtil.sendLang(event.getWhoClicked(), Languages.COMMAND_CREATE_NULL_RESULT); + return; + } + if (ItemUtil.isAir(addition) || ItemUtil.isAir(base)) { + LangUtil.sendLang(event.getWhoClicked(), Languages.COMMAND_CREATE_NULL_SOURCE); + return; + } + String resultName = ItemUtils.matchItemNameOrCreate(result, false); + String inputName = ItemUtils.matchItemNameOrCreate(base, false); + String ingredientName = ItemUtils.matchItemNameOrCreate(addition, false); + ConfigWrapper recipeConfig = createRecipeConfig(recipeName); + recipeConfig.set("source.copy_nbt", event.getInventory().getItem(40).getItemMeta().hasEnchants()); + recipeConfig.set("type", "anvil"); + recipeConfig.set("source.base", inputName); + recipeConfig.set("source.addition", ingredientName); + recipeConfig.set("source.cost_level", costLevel); + recipeConfig.set("result", resultName); + recipeConfig.saveConfig(); + recipeConfig.reloadConfig(); + regRecipeGroup(recipeConfig); + event.getWhoClicked().closeInventory(); + sendSuccessMsg(player, recipeName); + })); return layoutMap; }) ) @@ -107,7 +107,8 @@ protected Icon getCopyNbtIcon() { Material.NAME_TAG, Languages.MENU_RECIPE_CREATOR_ICON_ANVIL_COPY_NBT_TOGGLE .value(player) - .replace("", String.valueOf(copyNbt)), + .replace("", String.valueOf(copyNbt)) + ).setClickAction( event -> toggleCopyNbt(event.getSlot(), event) ); if (copyNbt) @@ -132,13 +133,14 @@ protected Icon getCostLevelIcon() { Material.EXPERIENCE_BOTTLE, Languages.MENU_RECIPE_CREATOR_ICON_ANVIL_COST_LEVEL_NAME.value(player) .replace("", String.valueOf(costLevel)), - Languages.MENU_RECIPE_CREATOR_ICON_ANVIL_COST_LEVEL_LORE.value(player), + Languages.MENU_RECIPE_CREATOR_ICON_ANVIL_COST_LEVEL_LORE.value(player) + ).setClickAction( event -> { Conversation conversation = new Conversation( Craftorithm.instance(), player, new CostLevelInputPrompt(), - data -> player.openInventory(openedInventory) + data -> player.openInventory(inventoryCache) ); inConversation = true; conversation.start(); @@ -148,7 +150,7 @@ protected Icon getCostLevelIcon() { } public void updateCostLevelIcon() { - ItemStack costLevelIcon = this.openedInventory().getItem(4); + ItemStack costLevelIcon = this.inventoryCache.getItem(4); if (costLevelIcon == null) return; ItemUtil.setDisplayName( @@ -164,7 +166,7 @@ class CostLevelInputPrompt implements NumberPrompt { @Nullable public Prompt acceptValidatedInput(@NotNull Map data, @NotNull Number number) { costLevel = number.intValue(); - player.openInventory(openedInventory()); + player.openInventory(inventoryCache); updateCostLevelIcon(); inConversation = false; return null; diff --git a/src/main/java/com/github/yufiriamazenta/craftorithm/menu/creator/CookingRecipeCreator.java b/src/main/java/com/github/yufiriamazenta/craftorithm/menu/creator/CookingRecipeCreator.java index ad6e2ec8..44a583ef 100644 --- a/src/main/java/com/github/yufiriamazenta/craftorithm/menu/creator/CookingRecipeCreator.java +++ b/src/main/java/com/github/yufiriamazenta/craftorithm/menu/creator/CookingRecipeCreator.java @@ -67,8 +67,8 @@ public CookingRecipeCreator(@NotNull Player player, @NotNull String recipeName) layoutMap.put('G', getCookingTimeIcon()); layoutMap.put('H', getExpIcon()); layoutMap.put('A', new Icon( - Material.FURNACE, - Languages.MENU_RECIPE_CREATOR_ICON_CONFIRM.value(player), + Material.FURNACE, Languages.MENU_RECIPE_CREATOR_ICON_CONFIRM.value(player) + ).setClickAction( event -> { StoredMenu creator = (StoredMenu) Objects.requireNonNull(event.getClickedInventory()).getHolder(); ItemStack source = Objects.requireNonNull(creator).storedItems().get(20); @@ -107,7 +107,8 @@ public CookingRecipeCreator(@NotNull Player player, @NotNull String recipeName) regRecipeGroup(recipeConfig); event.getWhoClicked().closeInventory(); sendSuccessMsg(event.getWhoClicked(), recipeName); - }) + } + ) ); return layoutMap; }) @@ -145,7 +146,8 @@ protected Icon getCookingToggleIcon(Material material) { displayName = displayName.replace("", String.valueOf(enable)); Icon icon = new Icon( material, - displayName, + displayName + ).setClickAction( event -> toggleCookingIcon(event.getSlot(), event) ); if (enable) { @@ -184,13 +186,14 @@ protected Icon getCookingTimeIcon() { Material.CLOCK, Languages.MENU_RECIPE_CREATOR_ICON_COOKING_TIME_NAME.value(player) .replace("