- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
public void pullToDirection(ForgeDirection dir) {
if (!canPullToDirection(dir))
return;
if (parentChunk.world.world.get().getBlockId(pipePosition.x + dir.offsetX, pipePosition.y + dir.offsetY,
pipePosition.z + dir.offsetZ) == AquaPipes.pipe.blockID) {
TransferPipeItem item = items.iterator().next();
if (item.isEmpty()) {
items.remove(item);
if (items.isEmpty()) {
parentChunk.pendingPipeStatesToRemove.add(this);
parentChunk.updateDataForAllObservers(this);
}
return;
}
items.remove(item);
if (items.isEmpty()) {
parentChunk.pendingPipeStatesToRemove.add(this);
parentChunk.updateDataForAllObservers(this);
}
parentChunk.world.pushToPipe(pipePosition.x + dir.offsetX, pipePosition.y + dir.offsetY,
pipePosition.z + dir.offsetZ, item.getStack());
return;
} else {
TileEntity te = parentChunk.world.world.get().getBlockTileEntity(pipePosition.x + dir.offsetX,
pipePosition.y + dir.offsetY, pipePosition.z + dir.offsetZ);
if (te != null) {
if (te instanceof ISidedInventory) {
TransferPipeItem item = items.iterator().next();
if (item.isEmpty()) {
items.remove(item);
if (items.isEmpty()) {
parentChunk.pendingPipeStatesToRemove.add(this);
parentChunk.updateDataForAllObservers(this);
}
return;
}
ISidedInventory inv = (ISidedInventory) te;
int[] slots = inv.getAccessibleSlotsFromSide(ForgeDirection.OPPOSITES[dir.ordinal()]);
for (int slot : slots) {
if (inv.canInsertItem(slot, item.getStack(), ForgeDirection.OPPOSITES[dir.ordinal()])
&& inv.isStackValidForSlot(slot, item.getStack())
&& (inv.getStackInSlot(slot) == null
|| (inv.getStackInSlot(slot).itemID == item.getStack().itemID
&& inv.getStackInSlot(slot).getItemDamage() == inv
.getStackInSlot(slot)
.getItemDamage()
&& inv.getStackInSlot(slot).stackSize < inv.getInventoryStackLimit()
&& inv.getStackInSlot(slot).stackSize < inv
.getStackInSlot(slot)
.getMaxStackSize()
&& ItemStack.areItemStackTagsEqual(inv.getStackInSlot(slot),
item.getStack())))) {
item.getStack().stackSize--;
inv.getStackInSlot(slot).stackSize++;
inv.onInventoryChanged();
if (item.isEmpty()) {
items.remove(item);
if (items.isEmpty()) {
parentChunk.pendingPipeStatesToRemove.add(this);
parentChunk.updateDataForAllObservers(this);
}
}
}
}
} else if (te instanceof IInventory) {
TransferPipeItem item = items.iterator().next();
if (item.isEmpty()) {
items.remove(item);
if (items.isEmpty()) {
parentChunk.pendingPipeStatesToRemove.add(this);
parentChunk.updateDataForAllObservers(this);
}
return;
}
IInventory inv = (IInventory) te;
for(int slot = 0; slot < inv.getSizeInventory(); slot++) {
if (inv.isStackValidForSlot(slot, item.getStack())
&& (inv.getStackInSlot(slot) == null
|| (inv.getStackInSlot(slot).itemID == item.getStack().itemID
&& inv.getStackInSlot(slot).getItemDamage() == inv
.getStackInSlot(slot)
.getItemDamage()
&& inv.getStackInSlot(slot).stackSize < inv.getInventoryStackLimit()
&& inv.getStackInSlot(slot).stackSize < inv
.getStackInSlot(slot)
.getMaxStackSize()
&& ItemStack.areItemStackTagsEqual(inv.getStackInSlot(slot),
item.getStack())))) {
item.getStack().stackSize--;
inv.getStackInSlot(slot).stackSize++;
inv.onInventoryChanged();
if (item.isEmpty()) {
items.remove(item);
if (items.isEmpty()) {
parentChunk.pendingPipeStatesToRemove.add(this);
parentChunk.updateDataForAllObservers(this);
}
}
}
на закрывающие скобки не хватило места. код из моего еще не дописанного мода на майнкрафт.