diff options
author | Martin Robertz <dream-master@gmx.net> | 2022-08-19 14:13:14 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-19 14:13:14 +0200 |
commit | 3fd8c269616b598d3647886b33b48a1656638ff4 (patch) | |
tree | c8cdd43785cc1bf27bdda56b0ce13ead64e3d6bc /src/main/java/kubatech/api/utils/MobUtils.java | |
parent | 40590e12a74d38160229ac714e852a64705bc1b5 (diff) | |
parent | e047655eac4bf51bb5f72f36b8d1c5795cb4c817 (diff) | |
download | GT5-Unofficial-3fd8c269616b598d3647886b33b48a1656638ff4.tar.gz GT5-Unofficial-3fd8c269616b598d3647886b33b48a1656638ff4.tar.bz2 GT5-Unofficial-3fd8c269616b598d3647886b33b48a1656638ff4.zip |
Merge pull request #4 from GTNewHorizons/structure
New Extreme Extermination Chamber structure
Diffstat (limited to 'src/main/java/kubatech/api/utils/MobUtils.java')
-rw-r--r-- | src/main/java/kubatech/api/utils/MobUtils.java | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/main/java/kubatech/api/utils/MobUtils.java b/src/main/java/kubatech/api/utils/MobUtils.java new file mode 100644 index 0000000000..0b20364484 --- /dev/null +++ b/src/main/java/kubatech/api/utils/MobUtils.java @@ -0,0 +1,67 @@ +package kubatech.api.utils; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import java.lang.reflect.Field; +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelBox; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.client.renderer.entity.RendererLivingEntity; +import net.minecraft.entity.EntityLiving; + +public class MobUtils { + + private static Field mainmodelfield = null; + + @SideOnly(Side.CLIENT) + public static float getDesiredScale(EntityLiving e, float desiredHeight) { + return getDesiredScale(getMobHeight(e), desiredHeight); + } + + @SideOnly(Side.CLIENT) + public static float getDesiredScale(float entityHeight, float desiredHeight) { + return desiredHeight / entityHeight; + } + + @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 (box instanceof ModelRenderer) { + float minY = 999f; + float minX = 999f; + float maxY = -999f; + float maxX = -999f; + for (Object cube : ((ModelRenderer) box).cubeList) { + if (cube instanceof ModelBox) { + if (minY > ((ModelBox) cube).posY1) minY = ((ModelBox) cube).posY1; + if (minX > ((ModelBox) cube).posX1) minX = ((ModelBox) cube).posX1; + if (maxY < ((ModelBox) cube).posY2) maxY = ((ModelBox) cube).posY2; + if (maxX < ((ModelBox) cube).posX2) maxX = ((ModelBox) cube).posX2; + } + } + float cubeheight = (maxY - minY) / 10f; + float cubewidth = (maxX - minX) / 10f; + if (eheight < cubeheight) eheight = cubeheight; + if (ewidth < cubewidth) ewidth = cubewidth; + } + } + } + return eheight; + } catch (Exception ex) { + return 1f; + } + } +} |