Skip to content

Commit d799d63

Browse files
committed
Allow to access Item Editor from the Item Creator
1 parent c12dab0 commit d799d63

3 files changed

Lines changed: 43 additions & 15 deletions

File tree

src/main/java/me/wolfyscript/customcrafting/data/cache/items/Items.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,7 @@ public CustomItem getItem() {
169169
}
170170

171171
public void setItem(CustomItem item) {
172+
this.original = item.stackReference();
172173
this.item = item;
173174
}
174175

src/main/java/me/wolfyscript/customcrafting/gui/item_creator/MenuItemCreator.java

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,14 @@
2323
package me.wolfyscript.customcrafting.gui.item_creator;
2424

2525
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;
2826
import com.wolfyscript.utilities.bukkit.world.items.reference.WolfyUtilsStackIdentifier;
2927
import me.wolfyscript.customcrafting.CustomCrafting;
3028
import me.wolfyscript.customcrafting.data.CCCache;
3129
import me.wolfyscript.customcrafting.data.CCPlayerData;
3230
import me.wolfyscript.customcrafting.data.cache.items.Items;
3331
import me.wolfyscript.customcrafting.data.cache.items.ItemsButtonAction;
3432
import me.wolfyscript.customcrafting.gui.CCWindow;
33+
import me.wolfyscript.customcrafting.gui.Setting;
3534
import me.wolfyscript.customcrafting.gui.item_creator.tabs.ItemCreatorTab;
3635
import me.wolfyscript.customcrafting.gui.item_creator.tabs.TabArmorSlots;
3736
import me.wolfyscript.customcrafting.gui.item_creator.tabs.TabAttributes;
@@ -55,6 +54,7 @@
5554
import me.wolfyscript.customcrafting.gui.item_creator.tabs.TabUnbreakable;
5655
import me.wolfyscript.customcrafting.gui.item_creator.tabs.TabVanilla;
5756
import me.wolfyscript.customcrafting.gui.main_gui.ClusterMain;
57+
import me.wolfyscript.customcrafting.gui.recipe_creator.ClusterRecipeCreator;
5858
import me.wolfyscript.customcrafting.utils.ChatUtils;
5959
import me.wolfyscript.customcrafting.utils.ItemLoader;
6060
import me.wolfyscript.customcrafting.utils.NamespacedKeyUtils;
@@ -77,8 +77,11 @@
7777
import me.wolfyscript.utilities.util.NamespacedKey;
7878
import me.wolfyscript.utilities.util.inventory.ItemUtils;
7979
import me.wolfyscript.utilities.util.inventory.PlayerHeadUtils;
80+
import org.bukkit.Bukkit;
8081
import org.bukkit.Material;
8182
import org.bukkit.entity.Player;
83+
import org.bukkit.event.inventory.ClickType;
84+
import org.bukkit.event.inventory.InventoryClickEvent;
8285
import org.bukkit.inventory.ItemStack;
8386
import org.bukkit.util.StringUtil;
8487

