diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java index d3625a638..edaf92cec 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AContainer.java @@ -5,12 +5,10 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; @@ -150,34 +148,6 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock this.registerRecipe(new MachineRecipe(seconds, input, output)); } - private Inventory inject(Block b) { - int size = BlockStorage.getInventory(b).toInventory().getSize(); - Inventory inv = Bukkit.createInventory(null, size); - - for (int i = 0; i < size; i++) { - inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); - } - - for (int slot : getOutputSlots()) { - inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot)); - } - - return inv; - } - - protected boolean fits(Block b, ItemStack[] items) { - return inject(b).addItem(items).isEmpty(); - } - - protected void pushItems(Block b, ItemStack[] items) { - Inventory inv = inject(b); - inv.addItem(items); - - for (int slot : getOutputSlots()) { - BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot)); - } - } - @Override public void register(boolean slimefun) { addItemHandler(new BlockTicker() { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java index e7e09abb3..d1cb51de8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/XPCollector.java @@ -3,13 +3,11 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; import java.util.Iterator; import java.util.logging.Level; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Entity; import org.bukkit.entity.ExperienceOrb; import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; @@ -59,31 +57,6 @@ public class XPCollector extends SlimefunItem implements InventoryBlock { } }); } - - private Inventory inject(Block b) { - int size = BlockStorage.getInventory(b).toInventory().getSize(); - Inventory inv = Bukkit.createInventory(null, size); - for (int i = 0; i < size; i++) { - inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); - } - for (int slot : getOutputSlots()) { - inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot)); - } - return inv; - } - - protected boolean fits(Block b, ItemStack... items) { - return inject(b).addItem(items).isEmpty(); - } - - protected void pushItems(Block b, ItemStack... items) { - Inventory inv = inject(b); - inv.addItem(items); - - for (int slot : getOutputSlots()) { - BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot)); - } - } @Override public int[] getInputSlots() { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java index 86e7bfd82..585cfe0d1 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AnimalGrowthAccelerator.java @@ -59,9 +59,7 @@ public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBl private void constructMenu(BlockMenuPreset preset) { for (int i : border) { - preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), - (p, slot, item, action) -> false - ); + preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false); } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java index c7e160477..91f9c90b7 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/AutomatedCraftingChamber.java @@ -2,16 +2,12 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric; import java.util.ArrayList; import java.util.Collections; -import java.util.HashMap; import java.util.List; -import java.util.Map; -import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib; @@ -22,6 +18,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItemSerializer; import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItemSerializer.ItemFlag; +import me.mrCookieSlime.Slimefun.SlimefunPlugin; import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler; @@ -34,14 +31,13 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; import me.mrCookieSlime.Slimefun.api.item_transport.RecipeSorter; +import me.mrCookieSlime.Slimefun.utils.InventoryBlock; -public abstract class AutomatedCraftingChamber extends SlimefunItem { +public abstract class AutomatedCraftingChamber extends SlimefunItem implements InventoryBlock { private static final int[] border = {0, 1, 3, 4, 5, 7, 8, 13, 14, 15, 16, 17, 50, 51, 52, 53}; private static final int[] border_in = {9, 10, 11, 12, 13, 18, 22, 27, 31, 36, 40, 45, 46, 47, 48, 49}; private static final int[] border_out = {23, 24, 25, 26, 32, 35, 41, 42, 43, 44}; - - public static Map recipes = new HashMap<>(); public AutomatedCraftingChamber(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) { super(category, item, name, recipeType, recipe); @@ -164,43 +160,17 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem { } public abstract int getEnergyConsumption(); - + + @Override public int[] getInputSlots() { return new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39}; } + @Override public int[] getOutputSlots() { return new int[] {33, 34}; } - private Inventory inject(Block b) { - int size = BlockStorage.getInventory(b).toInventory().getSize(); - Inventory inv = Bukkit.createInventory(null, size); - - for (int i = 0; i < size; i++) { - inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); - } - - for (int slot : getOutputSlots()) { - inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot)); - } - - return inv; - } - - protected boolean fits(Block b, ItemStack[] items) { - return inject(b).addItem(items).isEmpty(); - } - - protected void pushItems(Block b, ItemStack[] items) { - Inventory inv = inject(b); - inv.addItem(items); - - for (int slot : getOutputSlots()) { - BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot)); - } - } - @Override public void register(boolean slimefun) { addItemHandler(new BlockTicker() { @@ -241,11 +211,11 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem { String input = builder.toString(); - if (recipes.containsKey(input)) { - ItemStack output = recipes.get(input).clone(); + if (SlimefunPlugin.getUtilities().automatedCraftingChamberRecipes.containsKey(input)) { + ItemStack output = SlimefunPlugin.getUtilities().automatedCraftingChamberRecipes.get(input).clone(); - if (fits(b, new ItemStack[] {output})) { - pushItems(b, new ItemStack[] {output}); + if (fits(b, output)) { + pushItems(b, output); ChargableBlock.addCharge(b, -getEnergyConsumption()); for (int j = 0; j < 9; j++) { if (menu.getItemInSlot(getInputSlots()[j]) != null) menu.replaceExistingItem(getInputSlots()[j], InvUtils.decreaseItem(menu.getItemInSlot(getInputSlots()[j]), 1)); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java index c08804dfd..dbded71b0 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/FluidPump.java @@ -5,14 +5,12 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; @@ -151,30 +149,5 @@ public class FluidPump extends SlimefunItem implements InventoryBlock { super.register(slimefun); } - - private Inventory inject(Block b) { - int size = BlockStorage.getInventory(b).toInventory().getSize(); - Inventory inv = Bukkit.createInventory(null, size); - for (int i = 0; i < size; i++) { - inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); - } - for (int slot : getOutputSlots()) { - inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot)); - } - return inv; - } - - protected boolean fits(Block b, ItemStack... items) { - return inject(b).addItem(items).isEmpty(); - } - - protected void pushItems(Block b, ItemStack... items) { - Inventory inv = inject(b); - inv.addItem(items); - - for (int slot: getOutputSlots()) { - BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot)); - } - } } diff --git a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java index 30b22e855..1e3c27c53 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/MiscSetup.java @@ -120,7 +120,7 @@ public final class MiscSetup { i++; } - AutomatedCraftingChamber.recipes.put(builder.toString(), RecipeType.getRecipeOutputList(machine, inputs)); + SlimefunPlugin.getUtilities().automatedCraftingChamberRecipes.put(builder.toString(), RecipeType.getRecipeOutputList(machine, inputs)); } } diff --git a/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java b/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java index 393bba999..f7f29e111 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java +++ b/src/me/mrCookieSlime/Slimefun/utils/InventoryBlock.java @@ -2,11 +2,18 @@ package me.mrCookieSlime.Slimefun.utils; import java.util.function.Consumer; +import org.bukkit.Bukkit; +import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.entity.Player; +import org.bukkit.inventory.Inventory; +import org.bukkit.inventory.ItemStack; import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule.Action; +import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem; +import me.mrCookieSlime.CSCoreLibPlugin.general.Math.Calculator; import me.mrCookieSlime.Slimefun.SlimefunPlugin; +import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset; import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow; @@ -35,5 +42,34 @@ public interface InventoryBlock { } }; } + + default Inventory inject(Block b) { + int size = getOutputSlots().length; + Inventory inv = Bukkit.createInventory(null, Calculator.formToLine(size)); + + for (int i = 0; i < inv.getSize(); i++) { + if (i < size) { + inv.setItem(i, BlockStorage.getInventory(b).getItemInSlot(getOutputSlots()[i])); + } + else { + inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US")); + } + } + + return inv; + } + + default boolean fits(Block b, ItemStack... items) { + return inject(b).addItem(items).isEmpty(); + } + + default void pushItems(Block b, ItemStack... items) { + Inventory inv = inject(b); + inv.addItem(items); + + for (int i = 0; i < getOutputSlots().length; i++) { + BlockStorage.getInventory(b).replaceExistingItem(getOutputSlots()[i], inv.getItem(i)); + } + } } diff --git a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java index eecff290c..9a118a67d 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/Utilities.java +++ b/src/me/mrCookieSlime/Slimefun/utils/Utilities.java @@ -63,6 +63,8 @@ public final class Utilities { public final List currentlyEnabledCategories = new ArrayList<>(); + public final Map automatedCraftingChamberRecipes = new HashMap<>(); + public final Map worlds = new HashMap<>(); public final Set loadedTickers = new HashSet<>();