|
23 | 23 | package me.wolfyscript.customcrafting.gui.item_creator; |
24 | 24 |
|
25 | 25 | import com.google.common.collect.Lists; |
26 | | -import com.wolfyscript.utilities.bukkit.world.items.reference.StackIdentifier; |
27 | | -import com.wolfyscript.utilities.bukkit.world.items.reference.StackReference; |
28 | 26 | import com.wolfyscript.utilities.bukkit.world.items.reference.WolfyUtilsStackIdentifier; |
29 | 27 | import me.wolfyscript.customcrafting.CustomCrafting; |
30 | 28 | import me.wolfyscript.customcrafting.data.CCCache; |
31 | 29 | import me.wolfyscript.customcrafting.data.CCPlayerData; |
32 | 30 | import me.wolfyscript.customcrafting.data.cache.items.Items; |
33 | 31 | import me.wolfyscript.customcrafting.data.cache.items.ItemsButtonAction; |
34 | 32 | import me.wolfyscript.customcrafting.gui.CCWindow; |
| 33 | +import me.wolfyscript.customcrafting.gui.Setting; |
35 | 34 | import me.wolfyscript.customcrafting.gui.item_creator.tabs.ItemCreatorTab; |
36 | 35 | import me.wolfyscript.customcrafting.gui.item_creator.tabs.TabArmorSlots; |
37 | 36 | import me.wolfyscript.customcrafting.gui.item_creator.tabs.TabAttributes; |
|
55 | 54 | import me.wolfyscript.customcrafting.gui.item_creator.tabs.TabUnbreakable; |
56 | 55 | import me.wolfyscript.customcrafting.gui.item_creator.tabs.TabVanilla; |
57 | 56 | import me.wolfyscript.customcrafting.gui.main_gui.ClusterMain; |
| 57 | +import me.wolfyscript.customcrafting.gui.recipe_creator.ClusterRecipeCreator; |
58 | 58 | import me.wolfyscript.customcrafting.utils.ChatUtils; |
59 | 59 | import me.wolfyscript.customcrafting.utils.ItemLoader; |
60 | 60 | import me.wolfyscript.customcrafting.utils.NamespacedKeyUtils; |
|
77 | 77 | import me.wolfyscript.utilities.util.NamespacedKey; |
78 | 78 | import me.wolfyscript.utilities.util.inventory.ItemUtils; |
79 | 79 | import me.wolfyscript.utilities.util.inventory.PlayerHeadUtils; |
| 80 | +import org.bukkit.Bukkit; |
80 | 81 | import org.bukkit.Material; |
81 | 82 | import org.bukkit.entity.Player; |
| 83 | +import org.bukkit.event.inventory.ClickType; |
| 84 | +import org.bukkit.event.inventory.InventoryClickEvent; |
82 | 85 | import org.bukkit.inventory.ItemStack; |
83 | 86 | import org.bukkit.util.StringUtil; |
84 | 87 |
|
@@ -125,10 +128,11 @@ public void onInit() { |
125 | 128 | })).register(); |
126 | 129 | btnB.itemInput(ITEM_INPUT).state(s -> s.icon(Material.AIR).postAction((cache, guiHandler, player, guiInventory, stack, slot, event) -> { |
127 | 130 | var items = cache.getItems(); |
| 131 | + // Normal interaction, just apply the item |
128 | 132 | guiHandler.getWolfyUtils().getRegistries().getStackIdentifierParsers().parseFrom(stack).ifPresentOrElse(reference -> { |
129 | 133 | items.editorWasPreviouslyCancelled(false); |
130 | 134 | items.setItem(new CustomItem(reference)); |
131 | | - }, () -> items.setItem(new CustomItem(Material.AIR))); |
| 135 | + }, () -> /* Should never happen (Bukkit reference would need to fail) */ items.setItem(new CustomItem(Material.AIR))); |
132 | 136 | }).render((cache, guiHandler, player, guiInventory, itemStack, i) -> CallbackButtonRender.UpdateResult.of(guiHandler.getCustomCache().getItems().getItem().getItemStack()))).register(); |
133 | 137 | btnB.action(SAVE_ITEM).state(s -> s.icon(Material.WRITABLE_BOOK).action((cache, guiHandler, player, inventory, i, event) -> { |
134 | 138 | var items = cache.getItems(); |
@@ -169,6 +173,19 @@ public void onInit() { |
169 | 173 | } |
170 | 174 | return true; |
171 | 175 | })).register(); |
| 176 | + // Displays the stack in the ItemCreator |
| 177 | + btnB.action("item_display").state(s -> s.icon(Material.AIR).action((cache, guiHandler, player, guiInventory, i, event) -> { |
| 178 | + if (event instanceof InventoryClickEvent clickEvent && clickEvent.getClick().equals(ClickType.SHIFT_RIGHT)) { |
| 179 | + if (cache.getSetting() == Setting.RECIPE_CREATOR) { |
| 180 | + cache.getItems().setRecipeItem(false); // Prevent to move back to the ingredient/result menu |
| 181 | + } |
| 182 | + // Allow editing the stack reference like in the Recipe Creator |
| 183 | + Bukkit.getScheduler().runTask(CustomCrafting.inst(), () -> guiHandler.openWindow(ClusterRecipeCreator.ITEM_EDITOR)); |
| 184 | + return true; |
| 185 | + } |
| 186 | + return true; |
| 187 | + }).render((ccCache, guiHandler, player, guiInventory, itemStack, i) -> CallbackButtonRender.UpdateResult.of(ccCache.getItems().getItem().stackReference().referencedStack()))).register(); |
| 188 | + |
172 | 189 | btnB.action(PAGE_NEXT).state(s -> s.icon(PlayerHeadUtils.getViaURL("c86185b1d519ade585f184c34f3f3e20bb641deb879e81378e4eaf209287")).action((ItemsButtonAction) (cache, items, guiHandler, player, inventory, i, event) -> { |
173 | 190 | items.setPage(items.getPage() + 1); |
174 | 191 | return true; |
@@ -277,7 +294,7 @@ public void onUpdateAsync(GuiUpdate<CCCache> event) { |
277 | 294 | } |
278 | 295 |
|
279 | 296 | event.setButton(45, CANCEL); |
280 | | - event.setItem(4, items.getItem().stackReference().referencedStack()); |
| 297 | + event.setButton(4, "item_display"); |
281 | 298 | CCPlayerData data = PlayerUtil.getStore(event.getPlayer()); |
282 | 299 | var gray = data.getLightBackground(); |
283 | 300 | if (customCrafting.getConfigHandler().getConfig().isGUIDrawBackground()) event.setButton(13, gray); |
|
0 commit comments