]> git.seodisparate.com - TurnBasedMinecraftMod/commitdiff
Add experimental support for Pam's HC foods 1.17.1
authorStephen Seo <seo.disparate@gmail.com>
Sun, 23 May 2021 04:22:18 +0000 (13:22 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Sun, 23 May 2021 04:22:18 +0000 (13:22 +0900)
Changelog.md
build.gradle
src/main/java/com/burnedkirby/TurnBasedMinecraft/common/Battle.java
src/main/java/com/burnedkirby/TurnBasedMinecraft/common/BattleManager.java
src/main/java/com/burnedkirby/TurnBasedMinecraft/common/CommonProxy.java
src/main/java/com/burnedkirby/TurnBasedMinecraft/common/TurnBasedMinecraftMod.java
src/main/resources/META-INF/mods.toml
src/main/resources/mcmod.info

index c8308297015ad70db1ab20c6c91f1b81a642dbd2..3d170412ecf01c70769d617357b66966d53625ed 100644 (file)
@@ -1,5 +1,9 @@
 # Upcoming changes
 
+# Version 1.17.1
+
+Add experimental support for Pam's Harvestcraft foods.
+
 # Version 1.17
 
 Update mod for Forge 1.16.5-36.1.0 .
index cf6b197cac482b1747adb3bf1efbecac9301cffd..00c8933493e474ae8aab11ff72defd82e146c9a1 100644 (file)
@@ -14,7 +14,7 @@ apply plugin: 'eclipse'
 //apply plugin: 'maven-publish'\r
 apply plugin: 'com.github.johnrengelman.shadow'\r
 \r
-version = "1.17"\r
+version = "1.17.1"\r
 group = "com.burnedkirby.TurnBasedMinecraft"\r
 archivesBaseName = "TurnBasedMinecraft"\r
 \r
index 5d06b223e2b312ce3e699f5bccc0c302b063b98e..8d187c028fa397d49ead51cdbfe38a7fe538b51a 100644 (file)
@@ -1316,26 +1316,39 @@ public class Battle
                             sendMessageToAllPlayers(PacketBattleMessage.MessageType.USED_ITEM, next.entity.getId(), 0, PacketBattleMessage.UsedItemAction.USED_NOTHING.getValue());
                             break;
                         }
