aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/gregtech/api/enums/TC_Aspects.java
blob: 24d19b0b73adb32e4d90535a0f70ce3b1a7dbe0c (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
package gregtech.api.enums;

import java.util.List;

public enum TC_Aspects {

    AER(1),
    ALIENIS(20),
    AQUA(3),
    ARBOR(1),
    AURAM(16),
    BESTIA(6),
    COGNITIO(2),
    CORPUS(2),
    ELECTRUM(24),
    EXANIMIS(32),
    FABRICO(2),
    FAMES(2),
    GELUM(1),
    GRANUM(4),
    HERBA(2),
    HUMANUS(8),
    IGNIS(4),
    INSTRUMENTUM(4),
    ITER(6),
    LIMUS(3),
    LUCRUM(32),
    LUX(4),
    MACHINA(16),
    MAGNETO(24),
    MESSIS(3),
    METALLUM(8),
    METO(2),
    MORTUUS(16),
    MOTUS(4),
    NEBRISUM(48),
    ORDO(8),
    PANNUS(6),
    PERDITIO(2),
    PERFODIO(4),
    PERMUTATIO(12),
    POTENTIA(16),
    PRAECANTATIO(16),
    RADIO(48),
    SANO(24),
    SENSUS(4),
    SPIRITUS(24),
    STRONTIO(64),
    TELUM(6),
    TERRA(1),
    TEMPESTAS(64),
    TENEBRAE(24),
    TUTAMEN(12),
    VACUOS(6),
    VENENUM(16),
    VICTUS(4),
    VINCULUM(16),
    VITIUM(48),
    VITREUS(3),
    VOLATUS(12);

    /**
     * The Thaumcraft Aspect Object of the Mod itself.
     */
    public Object mAspect;

    public final int mValue;

    TC_Aspects(int aValue) {
        mValue = aValue;
    }

    public static class TC_AspectStack {

        public TC_Aspects mAspect;
        public long mAmount;

        public TC_AspectStack(TC_Aspects aAspect, long aAmount) {
            mAspect = aAspect;
            mAmount = aAmount;
        }

        public TC_AspectStack copy() {
            return new TC_AspectStack(mAspect, mAmount);
        }

        public TC_AspectStack copy(long aAmount) {
            return new TC_AspectStack(mAspect, aAmount);
        }

        public List<TC_AspectStack> addToAspectList(List<TC_AspectStack> aList) {
            if (mAmount == 0) return aList;
            for (TC_AspectStack tAspect : aList) if (tAspect.mAspect == mAspect) {
                tAspect.mAmount += mAmount;
                return aList;
            }
            aList.add(copy());
            return aList;
        }

        public boolean removeFromAspectList(List<TC_AspectStack> aList) {
            for (TC_AspectStack tAspect : aList) if (tAspect.mAspect == mAspect) {
                if (tAspect.mAmount >= mAmount) {
                    tAspect.mAmount -= mAmount;
                    if (tAspect.mAmount == 0) aList.remove(tAspect);
                    return true;
                }
            }
            return false;
        }
    }
}