blob: a8c0f25b83500bf95bcd74a24cdd60de53ffe515 (
plain)
1
2
3
4
5
6
7
8
9
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
100
101
102
103
104
105
106
107
108
|
package tileentities;
import kekztech.MultiItemHandler;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
public class TE_ItemServerIOPort extends TileEntity implements IInventory {
private MultiItemHandler mih;
public void setMultiItemHandler(MultiItemHandler mih) {
System.out.println("MIH set");
this.mih = mih;
}
@Override
public int getSizeInventory() {
return (mih != null) ? mih.getItemTypeCapacity() : 9;
}
@Override
public ItemStack getStackInSlot(int slot) {
return (mih != null) ? mih.getStackInSlot(slot) : null;
}
@Override
public ItemStack decrStackSize(int slot, int amount) {
if(mih != null) {
if(mih.getStackInSlot(slot) != null) {
final ItemStack obtained = mih.getStackInSlot(slot).copy();
obtained.stackSize = mih.reduceStackInSlot(slot, amount);
super.markDirty();
return obtained;
} else {
return null;
}
}
return null;
}
@Override
public ItemStack getStackInSlotOnClosing(int slot) {
return null;
}
@Override
public void setInventorySlotContents(int slot, ItemStack itemStack) {
System.out.println("Set slot, MIH: " + mih);
if(mih != null) {
if(itemStack == null || !itemStack.isItemEqual(mih.getStackInSlot(slot))) {
return;
} else {
if(mih.getStackInSlot(slot) == null) {
System.out.println("Set slot: Allocate new");
mih.insertStackInSlot(slot, itemStack);
} else {
final int change = itemStack.stackSize - mih.getStackInSlot(slot).stackSize;
if(change < 0) {
System.out.println("Set slot: reduce");
mih.reduceStackInSlot(slot, change);
} else {
System.out.println("Set slot: increase");
mih.increaseStackInSlot(slot, change);
}
}
super.markDirty();
}
}
}
@Override
public String getInventoryName() {
return "Item Server IO Port";
}
@Override
public boolean hasCustomInventoryName() {
return true;
}
@Override
public int getInventoryStackLimit() {
return (mih != null) ? mih.getPerTypeCapacity() : 0;
}
@Override
public boolean isUseableByPlayer(EntityPlayer player) {
return true;
}
@Override
public void openInventory() {
}
@Override
public void closeInventory() {
}
@Override
public boolean isItemValidForSlot(int slot, ItemStack itemStack) {
return (mih != null) ? (mih.getStackInSlot(slot).isItemEqual(itemStack) || mih.getStackInSlot(slot) == null) : false;
}
}
|