-                        if(targetItem.getItemCategory() == ItemGroup.TAB_FOOD)
-                        {
+                        // check if use item is a food
+                        boolean isFood = false;
+                        // first check other mod foods
+                        for(ItemGroup itemGroup : BattleManager.getOtherFoodItemGroups()) {
+                            if(targetItem.getItemCategory() == itemGroup && targetItem.isEdible()) {
+                                isFood = true;
+                                break;
+                            }
+                        }
+                        if(isFood) {
                             debugLog += " food";
                             sendMessageToAllPlayers(PacketBattleMessage.MessageType.USED_ITEM, next.entity.getId(), 0, PacketBattleMessage.UsedItemAction.USED_FOOD.getValue(), targetItemStack.getDisplayName().getString());
                             final Entity nextEntity = next.entity;
                             final int nextItemToUse = next.itemToUse;
                             ((PlayerEntity)nextEntity).inventory.setItem(nextItemToUse, targetItem.finishUsingItem(targetItemStack, nextEntity.level, (LivingEntity)nextEntity));
-                        }
-                        else if(targetItem instanceof PotionItem)
-                        {
-                            debugLog += " potion";
-                            sendMessageToAllPlayers(PacketBattleMessage.MessageType.USED_ITEM, next.entity.getId(), 0, PacketBattleMessage.UsedItemAction.USED_POTION.getValue(), targetItemStack.getDisplayName().getString());
-                            final Entity nextEntity = next.entity;
-                            final int nextItemToUse = next.itemToUse;
-                            ((PlayerEntity)nextEntity).inventory.setItem(nextItemToUse, targetItem.finishUsingItem(targetItemStack, nextEntity.level, (LivingEntity)nextEntity));
-                        }
-                        else
-                        {
-                            debugLog += " non-consumable";
-                            sendMessageToAllPlayers(PacketBattleMessage.MessageType.USED_ITEM, next.entity.getId(), 0, PacketBattleMessage.UsedItemAction.USED_INVALID.getValue(), targetItemStack.getDisplayName().getString());
+                        } else {
+                            // then check vanilla foods
+                            if (targetItem.getItemCategory() == ItemGroup.TAB_FOOD && targetItem.isEdible()) {
+                                debugLog += " food";
+                                sendMessageToAllPlayers(PacketBattleMessage.MessageType.USED_ITEM, next.entity.getId(), 0, PacketBattleMessage.UsedItemAction.USED_FOOD.getValue(), targetItemStack.getDisplayName().getString());
+                                final Entity nextEntity = next.entity;
+                                final int nextItemToUse = next.itemToUse;
+                                ((PlayerEntity) nextEntity).inventory.setItem(nextItemToUse, targetItem.finishUsingItem(targetItemStack, nextEntity.level, (LivingEntity) nextEntity));
+                            } else if (targetItem instanceof PotionItem) {
+                                debugLog += " potion";
+                                sendMessageToAllPlayers(PacketBattleMessage.MessageType.USED_ITEM, next.entity.getId(), 0, PacketBattleMessage.UsedItemAction.USED_POTION.getValue(), targetItemStack.getDisplayName().getString());
+                                final Entity nextEntity = next.entity;
+                                final int nextItemToUse = next.itemToUse;
+                                ((PlayerEntity) nextEntity).inventory.setItem(nextItemToUse, targetItem.finishUsingItem(targetItemStack, nextEntity.level, (LivingEntity) nextEntity));
+                            } else {
+                                debugLog += " non-consumable";
+                                sendMessageToAllPlayers(PacketBattleMessage.MessageType.USED_ITEM, next.entity.getId(), 0, PacketBattleMessage.UsedItemAction.USED_INVALID.getValue(), targetItemStack.getDisplayName().getString());
+                            }
                         }
                         break;
                     case SWITCH_ITEM: {
index 91a07e553bc2eee0779825be9e2a4c55713f5365..d76a4303c77ce2a7308672feebc3c76ef286b4c6 100644 (file)
@@ -9,6 +9,7 @@ import java.util.Map;
 import net.minecraft.entity.monster.CreeperEntity;
 import net.minecraft.entity.player.PlayerEntity;
 import net.minecraft.entity.player.ServerPlayerEntity;
+import net.minecraft.item.ItemGroup;
 import net.minecraft.util.RegistryKey;
 import net.minecraft.world.World;
 import net.minecraftforge.common.MinecraftForge;
@@ -29,6 +30,7 @@ public class BattleManager
     private Map<Integer, Combatant> recentlyLeftBattle;
     private BattleUpdater battleUpdater;
     private Map<EntityIDDimPair, Integer> entityToBattleMap;
+    private static Collection<ItemGroup> otherFoodItemGroups = new ArrayList<>();
     
     public BattleManager(Logger logger)
     {
@@ -356,4 +358,12 @@ public class BattleManager
         }
         return result;
     }
+
+    public static void addOtherModItemGroup(ItemGroup itemGroup) {
+        otherFoodItemGroups.add(itemGroup);
+    }
+
+    public static Collection<ItemGroup> getOtherFoodItemGroups() {
+        return otherFoodItemGroups;
+    }
 }
\ No newline at end of file
index 8abfb62fb6e518221a492b3254b450d2627423c5..3074f6914902a092d70cba8a2dbacd8d2a425b31 100644 (file)
@@ -1,12 +1,16 @@
 package com.burnedkirby.TurnBasedMinecraft.common;
 
+import java.lang.reflect.Field;
 import java.util.*;
 
 import net.minecraft.entity.player.PlayerEntity;
+import net.minecraft.item.ItemGroup;
 import net.minecraft.util.RegistryKey;
 import net.minecraft.util.text.ITextComponent;
 import net.minecraft.world.DimensionType;
 import net.minecraft.world.World;
+import net.minecraftforge.fml.ModContainer;
+import net.minecraftforge.fml.ModList;
 import net.minecraftforge.fml.server.ServerLifecycleHooks;
 import org.apache.logging.log4j.Logger;
 
@@ -71,10 +75,95 @@ public class CommonProxy
     {
         config = new Config(logger);
         postInitClient();
+        pamsFoodIntegrationLoading();
         logger.debug("postInit proxy for com_burnedkirby_turnbasedminecraft");
     }
     
     protected void postInitClient() {}
