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
109
110
111
112
113
114
115
116
117
118
119
120
121
|
package darkknight.jewelrycraft.client.gui.container;
import darkknight.jewelrycraft.JewelrycraftMod;
import darkknight.jewelrycraft.api.IJewelryItem;
import darkknight.jewelrycraft.client.gui.container.slots.SlotBracelet;
import darkknight.jewelrycraft.client.gui.container.slots.SlotEarrings;
import darkknight.jewelrycraft.client.gui.container.slots.SlotNecklace;
import darkknight.jewelrycraft.client.gui.container.slots.SlotRing;
import darkknight.jewelrycraft.item.*;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.Slot;
import net.minecraft.item.ItemStack;
public class ContainerJewelryTab extends Container {
public ContainerJewelryTab(EntityPlayer player, IInventory inv, IInventory extra) {
int x, y;
// Rings
for (x = 0; x <= 9; x++)
addSlotToContainer(new SlotRing(extra, x, 8 + x * 18, 7));
// Bracelets
for (x = 10; x <= 13; x++)
addSlotToContainer(new SlotBracelet(extra, x, 8 + (x - 10) * 18, 26));
// Necklaces
for (x = 14; x <= 16; x++)
addSlotToContainer(new SlotNecklace(extra, x, 8 + (x - 14) * 18, 45));
// Earrings
addSlotToContainer(new SlotEarrings(extra, 17, 8, 64));
// Hotbar
for (x = 0; x < 9; ++x)
addSlotToContainer(new Slot(inv, x, 17 + x * 18, 142));
// Inventory
for (x = 0; x < 3; ++x)
for (y = 0; y < 9; ++y)
addSlotToContainer(new Slot(inv, 9 + y + x * 9, 17 + y * 18, 84 + x * 18));
}
@Override
public boolean canInteractWith(EntityPlayer player) {
return true;
}
@Override
public ItemStack slotClick(int slotID, int j, int k, EntityPlayer player) {
if (slotID >= 0 && slotID <= 17 && !player.worldObj.isRemote) {
try {
if (player.inventory.getItemStack() == null && inventoryItemStacks.get(slotID) != null
&& ((ItemStack) inventoryItemStacks.get(slotID)).getItem() instanceof ItemBaseJewelry) {
((ItemBaseJewelry) ((ItemStack) inventoryItemStacks.get(slotID)).getItem())
.onJewelryUnequipped((ItemStack) inventoryItemStacks.get(slotID), player);
} else if (player.inventory.getItemStack() != null
&& player.inventory.getItemStack().getItem() instanceof ItemBaseJewelry
&& inventoryItemStacks.get(slotID) == null) {
((ItemBaseJewelry) player.inventory.getItemStack().getItem())
.onJewelryEquipped(player.inventory.getItemStack(), player);
}
if (player.inventory.getItemStack() == null && inventoryItemStacks.get(slotID) != null
&& ((ItemStack) inventoryItemStacks.get(slotID)).getItem() instanceof IJewelryItem)
((IJewelryItem) ((ItemStack) inventoryItemStacks.get(slotID)).getItem())
.onJewelryUnequipped((ItemStack) inventoryItemStacks.get(slotID));
else if (player.inventory.getItemStack() != null
&& player.inventory.getItemStack().getItem() instanceof IJewelryItem
&& inventoryItemStacks.get(slotID) == null)
((IJewelryItem) player.inventory.getItemStack().getItem())
.onJewelryEquipped(player.inventory.getItemStack());
} catch (Exception e) {
JewelrycraftMod.logger.error("An error has occured while equipping an item.");
e.printStackTrace();
}
}
return super.slotClick(slotID, j, k, player);
}
@Override
public ItemStack transferStackInSlot(EntityPlayer player, int slotID) {
ItemStack itemstack = null;
Slot slot = (Slot) inventorySlots.get(slotID);
if (slot != null && slot.getHasStack()) {
ItemStack itemstack1 = slot.getStack();
itemstack = itemstack1.copy();
if (slotID >= 18) {
if (itemstack.getItem() instanceof ItemRing || (itemstack.getItem() instanceof IJewelryItem
&& ((IJewelryItem) itemstack.getItem()).type() == 0)) {
if (!mergeItemStack(itemstack, 0, 10, false) && !slot.getHasStack())
return null;
} else if (itemstack.getItem() instanceof ItemBracelet || (itemstack.getItem() instanceof IJewelryItem
&& ((IJewelryItem) itemstack.getItem()).type() == 1)) {
if (!mergeItemStack(itemstack, 10, 14, false) && !slot.getHasStack())
return null;
} else if (itemstack.getItem() instanceof ItemNecklace || (itemstack.getItem() instanceof IJewelryItem
&& ((IJewelryItem) itemstack.getItem()).type() == 2)) {
if (!mergeItemStack(itemstack, 14, 17, false) && !slot.getHasStack())
return null;
} else if (itemstack.getItem() instanceof ItemEarrings || (itemstack.getItem() instanceof IJewelryItem
&& ((IJewelryItem) itemstack.getItem()).type() == 3)) {
if (!mergeItemStack(itemstack, 17, 18, false) && !slot.getHasStack())
return null;
} else {
if (slotID < 27) {
if (!mergeItemStack(itemstack, 27, 36 + 18, false))
return null;
} else {
if (!mergeItemStack(itemstack, 18, 27, false))
return null;
}
}
} else if (!mergeItemStack(itemstack, 18, inventorySlots.size(), false))
return null;
if (itemstack.stackSize == 0)
slot.putStack(null);
else
slot.onSlotChanged();
if (itemstack.stackSize != itemstack.stackSize)
slot.onPickupFromSlot(player, itemstack);
else
return null;
}
return itemstack;
}
}
|