forked from KryptonCaptain/MagicBees
-
Notifications
You must be signed in to change notification settings - Fork 23
/
Allele.java
324 lines (286 loc) · 16.2 KB
/
Allele.java
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
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
package magicbees.bees;
import magicbees.api.MagicBeesAPI;
import magicbees.bees.allele.effect.AlleleEffectCrumbling;
import magicbees.bees.allele.effect.AlleleEffectCure;
import magicbees.bees.allele.effect.AlleleEffectEmpowering;
import magicbees.bees.allele.effect.AlleleEffectNodeConversion;
import magicbees.bees.allele.effect.AlleleEffectNodeRepair;
import magicbees.bees.allele.effect.AlleleEffectPlaceholder;
import magicbees.bees.allele.effect.AlleleEffectPotion;
import magicbees.bees.allele.effect.AlleleEffectRecharge;
import magicbees.bees.allele.effect.AlleleEffectSpawnMob;
import magicbees.bees.allele.effect.AlleleEffectSpawnMobWeighted;
import magicbees.bees.allele.effect.AlleleEffectSpawnWisp;
import magicbees.bees.allele.effect.AlleleEffectTransmuting;
import magicbees.bees.allele.effect.TransmutationEffectController;
import magicbees.bees.allele.effect.TransmutationEffectLBotaniaLiving;
import magicbees.bees.allele.effect.TransmutationEffectRailcraft;
import magicbees.bees.allele.effect.TransmutationEffectVanilla;
import magicbees.bees.allele.flowerProvider.FlowerProviderArsMagicaFlower;
import magicbees.bees.allele.flowerProvider.FlowerProviderAuraNode;
import magicbees.bees.allele.flowerProvider.FlowerProviderBookshelf;
import magicbees.bees.allele.flowerProvider.FlowerProviderBotania;
import magicbees.bees.allele.flowerProvider.FlowerProviderThaumcraftFlower;
import magicbees.main.utils.LocalizationManager;
import magicbees.main.utils.compat.ArsMagicaHelper;
import magicbees.main.utils.compat.BotaniaHelper;
import magicbees.main.utils.compat.ThaumcraftHelper;
import magicbees.main.utils.compat.ThermalModsHelper;
import net.minecraft.potion.Potion;
import thaumcraft.api.nodes.NodeType;
import forestry.api.apiculture.EnumBeeChromosome;
import forestry.api.apiculture.IAlleleBeeEffect;
import forestry.api.apiculture.IAlleleBeeSpecies;
import forestry.api.genetics.AlleleManager;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.IAlleleEffect;
import forestry.api.genetics.IAlleleFlowers;
import forestry.api.genetics.IAlleleRegistry;
import forestry.api.genetics.IChromosomeType;
import forestry.api.genetics.IFlowerProvider;
public class Allele implements IAllele {
private static final String FLOWER_ARS_MAGICA_PLANT = "flowerArsMagicaPlant";
private static final String FLOWER_BOTANIA = "flowerBotania";
private static final String EFFECT_TE_BLIZZY = "TEBlizzy";
private static final String EFFECT_TE_BLITZ = "TEBlitz";
private static final String EFFECT_TE_BASALZ = "TEBasalz";
private static final String EFFECT_AM_WISP = "AMWisp";
private static final String EFFECT_MANA_DRAIN = "ManaDrain";
private static final String EFFECT_DREAMING = "Dreaming";
private static final String EFFECT_WISPY = "Wispy";
private static final String EFFECT_BATTY = "Batty";
private static final String EFFECT_BRAINY = "Brainy";
private static final String EFFECT_NODE_RAVENING = "NodeRavening";
private static final String EFFECT_NODE_PURIFYING = "NodePurifying";
private static final String EFFECT_NODE_TAINTING = "NodeTainting";
private static final String EFFECT_NODE_REPAIR = "NodeRepair";
private static final String EFFECT_NODE_EMPOWER = "NodeEmpower";
private static final String EFFECT_VIS_RECHARGE = "VisRecharge";
private static final String FLOWERS_AURA_NODE = "AuraNode";
private static final String FLOWERS_THAUMCRAFT_PLANT = "ThaumcraftPlant";
public static AlleleFloat speedBlinding;
public static IAlleleBeeEffect forestryBaseEffect;
public static IAlleleFlowers flowerBookshelf;
public static IAlleleFlowers flowerThaumcraft;
public static IAlleleFlowers flowerArsMagica;
public static IAlleleFlowers flowerAuraNode;
public static IAlleleFlowers flowerBotania;
public static IAlleleEffect effectCleansing;
public static IAlleleEffect effectDigSpeed;
public static IAlleleEffect effectMoveSpeed;
public static IAlleleEffect effectSlowSpeed;
public static IAlleleEffect effectWithering;
public static IAlleleEffect effectVisRecharge;
public static IAlleleEffect effectNodeEmpower;
public static IAlleleEffect effectNodeRepair;
public static IAlleleEffect effectNodeConversionTaint;
public static IAlleleEffect effectNodeConversionPure;
public static IAlleleEffect effectNodeConversionHungry;
public static IAlleleEffect effectTransmuting;
public static IAlleleEffect effectCrumbling;
public static IAlleleEffect effectInvisibility;
public static IAlleleEffect effectDreaming;
public static IAlleleEffect spawnWolf;
public static IAlleleEffect spawnBats;
public static IAlleleEffect spawnCow;
public static IAlleleEffect spawnChicken;
public static IAlleleEffect spawnPig;
public static IAlleleEffect spawnSheep;
public static IAlleleEffect spawnCat;
public static IAlleleEffect spawnHorse;
public static IAlleleEffect spawnGhast;
public static IAlleleEffect spawnSpider;
public static IAlleleEffect spawnBlaze;
public static IAlleleEffect spawnBrainyZombie;
public static IAlleleEffect spawnWisp;
public static IAlleleEffect spawnBlizz;
public static IAlleleEffect spawnBlitz;
public static IAlleleEffect spawnBasalz;
public static IAlleleEffect spawnManaDrainer;
public static IAlleleEffect spawnWispOrHecate;
public static void setupAdditionalAlleles() {
forestryBaseEffect = (IAlleleBeeEffect) getBaseAllele("effectNone");
IFlowerProvider vanillaFlowers = ((IAlleleFlowers) getBaseAllele("flowersVanilla")).getProvider();
speedBlinding = new AlleleFloat("speedBlinding", 2f, false, EnumBeeChromosome.SPEED);
flowerBookshelf = new AlleleFlower("Bookshelf", new FlowerProviderBookshelf(), true);
effectCleansing = new AlleleEffectCure("Curative", false);
effectDigSpeed = new AlleleEffectPotion("DigSpeed", Potion.digSpeed, 15, false);
effectMoveSpeed = new AlleleEffectPotion("MoveSpeed", Potion.moveSpeed, 10, false);
effectSlowSpeed = new AlleleEffectPotion("SlowSpeed", Potion.moveSlowdown, 3, false).setMalicious();
effectWithering = new AlleleEffectPotion("Withering", Potion.wither, 10, false).setMalicious();
TransmutationEffectController controller = new TransmutationEffectController(
new TransmutationEffectRailcraft(),
new TransmutationEffectVanilla());
MagicBeesAPI.transmutationEffectController = controller;
effectTransmuting = new AlleleEffectTransmuting("Transmuting", true, controller, 200);
effectCrumbling = new AlleleEffectCrumbling("Crumbling", true);
effectInvisibility = new AlleleEffectPotion("Invisibility", Potion.invisibility, 10, false);
spawnGhast = new AlleleEffectSpawnMob("Ghastly", false, "Ghast", "mob.ghast.moan").setThrottle(2060)
.setChanceToSpawn(10).setMaxMobsInSpawnZone(1);
spawnSpider = new AlleleEffectSpawnMob("Spidery", false, "Spider", "mob.spider.step").setThrottle(400)
.setChanceToSpawn(70).setMaxMobsInSpawnZone(4);
spawnBlaze = new AlleleEffectSpawnMob("Ablaze", false, "Blaze", "mob.blaze.breathe").setThrottle(800)
.setChanceToSpawn(60).setMaxMobsInSpawnZone(2);
spawnWolf = new AlleleEffectSpawnMob("Canine", false, "Wolf", "mob.wolf.panting").setThrottle(650)
.setChanceToSpawn(40).setMaxMobsInSpawnZone(2);
spawnPig = new AlleleEffectSpawnMob("Porcine", true, "Pig", "mob.pig.say").setThrottle(350)
.setMaxMobsInSpawnZone(4);
spawnCow = new AlleleEffectSpawnMob("Bovine", true, "Cow", "mob.cow.say").setThrottle(640)
.setMaxMobsInSpawnZone(3);
spawnChicken = new AlleleEffectSpawnMob("Chicken", true, "Chicken", "mob.chicken.hurt").setThrottle(20)
.setMaxMobsInSpawnZone(20);
spawnSheep = new AlleleEffectSpawnMob("Sheep", false, "Sheep", "mob.sheep.say").setThrottle(450)
.setMaxMobsInSpawnZone(5);
spawnCat = new AlleleEffectSpawnMob("Catty", false, "Ozelot", "mob.cat.meow").setThrottle(702)
.setChanceToSpawn(60).setMaxMobsInSpawnZone(2);
spawnHorse = new AlleleEffectSpawnMob("Horse", false, "EntityHorse", "mob.horse.idle").setThrottle(450)
.setChanceToSpawn(59).setMaxMobsInSpawnZone(2);
if (ThaumcraftHelper.isActive()) {
flowerThaumcraft = new AlleleFlower(FLOWERS_THAUMCRAFT_PLANT, new FlowerProviderThaumcraftFlower(), false);
flowerAuraNode = new AlleleFlower(FLOWERS_AURA_NODE, new FlowerProviderAuraNode(), true);
effectVisRecharge = new AlleleEffectRecharge(EFFECT_VIS_RECHARGE, false);
effectNodeEmpower = new AlleleEffectEmpowering(EFFECT_NODE_EMPOWER, false);
effectNodeRepair = new AlleleEffectNodeRepair(EFFECT_NODE_REPAIR, false);
effectNodeConversionTaint = new AlleleEffectNodeConversion(
EFFECT_NODE_TAINTING,
NodeType.TAINTED,
false,
250);
effectNodeConversionPure = new AlleleEffectNodeConversion(EFFECT_NODE_PURIFYING, NodeType.PURE, false, 250);
effectNodeConversionHungry = new AlleleEffectNodeConversion(
EFFECT_NODE_RAVENING,
NodeType.HUNGRY,
false,
2);
spawnBrainyZombie = new AlleleEffectSpawnMob(
EFFECT_BRAINY,
false,
ThaumcraftHelper.Entity.BRAINY_ZOMBIE.entityID).setAggrosPlayerOnSpawn().setThrottle(800)
.setSpawnsOnPlayerNear(null).setMaxMobsInSpawnZone(2);
spawnBats = new AlleleEffectSpawnMob(EFFECT_BATTY, false, ThaumcraftHelper.Entity.FIREBAT.entityID)
.setThrottle(300).setSpawnsOnPlayerNear("Bat");
spawnWisp = new AlleleEffectSpawnWisp(
EFFECT_WISPY,
false,
ThaumcraftHelper.Entity.WISP.entityID,
"thaumcraft.wisplive").setThrottle(1800).setChanceToSpawn(79);
} else {
spawnBats = new AlleleEffectSpawnMob(EFFECT_BATTY, false, "Bat").setThrottle(150);
flowerThaumcraft = new AlleleFlower(FLOWERS_THAUMCRAFT_PLANT, vanillaFlowers, false);
flowerAuraNode = new AlleleFlower(FLOWERS_AURA_NODE, vanillaFlowers, true);
Allele.effectVisRecharge = new AlleleEffectRecharge(EFFECT_VIS_RECHARGE, false);
effectNodeEmpower = new AlleleEffectPlaceholder(EFFECT_NODE_EMPOWER, false);
effectNodeRepair = new AlleleEffectPlaceholder(EFFECT_NODE_REPAIR, false);
effectNodeConversionTaint = new AlleleEffectPlaceholder(EFFECT_NODE_TAINTING, false);
effectNodeConversionPure = new AlleleEffectPlaceholder(EFFECT_NODE_PURIFYING, false);
effectNodeConversionHungry = new AlleleEffectPlaceholder(EFFECT_NODE_RAVENING, false);
spawnBrainyZombie = new AlleleEffectPlaceholder(EFFECT_BRAINY, false);
spawnWisp = new AlleleEffectPlaceholder(EFFECT_WISPY, false);
}
if (BotaniaHelper.isActive()) {
flowerBotania = new AlleleFlower(FLOWER_BOTANIA, new FlowerProviderBotania(), true);
effectDreaming = new AlleleEffectTransmuting(
EFFECT_DREAMING,
false,
new TransmutationEffectController(new TransmutationEffectLBotaniaLiving()),
100);
} else {
flowerBotania = new AlleleFlower(FLOWER_BOTANIA, vanillaFlowers, true);
effectDreaming = new AlleleEffectPlaceholder(EFFECT_DREAMING, false);
}
if (ArsMagicaHelper.isActive()) {
flowerArsMagica = new AlleleFlower(FLOWER_ARS_MAGICA_PLANT, new FlowerProviderArsMagicaFlower(), false);
spawnManaDrainer = new AlleleEffectSpawnMobWeighted(
EFFECT_MANA_DRAIN,
true,
20,
new String[] { ArsMagicaHelper.Name + ".MobManaCreeper", ArsMagicaHelper.Name + ".ManaVortex" },
new int[] { 60, 2 });
spawnWispOrHecate = new AlleleEffectSpawnMobWeighted(
EFFECT_AM_WISP,
true,
20,
new String[] { ArsMagicaHelper.Name + ".MobWisp", ArsMagicaHelper.Name + ".MobHecate" },
new int[] { 40, 3 });
} else {
flowerArsMagica = new AlleleFlower(FLOWER_ARS_MAGICA_PLANT, vanillaFlowers, false);
spawnManaDrainer = new AlleleEffectPlaceholder(EFFECT_MANA_DRAIN, true);
spawnWispOrHecate = new AlleleEffectPlaceholder(EFFECT_AM_WISP, true);
}
// TODO TE spawning
if (ThermalModsHelper.isActive()) {
spawnBlizz = new AlleleEffectSpawnMob(
EFFECT_TE_BLIZZY,
true,
ThermalModsHelper.Entity.BLIZZ.entityID,
ThermalModsHelper.Entity.BLIZZ.soundName).setThrottle(100).setChanceToSpawn(80);
spawnBlitz = new AlleleEffectSpawnMob(
EFFECT_TE_BLITZ,
true,
ThermalModsHelper.Entity.BLITZ.entityID,
ThermalModsHelper.Entity.BLITZ.soundName).setThrottle(100).setChanceToSpawn(80);
spawnBasalz = new AlleleEffectSpawnMob(
EFFECT_TE_BASALZ,
true,
ThermalModsHelper.Entity.BASALZ.entityID,
ThermalModsHelper.Entity.BASALZ.soundName).setThrottle(100).setChanceToSpawn(80);
} else {
spawnBlizz = new AlleleEffectPlaceholder(EFFECT_TE_BLIZZY, true);
spawnBlitz = new AlleleEffectPlaceholder(EFFECT_TE_BLITZ, true);
spawnBasalz = new AlleleEffectPlaceholder(EFFECT_TE_BASALZ, true);
}
}
public static void registerDeprecatedAlleleReplacements() {
IAlleleRegistry registry = AlleleManager.alleleRegistry;
registry.registerDeprecatedAlleleReplacement("magicbees.effectNodeAttract", effectNodeEmpower);
registry.registerDeprecatedAlleleReplacement("magicbees.effectNodePurify", effectNodeConversionPure);
registry.registerDeprecatedAlleleReplacement("magicbees.effectNodeFlux", effectNodeConversionTaint);
registry.registerDeprecatedAlleleReplacement("magicbees.effectNodeCharge", effectNodeEmpower);
registry.registerDeprecatedAlleleReplacement(
"magicbees.speciesTCAttractive",
BeeSpecies.TC_EMPOWERING.getSpecies());
registry.registerDeprecatedAlleleReplacement(
"magicbees.speciesBMBloodyBMBloody",
BeeSpecies.EARTHY.getSpecies());
registry.registerDeprecatedAlleleReplacement(
"magicbees.speciesBMBloodyBMBound",
BeeSpecies.ARCANE.getSpecies());
}
public static IAlleleBeeSpecies getBaseSpecies(String name) {
return (IAlleleBeeSpecies) AlleleManager.alleleRegistry
.getAllele((new StringBuilder()).append("forestry.species").append(name).toString());
}
public static IAlleleBeeSpecies getExtraSpecies(String name) {
return (IAlleleBeeSpecies) AlleleManager.alleleRegistry
.getAllele((new StringBuilder()).append("extrabees.species.").append(name.toLowerCase()).toString());
}
public static IAllele getBaseAllele(String name) {
return AlleleManager.alleleRegistry.getAllele("forestry." + name);
}
public static IAllele getAllele(String name) {
return AlleleManager.alleleRegistry.getAllele(name);
}
private String uid;
private boolean dominant;
public Allele(String id, boolean isDominant, IChromosomeType... chromosomeTypes) {
this.uid = "magicbees." + id;
this.dominant = isDominant;
AlleleManager.alleleRegistry.registerAllele(this, chromosomeTypes);
}
@Override
public String getUID() {
return this.uid;
}
@Override
public boolean isDominant() {
return this.dominant;
}
@Override
public String getName() {
return LocalizationManager.getLocalizedString(getUID());
}
@Override
public String getUnlocalizedName() {
return this.uid;
}
}