aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/api/objects/minecraft/ThaumcraftDataStack.java
blob: 947b0a97b4fa833d7e7b36e096d92f21316d0942 (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
package gtPlusPlus.api.objects.minecraft;

import java.util.Iterator;
import java.util.Stack;

import net.minecraft.item.ItemStack;
import thaumcraft.api.aspects.AspectList;

public class ThaumcraftDataStack extends Stack<ThaumcraftItemStackData> {

	private final int mStackSize;

	public ThaumcraftDataStack() {
		this(Integer.MAX_VALUE);
	}

	public ThaumcraftDataStack(int aMaxSize) {
		mStackSize = aMaxSize;
	}

	public boolean containsItemStack(ItemStack aStack, boolean aAddItemStackIfMissingFromStack) {
		return getItemStackIndex(aStack) != -1;
	}

	private int getItemStackIndex(ItemStack aStack) {
		if (this.empty() || aStack == null) {
			return -1;
		}
		Iterator<ThaumcraftItemStackData> iterator = this.iterator();
		int aIndex = 0;
		while(iterator.hasNext()){
			ThaumcraftItemStackData value = iterator.next();
			if (value.doesItemStackDataMatch(aStack)) {
				//int index = this.search(value);
				return aIndex;
			}
			aIndex++;
		}		
		return -1;
	}

	public AspectList getAspectsForStack(ItemStack aStack) {
		if (aStack != null) {
			int aIndex = getItemStackIndex(aStack);
			if (!this.empty()) {
				if (aIndex != -1) {
					ThaumcraftItemStackData aValue = this.elementAt(aIndex);
					if (aValue != null) {
						return aValue.getAspectList();
					}
				}	
			}
			if (this.empty() || aIndex == -1) {
				ThaumcraftItemStackData aTemp = new ThaumcraftItemStackData(aStack);
				this.push(aTemp);
				return aTemp.getAspectList();
			}
		}
		return new AspectList();
	}

	@Override
	public ThaumcraftItemStackData push(ThaumcraftItemStackData item) {
		if (this.size() >= this.mStackSize) {
			this.pop();
		}
		return super.push(item);
	}


}