From da313f6d0aa0750110bb7f69cdc8c5806e39b260 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 19 Jul 2023 11:17:11 -0400 Subject: [PATCH 1/7] Compatibility Helper DBC --- src/main/java/noppes/npcs/CustomNpcs.java | 1 + .../noppes/npcs/ScriptForgeEventHandler.java | 2 +- .../npcs/ai/selector/NPCAttackSelector.java | 2 +- .../client/gui/model/GuiCreationScreen.java | 2 +- .../npcs/client/renderer/RenderCustomNpc.java | 2 +- .../java/noppes/npcs/compat/DBCHelper.java | 107 ++++++++++++++++++ .../PixelmonHelper.java | 2 +- .../noppes/npcs/entity/data/ModelData.java | 2 +- .../java/noppes/npcs/roles/JobSpawner.java | 2 +- .../java/noppes/npcs/scripted/NpcAPI.java | 1 + .../scripted/ScriptPixelmonPlayerData.java | 2 +- .../npcs/scripted/entity/ScriptDBCPlayer.java | 65 +++++++++++ .../npcs/scripted/entity/ScriptPixelmon.java | 2 +- .../npcs/scripted/entity/ScriptPlayer.java | 1 + 14 files changed, 184 insertions(+), 9 deletions(-) create mode 100644 src/main/java/noppes/npcs/compat/DBCHelper.java rename src/main/java/noppes/npcs/{controllers => compat}/PixelmonHelper.java (99%) diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index 538d3c2b5..23a74edf5 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -22,6 +22,7 @@ import net.minecraft.server.MinecraftServer; import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.MinecraftForge; import nikedemos.markovnames.generators.*; +import noppes.npcs.compat.PixelmonHelper; import noppes.npcs.config.ConfigMain; import noppes.npcs.config.LoadConfiguration; import noppes.npcs.config.legacy.LegacyConfig; diff --git a/src/main/java/noppes/npcs/ScriptForgeEventHandler.java b/src/main/java/noppes/npcs/ScriptForgeEventHandler.java index 66959942d..163fb25ea 100644 --- a/src/main/java/noppes/npcs/ScriptForgeEventHandler.java +++ b/src/main/java/noppes/npcs/ScriptForgeEventHandler.java @@ -17,7 +17,7 @@ import net.minecraftforge.event.world.ChunkDataEvent; import net.minecraftforge.event.world.ChunkEvent; import net.minecraftforge.event.world.ChunkWatchEvent; import net.minecraftforge.event.world.WorldEvent; -import noppes.npcs.controllers.PixelmonHelper; +import noppes.npcs.compat.PixelmonHelper; import noppes.npcs.controllers.ScriptController; import noppes.npcs.scripted.event.ForgeEvent; diff --git a/src/main/java/noppes/npcs/ai/selector/NPCAttackSelector.java b/src/main/java/noppes/npcs/ai/selector/NPCAttackSelector.java index 3fbfe3c8c..22f9dc6ac 100644 --- a/src/main/java/noppes/npcs/ai/selector/NPCAttackSelector.java +++ b/src/main/java/noppes/npcs/ai/selector/NPCAttackSelector.java @@ -10,7 +10,7 @@ import noppes.npcs.constants.EnumCompanionJobs; import noppes.npcs.constants.EnumJobType; import noppes.npcs.constants.EnumMovingType; import noppes.npcs.constants.EnumRoleType; -import noppes.npcs.controllers.PixelmonHelper; +import noppes.npcs.compat.PixelmonHelper; import noppes.npcs.entity.EntityNPCInterface; import noppes.npcs.roles.JobGuard; import noppes.npcs.roles.RoleCompanion; diff --git a/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java b/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java index c4575bfa2..866b1e84e 100644 --- a/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java +++ b/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java @@ -16,7 +16,7 @@ import net.minecraft.world.World; import noppes.npcs.client.Client; import noppes.npcs.client.gui.util.*; import noppes.npcs.constants.EnumPacketServer; -import noppes.npcs.controllers.PixelmonHelper; +import noppes.npcs.compat.PixelmonHelper; import noppes.npcs.entity.*; import java.lang.reflect.Method; diff --git a/src/main/java/noppes/npcs/client/renderer/RenderCustomNpc.java b/src/main/java/noppes/npcs/client/renderer/RenderCustomNpc.java index ce98937ee..1734506af 100644 --- a/src/main/java/noppes/npcs/client/renderer/RenderCustomNpc.java +++ b/src/main/java/noppes/npcs/client/renderer/RenderCustomNpc.java @@ -9,7 +9,7 @@ import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import noppes.npcs.client.model.ModelMPM; import noppes.npcs.client.model.util.ModelRenderPassHelper; -import noppes.npcs.controllers.PixelmonHelper; +import noppes.npcs.compat.PixelmonHelper; import noppes.npcs.entity.EntityCustomNpc; import noppes.npcs.entity.EntityNPCInterface; import org.lwjgl.opengl.GL11; diff --git a/src/main/java/noppes/npcs/compat/DBCHelper.java b/src/main/java/noppes/npcs/compat/DBCHelper.java new file mode 100644 index 000000000..658c6c341 --- /dev/null +++ b/src/main/java/noppes/npcs/compat/DBCHelper.java @@ -0,0 +1,107 @@ +package noppes.npcs.compat; + +import cpw.mods.fml.common.Loader; +import net.minecraft.client.Minecraft; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityList; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.passive.EntityTameable; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.util.ChatComponentText; +import net.minecraft.world.World; +import noppes.npcs.LogWriter; +import noppes.npcs.constants.EnumJobType; +import noppes.npcs.entity.EntityNPCInterface; +import noppes.npcs.roles.JobSpawner; +import org.apache.logging.log4j.LogManager; + +import java.lang.reflect.Array; +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.List; + +public class DBCHelper { + public static boolean Enabled = false; + + private static Method StatusEffectsMethod = null; + private static Method PlyrSkillsMethod = null; + private static Method TransPwrModAtr = null; + private static Method statMethod = null; + + public static void load(){ + Enabled = Loader.isModLoaded("jinryuujrmcore"); + if(!Enabled) + return; + + try{ + Class c = Class.forName("JinRyuu.JRMCore.JRMCoreH"); + StatusEffectsMethod = c.getMethod("StusEfcts",int.class, String.class); + PlyrSkillsMethod = c.getMethod("PlyrSkills", EntityPlayer.class); + TransPwrModAtr = c.getMethod("TransPwrModAtr", int[].class, int.class, int.class, int.class, int.class, String.class, int.class, int.class, boolean.class, boolean.class, boolean.class, boolean.class, int.class, String[].class, boolean.class); + statMethod = c.getMethod("stat", int.class, int.class, int.class, int.class, int.class, float.class); + } + catch(Exception e){ + LogWriter.except(e); + } + + } + + public static boolean StatusEffects(int id, String effect){ + try { + Object returnValue = StatusEffectsMethod.invoke(null, id, effect); + return (Boolean) returnValue; + } catch (Exception e) { + LogManager.getLogger().error("StatusEffects", e); + } + return false; + } + + public static String[] PlayerSkills(EntityPlayer p){ + try { + Object returnValue = PlyrSkillsMethod.invoke(null, p); + if (returnValue instanceof String[]) { + return (String[]) returnValue; // Cast and return the String[] value + } else { + return new String[]{}; + } + } catch (Exception e) { + LogManager.getLogger().error("PlayerSkills", e); + } + + return new String[]{}; + } + + public static int TransPwrMod(int[] currAttributes, int attribute, int st, int st2, int race, String SklX, int currRelease, int arcRel, boolean legendOn, boolean majinOn, boolean mysticOn, boolean uiOn, int powerType, String[] Skls, boolean isFused){ + try { + Object returnValue = TransPwrModAtr.invoke(null, currAttributes, attribute, st, st2, race, SklX, currRelease, arcRel, legendOn, majinOn, mysticOn, uiOn, powerType, Skls, isFused); + if (returnValue instanceof Integer) { + return (int) returnValue; + } else { + return -1; + } + } catch (Exception e) { + LogManager.getLogger().error("TransPwrModAtr", e); + } + + return -1; + } + + public static int StatMethod(int g, int s, int a, int r, int c, float b){ + try { + Object returnValue = statMethod.invoke(null, g, s, a, r, c, b); + if (returnValue instanceof Integer) { + return (int) returnValue; + } else { + return -1; + } + } catch (Exception e) { + LogManager.getLogger().error("statMethod", e); + } + + return -1; + } +} diff --git a/src/main/java/noppes/npcs/controllers/PixelmonHelper.java b/src/main/java/noppes/npcs/compat/PixelmonHelper.java similarity index 99% rename from src/main/java/noppes/npcs/controllers/PixelmonHelper.java rename to src/main/java/noppes/npcs/compat/PixelmonHelper.java index 2037deeee..2a4e996e1 100644 --- a/src/main/java/noppes/npcs/controllers/PixelmonHelper.java +++ b/src/main/java/noppes/npcs/compat/PixelmonHelper.java @@ -1,4 +1,4 @@ -package noppes.npcs.controllers; +package noppes.npcs.compat; import cpw.mods.fml.common.Loader; import net.minecraft.client.Minecraft; diff --git a/src/main/java/noppes/npcs/entity/data/ModelData.java b/src/main/java/noppes/npcs/entity/data/ModelData.java index 6f1c569b2..bd0f13a3c 100644 --- a/src/main/java/noppes/npcs/entity/data/ModelData.java +++ b/src/main/java/noppes/npcs/entity/data/ModelData.java @@ -3,7 +3,7 @@ package noppes.npcs.entity.data; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; import net.minecraft.world.World; -import noppes.npcs.controllers.PixelmonHelper; +import noppes.npcs.compat.PixelmonHelper; import noppes.npcs.entity.EntityNPCInterface; public class ModelData extends ModelDataShared{ diff --git a/src/main/java/noppes/npcs/roles/JobSpawner.java b/src/main/java/noppes/npcs/roles/JobSpawner.java index f88929029..28d3cd5f4 100644 --- a/src/main/java/noppes/npcs/roles/JobSpawner.java +++ b/src/main/java/noppes/npcs/roles/JobSpawner.java @@ -7,7 +7,7 @@ import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MathHelper; import noppes.npcs.NoppesUtilServer; -import noppes.npcs.controllers.PixelmonHelper; +import noppes.npcs.compat.PixelmonHelper; import noppes.npcs.entity.EntityNPCInterface; import org.apache.commons.lang3.RandomStringUtils; diff --git a/src/main/java/noppes/npcs/scripted/NpcAPI.java b/src/main/java/noppes/npcs/scripted/NpcAPI.java index 428ee39dc..f0870dc83 100644 --- a/src/main/java/noppes/npcs/scripted/NpcAPI.java +++ b/src/main/java/noppes/npcs/scripted/NpcAPI.java @@ -45,6 +45,7 @@ import noppes.npcs.api.handler.data.IFramePart; import noppes.npcs.api.handler.data.ISound; import noppes.npcs.api.item.IItemStack; import noppes.npcs.api.overlay.ICustomOverlay; +import noppes.npcs.compat.PixelmonHelper; import noppes.npcs.config.ConfigScript; import noppes.npcs.constants.EnumAnimationPart; import noppes.npcs.containers.ContainerNpcInterface; diff --git a/src/main/java/noppes/npcs/scripted/ScriptPixelmonPlayerData.java b/src/main/java/noppes/npcs/scripted/ScriptPixelmonPlayerData.java index 7077b1b5d..d454598b4 100644 --- a/src/main/java/noppes/npcs/scripted/ScriptPixelmonPlayerData.java +++ b/src/main/java/noppes/npcs/scripted/ScriptPixelmonPlayerData.java @@ -4,7 +4,7 @@ import net.minecraft.entity.passive.EntityTameable; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.api.IPixelmonPlayerData; -import noppes.npcs.controllers.PixelmonHelper; +import noppes.npcs.compat.PixelmonHelper; import noppes.npcs.scripted.entity.ScriptPixelmon; public class ScriptPixelmonPlayerData implements IPixelmonPlayerData { diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java index c7762f77a..6041db97e 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java @@ -1,11 +1,13 @@ package noppes.npcs.scripted.entity; +import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.api.entity.IDBCPlayer; import noppes.npcs.api.item.IItemStack; +import noppes.npcs.compat.DBCHelper; import noppes.npcs.scripted.CustomNPCsException; import noppes.npcs.scripted.NpcAPI; @@ -786,4 +788,67 @@ public class ScriptDBCPlayer extends ScriptPlayer i } return ""; } + + public int calcDexResistance(int damage, int percentPierce){ + if(!DBCHelper.Enabled){ + return 0; + } + + NBTTagCompound nbt = player.getEntityData().getCompoundTag("PlayerPersisted"); + if(nbt != null){ + byte st = nbt.getByte("jrmcState"); + byte st2 = nbt.getByte("jrmcState2"); + byte rc = nbt.getByte("jrmcRace"); + byte cls = nbt.getByte("jrmcClass"); + String sklx = nbt.getString("jrmcSSltX"); + byte rls = nbt.getByte("jrmcRelease"); + int resrv = nbt.getInteger("jrmcArcRsrv"); + + String statusEffects = nbt.getString("jrmcStatusEff"); + boolean mj = DBCHelper.StatusEffects(12 ,statusEffects); + boolean mc = DBCHelper.StatusEffects(13 ,statusEffects); + boolean lg = DBCHelper.StatusEffects(14 ,statusEffects); + boolean mn = DBCHelper.StatusEffects(19 ,statusEffects); + + byte pwr = nbt.getByte("jrmcPwrtyp"); + String[] ps = DBCHelper.PlayerSkills(player); + boolean c = DBCHelper.StatusEffects(10 ,statusEffects) || DBCHelper.StatusEffects(11 ,statusEffects); + int dex = DBCHelper.TransPwrMod(getStats(player), 1, st, st2, rc, sklx, rls, resrv, lg, mj, mc, mn, pwr, ps, c); + + int def = (int) (DBCHelper.StatMethod(1, 1, dex, rc, cls, 0.0F) * rls * 0.01D * JRMCoreH.weightPerc(1, player)); + + boolean block = ExtendedPlayer.get(player).getBlocking() != 0; + + if (!block) { + def /= (100 / JRMCoreConfig.cStatPasDef); + } + + int dmg = damage - def; + + if (dmg <= 0) { + dmg = (int) (damage * percentPierce); + } + + int hp = nbt.getInteger("jrmcBdy") - (dmg / 2); + + if (hp < 0) { + hp = 0; + } + + nbt.setInteger("jrmcBdy", hp); + } + } + + private int[] getStats(EntityPlayer player) { + NBTTagCompound nbt = player.getEntityData().getCompoundTag("PlayerPersisted"); + int[] stats = new int[6]; + String[] attr = { "jrmcStrI", "jrmcDexI", "jrmcCnsI", "jrmcWilI", "jrmcIntI", "jrmcCncI" }; + + for (int i = 0; i < attr.length; i++) { + stats[i] = nbt.getInteger(attr[i]); + } + + return stats; + } + } \ No newline at end of file diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptPixelmon.java b/src/main/java/noppes/npcs/scripted/entity/ScriptPixelmon.java index a5b4f4c20..7bc01d080 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPixelmon.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPixelmon.java @@ -3,7 +3,7 @@ package noppes.npcs.scripted.entity; import net.minecraft.entity.passive.EntityTameable; import net.minecraft.nbt.NBTTagCompound; import noppes.npcs.api.entity.IPixelmon; -import noppes.npcs.controllers.PixelmonHelper; +import noppes.npcs.compat.PixelmonHelper; import noppes.npcs.util.ValueUtil; public class ScriptPixelmon extends ScriptAnimal implements IPixelmon { diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java index 8b379bcf3..f3f3b09b4 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptPlayer.java @@ -25,6 +25,7 @@ import noppes.npcs.api.handler.data.IQuest; import noppes.npcs.api.handler.data.ISound; import noppes.npcs.api.item.IItemStack; import noppes.npcs.api.overlay.ICustomOverlay; +import noppes.npcs.compat.PixelmonHelper; import noppes.npcs.config.ConfigScript; import noppes.npcs.constants.EnumPacketClient; import noppes.npcs.constants.EnumQuestRepeat; From b932793814d8ed6f3843dd90a7ca5b4d9ef7c354 Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 26 Jul 2023 18:22:18 -0400 Subject: [PATCH 2/7] Get HP --- .../noppes/npcs/scripted/entity/ScriptDBCPlayer.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java index 6041db97e..840993b57 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java @@ -374,6 +374,15 @@ public class ScriptDBCPlayer extends ScriptPlayer i return player.getEntityData().getCompoundTag("PlayerPersisted").getInteger("jrmcBdy"); } + public void setHP(int hp){ + setBody(hp); + } + public int getHP() + { + return getBody(); + } + + public void setStamina(int stamina){ player.getEntityData().getCompoundTag("PlayerPersisted").setInteger("jrmcStamina",stamina); } From 21706e207b39170ece12cd236afd1bbf6e978ffa Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 26 Jul 2023 18:22:39 -0400 Subject: [PATCH 3/7] Update api --- src/api | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/api b/src/api index e637e30e4..1fac6adc2 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit e637e30e43dbe4e4b7cf75578151c062fb3c0848 +Subproject commit 1fac6adc21e69f8fa0967d67d252af70c5327bb3 From c78ea3459227d1c825d526f12294f49eba43078e Mon Sep 17 00:00:00 2001 From: Kam Date: Wed, 26 Jul 2023 18:23:48 -0400 Subject: [PATCH 4/7] Remove Redundancies --- .../java/noppes/npcs/compat/DBCHelper.java | 107 ------------------ .../npcs/scripted/entity/ScriptDBCPlayer.java | 65 ----------- 2 files changed, 172 deletions(-) delete mode 100644 src/main/java/noppes/npcs/compat/DBCHelper.java diff --git a/src/main/java/noppes/npcs/compat/DBCHelper.java b/src/main/java/noppes/npcs/compat/DBCHelper.java deleted file mode 100644 index 658c6c341..000000000 --- a/src/main/java/noppes/npcs/compat/DBCHelper.java +++ /dev/null @@ -1,107 +0,0 @@ -package noppes.npcs.compat; - -import cpw.mods.fml.common.Loader; -import net.minecraft.client.Minecraft; -import net.minecraft.entity.Entity; -import net.minecraft.entity.EntityList; -import net.minecraft.entity.EntityLivingBase; -import net.minecraft.entity.passive.EntityTameable; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.entity.player.EntityPlayerMP; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.ChatComponentText; -import net.minecraft.world.World; -import noppes.npcs.LogWriter; -import noppes.npcs.constants.EnumJobType; -import noppes.npcs.entity.EntityNPCInterface; -import noppes.npcs.roles.JobSpawner; -import org.apache.logging.log4j.LogManager; - -import java.lang.reflect.Array; -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.Method; -import java.util.ArrayList; -import java.util.List; - -public class DBCHelper { - public static boolean Enabled = false; - - private static Method StatusEffectsMethod = null; - private static Method PlyrSkillsMethod = null; - private static Method TransPwrModAtr = null; - private static Method statMethod = null; - - public static void load(){ - Enabled = Loader.isModLoaded("jinryuujrmcore"); - if(!Enabled) - return; - - try{ - Class c = Class.forName("JinRyuu.JRMCore.JRMCoreH"); - StatusEffectsMethod = c.getMethod("StusEfcts",int.class, String.class); - PlyrSkillsMethod = c.getMethod("PlyrSkills", EntityPlayer.class); - TransPwrModAtr = c.getMethod("TransPwrModAtr", int[].class, int.class, int.class, int.class, int.class, String.class, int.class, int.class, boolean.class, boolean.class, boolean.class, boolean.class, int.class, String[].class, boolean.class); - statMethod = c.getMethod("stat", int.class, int.class, int.class, int.class, int.class, float.class); - } - catch(Exception e){ - LogWriter.except(e); - } - - } - - public static boolean StatusEffects(int id, String effect){ - try { - Object returnValue = StatusEffectsMethod.invoke(null, id, effect); - return (Boolean) returnValue; - } catch (Exception e) { - LogManager.getLogger().error("StatusEffects", e); - } - return false; - } - - public static String[] PlayerSkills(EntityPlayer p){ - try { - Object returnValue = PlyrSkillsMethod.invoke(null, p); - if (returnValue instanceof String[]) { - return (String[]) returnValue; // Cast and return the String[] value - } else { - return new String[]{}; - } - } catch (Exception e) { - LogManager.getLogger().error("PlayerSkills", e); - } - - return new String[]{}; - } - - public static int TransPwrMod(int[] currAttributes, int attribute, int st, int st2, int race, String SklX, int currRelease, int arcRel, boolean legendOn, boolean majinOn, boolean mysticOn, boolean uiOn, int powerType, String[] Skls, boolean isFused){ - try { - Object returnValue = TransPwrModAtr.invoke(null, currAttributes, attribute, st, st2, race, SklX, currRelease, arcRel, legendOn, majinOn, mysticOn, uiOn, powerType, Skls, isFused); - if (returnValue instanceof Integer) { - return (int) returnValue; - } else { - return -1; - } - } catch (Exception e) { - LogManager.getLogger().error("TransPwrModAtr", e); - } - - return -1; - } - - public static int StatMethod(int g, int s, int a, int r, int c, float b){ - try { - Object returnValue = statMethod.invoke(null, g, s, a, r, c, b); - if (returnValue instanceof Integer) { - return (int) returnValue; - } else { - return -1; - } - } catch (Exception e) { - LogManager.getLogger().error("statMethod", e); - } - - return -1; - } -} diff --git a/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java b/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java index 840993b57..d4ae3d2f1 100644 --- a/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java +++ b/src/main/java/noppes/npcs/scripted/entity/ScriptDBCPlayer.java @@ -1,13 +1,11 @@ package noppes.npcs.scripted.entity; -import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagList; import noppes.npcs.api.entity.IDBCPlayer; import noppes.npcs.api.item.IItemStack; -import noppes.npcs.compat.DBCHelper; import noppes.npcs.scripted.CustomNPCsException; import noppes.npcs.scripted.NpcAPI; @@ -797,67 +795,4 @@ public class ScriptDBCPlayer extends ScriptPlayer i } return ""; } - - public int calcDexResistance(int damage, int percentPierce){ - if(!DBCHelper.Enabled){ - return 0; - } - - NBTTagCompound nbt = player.getEntityData().getCompoundTag("PlayerPersisted"); - if(nbt != null){ - byte st = nbt.getByte("jrmcState"); - byte st2 = nbt.getByte("jrmcState2"); - byte rc = nbt.getByte("jrmcRace"); - byte cls = nbt.getByte("jrmcClass"); - String sklx = nbt.getString("jrmcSSltX"); - byte rls = nbt.getByte("jrmcRelease"); - int resrv = nbt.getInteger("jrmcArcRsrv"); - - String statusEffects = nbt.getString("jrmcStatusEff"); - boolean mj = DBCHelper.StatusEffects(12 ,statusEffects); - boolean mc = DBCHelper.StatusEffects(13 ,statusEffects); - boolean lg = DBCHelper.StatusEffects(14 ,statusEffects); - boolean mn = DBCHelper.StatusEffects(19 ,statusEffects); - - byte pwr = nbt.getByte("jrmcPwrtyp"); - String[] ps = DBCHelper.PlayerSkills(player); - boolean c = DBCHelper.StatusEffects(10 ,statusEffects) || DBCHelper.StatusEffects(11 ,statusEffects); - int dex = DBCHelper.TransPwrMod(getStats(player), 1, st, st2, rc, sklx, rls, resrv, lg, mj, mc, mn, pwr, ps, c); - - int def = (int) (DBCHelper.StatMethod(1, 1, dex, rc, cls, 0.0F) * rls * 0.01D * JRMCoreH.weightPerc(1, player)); - - boolean block = ExtendedPlayer.get(player).getBlocking() != 0; - - if (!block) { - def /= (100 / JRMCoreConfig.cStatPasDef); - } - - int dmg = damage - def; - - if (dmg <= 0) { - dmg = (int) (damage * percentPierce); - } - - int hp = nbt.getInteger("jrmcBdy") - (dmg / 2); - - if (hp < 0) { - hp = 0; - } - - nbt.setInteger("jrmcBdy", hp); - } - } - - private int[] getStats(EntityPlayer player) { - NBTTagCompound nbt = player.getEntityData().getCompoundTag("PlayerPersisted"); - int[] stats = new int[6]; - String[] attr = { "jrmcStrI", "jrmcDexI", "jrmcCnsI", "jrmcWilI", "jrmcIntI", "jrmcCncI" }; - - for (int i = 0; i < attr.length; i++) { - stats[i] = nbt.getInteger(attr[i]); - } - - return stats; - } - } \ No newline at end of file From f95bf94d7eadaac9d68af07fb73fcb479a2ca690 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 27 Jul 2023 02:09:23 -0400 Subject: [PATCH 5/7] IsBlock --- .../npcs/client/renderer/blocks/BlockBannerRenderer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java index 7d5946da4..9df322137 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java @@ -59,7 +59,8 @@ public class BlockBannerRenderer extends BlockRendererInterface{ } public void doRender(double par2, double par4, double par6, int meta, ItemStack iicon) { - if (iicon.getItemSpriteNumber() == 0 && RenderBlocks.renderItemIn3d(Block.getBlockFromItem(iicon.getItem()).getRenderType())) + boolean isBlock = RenderBlocks.renderItemIn3d(Block.getBlockFromItem(iicon.getItem()).getRenderType()); + if (iicon.getItemSpriteNumber() == 0 && isBlock) return; GL11.glPushMatrix(); bindTexture(TextureMap.locationItemsTexture); From f36ba7fb3f49f5c61adc39d1ad0a19b2c9e57069 Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 27 Jul 2023 02:26:34 -0400 Subject: [PATCH 6/7] Add Block/Custom entity item support to Banners and Signs --- .../renderer/blocks/BlockBannerRenderer.java | 58 +++++++++++++++++-- .../renderer/blocks/BlockSignRenderer.java | 57 ++++++++++++++++-- 2 files changed, 107 insertions(+), 8 deletions(-) diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java index 9df322137..ed813dd6a 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockBannerRenderer.java @@ -3,10 +3,16 @@ package noppes.npcs.client.renderer.blocks; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockBanner; @@ -59,9 +65,6 @@ public class BlockBannerRenderer extends BlockRendererInterface{ } public void doRender(double par2, double par4, double par6, int meta, ItemStack iicon) { - boolean isBlock = RenderBlocks.renderItemIn3d(Block.getBlockFromItem(iicon.getItem()).getRenderType()); - if (iicon.getItemSpriteNumber() == 0 && isBlock) - return; GL11.glPushMatrix(); bindTexture(TextureMap.locationItemsTexture); GL11.glTranslatef((float)par2 + 0.5f, (float)par4 +1.3f, (float)par6 + 0.5f); @@ -72,11 +75,58 @@ public class BlockBannerRenderer extends BlockRendererInterface{ float f2 = 0.05f; Minecraft mc = Minecraft.getMinecraft(); GL11.glScalef(f2, f2, f2); - renderer.renderItemIntoGUI(this.func_147498_b(), mc.renderEngine, iicon, -8, -8); + renderItemBanner(mc.renderEngine, iicon, -8, -8, false); GL11.glDepthMask(true); GL11.glPopMatrix(); } + public void renderItemBanner(TextureManager txtMng, ItemStack item, int p_77015_4_, int p_77015_5_, boolean renderEffect) + { + Object object = item.getIconIndex(); + int l; + float f; + float f3; + float f4; + + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + ResourceLocation resourcelocation = txtMng.getResourceLocation(item.getItemSpriteNumber()); + txtMng.bindTexture(resourcelocation); + + if (object == null) + { + object = ((TextureMap)Minecraft.getMinecraft().getTextureManager().getTexture(resourcelocation)).getAtlasSprite("missingno"); + } + + l = item.getItem().getColorFromItemStack(item, 0); + f3 = (float)(l >> 16 & 255) / 255.0F; + f4 = (float)(l >> 8 & 255) / 255.0F; + f = (float)(l & 255) / 255.0F; + + if (renderer.renderWithColor) + { + GL11.glColor4f(f3, f4, f, 1.0F); + } + + GL11.glDisable(GL11.GL_LIGHTING); //Forge: Make sure that render states are reset, a renderEffect can derp them up. + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glEnable(GL11.GL_BLEND); + + renderer.renderIcon(p_77015_4_, p_77015_5_, (IIcon)object, 16, 16); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glDisable(GL11.GL_BLEND); + + if (renderEffect && item.hasEffect(0)) + { + renderer.renderEffect(txtMng, p_77015_4_, p_77015_5_); + } + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + } + @Override public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { diff --git a/src/main/java/noppes/npcs/client/renderer/blocks/BlockSignRenderer.java b/src/main/java/noppes/npcs/client/renderer/blocks/BlockSignRenderer.java index 84274ef1c..c42b21e32 100644 --- a/src/main/java/noppes/npcs/client/renderer/blocks/BlockSignRenderer.java +++ b/src/main/java/noppes/npcs/client/renderer/blocks/BlockSignRenderer.java @@ -3,10 +3,14 @@ package noppes.npcs.client.renderer.blocks; import cpw.mods.fml.client.registry.RenderingRegistry; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.texture.TextureManager; import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; import noppes.npcs.CustomItems; import noppes.npcs.blocks.BlockRotated; import noppes.npcs.blocks.tiles.TileSign; @@ -49,8 +53,6 @@ public class BlockSignRenderer extends BlockRendererInterface{ public void doRender(double par2, double par4, double par6, int meta, ItemStack iicon) { - if (iicon.getItemSpriteNumber() == 0 && RenderBlocks.renderItemIn3d(Block.getBlockFromItem(iicon.getItem()).getRenderType())) - return; GL11.glPushMatrix(); bindTexture(TextureMap.locationItemsTexture); GL11.glTranslatef(0, 1.02f, -0.03f); @@ -58,15 +60,62 @@ public class BlockSignRenderer extends BlockRendererInterface{ float f2 = 0.024f; Minecraft mc = Minecraft.getMinecraft(); GL11.glScalef(f2, f2, f2); - renderer.renderItemIntoGUI(this.func_147498_b(), mc.renderEngine, iicon, -8, -8); + renderItemBanner(mc.renderEngine, iicon, -8, -8, false); GL11.glRotatef(180, 0, 1, 0); GL11.glTranslatef(0, 0, -2.9f); - renderer.renderItemIntoGUI(this.func_147498_b(), mc.renderEngine, iicon, -8, -8); + renderItemBanner(mc.renderEngine, iicon, -8, -8, false); GL11.glDepthMask(true); GL11.glPopMatrix(); } + public void renderItemBanner(TextureManager txtMng, ItemStack item, int p_77015_4_, int p_77015_5_, boolean renderEffect) + { + Object object = item.getIconIndex(); + int l; + float f; + float f3; + float f4; + + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_BLEND); + OpenGlHelper.glBlendFunc(770, 771, 1, 0); + ResourceLocation resourcelocation = txtMng.getResourceLocation(item.getItemSpriteNumber()); + txtMng.bindTexture(resourcelocation); + + if (object == null) + { + object = ((TextureMap)Minecraft.getMinecraft().getTextureManager().getTexture(resourcelocation)).getAtlasSprite("missingno"); + } + + l = item.getItem().getColorFromItemStack(item, 0); + f3 = (float)(l >> 16 & 255) / 255.0F; + f4 = (float)(l >> 8 & 255) / 255.0F; + f = (float)(l & 255) / 255.0F; + + if (renderer.renderWithColor) + { + GL11.glColor4f(f3, f4, f, 1.0F); + } + + GL11.glDisable(GL11.GL_LIGHTING); //Forge: Make sure that render states are reset, a renderEffect can derp them up. + GL11.glEnable(GL11.GL_ALPHA_TEST); + GL11.glEnable(GL11.GL_BLEND); + + renderer.renderIcon(p_77015_4_, p_77015_5_, (IIcon)object, 16, 16); + + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_ALPHA_TEST); + GL11.glDisable(GL11.GL_BLEND); + + if (renderEffect && item.hasEffect(0)) + { + renderer.renderEffect(txtMng, p_77015_4_, p_77015_5_); + } + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + } + @Override public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { From 499940386daad6967bdbca23dd483a3468c95a2c Mon Sep 17 00:00:00 2001 From: Kam Date: Thu, 27 Jul 2023 03:10:49 -0400 Subject: [PATCH 7/7] get ID for QuestCat / DialogCat --- src/api | 2 +- .../java/noppes/npcs/controllers/data/DialogCategory.java | 5 +++++ .../java/noppes/npcs/controllers/data/QuestCategory.java | 5 +++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/api b/src/api index 1fac6adc2..f1c4b87a0 160000 --- a/src/api +++ b/src/api @@ -1 +1 @@ -Subproject commit 1fac6adc21e69f8fa0967d67d252af70c5327bb3 +Subproject commit f1c4b87a08154d8ba32a511f300b6049b9c68953 diff --git a/src/main/java/noppes/npcs/controllers/data/DialogCategory.java b/src/main/java/noppes/npcs/controllers/data/DialogCategory.java index ef2dbd4c8..3c6267ee8 100644 --- a/src/main/java/noppes/npcs/controllers/data/DialogCategory.java +++ b/src/main/java/noppes/npcs/controllers/data/DialogCategory.java @@ -61,4 +61,9 @@ public class DialogCategory implements IDialogCategory { dialog.category = this; return dialog; } + + @Override + public int getId() { + return this.id; + } } diff --git a/src/main/java/noppes/npcs/controllers/data/QuestCategory.java b/src/main/java/noppes/npcs/controllers/data/QuestCategory.java index 774fef513..05d0806b1 100644 --- a/src/main/java/noppes/npcs/controllers/data/QuestCategory.java +++ b/src/main/java/noppes/npcs/controllers/data/QuestCategory.java @@ -61,4 +61,9 @@ public class QuestCategory implements IQuestCategory { quest.category = this; return quest; } + + @Override + public int getId() { + return this.id; + } }