@@ -125,10 +128,11 @@ public void onInit() {
125128
})).register();
126129
btnB.itemInput(ITEM_INPUT).state(s -> s.icon(Material.AIR).postAction((cache, guiHandler, player, guiInventory, stack, slot, event) -> {
127130
var items = cache.getItems();
131+
// Normal interaction, just apply the item
128132
guiHandler.getWolfyUtils().getRegistries().getStackIdentifierParsers().parseFrom(stack).ifPresentOrElse(reference -> {
129133
items.editorWasPreviouslyCancelled(false);
130134
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)));
132136
}).render((cache, guiHandler, player, guiInventory, itemStack, i) -> CallbackButtonRender.UpdateResult.of(guiHandler.getCustomCache().getItems().getItem().getItemStack()))).register();
133137
btnB.action(SAVE_ITEM).state(s -> s.icon(Material.WRITABLE_BOOK).action((cache, guiHandler, player, inventory, i, event) -> {
134138
var items = cache.getItems();
@@ -169,6 +173,19 @@ public void onInit() {
169173
}
170174
return true;
171175
})).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+
172189
btnB.action(PAGE_NEXT).state(s -> s.icon(PlayerHeadUtils.getViaURL("c86185b1d519ade585f184c34f3f3e20bb641deb879e81378e4eaf209287")).action((ItemsButtonAction) (cache, items, guiHandler, player, inventory, i, event) -> {
173190
items.setPage(items.getPage() + 1);
174191
return true;
@@ -277,7 +294,7 @@ public void onUpdateAsync(GuiUpdate<CCCache> event) {
277294
}
278295

279296
event.setButton(45, CANCEL);
280-
event.setItem(4, items.getItem().stackReference().referencedStack());
297+
event.setButton(4, "item_display");
281298
CCPlayerData data = PlayerUtil.getStore(event.getPlayer());
282299
var gray = data.getLightBackground();
283300
if (customCrafting.getConfigHandler().getConfig().isGUIDrawBackground()) event.setButton(13, gray);

src/main/java/me/wolfyscript/customcrafting/gui/recipe_creator/MenuItemEditor.java

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,8 @@
2222

2323
package me.wolfyscript.customcrafting.gui.recipe_creator;
2424

25-
import com.wolfyscript.utilities.bukkit.world.items.reference.*;
25+
import com.wolfyscript.utilities.bukkit.world.items.reference.StackIdentifierParser;
26+
import com.wolfyscript.utilities.bukkit.world.items.reference.StackReference;
2627
import me.wolfyscript.customcrafting.CustomCrafting;
2728
import me.wolfyscript.customcrafting.data.CCCache;
2829
import me.wolfyscript.customcrafting.data.cache.items.Items;
@@ -36,13 +37,9 @@
3637
import me.wolfyscript.utilities.api.inventory.gui.GuiUpdate;
3738
import me.wolfyscript.utilities.api.inventory.gui.button.ButtonState;
3839
import me.wolfyscript.utilities.api.inventory.gui.button.CallbackButtonRender;
39-
import me.wolfyscript.utilities.compatibility.plugins.itemsadder.ItemsAdderRef;
4040
import me.wolfyscript.utilities.util.NamespacedKey;
41-
import me.wolfyscript.utilities.util.inventory.PlayerHeadUtils;
4241
import org.bukkit.Material;
43-
import org.bukkit.inventory.ItemStack;
4442

45-
import java.util.List;
4643
import java.util.function.Consumer;
4744

4845
public class MenuItemEditor extends CCWindow {
@@ -55,12 +52,21 @@ public MenuItemEditor(GuiCluster<CCCache> cluster, CustomCrafting customCrafting
5552
public void onInit() {
5653
ButtonBuilder<CCCache> btnB = getButtonBuilder();
5754

58-
getButtonBuilder().action("back").state(s -> s.key(ClusterMain.BACK).icon(PlayerHeadUtils.getViaURL("864f779a8e3ffa231143fa69b96b14ee35c16d669e19c75fd1a7da4bf306c")).action((cache, guiHandler, player, inv, i, event) -> {
55+
getButtonBuilder().action("back").state(s -> s.key(ClusterMain.BACK_BOTTOM).icon(Material.BARRIER).action((cache, guiHandler, player, inv, i, event) -> {
56+
cache.setApplyItem(null);
5957
if (cache.getSetting().equals(Setting.RECIPE_CREATOR)) {
60-
cache.getItems().setRecipeItem(false);
61-
cache.setApplyItem(null);
58+
if (!cache.getItems().isRecipeItem()) {
59+
cache.getItems().setRecipeItem(true);
60+
guiHandler.openCluster(ClusterItemCreator.KEY);
61+
return true;
62+
}
6263
guiHandler.openPreviousWindow();
6364
} else {
65+
if (cache.getSetting().equals(Setting.ITEMS)) {
66+
// Move back to the ItemCreator
67+
guiHandler.openCluster(ClusterItemCreator.KEY);
68+
return true;
69+
}
6470
guiHandler.openCluster(ClusterMain.KEY);
6571
}
6672
return true;
@@ -126,9 +132,13 @@ public void onUpdateAsync(GuiUpdate<CCCache> event) {
126132
event.setItem(4, reference.referencedStack());
127133
event.setButton(22, ClusterMain.GLASS_PURPLE);
128134
event.setButton(3, ClusterMain.GLASS_GREEN);
129-
event.setButton(6, "create_item");
135+
if (event.getGuiHandler().getCustomCache().getSetting() == Setting.RECIPE_CREATOR) {
136+
// Only provide these options when accessing it from the Recipe Creator
137+
// Items to edit via the Item Creator can be picked from the Item List via the Main Menu!
138+
event.setButton(6, "create_item");
139+
event.setButton(2, ClusterMain.ITEM_LIST.getKey());
140+
}
130141
event.setButton(5, ClusterMain.GLASS_GREEN);
131-
event.setButton(2, ClusterMain.ITEM_LIST.getKey());
132142
event.setButton(13, ClusterMain.GLASS_PURPLE);
133143

134144
NamespacedKey white = ClusterMain.GLASS_PURPLE;
@@ -144,7 +154,7 @@ public void onUpdateAsync(GuiUpdate<CCCache> event) {
144154
NamespacedKey key = parser.getNamespacedKey();
145155
event.setButton(slot++, "reference." + key.toString("_") + ".swap");
146156
}
147-
event.setButton(49, ClusterMain.BACK_BOTTOM);
157+
event.setButton(49, "back");
148158
}
149159

150160
}

0 commit comments

Comments
 (0)