diff options
author | Jakub <53441451+kuba6000@users.noreply.github.com> | 2023-06-15 17:53:16 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-06-15 17:53:16 +0200 |
commit | cb383c824c3f799e678fb98f29661d79b5a13836 (patch) | |
tree | c27ec3672eb0cb1726565bf28ae2655404496231 /src/main/java/kubatech/api/utils | |
parent | b2c2a6dfe91696d4ecada95e5e43806ddb144ece (diff) | |
download | GT5-Unofficial-cb383c824c3f799e678fb98f29661d79b5a13836.tar.gz GT5-Unofficial-cb383c824c3f799e678fb98f29661d79b5a13836.tar.bz2 GT5-Unofficial-cb383c824c3f799e678fb98f29661d79b5a13836.zip |
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
Diffstat (limited to 'src/main/java/kubatech/api/utils')
-rw-r--r-- | src/main/java/kubatech/api/utils/ItemUtils.java | 26 | ||||
-rw-r--r-- | src/main/java/kubatech/api/utils/MobUtils.java | 16 | ||||
-rw-r--r-- | src/main/java/kubatech/api/utils/ModUtils.java | 14 |
3 files changed, 44 insertions, 12 deletions
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<T, U, V> { + + void accept(T t, U u, V v); + } + private static final HashMap<String, String> classNamesToModIDs = new HashMap<>(); private static final Map.Entry<String, String> emptyEntry = new AbstractMap.SimpleEntry<>("", ""); |