+
+    private final void pamsFoodIntegrationLoading() {
+        // TODO: generalize other mod's food loading via config with a list of mod ids
+
+        // pamhc2foodcore
+        {
+            ModList modList = ModList.get();
+            Optional<? extends ModContainer> pamsFoodCoreContainer = modList.getModContainerById("pamhc2foodcore");
+            if (pamsFoodCoreContainer.isPresent()) {
+                Object pamsFoodCore = pamsFoodCoreContainer.get().getMod();
+                try {
+                    Field itemGroupField = pamsFoodCore.getClass().getField("ITEM_GROUP");
+                    ItemGroup foodItemGroup = (ItemGroup) itemGroupField.get(null);
+                    if(foodItemGroup != null) {
+                        BattleManager.addOtherModItemGroup(foodItemGroup);
+                    } else {
+                        throw new NullPointerException();
+                    }
+                } catch (Exception e) {
+                    TurnBasedMinecraftMod.logger.info("Failed to get pamhc2foodcore ITEM_GROUP");
+                }
+            }
+        }
+
+        // pamhc2crops
+        {
+            ModList modList = ModList.get();
+            Optional<? extends ModContainer> pamsFoodCoreContainer = modList.getModContainerById("pamhc2crops");
+            if (pamsFoodCoreContainer.isPresent()) {
+                Object pamsFoodCore = pamsFoodCoreContainer.get().getMod();
+                try {
+                    Field itemGroupField = pamsFoodCore.getClass().getField("ITEM_GROUP");
+                    ItemGroup foodItemGroup = (ItemGroup) itemGroupField.get(null);
+                    if(foodItemGroup != null) {
+                        BattleManager.addOtherModItemGroup(foodItemGroup);
+                    } else {
+                        throw new NullPointerException();
+                    }
+                } catch (Exception e) {
+                    TurnBasedMinecraftMod.logger.info("Failed to get pamhc2crops ITEM_GROUP");
+                }
+            }
+        }
+
+        // pamhc2trees
+        {
+            ModList modList = ModList.get();
+            Optional<? extends ModContainer> pamsFoodCoreContainer = modList.getModContainerById("pamhc2trees");
+            if (pamsFoodCoreContainer.isPresent()) {
+                Object pamsFoodCore = pamsFoodCoreContainer.get().getMod();
+                try {
+                    Field itemGroupField = pamsFoodCore.getClass().getField("ITEM_GROUP");
+                    ItemGroup foodItemGroup = (ItemGroup) itemGroupField.get(null);
+                    if(foodItemGroup != null) {
+                        BattleManager.addOtherModItemGroup(foodItemGroup);
+                    } else {
+                        throw new NullPointerException();
+                    }
+                } catch (Exception e) {
+                    TurnBasedMinecraftMod.logger.info("Failed to get pamhc2trees ITEM_GROUP");
+                }
+            }
+        }
+
+        // pamhc2foodextended
+        {
+            ModList modList = ModList.get();
+            Optional<? extends ModContainer> pamsFoodCoreContainer = modList.getModContainerById("pamhc2foodextended");
+            if (pamsFoodCoreContainer.isPresent()) {
+                Object pamsFoodCore = pamsFoodCoreContainer.get().getMod();
+                try {
+                    Field itemGroupField = pamsFoodCore.getClass().getField("ITEM_GROUP");
+                    ItemGroup foodItemGroup = (ItemGroup) itemGroupField.get(null);
+                    if(foodItemGroup != null) {
+                        BattleManager.addOtherModItemGroup(foodItemGroup);
+                    } else {
+                        throw new NullPointerException();
+                    }
+                } catch (Exception e) {
+                    TurnBasedMinecraftMod.logger.info("Failed to get pamhc2foodextended ITEM_GROUP");
+                }
+            }
+        }
+    }
     
     public final void setLogger(Logger logger)
     {
index 2c39e92a5e1aff07e95f019376497a68c5eb7472..ecf63d1ed9276fc23228bf2140f9da2e80496cb4 100644 (file)
@@ -35,7 +35,7 @@ public class TurnBasedMinecraftMod
 {
     public static final String MODID = "com_burnedkirby_turnbasedminecraft";
     public static final String NAME = "Turn Based Minecraft Mod";
-    public static final String VERSION = "1.17";
+    public static final String VERSION = "1.17.1";
     public static final String CONFIG_FILENAME = "TBM_Config.toml";
     public static final String DEFAULT_CONFIG_FILENAME = "TBM_Config_DEFAULT.toml";
     public static final String CONFIG_DIRECTORY = "config/TurnBasedMinecraft/";
index e7c337e6a6addcec60e10406c8c5f5d472db51f9..16d644e353c7005a9484616742a2b13f2e1195d7 100644 (file)
@@ -15,7 +15,7 @@ license="MIT"
 # The modid of the mod
 modId="com_burnedkirby_turnbasedminecraft" #mandatory
 # The version number of the mod - there's a few well known ${} variables useable here or just hardcode it
-version="1.17" #mandatory
+version="1.17.1" #mandatory
  # A display name for the mod
 displayName="TurnBasedMinecraftMod" #mandatory
 # A URL to query for updates for this mod. See the JSON update specification <here>
index e3aab202fdc7d0861bee861d6f3b9c83795dd60e..297c8dd1ad75e7b669a303ac647e649c049b4695 100644 (file)
@@ -3,7 +3,7 @@
   "modid": "com_burnedkirby_turnbasedminecraft",
   "name": "Turn Based Minecraft",
   "description": "Changes battles to be turn-based.",
-  "version": "1.17",
+  "version": "1.17.1",
   "mcversion": "1.16.3",
   "url": "",
   "updateUrl": "",