Performance improvement
This commit is contained in:
@@ -19,7 +19,7 @@ import refinedstorage.proxy.CommonProxy;
|
||||
@Mod(modid = RefinedStorage.ID, version = RefinedStorage.VERSION)
|
||||
public final class RefinedStorage {
|
||||
public static final String ID = "refinedstorage";
|
||||
public static final String VERSION = "0.6.4";
|
||||
public static final String VERSION = "0.6.5";
|
||||
|
||||
public static final SimpleNetworkWrapper NETWORK = NetworkRegistry.INSTANCE.newSimpleChannel(ID);
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@ import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageBlocks;
|
||||
import refinedstorage.RefinedStorageGui;
|
||||
import refinedstorage.item.ItemBlockController;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.TileMachine;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -4,7 +4,7 @@ import net.minecraft.client.renderer.GlStateManager;
|
||||
import net.minecraft.client.renderer.RenderHelper;
|
||||
import refinedstorage.container.ContainerController;
|
||||
import refinedstorage.gui.sidebutton.SideButtonRedstoneMode;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ import net.minecraft.client.gui.GuiTextField;
|
||||
import net.minecraftforge.fml.client.FMLClientHandler;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
import refinedstorage.container.ContainerDummy;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
|
||||
@@ -14,6 +14,7 @@ import refinedstorage.tile.*;
|
||||
import refinedstorage.tile.autocrafting.TileCrafter;
|
||||
import refinedstorage.tile.autocrafting.TileCraftingMonitor;
|
||||
import refinedstorage.tile.autocrafting.TileProcessingPatternEncoder;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
import refinedstorage.tile.grid.TileGrid;
|
||||
import refinedstorage.tile.grid.WirelessGrid;
|
||||
import refinedstorage.tile.solderer.TileSolderer;
|
||||
|
||||
@@ -7,7 +7,7 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
import refinedstorage.RefinedStorageBlocks;
|
||||
import refinedstorage.block.EnumControllerType;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ import net.minecraft.util.text.translation.I18n;
|
||||
import net.minecraft.world.World;
|
||||
import refinedstorage.RefinedStorage;
|
||||
import refinedstorage.RefinedStorageBlocks;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
import refinedstorage.tile.grid.TileGrid;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -9,7 +9,7 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||
import refinedstorage.RefinedStorageUtils;
|
||||
import refinedstorage.proxy.ClientProxy;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
public class MessageControllerEnergyUpdate implements IMessage, IMessageHandler<MessageControllerEnergyUpdate, IMessage> {
|
||||
public static long LAST_RE_RENDER;
|
||||
|
||||
@@ -5,7 +5,7 @@ import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
public class MessageWirelessGridCraftingStart extends MessageHandlerPlayerToServer<MessageWirelessGridCraftingStart> implements IMessage {
|
||||
private int controllerX;
|
||||
|
||||
@@ -5,7 +5,7 @@ import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessageHandler;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.MessageContext;
|
||||
import refinedstorage.storage.ItemGroup;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
import refinedstorage.tile.grid.WirelessGrid;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
@@ -5,7 +5,7 @@ import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
public class MessageWirelessGridStoragePull extends MessageHandlerPlayerToServer<MessageWirelessGridStoragePull> implements IMessage {
|
||||
private int controllerX;
|
||||
|
||||
@@ -5,7 +5,7 @@ import net.minecraft.entity.player.EntityPlayerMP;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraftforge.fml.common.network.simpleimpl.IMessage;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
public class MessageWirelessGridStoragePush extends MessageHandlerPlayerToServer<MessageWirelessGridStoragePush> implements IMessage {
|
||||
private int controllerX;
|
||||
|
||||
@@ -26,6 +26,7 @@ import refinedstorage.tile.*;
|
||||
import refinedstorage.tile.autocrafting.TileCrafter;
|
||||
import refinedstorage.tile.autocrafting.TileCraftingMonitor;
|
||||
import refinedstorage.tile.autocrafting.TileProcessingPatternEncoder;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
import refinedstorage.tile.grid.TileGrid;
|
||||
import refinedstorage.tile.solderer.*;
|
||||
|
||||
|
||||
@@ -156,4 +156,27 @@ public class ItemGroup {
|
||||
public boolean compareNoQuantity(ItemStack stack) {
|
||||
return compare(stack, RefinedStorageUtils.COMPARE_NBT | RefinedStorageUtils.COMPARE_DAMAGE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) return true;
|
||||
if (o == null || getClass() != o.getClass()) return false;
|
||||
|
||||
ItemGroup itemGroup = (ItemGroup) o;
|
||||
|
||||
if (quantity != itemGroup.quantity) return false;
|
||||
if (damage != itemGroup.damage) return false;
|
||||
if (!type.equals(itemGroup.type)) return false;
|
||||
return tag != null ? tag.equals(itemGroup.tag) : itemGroup.tag == null;
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
int result = type.hashCode();
|
||||
result = 31 * result + quantity;
|
||||
result = 31 * result + damage;
|
||||
result = 31 * result + (tag != null ? tag.hashCode() : 0);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import refinedstorage.RefinedStorageUtils;
|
||||
import refinedstorage.tile.autocrafting.CraftingPattern;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
public class CraftingTaskScheduler {
|
||||
public static String NBT_SCHEDULED = "CraftingTaskScheduled";
|
||||
|
||||
@@ -10,6 +10,7 @@ import refinedstorage.RefinedStorageUtils;
|
||||
import refinedstorage.network.MessageMachineConnectedUpdate;
|
||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||
import refinedstorage.tile.config.RedstoneMode;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@@ -6,8 +6,8 @@ import net.minecraft.nbt.NBTTagList;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import net.minecraftforge.common.util.Constants;
|
||||
import refinedstorage.RefinedStorageUtils;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.autocrafting.CraftingPattern;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
package refinedstorage.tile.autocrafting.task;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.autocrafting.CraftingPattern;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
public interface ICraftingTask {
|
||||
CraftingPattern getPattern();
|
||||
|
||||
@@ -7,9 +7,9 @@ import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.tileentity.TileEntityHopper;
|
||||
import net.minecraft.util.text.TextFormatting;
|
||||
import refinedstorage.RefinedStorageUtils;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.autocrafting.CraftingPattern;
|
||||
import refinedstorage.tile.autocrafting.TileCrafter;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
public class ProcessingCraftingTask implements ICraftingTask {
|
||||
public static final int ID = 1;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package refinedstorage.tile;
|
||||
package refinedstorage.tile.controller;
|
||||
|
||||
import cofh.api.energy.EnergyStorage;
|
||||
import cofh.api.energy.IEnergyReceiver;
|
||||
@@ -27,6 +27,10 @@ import refinedstorage.network.MessageWirelessGridItems;
|
||||
import refinedstorage.storage.IStorage;
|
||||
import refinedstorage.storage.IStorageProvider;
|
||||
import refinedstorage.storage.ItemGroup;
|
||||
import refinedstorage.tile.ISynchronizedContainer;
|
||||
import refinedstorage.tile.TileBase;
|
||||
import refinedstorage.tile.TileMachine;
|
||||
import refinedstorage.tile.TileWirelessTransmitter;
|
||||
import refinedstorage.tile.autocrafting.CraftingPattern;
|
||||
import refinedstorage.tile.autocrafting.TileCrafter;
|
||||
import refinedstorage.tile.autocrafting.task.BasicCraftingTask;
|
||||
@@ -73,6 +77,8 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
||||
private List<WirelessGridConsumer> wirelessGridConsumers = new ArrayList<WirelessGridConsumer>();
|
||||
private List<WirelessGridConsumer> wirelessGridConsumersToRemove = new ArrayList<WirelessGridConsumer>();
|
||||
|
||||
private List<ItemGroup> combinedGroups = new ArrayList<ItemGroup>();
|
||||
|
||||
private RedstoneMode redstoneMode = RedstoneMode.IGNORE;
|
||||
|
||||
private List<TileMachine> machines = new ArrayList<TileMachine>();
|
||||
@@ -322,46 +328,36 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
||||
}
|
||||
}
|
||||
|
||||
combineItems();
|
||||
}
|
||||
|
||||
private void combineItems() {
|
||||
List<Integer> markedIndexes = new ArrayList<Integer>();
|
||||
combinedGroups.clear();
|
||||
|
||||
for (int i = 0; i < itemGroups.size(); ++i) {
|
||||
if (markedIndexes.contains(i)) {
|
||||
ItemGroup group = itemGroups.get(i);
|
||||
|
||||
if (combinedGroups.contains(group)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ItemGroup group = itemGroups.get(i);
|
||||
|
||||
// If the item doesn't exist anymore, remove it from storage to avoid crashes
|
||||
if (group.getType() == null) {
|
||||
markedIndexes.add(i);
|
||||
combinedGroups.add(group);
|
||||
} else {
|
||||
for (int j = i + 1; j < itemGroups.size(); ++j) {
|
||||
if (markedIndexes.contains(j)) {
|
||||
ItemGroup otherGroup = itemGroups.get(j);
|
||||
|
||||
if (combinedGroups.contains(otherGroup)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ItemGroup otherGroup = itemGroups.get(j);
|
||||
|
||||
if (group.compareNoQuantity(otherGroup)) {
|
||||
group.setQuantity(group.getQuantity() + otherGroup.getQuantity());
|
||||
|
||||
markedIndexes.add(j);
|
||||
combinedGroups.add(otherGroup);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
List<ItemGroup> markedItems = new ArrayList<ItemGroup>();
|
||||
|
||||
for (int i : markedIndexes) {
|
||||
markedItems.add(itemGroups.get(i));
|
||||
}
|
||||
|
||||
itemGroups.removeAll(markedItems);
|
||||
itemGroups.removeAll(combinedGroups);
|
||||
}
|
||||
|
||||
public boolean push(ItemStack stack) {
|
||||
@@ -14,8 +14,8 @@ import refinedstorage.network.MessageWirelessGridSettingsUpdate;
|
||||
import refinedstorage.network.MessageWirelessGridStoragePull;
|
||||
import refinedstorage.network.MessageWirelessGridStoragePush;
|
||||
import refinedstorage.storage.ItemGroup;
|
||||
import refinedstorage.tile.TileController;
|
||||
import refinedstorage.tile.config.IRedstoneModeConfig;
|
||||
import refinedstorage.tile.controller.TileController;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
Reference in New Issue
Block a user