1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 03:35:51 +00:00

Reduced technical debt

This commit is contained in:
TheBusyBiscuit 2019-08-30 13:47:58 +02:00
parent 7afcfda89a
commit 0fd44d2136
13 changed files with 193 additions and 169 deletions

View File

@ -10,6 +10,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
public class EnhancedFurnace extends SlimefunItem {
@ -25,9 +26,14 @@ public class EnhancedFurnace extends SlimefunItem {
this.fortune = fortune - 1;
addItemHandler(new BlockTicker() {
@Override
public void tick(Block b, SlimefunItem item, Config data) {
if (b.getState() instanceof Furnace && ((Furnace) b.getState()).getCookTime() > 0) {
if (!(b.getState() instanceof Furnace)) {
// The Furnace has been destroyed, we can clear the block data
BlockStorage.clearBlockInfo(b);
}
else if (((Furnace) b.getState()).getCookTime() > 0) {
Furnace furnace = (Furnace) b.getState();
int newCookTime = furnace.getCookTime() + getSpeed() * 10;
@ -39,10 +45,6 @@ public class EnhancedFurnace extends SlimefunItem {
}
}
@Override
public void uniqueTick() {
}
@Override
public boolean isSynchronized() {
return true;

View File

@ -255,11 +255,10 @@ public abstract class AContainer extends SlimefunItem {
for (MachineRecipe recipe: recipes) {
for (ItemStack input: recipe.getInput()) {
slots:
for (int slot: getInputSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), input, true)) {
found.put(slot, input.getAmount());
break slots;
break;
}
}
}
@ -272,9 +271,11 @@ public abstract class AContainer extends SlimefunItem {
if (r != null) {
if (!fits(b, r.getOutput())) return;
for (Map.Entry<Integer, Integer> entry: found.entrySet()) {
BlockStorage.getInventory(b).replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(entry.getKey()), entry.getValue()));
}
processing.put(b, r);
progress.put(b, r.getTicks());
}

View File

@ -218,25 +218,17 @@ public abstract class AGenerator extends SlimefunItem {
}
}
else {
MachineFuel r = null;
BlockMenu menu = BlockStorage.getInventory(l);
Map<Integer, Integer> found = new HashMap<>();
outer:
for (MachineFuel recipe: recipes) {
for (int slot: getInputSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(l).getItemInSlot(slot), recipe.getInput(), true)) {
found.put(slot, recipe.getInput().getAmount());
r = recipe;
break outer;
}
}
}
MachineFuel fuel = findRecipe(menu, found);
if (r != null) {
if (fuel != null) {
for (Map.Entry<Integer, Integer> entry: found.entrySet()) {
BlockStorage.getInventory(l).replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(BlockStorage.getInventory(l).getItemInSlot(entry.getKey()), entry.getValue()));
menu.replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(menu.getItemInSlot(entry.getKey()), entry.getValue()));
}
processing.put(l, r);
progress.put(l, r.getTicks());
processing.put(l, fuel);
progress.put(l, fuel.getTicks());
}
return 0;
}
@ -250,6 +242,19 @@ public abstract class AGenerator extends SlimefunItem {
super.register(slimefun);
}
private MachineFuel findRecipe(BlockMenu menu, Map<Integer, Integer> found) {
for (MachineFuel recipe: recipes) {
for (int slot: getInputSlots()) {
if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), recipe.getInput(), true)) {
found.put(slot, recipe.getInput().getAmount());
return recipe;
}
}
}
return null;
}
public Set<MachineFuel> getFuelTypes() {
return this.recipes;

View File

@ -353,39 +353,19 @@ public abstract class AReactor extends SlimefunItem {
}
}
else {
MachineFuel r = null;
BlockMenu menu = BlockStorage.getInventory(l);
Map<Integer, Integer> found = new HashMap<>();
MachineFuel fuel = findRecipe(menu, found);
if (port != null) {
refill:
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) {
port.replaceExistingItem(slot, InvUtils.decreaseItem(port.getItemInSlot(slot), 1));
break refill;
}
}
}
}
if (port != null) restockCoolant(l, port);
outer:
for (MachineFuel recipe: recipes) {
for (int slot: getFuelSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(l).getItemInSlot(slot), recipe.getInput(), true)) {
found.put(slot, recipe.getInput().getAmount());
r = recipe;
break outer;
}
}
}
if (r != null) {
if (fuel != null) {
for (Map.Entry<Integer, Integer> entry: found.entrySet()) {
BlockStorage.getInventory(l).replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(BlockStorage.getInventory(l).getItemInSlot(entry.getKey()), entry.getValue()));
menu.replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(menu.getItemInSlot(entry.getKey()), entry.getValue()));
}
processing.put(l, r);
progress.put(l, r.getTicks());
processing.put(l, fuel);
progress.put(l, fuel.getTicks());
}
return 0;
}
@ -409,6 +389,30 @@ public abstract class AReactor extends SlimefunItem {
super.register(slimefun);
}
private void restockCoolant(Location l, 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) {
port.replaceExistingItem(slot, InvUtils.decreaseItem(port.getItemInSlot(slot), 1));
return;
}
}
}
}
private MachineFuel findRecipe(BlockMenu menu, Map<Integer, Integer> found) {
for (MachineFuel recipe: recipes) {
for (int slot: getInputSlots()) {
if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), recipe.getInput(), true)) {
found.put(slot, recipe.getInput().getAmount());
return recipe;
}
}
}
return null;
}
private Inventory inject(Location l) {
int size = BlockStorage.getInventory(l).toInventory().getSize();

View File

@ -3,6 +3,12 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.ItemMeta;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@ -14,12 +20,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.ItemMeta;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
public abstract class AutoAnvil extends AContainer {
@ -86,11 +87,13 @@ public abstract class AutoAnvil extends AContainer {
}
}
else {
MachineRecipe r = null;
slots:
BlockMenu menu = BlockStorage.getInventory(b);
MachineRecipe recipe = null;
for (int slot: getInputSlots()) {
ItemStack target = BlockStorage.getInventory(b).getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]);
ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot);
ItemStack target = menu.getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]);
ItemStack item = menu.getItemInSlot(slot);
if (item != null && item.getType().getMaxDurability() > 0 && ((Damageable) item.getItemMeta()).getDamage() > 0) {
if (SlimefunManager.isItemSimiliar(target, SlimefunItems.DUCT_TAPE, true)) {
ItemStack newItem = item.clone();
@ -99,19 +102,20 @@ public abstract class AutoAnvil extends AContainer {
ItemMeta meta = newItem.getItemMeta();
((Damageable) meta).setDamage(durability);
newItem.setItemMeta(meta);
r = new MachineRecipe(30, new ItemStack[] {target, item}, new ItemStack[] {newItem});
recipe = new MachineRecipe(30, new ItemStack[] {target, item}, new ItemStack[] {newItem});
}
break slots;
break;
}
}
if (r != null) {
if (!fits(b, r.getOutput())) return;
if (recipe != null) {
if (!fits(b, recipe.getOutput())) return;
for (int slot: getInputSlots()) {
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
}
processing.put(b, r);
progress.put(b, r.getTicks());
processing.put(b, recipe);
progress.put(b, recipe.getTicks());
}
}
}

