mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 11:45:51 +00:00
Minor performance improvement
This commit is contained in:
parent
5ba6ea867f
commit
40f2ef862a
@ -5,12 +5,10 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
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));
|
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
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void register(boolean slimefun) {
|
||||||
addItemHandler(new BlockTicker() {
|
addItemHandler(new BlockTicker() {
|
||||||
|
@ -3,13 +3,11 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
|||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
import org.bukkit.entity.ExperienceOrb;
|
import org.bukkit.entity.ExperienceOrb;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||||
@ -60,31 +58,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
|
@Override
|
||||||
public int[] getInputSlots() {
|
public int[] getInputSlots() {
|
||||||
return new int[0];
|
return new int[0];
|
||||||
|
@ -59,9 +59,7 @@ public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBl
|
|||||||
|
|
||||||
private void constructMenu(BlockMenuPreset preset) {
|
private void constructMenu(BlockMenuPreset preset) {
|
||||||
for (int i : border) {
|
for (int i : border) {
|
||||||
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
|
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
|
||||||
(p, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2,16 +2,12 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
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.CustomItem;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItemSerializer;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItemSerializer;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItemSerializer.ItemFlag;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItemSerializer.ItemFlag;
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
||||||
@ -34,15 +31,14 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
|||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.RecipeSorter;
|
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 = {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_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};
|
private static final int[] border_out = {23, 24, 25, 26, 32, 35, 41, 42, 43, 44};
|
||||||
|
|
||||||
public static Map<String, ItemStack> recipes = new HashMap<>();
|
|
||||||
|
|
||||||
public AutomatedCraftingChamber(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public AutomatedCraftingChamber(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, name, recipeType, recipe);
|
||||||
|
|
||||||
@ -165,42 +161,16 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem {
|
|||||||
|
|
||||||
public abstract int getEnergyConsumption();
|
public abstract int getEnergyConsumption();
|
||||||
|
|
||||||
|
@Override
|
||||||
public int[] getInputSlots() {
|
public int[] getInputSlots() {
|
||||||
return new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39};
|
return new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int[] getOutputSlots() {
|
public int[] getOutputSlots() {
|
||||||
return new int[] {33, 34};
|
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
|
@Override
|
||||||
public void register(boolean slimefun) {
|
public void register(boolean slimefun) {
|
||||||
addItemHandler(new BlockTicker() {
|
addItemHandler(new BlockTicker() {
|
||||||
@ -241,11 +211,11 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem {
|
|||||||
|
|
||||||
String input = builder.toString();
|
String input = builder.toString();
|
||||||
|
|
||||||
if (recipes.containsKey(input)) {
|
if (SlimefunPlugin.getUtilities().automatedCraftingChamberRecipes.containsKey(input)) {
|
||||||
ItemStack output = recipes.get(input).clone();
|
ItemStack output = SlimefunPlugin.getUtilities().automatedCraftingChamberRecipes.get(input).clone();
|
||||||
|
|
||||||
if (fits(b, new ItemStack[] {output})) {
|
if (fits(b, output)) {
|
||||||
pushItems(b, new ItemStack[] {output});
|
pushItems(b, output);
|
||||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
||||||
for (int j = 0; j < 9; j++) {
|
for (int j = 0; j < 9; j++) {
|
||||||
if (menu.getItemInSlot(getInputSlots()[j]) != null) menu.replaceExistingItem(getInputSlots()[j], InvUtils.decreaseItem(menu.getItemInSlot(getInputSlots()[j]), 1));
|
if (menu.getItemInSlot(getInputSlots()[j]) != null) menu.replaceExistingItem(getInputSlots()[j], InvUtils.decreaseItem(menu.getItemInSlot(getInputSlots()[j]), 1));
|
||||||
|
@ -5,14 +5,12 @@ import java.util.HashMap;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||||
import org.bukkit.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||||
@ -152,29 +150,4 @@ public class FluidPump extends SlimefunItem implements InventoryBlock {
|
|||||||
super.register(slimefun);
|
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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -120,7 +120,7 @@ public final class MiscSetup {
|
|||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
||||||
AutomatedCraftingChamber.recipes.put(builder.toString(), RecipeType.getRecipeOutputList(machine, inputs));
|
SlimefunPlugin.getUtilities().automatedCraftingChamberRecipes.put(builder.toString(), RecipeType.getRecipeOutputList(machine, inputs));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,18 @@ package me.mrCookieSlime.Slimefun.utils;
|
|||||||
|
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.protection.ProtectionModule.Action;
|
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.SlimefunPlugin;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
||||||
|
|
||||||
@ -36,4 +43,33 @@ 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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -63,6 +63,8 @@ public final class Utilities {
|
|||||||
|
|
||||||
public final List<Category> currentlyEnabledCategories = new ArrayList<>();
|
public final List<Category> currentlyEnabledCategories = new ArrayList<>();
|
||||||
|
|
||||||
|
public final Map<String, ItemStack> automatedCraftingChamberRecipes = new HashMap<>();
|
||||||
|
|
||||||
public final Map<String, BlockStorage> worlds = new HashMap<>();
|
public final Map<String, BlockStorage> worlds = new HashMap<>();
|
||||||
public final Set<String> loadedTickers = new HashSet<>();
|
public final Set<String> loadedTickers = new HashSet<>();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user