Skip to content

Commit d6a50db

Browse files
authored
Fixing vampirism degrading nutrition (#17)
* Xabe's requested vamp changes * Update WitcheryEventHandler.java * removing unnecessary phases from module * change deps
1 parent 5833f1d commit d6a50db

File tree

9 files changed

+141
-1
lines changed

9 files changed

+141
-1
lines changed

dependencies.gradle

+1
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
*/
3636
dependencies {
3737
api("com.github.GTNewHorizons:AppleCore:3.3.0:dev") { transitive = false }
38+
compileOnlyApi(deobfCurse('witchery-69673:2234410'))
3839

3940
runtimeOnlyNonPublishable("com.github.GTNewHorizons:SpiceOfLife:2.1.6-carrot:dev")
4041
}

src/main/java/ca/wescook/nutrition/Nutrition.java

+10
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44

55
import ca.wescook.nutrition.effects.EffectsList;
66
import ca.wescook.nutrition.events.*;
7+
import ca.wescook.nutrition.modules.witchery.WitcheryHelper;
8+
import ca.wescook.nutrition.modules.witchery.events.WitcheryEventHandler;
79
import ca.wescook.nutrition.network.ModPacketHandler;
810
import ca.wescook.nutrition.potions.ModPotions;
911
import ca.wescook.nutrition.proxy.CommonProxy;
@@ -50,6 +52,14 @@ public void preInit(FMLPreInitializationEvent event) {
5052
}
5153
}
5254

55+
@Mod.EventHandler
56+
public void load(FMLInitializationEvent event) {
57+
if (WitcheryHelper.isActive()) {
58+
WitcheryEventHandler witcheryEventHandler = new WitcheryEventHandler();
59+
MinecraftForge.EVENT_BUS.register(witcheryEventHandler);
60+
}
61+
}
62+
5363
@EventHandler
5464
public void init(FMLInitializationEvent event) {
5565
Nutrition.proxy.init(event);

src/main/java/ca/wescook/nutrition/data/NutrientManager.java

+8
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,14 @@ public void set(Nutrient nutrient, Float value) {
3838
nutrition.put(nutrient, value);
3939
}
4040

41+
public void vampireFloor() {
42+
for (Nutrient nutrient : NutrientList.get()) {
43+
if (nutrition.get(nutrient) < 50) {
44+
nutrition.put(nutrient, 50f);
45+
}
46+
}
47+
}
48+
4149
// Update all nutrients
4250
public void set(Map<Nutrient, Float> nutrientData) {
4351
nutrition.putAll(nutrientData);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package ca.wescook.nutrition.modules;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
6+
import ca.wescook.nutrition.modules.witchery.WitcheryHelper;
7+
import ca.wescook.nutrition.utility.IModHelper;
8+
9+
public class ModHelperManager {
10+
11+
private static List<IModHelper> helpers;
12+
13+
public static void preInit() {
14+
setupHelpers();
15+
for (IModHelper helper : helpers) {
16+
helper.preInit();
17+
}
18+
}
19+
20+
public static void init() {}
21+
22+
public static void postInit() {}
23+
24+
private static void setupHelpers() {
25+
helpers = new ArrayList<>();
26+
helpers.add(new WitcheryHelper());
27+
}
28+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package ca.wescook.nutrition.modules;
2+
3+
public class ModuleConfig {
4+
5+
public static boolean witcheryModuleActive = true;
6+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package ca.wescook.nutrition.modules.witchery;
2+
3+
import ca.wescook.nutrition.modules.ModuleConfig;
4+
import ca.wescook.nutrition.utility.IModHelper;
5+
import cpw.mods.fml.common.Loader;
6+
7+
public class WitcheryHelper implements IModHelper {
8+
9+
public static final String WITCHERY = "witchery";
10+
private static boolean isWitcheryActive = false;
11+
12+
public static boolean isActive() {
13+
return isWitcheryActive;
14+
}
15+
16+
public void preInit() {
17+
if (Loader.isModLoaded(WITCHERY) && (ModuleConfig.witcheryModuleActive)) {
18+
isWitcheryActive = true;
19+
}
20+
}
21+
22+
public void init() {}
23+
24+
public void postInit() {}
25+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package ca.wescook.nutrition.modules.witchery.events;
2+
3+
import net.minecraft.entity.player.EntityPlayer;
4+
import net.minecraft.entity.player.PlayerCapabilities;
5+
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
6+
7+
import com.emoniph.witchery.common.ExtendedPlayer;
8+
9+
import ca.wescook.nutrition.data.NutrientManager;
10+
import ca.wescook.nutrition.data.PlayerDataHandler;
11+
import ca.wescook.nutrition.modules.witchery.WitcheryHelper;
12+
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
13+
14+
public class WitcheryEventHandler {
15+
16+
public static final PlayerCapabilities genericPlayerCapabilities = new PlayerCapabilities();
17+
18+
@SubscribeEvent
19+
public void livingTick(LivingUpdateEvent event) {
20+
if (!WitcheryHelper.isActive()) {
21+
return;
22+
}
23+
24+
if (!(event.entity.worldObj.isRemote)) {
25+
return;
26+
}
27+
28+
if ((event.entity instanceof EntityPlayer player)) {
29+
final ExtendedPlayer prop = (ExtendedPlayer) player.getExtendedProperties("WitcheryExtendedPlayer");
30+
if (prop.isVampire()) {
31+
NutrientManager nutritionOld = PlayerDataHandler.getForPlayer(player); // Get old nutrition
32+
NutrientManager nutritionNew = new NutrientManager(nutritionOld.get()); // Create new nutrition
33+
nutritionNew.vampireFloor();
34+
PlayerDataHandler.setForPlayer(player, nutritionNew, true);
35+
}
36+
}
37+
}
38+
39+
}

src/main/java/ca/wescook/nutrition/proxy/CommonProxy.java

+14-1
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,23 @@
11
package ca.wescook.nutrition.proxy;
22

3+
import ca.wescook.nutrition.modules.ModHelperManager;
34
import cpw.mods.fml.common.event.FMLInitializationEvent;
5+
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
6+
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
47

58
public class CommonProxy {
69

7-
public void init(FMLInitializationEvent event) {}
10+
public void preInit(FMLPreInitializationEvent event) {
11+
ModHelperManager.preInit();
12+
}
13+
14+
public void init(FMLInitializationEvent event) {
15+
ModHelperManager.init();
16+
}
17+
18+
public void postInit(FMLPostInitializationEvent event) {
19+
ModHelperManager.postInit();
20+
}
821

922
public boolean isClient() {
1023
return false;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package ca.wescook.nutrition.utility;
2+
3+
public interface IModHelper {
4+
5+
public void preInit();
6+
7+
public void init();
8+
9+
public void postInit();
10+
}

0 commit comments

Comments
 (0)