View File

@ -28,6 +28,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip
import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
public class AutoDisenchanter extends AContainer {
@ -87,13 +88,14 @@ public class AutoDisenchanter extends AContainer {
}
}
else {
MachineRecipe r = null;
BlockMenu menu = BlockStorage.getInventory(b);
MachineRecipe recipe = null;
Map<Enchantment, Integer> enchantments = new HashMap<>();
Set<ItemEnchantment> enchantments2 = new HashSet<>();
slots:
for (int slot: getInputSlots()) {
ItemStack target = BlockStorage.getInventory(b).getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]);
ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot);
ItemStack target = menu.getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]);
ItemStack item = menu.getItemInSlot(slot);
// Check if disenchantable
SlimefunItem sfItem = null;
@ -133,19 +135,22 @@ public class AutoDisenchanter extends AContainer {
EmeraldEnchants.getInstance().getRegistry().applyEnchantment(book, e.getEnchantment(), e.getLevel());
EmeraldEnchants.getInstance().getRegistry().applyEnchantment(newItem, e.getEnchantment(), 0);
}
r = new MachineRecipe(100 * amount, new ItemStack[] {target, item}, new ItemStack[] {newItem, book});
break slots;
recipe = new MachineRecipe(100 * amount, new ItemStack[] {target, item}, new ItemStack[] {newItem, book});
break;
}
}
}
if (r != null) {
if (!fits(b, r.getOutput())) return;
if (recipe != null) {
if (!fits(b, recipe.getOutput())) return;
for (int slot: getInputSlots()) {
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
}
processing.put(b, r);
progress.put(b, r.getTicks());
processing.put(b, recipe);
progress.put(b, recipe.getTicks());
}
}
}

