From 819a59d3a4c1d0e1e90110234a9844810144db04 Mon Sep 17 00:00:00 2001 From: TheBusyBiscuit Date: Sun, 13 Oct 2019 16:37:13 +0200 Subject: [PATCH] [CI skip] Micro-optimizations --- .../SlimefunItem/abstractItems/ADrill.java | 10 ++- .../SlimefunItem/abstractItems/AFarm.java | 35 +-------- .../abstractItems/AGenerator.java | 25 +----- .../SlimefunItem/abstractItems/AReactor.java | 77 +++++-------------- .../machines/ReactorAccessPort.java | 30 -------- .../machines/electric/geo/GEOMiner.java | 10 ++- .../machines/electric/geo/OilPump.java | 4 +- .../Slimefun/api/inventory/BlockMenu.java | 31 ++++++++ .../Slimefun/utils/MachineHelper.java | 23 ------ 9 files changed, 67 insertions(+), 178 deletions(-) diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java index da1b4b33c..1532f24bc 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/ADrill.java @@ -16,6 +16,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType; import me.mrCookieSlime.Slimefun.Objects.Category; import me.mrCookieSlime.Slimefun.api.BlockStorage; import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock; +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.utils.MachineHelper; @@ -104,10 +105,11 @@ public abstract class ADrill extends AContainer { @Override protected void tick(Block b) { + BlockMenu menu = BlockStorage.getInventory(b); if (isProcessing(b)) { int timeleft = progress.get(b); if (timeleft > 0) { - MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar()); + MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar()); if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; ChargableBlock.addCharge(b, -getEnergyConsumption()); @@ -115,8 +117,8 @@ public abstract class ADrill extends AContainer { progress.put(b, timeleft - 1); } else { - BlockStorage.getInventory(b).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); - pushItems(b, processing.get(b).getOutput()); + menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); + menu.pushItem(processing.get(b).getOutput()[0], getOutputSlots()); progress.remove(b); processing.remove(b); @@ -124,7 +126,7 @@ public abstract class ADrill extends AContainer { } else if (OreGenSystem.getSupplies(getOreGenResource(), b.getChunk(), false) > 0) { MachineRecipe r = new MachineRecipe(getProcessingTime() / getSpeed(), new ItemStack[0], this.getOutputItems()); - if (!fits(b, r.getOutput())) return; + if (!menu.fits(r.getOutput()[0], getOutputSlots())) return; processing.put(b, r); progress.put(b, r.getTicks()); OreGenSystem.setSupplies(getOreGenResource(), b.getChunk(), OreGenSystem.getSupplies(getOreGenResource(), b.getChunk(), false) - 1); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java index d81ec62c7..dc4e801c2 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AFarm.java @@ -1,12 +1,10 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems; -import org.bukkit.Bukkit; import org.bukkit.Location; 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 io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction; @@ -112,13 +110,14 @@ public abstract class AFarm extends SlimefunItem { for (int z = -radius; z <= radius; z++) { Block block = new Location(b.getWorld(), b.getX() + (double) x, b.getY() + 2.0, b.getZ() + (double) z).getBlock(); if (canHarvest(block)) { + BlockMenu menu = BlockStorage.getInventory(b.getLocation()); ItemStack item = harvest(block); - if (!fits(block, item)) { + if (!menu.fits(item, getOutputSlots())) { return; } - pushItems(b, item); + menu.pushItem(item, getOutputSlots()); ChargableBlock.addCharge(b, -getEnergyConsumption()); return; @@ -143,32 +142,4 @@ public abstract class AFarm extends SlimefunItem { } }); } - - 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/Objects/SlimefunItem/abstractItems/AGenerator.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java index e4c870d53..2b85937f3 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AGenerator.java @@ -7,14 +7,12 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Location; 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 org.bukkit.inventory.meta.ItemMeta; @@ -188,7 +186,7 @@ public abstract class AGenerator extends SlimefunItem implements RecipeDisplayIt if (SlimefunManager.isItemSimiliar(fuel, new ItemStack(Material.LAVA_BUCKET), true) || SlimefunManager.isItemSimiliar(fuel, SlimefunItems.BUCKET_OF_FUEL, true) || SlimefunManager.isItemSimiliar(fuel, SlimefunItems.BUCKET_OF_OIL, true)) { - pushItems(inv, new ItemStack(Material.BUCKET)); + inv.pushItem(new ItemStack(Material.BUCKET), getOutputSlots()); } inv.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); @@ -237,27 +235,6 @@ public abstract class AGenerator extends SlimefunItem implements RecipeDisplayIt return this.recipes; } - private Inventory inject(BlockMenu menu) { - int size = menu.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, menu.getItemInSlot(slot)); - } - return inv; - } - - protected void pushItems(BlockMenu menu, ItemStack... items) { - Inventory inv = inject(menu); - inv.addItem(items); - - for (int slot : getOutputSlots()) { - menu.replaceExistingItem(slot, inv.getItem(slot)); - } - } - @Override public String getRecipeSectionLabel() { return "&7\u21E9 Available Types of Fuel \u21E9"; diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java index ce752ed5a..f8a5eede2 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/abstractItems/AReactor.java @@ -5,7 +5,6 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; -import java.util.Optional; import java.util.Random; import java.util.Set; import java.util.logging.Level; @@ -17,7 +16,6 @@ import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; @@ -256,6 +254,7 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem @Override public double generateEnergy(final Location l, SlimefunItem sf, Config data) { + BlockMenu menu = BlockStorage.getInventory(l); BlockMenu port = getAccessPort(l); if (isProcessing(l)) { @@ -268,14 +267,14 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem ChargableBlock.addCharge(l, getEnergyProduction()); space -= produced; } - if (space >= produced || !BlockStorage.getLocationInfo(l, "reactor-mode").equals("generator")) { + if (space >= produced || !"generator".equals(BlockStorage.getLocationInfo(l, "reactor-mode"))) { progress.put(l, timeleft - 1); Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> { if (!l.getBlock().getRelative(cooling[new Random().nextInt(cooling.length)]).isLiquid()) explode.add(l); }); - MachineHelper.updateProgressbar(BlockStorage.getInventory(l), 22, timeleft, processing.get(l).getTicks(), getProgressBar()); + MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(l).getTicks(), getProgressBar()); if (needsCooling()) { boolean coolant = (processing.get(l).getTicks() - timeleft) % 25 == 0; @@ -284,15 +283,15 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem if (port != null) { for (int slot: getCoolantSlots()) { if (SlimefunManager.isItemSimiliar(port.getItemInSlot(slot), getCoolant(), true)) { - port.replaceExistingItem(slot, pushItems(l, port.getItemInSlot(slot), getCoolantSlots())); + port.replaceExistingItem(slot, menu.pushItem(port.getItemInSlot(slot), getCoolantSlots())); } } } boolean explosion = true; for (int slot: getCoolantSlots()) { - if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(l).getItemInSlot(slot), getCoolant(), true)) { - BlockStorage.getInventory(l).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(l).getItemInSlot(slot), 1)); + if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), getCoolant(), true)) { + menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1)); ReactorHologram.update(l, "&b\u2744 &7100%"); explosion = false; break; @@ -314,12 +313,16 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem return 0; } else { - BlockStorage.getInventory(l).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); - if (processing.get(l).getOutput() != null) pushItems(l, processing.get(l).getOutput()); + menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); + if (processing.get(l).getOutput() != null) { + menu.pushItem(processing.get(l).getOutput(), getOutputSlots()); + } if (port != null) { for (int slot: getOutputSlots()) { - if (BlockStorage.getInventory(l).getItemInSlot(slot) != null) BlockStorage.getInventory(l).replaceExistingItem(slot, ReactorAccessPort.pushItems(port.getLocation(), BlockStorage.getInventory(l).getItemInSlot(slot))); + if (menu.getItemInSlot(slot) != null) { + menu.replaceExistingItem(slot, port.pushItem(menu.getItemInSlot(slot), ReactorAccessPort.getOutputSlots())); + } } } @@ -329,11 +332,12 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem } } else { - BlockMenu menu = BlockStorage.getInventory(l); Map found = new HashMap<>(); MachineFuel fuel = findRecipe(menu, found); - if (port != null) restockCoolant(l, port); + if (port != null) { + restockCoolant(menu, port); + } if (fuel != null) { for (Map.Entry entry: found.entrySet()) { @@ -364,10 +368,10 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem }); } - private void restockCoolant(Location l, BlockMenu port) { + private void restockCoolant(BlockMenu menu, BlockMenu port) { for (int slot: getFuelSlots()) { for (MachineFuel recipe: recipes) { - if (SlimefunManager.isItemSimiliar(port.getItemInSlot(slot), recipe.getInput(), true) && pushItems(l, new CustomItem(port.getItemInSlot(slot), 1), getFuelSlots()) == null) { + if (SlimefunManager.isItemSimiliar(port.getItemInSlot(slot), recipe.getInput(), true) && menu.fits(new CustomItem(port.getItemInSlot(slot), 1), getFuelSlots())) { port.replaceExistingItem(slot, InvUtils.decreaseItem(port.getItemInSlot(slot), 1)); return; } @@ -388,51 +392,6 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem return null; } - private Inventory inject(Location l) { - int size = BlockStorage.getInventory(l).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(l).getItemInSlot(slot)); - } - return inv; - } - - private Inventory inject(Location l, int[] slots) { - int size = BlockStorage.getInventory(l).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 : slots) { - inv.setItem(slot, BlockStorage.getInventory(l).getItemInSlot(slot)); - } - return inv; - } - - public void pushItems(Location l, ItemStack item) { - Inventory inv = inject(l); - inv.addItem(item); - - for (int slot: getOutputSlots()) { - BlockStorage.getInventory(l).replaceExistingItem(slot, inv.getItem(slot)); - } - } - - public ItemStack pushItems(Location l, ItemStack item, int[] slots) { - Inventory inv = inject(l, slots); - Optional optional = inv.addItem(item).values().stream().findFirst(); - - for (int slot : slots) { - BlockStorage.getInventory(l).replaceExistingItem(slot, inv.getItem(slot)); - } - - if (optional.isPresent()) return optional.get(); - else return null; - } - public abstract ItemStack getProgressBar(); public Set getFuelTypes() { diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java index fe7a29d5a..3bf3299c8 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/ReactorAccessPort.java @@ -1,13 +1,9 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines; -import java.util.Map; - -import org.bukkit.Bukkit; import org.bukkit.Location; 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.ProtectableAction; @@ -180,30 +176,4 @@ public class ReactorAccessPort extends SlimefunItem { return null; } - private static Inventory inject(Location l) { - int size = BlockStorage.getInventory(l).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(l).getItemInSlot(slot)); - } - - return inv; - } - - public static ItemStack pushItems(Location l, ItemStack item) { - Inventory inv = inject(l); - Map map = inv.addItem(item); - - for (int slot: getOutputSlots()) { - BlockStorage.getInventory(l).replaceExistingItem(slot, inv.getItem(slot)); - } - - return map.values().stream().findAny().orElse(null); - } - } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOMiner.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOMiner.java index 4e55bb24a..3c495b6cd 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOMiner.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/GEOMiner.java @@ -148,10 +148,12 @@ public abstract class GEOMiner extends AContainer implements InventoryBlock, Rec @Override protected void tick(Block b) { + BlockMenu menu = BlockStorage.getInventory(b); + if (isProcessing(b)) { int timeleft = progress.get(b); if (timeleft > 0) { - MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 4, timeleft, processing.get(b).getTicks(), getProgressBar()); + MachineHelper.updateProgressbar(menu, 4, timeleft, processing.get(b).getTicks(), getProgressBar()); if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return; ChargableBlock.addCharge(b, -getEnergyConsumption()); @@ -159,8 +161,8 @@ public abstract class GEOMiner extends AContainer implements InventoryBlock, Rec progress.put(b, timeleft - 1); } else { - BlockStorage.getInventory(b).replaceExistingItem(4, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); - pushItems(b, processing.get(b).getOutput()); + menu.replaceExistingItem(4, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); + menu.pushItem(processing.get(b).getOutput()[0], getOutputSlots()); progress.remove(b); processing.remove(b); @@ -182,7 +184,7 @@ public abstract class GEOMiner extends AContainer implements InventoryBlock, Rec int supplies = OreGenSystem.getSupplies(resource, chunk, false); if (supplies > 0) { MachineRecipe r = new MachineRecipe(getProcessingTime() / getSpeed(), new ItemStack[0], new ItemStack[] {resource.getItem().clone()}); - if (!fits(b, r.getOutput())) return; + if (!menu.fits(r.getOutput()[0], getOutputSlots())) return; processing.put(b, r); progress.put(b, r.getTicks()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/OilPump.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/OilPump.java index c339b89f9..5e7f11f7a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/OilPump.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/machines/electric/geo/OilPump.java @@ -88,7 +88,7 @@ public abstract class OilPump extends AContainer { } else { inv.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " ")); - pushItems(b, processing.get(b).getOutput()); + inv.pushItem(SlimefunItems.BUCKET_OF_OIL, getOutputSlots()); progress.remove(b); processing.remove(b); @@ -101,7 +101,7 @@ public abstract class OilPump extends AContainer { for (int slot: getInputSlots()) { if (SlimefunManager.isItemSimiliar(inv.getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) { MachineRecipe r = new MachineRecipe(26, new ItemStack[0], new ItemStack[] {SlimefunItems.BUCKET_OF_OIL}); - if (!fits(b, r.getOutput())) return; + if (!inv.fits(SlimefunItems.BUCKET_OF_OIL, getOutputSlots())) return; inv.replaceExistingItem(slot, InvUtils.decreaseItem(inv.getItemInSlot(slot), 1)); processing.put(b, r); progress.put(b, r.getTicks()); diff --git a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java index bda1ccea1..a609deb0f 100644 --- a/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java +++ b/src/me/mrCookieSlime/Slimefun/api/inventory/BlockMenu.java @@ -10,7 +10,10 @@ import org.bukkit.entity.HumanEntity; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import io.github.thebusybiscuit.cscorelib2.inventory.InvUtils; +import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils; import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config; +import me.mrCookieSlime.CSCoreLibPlugin.cscorelib2.item.CustomItem; import me.mrCookieSlime.Slimefun.api.Slimefun; public class BlockMenu extends DirtyChestMenu { @@ -125,6 +128,34 @@ public class BlockMenu extends DirtyChestMenu { markDirty(); } + public boolean fits(ItemStack item, int... slots) { + return InvUtils.fits(toInventory(), item, slots); + } + + public ItemStack pushItem(ItemStack item, int... slots) { + int amount = item.getAmount(); + for (int slot: slots) { + if (amount <= 0) break; + + ItemStack stack = getItemInSlot(slot); + if (stack == null) { + replaceExistingItem(slot, item); + return null; + } + else if (stack.getAmount() < stack.getMaxStackSize() && ItemUtils.canStack(item, stack)) { + amount -= (stack.getMaxStackSize() - stack.getAmount()); + stack.setAmount(Math.min(stack.getAmount() + item.getAmount(), stack.getMaxStackSize())); + } + } + + if (amount > 0) { + return new CustomItem(item, amount); + } + else { + return null; + } + } + public void close() { for (HumanEntity human: new ArrayList<>(toInventory().getViewers())) { human.closeInventory(); diff --git a/src/me/mrCookieSlime/Slimefun/utils/MachineHelper.java b/src/me/mrCookieSlime/Slimefun/utils/MachineHelper.java index 93910eea4..ba18afb1e 100644 --- a/src/me/mrCookieSlime/Slimefun/utils/MachineHelper.java +++ b/src/me/mrCookieSlime/Slimefun/utils/MachineHelper.java @@ -9,8 +9,6 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.Damageable; import org.bukkit.inventory.meta.ItemMeta; -import io.github.thebusybiscuit.cscorelib2.inventory.InvUtils; -import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils; import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu; public final class MachineHelper { @@ -104,26 +102,5 @@ public final class MachineHelper { menu.replaceExistingItem(slot, item); } - - public static boolean fits(BlockMenu menu, ItemStack item, int... slots) { - return InvUtils.fits(menu.toInventory(), item, slots); - } - - public static void pushItems(BlockMenu menu, ItemStack item, int... slots) { - int amount = item.getAmount(); - for (int slot: slots) { - if (amount <= 0) break; - - ItemStack stack = menu.getItemInSlot(slot); - if (stack == null) { - menu.replaceExistingItem(slot, item); - return; - } - else if (stack.getAmount() < stack.getMaxStackSize() && ItemUtils.canStack(item, stack)) { - amount -= (stack.getMaxStackSize() - stack.getAmount()); - stack.setAmount(Math.min(stack.getAmount() + item.getAmount(), stack.getMaxStackSize())); - } - } - } }