From 73bc357197095e910a3249a5b2f7b99a63a0c26c Mon Sep 17 00:00:00 2001 From: Draknyte1 Date: Tue, 29 Aug 2017 23:29:33 +1000 Subject: $ Fixed LFTR tooltip not mentioning which casings to use. % More messing around with entity rendering and some custom mobs. --- .../core/client/model/ModelSickBlaze.java | 92 +++++++ .../core/client/renderer/RenderSickBlaze.java | 94 +++++++ .../core/client/renderer/RenderToxinball.java | 91 +++++++ .../core/entity/monster/EntitySickBlaze.java | 9 +- .../entity/monster/EntityStaballoyConstruct.java | 279 ++++++++++++++++++++ .../entity/monster/EntityStaballoyWarrior.java | 283 --------------------- src/Java/gtPlusPlus/core/proxy/ClientProxy.java | 9 +- .../world/darkworld/biome/Biome_DarkWorld.java | 16 +- 8 files changed, 581 insertions(+), 292 deletions(-) create mode 100644 src/Java/gtPlusPlus/core/client/model/ModelSickBlaze.java create mode 100644 src/Java/gtPlusPlus/core/client/renderer/RenderSickBlaze.java create mode 100644 src/Java/gtPlusPlus/core/client/renderer/RenderToxinball.java create mode 100644 src/Java/gtPlusPlus/core/entity/monster/EntityStaballoyConstruct.java delete mode 100644 src/Java/gtPlusPlus/core/entity/monster/EntityStaballoyWarrior.java (limited to 'src/Java/gtPlusPlus/core') diff --git a/src/Java/gtPlusPlus/core/client/model/ModelSickBlaze.java b/src/Java/gtPlusPlus/core/client/model/ModelSickBlaze.java new file mode 100644 index 0000000000..43930fb9fb --- /dev/null +++ b/src/Java/gtPlusPlus/core/client/model/ModelSickBlaze.java @@ -0,0 +1,92 @@ +package gtPlusPlus.core.client.model; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.client.model.ModelBlaze; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; +import net.minecraft.util.MathHelper; + +@SideOnly(Side.CLIENT) +public class ModelSickBlaze extends ModelBlaze +{ + /** The sticks that fly around the Blaze. */ + private ModelRenderer[] blazeSticks = new ModelRenderer[24]; + private ModelRenderer blazeHead; + + public ModelSickBlaze() + { + for (int i = 0; i < this.blazeSticks.length; ++i) + { + this.blazeSticks[i] = new ModelRenderer(this, 0, 16); + this.blazeSticks[i].addBox(0.0F, 0.0F, 0.0F, 2, 8, 2); + } + + this.blazeHead = new ModelRenderer(this, 0, 0); + this.blazeHead.addBox(-4.0F, -4.0F, -4.0F, 8, 8, 8); + } + + @Override + public int func_78104_a() + { + return 8; + } + + /** + * Sets the models various rotation angles then renders the model. + */ + @Override + 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.blazeHead.render(p_78088_7_); + + for (int i = 0; i < this.blazeSticks.length; ++i) + { + this.blazeSticks[i].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. + */ + @Override + 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_) + { + float f6 = p_78087_3_ * (float)Math.PI * -0.1F; + int i; + + for (i = 0; i < 4; ++i) + { + this.blazeSticks[i].rotationPointY = -2.0F + MathHelper.cos((i * 2 + p_78087_3_) * 0.25F); + this.blazeSticks[i].rotationPointX = MathHelper.cos(f6) * 9.0F; + this.blazeSticks[i].rotationPointZ = MathHelper.sin(f6) * 9.0F; + ++f6; + } + + f6 = ((float)Math.PI / 4F) + p_78087_3_ * (float)Math.PI * 0.03F; + + for (i = 4; i < 8; ++i) + { + this.blazeSticks[i].rotationPointY = 2.0F + MathHelper.cos((i * 2 + p_78087_3_) * 0.25F); + this.blazeSticks[i].rotationPointX = MathHelper.cos(f6) * 7.0F; + this.blazeSticks[i].rotationPointZ = MathHelper.sin(f6) * 7.0F; + ++f6; + } + + f6 = 0.47123894F + p_78087_3_ * (float)Math.PI * -0.05F; + + for (i = 8; i < 12; ++i) + { + this.blazeSticks[i].rotationPointY = 11.0F + MathHelper.cos((i * 1.5F + p_78087_3_) * 0.5F); + this.blazeSticks[i].rotationPointX = MathHelper.cos(f6) * 5.0F; + this.blazeSticks[i].rotationPointZ = MathHelper.sin(f6) * 5.0F; + ++f6; + } + + this.blazeHead.rotateAngleY = p_78087_4_ / (180F / (float)Math.PI); + this.blazeHead.rotateAngleX = p_78087_5_ / (180F / (float)Math.PI); + } +} \ 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 new file mode 100644 index 0000000000..7ed95bd541 --- /dev/null +++ b/src/Java/gtPlusPlus/core/client/renderer/RenderSickBlaze.java @@ -0,0 +1,94 @@ +package gtPlusPlus.core.client.renderer; + +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 net.minecraft.client.renderer.entity.RenderLiving; +import net.minecraft.entity.*; +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 int field_77068_a; + + public RenderSickBlaze() + { + super(new ModelSickBlaze(), 0.5F); + this.field_77068_a = ((ModelSickBlaze)this.mainModel).func_78104_a(); + } + + /** + * 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) { + --this.attackTimer; + } + + if (this.holdRoseTick > 0) { + --this.holdRoseTick; + } + + if (this.motionX * this.motionX + this.motionZ * this.motionZ > 2.500000277905201E-7D + && this.rand.nextInt(5) == 0) { + int i = MathHelper.floor_double(this.posX); + int j = MathHelper.floor_double(this.posY - 0.20000000298023224D - this.yOffset); + int k = MathHelper.floor_double(this.posZ); + Block block = this.worldObj.getBlock(i, j, k); + + if (block.getMaterial() != Material.air) { + this.worldObj.spawnParticle( + "blockcrack_" + Block.getIdFromBlock(block) + "_" + this.worldObj.getBlockMetadata(i, j, k), + this.posX + (this.rand.nextFloat() - 0.5D) * this.width, + this.boundingBox.minY + 0.1D, + this.posZ + (this.rand.nextFloat() - 0.5D) * this.width, + 4.0D * (this.rand.nextFloat() - 0.5D), 0.5D, + (this.rand.nextFloat() - 0.5D) * 4.0D); + } + } + } + + /** + * Returns true if this entity can attack entities of the specified class. + */ + @Override + public boolean canAttackClass(Class p_70686_1_) { + return this.isPlayerCreated() && EntityPlayer.class.isAssignableFrom(p_70686_1_) ? false + : super.canAttackClass(p_70686_1_); + } + + /** + * (abstract) Protected helper method to write subclass entity data to NBT. + */ + @Override + public void writeEntityToNBT(NBTTagCompound p_70014_1_) { + super.writeEntityToNBT(p_70014_1_); + p_70014_1_.setBoolean("PlayerCreated", this.isPlayerCreated()); + } + + /** + * (abstract) Protected helper method to read subclass entity data from NBT. + */ + @Override + public void readEntityFromNBT(NBTTagCompound p_70037_1_) { + super.readEntityFromNBT(p_70037_1_); + this.setPlayerCreated(p_70037_1_.getBoolean("PlayerCreated")); + } + + @Override + public boolean attackEntityAsMob(Entity p_70652_1_) { + this.attackTimer = 10; + this.worldObj.setEntityState(this, (byte) 4); + boolean flag = p_70652_1_.attackEntityFrom(DamageSource.causeMobDamage(this), + 7 + this.rand.nextInt(15)); + + if (flag) { + p_70652_1_.motionY += 0.4000000059604645D; + } + + this.playSound("mob.irongolem.throw", 1.0F, 1.0F); + return flag; + } + + @Override + @SideOnly(Side.CLIENT) + public void handleHealthUpdate(byte p_70103_1_) { + if (p_70103_1_ == 4) { + this.attackTimer = 10; + this.playSound("mob.irongolem.throw", 1.0F, 1.0F); + } + else if (p_70103_1_ == 11) { + this.holdRoseTick = 400; + } + else { + super.handleHealthUpdate(p_70103_1_); + } + } + + public Village getVillage() { + return this.villageObj; + } + + @SideOnly(Side.CLIENT) + public int getAttackTimer() { + return this.attackTimer; + } + + public void setHoldingRose(boolean p_70851_1_) { + this.holdRoseTick = p_70851_1_ ? 400 : 0; + this.worldObj.setEntityState(this, (byte) 11); + } + + /** + * Returns the sound this mob makes when it is hurt. + */ + @Override + protected String getHurtSound() { + return "mob.irongolem.hit"; + } + + /** + * Returns the sound this mob makes on death. + */ + @Override + protected String getDeathSound() { + return "mob.irongolem.death"; + } + + @Override + protected void func_145780_a(int p_145780_1_, int p_145780_2_, int p_145780_3_, Block p_145780_4_) { + this.playSound("mob.irongolem.walk", 1.0F, 1.0F); + } + + /** + * Drop 0-2 items of this living's type. @param par1 - Whether this entity + * has recently been hit by a player. @param par2 - Level of Looting used to + * kill this mob. + */ + @Override + protected void dropFewItems(boolean p_70628_1_, int p_70628_2_) { + int j = this.rand.nextInt(3); + int k; + + for (k = 0; k < j; ++k) { + this.func_145778_a(Item.getItemFromBlock(Blocks.red_flower), 1, 0.0F); + } + + k = 3 + this.rand.nextInt(3); + + for (int l = 0; l < k; ++l) { + this.dropItem(Items.iron_ingot, 1); + } + } + + public int getHoldRoseTick() { + return this.holdRoseTick; + } + + public boolean isPlayerCreated() { + return (this.dataWatcher.getWatchableObjectByte(16) & 1) != 0; + } + + public void setPlayerCreated(boolean p_70849_1_) { + byte b0 = this.dataWatcher.getWatchableObjectByte(16); + + if (p_70849_1_) { + this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 | 1))); + } + else { + this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 & -2))); + } + } + + /** + * Called when the mob's health reaches 0. + */ + @Override + public void onDeath(DamageSource p_70645_1_) { + super.onDeath(p_70645_1_); + } +} \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/entity/monster/EntityStaballoyWarrior.java b/src/Java/gtPlusPlus/core/entity/monster/EntityStaballoyWarrior.java deleted file mode 100644 index b6829f6985..0000000000 --- a/src/Java/gtPlusPlus/core/entity/monster/EntityStaballoyWarrior.java +++ /dev/null @@ -1,283 +0,0 @@ -package gtPlusPlus.core.entity.monster; - -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.block.Block; -import net.minecraft.block.material.Material; -import net.minecraft.entity.*; -import net.minecraft.entity.ai.*; -import net.minecraft.entity.monster.EntityGolem; -import net.minecraft.entity.monster.IMob; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.init.Blocks; -import net.minecraft.init.Items; -import net.minecraft.item.Item; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.*; -import net.minecraft.village.Village; -import net.minecraft.world.World; - -public class EntityStaballoyWarrior extends EntityGolem { - /** deincrements, and a distance-to-home check is done at 0 */ - private int homeCheckTimer; - Village villageObj; - private int attackTimer; - private int holdRoseTick; - - public EntityStaballoyWarrior(World world) { - super(world); - this.setSize(1.4F, 2.9F); - this.getNavigator().setAvoidsWater(true); - this.tasks.addTask(1, new EntityAIAttackOnCollide(this, 1.0D, true)); - this.tasks.addTask(2, new EntityAIMoveTowardsTarget(this, 0.9D, 32.0F)); - this.tasks.addTask(3, new EntityAIMoveThroughVillage(this, 0.6D, true)); - this.tasks.addTask(4, new EntityAIMoveTowardsRestriction(this, 1.0D)); - this.tasks.addTask(5, new EntityAIWander(this, 0.6D)); - this.tasks.addTask(6, new EntityAIWatchClosest(this, EntityPlayer.class, 6.0F)); - this.tasks.addTask(7, new EntityAILookIdle(this)); - this.targetTasks.addTask(1, new EntityAIHurtByTarget(this, false)); - this.targetTasks.addTask(2, - new EntityAINearestAttackableTarget(this, EntityLiving.class, 0, false, true, IMob.mobSelector)); - } - - @Override - protected void entityInit() { - super.entityInit(); - this.dataWatcher.addObject(16, Byte.valueOf((byte) 0)); - } - - /** - * Returns true if the newer Entity AI code should be run - */ - @Override - public boolean isAIEnabled() { - return true; - } - - /** - * main AI tick function, replaces updateEntityActionState - */ - @Override - protected void updateAITick() { - if (--this.homeCheckTimer <= 0) { - this.homeCheckTimer = 70 + this.rand.nextInt(50); - this.villageObj = this.worldObj.villageCollectionObj.findNearestVillage(MathHelper.floor_double(this.posX), - MathHelper.floor_double(this.posY), MathHelper.floor_double(this.posZ), 32); - - if (this.villageObj == null) { - this.detachHome(); - } - else { - ChunkCoordinates chunkcoordinates = this.villageObj.getCenter(); - this.setHomeArea(chunkcoordinates.posX, chunkcoordinates.posY, chunkcoordinates.posZ, - (int) (this.villageObj.getVillageRadius() * 0.6F)); - } - } - - super.updateAITick(); - } - - @Override - protected void applyEntityAttributes() { - super.applyEntityAttributes(); - this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(100.0D); - this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.25D); - } - - /** - * Decrements the entity's air supply when underwater - */ - @Override - protected int decreaseAirSupply(int p_70682_1_) { - return p_70682_1_; - } - - @Override - protected void collideWithEntity(Entity p_82167_1_) { - if (p_82167_1_ instanceof IMob && this.getRNG().nextInt(20) == 0) { - this.setAttackTarget((EntityLivingBase) p_82167_1_); - } - - super.collideWithEntity(p_82167_1_); - } - - /** - * Called frequently so the entity can update its state every tick as - * required. For example, zombies and skeletons use this to react to - * sunlight and start to burn. - */ - @Override - public void onLivingUpdate() { - super.onLivingUpdate(); - - if (this.attackTimer > 0) { - --this.attackTimer; - } - - if (this.holdRoseTick > 0) { - --this.holdRoseTick; - } - - if (this.motionX * this.motionX + this.motionZ * this.motionZ > 2.500000277905201E-7D - && this.rand.nextInt(5) == 0) { - int i = MathHelper.floor_double(this.posX); - int j = MathHelper.floor_double(this.posY - 0.20000000298023224D - this.yOffset); - int k = MathHelper.floor_double(this.posZ); - Block block = this.worldObj.getBlock(i, j, k); - - if (block.getMaterial() != Material.air) { - this.worldObj.spawnParticle( - "blockcrack_" + Block.getIdFromBlock(block) + "_" + this.worldObj.getBlockMetadata(i, j, k), - this.posX + (this.rand.nextFloat() - 0.5D) * this.width, - this.boundingBox.minY + 0.1D, - this.posZ + (this.rand.nextFloat() - 0.5D) * this.width, - 4.0D * (this.rand.nextFloat() - 0.5D), 0.5D, - (this.rand.nextFloat() - 0.5D) * 4.0D); - } - } - } - - /** - * Returns true if this entity can attack entities of the specified class. - */ - @Override - public boolean canAttackClass(Class p_70686_1_) { - return this.isPlayerCreated() && EntityPlayer.class.isAssignableFrom(p_70686_1_) ? false - : super.canAttackClass(p_70686_1_); - } - - /** - * (abstract) Protected helper method to write subclass entity data to NBT. - */ - @Override - public void writeEntityToNBT(NBTTagCompound p_70014_1_) { - super.writeEntityToNBT(p_70014_1_); - p_70014_1_.setBoolean("PlayerCreated", this.isPlayerCreated()); - } - - /** - * (abstract) Protected helper method to read subclass entity data from NBT. - */ - @Override - public void readEntityFromNBT(NBTTagCompound p_70037_1_) { - super.readEntityFromNBT(p_70037_1_); - this.setPlayerCreated(p_70037_1_.getBoolean("PlayerCreated")); - } - - @Override - public boolean attackEntityAsMob(Entity p_70652_1_) { - this.attackTimer = 10; - this.worldObj.setEntityState(this, (byte) 4); - boolean flag = p_70652_1_.attackEntityFrom(DamageSource.causeMobDamage(this), - 7 + this.rand.nextInt(15)); - - if (flag) { - p_70652_1_.motionY += 0.4000000059604645D; - } - - this.playSound("mob.irongolem.throw", 1.0F, 1.0F); - return flag; - } - - @Override - @SideOnly(Side.CLIENT) - public void handleHealthUpdate(byte p_70103_1_) { - if (p_70103_1_ == 4) { - this.attackTimer = 10; - this.playSound("mob.irongolem.throw", 1.0F, 1.0F); - } - else if (p_70103_1_ == 11) { - this.holdRoseTick = 400; - } - else { - super.handleHealthUpdate(p_70103_1_); - } - } - - public Village getVillage() { - return this.villageObj; - } - - @SideOnly(Side.CLIENT) - public int getAttackTimer() { - return this.attackTimer; - } - - public void setHoldingRose(boolean p_70851_1_) { - this.holdRoseTick = p_70851_1_ ? 400 : 0; - this.worldObj.setEntityState(this, (byte) 11); - } - - /** - * Returns the sound this mob makes when it is hurt. - */ - @Override - protected String getHurtSound() { - return "mob.irongolem.hit"; - } - - /** - * Returns the sound this mob makes on death. - */ - @Override - protected String getDeathSound() { - return "mob.irongolem.death"; - } - - @Override - protected void func_145780_a(int p_145780_1_, int p_145780_2_, int p_145780_3_, Block p_145780_4_) { - this.playSound("mob.irongolem.walk", 1.0F, 1.0F); - } - - /** - * Drop 0-2 items of this living's type. @param par1 - Whether this entity - * has recently been hit by a player. @param par2 - Level of Looting used to - * kill this mob. - */ - @Override - protected void dropFewItems(boolean p_70628_1_, int p_70628_2_) { - int j = this.rand.nextInt(3); - int k; - - for (k = 0; k < j; ++k) { - this.func_145778_a(Item.getItemFromBlock(Blocks.red_flower), 1, 0.0F); - } - - k = 3 + this.rand.nextInt(3); - - for (int l = 0; l < k; ++l) { - this.dropItem(Items.iron_ingot, 1); - } - } - - public int getHoldRoseTick() { - return this.holdRoseTick; - } - - public boolean isPlayerCreated() { - return (this.dataWatcher.getWatchableObjectByte(16) & 1) != 0; - } - - public void setPlayerCreated(boolean p_70849_1_) { - byte b0 = this.dataWatcher.getWatchableObjectByte(16); - - if (p_70849_1_) { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 | 1))); - } - else { - this.dataWatcher.updateObject(16, Byte.valueOf((byte) (b0 & -2))); - } - } - - /** - * Called when the mob's health reaches 0. - */ - @Override - public void onDeath(DamageSource p_70645_1_) { - if (!this.isPlayerCreated() && this.attackingPlayer != null && this.villageObj != null) { - this.villageObj.setReputationForPlayer(this.attackingPlayer.getCommandSenderName(), -5); - } - - super.onDeath(p_70645_1_); - } -} \ No newline at end of file diff --git a/src/Java/gtPlusPlus/core/proxy/ClientProxy.java b/src/Java/gtPlusPlus/core/proxy/ClientProxy.java index cce4aedbd7..d13e7f347b 100644 --- a/src/Java/gtPlusPlus/core/proxy/ClientProxy.java +++ b/src/Java/gtPlusPlus/core/proxy/ClientProxy.java @@ -7,10 +7,13 @@ import cpw.mods.fml.common.event.*; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import gtPlusPlus.GTplusplus; -import gtPlusPlus.core.client.renderer.RenderMiningExplosivesPrimed; +import gtPlusPlus.core.client.renderer.*; import gtPlusPlus.core.common.CommonProxy; import gtPlusPlus.core.common.compat.COMPAT_PlayerAPI; import gtPlusPlus.core.entity.EntityPrimedMiningExplosive; +import gtPlusPlus.core.entity.monster.EntitySickBlaze; +import gtPlusPlus.core.entity.monster.EntityStaballoyConstruct; +import gtPlusPlus.core.entity.projectile.EntityToxinballSmall; import gtPlusPlus.core.handler.render.FirepitRender; import gtPlusPlus.core.lib.LoadedMods; import gtPlusPlus.core.tileentities.general.TileEntityFirepit; @@ -18,6 +21,7 @@ import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.particles.EntityParticleFXMysterious; import net.minecraft.client.Minecraft; import net.minecraft.client.particle.EntityFX; +import net.minecraft.client.renderer.entity.RenderIronGolem; import net.minecraft.entity.Entity; public class ClientProxy extends CommonProxy{ @@ -66,6 +70,9 @@ public class ClientProxy extends CommonProxy{ //RenderingRegistry.registerEntityRenderingHandler(EntityGrenade.class, new RenderSnowball(ModItems.tutGrenade)); Utils.LOG_INFO("Registering Custom Renderer for Mining Explosives."); RenderingRegistry.registerEntityRenderingHandler(EntityPrimedMiningExplosive.class, new RenderMiningExplosivesPrimed()); + RenderingRegistry.registerEntityRenderingHandler(EntitySickBlaze.class, new RenderSickBlaze()); + RenderingRegistry.registerEntityRenderingHandler(EntityStaballoyConstruct.class, new RenderIronGolem()); + RenderingRegistry.registerEntityRenderingHandler(EntityToxinballSmall.class, new RenderToxinball(1F)); //ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBloodSteelChest.class, new BloodSteelChestRenderer()); //MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(ModBlocks.tutChest), new ItemRenderBloodSteelChest()); diff --git a/src/Java/gtPlusPlus/core/world/darkworld/biome/Biome_DarkWorld.java b/src/Java/gtPlusPlus/core/world/darkworld/biome/Biome_DarkWorld.java index ed8b3f38b7..e13ce29872 100644 --- a/src/Java/gtPlusPlus/core/world/darkworld/biome/Biome_DarkWorld.java +++ b/src/Java/gtPlusPlus/core/world/darkworld/biome/Biome_DarkWorld.java @@ -6,10 +6,13 @@ import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLServerStartingEvent; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import gtPlusPlus.core.entity.monster.EntitySickBlaze; +import gtPlusPlus.core.entity.monster.EntityStaballoyConstruct; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.world.darkworld.Dimension_DarkWorld; -import net.minecraft.entity.monster.*; +import net.minecraft.entity.monster.EntityGhast; +import net.minecraft.entity.monster.EntityGiantZombie; import net.minecraft.entity.passive.*; import net.minecraft.item.ItemStack; import net.minecraft.world.World; @@ -77,7 +80,12 @@ public class Biome_DarkWorld { //Enemies this.spawnableMonsterList.add(new SpawnListEntry(EntityGhast.class, 5, 1, 5)); this.spawnableMonsterList.add(new SpawnListEntry(EntityGiantZombie.class, 20, 1, 1)); - addToMonsterSpawnLists(EntityBlaze.class, 5, 1, 5); + + + addToMonsterSpawnLists(EntitySickBlaze.class, 5, 1, 5); + addToMonsterSpawnLists(EntityStaballoyConstruct.class, 5, 1, 5); + + /**addToMonsterSpawnLists(EntityBlaze.class, 5, 1, 5); addToMonsterSpawnLists(EntityCaveSpider.class, 5, 1, 5); addToMonsterSpawnLists(EntityCreeper.class, 4, 1, 2); addToMonsterSpawnLists(EntityEnderman.class, 5, 1, 5); @@ -85,7 +93,7 @@ public class Biome_DarkWorld { addToMonsterSpawnLists(EntityPigZombie.class, 5, 1, 5); addToMonsterSpawnLists(EntitySkeleton.class, 5, 1, 5); addToMonsterSpawnLists(EntitySpider.class, 5, 1, 5); - addToMonsterSpawnLists(EntityZombie.class, 5, 1, 5); + addToMonsterSpawnLists(EntityZombie.class, 5, 1, 5);**/ //Passive this.spawnableCreatureList.add(new SpawnListEntry(EntityCow.class, 5, 5, 10)); @@ -116,7 +124,7 @@ public class Biome_DarkWorld { @SuppressWarnings("unchecked") private boolean addToMonsterSpawnLists(Class EntityClass, int a, int b, int c){ this.spawnableMonsterList.add(new SpawnListEntry(EntityClass, a, b, c)); - this.spawnableCaveCreatureList.add(new SpawnListEntry(EntityClass, a, b, c)); + //this.spawnableCaveCreatureList.add(new SpawnListEntry(EntityClass, a, b, c)); return true; } -- cgit