Skip to content

Commit

Permalink
feat: Nutrition: GTCEu compatibility
Browse files Browse the repository at this point in the history
  • Loading branch information
bruberu committed Mar 3, 2024
1 parent 37acfe2 commit 479c8bf
Show file tree
Hide file tree
Showing 13 changed files with 370 additions and 185 deletions.
4 changes: 3 additions & 1 deletion dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -59,9 +59,11 @@ dependencies {

implementation files("libs/AppleSkin-mc1.12-1.0.9.jar")

implementation files("libs/NuclearCraft-2o.6.0-1.12.2.jar")
compileOnly files("libs/NuclearCraft-2o.6.0-1.12.2.jar")
implementation("com.cleanroommc:modularui:2.4.1") { transitive = false }

implementation rfg.deobf("curse.maven:nutrition-gtceu-964594:5047422")
implementation rfg.deobf("curse.maven:nutrition-unofficial-extended-life-964516:5049991")

testImplementation 'junit:junit:4.13.2'
implementation 'org.projectlombok:lombok:1.18.24'
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/gregtechfoodoption/CommonProxy.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import gregtechfoodoption.block.GTFORootCrop;
import gregtechfoodoption.integration.enderio.GTFOBerryFarmer;
import gregtechfoodoption.integration.enderio.GTFORootCropFarmer;
import gregtechfoodoption.integration.nutrition.GTFONutritionCompatibility;
import gregtechfoodoption.item.GTFOMetaItem;
import gregtechfoodoption.item.GTFOMetaItems;
import gregtechfoodoption.item.GTFOSpecialVariantItemBlock;
Expand All @@ -33,6 +34,7 @@
import net.minecraftforge.common.config.ConfigManager;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.client.event.ConfigChangedEvent;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Optional;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
Expand Down Expand Up @@ -74,6 +76,9 @@ public void onPostLoad() {
new PotionEffect(AntiSchizoPotion.INSTANCE, 1000, 0),
"14hez98zk7/2/3/5/9/10/"));

if (Loader.isModLoaded(GTFOValues.MODID_NUGT) && GTFOConfig.gtfoOtherFoodModConfig.enableGTFONutrition) {
GTFONutritionCompatibility.init();
}
}

