From f4eefcee265ac46886ce766d5006b97ac193761e Mon Sep 17 00:00:00 2001 From: Alkalus Date: Mon, 25 Sep 2017 19:25:05 +1000 Subject: + Added textures and Models for the Staballoy Construct and the Sick Blaze.. $ Fixed Dark World Top and secondary layer not generating. --- src/Java/gtPlusPlus/GTplusplus_Secondary.java | 20 +-- .../core/client/model/ModelStaballoyConstruct.java | 129 +++++++++++++++++++ .../core/client/renderer/RenderSickBlaze.java | 3 +- .../client/renderer/RenderStaballoyConstruct.java | 140 +++++++++++++++++++++ .../entity/monster/EntityStaballoyConstruct.java | 36 +++--- src/Java/gtPlusPlus/core/proxy/ClientProxy.java | 2 +- .../world/darkworld/biome/Biome_DarkWorld.java | 9 +- 7 files changed, 297 insertions(+), 42 deletions(-) create mode 100644 src/Java/gtPlusPlus/core/client/model/ModelStaballoyConstruct.java create mode 100644 src/Java/gtPlusPlus/core/client/renderer/RenderStaballoyConstruct.java (limited to 'src/Java/gtPlusPlus') diff --git a/src/Java/gtPlusPlus/GTplusplus_Secondary.java b/src/Java/gtPlusPlus/GTplusplus_Secondary.java index 67914ad4e5..0b6506095e 100644 --- a/src/Java/gtPlusPlus/GTplusplus_Secondary.java +++ b/src/Java/gtPlusPlus/GTplusplus_Secondary.java @@ -3,9 +3,6 @@ package gtPlusPlus; import java.io.File; import java.util.Random; -import org.apache.logging.log4j.Level; -import org.apache.logging.log4j.LogManager; - import cofh.mod.ChildMod; import cpw.mods.fml.common.*; import cpw.mods.fml.common.Mod.CustomProperty; @@ -44,19 +41,13 @@ public class GTplusplus_Secondary implements IFuelHandler, IWorldGenerator{ public static final String VERSION2 = "0.1"; // Dark World Handler - Biome_DarkWorld DarkWorld_Biome = new Biome_DarkWorld(); - Dimension_DarkWorld DarkWorld_Dimension = new Dimension_DarkWorld(); + Biome_DarkWorld DarkWorld_Biome; + Dimension_DarkWorld DarkWorld_Dimension; public static int globalDarkWorldPortalSpawnTimer = 0; @EventHandler public void load(final FMLInitializationEvent e) { Utils.LOG_INFO("Begin resource allocation for " + MODID2 + " V" + VERSION2); - try { - initMod(); - } catch (final Throwable $) { - final ModContainer This = FMLCommonHandler.instance().findContainerFor(this); - LogManager.getLogger(This.getModId()).log(Level.ERROR, "There was a problem loading " + This.getName(), $); - } //Load Dark World and Biome GameRegistry.registerFuelHandler(this); @@ -74,6 +65,9 @@ public class GTplusplus_Secondary implements IFuelHandler, IWorldGenerator{ //Setup setVars(); + DarkWorld_Biome = new Biome_DarkWorld(); + DarkWorld_Dimension = new Dimension_DarkWorld(); + // Load Dark World DarkWorld_Biome.instance = GTplusplus.instance; DarkWorld_Dimension.instance = GTplusplus.instance; @@ -133,10 +127,6 @@ public class GTplusplus_Secondary implements IFuelHandler, IWorldGenerator{ } - private static void initMod() { - - } - @EventHandler public static void postInit(final FMLPostInitializationEvent e) { Utils.LOG_INFO("Finished loading Dark World plugin for GT++."); diff --git a/src/Java/gtPlusPlus/core/client/model/ModelStaballoyConstruct.java b/src/Java/gtPlusPlus/core/client/model/ModelStaballoyConstruct.java new file mode 100644 index 0000000000..ab56e11a9a --- /dev/null +++ b/src/Java/gtPlusPlus/core/client/model/ModelStaballoyConstruct.java @@ -0,0 +1,129 @@ +package gtPlusPlus.core.client.model; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelIronGolem; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntityIronGolem; + +@SideOnly(Side.CLIENT) +public class ModelStaballoyConstruct extends ModelIronGolem +{ + /** The head model for the iron golem. */ + public ModelRenderer ironGolemHead; + /** The body model for the iron golem. */ + public ModelRenderer ironGolemBody; + /** The right arm model for the iron golem. */ + public ModelRenderer ironGolemRightArm; + /** The left arm model for the iron golem. */ + public ModelRenderer ironGolemLeftArm; + /** The left leg model for the Iron Golem. */ + public ModelRenderer ironGolemLeftLeg; + /** The right leg model for the Iron Golem. */ + public ModelRenderer ironGolemRightLeg; + private static final String __OBFID = "CL_00000863"; + + public ModelStaballoyConstruct() + { + this(0.0F); + } + + public ModelStaballoyConstruct(float p_i1161_1_) + { + this(p_i1161_1_, -7.0F); + } + + public ModelStaballoyConstruct(float p_i1162_1_, float p_i1162_2_) + { + short short1 = 128; + short short2 = 128; + this.ironGolemHead = (new ModelRenderer(this)).setTextureSize(short1, short2); + this.ironGolemHead.setRotationPoint(0.0F, 0.0F + p_i1162_2_, -2.0F); + this.ironGolemHead.setTextureOffset(0, 0).addBox(-4.0F, -12.0F, -5.5F, 8, 10, 8, p_i1162_1_); + this.ironGolemHead.setTextureOffset(24, 0).addBox(-1.0F, -5.0F, -7.5F, 2, 4, 2, p_i1162_1_); + this.ironGolemBody = (new ModelRenderer(this)).setTextureSize(short1, short2); + this.ironGolemBody.setRotationPoint(0.0F, 0.0F + p_i1162_2_, 0.0F); + this.ironGolemBody.setTextureOffset(0, 40).addBox(-9.0F, -2.0F, -6.0F, 18, 12, 11, p_i1162_1_); + this.ironGolemBody.setTextureOffset(0, 70).addBox(-4.5F, 10.0F, -3.0F, 9, 5, 6, p_i1162_1_ + 0.5F); + this.ironGolemRightArm = (new ModelRenderer(this)).setTextureSize(short1, short2); + this.ironGolemRightArm.setRotationPoint(0.0F, -7.0F, 0.0F); + this.ironGolemRightArm.setTextureOffset(60, 21).addBox(-13.0F, -2.5F, -3.0F, 4, 30, 6, p_i1162_1_); + this.ironGolemLeftArm = (new ModelRenderer(this)).setTextureSize(short1, short2); + this.ironGolemLeftArm.setRotationPoint(0.0F, -7.0F, 0.0F); + this.ironGolemLeftArm.setTextureOffset(60, 58).addBox(9.0F, -2.5F, -3.0F, 4, 30, 6, p_i1162_1_); + this.ironGolemLeftLeg = (new ModelRenderer(this, 0, 22)).setTextureSize(short1, short2); + this.ironGolemLeftLeg.setRotationPoint(-4.0F, 18.0F + p_i1162_2_, 0.0F); + this.ironGolemLeftLeg.setTextureOffset(37, 0).addBox(-3.5F, -3.0F, -3.0F, 6, 16, 5, p_i1162_1_); + this.ironGolemRightLeg = (new ModelRenderer(this, 0, 22)).setTextureSize(short1, short2); + this.ironGolemRightLeg.mirror = true; + this.ironGolemRightLeg.setTextureOffset(60, 0).setRotationPoint(5.0F, 18.0F + p_i1162_2_, 0.0F); + this.ironGolemRightLeg.addBox(-3.5F, -3.0F, -3.0F, 6, 16, 5, p_i1162_1_); + } + + /** + * Sets the models various rotation angles then renders the model. + */ + public void render(Entity p_78088_1_, float p_78088_2_, float p_78088_3_, float p_78088_4_, float p_78088_5_, float p_78088_6_, float p_78088_7_) + { + this.setRotationAngles(p_78088_2_, p_78088_3_, p_78088_4_, p_78088_5_, p_78088_6_, p_78088_7_, p_78088_1_); + this.ironGolemHead.render(p_78088_7_); + this.ironGolemBody.render(p_78088_7_); + this.ironGolemLeftLeg.render(p_78088_7_); + this.ironGolemRightLeg.render(p_78088_7_); + this.ironGolemRightArm.render(p_78088_7_); + this.ironGolemLeftArm.render(p_78088_7_); + } + + /** + * Sets the model's various rotation angles. For bipeds, par1 and par2 are used for animating the movement of arms + * and legs, where par1 represents the time(so that arms and legs swing back and forth) and par2 represents how + * "far" arms and legs can swing at most. + */ + public void setRotationAngles(float p_78087_1_, float p_78087_2_, float p_78087_3_, float p_78087_4_, float p_78087_5_, float p_78087_6_, Entity p_78087_7_) + { + this.ironGolemHead.rotateAngleY = p_78087_4_ / (180F / (float)Math.PI); + this.ironGolemHead.rotateAngleX = p_78087_5_ / (180F / (float)Math.PI); + this.ironGolemLeftLeg.rotateAngleX = -1.5F * this.func_78172_a(p_78087_1_, 13.0F) * p_78087_2_; + this.ironGolemRightLeg.rotateAngleX = 1.5F * this.func_78172_a(p_78087_1_, 13.0F) * p_78087_2_; + this.ironGolemLeftLeg.rotateAngleY = 0.0F; + this.ironGolemRightLeg.rotateAngleY = 0.0F; + } + + /** + * Used for easily adding entity-dependent animations. The second and third float params here are the same second + * and third as in the setRotationAngles method. + */ + public void setLivingAnimations(EntityLivingBase p_78086_1_, float p_78086_2_, float p_78086_3_, float p_78086_4_) + { + EntityIronGolem entityirongolem = (EntityIronGolem)p_78086_1_; + int i = entityirongolem.getAttackTimer(); + + if (i > 0) + { + this.ironGolemRightArm.rotateAngleX = -2.0F + 1.5F * this.func_78172_a((float)i - p_78086_4_, 10.0F); + this.ironGolemLeftArm.rotateAngleX = -2.0F + 1.5F * this.func_78172_a((float)i - p_78086_4_, 10.0F); + } + else + { + int j = entityirongolem.getHoldRoseTick(); + + if (j > 0) + { + this.ironGolemRightArm.rotateAngleX = -0.8F + 0.025F * this.func_78172_a((float)j, 70.0F); + this.ironGolemLeftArm.rotateAngleX = 0.0F; + } + else + { + this.ironGolemRightArm.rotateAngleX = (-0.2F + 1.5F * this.func_78172_a(p_78086_2_, 13.0F)) * p_78086_3_; + this.ironGolemLeftArm.rotateAngleX = (-0.2F - 1.5F * this.func_78172_a(p_78086_2_, 13.0F)) * p_78086_3_; + } + } + } + + private float func_78172_a(float p_78172_1_, float p_78172_2_) + { + return (Math.abs(p_78172_1_ % p_78172_2_ - p_78172_2_ * 0.5F) - p_78172_2_ * 0.25F) / (p_78172_2_ * 0.25F); + } +} \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/client/renderer/RenderSickBlaze.java b/src/Java/gtPlusPlus/core/client/renderer/RenderSickBlaze.java index 7ed95bd541..d2b8ff4868 100644 --- a/src/Java/gtPlusPlus/core/client/renderer/RenderSickBlaze.java +++ b/src/Java/gtPlusPlus/core/client/renderer/RenderSickBlaze.java @@ -4,6 +4,7 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gtPlusPlus.core.client.model.ModelSickBlaze; import gtPlusPlus.core.entity.monster.EntitySickBlaze; +import gtPlusPlus.core.lib.CORE; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.entity.*; import net.minecraft.util.ResourceLocation; @@ -11,7 +12,7 @@ import net.minecraft.util.ResourceLocation; @SideOnly(Side.CLIENT) public class RenderSickBlaze extends RenderLiving { - private static final ResourceLocation blazeTextures = new ResourceLocation("textures/entity/slime.png"); + private static final ResourceLocation blazeTextures = new ResourceLocation(CORE.MODID+":"+"textures/entity/sickBlaze.png"); private int field_77068_a; public RenderSickBlaze() diff --git a/src/Java/gtPlusPlus/core/client/renderer/RenderStaballoyConstruct.java b/src/Java/gtPlusPlus/core/client/renderer/RenderStaballoyConstruct.java new file mode 100644 index 0000000000..20a3a0b2f4 --- /dev/null +++ b/src/Java/gtPlusPlus/core/client/renderer/RenderStaballoyConstruct.java @@ -0,0 +1,140 @@ +package gtPlusPlus.core.client.renderer; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gtPlusPlus.core.client.model.ModelStaballoyConstruct; +import gtPlusPlus.core.entity.monster.EntityStaballoyConstruct; +import gtPlusPlus.core.lib.CORE; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLiving; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.init.Blocks; +import net.minecraft.util.ResourceLocation; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +@SideOnly(Side.CLIENT) +public class RenderStaballoyConstruct extends RenderLiving { + private static final ResourceLocation staballoyGolemTextures = new ResourceLocation(CORE.MODID+":"+"textures/entity/golemStaballoy.png"); + /** Staballoy Golem's Model. */ + private final ModelStaballoyConstruct staballoyGolemModel; + + public RenderStaballoyConstruct() { + super(new ModelStaballoyConstruct(), 0.8F); + this.staballoyGolemModel = (ModelStaballoyConstruct) this.mainModel; + } + + /** + * Actually renders the given argument. This is a synthetic bridge method, + * always casting down its argument and then handing it off to a worker + * function which does the actual work. In all probabilty, the class Render + * is generic (Render= 0.01D) { + float f3 = 13.0F; + float f4 = p_77043_1_.limbSwing - p_77043_1_.limbSwingAmount * (1.0F - p_77043_4_) + 6.0F; + float f5 = (Math.abs(f4 % f3 - f3 * 0.5F) - f3 * 0.25F) / (f3 * 0.25F); + GL11.glRotatef(6.5F * f5, 0.0F, 0.0F, 1.0F); + } + } + + protected void renderEquippedItems(EntityStaballoyConstruct p_77029_1_, float p_77029_2_) { + super.renderEquippedItems(p_77029_1_, p_77029_2_); + + if (p_77029_1_.getHoldRoseTick() != 0) { + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glPushMatrix(); + GL11.glRotatef(5.0F + 180.0F * this.staballoyGolemModel.ironGolemRightArm.rotateAngleX / (float) Math.PI, 1.0F, + 0.0F, 0.0F); + GL11.glTranslatef(-0.6875F, 1.25F, -0.9375F); + GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F); + float f1 = 0.8F; + GL11.glScalef(f1, -f1, f1); + int i = p_77029_1_.getBrightnessForRender(p_77029_2_); + int j = i % 65536; + int k = i / 65536; + OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, (float) j / 1.0F, (float) k / 1.0F); + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + this.bindTexture(TextureMap.locationBlocksTexture); + this.field_147909_c.renderBlockAsItem(Blocks.red_flower, 0, 1.0F); + GL11.glPopMatrix(); + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + } + } + + /** + * Actually renders the given argument. This is a synthetic bridge method, + * always casting down its argument and then handing it off to a worker + * function which does the actual work. In all probabilty, the class Render + * is generic (Render