package advancedsystemsmanager.tileentities.manager; import advancedsystemsmanager.api.execution.ICommand; import advancedsystemsmanager.flow.FlowComponent; import advancedsystemsmanager.flow.menus.Menu; import advancedsystemsmanager.flow.menus.MenuCraftingPriority; import advancedsystemsmanager.flow.menus.MenuStuff; import advancedsystemsmanager.flow.menus.MenuTarget; import advancedsystemsmanager.network.ASMPacket; import advancedsystemsmanager.reference.Names; import net.minecraft.util.ResourceLocation; import net.minecraft.util.StatCollector; public class ManagerButtonCreate extends ManagerButton { private ICommand type; public ManagerButtonCreate(TileEntityManager manager, ICommand type) { super(manager, type.getLongName(), type.getX(), type.getY()); this.type = type; } @Override public boolean readData(ASMPacket packet) { if (Settings.isLimitless(manager) || manager.getFlowItems().size() < TileEntityManager.MAX_COMPONENT_AMOUNT) { if (!manager.getWorldObj().isRemote) { packet.setInt(packet.readerIndex(), manager.getNextFreeID()); } FlowComponent component = new FlowComponent(manager, FlowComponent.COMPONENT_START_X, FlowComponent.COMPONENT_START_Y, packet.readInt(), type); boolean hasParent = packet.readBoolean(); if (hasParent) { component.setParent(manager.getFlowItem(packet.readVarIntFromBuffer())); } boolean autoSide = packet.readBoolean(); boolean autoBlackList = packet.readBoolean(); boolean moveFirst = packet.readBoolean(); boolean isInput = type.getCommandType() == ICommand.CommandType.INPUT; boolean isOutput = type.getCommandType() == ICommand.CommandType.OUTPUT; if (autoSide) { for (Menu menu : component.getMenus()) { if (menu instanceof MenuTarget) { ((MenuTarget)menu).setActive(isOutput ? 1 : 0); } } } if (autoBlackList && isInput) { for (Menu menu : component.getMenus()) { if (menu instanceof MenuStuff) { ((MenuStuff)menu).setBlackList(); } } } if (type.getCommandType() == ICommand.CommandType.CRAFTING) { for (Menu menu : component.getMenus()) { if (menu instanceof MenuCraftingPriority) { ((MenuCraftingPriority)menu).setPrioritizeCrafting(!moveFirst); } } } manager.addNewComponent(component); return true; } return false; } @Override public boolean validClick() { return true; } @Override public boolean writeData(ASMPacket packet) { packet.writeInt(0); if (manager.selectedGroup != null) { packet.writeBoolean(true); packet.writeVarIntToBuffer(manager.selectedGroup.getId()); } else { packet.writeBoolean(false); } packet.writeBoolean(Settings.isAutoSide()); packet.writeBoolean(Settings.isAutoBlacklist()); packet.writeBoolean(Settings.isPriorityMoveFirst()); return true; } @Override public String getMouseOver() { if (!Settings.isLimitless(manager) && manager.getFlowItems().size() == TileEntityManager.MAX_COMPONENT_AMOUNT) { return Names.MAXIMUM_COMPONENT_ERROR; } else { //TODO: hmmmm return StatCollector.translateToLocal(Names.CREATE_COMMAND) + " " + super.getMouseOver(); } } @Override public ResourceLocation getTexture() { return type.getTexture(); } }