From cb383c824c3f799e678fb98f29661d79b5a13836 Mon Sep 17 00:00:00 2001 From: Jakub <53441451+kuba6000@users.noreply.github.com> Date: Thu, 15 Jun 2023 17:53:16 +0200 Subject: Use mixins accessors + some misc fixes (#77) * Change reflections to mixins * Wrap witchery checking * Remove more repeating code * hmm * test generation * test * client sided * Update CommandCustomDrops.java * Update MobRecipeLoader.java * Save to static variable * Imports * Log message * Convert InfernalHelper to mixin accessors * Update build.gradle * One more * Return class nodes to optimize * Translations mixin * Automatically add commands * Fixes * Fix https://github.com/GTNewHorizons/GT-New-Horizons-Modpack/issues/12021 * Update kubatech.java * Update CommonProxy.java * Unnecessary qualified reference * Simplify ItemUtils * Check if single player diffrently * Remove accessor for infernal-mobs --- src/main/java/kubatech/api/utils/ItemUtils.java | 26 +++++++++++++++++++++++++ src/main/java/kubatech/api/utils/MobUtils.java | 16 ++++----------- src/main/java/kubatech/api/utils/ModUtils.java | 14 +++++++++++++ 3 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 src/main/java/kubatech/api/utils/ItemUtils.java (limited to 'src/main/java/kubatech/api/utils') diff --git a/src/main/java/kubatech/api/utils/ItemUtils.java b/src/main/java/kubatech/api/utils/ItemUtils.java new file mode 100644 index 0000000000..2fc34057c3 --- /dev/null +++ b/src/main/java/kubatech/api/utils/ItemUtils.java @@ -0,0 +1,26 @@ +package kubatech.api.utils; + +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; + +public class ItemUtils { + + public static NBTTagCompound writeItemStackToNBT(ItemStack stack) { + NBTTagCompound compound = new NBTTagCompound(); + + stack.writeToNBT(compound); + compound.setInteger("IntCount", stack.stackSize); + + return compound; + } + + public static ItemStack readItemStackFromNBT(NBTTagCompound compound) { + ItemStack stack = ItemStack.loadItemStackFromNBT(compound); + + if (stack == null) return null; + + if (compound.hasKey("IntCount")) stack.stackSize = compound.getInteger("IntCount"); + + return stack; + } +} diff --git a/src/main/java/kubatech/api/utils/MobUtils.java b/src/main/java/kubatech/api/utils/MobUtils.java index ad48c51cbf..d3ec59757a 100644 --- a/src/main/java/kubatech/api/utils/MobUtils.java +++ b/src/main/java/kubatech/api/utils/MobUtils.java @@ -20,8 +20,6 @@ package kubatech.api.utils; -import java.lang.reflect.Field; - import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelBox; import net.minecraft.client.model.ModelRenderer; @@ -32,11 +30,10 @@ import net.minecraft.entity.EntityLiving; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import kubatech.mixin.mixins.minecraft.RendererLivingEntityAccessor; public class MobUtils { - private static Field mainmodelfield = null; - @SideOnly(Side.CLIENT) public static float getDesiredScale(EntityLiving e, float desiredHeight) { return getDesiredScale(getMobHeight(e), desiredHeight); @@ -50,17 +47,12 @@ public class MobUtils { @SideOnly(Side.CLIENT) public static float getMobHeight(EntityLiving e) { try { - if (mainmodelfield == null) { - mainmodelfield = RendererLivingEntity.class - .getDeclaredField(ModUtils.isDeobfuscatedEnvironment ? "mainModel" : "field_77045_g"); - mainmodelfield.setAccessible(true); - } float eheight = e.height; float ewidth = e.width; Render r = RenderManager.instance.getEntityRenderObject(e); - if (r instanceof RendererLivingEntity && mainmodelfield != null) { - ModelBase mainmodel = (ModelBase) mainmodelfield.get(r); - for (Object box : mainmodel.boxList) { + if (r instanceof RendererLivingEntity) { + ModelBase mainModel = ((RendererLivingEntityAccessor) r).getMainModel(); + for (Object box : mainModel.boxList) { if (box instanceof ModelRenderer) { float minY = 999f; float minX = 999f; diff --git a/src/main/java/kubatech/api/utils/ModUtils.java b/src/main/java/kubatech/api/utils/ModUtils.java index cd02d28dba..61352cce9d 100644 --- a/src/main/java/kubatech/api/utils/ModUtils.java +++ b/src/main/java/kubatech/api/utils/ModUtils.java @@ -32,6 +32,7 @@ import javax.xml.bind.DatatypeConverter; import net.minecraft.launchwrapper.Launch; +import cpw.mods.fml.common.FMLCommonHandler; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.ModContainer; import kubatech.kubatech; @@ -41,6 +42,19 @@ public class ModUtils { public static final boolean isDeobfuscatedEnvironment = (boolean) Launch.blackboard .get("fml.deobfuscatedEnvironment"); public static boolean isClientSided = false; + + public static boolean isClientThreaded() { + return FMLCommonHandler.instance() + .getEffectiveSide() + .isClient(); + } + + @FunctionalInterface + public interface TriConsumer { + + void accept(T t, U u, V v); + } + private static final HashMap classNamesToModIDs = new HashMap<>(); private static final Map.Entry emptyEntry = new AbstractMap.SimpleEntry<>("", ""); -- cgit