View File

@ -29,6 +29,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip
import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.api.Slimefun;
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
public class AutoEnchanter extends AContainer {
@ -88,15 +89,16 @@ public class AutoEnchanter extends AContainer {
}
}
else {
MachineRecipe r = null;
slots:
BlockMenu menu = BlockStorage.getInventory(b.getLocation());
MachineRecipe recipe = null;
for (int slot: getInputSlots()) {
ItemStack target = BlockStorage.getInventory(b).getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]);
ItemStack target = menu.getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]);
// Check if enchantable
SlimefunItem sfTarget = SlimefunItem.getByItem(target);
if(sfTarget != null && !sfTarget.isEnchantable()) return;
ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot);
ItemStack item = menu.getItemInSlot(slot);
// Enchant
if (item != null && item.getType() == Material.ENCHANTED_BOOK && target != null) {
@ -105,12 +107,14 @@ public class AutoEnchanter extends AContainer {
int amount = 0;
int special_amount = 0;
EnchantmentStorageMeta meta = (EnchantmentStorageMeta) item.getItemMeta();
for (Map.Entry<Enchantment, Integer> e: meta.getStoredEnchants().entrySet()) {
if (e.getKey().canEnchantItem(target)) {
amount++;
enchantments.put(e.getKey(), e.getValue());
}
}
if (Slimefun.isEmeraldEnchantsInstalled()) {
for (ItemEnchantment enchantment: EmeraldEnchants.getInstance().getRegistry().getEnchantments(item)) {
if (EmeraldEnchants.getInstance().getRegistry().isApplicable(target, enchantment.getEnchantment()) && EmeraldEnchants.getInstance().getRegistry().getEnchantmentLevel(target, enchantment.getEnchantment().getName()) < enchantment.getLevel()) {
@ -121,27 +125,32 @@ public class AutoEnchanter extends AContainer {
}
special_amount += EmeraldEnchants.getInstance().getRegistry().getEnchantments(target).size();
}
if (amount > 0 && special_amount <= SlimefunStartup.instance.getSettings().EMERALD_ENCHANTS_LIMIT) {
ItemStack newItem = target.clone();
for (Map.Entry<Enchantment, Integer> e: enchantments.entrySet()) {
newItem.addUnsafeEnchantment(e.getKey(), e.getValue());
}
for (ItemEnchantment e: enchantments2) {
EmeraldEnchants.getInstance().getRegistry().applyEnchantment(newItem, e.getEnchantment(), e.getLevel());
}
r = new MachineRecipe(75 * amount, new ItemStack[] {target, item}, new ItemStack[] {newItem, new ItemStack(Material.BOOK)});
recipe = new MachineRecipe(75 * amount, new ItemStack[] {target, item}, new ItemStack[] {newItem, new ItemStack(Material.BOOK)});
}
break slots;
break;
}
}
if (r != null) {
if (!fits(b, r.getOutput())) return;
if (recipe != null) {
if (!fits(b, recipe.getOutput())) return;
for (int slot: getInputSlots()) {
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
}
processing.put(b, r);
progress.put(b, r.getTicks());
processing.put(b, recipe);
progress.put(b, recipe.getTicks());
}
}
}

View File

@ -210,10 +210,6 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem {
AutomatedCraftingChamber.this.tick(b);
}
@Override
public void uniqueTick() {
}
@Override
public boolean isSynchronized() {
return false;

View File

@ -131,32 +131,7 @@ public abstract class CropGrowthAccelerator extends SlimefunItem {
}
protected void tick(Block b) throws Exception {
int work = 0;
master:
for (int x = -getRadius(); x <= getRadius(); x++) {
for (int z = -getRadius(); z <= getRadius(); z++) {
Block block = b.getRelative(x, 0, z);
if (crops.containsKey(block.getType()) && ((Ageable) block.getBlockData()).getAge() < crops.get(block.getType())) {
for (int slot : getInputSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.FERTILIZER, false)) {
if (work > (getSpeed() - 1)) break master;
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) break master;
ChargableBlock.addCharge(b, -getEnergyConsumption());
Ageable ageable = (Ageable) block.getBlockData();
ageable.setAge(ageable.getAge() + 1);
block.setBlockData(ageable);
block.getWorld().spawnParticle(Particle.VILLAGER_HAPPY, block.getLocation().add(0.5D, 0.5D, 0.5D), 4, 0.1F, 0.1F, 0.1F);
work++;
break;
}
}
}
}
}
if (work > 0) {
if (work(b) > 0) {
for (int slot : getInputSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.FERTILIZER, false)) {
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
@ -166,4 +141,32 @@ public abstract class CropGrowthAccelerator extends SlimefunItem {
}
}
private int work(Block b) {
int work = 0;
for (int x = -getRadius(); x <= getRadius(); x++) {
for (int z = -getRadius(); z <= getRadius(); z++) {
Block block = b.getRelative(x, 0, z);
if (crops.containsKey(block.getType()) && ((Ageable) block.getBlockData()).getAge() < crops.get(block.getType())) {
for (int slot : getInputSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.FERTILIZER, false)) {
if (work > (getSpeed() - 1) || ChargableBlock.getCharge(b) < getEnergyConsumption()) return work;
ChargableBlock.addCharge(b, -getEnergyConsumption());
Ageable ageable = (Ageable) block.getBlockData();
ageable.setAge(ageable.getAge() + 1);
block.setBlockData(ageable);
block.getWorld().spawnParticle(Particle.VILLAGER_HAPPY, block.getLocation().add(0.5D, 0.5D, 0.5D), 4, 0.1F, 0.1F, 0.1F);
work++;
return work;
}
}
}
}
}
return work;
}
}

