summaryrefslogtreecommitdiff
path: root/src/main/java/fyresmodjam/blessings/BlessingUtils.java
blob: c240a7a63234c7e374c1b364f501ad671d121fdd (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
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
package fyresmodjam.blessings;

import java.util.HashMap;
import java.util.Map;

import fyresmodjam.ModjamMod;
import fyresmodjam.handlers.CommonTickHandler;
import fyresmodjam.misc.EntityStatHelper;

import fyresmodjam.blessings.marks.*;
import fyresmodjam.blessings.standard.*;

import net.minecraft.entity.Entity;
import net.minecraft.nbt.NBTTagCompound;

public class BlessingUtils {
	public final static Map<String, Blessing>	playerBlessings;
	public final static Map<String, Blessing>	mobBlessings;

	static {
		playerBlessings = new HashMap<String, Blessing>();
		mobBlessings = new HashMap<String, Blessing>();

		createStandardBlessings();
		createMarks();
	}

	private static void createMarks() {
		BerserkingMark berserkingMark = new BerserkingMark();
		FalseLifeMark falseLifeMark = new FalseLifeMark();
		GuardingMark guardingMark = new GuardingMark();
		HuntingMark huntingMark = new HuntingMark();
		ScoutingMark scoutingMark = new ScoutingMark();
		VampirismMark vampirismMark = new VampirismMark();
		WarMark warMark = new WarMark();

		addOmniBlessing("MarkBerserking", berserkingMark);
		addOmniBlessing("MarkFalseLife", falseLifeMark);
		addOmniBlessing("MarkGuarding", guardingMark);
		addOmniBlessing("MarkHunting", huntingMark);
		addOmniBlessing("MarkVampirism", vampirismMark);
		addOmniBlessing("MarkWar", warMark);

		playerBlessings.put("MarkScouting", scoutingMark);
	}

	private static void createStandardBlessings() {
		AlchemistBlessing alchemistBlessing = new AlchemistBlessing();
		BerserkerBlessing berserkerBlessing = new BerserkerBlessing();
		GuardianBlessing guardianBlessing = new GuardianBlessing();
		HunterBlessing hunterBlessing = new HunterBlessing();
		InfernoBlessing infernoBlessing = new InfernoBlessing();
		LonerBlessing lonerBlessing = new LonerBlessing();
		ParatrooperBlessing paratrooperBlessing = new ParatrooperBlessing();
		PorcupineBlessing porcupineBlessing = new PorcupineBlessing();
		SwampBlessing swampBlessing = new SwampBlessing();
		ThickSkinnedBlessing thickSkinnedBlessing = new ThickSkinnedBlessing();
		VampireBlessing vampireBlessing = new VampireBlessing();
		WarriorBlessing warriorBlessing = new WarriorBlessing();
		DiverBlessing diverBlessing = new DiverBlessing();
		LooterBlessing looterBlessing = new LooterBlessing();
		LumberjackBlessing lumberjackBlessing = new LumberjackBlessing();
		MechanicBlessing mechanicBlessing = new MechanicBlessing();
		MinerBlessing minerBlessing = new MinerBlessing();
		NinjaBlessing ninjaBlessing = new NinjaBlessing();
		ScholarBlessing scholarBlessing = new ScholarBlessing();
		ThiefBlessing thiefBlessing = new ThiefBlessing();

		addOmniBlessing("BlessingWarrior", warriorBlessing);
		addOmniBlessing("BlessingHunter", hunterBlessing);
		addOmniBlessing("BlessingSwamp", swampBlessing);
		addOmniBlessing("BlessingGuardian", guardianBlessing);
		addOmniBlessing("BlessingVampire", vampireBlessing);
		addOmniBlessing("BlessingInferno", infernoBlessing);
		addOmniBlessing("BlessingLoner", lonerBlessing);
		addOmniBlessing("BlessingParatrooper",
				paratrooperBlessing);
		addOmniBlessing("BlessingPorcupine", porcupineBlessing);
		addOmniBlessing("BlessingThick-Skinned",
				thickSkinnedBlessing);

		PaladinBlessing paladinBlessing = new PaladinBlessing();

		playerBlessings.put("BlessingAlchemist",
				alchemistBlessing);
		playerBlessings.put("BlessingBerserker",
				berserkerBlessing);
		playerBlessings.put("BlessingDiver", diverBlessing);
		playerBlessings.put("BlessingLooter", looterBlessing);
		playerBlessings.put("BlessingLumberjack",
				lumberjackBlessing);
		playerBlessings.put("BlessingMechanic", mechanicBlessing);
		playerBlessings.put("BlessingMiner", minerBlessing);
		playerBlessings.put("BlessingNinja", ninjaBlessing);
		playerBlessings.put("BlessingPaladin", paladinBlessing);
		playerBlessings.put("BlessingScholar", scholarBlessing);
		playerBlessings.put("BlessingThief", thiefBlessing);
	}

	private static void addOmniBlessing(String blessName,
			Blessing blessInst) {
		playerBlessings.put(blessName, blessInst);
		mobBlessings.put(blessName, blessInst);
	}

	public static boolean hasDisadvantage() {
		if (CommonTickHandler.worldData != null) {
			String currentDisadvantage = CommonTickHandler.worldData
					.getDisadvantage();

			return currentDisadvantage != null
					&& !(currentDisadvantage
							.equals(""));
		}

		return false;
	}

	public static boolean hasDisadvantage(String disadvantage) {
		if (hasDisadvantage()) {
			return CommonTickHandler.worldData
					.getDisadvantage()
					.equals(disadvantage);
		}

		return false;
	}

	public static String getDisadvantage() {
		return CommonTickHandler.worldData.currentDisadvantage;
	}

	public static String getBlessing(Entity ent) {
		return ent.getEntityData().getString("Blessing");
	}

	public static boolean hasBlessing(Entity ent) {
		NBTTagCompound entityData = ent.getEntityData();

		return entityData.hasKey("Blessing") && !(entityData
				.getString("Blessing").equals(""));
	}

	public static boolean hasBlessing(Entity ent, String blessing) {
		if (hasBlessing(ent)) {
			return ent.getEntityData().getString("Blessing")
					.equals(blessing);
		}

		return false;
	}

	public static boolean hasBlessingCounter(Entity ent) {
		return EntityStatHelper.hasStat(ent, "BlessingCounter");
	}

	public static int getBlessingCounter(Entity ent) {
		return Integer.parseInt(EntityStatHelper.getStat(ent,
				"BlessingCounter"));
	}

	public static boolean isBlessingActive(Entity ent) {
		return ent.getEntityData().hasKey("BlessingActive")
				&& ent.getEntityData().getBoolean(
						"BlessingActive");
	}

	public static Blessing getBlessingInstance(String blessing) {
		if (playerBlessings.containsKey(blessing)) {
			return playerBlessings.get(blessing);
		} else {
			System.err.printf(
					"ERROR: Blessing '%s' not found, using default blessing\n",
					blessing);
			return playerBlessings.get("BlessingGuardian");
		}
	}

	public static String getPlayerBlessing() {
		int n = ModjamMod.r.nextInt(playerBlessings.size());

		int i = 0;
		for (String blessing : playerBlessings.keySet()) {
			if (i >= n) {
				return blessing;
			}

			i += 1;
		}

		System.err.println(
				"ERROR: Couldn't get blessing for player; using default.");
		return "BlessingGuardian";
	}

	public static String getMobBlessing() {
		int n = ModjamMod.r.nextInt(mobBlessings.size());

		int i = 0;
		for (String blessing : mobBlessings.keySet()) {
			if (i >= n) {
				return blessing;
			}

			i += 1;
		}

		System.err.println(
				"ERROR: Couldn't get blessing for mob; using default.");
		return "BlessingGuardian";
	}

	public static Blessing getBlessingInstance(Entity entity) {
		return getBlessingInstance(getBlessing(entity));
	}
}