mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 11:45:51 +00:00
[CI skip] Micro-optimizations
This commit is contained in:
parent
d3b3fd15bd
commit
819a59d3a4
@ -16,6 +16,7 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
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.inventory.BlockMenuPreset;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
|
||||||
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
||||||
@ -104,10 +105,11 @@ public abstract class ADrill extends AContainer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(b);
|
||||||
if (isProcessing(b)) {
|
if (isProcessing(b)) {
|
||||||
int timeleft = progress.get(b);
|
int timeleft = progress.get(b);
|
||||||
if (timeleft > 0) {
|
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;
|
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
||||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
||||||
@ -115,8 +117,8 @@ public abstract class ADrill extends AContainer {
|
|||||||
progress.put(b, timeleft - 1);
|
progress.put(b, timeleft - 1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
||||||
pushItems(b, processing.get(b).getOutput());
|
menu.pushItem(processing.get(b).getOutput()[0], getOutputSlots());
|
||||||
|
|
||||||
progress.remove(b);
|
progress.remove(b);
|
||||||
processing.remove(b);
|
processing.remove(b);
|
||||||
@ -124,7 +126,7 @@ public abstract class ADrill extends AContainer {
|
|||||||
}
|
}
|
||||||
else if (OreGenSystem.getSupplies(getOreGenResource(), b.getChunk(), false) > 0) {
|
else if (OreGenSystem.getSupplies(getOreGenResource(), b.getChunk(), false) > 0) {
|
||||||
MachineRecipe r = new MachineRecipe(getProcessingTime() / getSpeed(), new ItemStack[0], this.getOutputItems());
|
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);
|
processing.put(b, r);
|
||||||
progress.put(b, r.getTicks());
|
progress.put(b, r.getTicks());
|
||||||
OreGenSystem.setSupplies(getOreGenResource(), b.getChunk(), OreGenSystem.getSupplies(getOreGenResource(), b.getChunk(), false) - 1);
|
OreGenSystem.setSupplies(getOreGenResource(), b.getChunk(), OreGenSystem.getSupplies(getOreGenResource(), b.getChunk(), false) - 1);
|
||||||
|
@ -1,12 +1,10 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems;
|
||||||
|
|
||||||
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.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 io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
||||||
@ -112,13 +110,14 @@ public abstract class AFarm extends SlimefunItem {
|
|||||||
for (int z = -radius; z <= radius; z++) {
|
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();
|
Block block = new Location(b.getWorld(), b.getX() + (double) x, b.getY() + 2.0, b.getZ() + (double) z).getBlock();
|
||||||
if (canHarvest(block)) {
|
if (canHarvest(block)) {
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(b.getLocation());
|
||||||
ItemStack item = harvest(block);
|
ItemStack item = harvest(block);
|
||||||
|
|
||||||
if (!fits(block, item)) {
|
if (!menu.fits(item, getOutputSlots())) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
pushItems(b, item);
|
menu.pushItem(item, getOutputSlots());
|
||||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
||||||
|
|
||||||
return;
|
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));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,14 +7,12 @@ import java.util.List;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
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.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 org.bukkit.inventory.meta.ItemMeta;
|
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)
|
if (SlimefunManager.isItemSimiliar(fuel, new ItemStack(Material.LAVA_BUCKET), true)
|
||||||
|| SlimefunManager.isItemSimiliar(fuel, SlimefunItems.BUCKET_OF_FUEL, true)
|
|| SlimefunManager.isItemSimiliar(fuel, SlimefunItems.BUCKET_OF_FUEL, true)
|
||||||
|| SlimefunManager.isItemSimiliar(fuel, SlimefunItems.BUCKET_OF_OIL, 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), " "));
|
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;
|
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
|
@Override
|
||||||
public String getRecipeSectionLabel() {
|
public String getRecipeSectionLabel() {
|
||||||
return "&7\u21E9 Available Types of Fuel \u21E9";
|
return "&7\u21E9 Available Types of Fuel \u21E9";
|
||||||
|
@ -5,7 +5,6 @@ import java.util.HashMap;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
@ -17,7 +16,6 @@ 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.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
@ -256,6 +254,7 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double generateEnergy(final Location l, SlimefunItem sf, Config data) {
|
public double generateEnergy(final Location l, SlimefunItem sf, Config data) {
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(l);
|
||||||
BlockMenu port = getAccessPort(l);
|
BlockMenu port = getAccessPort(l);
|
||||||
|
|
||||||
if (isProcessing(l)) {
|
if (isProcessing(l)) {
|
||||||
@ -268,14 +267,14 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
|
|||||||
ChargableBlock.addCharge(l, getEnergyProduction());
|
ChargableBlock.addCharge(l, getEnergyProduction());
|
||||||
space -= produced;
|
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);
|
progress.put(l, timeleft - 1);
|
||||||
|
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||||
if (!l.getBlock().getRelative(cooling[new Random().nextInt(cooling.length)]).isLiquid()) explode.add(l);
|
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()) {
|
if (needsCooling()) {
|
||||||
boolean coolant = (processing.get(l).getTicks() - timeleft) % 25 == 0;
|
boolean coolant = (processing.get(l).getTicks() - timeleft) % 25 == 0;
|
||||||
@ -284,15 +283,15 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
|
|||||||
if (port != null) {
|
if (port != null) {
|
||||||
for (int slot: getCoolantSlots()) {
|
for (int slot: getCoolantSlots()) {
|
||||||
if (SlimefunManager.isItemSimiliar(port.getItemInSlot(slot), getCoolant(), true)) {
|
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;
|
boolean explosion = true;
|
||||||
for (int slot: getCoolantSlots()) {
|
for (int slot: getCoolantSlots()) {
|
||||||
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(l).getItemInSlot(slot), getCoolant(), true)) {
|
if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), getCoolant(), true)) {
|
||||||
BlockStorage.getInventory(l).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(l).getItemInSlot(slot), 1));
|
menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
|
||||||
ReactorHologram.update(l, "&b\u2744 &7100%");
|
ReactorHologram.update(l, "&b\u2744 &7100%");
|
||||||
explosion = false;
|
explosion = false;
|
||||||
break;
|
break;
|
||||||
@ -314,12 +313,16 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockStorage.getInventory(l).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
||||||
if (processing.get(l).getOutput() != null) pushItems(l, processing.get(l).getOutput());
|
if (processing.get(l).getOutput() != null) {
|
||||||
|
menu.pushItem(processing.get(l).getOutput(), getOutputSlots());
|
||||||
|
}
|
||||||
|
|
||||||
if (port != null) {
|
if (port != null) {
|
||||||
for (int slot: getOutputSlots()) {
|
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 {
|
else {
|
||||||
BlockMenu menu = BlockStorage.getInventory(l);
|
|
||||||
Map<Integer, Integer> found = new HashMap<>();
|
Map<Integer, Integer> found = new HashMap<>();
|
||||||
MachineFuel fuel = findRecipe(menu, found);
|
MachineFuel fuel = findRecipe(menu, found);
|
||||||
|
|
||||||
if (port != null) restockCoolant(l, port);
|
if (port != null) {
|
||||||
|
restockCoolant(menu, port);
|
||||||
|
}
|
||||||
|
|
||||||
if (fuel != null) {
|
if (fuel != null) {
|
||||||
for (Map.Entry<Integer, Integer> entry: found.entrySet()) {
|
for (Map.Entry<Integer, Integer> 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 (int slot: getFuelSlots()) {
|
||||||
for (MachineFuel recipe: recipes) {
|
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));
|
port.replaceExistingItem(slot, InvUtils.decreaseItem(port.getItemInSlot(slot), 1));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -388,51 +392,6 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
|
|||||||
return null;
|
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<ItemStack> 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 abstract ItemStack getProgressBar();
|
||||||
|
|
||||||
public Set<MachineFuel> getFuelTypes() {
|
public Set<MachineFuel> getFuelTypes() {
|
||||||
|
@ -1,13 +1,9 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
|
||||||
|
|
||||||
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.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.Inventory;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
||||||
@ -180,30 +176,4 @@ public class ReactorAccessPort extends SlimefunItem {
|
|||||||
return null;
|
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<Integer, ItemStack> map = inv.addItem(item);
|
|
||||||
|
|
||||||
for (int slot: getOutputSlots()) {
|
|
||||||
BlockStorage.getInventory(l).replaceExistingItem(slot, inv.getItem(slot));
|
|
||||||
}
|
|
||||||
|
|
||||||
return map.values().stream().findAny().orElse(null);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -148,10 +148,12 @@ public abstract class GEOMiner extends AContainer implements InventoryBlock, Rec
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(b);
|
||||||
|
|
||||||
if (isProcessing(b)) {
|
if (isProcessing(b)) {
|
||||||
int timeleft = progress.get(b);
|
int timeleft = progress.get(b);
|
||||||
if (timeleft > 0) {
|
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;
|
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
||||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
||||||
@ -159,8 +161,8 @@ public abstract class GEOMiner extends AContainer implements InventoryBlock, Rec
|
|||||||
progress.put(b, timeleft - 1);
|
progress.put(b, timeleft - 1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(4, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
menu.replaceExistingItem(4, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
||||||
pushItems(b, processing.get(b).getOutput());
|
menu.pushItem(processing.get(b).getOutput()[0], getOutputSlots());
|
||||||
|
|
||||||
progress.remove(b);
|
progress.remove(b);
|
||||||
processing.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);
|
int supplies = OreGenSystem.getSupplies(resource, chunk, false);
|
||||||
if (supplies > 0) {
|
if (supplies > 0) {
|
||||||
MachineRecipe r = new MachineRecipe(getProcessingTime() / getSpeed(), new ItemStack[0], new ItemStack[] {resource.getItem().clone()});
|
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);
|
processing.put(b, r);
|
||||||
progress.put(b, r.getTicks());
|
progress.put(b, r.getTicks());
|
||||||
|
@ -88,7 +88,7 @@ public abstract class OilPump extends AContainer {
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
inv.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
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);
|
progress.remove(b);
|
||||||
processing.remove(b);
|
processing.remove(b);
|
||||||
@ -101,7 +101,7 @@ public abstract class OilPump extends AContainer {
|
|||||||
for (int slot: getInputSlots()) {
|
for (int slot: getInputSlots()) {
|
||||||
if (SlimefunManager.isItemSimiliar(inv.getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) {
|
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});
|
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));
|
inv.replaceExistingItem(slot, InvUtils.decreaseItem(inv.getItemInSlot(slot), 1));
|
||||||
processing.put(b, r);
|
processing.put(b, r);
|
||||||
progress.put(b, r.getTicks());
|
progress.put(b, r.getTicks());
|
||||||
|
@ -10,7 +10,10 @@ import org.bukkit.entity.HumanEntity;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
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.Configuration.Config;
|
||||||
|
import me.mrCookieSlime.CSCoreLibPlugin.cscorelib2.item.CustomItem;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
public class BlockMenu extends DirtyChestMenu {
|
public class BlockMenu extends DirtyChestMenu {
|
||||||
@ -125,6 +128,34 @@ public class BlockMenu extends DirtyChestMenu {
|
|||||||
markDirty();
|
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() {
|
public void close() {
|
||||||
for (HumanEntity human: new ArrayList<>(toInventory().getViewers())) {
|
for (HumanEntity human: new ArrayList<>(toInventory().getViewers())) {
|
||||||
human.closeInventory();
|
human.closeInventory();
|
||||||
|
@ -9,8 +9,6 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
import org.bukkit.inventory.meta.Damageable;
|
import org.bukkit.inventory.meta.Damageable;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
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;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
|
|
||||||
public final class MachineHelper {
|
public final class MachineHelper {
|
||||||
@ -105,25 +103,4 @@ public final class MachineHelper {
|
|||||||
menu.replaceExistingItem(slot, item);
|
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()));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user