use of logisticspipes.pipes.PipeLogisticsChassi in project LogisticsPipes by RS485.
the class ChassiGuiProvider method getContainer.
@Override
public DummyContainer getContainer(EntityPlayer player) {
LogisticsTileGenericPipe pipe = getPipe(player.getEntityWorld());
if (pipe == null || !(pipe.pipe instanceof PipeLogisticsChassi)) {
return null;
}
final PipeLogisticsChassi _chassiPipe = (PipeLogisticsChassi) pipe.pipe;
IInventory _moduleInventory = _chassiPipe.getModuleInventory();
DummyContainer dummy = new DummyContainer(player.inventory, _moduleInventory);
if (_chassiPipe.getChassiSize() < 5) {
dummy.addNormalSlotsForPlayerInventory(18, 97);
} else {
dummy.addNormalSlotsForPlayerInventory(18, 174);
}
if (_chassiPipe.getChassiSize() > 0) {
dummy.addModuleSlot(0, _moduleInventory, 19, 9, _chassiPipe);
}
if (_chassiPipe.getChassiSize() > 1) {
dummy.addModuleSlot(1, _moduleInventory, 19, 29, _chassiPipe);
}
if (_chassiPipe.getChassiSize() > 2) {
dummy.addModuleSlot(2, _moduleInventory, 19, 49, _chassiPipe);
}
if (_chassiPipe.getChassiSize() > 3) {
dummy.addModuleSlot(3, _moduleInventory, 19, 69, _chassiPipe);
}
if (_chassiPipe.getChassiSize() > 4) {
dummy.addModuleSlot(4, _moduleInventory, 19, 89, _chassiPipe);
dummy.addModuleSlot(5, _moduleInventory, 19, 109, _chassiPipe);
dummy.addModuleSlot(6, _moduleInventory, 19, 129, _chassiPipe);
dummy.addModuleSlot(7, _moduleInventory, 19, 149, _chassiPipe);
}
if (_chassiPipe.getUpgradeManager().hasUpgradeModuleUpgrade()) {
for (int i = 0; i < _chassiPipe.getChassiSize(); i++) {
final int fI = i;
ModuleUpgradeManager upgradeManager = _chassiPipe.getModuleUpgradeManager(i);
dummy.addUpgradeSlot(0, upgradeManager, 0, 145, 9 + i * 20, itemStack -> ChassiGuiProvider.checkStack(itemStack, _chassiPipe, fI));
dummy.addUpgradeSlot(1, upgradeManager, 1, 165, 9 + i * 20, itemStack -> ChassiGuiProvider.checkStack(itemStack, _chassiPipe, fI));
}
}
return dummy;
}
use of logisticspipes.pipes.PipeLogisticsChassi in project LogisticsPipes by RS485.
the class ChassisGUI method processPacket.
@Override
public void processPacket(EntityPlayer player) {
final LogisticsTileGenericPipe pipe = getPipe(player.worldObj);
if (pipe == null || !(pipe.pipe instanceof PipeLogisticsChassi)) {
return;
}
final PipeLogisticsChassi chassisPipe = (PipeLogisticsChassi) pipe.pipe;
if (!(chassisPipe.getLogisticsModule().getSubModule(getButtonID()) instanceof LogisticsGuiModule)) {
return;
}
((LogisticsGuiModule) chassisPipe.getLogisticsModule().getSubModule(getButtonID())).getPipeGuiProviderForModule().setPosX(getPosX()).setPosY(getPosY()).setPosZ(getPosZ()).open(player);
}
use of logisticspipes.pipes.PipeLogisticsChassi in project LogisticsPipes by RS485.
the class ChassiePipeModuleContent method processPacket.
@Override
public void processPacket(EntityPlayer player) {
final LogisticsTileGenericPipe pipe = this.getPipe(player.worldObj);
if (pipe == null) {
return;
}
if (pipe.pipe instanceof PipeLogisticsChassi) {
PipeLogisticsChassi chassie = (PipeLogisticsChassi) pipe.pipe;
chassie.handleModuleItemIdentifierList(getIdentList());
}
}
use of logisticspipes.pipes.PipeLogisticsChassi in project LogisticsPipes by RS485.
the class PipeTransportLogistics method handleTileReachedServer_internal.
protected final void handleTileReachedServer_internal(LPTravelingItemServer arrivingItem, TileEntity tile, ForgeDirection dir) {
if (isRouted && getPipe().container.tilePart.getBCPipePluggable(dir) != null && getPipe().container.tilePart.getBCPipePluggable(dir).isAcceptingItems(arrivingItem)) {
LPTravelingItemServer remainingItem = getPipe().container.tilePart.getBCPipePluggable(dir).handleItem(arrivingItem);
if (remainingItem != null) {
getRoutedPipe().getRouter().update(true, getRoutedPipe());
this.injectItem(remainingItem, dir);
}
return;
}
if (getPipe() instanceof PipeItemsFluidSupplier) {
((PipeItemsFluidSupplier) getPipe()).endReached(arrivingItem, tile);
if (arrivingItem.getItemIdentifierStack().getStackSize() <= 0) {
return;
}
}
markChunkModified(tile);
if (MainProxy.isServer(getWorld()) && arrivingItem.getInfo() != null && arrivingItem.getArrived() && isRouted) {
getRoutedPipe().notifyOfItemArival(arrivingItem.getInfo());
}
if (getPipe() instanceof FluidRoutedPipe) {
if (((FluidRoutedPipe) getPipe()).endReached(arrivingItem, tile)) {
return;
}
}
boolean isSpecialConnectionInformationTransition = false;
if (MainProxy.isServer(getWorld())) {
if (SimpleServiceLocator.specialtileconnection.needsInformationTransition(tile)) {
isSpecialConnectionInformationTransition = true;
SimpleServiceLocator.specialtileconnection.transmit(tile, arrivingItem);
}
}
if (SimpleServiceLocator.pipeInformationManager.isItemPipe(tile)) {
if (passToNextPipe(arrivingItem, tile)) {
return;
}
} else if (tile instanceof IInventory && isRouted) {
getRoutedPipe().getCacheHolder().trigger(CacheTypes.Inventory);
// items.scheduleRemoval(arrivingItem);
if (MainProxy.isServer(getWorld())) {
// destroy the item on exit if it isn't exitable
if (!isSpecialConnectionInformationTransition && !isItemExitable(arrivingItem.getItemIdentifierStack())) {
return;
}
// last chance for chassi to back out
if (arrivingItem != null) {
if (arrivingItem.getTransportMode() != TransportMode.Active && !getRoutedPipe().getTransportLayer().stillWantItem(arrivingItem)) {
reverseItem(arrivingItem);
return;
}
}
ISlotUpgradeManager slotManager;
{
ModulePositionType slot = null;
int positionInt = -1;
if (arrivingItem.getInfo().targetInfo instanceof ChassiTargetInformation) {
positionInt = ((ChassiTargetInformation) arrivingItem.getInfo().targetInfo).getModuleSlot();
slot = ModulePositionType.SLOT;
} else if (LPConstants.DEBUG && container.pipe instanceof PipeLogisticsChassi) {
System.out.println(arrivingItem);
new RuntimeException("[ItemInsertion] Information weren't ment for a chassi pipe").printStackTrace();
}
slotManager = getRoutedPipe().getUpgradeManager(slot, positionInt);
}
boolean tookSome = false;
if (arrivingItem.getAdditionalTargetInformation() instanceof ITargetSlotInformation) {
ITargetSlotInformation information = (ITargetSlotInformation) arrivingItem.getAdditionalTargetInformation();
IInventory inv = (IInventory) tile;
if (inv instanceof ISidedInventory) {
inv = new SidedInventoryMinecraftAdapter((ISidedInventory) inv, ForgeDirection.UNKNOWN, false);
}
IInventoryUtil util = SimpleServiceLocator.inventoryUtilFactory.getInventoryUtil(inv);
if (util instanceof ISpecialInsertion) {
int slot = information.getTargetSlot();
int amount = information.getAmount();
if (util.getSizeInventory() > slot) {
ItemStack content = util.getStackInSlot(slot);
ItemStack toAdd = arrivingItem.getItemIdentifierStack().makeNormalStack();
toAdd.stackSize = Math.min(toAdd.stackSize, Math.max(0, amount - (content != null ? content.stackSize : 0)));
if (toAdd.stackSize > 0) {
if (util.getSizeInventory() > slot) {
int added = ((ISpecialInsertion) util).addToSlot(toAdd, slot);
arrivingItem.getItemIdentifierStack().lowerStackSize(added);
if (added > 0) {
tookSome = true;
}
}
}
}
if (information.isLimited()) {
if (arrivingItem.getItemIdentifierStack().getStackSize() > 0) {
reverseItem(arrivingItem);
}
return;
}
}
}
// sneaky insertion
if (!getRoutedPipe().getUpgradeManager().hasCombinedSneakyUpgrade() || slotManager.hasOwnSneakyUpgrade()) {
ForgeDirection insertion = arrivingItem.output.getOpposite();
if (slotManager.hasSneakyUpgrade()) {
insertion = slotManager.getSneakyOrientation();
}
ItemStack added = InventoryHelper.getTransactorFor(tile, insertion).add(arrivingItem.getItemIdentifierStack().makeNormalStack(), insertion, true);
arrivingItem.getItemIdentifierStack().lowerStackSize(added.stackSize);
if (added.stackSize > 0 && arrivingItem instanceof IRoutedItem) {
tookSome = true;
arrivingItem.setBufferCounter(0);
}
ItemRoutingInformation info;
if (arrivingItem.getItemIdentifierStack().getStackSize() > 0) {
// we have some leftovers, we are splitting the stack, we need to clone the info
info = arrivingItem.getInfo().clone();
// For InvSysCon
info.getItem().setStackSize(added.stackSize);
insertedItemStack(info, tile);
} else {
info = arrivingItem.getInfo();
info.getItem().setStackSize(added.stackSize);
// For InvSysCon
insertedItemStack(info, tile);
// every item has been inserted.
return;
}
} else {
ForgeDirection[] dirs = getRoutedPipe().getUpgradeManager().getCombinedSneakyOrientation();
for (ForgeDirection insertion : dirs) {
if (insertion == null) {
continue;
}
ItemStack added = InventoryHelper.getTransactorFor(tile, insertion).add(arrivingItem.getItemIdentifierStack().makeNormalStack(), insertion, true);
arrivingItem.getItemIdentifierStack().lowerStackSize(added.stackSize);
if (added.stackSize > 0) {
tookSome = true;
arrivingItem.setBufferCounter(0);
}
ItemRoutingInformation info;
if (arrivingItem.getItemIdentifierStack().getStackSize() > 0) {
// we have some leftovers, we are splitting the stack, we need to clone the info
info = arrivingItem.getInfo().clone();
// For InvSysCon
info.getItem().setStackSize(added.stackSize);
insertedItemStack(info, tile);
} else {
info = arrivingItem.getInfo();
info.getItem().setStackSize(added.stackSize);
// For InvSysCon
insertedItemStack(info, tile);
// every item has been inserted.
return;
}
}
}
if (arrivingItem.getItemIdentifierStack().getStackSize() > 0) {
reverseItem(arrivingItem);
}
}
// the item is handled
return;
}
// end of insert into IInventory
dropItem(arrivingItem);
}
Aggregations