1- package io .github .mooy1 .infinityexpansion .implementation .items ;
1+ package io .github .mooy1 .infinityexpansion .implementation .blocks ;
22
33import io .github .mooy1 .infinityexpansion .lists .Categories ;
44import io .github .mooy1 .infinityexpansion .lists .InfinityRecipes ;
55import io .github .mooy1 .infinityexpansion .lists .Items ;
66import io .github .mooy1 .infinityexpansion .setup .InfinityCategory ;
77import io .github .mooy1 .infinityexpansion .utils .RecipeUtils ;
88import io .github .mooy1 .infinitylib .filter .FilterType ;
9+ import io .github .mooy1 .infinitylib .filter .ItemFilter ;
910import io .github .mooy1 .infinitylib .filter .MultiFilter ;
1011import io .github .mooy1 .infinitylib .objects .AbstractContainer ;
1112import io .github .mooy1 .infinitylib .player .MessageUtils ;
1617import io .github .thebusybiscuit .slimefun4 .utils .ChestMenuUtils ;
1718import me .mrCookieSlime .Slimefun .Lists .RecipeType ;
1819import me .mrCookieSlime .Slimefun .api .BlockStorage ;
20+ import me .mrCookieSlime .Slimefun .api .SlimefunItemStack ;
1921import me .mrCookieSlime .Slimefun .api .inventory .BlockMenu ;
2022import me .mrCookieSlime .Slimefun .api .inventory .BlockMenuPreset ;
2123import me .mrCookieSlime .Slimefun .api .item_transport .ItemTransportFlow ;
22- import me .mrCookieSlime .Slimefun .cscorelib2 .inventory .ItemUtils ;
2324import me .mrCookieSlime .Slimefun .cscorelib2 .item .CustomItem ;
2425import org .bukkit .ChatColor ;
2526import org .bukkit .Location ;
@@ -58,6 +59,7 @@ public class InfinityWorkbench extends AbstractContainer implements EnergyNetCom
5859 24 , 25 , 26
5960 };
6061 private static final int RECIPE_SLOT = 7 ;
62+ private static final int EMPTY = new MultiFilter (FilterType .MIN_AMOUNT , new ItemFilter [36 ]).hashCode ();
6163
6264 public InfinityWorkbench () {
6365 super (Categories .MAIN_MATERIALS , Items .INFINITY_WORKBENCH , RecipeType .ENHANCED_CRAFTING_TABLE , new ItemStack [] {
@@ -102,7 +104,7 @@ public void onNewInstance(@Nonnull BlockMenu menu, @Nonnull Block b) {
102104 return false ;
103105 });
104106 menu .addMenuClickHandler (RECIPE_SLOT , (p , slot , item , action ) -> {
105- InfinityCategory .openFromWorkBench (p , menu );
107+ InfinityCategory .open (p , new InfinityCategory . BackEntry ( menu , null , null ), true );
106108 return false ;
107109 });
108110 }
@@ -154,7 +156,7 @@ public void craft(@Nonnull Block b, @Nonnull BlockMenu inv, @Nonnull Player p)
154156 return ;
155157 }
156158
157- ItemStack output = getOutput (inv );
159+ SlimefunItemStack output = getOutput (inv );
158160
159161 if (output == null ) { //invalid
160162 MessageUtils .messageWithCD (p , 1000 , ChatColor .RED + "Invalid Recipe!" );
@@ -171,9 +173,10 @@ public void craft(@Nonnull Block b, @Nonnull BlockMenu inv, @Nonnull Player p)
171173 inv .consumeItem (slot );
172174 }
173175 }
174- MessageUtils .message (p , ChatColor .GREEN + "Successfully crafted: " + ChatColor .WHITE + ItemUtils .getItemName (output ));
176+
177+ MessageUtils .message (p , ChatColor .GREEN + "Successfully crafted: " + ChatColor .WHITE + output .getDisplayName ());
175178
176- inv .pushItem (output , OUTPUT_SLOTS );
179+ inv .pushItem (output . clone () , OUTPUT_SLOTS );
177180 setCharge (b .getLocation (), 0 );
178181
179182 }
@@ -185,8 +188,12 @@ public void craft(@Nonnull Block b, @Nonnull BlockMenu inv, @Nonnull Player p)
185188 * @return output if any
186189 */
187190 @ Nullable
188- public ItemStack getOutput (@ Nonnull BlockMenu inv ) {
189- return InfinityRecipes .RECIPES .inverse ().get (MultiFilter .fromMenu (FilterType .MIN_AMOUNT , inv , INPUT_SLOTS ));
191+ public SlimefunItemStack getOutput (@ Nonnull BlockMenu inv ) {
192+ MultiFilter filter = MultiFilter .fromMenu (FilterType .MIN_AMOUNT , inv , INPUT_SLOTS );
193+ if (filter .hashCode () == EMPTY ) {
194+ return null ;
195+ }
196+ return InfinityRecipes .RECIPES .get (filter );
190197 }
191198
192199 @ Nonnull
0 commit comments