View File

@ -131,10 +131,6 @@ public abstract class HeatedPressureChamber extends AContainer {
HeatedPressureChamber.this.tick(b);
}
@Override
public void uniqueTick() {
}
@Override
public boolean isSynchronized() {
return false;
@ -148,6 +144,7 @@ public abstract class HeatedPressureChamber extends AContainer {
protected void tick(Block b) {
if (isProcessing(b)) {
int timeleft = progress.get(b);
if (timeleft > 0) {
ItemStack item = getProgressBar().clone();
ItemMeta im = item.getItemMeta();
@ -178,37 +175,42 @@ public abstract class HeatedPressureChamber extends AContainer {
}
}
else {
MachineRecipe r = null;
BlockMenu menu = BlockStorage.getInventory(b.getLocation());
Map<Integer, Integer> found = new HashMap<>();
MachineRecipe recipe = findRecipe(menu, found);
for (MachineRecipe recipe: recipes) {
for (ItemStack input: recipe.getInput()) {
slots:
for (int slot: getInputSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), input, true)) {
found.put(slot, input.getAmount());
break slots;
}
}
}
if (found.size() == recipe.getInput().length) {
r = recipe;
break;
}
else found.clear();
}
if (r != null) {
if (!fits(b, r.getOutput())) return;
if (recipe != null) {
if (!fits(b, recipe.getOutput())) return;
for (Map.Entry<Integer, Integer> entry: found.entrySet()) {
BlockStorage.getInventory(b).replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(entry.getKey()), entry.getValue()));
menu.replaceExistingItem(entry.getKey(), InvUtils.decreaseItem(menu.getItemInSlot(entry.getKey()), entry.getValue()));
}
processing.put(b, r);
progress.put(b, r.getTicks());
processing.put(b, recipe);
progress.put(b, recipe.getTicks());
}
}
}
private MachineRecipe findRecipe(BlockMenu menu, Map<Integer, Integer> found) {
for (MachineRecipe recipe: recipes) {
for (ItemStack input: recipe.getInput()) {
for (int slot: getInputSlots()) {
if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), input, true)) {
found.put(slot, input.getAmount());
break;
}
}
}
if (found.size() == recipe.getInput().length) {
return recipe;
}
else found.clear();
}
return null;
}
@Override
public String getMachineIdentifier() {
return "HEATED_PRESSURE_CHAMBER";

View File

@ -1315,10 +1315,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
if (b != null) ProgrammableAndroid.this.tick(b);
}
@Override
public void uniqueTick() {
}
@Override
public boolean isSynchronized() {
return true;

View File

@ -73,7 +73,6 @@ public class TickerTask implements Runnable {
long timestamp2 = System.currentTimeMillis();
chunks++;
blocks:
for (final Location l: BlockStorage.getTickingLocations(c)) {
if (l.getWorld().isChunkLoaded(l.getBlockX() >> 4, l.getBlockZ() >> 4)) {
final Block b = l.getBlock();
@ -178,7 +177,7 @@ public class TickerTask implements Runnable {
skipped += BlockStorage.getTickingLocations(c).size();
chunksSkipped.add(c);
chunks--;
break blocks;
break;
}
}

View File

@ -255,26 +255,25 @@ public class CargoNet extends Network {
BlockMenu menu = BlockStorage.getInventory(request.getTerminal());
switch (request.getDirection()) {
case INSERT: {
ItemStack stack = request.getItem();
nodes:
case INSERT:
ItemStack requestedItem = request.getItem();
for (Location l: destinations) {
Block target = getAttachedBlock(l.getBlock());
stack = CargoManager.insert(l.getBlock(), storage, target, stack, -1);
if (stack == null) {
requestedItem = CargoManager.insert(l.getBlock(), storage, target, requestedItem, -1);
if (requestedItem == null) {
menu.replaceExistingItem(request.getSlot(), null);
break nodes;
break;
}
}
if (stack != null) {
menu.replaceExistingItem(request.getSlot(), stack);
if (requestedItem != null) {
menu.replaceExistingItem(request.getSlot(), requestedItem);
}
iterator.remove();
break;
}
case WITHDRAW: {
case WITHDRAW:
int slot = request.getSlot();
ItemStack prevStack = menu.getItemInSlot(slot);
if (!(prevStack == null || (prevStack.getAmount() + request.getItem().getAmount() <= prevStack.getMaxStackSize() && SlimefunManager.isItemSimiliar(prevStack, new CustomItem(request.getItem(), 1), true)))) {
@ -284,7 +283,7 @@ public class CargoNet extends Network {
ItemStack stack = null;
ItemStack requested = request.getItem();
nodes:
for (Location l : providers) {
Block target = getAttachedBlock(l.getBlock());
ItemStack is = CargoManager.withdraw(l.getBlock(), storage, target, requested);
@ -297,7 +296,7 @@ public class CargoNet extends Network {
}
if (is.getAmount() == requested.getAmount()) {
break nodes;
break;
}
else {
requested = new CustomItem(requested, requested.getAmount() - is.getAmount());
@ -314,20 +313,20 @@ public class CargoNet extends Network {
iterator.remove();
break;
}
default: {
default:
break;
}
}
}
}
}
// All operations happen here: Everything gets iterated from the Input Nodes. (Apart from ChestTerminal Buses)
for (Location input: inputNodes) {
Integer frequency = getFrequency(input);
if (frequency < 0 || frequency > 15) {
continue;
}
Block inputTarget = getAttachedBlock(input.getBlock());
ItemStack stack = null;
int previousSlot = -1;
@ -364,13 +363,12 @@ public class CargoNet extends Network {
round_robin.put(input, c_index);
}
destinations:
for (Location out : outputlist) {
Block target = getAttachedBlock(out.getBlock());
if (target != null) {
stack = CargoManager.insert(out.getBlock(), storage, target, stack, -1);
if (stack == null) break destinations;
if (stack == null) break;
}
}
}