@SubscribeEvent
Expand Down
18 changes: 6 additions & 12 deletions src/main/java/gregtechfoodoption/GTFOConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@ public class GTFOConfig {
@Config.Comment("Vanilla Overrides Options")
public static GTFOVanillaOverridesConfig gtfoVanillaOverridesConfig = new GTFOVanillaOverridesConfig();

@Config.Comment("AppleCore compatibility")
public static GTFOAppleCoreConfig gtfoAppleCoreConfig = new GTFOAppleCoreConfig();
@Config.Comment("Other food mod compatibilities")
public static GTFOOtherFoodModConfig gtfoOtherFoodModConfig = new GTFOOtherFoodModConfig();

@Config.Comment("NuclearCraft compatibility")
public static GTFONCConfig gtfoncConfig = new GTFONCConfig();
Expand Down Expand Up @@ -68,7 +68,7 @@ public static class GTFOVanillaOverridesConfig {
public boolean useRollingPinForPaper = false;
}

public static class GTFOAppleCoreConfig {
public static class GTFOOtherFoodModConfig {
@Config.Comment("Should AppleCore compatibility be turned on?")
public boolean appleCoreCompat = false;

Expand All @@ -81,6 +81,9 @@ public static class GTFOAppleCoreConfig {
@Config.Comment("If the above is false, you can set this to divide all vanilla food items by some value.")
public int constantFoodStatsDivisor = 1;

@Config.Comment("Turn on default GTFO compat for Nutrition: Unofficial Extended Life?")
public boolean enableGTFONutrition = true;

public void setAllToFalse() {
appleCoreCompat = false;
reduceForeignFoodStats = false;
Expand Down Expand Up @@ -110,8 +113,6 @@ public static class GTFOAAConfig {
@Config.Comment("Disable AA Coffee Maker's recipe?")
public boolean disableCoffeeMaker = true;

@Config.Comment("Add AA Coffee Chain?")
public boolean coffeeChain = true;

public void setAllToFalse() {
actuallyCompat = false;
Expand Down Expand Up @@ -181,13 +182,6 @@ public static class GTFOFoodConfig {

@Config.Comment("Baguette saturation")
public float baguetteSaturation = 1f;


@Config.Comment("Return bag after eating popcorn?")
public boolean popcornReturnsContainer = true;

@Config.Comment("Return used thermos after drinking mineral water?")
public boolean mineralWaterReturnsContainer = true;
}

public static class GTFOPotionConfig {
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/gregtechfoodoption/GTFOEventHandler.java
Original file line number Diff line number Diff line change
Expand Up @@ -200,7 +200,7 @@ public static void onLivingUpdate(LivingEntityUseItemEvent.Tick event) {

@SubscribeEvent
public static void onAdvancement(AdvancementEvent event) {
if (GTFOConfig.gtfoAppleCoreConfig.reduceForeignFoodStats) {
if (GTFOConfig.gtfoOtherFoodModConfig.reduceForeignFoodStats) {
float divisorObtained = GTFOAppleCoreCompat.getDivisorOnAdvancement(event.getAdvancement());
if (divisorObtained > 1 && GTFOAppleCoreCompat.advancementLookup(event.getEntityPlayer()) == divisorObtained) {
GregTechAPI.networkHandler.sendToAll(new PacketAppleCoreFoodDivisorUpdate(
Expand Down
4 changes: 3 additions & 1 deletion src/main/java/gregtechfoodoption/GTFOValues.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@ public class GTFOValues {
MODID_GF = "gregification",
MODID_TFC = "tfc",
MODID_AC = "agricraft",
MODID_AP = "applecore";
MODID_AP = "applecore",
MODID_NU = "nutrition",
MODID_NUGT = "nutrition_gtceu";

public static final String craftingToolRollingPin = "craftingToolRollingPin";

Expand Down
10 changes: 4 additions & 6 deletions src/main/java/gregtechfoodoption/GregTechFoodOption.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,14 +19,11 @@
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.SidedProxy;
import net.minecraftforge.fml.common.event.FMLConstructionEvent;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.*;
import net.minecraftforge.fml.common.registry.GameRegistry;

@Mod(modid = GregTechFoodOption.MODID, name = GregTechFoodOption.NAME, version = GregTechFoodOption.VERSION,
dependencies = "required-after:gregtech@[2.8.0-beta,);" + "after:gcy_science")
dependencies = "required-after:gregtech@[2.8.0-beta,);" + "after:gcy_science;after:" + GTFOValues.MODID_NU)
public class GregTechFoodOption {
public static final String MODID = "gregtechfoodoption";
public static final String NAME = "GregTech Food Option";
Expand Down Expand Up @@ -57,7 +54,7 @@ public void preInit(FMLPreInitializationEvent event) {

MinecraftForge.EVENT_BUS.register(new GTFOEntities()); // For entity registration through EntityEntries!

if(GTFOConfig.gtfoAppleCoreConfig.appleCoreCompat)
if(GTFOConfig.gtfoOtherFoodModConfig.appleCoreCompat)
MinecraftForge.EVENT_BUS.register(new GTFOAppleCoreCompat());

GTFOClientHandler.registerSounds();
Expand Down Expand Up @@ -89,4 +86,5 @@ public void init(FMLInitializationEvent event) {
public void postInit(FMLPostInitializationEvent event) {
proxy.onPostLoad();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ public FoodValues getGTFOFoodValues(FoodValues originalValues, ItemStack food, E
return sparedItemsFoodValues.get(sparedFood);
return originalValues;
}
if (GTFOConfig.gtfoAppleCoreConfig.reduceForeignFoodStats) {
if (GTFOConfig.gtfoOtherFoodModConfig.reduceForeignFoodStats) {
ItemStack actualFood = food;

float modifier = this.getFoodModifier(player, actualFood);
Expand All @@ -65,10 +65,10 @@ private float getFoodModifier(EntityPlayer player, ItemStack actualFood) {
}

private float getForeignFoodDivisor(EntityPlayer player) {
if (GTFOConfig.gtfoAppleCoreConfig.useDefaultForeignFoodStatsReduction) {
if (GTFOConfig.gtfoOtherFoodModConfig.useDefaultForeignFoodStatsReduction) {
return clientDivisorsMap.get(player.getUniqueID());
} else
return GTFOConfig.gtfoAppleCoreConfig.constantFoodStatsDivisor;
return GTFOConfig.gtfoOtherFoodModConfig.constantFoodStatsDivisor;
}

public static float advancementLookup(EntityPlayer player) {
Expand Down Expand Up @@ -104,7 +104,7 @@ public static void addToSparedItems(Item item) {
@ZenMethod
public static void addToSparedItems(Item item, int hunger, float saturation) {
sparedItems.add(item);
if (GTFOConfig.gtfoAppleCoreConfig.appleCoreCompat)
if (GTFOConfig.gtfoOtherFoodModConfig.appleCoreCompat)
sparedItemsFoodValues.put(item, new FoodValues(hunger, saturation));
}

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package gregtechfoodoption.integration.nutrition;

import ca.wescook.nutrition.nutrients.Nutrient;
import ca.wescook.nutrition.nutrients.NutrientList;
import gregtechfoodoption.item.GTFOFoodStats;
import gregtechfoodoption.item.GTFOMetaItem;
import gregtechfoodoption.item.GTFOMetaItems;
import gregtechfoodoption.utils.GTFOUtils;

public class GTFONutritionCompatibility {
public static void init() {
for (GTFOMetaItem.GTFOMetaValueItem item : GTFOMetaItems.META_ITEM.getAllItems()) {
GTFOFoodStats stats = GTFOUtils.getGTFOFoodStats(item.getStackForm());
if (stats != null) {
stats.nutrients.forEach((nutrient, amount) -> {
Nutrient nut = NutrientList.getByName(nutrient);
if (nut != null)
nut.foodItems.add(new Nutrient.ScaledItemStack(item.getStackForm(), amount));
});
}
}
}
}
22 changes: 22 additions & 0 deletions src/main/java/gregtechfoodoption/item/GTFOFoodStats.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import gregtechfoodoption.integration.applecore.GTFOAppleCoreCompat;
import gregtechfoodoption.potion.LacingEntry;
import gregtechfoodoption.utils.GTFOUtils;
import it.unimi.dsi.fastutil.objects.*;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.EnumAction;
import net.minecraft.item.ItemStack;
Expand All @@ -18,6 +19,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.function.Supplier;

public class GTFOFoodStats implements IFoodBehavior, IItemBehaviour { // These names suck
Expand All @@ -27,6 +29,7 @@ public class GTFOFoodStats implements IFoodBehavior, IItemBehaviour { // These n
protected boolean alwaysEdible;
public RandomPotionEffect[] potionEffects;
public Supplier<ItemStack> stackSupplier;
public Object2FloatMap<String> nutrients = new Object2FloatArrayMap<>();
protected int eatingDuration = 32;


Expand Down Expand Up @@ -147,4 +150,23 @@ public RandomPotionEffect[] getPotionEffects() {
public Supplier<ItemStack> getStackSupplier() {
return stackSupplier;
}

public GTFOFoodStats nutrients(float dairy, float fruit, float grain, float protein, float vegetable) {
if (dairy > 0) {
this.nutrients.put("dairy", dairy);
}
if (fruit > 0) {
this.nutrients.put("fruit", fruit);
}
if (grain > 0) {
this.nutrients.put("grain", grain);
}
if (protein > 0) {
this.nutrients.put("protein", protein);
}
if (vegetable > 0) {
this.nutrients.put("vegetable", vegetable);
}
return this;
}
}
Loading

0 comments on commit 479c8bf

Please sign in to comment.