summaryrefslogtreecommitdiff
path: root/src/main/java/darkknight/jewelrycraft/client/gui/container/ContainerJewelryTab.java
blob: 344df7efb6de78d1266bc1fc206e176acb7c3849 (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
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;
	}
}