From 9fe42a23580a4d285d57536562f0c9e9c4f6c76d Mon Sep 17 00:00:00 2001 From: Waterpicker Date: Thu, 11 Aug 2016 01:26:24 -0500 Subject: [PATCH] Did the bulk of Rendering and a few other things. --- .../com/zixiken/dimdoors/CommonProxy.java | 4 +- .../zixiken/dimdoors/blocks/BaseDimDoor.java | 100 ++--- .../zixiken/dimdoors/blocks/BlockDimWall.java | 5 - .../dimdoors/client/ClientOnlyHooks.java | 24 +- .../dimdoors/client/ClosingRiftFX.java | 231 ++++------ .../zixiken/dimdoors/client/GoggleRiftFX.java | 187 +------- .../dimdoors/client/ModelMobObelisk.java | 45 +- .../dimdoors/client/PrivatePocketRender.java | 159 ------- .../dimdoors/client/RenderDimDoor.java | 400 ++++++++---------- .../dimdoors/client/RenderMobObelisk.java | 92 ++-- .../zixiken/dimdoors/client/RenderRift.java | 30 +- .../dimdoors/client/RenderTransTrapdoor.java | 214 +++++----- .../com/zixiken/dimdoors/client/RiftFX.java | 152 +++---- .../dimdoors/client/TESyncHandler.java | 15 +- .../commands/CommandCreatePocket.java | 8 +- .../zixiken/dimdoors/core/DDTeleporter.java | 350 ++++++--------- .../dimdoors/schematic/ChunkBlockSetter.java | 41 +- .../zixiken/dimdoors/ticking/MobMonolith.java | 156 +++---- .../dimdoors/world/CustomSkyProvider.java | 2 +- 19 files changed, 743 insertions(+), 1472 deletions(-) delete mode 100644 src/main/java/com/zixiken/dimdoors/client/PrivatePocketRender.java diff --git a/src/main/java/com/zixiken/dimdoors/CommonProxy.java b/src/main/java/com/zixiken/dimdoors/CommonProxy.java index 3e696665..1cfbbfa5 100644 --- a/src/main/java/com/zixiken/dimdoors/CommonProxy.java +++ b/src/main/java/com/zixiken/dimdoors/CommonProxy.java @@ -74,8 +74,8 @@ public class CommonProxy { IBlockState state = world.getBlockState(pos); TileEntityDimDoor dimTile = (TileEntityDimDoor) tile; dimTile.openOrClosed = door.isDoorOnRift(world, pos) && door.isUpperDoorBlock(state); - dimTile.orientation = state.getValue(BlockDoor.FACING).rotateY().getHorizontalIndex(); - if(state.getValue(BlockDoor.OPEN)) dimTile.orientation |= 4; + dimTile.orientation = state.getValue(BlockDoor.FACING).rotateY(); + //if(state.getValue(BlockDoor.OPEN)) dimTile.orientation |= 4; dimTile.lockStatus = door.getLockStatus(world, pos); } } diff --git a/src/main/java/com/zixiken/dimdoors/blocks/BaseDimDoor.java b/src/main/java/com/zixiken/dimdoors/blocks/BaseDimDoor.java index 22032673..b3540482 100644 --- a/src/main/java/com/zixiken/dimdoors/blocks/BaseDimDoor.java +++ b/src/main/java/com/zixiken/dimdoors/blocks/BaseDimDoor.java @@ -79,32 +79,24 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn return this; } - public boolean isDoorOnRift(World world, BlockPos pos) - { + public boolean isDoorOnRift(World world, BlockPos pos) { return this.getLink(world, pos) != null; } - public DimLink getLink(World world, BlockPos pos) - { + public DimLink getLink(World world, BlockPos pos) { DimLink link= PocketManager.getLink(pos, world.provider.getDimensionId()); - if(link!=null) - { + if(link!=null) { return link; } - if(isUpperDoorBlock(world.getBlockState(pos))) - { + if(isUpperDoorBlock(world.getBlockState(pos))) { link = PocketManager.getLink(pos.down(), world.provider.getDimensionId()); - if(link!=null) - { + if(link!=null) { return link; } - } - else - { + } else { link = PocketManager.getLink(pos.up(), world.provider.getDimensionId()); - if(link != null) - { + if(link != null) { return link; } } @@ -117,89 +109,56 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn } @Override - public void setBlockBoundsBasedOnState(IBlockAccess worldIn, BlockPos pos) - { + public void setBlockBoundsBasedOnState(IBlockAccess worldIn, BlockPos pos) { this.setDoorRotation(worldIn.getBlockState(pos)); } - private void setDoorRotation(IBlockState state) - { + private void setDoorRotation(IBlockState state) { float var2 = 0.1875F; setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 2.0F, 1.0F); int var3 = state.getValue(BlockDoor.FACING).rotateY().getHorizontalIndex(); boolean var4 = state.getValue(BlockDoor.OPEN); boolean var5 = state.getValue(BlockDoor.HINGE) == EnumHingePosition.LEFT; - if (var3 == 0) - { - if (var4) - { - if (!var5) - { + if (var3 == 0) { + if (var4) { + if (!var5) { setBlockBounds(0.001F, 0.0F, 0.0F, 1.0F, 1.0F, var2); - } - else - { + } else { setBlockBounds(0.001F, 0.0F, 1.0F - var2, 1.0F, 1.0F, 1.0F); } - } - else - { + } else { setBlockBounds(0.0F, 0.0F, 0.0F, var2, 1.0F, 1.0F); } - } - else if (var3 == 1) - { - if (var4) - { - if (!var5) - { + } else if (var3 == 1) { + if (var4) { + if (!var5) { setBlockBounds(1.0F - var2, 0.0F, 0.001F, 1.0F, 1.0F, 1.0F); - } - else - { + } else { setBlockBounds(0.0F, 0.0F, 0.001F, var2, 1.0F, 1.0F); } - } - else - { + } else { setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, var2); } - } - else if (var3 == 2) - { - if (var4) - { - if (!var5) - { + } else if (var3 == 2) { + if (var4) { + if (!var5) { setBlockBounds(0.0F, 0.0F, 1.0F - var2, .99F, 1.0F, 1.0F); - } - else - { + } else { setBlockBounds(0.0F, 0.0F, 0.0F, .99F, 1.0F, var2); } - } - else - { + } else { setBlockBounds(1.0F - var2, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } - } - else if (var3 == 3) - { - if (var4) - { - if (!var5) - { + } else if (var3 == 3) { + if (var4) { + if (!var5) { setBlockBounds(0.0F, 0.0F, 0.0F, var2, 1.0F, 0.99F); - } - else - { + } else { setBlockBounds(1.0F - var2, 0.0F, 0.0F, 1.0F, 1.0F, 0.99F); } - } - else - { + } else { setBlockBounds(0.0F, 0.0F, 1.0F - var2, 1.0F, 1.0F, 1.0F); } } @@ -212,7 +171,6 @@ public abstract class BaseDimDoor extends BlockDoor implements IDimDoor, ITileEn */ @Override public void onNeighborBlockChange(World world, BlockPos pos, IBlockState state, Block neighbor) { - if (isUpperDoorBlock(state)) { if (world.getBlockState(pos.down()) != this) world.setBlockToAir(pos); diff --git a/src/main/java/com/zixiken/dimdoors/blocks/BlockDimWall.java b/src/main/java/com/zixiken/dimdoors/blocks/BlockDimWall.java index 64ae474a..68e57582 100644 --- a/src/main/java/com/zixiken/dimdoors/blocks/BlockDimWall.java +++ b/src/main/java/com/zixiken/dimdoors/blocks/BlockDimWall.java @@ -20,7 +20,6 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.Explosion; import net.minecraft.world.World; -import com.zixiken.dimdoors.client.PrivatePocketRender; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -65,10 +64,6 @@ public class BlockDimWall extends Block { else return SUPER_EXPLOSION_RESISTANCE; } - public int getRenderType() { - return PrivatePocketRender.renderID; - } - @Override public int damageDropped(IBlockState state) { int metadata = state.getValue(TYPE); diff --git a/src/main/java/com/zixiken/dimdoors/client/ClientOnlyHooks.java b/src/main/java/com/zixiken/dimdoors/client/ClientOnlyHooks.java index 0f8e2d92..094e8ef6 100644 --- a/src/main/java/com/zixiken/dimdoors/client/ClientOnlyHooks.java +++ b/src/main/java/com/zixiken/dimdoors/client/ClientOnlyHooks.java @@ -2,17 +2,17 @@ package com.zixiken.dimdoors.client; import com.zixiken.dimdoors.DimDoors; import com.zixiken.dimdoors.config.DDProperties; -import cpw.mods.fml.client.FMLClientHandler; -import cpw.mods.fml.common.eventhandler.Event; -import cpw.mods.fml.common.eventhandler.SubscribeEvent; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.ISound; import net.minecraft.client.audio.PositionedSoundRecord; import net.minecraft.util.ResourceLocation; -import net.minecraftforge.client.event.sound.PlaySoundEvent17; +import net.minecraftforge.client.event.sound.PlaySoundEvent; import net.minecraftforge.event.world.WorldEvent; +import net.minecraftforge.fml.client.FMLClientHandler; +import net.minecraftforge.fml.common.eventhandler.Event; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; public class ClientOnlyHooks { private DDProperties properties; @@ -21,18 +21,18 @@ public class ClientOnlyHooks { public ClientOnlyHooks(DDProperties properties) { this.properties = properties; - this.limboMusic = PositionedSoundRecord.func_147673_a(new ResourceLocation(DimDoors.modid + ":creepy")); + this.limboMusic = PositionedSoundRecord.create(new ResourceLocation(DimDoors.MODID + ":creepy")); } @SideOnly(Side.CLIENT) @SubscribeEvent - public void onSoundEffectResult(PlaySoundEvent17 event) + public void onSoundEffectResult(PlaySoundEvent event) { - ResourceLocation playingSound = event.sound.getPositionedSoundLocation(); + ResourceLocation playingSound = event.sound.getSoundLocation(); if (playingSound != null && playingSound.getResourceDomain().equals("minecraft") && (playingSound.getResourcePath().equals("music.game") || playingSound.getResourcePath().equals("music.game.creative"))) { - if (FMLClientHandler.instance().getClient().thePlayer.worldObj.provider.dimensionId == DimDoors.properties.LimboDimensionID) { - ResourceLocation sound = new ResourceLocation(DimDoors.modid + ":creepy"); + if (FMLClientHandler.instance().getClient().thePlayer.worldObj.provider.getDimensionId() == DimDoors.properties.LimboDimensionID) { + ResourceLocation sound = new ResourceLocation(DimDoors.MODID + ":creepy"); if (!Minecraft.getMinecraft().getSoundHandler().isSoundPlaying(limboMusic)) { event.result = limboMusic; @@ -45,7 +45,7 @@ public class ClientOnlyHooks { @SubscribeEvent public void onWorldLoad(WorldEvent.Load event) { - if (event.world.provider.dimensionId == DimDoors.properties.LimboDimensionID && + if (event.world.provider.getDimensionId() == DimDoors.properties.LimboDimensionID && event.world.isRemote && !Minecraft.getMinecraft().getSoundHandler().isSoundPlaying(limboMusic)) { Minecraft.getMinecraft().getSoundHandler().playSound(limboMusic); } diff --git a/src/main/java/com/zixiken/dimdoors/client/ClosingRiftFX.java b/src/main/java/com/zixiken/dimdoors/client/ClosingRiftFX.java index 52f238bf..569aa2f1 100644 --- a/src/main/java/com/zixiken/dimdoors/client/ClosingRiftFX.java +++ b/src/main/java/com/zixiken/dimdoors/client/ClosingRiftFX.java @@ -4,68 +4,42 @@ import com.zixiken.dimdoors.core.PocketManager; import net.minecraft.client.particle.EffectRenderer; import net.minecraft.client.particle.EntityFX; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.WorldRenderer; +import net.minecraft.entity.Entity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) public class ClosingRiftFX extends EntityFX { - private int field_92049_a = 160; - private boolean field_92054_ax; - private boolean field_92048_ay; - private final EffectRenderer field_92047_az; - private float field_92050_aA; - private float field_92051_aB; - private float field_92052_aC; - private boolean field_92053_aD; + private int baseTextureIndex = 160; + private boolean trail; + private boolean twinkle; + private EffectRenderer effectRenderer; + private float fadeColourRed; + private float fadeColourGreen; + private float fadeColourBlue; + private boolean hasFadeColour; - public ClosingRiftFX(World par1World, double par2, double par4, double par6, double par8, double par10, double par12, EffectRenderer par14EffectRenderer) - { + public ClosingRiftFX(World world, double x, double y, double z, double motionX, double motionY, double motionZ, EffectRenderer effectRenderer) { - super(par1World, par2, par4, par6); - this.motionX = par8; - this.motionY = par10; - this.motionZ = par12; - this.field_92047_az = par14EffectRenderer; + super(world, x, y, z); + this.motionX = motionX; + this.motionY = motionY; + this.motionZ = motionZ; + this.effectRenderer = effectRenderer; this.particleScale *= .55F; this.particleMaxAge = 30 + this.rand.nextInt(16); this.noClip = true; } - public void func_92045_e(boolean par1) - { - this.field_92054_ax = par1; - } - - public void func_92043_f(boolean par1) - { - this.field_92048_ay = par1; - } - - public void func_92044_a(int par1) - { - float var2 = ((par1 & 16711680) >> 16) / 255.0F; - float var3 = ((par1 & 65280) >> 8) / 255.0F; - float var4 = ((par1 & 255) >> 0) / 255.0F; - float var5 = 1.0F; - this.setRBGColorF(var2 * var5, var3 * var5, var4 * var5); - } - - public void func_92046_g(int par1) - { - this.field_92050_aA = ((par1 & 16711680) >> 16) / 255.0F; - this.field_92051_aB = ((par1 & 65280) >> 8) / 255.0F; - this.field_92052_aC = ((par1 & 255) >> 0) / 255.0F; - this.field_92053_aD = true; - } - /** * returns the bounding box for this entity */ @Override - public AxisAlignedBB getBoundingBox() + public AxisAlignedBB getCollisionBoundingBox() { return null; } @@ -74,116 +48,97 @@ public class ClosingRiftFX extends EntityFX * Returns true if this entity should push and be pushed by other entities when colliding. */ @Override - public boolean canBePushed() - { + public boolean canBePushed() { return false; } @Override - public void renderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) - { - if (!this.field_92048_ay || this.particleAge < this.particleMaxAge / 3 || (this.particleAge + this.particleMaxAge) / 3 % 2 == 0) - { - this.doRenderParticle(par1Tessellator, par2, par3, par4, par5, par6, par7); - } + public void renderParticle(WorldRenderer worldRenderer, Entity entityIn, float partialTicks, float p_180434_4_, float p_180434_5_, float p_180434_6_, float p_180434_7_, float p_180434_8_) { + if (!this.twinkle || this.particleAge < this.particleMaxAge / 3 || (this.particleAge + this.particleMaxAge) / 3 % 2 == 0) { + this.doRenderParticle(worldRenderer, partialTicks, p_180434_4_, p_180434_5_, p_180434_6_, p_180434_7_, p_180434_8_); + } } - public void doRenderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) - { - float var8 = super.particleTextureIndexX % 16 / 16.0F; - float var9 = var8 + 0.0624375F; - float var10 = this.particleTextureIndexX / 16 / 16.0F; - float var11 = var10 + 0.0624375F; - float var12 = 0.1F * this.particleScale; - float var13 = (float)(this.prevPosX + (this.posX - this.prevPosX) * par2 - interpPosX); - float var14 = (float)(this.prevPosY + (this.posY - this.prevPosY) * par2 - interpPosY); - float var15 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * par2 - interpPosZ); - float var16 = 0.8F; + public void doRenderParticle(WorldRenderer worldRenderer, float par2, float par3, float par4, float par5, float par6, float par7) { + float var8 = super.particleTextureIndexX % 16 / 16.0F; + float var9 = var8 + 0.0624375F; + float var10 = this.particleTextureIndexX / 16 / 16.0F; + float var11 = var10 + 0.0624375F; + float var12 = 0.1F * this.particleScale; + float var13 = (float)(this.prevPosX + (this.posX - this.prevPosX) * par2 - interpPosX); + float var14 = (float)(this.prevPosY + (this.posY - this.prevPosY) * par2 - interpPosY); + float var15 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * par2 - interpPosZ); + float var16 = 0.8F; - if (PocketManager.createDimensionData(worldObj).isPocketDimension()) - { - var16 = 0.4F; - } - - par1Tessellator.setColorRGBA_F(this.particleRed * var16, this.particleGreen * var16, this.particleBlue * var16, (float) .7); + if (PocketManager.createDimensionData(worldObj).isPocketDimension()) { + var16 = 0.4F; + } - par1Tessellator.addVertexWithUV(var13 - par3 * var12 - par6 * var12, var14 - par4 * var12, var15 - par5 * var12 - par7 * var12, var9, var11); - par1Tessellator.addVertexWithUV(var13 - par3 * var12 + par6 * var12, var14 + par4 * var12, var15 - par5 * var12 + par7 * var12, var9, var10); - par1Tessellator.addVertexWithUV(var13 + par3 * var12 + par6 * var12, var14 + par4 * var12, var15 + par5 * var12 + par7 * var12, var8, var10); - par1Tessellator.addVertexWithUV(var13 + par3 * var12 - par6 * var12, var14 - par4 * var12, var15 + par5 * var12 - par7 * var12, var8, var11); - } + worldRenderer.pos(var13 - par3 * var12 - par6 * var12, var14 - par4 * var12, var15 - par5 * var12 - par7 * var12).tex(var9, var11).color(this.particleRed * var16, this.particleGreen * var16, this.particleBlue * var16, (float) .7).endVertex(); + worldRenderer.pos(var13 - par3 * var12 + par6 * var12, var14 + par4 * var12, var15 - par5 * var12 + par7 * var12).tex(var9, var10).color(this.particleRed * var16, this.particleGreen * var16, this.particleBlue * var16, (float) .7).endVertex(); + worldRenderer.pos(var13 + par3 * var12 + par6 * var12, var14 + par4 * var12, var15 + par5 * var12 + par7 * var12).tex(var8, var10).color(this.particleRed * var16, this.particleGreen * var16, this.particleBlue * var16, (float) .7).endVertex(); + worldRenderer.pos(var13 + par3 * var12 - par6 * var12, var14 - par4 * var12, var15 + par5 * var12 - par7 * var12).tex(var8, var11).color(this.particleRed * var16, this.particleGreen * var16, this.particleBlue * var16, (float) .7).endVertex(); + } - /** - * Called to update the entity's position/logic. - */ - @Override - public void onUpdate() - { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; + /** + * Called to update the entity's position/logic. + */ + @Override + public void onUpdate() { + this.prevPosX = this.posX; + this.prevPosY = this.posY; + this.prevPosZ = this.posZ; - if (this.particleAge++ >= this.particleMaxAge) - { - this.setDead(); - } + if (this.particleAge++ >= this.particleMaxAge) { + this.setDead(); + } if (this.particleAge > this.particleMaxAge / 2) { + this.setAlphaF(1.0F - ((float)this.particleAge - (float)(this.particleMaxAge / 2)) / this.particleMaxAge); - if (this.particleAge > this.particleMaxAge / 2) - { - this.setAlphaF(1.0F - ((float)this.particleAge - (float)(this.particleMaxAge / 2)) / this.particleMaxAge); + if (this.hasFadeColour) { + this.particleRed += (this.fadeColourRed - this.particleRed) * 0.2F; + this.particleGreen += (this.fadeColourGreen - this.particleGreen) * 0.2F; + this.particleBlue += (this.fadeColourBlue - this.particleBlue) * 0.2F; + } + } - if (this.field_92053_aD) - { - this.particleRed += (this.field_92050_aA - this.particleRed) * 0.2F; - this.particleGreen += (this.field_92051_aB - this.particleGreen) * 0.2F; - this.particleBlue += (this.field_92052_aC - this.particleBlue) * 0.2F; - } - } + this.setParticleTextureIndex(this.baseTextureIndex + (7 - this.particleAge * 8 / this.particleMaxAge)); + // this.motionY -= 0.004D; + this.moveEntity(this.motionX, this.motionY, this.motionZ); + this.motionX *= 0.9100000262260437D; + this.motionY *= 0.9100000262260437D; + this.motionZ *= 0.9100000262260437D; - this.setParticleTextureIndex(this.field_92049_a + (7 - this.particleAge * 8 / this.particleMaxAge)); - // this.motionY -= 0.004D; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= 0.9100000262260437D; - this.motionY *= 0.9100000262260437D; - this.motionZ *= 0.9100000262260437D; + if (this.onGround) { + this.motionX *= 0.699999988079071D; + this.motionZ *= 0.699999988079071D;} - if (this.onGround) - { - this.motionX *= 0.699999988079071D; - this.motionZ *= 0.699999988079071D; - } + if (this.trail && this.particleAge < this.particleMaxAge / 2 && (this.particleAge + this.particleMaxAge) % 2 == 0) { + ClosingRiftFX var1 = new ClosingRiftFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D, this.effectRenderer); + var1.setRBGColorF(this.particleRed, this.particleGreen, this.particleBlue); + var1.particleAge = var1.particleMaxAge / 2; - if (this.field_92054_ax && this.particleAge < this.particleMaxAge / 2 && (this.particleAge + this.particleMaxAge) % 2 == 0) - { - ClosingRiftFX var1 = new ClosingRiftFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D, this.field_92047_az); - var1.setRBGColorF(this.particleRed, this.particleGreen, this.particleBlue); - var1.particleAge = var1.particleMaxAge / 2; + if (this.hasFadeColour) { + var1.hasFadeColour = true; + var1.fadeColourRed = this.fadeColourRed; + var1.fadeColourGreen = this.fadeColourGreen; + var1.fadeColourBlue = this.fadeColourBlue; + } - if (this.field_92053_aD) - { - var1.field_92053_aD = true; - var1.field_92050_aA = this.field_92050_aA; - var1.field_92051_aB = this.field_92051_aB; - var1.field_92052_aC = this.field_92052_aC; - } + var1.twinkle = this.twinkle; + this.effectRenderer.addEffect(var1); + } + } - var1.field_92048_ay = this.field_92048_ay; - this.field_92047_az.addEffect(var1); - } - } - - @Override - public int getBrightnessForRender(float par1) - { + @Override + public int getBrightnessForRender(float par1) { return 15728880; - } + } - /** - * Gets how bright this entity is. - */ - @Override - public float getBrightness(float par1) - { - return 1.0F; - } + /** + * Gets how bright this entity is. + */ + @Override + public float getBrightness(float par1) { + return 1.0F; + } } \ No newline at end of file diff --git a/src/main/java/com/zixiken/dimdoors/client/GoggleRiftFX.java b/src/main/java/com/zixiken/dimdoors/client/GoggleRiftFX.java index 0fcf4cf2..781b83d6 100644 --- a/src/main/java/com/zixiken/dimdoors/client/GoggleRiftFX.java +++ b/src/main/java/com/zixiken/dimdoors/client/GoggleRiftFX.java @@ -4,196 +4,17 @@ import com.zixiken.dimdoors.core.PocketManager; import net.minecraft.client.particle.EffectRenderer; import net.minecraft.client.particle.EntityFirework; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.WorldRenderer; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) -public class GoggleRiftFX extends EntityFirework.SparkFX -{ - private int field_92049_a = 160; - private boolean field_92054_ax; - private boolean field_92048_ay; - private final EffectRenderer field_92047_az; - private float field_92050_aA; - private float field_92051_aB; - private float field_92052_aC; - private boolean field_92053_aD; - - public GoggleRiftFX(World par1World, double par2, double par4, double par6, double par8, double par10, double par12, EffectRenderer par14EffectRenderer) - { - +public class GoggleRiftFX extends EntityFirework.SparkFX { + public GoggleRiftFX(World par1World, double par2, double par4, double par6, double par8, double par10, double par12, EffectRenderer par14EffectRenderer) { super(par1World, par2, par4, par6, par12, par12, par12, par14EffectRenderer); - this.motionX = par8; - this.motionY = par10; - this.motionZ = par12; - this.field_92047_az = par14EffectRenderer; - this.particleScale *= 0.75F; this.particleMaxAge = 40 + this.rand.nextInt(26); this.noClip = true; } - - public void func_92045_e(boolean par1) - { - this.field_92054_ax = par1; - } - - public void func_92043_f(boolean par1) - { - this.field_92048_ay = par1; - } - - public void func_92044_a(int par1) - { - float var2 = ((par1 & 16711680) >> 16) / 255.0F; - float var3 = ((par1 & 65280) >> 8) / 255.0F; - float var4 = ((par1 & 255) >> 0) / 255.0F; - float var5 = 1.0F; - this.setRBGColorF(var2 * var5, var3 * var5, var4 * var5); - } - - public void func_92046_g(int par1) - { - this.field_92050_aA = ((par1 & 16711680) >> 16) / 255.0F; - this.field_92051_aB = ((par1 & 65280) >> 8) / 255.0F; - this.field_92052_aC = ((par1 & 255) >> 0) / 255.0F; - this.field_92053_aD = true; - } - - /** - * returns the bounding box for this entity - */ - @Override - public AxisAlignedBB getBoundingBox() - { - return null; - } - - /** - * Returns true if this entity should push and be pushed by other entities when colliding. - */ - @Override - public boolean canBePushed() - { - return false; - } - - @Override - public void renderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) - { - if (!this.field_92048_ay || this.particleAge < this.particleMaxAge / 3 || (this.particleAge + this.particleMaxAge) / 3 % 2 == 0) - { - - - this.doRenderParticle(par1Tessellator, par2, par3, par4, par5, par6, par7); - } - } - - public void doRenderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) - { - float f6 = this.particleTextureIndexX / 16.0F; - float f7 = f6 + 0.0624375F; - float f8 = this.particleTextureIndexY / 16.0F; - float f9 = f8 + 0.0624375F; - float f10 = 0.1F * this.particleScale; - - if (this.particleIcon != null) - { - f6 = this.particleIcon.getMinU(); - f7 = this.particleIcon.getMaxU(); - f8 = this.particleIcon.getMinV(); - f9 = this.particleIcon.getMaxV(); - } - - float f11 = (float)(this.prevPosX + (this.posX - this.prevPosX) * par2 - interpPosX); - float f12 = (float)(this.prevPosY + (this.posY - this.prevPosY) * par2 - interpPosY); - float f13 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * par2 - interpPosZ); - float f14 = 0F; - - if (PocketManager.createDimensionData(worldObj).isPocketDimension()) - { - f14 = 0.7F; - } - - par1Tessellator.setColorRGBA_F(this.particleRed * f14, this.particleGreen * f14, this.particleBlue * f14, (float) .7); - par1Tessellator.addVertexWithUV(f11 - par3 * f10 - par6 * f10, f12 - par4 * f10, f13 - par5 * f10 - par7 * f10, f7, f9); - par1Tessellator.addVertexWithUV(f11 - par3 * f10 + par6 * f10, f12 + par4 * f10, f13 - par5 * f10 + par7 * f10, f7, f8); - par1Tessellator.addVertexWithUV(f11 + par3 * f10 + par6 * f10, f12 + par4 * f10, f13 + par5 * f10 + par7 * f10, f6, f8); - par1Tessellator.addVertexWithUV(f11 + par3 * f10 - par6 * f10, f12 - par4 * f10, f13 + par5 * f10 - par7 * f10, f6, f9); - } - - /** - * Called to update the entity's position/logic. - */ - @Override - public void onUpdate() - { - this.prevPosX = this.posX; - this.prevPosY = this.posY; - this.prevPosZ = this.posZ; - - if (this.particleAge++ >= this.particleMaxAge) - { - this.setDead(); - } - - if (this.particleAge > this.particleMaxAge / 2) - { - this.setAlphaF(1.0F - ((float)this.particleAge - (float)(this.particleMaxAge / 2)) / this.particleMaxAge); - - if (this.field_92053_aD) - { - this.particleRed += (this.field_92050_aA - this.particleRed) * 0.2F; - this.particleGreen += (this.field_92051_aB - this.particleGreen) * 0.2F; - this.particleBlue += (this.field_92052_aC - this.particleBlue) * 0.2F; - } - } - - this.setParticleTextureIndex(this.field_92049_a + (7 - this.particleAge * 8 / this.particleMaxAge)); - // this.motionY -= 0.004D; - this.moveEntity(this.motionX, this.motionY, this.motionZ); - this.motionX *= 0.9100000262260437D; - this.motionY *= 0.9100000262260437D; - this.motionZ *= 0.9100000262260437D; - - if (this.onGround) - { - this.motionX *= 0.699999988079071D; - this.motionZ *= 0.699999988079071D; - } - - if (this.field_92054_ax && this.particleAge < this.particleMaxAge / 2 && (this.particleAge + this.particleMaxAge) % 2 == 0) - { - GoggleRiftFX var1 = new GoggleRiftFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D, this.field_92047_az); - var1.setRBGColorF(this.particleRed, this.particleGreen, this.particleBlue); - var1.particleAge = var1.particleMaxAge / 2; - - if (this.field_92053_aD) - { - var1.field_92053_aD = true; - var1.field_92050_aA = this.field_92050_aA; - var1.field_92051_aB = this.field_92051_aB; - var1.field_92052_aC = this.field_92052_aC; - } - - var1.field_92048_ay = this.field_92048_ay; - this.field_92047_az.addEffect(var1); - } - } - - @Override - public int getBrightnessForRender(float par1) - { - return 15728880; - } - - /** - * Gets how bright this entity is. - */ - @Override - public float getBrightness(float par1) - { - return 1.0F; - } -} +} \ No newline at end of file diff --git a/src/main/java/com/zixiken/dimdoors/client/ModelMobObelisk.java b/src/main/java/com/zixiken/dimdoors/client/ModelMobObelisk.java index a5e89612..bd137e13 100644 --- a/src/main/java/com/zixiken/dimdoors/client/ModelMobObelisk.java +++ b/src/main/java/com/zixiken/dimdoors/client/ModelMobObelisk.java @@ -4,51 +4,34 @@ // Keep in mind that you still need to fill in some blanks // - ZeuX - - - - - package com.zixiken.dimdoors.client; - - import java.util.Random; import com.zixiken.dimdoors.ticking.MobMonolith; +import net.minecraft.client.renderer.GlStateManager; import org.lwjgl.opengl.GL11; import net.minecraft.client.model.ModelBase; import net.minecraft.client.model.ModelRenderer; import net.minecraft.entity.Entity; -public class ModelMobObelisk extends ModelBase -{ - //fields +public class ModelMobObelisk extends ModelBase { + //fields ModelRenderer wholemonolith; Random rand = new Random(); - + + public ModelMobObelisk() { + textureWidth = 256; + textureHeight = 256; + wholemonolith = new ModelRenderer(this, 0, 0); + wholemonolith.addBox(-48/2F,-108F/1.3F, -12/2F, 48, 108, 12); + } - public ModelMobObelisk() - { - textureWidth = 256; - textureHeight = 256; - - - - wholemonolith = new ModelRenderer(this, 0, 0); - wholemonolith.addBox(-48/2F,-108F/1.3F, -12/2F, 48, 108, 12); - - - } - - @Override - public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7) - { + @Override + public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7) { this.setRotationAngles(0, 0, 0, 0, 0,0, par1Entity); - - - GL11.glScalef(((MobMonolith) par1Entity).getRenderSizeModifier(), ((MobMonolith) par1Entity).getRenderSizeModifier(), ((MobMonolith) par1Entity).getRenderSizeModifier()); + GlStateManager.scale(((MobMonolith) par1Entity).getRenderSizeModifier(), ((MobMonolith) par1Entity).getRenderSizeModifier(), ((MobMonolith) par1Entity).getRenderSizeModifier()); wholemonolith.render(par7); - } + } } diff --git a/src/main/java/com/zixiken/dimdoors/client/PrivatePocketRender.java b/src/main/java/com/zixiken/dimdoors/client/PrivatePocketRender.java deleted file mode 100644 index 040e6af9..00000000 --- a/src/main/java/com/zixiken/dimdoors/client/PrivatePocketRender.java +++ /dev/null @@ -1,159 +0,0 @@ -package com.zixiken.dimdoors.client; - -import net.minecraft.util.IIcon; -import org.lwjgl.opengl.GL11; -import net.minecraft.block.Block; -import net.minecraft.client.renderer.RenderBlocks; -import net.minecraft.client.renderer.Tessellator; -import net.minecraft.world.IBlockAccess; -import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; - -public class PrivatePocketRender implements ISimpleBlockRenderingHandler -{ - public static int renderID; - - public PrivatePocketRender(int renderID) - { - PrivatePocketRender.renderID = renderID; - } - - @Override - public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) - { - Tessellator tessellator = Tessellator.instance; - - float f2; - float f3; - int k; - block.setBlockBoundsForItemRender(); - renderer.setRenderBoundsFromBlock(block); - GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F); - GL11.glTranslatef(-0.5F, -0.5F, -0.5F); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, -1.0F, 0.0F); - renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); - tessellator.draw(); - - if (renderer.useInventoryTint) - { - k = block.getRenderColor(metadata); - f2 = (float)(k >> 16 & 255) / 255.0F; - f3 = (float)(k >> 8 & 255) / 255.0F; - float f7 = (float)(k & 255) / 255.0F; - //GL11.glColor4f(f2 * par3, f3 * par3, f7 * par3, 1.0F); - } - - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 1.0F, 0.0F); - renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)); - tessellator.draw(); - - if (renderer.useInventoryTint) - { - // GL11.glColor4f(par3, par3, par3, 1.0F); - } - - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 0.0F, -1.0F); - renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(0.0F, 0.0F, 1.0F); - renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(-1.0F, 0.0F, 0.0F); - renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)); - tessellator.draw(); - tessellator.startDrawingQuads(); - tessellator.setNormal(1.0F, 0.0F, 0.0F); - renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); - tessellator.draw(); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); } - - @Override - public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) - { - - Tessellator tessellator = Tessellator.instance; - boolean flag = false; - - IIcon icon = renderer.getBlockIcon(block, world, x, y, z, 2); - - - - tessellator.setColorOpaque_F(1F, 1F, 1F); - - if (renderer.renderAllFaces || block.shouldSideBeRendered(world, x, y - 1, z, 0)) - { - renderer.renderFaceYNeg(block, (double)x, (double)y, (double)z, icon); - flag = true; - } - tessellator.setColorOpaque_F(1F, 1F, 1F); - - if (renderer.renderAllFaces || block.shouldSideBeRendered(world, x, y + 1, z, 1)) - { - renderer.renderFaceYPos(block, (double)x, (double)y, (double)z, icon); - flag = true; - } - - - tessellator.setColorOpaque_F(1F, 1F, 1F); - - if (renderer.renderAllFaces || block.shouldSideBeRendered(world, x, y, z - 1, 2)) - { - renderer.renderFaceZNeg(block, (double)x, (double)y, (double)z, icon); - - - flag = true; - } - tessellator.setColorOpaque_F(1F, 1F, 1F); - - if (renderer.renderAllFaces || block.shouldSideBeRendered(world, x, y, z + 1, 3)) - { - renderer.renderFaceZPos(block, (double)x, (double)y, (double)z, icon); - - - - flag = true; - } - tessellator.setColorOpaque_F(1F, 1F, 1F); - - if (renderer.renderAllFaces || block.shouldSideBeRendered(world, x - 1, y, z, 4)) - { - renderer.renderFaceXNeg(block, (double)x, (double)y, (double)z, icon); - - - - flag = true; - } - tessellator.setColorOpaque_F(1F, 1F, 1F); - - if (renderer.renderAllFaces || block.shouldSideBeRendered(world, x + 1, y, z, 5)) - { - renderer.renderFaceXPos(block, (double)x, (double)y, (double)z, icon); - - - - flag = true; - } - - return flag; - } - - - @Override - public boolean shouldRender3DInInventory(int data) - { - // TODO Auto-generated method stub - return true; - } - - @Override - public int getRenderId() - { - // TODO Auto-generated method stub - return renderID; - } - -} diff --git a/src/main/java/com/zixiken/dimdoors/client/RenderDimDoor.java b/src/main/java/com/zixiken/dimdoors/client/RenderDimDoor.java index b6337a58..87ba542c 100644 --- a/src/main/java/com/zixiken/dimdoors/client/RenderDimDoor.java +++ b/src/main/java/com/zixiken/dimdoors/client/RenderDimDoor.java @@ -9,31 +9,29 @@ import java.util.Random; import com.zixiken.dimdoors.config.DDProperties; import com.zixiken.dimdoors.DimDoors; import com.zixiken.dimdoors.tileentities.TileEntityDimDoor; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.util.EnumFacing; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import org.lwjgl.opengl.GL11; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.ActiveRenderInfo; -import net.minecraft.client.renderer.GLAllocation; -import net.minecraft.client.renderer.Tessellator; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; -import net.minecraft.util.Direction; import net.minecraft.util.ResourceLocation; import static org.lwjgl.opengl.GL11.*; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - @SideOnly(Side.CLIENT) public class RenderDimDoor extends TileEntitySpecialRenderer { private FloatBuffer buffer = GLAllocation.createDirectFloatBuffer(16); - private ResourceLocation warpPath= new ResourceLocation(DimDoors.modid + ":textures/other/WARP.png"); - private ResourceLocation keyPath= new ResourceLocation(DimDoors.modid + ":textures/other/keyhole.png"); - private ResourceLocation KeyholeLight= new ResourceLocation(DimDoors.modid + ":textures/other/keyholeLight.png"); - private ResourceLocation keyOutline= new ResourceLocation(DimDoors.modid + ":textures/other/keyOutline.png"); - private ResourceLocation keyOutlineLight= new ResourceLocation(DimDoors.modid + ":textures/other/keyOutlineLight.png"); + private ResourceLocation warpPath= new ResourceLocation(DimDoors.MODID + ":textures/other/WARP.png"); + private ResourceLocation keyPath= new ResourceLocation(DimDoors.MODID + ":textures/other/keyhole.png"); + private ResourceLocation KeyholeLight= new ResourceLocation(DimDoors.MODID + ":textures/other/keyholeLight.png"); + private ResourceLocation keyOutline= new ResourceLocation(DimDoors.MODID + ":textures/other/keyOutline.png"); + private ResourceLocation keyOutlineLight= new ResourceLocation(DimDoors.MODID + ":textures/other/keyOutlineLight.png"); private static final int NETHER_DIMENSION_ID = -1; @@ -47,162 +45,122 @@ public class RenderDimDoor extends TileEntitySpecialRenderer /** * Renders the dimdoor. */ - public void renderDimDoorTileEntity(TileEntityDimDoor tile, double x, - double y, double z) - { - + public void renderDimDoorTileEntity(TileEntityDimDoor tile, double x, double y, double z) { GL11.glDisable(GL11.GL_LIGHTING); Random rand = new Random(31100L); float var13 = 0.75F; - for (int count = 0; count < 16; ++count) - { - - - GL11.glPushMatrix(); + for (int count = 0; count < 16; ++count) { + GlStateManager.pushMatrix(); + float var15 = 16 - count; float var16 = 0.2625F; float var17 = 1.0F / (var15 + .80F); - if (count == 0) - { - this.bindTexture(warpPath); - // move files into assets/modid and change to new ResourceLocation(modid:/RIFT.png) + this.bindTexture(warpPath); + GlStateManager.enableBlend(); + + if (count == 0) { var17 = 0.1F; var15 = 25.0F; var16 = 0.125F; - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + + GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); } - if (count == 1) - { - this.bindTexture(warpPath); - // move files into assets/modid and change to new ResourceLocation(modid:/WARP.png) - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); + if (count == 1) { var16 = .5F; + + GlStateManager.blendFunc(GL11.GL_ONE, GL11.GL_ONE); } - - - GL11.glTranslatef( - Minecraft.getSystemTime() % 200000L / 200000.0F, - 0, 0.0F); - GL11.glTranslatef(0, - Minecraft.getSystemTime() % 200000L / 200000.0F, - 0.0F); - GL11.glTranslatef(0, 0, - Minecraft.getSystemTime() % 200000L / 200000.0F); + GlStateManager.translate(Minecraft.getSystemTime() % 200000L / 200000.0F, 0, 0.0F); + GlStateManager.translate(0, Minecraft.getSystemTime() % 200000L / 200000.0F, 0.0F); + GlStateManager.translate(0, 0, Minecraft.getSystemTime() % 200000L / 200000.0F); - GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE, - GL11.GL_OBJECT_LINEAR); - GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE, - GL11.GL_OBJECT_LINEAR); - GL11.glTexGeni(GL11.GL_R, GL11.GL_TEXTURE_GEN_MODE, - GL11.GL_OBJECT_LINEAR); - GL11.glTexGeni(GL11.GL_Q, GL11.GL_TEXTURE_GEN_MODE, - GL11.GL_OBJECT_LINEAR); - switch ((tile.orientation % 4) + 4) - { - case 4: - GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); - GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.15F)); - - break; - case 5: - - GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.15F)); - break; - case 6: - GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); - GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(1.0F, 0.0F, 0.0F, -0.15F)); - - break; - case 7: - GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glTexGen(GL11.GL_Q, GL11.GL_OBJECT_PLANE, - this.getFloatBuffer(0.0F, 0.0F, 1.0F, -0.15F)); - break; - - } - - GL11.glEnable(GL11.GL_TEXTURE_GEN_S); - GL11.glEnable(GL11.GL_TEXTURE_GEN_T); - GL11.glEnable(GL11.GL_TEXTURE_GEN_R); - GL11.glEnable(GL11.GL_TEXTURE_GEN_Q); - - - GL11.glPopMatrix(); - GL11.glMatrixMode(GL11.GL_TEXTURE); - GL11.glPushMatrix(); - GL11.glLoadIdentity(); - GL11.glTranslatef(0.0F, - Minecraft.getSystemTime() % 200000L / 200000.0F - * var15, 0.0F); - GL11.glScalef(var16, var16, var16); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - GL11.glRotatef((count * count * 4321 + count * 9) * 2.0F, - 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); + GlStateManager.texGen(GlStateManager.TexGen.S, GL11.GL_OBJECT_LINEAR); + GlStateManager.texGen(GlStateManager.TexGen.T, GL11.GL_OBJECT_LINEAR); + GlStateManager.texGen(GlStateManager.TexGen.R, GL11.GL_OBJECT_LINEAR); + GlStateManager.texGen(GlStateManager.TexGen.Q, GL11.GL_OBJECT_LINEAR); + + EnumFacing orientation = EnumFacing.getHorizontal((tile.orientation.getHorizontalIndex() % 4) + 4); + + switch (orientation) { + case SOUTH: + GlStateManager.texGen(GlStateManager.TexGen.S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); + GlStateManager.texGen(GlStateManager.TexGen.T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); + GlStateManager.texGen(GlStateManager.TexGen.R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); + GlStateManager.texGen(GlStateManager.TexGen.Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.15F)); + break; + case WEST: + GlStateManager.texGen(GlStateManager.TexGen.S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); + GlStateManager.texGen(GlStateManager.TexGen.T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); + GlStateManager.texGen(GlStateManager.TexGen.R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); + GlStateManager.texGen(GlStateManager.TexGen.Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.15F)); + break; + case NORTH: + GlStateManager.texGen(GlStateManager.TexGen.S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); + GlStateManager.texGen(GlStateManager.TexGen.T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); + GlStateManager.texGen(GlStateManager.TexGen.R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); + GlStateManager.texGen(GlStateManager.TexGen.Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, -0.15F)); + break; + case EAST: + GlStateManager.texGen(GlStateManager.TexGen.S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); + GlStateManager.texGen(GlStateManager.TexGen.T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); + GlStateManager.texGen(GlStateManager.TexGen.R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); + GlStateManager.texGen(GlStateManager.TexGen.Q, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, -0.15F)); + break; + } + + GlStateManager.enableTexGenCoord(GlStateManager.TexGen.S); + GlStateManager.enableTexGenCoord(GlStateManager.TexGen.T); + GlStateManager.enableTexGenCoord(GlStateManager.TexGen.R); + GlStateManager.enableTexGenCoord(GlStateManager.TexGen.Q); + + GlStateManager.popMatrix(); + + GlStateManager.matrixMode(GL11.GL_TEXTURE); + GlStateManager.pushMatrix(); + GlStateManager.loadIdentity(); + GlStateManager.translate(0.0F, Minecraft.getSystemTime() % 200000L / 200000.0F * var15, 0.0F); + GlStateManager.scale(var16, var16, var16); + GlStateManager.translate(0.5F, 0.5F, 0.5F); + GlStateManager.rotate((count * count * 4321 + count * 9) * 2.0F, 0.0F, 0.0F, 1.0F); + GlStateManager.translate(0.5F, 0.5F, 0.5F); + + Tessellator tessellator = Tessellator.getInstance(); + WorldRenderer worldRenderer = tessellator.getWorldRenderer(); + worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION); - GL11.glBegin(GL11.GL_QUADS); - float[] color = tile.getRenderColor(rand); - GL11.glColor4f(color[0] * var17, color[1] * var17, color[2] * var17, color[3]); + GlStateManager.color(color[0] * var17, color[1] * var17, color[2] * var17, color[3]); - switch (tile.orientation) - { - case 0: - - GL11.glVertex3d(x + .01F, y - 1, z); - GL11.glVertex3d(x + .01, y - 1, z + 1.0D); - GL11.glVertex3d(x + .01, y + 1, z + 1.0D); - GL11.glVertex3d(x + .01, y + 1, z); + switch (tile.orientation) { + case SOUTH: + worldRenderer.pos(x + .01F, y - 1, z).endVertex(); + worldRenderer.pos(x + .01, y - 1, z + 1.0D).endVertex(); + worldRenderer.pos(x + .01, y + 1, z + 1.0D).endVertex(); + worldRenderer.pos(x + .01, y + 1, z).endVertex(); break; - case 1: - GL11.glVertex3d(x, y + 1, z + .01); - GL11.glVertex3d(x + 1, y + 1, z + .01); - GL11.glVertex3d(x + 1, y -1, z + .01); - GL11.glVertex3d(x, y -1, z + .01); + case WEST: + worldRenderer.pos(x, y + 1, z + .01).endVertex(); + worldRenderer.pos(x + 1, y + 1, z + .01).endVertex(); + worldRenderer.pos(x + 1, y -1, z + .01).endVertex(); + worldRenderer.pos(x, y -1, z + .01).endVertex(); break; - case 2: - GL11.glVertex3d(x + .99, y + 1, z); - GL11.glVertex3d(x + .99, y + 1, z + 1.0D); - GL11.glVertex3d(x + .99, y - 1, z + 1.0D); - GL11.glVertex3d(x + .99, y - 1, z); + case NORTH: + worldRenderer.pos(x + .99, y + 1, z).endVertex(); + worldRenderer.pos(x + .99, y + 1, z + 1.0D).endVertex(); + worldRenderer.pos(x + .99, y - 1, z + 1.0D).endVertex(); + worldRenderer.pos(x + .99, y - 1, z).endVertex(); break; - case 3: - GL11.glVertex3d(x, y -1, z + .99); - GL11.glVertex3d(x + 1, y -1, z + .99); - GL11.glVertex3d(x + 1, y + 1, z + .99); - GL11.glVertex3d(x, y + 1, z + .99); + case EAST: + worldRenderer.pos(x, y -1, z + .99).endVertex(); + worldRenderer.pos(x + 1, y -1, z + .99).endVertex(); + worldRenderer.pos(x + 1, y + 1, z + .99).endVertex(); + worldRenderer.pos(x, y + 1, z + .99).endVertex(); break; - case 4: + /*case 4: GL11.glVertex3d(x + .15F, y - 1 , z); GL11.glVertex3d(x + .15, y - 1, z + 1.0D); GL11.glVertex3d(x + .15, y + 1, z + 1.0D); @@ -225,130 +183,112 @@ public class RenderDimDoor extends TileEntitySpecialRenderer GL11.glVertex3d(x + 1, y - 1, z + .85); GL11.glVertex3d(x + 1, y + 1, z + .85); GL11.glVertex3d(x, y + 1, z + .85); - break; + break;*/ } + tessellator.draw(); - GL11.glEnd(); - - GL11.glPopMatrix(); - GL11.glMatrixMode(GL11.GL_MODELVIEW); + GlStateManager.popMatrix(); + GlStateManager.matrixMode(GL11.GL_MODELVIEW); } - GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_TEXTURE_GEN_S); - GL11.glDisable(GL11.GL_TEXTURE_GEN_T); - GL11.glDisable(GL11.GL_TEXTURE_GEN_R); - GL11.glDisable(GL11.GL_TEXTURE_GEN_Q); - GL11.glEnable(GL11.GL_LIGHTING); + GlStateManager.disableBlend(); + GlStateManager.disableTexGenCoord(GlStateManager.TexGen.S); + GlStateManager.disableTexGenCoord(GlStateManager.TexGen.T); + GlStateManager.disableTexGenCoord(GlStateManager.TexGen.R); + GlStateManager.disableTexGenCoord(GlStateManager.TexGen.Q); + GlStateManager.enableLighting(); } - private FloatBuffer getFloatBuffer(float par1, float par2, float par3, float par4) - { + private FloatBuffer getFloatBuffer(float par1, float par2, float par3, float par4) { buffer.clear(); buffer.put(par1).put(par2).put(par3).put(par4); buffer.flip(); return buffer; } - private void renderKeyHole(TileEntityDimDoor tile, double x, - double y, double z, int i) - { - if(tile.orientation>3) - { - return; - } - int rotation = (tile.orientation+3)%4; + private void renderKeyHole(TileEntityDimDoor tile, double x, double y, double z, int i) { + EnumFacing rotation = EnumFacing.getHorizontal((tile.orientation.getHorizontalIndex()+3)%4); - GL11.glPushMatrix(); - GL11.glTranslated(x,y,z); + GlStateManager.pushMatrix(); + GlStateManager.translate(x,y,z); - x= ActiveRenderInfo.objectX; - y = ActiveRenderInfo.objectY; - z = ActiveRenderInfo.objectZ; + x = ActiveRenderInfo.getPosition().xCoord; + y = ActiveRenderInfo.getPosition().yCoord; + z = ActiveRenderInfo.getPosition().zCoord; - GL11.glRotatef(180.0F - 90*rotation, 0.0F, 1.0F, 0.0F); + GlStateManager.rotate(180.0F - 90*rotation.getHorizontalIndex(), 0.0F, 1.0F, 0.0F); //GL11.glRotatef((float)(-90 * rotation), 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.007F, .25F, 0F); + GlStateManager.translate(0.007F, .25F, 0F); - switch (rotation) - { - case 0: + switch (rotation) { + case SOUTH: GL11.glTranslatef(-0.5F, 0, -0.03F); break; - case 1: + case WEST: GL11.glTranslatef(-.5F, 0F, .97F); break; - case 2: + case NORTH: GL11.glTranslatef(.5F, 0F, .97F); break; - case 3: + case EAST: GL11.glTranslatef(0.5F, 0F, -0.03F); } - GL11.glDisable(GL_LIGHTING); - Tessellator tessellator = Tessellator.instance; - GL11.glEnable(GL11.GL_BLEND); - if(i==1) - { - bindTexture(KeyholeLight); - GL11.glColor4d(1, 1, 1, .7); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_DST_COLOR); + GL11.glDisable(GL_LIGHTING); - } - else - { - bindTexture(keyPath); - glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA); - } - GL11.glRotatef(180.0F, 0.0F, 1.0F, 0.0F); - GL11.glRotatef(180.0F, 0.0F, 0.0F, 1.0F); - GL11.glScalef(0.00860625F, 0.00730625F, 0.0086625F); - GL11.glTranslatef(-65.0F, -107.0F, -3.0F); - GL11.glNormal3f(0.0F, 0.0F, -1.0F); - tessellator.startDrawingQuads(); - byte b0 = 7; - tessellator.addVertexWithUV((double)(0 - b0), (double)(128 + b0), 0.0D, 0.0D, 1.0D); - tessellator.addVertexWithUV((double)(128 + b0), (double)(128 + b0), 0.0D, 1.0D, 1.0D); - tessellator.addVertexWithUV((double)(128 + b0), (double)(0 - b0), 0.0D, 1.0D, 0.0D); - tessellator.addVertexWithUV((double)(0 - b0), (double)(0 - b0), 0.0D, 0.0D, 0.0D); - tessellator.draw(); - GL11.glTranslatef(0.0F, 0.0F, -1.0F); - GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_BLEND); - - GL11.glPopMatrix(); + if(i==1) { + bindTexture(KeyholeLight); + GlStateManager.color(1, 1, 1, .7f); + GlStateManager.blendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_DST_COLOR); + } else { + bindTexture(keyPath); + GlStateManager.blendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA); + } + + GlStateManager.rotate(180.0F, 0.0F, 1.0F, 0.0F); + GlStateManager.rotate(180.0F, 0.0F, 0.0F, 1.0F); + GlStateManager.scale(0.00860625F, 0.00730625F, 0.0086625F); + GlStateManager.translate(-65.0F, -107.0F, -3.0F); + + Tessellator tessellator = Tessellator.getInstance(); + WorldRenderer worldRenderer = tessellator.getWorldRenderer(); + worldRenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX_NORMAL); + byte b0 = 7; + + worldRenderer.pos((double)(0 - b0), (double)(128 + b0), 0.0D).tex(0.0D, 1.0D).normal(0.0F, 0.0F, -1.0F).endVertex(); + worldRenderer.pos((double)(128 + b0), (double)(128 + b0), 0.0D).tex(1.0D, 1.0D).normal(0.0F, 0.0F, -1.0F).endVertex(); + worldRenderer.pos((double)(128 + b0), (double)(0 - b0), 0.0D).tex(1.0D, 0.0D).normal(0.0F, 0.0F, -1.0F).endVertex(); + worldRenderer.pos((double)(0 - b0), (double)(0 - b0), 0.0D).tex(0.0D, 0.0D).normal(0.0F, 0.0F, -1.0F).endVertex(); + tessellator.draw(); + + GlStateManager.translate(0.0F, 0.0F, -1.0F); + GlStateManager.disableBlend(); + + GlStateManager.popMatrix(); } @Override - public void renderTileEntityAt(TileEntity par1TileEntity, double par2, double par4, double par6, float par8) - { - if (properties.DoorRenderingEnabled) - { - TileEntityDimDoor tile = (TileEntityDimDoor) par1TileEntity; - try - { - DimDoors.dimensionalDoor.updateAttachedTile(tile.getWorldObj(), - tile.xCoord, tile.yCoord, tile.zCoord); - } - catch (Exception e) - { + public void renderTileEntityAt(TileEntityDimDoor te, double x, double y, double z, float partialTicks, int destroyStage) { + if (properties.DoorRenderingEnabled) { + TileEntityDimDoor tile = te; + + try { + DimDoors.dimensionalDoor.updateAttachedTile(tile.getWorld(), tile.getPos()); + } catch (Exception e) { e.printStackTrace(); } - if (tile.openOrClosed) - { - - renderDimDoorTileEntity((TileEntityDimDoor) par1TileEntity, par2, par4, par6); - if(tile.lockStatus>=1) - { - for(int i = 0; i<1+tile.lockStatus; i++ ) - { - this.renderKeyHole(tile, par2, par4, par6, i); - + if (tile.openOrClosed) { + renderDimDoorTileEntity((TileEntityDimDoor) te, x, y, z); + if(tile.lockStatus>=1) { + for(int i = 0; i<1+tile.lockStatus; i++ ) { + this.renderKeyHole(tile, x, y, z, i); } } diff --git a/src/main/java/com/zixiken/dimdoors/client/RenderMobObelisk.java b/src/main/java/com/zixiken/dimdoors/client/RenderMobObelisk.java index d484a46a..c09e6c54 100644 --- a/src/main/java/com/zixiken/dimdoors/client/RenderMobObelisk.java +++ b/src/main/java/com/zixiken/dimdoors/client/RenderMobObelisk.java @@ -3,6 +3,7 @@ package com.zixiken.dimdoors.client; import com.zixiken.dimdoors.DimDoors; import com.zixiken.dimdoors.ticking.MobMonolith; import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.OpenGlHelper; import net.minecraft.client.renderer.entity.RenderLiving; import net.minecraft.client.renderer.entity.RenderManager; @@ -12,12 +13,11 @@ import net.minecraft.util.ResourceLocation; import net.minecraftforge.client.event.RenderLivingEvent; import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL12; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - @SideOnly(Side.CLIENT) public class RenderMobObelisk extends RenderLiving { @@ -25,15 +25,15 @@ public class RenderMobObelisk extends RenderLiving public RenderMobObelisk(RenderManager manager) { super(manager, new ModelMobObelisk(), 0.5F); - this.obeliskModel = (ModelMobObelisk)this.mainModel; + this.obeliskModel = (ModelMobObelisk) this.mainModel; } @Override - public void doRender(EntityLiving entity, double x, double y, double z, float par8, float par9) + public void doRender(MobMonolith entity, double x, double y, double z, float par8, float par9) { final float minScaling = 0; final float maxScaling = 0.1f; - MobMonolith monolith = ((MobMonolith) entity); + MobMonolith monolith = (MobMonolith) entity; float aggroScaling = 0; if (monolith.isDangerous()) { @@ -50,80 +50,74 @@ public class RenderMobObelisk extends RenderLiving // Render with jitter this.render(entity, x + xJitter, y + yJitter, z + zJitter, par8, par9); - this.func_110827_b(entity, x, y, z, par8, par9); + this.renderLeash(entity, x, y, z, par8, par9); } - public void render(EntityLiving par1EntityLivingBase, double x, double y, double z, float par8, float par9) - { - if (MinecraftForge.EVENT_BUS.post(new RenderLivingEvent.Pre(par1EntityLivingBase, this, x, y, z))) return; - GL11.glPushMatrix(); - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glDisable(GL11.GL_LIGHTING); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - this.mainModel.onGround = this.renderSwingProgress(par1EntityLivingBase, par9); + public void render(MobMonolith entity, double x, double y, double z, float par8, float par9) { + if (MinecraftForge.EVENT_BUS.post(new RenderLivingEvent.Pre(entity, this, x, y, z))) return; + GlStateManager.pushMatrix(); + GlStateManager.disableCull(); + GlStateManager.disableLighting(); + GlStateManager.disableBlend(); + GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); - try - { - float interpolatedYaw = interpolateRotation(par1EntityLivingBase.prevRenderYawOffset, par1EntityLivingBase.renderYawOffset, par9); - float interpolatedYawHead = interpolateRotation(par1EntityLivingBase.prevRotationYawHead, par1EntityLivingBase.rotationYawHead, par9); + try { + float interpolatedYaw = interpolateRotation(entity.prevRenderYawOffset, entity.renderYawOffset, par9); + float interpolatedYawHead = interpolateRotation(entity.prevRotationYawHead, entity.rotationYawHead, par9); float rotation; - float pitch = par1EntityLivingBase.prevRotationPitch + (par1EntityLivingBase.rotationPitch - par1EntityLivingBase.prevRotationPitch) * par9; - this.renderLivingAt(par1EntityLivingBase, x, y, z); + float pitch = entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * par9; + this.renderLivingAt(entity, x, y, z); - rotation = this.handleRotationFloat(par1EntityLivingBase, par9); - this.rotateCorpse(par1EntityLivingBase, rotation, interpolatedYaw, par9); + rotation = this.handleRotationFloat(entity, par9); + this.rotateCorpse(entity, rotation, interpolatedYaw, par9); float f6 = 0.0625F; - GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GlStateManager.enableRescaleNormal(); - GL11.glScalef(-1.0F, -1.0F, 1.0F); - this.preRenderCallback(par1EntityLivingBase, par9); - GL11.glRotatef(((MobMonolith)par1EntityLivingBase).pitchLevel , 1.0F, 0.0F, 0.0F); - GL11.glTranslatef(0.0F, 24.0F * f6 - 0.0078125F, 0.0F); + GlStateManager.scale(-1.0F, -1.0F, 1.0F); + this.preRenderCallback(entity, par9); + GlStateManager.rotate(((MobMonolith) entity).pitchLevel, 1.0F, 0.0F, 0.0F); + GlStateManager.translate(0.0F, 24.0F * f6 - 0.0078125F, 0.0F); - this.renderModel(par1EntityLivingBase, 0, 0, rotation, interpolatedYaw, pitch, f6); + this.renderModel(entity, 0, 0, rotation, interpolatedYaw, pitch, f6); OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit); - GL11.glDisable(GL11.GL_TEXTURE_2D); + GlStateManager.disableTexture2D();; OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit); - GL11.glDisable(GL12.GL_RESCALE_NORMAL); - } - catch (Exception exception) - { + GlStateManager.disableRescaleNormal(); + } catch (Exception exception) { exception.printStackTrace(); } OpenGlHelper.setActiveTexture(OpenGlHelper.lightmapTexUnit); - GL11.glEnable(GL11.GL_TEXTURE_2D); + GlStateManager.enableTexture2D(); OpenGlHelper.setActiveTexture(OpenGlHelper.defaultTexUnit); - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glDisable(GL11.GL_BLEND); - GL11.glPopMatrix(); - MinecraftForge.EVENT_BUS.post(new RenderLivingEvent.Post(par1EntityLivingBase, this, x, y, z)); + GlStateManager.enableCull(); + GlStateManager.enableLighting(); + GlStateManager.disableBlend(); + GlStateManager.popMatrix(); + + MinecraftForge.EVENT_BUS.post(new RenderLivingEvent.Post(entity, this, x, y, z)); } - private static float interpolateRotation(float par1, float par2, float par3) - { + public float interpolateRotation(float par1, float par2, float par3) { float f3 = par2 - par1; - while (f3 < -180.0f) - { + while (f3 < -180.0f) { f3 += 360.0F; } + while (f3 >= 180.0F) { f3 -= 360.0F; } return par1 + par3 * f3; } - + @Override - protected ResourceLocation getEntityTexture(Entity entity) - { + protected ResourceLocation getEntityTexture(MobMonolith entity) { MobMonolith monolith = (MobMonolith) entity; - return new ResourceLocation(DimDoors.modid + ":textures/mobs/oldMonolith/Monolith" + monolith.getTextureState() + ".png"); + return new ResourceLocation(DimDoors.MODID + ":textures/mobs/oldMonolith/Monolith" + monolith.getTextureState() + ".png"); } } \ No newline at end of file diff --git a/src/main/java/com/zixiken/dimdoors/client/RenderRift.java b/src/main/java/com/zixiken/dimdoors/client/RenderRift.java index 18184360..c827e9c2 100644 --- a/src/main/java/com/zixiken/dimdoors/client/RenderRift.java +++ b/src/main/java/com/zixiken/dimdoors/client/RenderRift.java @@ -3,28 +3,26 @@ package com.zixiken.dimdoors.client; import static org.lwjgl.opengl.GL11.*; import com.zixiken.dimdoors.tileentities.TileEntityRift; +import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; import net.minecraft.tileentity.TileEntity; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import org.lwjgl.opengl.GL11; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) -public class RenderRift extends TileEntitySpecialRenderer -{ - +public class RenderRift extends TileEntitySpecialRenderer { @Override - public void renderTileEntityAt(TileEntity te, double xWorld, double yWorld, double zWorld, float f) - { + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float partialTicks, int destroyStage) { // prepare fb for drawing GL11.glPushMatrix(); // make the rift render on both sides, disable texture mapping and // lighting - GL11.glDisable(GL11.GL_CULL_FACE); - GL11.glDisable(GL_TEXTURE_2D); - GL11.glDisable(GL_LIGHTING); - GL11.glEnable(GL_BLEND); + GlStateManager.disableCull(); + GlStateManager.disableTexture2D(); + GlStateManager.disableLighting(); + GlStateManager.enableBlend(); /** * GL11.glLogicOp(GL11.GL_INVERT); * GL11.glEnable(GL11.GL_COLOR_LOGIC_OP); @@ -32,12 +30,12 @@ public class RenderRift extends TileEntitySpecialRenderer TileEntityRift rift = (TileEntityRift) te; // draws the verticies corresponding to the passed it - GL11.glDisable(GL_BLEND); // reenable all the stuff we disabled - GL11.glEnable(GL11.GL_CULL_FACE); - GL11.glEnable(GL11.GL_LIGHTING); - GL11.glEnable(GL_TEXTURE_2D); + GlStateManager.disableBlend(); + GlStateManager.enableCull(); + GlStateManager.enableLighting(); + GlStateManager.enableTexture2D(); - GL11.glPopMatrix(); + GlStateManager.popMatrix(); } } \ No newline at end of file diff --git a/src/main/java/com/zixiken/dimdoors/client/RenderTransTrapdoor.java b/src/main/java/com/zixiken/dimdoors/client/RenderTransTrapdoor.java index 0ca4d706..aaf8aaba 100644 --- a/src/main/java/com/zixiken/dimdoors/client/RenderTransTrapdoor.java +++ b/src/main/java/com/zixiken/dimdoors/client/RenderTransTrapdoor.java @@ -8,168 +8,158 @@ import com.zixiken.dimdoors.blocks.TransTrapdoor; import com.zixiken.dimdoors.config.DDProperties; import com.zixiken.dimdoors.tileentities.TileEntityTransTrapdoor; import net.minecraft.block.BlockTrapDoor; +import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.GLAllocation; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.WorldRenderer; import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; -import net.minecraft.tileentity.TileEntity; +import net.minecraft.client.renderer.vertex.DefaultVertexFormats; import net.minecraft.util.ResourceLocation; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; import org.lwjgl.opengl.GL11; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; - @SideOnly(Side.CLIENT) public class RenderTransTrapdoor extends TileEntitySpecialRenderer { - private FloatBuffer field_76908_a = GLAllocation.createDirectFloatBuffer(16); + private FloatBuffer buffer = GLAllocation.createDirectFloatBuffer(16); private static DDProperties properties = null; - private ResourceLocation riftPath= new ResourceLocation(DimDoors.modid+":textures/other/RIFT.png"); - private ResourceLocation warpPath= new ResourceLocation(DimDoors.modid+":textures/other/WARP.png"); + private ResourceLocation riftPath= new ResourceLocation(DimDoors.MODID+":textures/other/RIFT.png"); + private ResourceLocation warpPath= new ResourceLocation(DimDoors.MODID+":textures/other/WARP.png"); - public RenderTransTrapdoor() - { + public RenderTransTrapdoor() { if (properties == null) properties = DDProperties.instance(); } - + /** * Renders the dimdoor. */ - public void renderTransTrapdoorTileEntity(TileEntityTransTrapdoor tile, double x, double y, double z, float par8) - { - GL11.glDisable(GL11.GL_LIGHTING); + public void renderTransTrapdoorTileEntity(TileEntityTransTrapdoor tile, double x, double y, double z, float partialTicks) { + GlStateManager.disableLighting(); Random random = new Random(31100L); - int metadata = tile.getWorldObj().getBlockMetadata(tile.xCoord, tile.yCoord, tile.zCoord); + IBlockState state = tile.getWorld().getBlockState(tile.getPos()); - for (int count = 0; count < 16; ++count) - { - GL11.glPushMatrix(); + for (int count = 0; count < 16; ++count) { + GlStateManager.pushMatrix(); + float var15 = 16 - count; float var16 = 0.2625F; float var17 = 1.0F / (var15 + 1.0F); - if (count == 0) - { + if (count == 0) { this.bindTexture(riftPath); var17 = 0.1F; var15 = 25.0F; var16 = 0.125F; - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GlStateManager.enableBlend(); + GlStateManager.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); } - if (count == 1) - { + if (count == 1) { this.bindTexture(warpPath); - GL11.glEnable(GL11.GL_BLEND); - GL11.glBlendFunc(GL11.GL_ONE, GL11.GL_ONE); + GlStateManager.enableBlend(); + GlStateManager.blendFunc(GL11.GL_ONE, GL11.GL_ONE); var16 = .5F; } - GL11.glTranslatef( Minecraft.getSystemTime() % 200000L / 200000.0F,0, 0.0F); - GL11.glTranslatef(0, Minecraft.getSystemTime() % 200000L / 200000.0F, 0.0F); + GlStateManager.translate(Minecraft.getSystemTime() % 200000L / 200000.0F,0, 0.0F); + GlStateManager.translate(0, Minecraft.getSystemTime() % 200000L / 200000.0F, 0.0F); - GL11.glTranslatef(0,0, Minecraft.getSystemTime() % 200000L / 200000.0F); + GlStateManager.translate(0,0, Minecraft.getSystemTime() % 200000L / 200000.0F); - GL11.glTexGeni(GL11.GL_S, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); - GL11.glTexGeni(GL11.GL_T, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); - GL11.glTexGeni(GL11.GL_R, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_OBJECT_LINEAR); - GL11.glTexGeni(GL11.GL_Q, GL11.GL_TEXTURE_GEN_MODE, GL11.GL_EYE_LINEAR); + GlStateManager.texGen(GlStateManager.TexGen.S, GL11.GL_OBJECT_LINEAR); + GlStateManager.texGen(GlStateManager.TexGen.T, GL11.GL_OBJECT_LINEAR); + GlStateManager.texGen(GlStateManager.TexGen.R, GL11.GL_OBJECT_LINEAR); + GlStateManager.texGen(GlStateManager.TexGen.Q, GL11.GL_EYE_LINEAR); - GL11.glTexGen(GL11.GL_S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); - GL11.glTexGen(GL11.GL_T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); - GL11.glTexGen(GL11.GL_R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); - GL11.glTexGen(GL11.GL_Q, GL11.GL_EYE_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); + GlStateManager.texGen(GlStateManager.TexGen.S, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(1.0F, 0.0F, 0.0F, 0.0F)); + GlStateManager.texGen(GlStateManager.TexGen.T, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 1.0F, 0.0F)); + GlStateManager.texGen(GlStateManager.TexGen.R, GL11.GL_OBJECT_PLANE, this.getFloatBuffer(0.0F, 0.0F, 0.0F, 1.0F)); + GlStateManager.texGen(GlStateManager.TexGen.Q, GL11.GL_EYE_PLANE, this.getFloatBuffer(0.0F, 1.0F, 0.0F, 0.0F)); - - GL11.glEnable(GL11.GL_TEXTURE_GEN_S); - GL11.glEnable(GL11.GL_TEXTURE_GEN_T); - GL11.glEnable(GL11.GL_TEXTURE_GEN_R); - GL11.glEnable(GL11.GL_TEXTURE_GEN_Q); - GL11.glPopMatrix(); - GL11.glMatrixMode(GL11.GL_TEXTURE); - GL11.glPushMatrix(); - GL11.glLoadIdentity(); - GL11.glTranslatef(0.0F, Minecraft.getSystemTime() % 200000L / 200000.0F*var15, 0.0F); - GL11.glScalef(var16, var16, var16); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - GL11.glRotatef((count * count * 4321 + count * 9) * 2.0F, 0.0F, 0.0F, 1.0F); - GL11.glTranslatef(0.5F, 0.5F, 0.5F); - - GL11.glBegin(GL11.GL_QUADS); - - float var21 = random.nextFloat() * 0.5F + 0.1F; - float var22 = random.nextFloat() * 0.4F + 0.4F; - float var23 = random.nextFloat() * 0.6F + 0.5F; + GlStateManager.enableTexGenCoord(GlStateManager.TexGen.S); + GlStateManager.enableTexGenCoord(GlStateManager.TexGen.T); + GlStateManager.enableTexGenCoord(GlStateManager.TexGen.R); + GlStateManager.enableTexGenCoord(GlStateManager.TexGen.Q); - if (count == 0) - { - var23 = 1.0F; - var22 = 1.0F; + GlStateManager.popMatrix(); + + GlStateManager.matrixMode(GL11.GL_TEXTURE); + GlStateManager.pushMatrix(); + GlStateManager.loadIdentity(); + GlStateManager.translate(0.0F, Minecraft.getSystemTime() % 200000L / 200000.0F*var15, 0.0F); + GlStateManager.scale(var16, var16, var16); + GlStateManager.translate(0.5F, 0.5F, 0.5F); + GlStateManager.rotate((count * count * 4321 + count * 9) * 2.0F, 0.0F, 0.0F, 1.0F); + GlStateManager.translate(0.5F, 0.5F, 0.5F); + + float r = (random.nextFloat() * 0.5F + 0.1F) * var17; + float g = (random.nextFloat() * 0.4F + 0.4F) * var17; + float b = (random.nextFloat() * 0.6F + 0.5F) * var17; + + if (count == 0) { + g = 1.0F; + b = 1.0F; } - GL11.glColor4d(var21 * var17, var22 * var17, var23 * var17, 1.0F); - if (TransTrapdoor.isTrapdoorSetLow(metadata)) - { - if (BlockTrapDoor.func_150118_d(metadata)) - { - GL11.glVertex3d(x, y+0.2, z); - GL11.glVertex3d(x, y+0.2, z+1); - GL11.glVertex3d(x+1 , y+0.2 , z+1); - GL11.glVertex3d(x+1 , y+0.2 , z); + + Tessellator tessellator = Tessellator.getInstance(); + WorldRenderer worldrenderer = tessellator.getWorldRenderer(); + worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_COLOR); + + if (TransTrapdoor.isTrapdoorSetLow(state)) { + if (state.getValue(BlockTrapDoor.OPEN)) { + worldrenderer.pos(x, y+0.2, z).color(r, g, b, 1.0F).endVertex(); + worldrenderer.pos(x, y+0.2, z+1).color(r, g, b, 1.0F).endVertex(); + worldrenderer.pos(x+1, y+0.2, z+1).color(r, g, b, 1.0F).endVertex(); + worldrenderer.pos(x+1, y+0.2, z).color(r, g, b, 1.0F).endVertex(); + } else { + worldrenderer.pos(x, y+0.15, z).color(r, g, b, 1.0F).endVertex(); + worldrenderer.pos(x, y+0.15, z+1).color(r, g, b, 1.0F).endVertex(); + worldrenderer.pos(x+1, y+0.15, z+1).color(r, g, b, 1.0F).endVertex(); + worldrenderer.pos(x+1, y+0.15, z).color(r, g, b, 1.0F).endVertex(); } - else - { - GL11.glVertex3d(x, y+0.15, z); - GL11.glVertex3d(x, y+0.15, z+1); - GL11.glVertex3d(x+1 , y+0.15 , z+1); - GL11.glVertex3d(x+1 , y+0.15 , z); + } else { + if (state.getValue(BlockTrapDoor.OPEN)) { + worldrenderer.pos(x, y+0.95, z).color(r, g, b, 1.0F).endVertex(); + worldrenderer.pos(x, y+0.95, z+1).color(r, g, b, 1.0F).endVertex(); + worldrenderer.pos(x+1, y+0.95, z+1).color(r, g, b, 1.0F).endVertex(); + worldrenderer.pos(x+1, y+0.95, z).color(r, g, b, 1.0F).endVertex(); + } else { + worldrenderer.pos(x, y+0.85, z).color(r, g, b, 1.0F).endVertex(); + worldrenderer.pos(x, y+0.85, z+1).color(r, g, b, 1.0F).endVertex(); + worldrenderer.pos(x+1, y+0.85, z+1).color(r, g, b, 1.0F).endVertex(); + worldrenderer.pos(x+1, y+0.85, z).color(r, g, b, 1.0F).endVertex(); } } - else - { - if (BlockTrapDoor.func_150118_d(metadata)) - { - GL11.glVertex3d(x, y+0.95, z); - GL11.glVertex3d(x, y+0.95, z+1); - GL11.glVertex3d(x+1 , y+0.95 , z+1); - GL11.glVertex3d(x+1 , y+0.95 , z); - } - else - { - GL11.glVertex3d(x, y+0.85, z); - GL11.glVertex3d(x, y+0.85, z+1); - GL11.glVertex3d(x+1 , y+0.85 , z+1); - GL11.glVertex3d(x+1 , y+0.85 , z); - } - } - GL11.glEnd(); - GL11.glPopMatrix(); - GL11.glMatrixMode(GL11.GL_MODELVIEW); + + tessellator.draw(); + GlStateManager.popMatrix(); + GlStateManager.matrixMode(GL11.GL_MODELVIEW); } - GL11.glDisable(GL11.GL_BLEND); - GL11.glDisable(GL11.GL_TEXTURE_GEN_S); - GL11.glDisable(GL11.GL_TEXTURE_GEN_T); - GL11.glDisable(GL11.GL_TEXTURE_GEN_R); - GL11.glDisable(GL11.GL_TEXTURE_GEN_Q); - GL11.glEnable(GL11.GL_LIGHTING); + GlStateManager.disableBlend(); + GlStateManager.disableTexGenCoord(GlStateManager.TexGen.S); + GlStateManager.disableTexGenCoord(GlStateManager.TexGen.T); + GlStateManager.disableTexGenCoord(GlStateManager.TexGen.R); + GlStateManager.disableTexGenCoord(GlStateManager.TexGen.Q); + GlStateManager.disableLighting(); } - private FloatBuffer getFloatBuffer(float par1, float par2, float par3, float par4) - { - this.field_76908_a.clear(); - this.field_76908_a.put(par1).put(par2).put(par3).put(par4); - this.field_76908_a.flip(); - return this.field_76908_a; + private FloatBuffer getFloatBuffer(float par1, float par2, float par3, float par4) { + this.buffer.clear(); + this.buffer.put(par1).put(par2).put(par3).put(par4); + this.buffer.flip(); + return this.buffer; } @Override - public void renderTileEntityAt(TileEntity par1TileEntity, double par2, double par4, double par6, float par8) - { - if (properties.DoorRenderingEnabled) - { - this.renderTransTrapdoorTileEntity((TileEntityTransTrapdoor)par1TileEntity, par2, par4, par6, par8); + public void renderTileEntityAt(TileEntityTransTrapdoor te, double x, double y, double z, float partialTicks, int destroyStage) { + if (properties.DoorRenderingEnabled) { + this.renderTransTrapdoorTileEntity(te, x, y, z, partialTicks); } } } diff --git a/src/main/java/com/zixiken/dimdoors/client/RiftFX.java b/src/main/java/com/zixiken/dimdoors/client/RiftFX.java index 6bc476b5..7e19ee19 100644 --- a/src/main/java/com/zixiken/dimdoors/client/RiftFX.java +++ b/src/main/java/com/zixiken/dimdoors/client/RiftFX.java @@ -4,69 +4,41 @@ import com.zixiken.dimdoors.core.PocketManager; import net.minecraft.client.particle.EffectRenderer; import net.minecraft.client.particle.EntityFX; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.WorldRenderer; +import net.minecraft.entity.Entity; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; + +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; @SideOnly(Side.CLIENT) -public class RiftFX extends EntityFX -{ - private int field_92049_a = 160; - private boolean field_92054_ax; - private boolean field_92048_ay; - private final EffectRenderer field_92047_az; - private float field_92050_aA; - private float field_92051_aB; - private float field_92052_aC; - private boolean field_92053_aD; +public class RiftFX extends EntityFX { + private int baseTextureIndex = 160; + private boolean trail; + private boolean twinkle; + private final EffectRenderer effectRenderer; + private float fadeColourRed; + private float fadeColourGreen; + private float fadeColourBlue; + private boolean hasFadeColour; - public RiftFX(World par1World, double par2, double par4, double par6, double par8, double par10, double par12, EffectRenderer par14EffectRenderer) - { - - super(par1World, par2, par4, par6); - this.motionX = par8; - this.motionY = par10; - this.motionZ = par12; - this.field_92047_az = par14EffectRenderer; + public RiftFX(World world, double x, double y, double z, double motionX, double motionY, double motionZ, EffectRenderer effectRenderer) { + super(world, x, y, z); + this.motionX = motionX; + this.motionY = motionY; + this.motionZ = motionZ; + this.effectRenderer = effectRenderer; this.particleScale *= 0.75F; this.particleMaxAge = 40 + this.rand.nextInt(26); this.noClip = true; } - public void func_92045_e(boolean par1) - { - this.field_92054_ax = par1; - } - - public void func_92043_f(boolean par1) - { - this.field_92048_ay = par1; - } - - public void func_92044_a(int par1) - { - float var2 = ((par1 & 16711680) >> 16) / 255.0F; - float var3 = ((par1 & 65280) >> 8) / 255.0F; - float var4 = ((par1 & 255) >> 0) / 255.0F; - float var5 = 1.0F; - this.setRBGColorF(var2 * var5, var3 * var5, var4 * var5); - } - - public void func_92046_g(int par1) - { - this.field_92050_aA = ((par1 & 16711680) >> 16) / 255.0F; - this.field_92051_aB = ((par1 & 65280) >> 8) / 255.0F; - this.field_92052_aC = ((par1 & 255) >> 0) / 255.0F; - this.field_92053_aD = true; - } - /** * returns the bounding box for this entity */ @Override - public AxisAlignedBB getBoundingBox() - { + public AxisAlignedBB getCollisionBoundingBox() { return null; } @@ -80,17 +52,13 @@ public class RiftFX extends EntityFX } @Override - public void renderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) - { - if (!this.field_92048_ay || this.particleAge < this.particleMaxAge / 3 || (this.particleAge + this.particleMaxAge) / 3 % 2 == 0) - { - - - this.doRenderParticle(par1Tessellator, par2, par3, par4, par5, par6, par7); + public void renderParticle(WorldRenderer worldRenderer, Entity entity, float par2, float par3, float par4, float par5, float par6, float par7) { + if (!this.twinkle || this.particleAge < this.particleMaxAge / 3 || (this.particleAge + this.particleMaxAge) / 3 % 2 == 0) { + this.doRenderParticle(worldRenderer, par2, par3, par4, par5, par6, par7); } } - public void doRenderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7) + public void doRenderParticle(WorldRenderer worldRenderer, float par2, float par3, float par4, float par5, float par6, float par7) { float f6 = this.particleTextureIndexX / 16.0F; float f7 = f6 + 0.0624375F; @@ -98,8 +66,7 @@ public class RiftFX extends EntityFX float f9 = f8 + 0.0624375F; float f10 = 0.1F * this.particleScale; - if (this.particleIcon != null) - { + if (this.particleIcon != null) { f6 = this.particleIcon.getMinU(); f7 = this.particleIcon.getMaxU(); f8 = this.particleIcon.getMinV(); @@ -111,80 +78,70 @@ public class RiftFX extends EntityFX float f13 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * par2 - interpPosZ); float f14 = 0F; - if (PocketManager.createDimensionData(worldObj).isPocketDimension()) - { + if (PocketManager.createDimensionData(worldObj).isPocketDimension()) { f14 = 0.7F; } - - par1Tessellator.setColorRGBA_F(this.particleRed * f14, this.particleGreen * f14, this.particleBlue * f14, (float) .7); - par1Tessellator.addVertexWithUV(f11 - par3 * f10 - par6 * f10, f12 - par4 * f10, f13 - par5 * f10 - par7 * f10, f7, f9); - par1Tessellator.addVertexWithUV(f11 - par3 * f10 + par6 * f10, f12 + par4 * f10, f13 - par5 * f10 + par7 * f10, f7, f8); - par1Tessellator.addVertexWithUV(f11 + par3 * f10 + par6 * f10, f12 + par4 * f10, f13 + par5 * f10 + par7 * f10, f6, f8); - par1Tessellator.addVertexWithUV(f11 + par3 * f10 - par6 * f10, f12 - par4 * f10, f13 + par5 * f10 - par7 * f10, f6, f9); + + worldRenderer.pos(f11 - par3 * f10 - par6 * f10, f12 - par4 * f10, f13 - par5 * f10 - par7 * f10).tex(f7, f9).color(this.particleRed * f14, this.particleGreen * f14, this.particleBlue * f14, (float) .7).endVertex(); + worldRenderer.pos(f11 - par3 * f10 + par6 * f10, f12 + par4 * f10, f13 - par5 * f10 + par7 * f10).tex(f7, f8).color(this.particleRed * f14, this.particleGreen * f14, this.particleBlue * f14, (float) .7).endVertex(); + worldRenderer.pos(f11 + par3 * f10 + par6 * f10, f12 + par4 * f10, f13 + par5 * f10 + par7 * f10).tex(f6, f8).color(this.particleRed * f14, this.particleGreen * f14, this.particleBlue * f14, (float) .7).endVertex(); + worldRenderer.pos(f11 + par3 * f10 - par6 * f10, f12 - par4 * f10, f13 + par5 * f10 - par7 * f10).tex(f6, f9).color(this.particleRed * f14, this.particleGreen * f14, this.particleBlue * f14, (float) .7).endVertex(); } /** * Called to update the entity's position/logic. */ @Override - public void onUpdate() - { + public void onUpdate() { this.prevPosX = this.posX; this.prevPosY = this.posY; this.prevPosZ = this.posZ; - if (this.particleAge++ >= this.particleMaxAge) - { + if (this.particleAge++ >= this.particleMaxAge) { this.setDead(); } - if (this.particleAge > this.particleMaxAge / 2) - { + if (this.particleAge > this.particleMaxAge / 2) { this.setAlphaF(1.0F - ((float)this.particleAge - (float)(this.particleMaxAge / 2)) / this.particleMaxAge); - if (this.field_92053_aD) - { - this.particleRed += (this.field_92050_aA - this.particleRed) * 0.2F; - this.particleGreen += (this.field_92051_aB - this.particleGreen) * 0.2F; - this.particleBlue += (this.field_92052_aC - this.particleBlue) * 0.2F; + if (this.hasFadeColour) { + this.particleRed += (this.fadeColourRed - this.particleRed) * 0.2F; + this.particleGreen += (this.fadeColourGreen - this.particleGreen) * 0.2F; + this.particleBlue += (this.fadeColourBlue - this.particleBlue) * 0.2F; } } - this.setParticleTextureIndex(this.field_92049_a + (7 - this.particleAge * 8 / this.particleMaxAge)); + this.setParticleTextureIndex(this.baseTextureIndex + (7 - this.particleAge * 8 / this.particleMaxAge)); // this.motionY -= 0.004D; this.moveEntity(this.motionX, this.motionY, this.motionZ); this.motionX *= 0.9100000262260437D; this.motionY *= 0.9100000262260437D; this.motionZ *= 0.9100000262260437D; - if (this.onGround) - { + if (this.onGround) { this.motionX *= 0.699999988079071D; this.motionZ *= 0.699999988079071D; } - if (this.field_92054_ax && this.particleAge < this.particleMaxAge / 2 && (this.particleAge + this.particleMaxAge) % 2 == 0) - { - RiftFX var1 = new RiftFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D, this.field_92047_az); - var1.setRBGColorF(this.particleRed, this.particleGreen, this.particleBlue); - var1.particleAge = var1.particleMaxAge / 2; + if (this.trail && this.particleAge < this.particleMaxAge / 2 && (this.particleAge + this.particleMaxAge) % 2 == 0) { + RiftFX rift = new RiftFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D, this.effectRenderer); + rift.setRBGColorF(this.particleRed, this.particleGreen, this.particleBlue); + rift.particleAge = rift.particleMaxAge / 2; - if (this.field_92053_aD) - { - var1.field_92053_aD = true; - var1.field_92050_aA = this.field_92050_aA; - var1.field_92051_aB = this.field_92051_aB; - var1.field_92052_aC = this.field_92052_aC; + if (this.hasFadeColour) { + rift.hasFadeColour = true; + rift.fadeColourRed = this.fadeColourRed; + rift.fadeColourGreen = this.fadeColourGreen; + rift.fadeColourBlue = this.fadeColourBlue; } - var1.field_92048_ay = this.field_92048_ay; - this.field_92047_az.addEffect(var1); + rift.twinkle = this.twinkle; + this.effectRenderer.addEffect(rift); } } @Override - public int getBrightnessForRender(float par1) - { + public int getBrightnessForRender(float par1) { return 15728880; } @@ -192,8 +149,7 @@ public class RiftFX extends EntityFX * Gets how bright this entity is. */ @Override - public float getBrightness(float par1) - { + public float getBrightness(float par1) { return 1.0F; } } diff --git a/src/main/java/com/zixiken/dimdoors/client/TESyncHandler.java b/src/main/java/com/zixiken/dimdoors/client/TESyncHandler.java index bed75496..40cca8b0 100644 --- a/src/main/java/com/zixiken/dimdoors/client/TESyncHandler.java +++ b/src/main/java/com/zixiken/dimdoors/client/TESyncHandler.java @@ -1,24 +1,19 @@ package com.zixiken.dimdoors.client; -public class TESyncHandler -{ - public void onServerChanges() - { +public class TESyncHandler { + public void onServerChanges() { } - public void onClientChanges() - { + public void onClientChanges() { } - public void onClientData() - { + public void onClientData() { } - public void onServerData() - { + public void onServerData() { } diff --git a/src/main/java/com/zixiken/dimdoors/commands/CommandCreatePocket.java b/src/main/java/com/zixiken/dimdoors/commands/CommandCreatePocket.java index 2fc3cb51..5da00204 100644 --- a/src/main/java/com/zixiken/dimdoors/commands/CommandCreatePocket.java +++ b/src/main/java/com/zixiken/dimdoors/commands/CommandCreatePocket.java @@ -2,6 +2,7 @@ package com.zixiken.dimdoors.commands; import com.zixiken.dimdoors.helpers.DungeonHelper; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.util.BlockPos; public class CommandCreatePocket extends DDCommandBase { private static CommandCreatePocket instance = null; @@ -25,10 +26,9 @@ public class CommandCreatePocket extends DDCommandBase { //Place a door leading to a pocket dimension where the player is standing. //The pocket dimension will serve as a room for the player to build a dungeon. - int x = (int) sender.posX; - int y = (int) sender.posY; - int z = (int) sender.posZ; - DungeonHelper.instance().createCustomDungeonDoor(sender.worldObj, x, y, z); + BlockPos pos = new BlockPos((int) sender.posX, (int) sender.posY, (int) sender.posZ); + + DungeonHelper.instance().createCustomDungeonDoor(sender.worldObj, pos); //Notify the player sendChat(sender, "Created a door to a pocket dimension. Please build your dungeon there."); diff --git a/src/main/java/com/zixiken/dimdoors/core/DDTeleporter.java b/src/main/java/com/zixiken/dimdoors/core/DDTeleporter.java index 1c818a1c..41fb4bc7 100644 --- a/src/main/java/com/zixiken/dimdoors/core/DDTeleporter.java +++ b/src/main/java/com/zixiken/dimdoors/core/DDTeleporter.java @@ -3,6 +3,7 @@ package com.zixiken.dimdoors.core; import java.util.ArrayList; import java.util.Random; +import com.zixiken.dimdoors.helpers.EnumFacingHelper; import com.zixiken.dimdoors.world.LimboProvider; import com.zixiken.dimdoors.blocks.BaseDimDoor; import com.zixiken.dimdoors.blocks.IDimDoor; @@ -13,8 +14,6 @@ import com.zixiken.dimdoors.schematic.BlockRotator; import com.zixiken.dimdoors.tileentities.TileEntityDimDoor; import com.zixiken.dimdoors.util.Point4D; import com.zixiken.dimdoors.world.PocketBuilder; -import cpw.mods.fml.common.FMLCommonHandler; -import cpw.mods.fml.common.gameevent.PlayerEvent; import net.minecraft.block.Block; import net.minecraft.block.BlockDoor; import net.minecraft.block.state.IBlockState; @@ -38,7 +37,7 @@ import net.minecraft.world.World; import net.minecraft.world.WorldServer; import net.minecraftforge.common.DimensionManager; import com.zixiken.dimdoors.watcher.ClientDimData; -import cpw.mods.fml.common.registry.GameRegistry; +import net.minecraftforge.fml.common.FMLCommonHandler; public class DDTeleporter { private static final Random random = new Random(); @@ -103,41 +102,34 @@ public class DDTeleporter { return true; } - private static void placeInPortal(Entity entity, WorldServer world, Point4D destination, DDProperties properties, boolean checkOrientation) - { + private static void placeInPortal(Entity entity, WorldServer world, Point4D destination, DDProperties properties, boolean checkOrientation) { int x = destination.getX(); int y = destination.getY(); int z = destination.getZ(); EnumFacing orientation; - if (checkOrientation) - { + if (checkOrientation) { orientation = getDestinationOrientation(destination, properties); entity.rotationYaw = (orientation.getIndex() * 90) + 90; - } - else - { + } else { // Teleport the entity to the precise destination point orientation = EnumFacing.SOUTH; } - if (entity instanceof EntityPlayer) - { + if (entity instanceof EntityPlayer) { EntityPlayer player = (EntityPlayer) entity; - if (checkDestination(world, destination, orientation)) - { - switch (orientation) - { - case 0: + if (checkDestination(world, destination, orientation)) { + switch (orientation) { + case SOUTH: player.setPositionAndUpdate(x - 0.5, y - 1, z + 0.5); break; - case 1: + case WEST: player.setPositionAndUpdate(x + 0.5, y - 1, z - 0.5); break; - case 2: + case NORTH: player.setPositionAndUpdate(x + 1.5, y - 1, z + 0.5); break; - case 3: + case EAST: player.setPositionAndUpdate(x + 0.5, y - 1, z + 1.5); break; default: @@ -148,30 +140,27 @@ public class DDTeleporter { else { player.setPositionAndUpdate(x + 0.5, y - 1, z + 0.5); } - } - else if (entity instanceof EntityMinecart) - { + } else if (entity instanceof EntityMinecart) { entity.motionX = 0; entity.motionZ = 0; entity.motionY = 0; - switch (orientation) - { - case 0: + switch (orientation) { + case SOUTH: DDTeleporter.setEntityPosition(entity, x - 0.5, y, z + 0.5); entity.motionX = -0.39; entity.worldObj.updateEntityWithOptionalForce(entity, false); break; - case 1: + case WEST: DDTeleporter.setEntityPosition(entity, x + 0.5, y, z - 0.5); entity.motionZ = -0.39; entity.worldObj.updateEntityWithOptionalForce(entity, false); break; - case 2: + case NORTH: DDTeleporter.setEntityPosition(entity, x + 1.5, y, z + 0.5); entity.motionX = 0.39; entity.worldObj.updateEntityWithOptionalForce(entity, false); break; - case 3: + case EAST: DDTeleporter.setEntityPosition(entity, x + 0.5, y, z + 1.5); entity.motionZ = 0.39; entity.worldObj.updateEntityWithOptionalForce(entity, false); @@ -181,21 +170,18 @@ public class DDTeleporter { entity.worldObj.updateEntityWithOptionalForce(entity, false); break; } - } - else - { - switch (orientation) - { - case 0: + } else { + switch (orientation) { + case SOUTH: setEntityPosition(entity, x - 0.5, y, z + 0.5); break; - case 1: + case WEST: setEntityPosition(entity, x + 0.5, y, z - 0.5); break; - case 2: + case NORTH: setEntityPosition(entity, x + 1.5, y, z + 0.5); break; - case 3: + case EAST: setEntityPosition(entity, x + 0.5, y, z + 1.5); break; default: @@ -205,10 +191,9 @@ public class DDTeleporter { } } - private static void setEntityPosition(Entity entity, double x, double y, double z) - { + private static void setEntityPosition(Entity entity, double x, double y, double z) { entity.lastTickPosX = entity.prevPosX = entity.posX = x; - entity.lastTickPosY = entity.prevPosY = entity.posY = y + entity.yOffset; + entity.lastTickPosY = entity.prevPosY = entity.posY = y + entity.getYOffset(); entity.lastTickPosZ = entity.prevPosZ = entity.posZ = z; entity.setPosition(x, y, z); } @@ -232,12 +217,9 @@ public class DDTeleporter { } public static Entity teleportEntity(Entity entity, Point4D destination, boolean checkOrientation) { - if (entity == null) - { + if (entity == null) { throw new IllegalArgumentException("entity cannot be null."); - } - if (destination == null) - { + } if (destination == null) { throw new IllegalArgumentException("destination cannot be null."); } //This beautiful teleport method is based off of xCompWiz's teleport function. @@ -248,15 +230,13 @@ public class DDTeleporter { DDProperties properties = DDProperties.instance(); // Is something riding? Handle it first. - if (entity.riddenByEntity != null) - { + if (entity.riddenByEntity != null) { return teleportEntity(entity.riddenByEntity, destination, checkOrientation); } // Are we riding something? Dismount and tell the mount to go first. Entity cart = entity.ridingEntity; - if (cart != null) - { + if (cart != null) { entity.mountEntity(null); cart = teleportEntity(cart, destination, checkOrientation); // We keep track of both so we can remount them on the other side. @@ -264,13 +244,10 @@ public class DDTeleporter { // Determine if our destination is in another realm. boolean difDest = entity.dimension != destination.getDimension(); - if (difDest) - { + if (difDest) { // Destination isn't loaded? Then we need to load it. newWorld = PocketManager.loadDimension(destination.getDimension()); - } - else - { + } else { newWorld = oldWorld; } @@ -279,10 +256,8 @@ public class DDTeleporter { // TODO Check to see if this is actually vital. DDTeleporter.placeInPortal(entity, newWorld, destination, properties, checkOrientation); - if (difDest) // Are we moving our target to a new dimension? - { - if(player != null) // Are we working with a player? - { + if (difDest) // Are we moving our target to a new dimension?{ + if(player != null) // Are we working with a player?{ // We need to do all this special stuff to move a player between dimensions. //Give the client the dimensionData for the destination @@ -294,7 +269,7 @@ public class DDTeleporter { // Set the new dimension and inform the client that it's moving to a new world. player.dimension = destination.getDimension(); - player.playerNetServerHandler.sendPacket(new S07PacketRespawn(player.dimension, player.worldObj.difficultySetting, newWorld.getWorldInfo().getTerrainType(), player.theItemInWorldManager.getGameType())); + player.playerNetServerHandler.sendPacket(new S07PacketRespawn(player.dimension, player.worldObj.getDifficulty(), newWorld.getWorldInfo().getTerrainType(), player.theItemInWorldManager.getGameType())); // GreyMaria: Used the safe player entity remover before. // This should fix an apparently unreported bug where @@ -321,33 +296,32 @@ public class DDTeleporter { } player.playerNetServerHandler.sendPacket(new S1FPacketSetExperience(player.experience, player.experienceTotal, player.experienceLevel)); - } + // Creates sanity by removing the entity from its old location's chunk entity list, if applicable. int entX = entity.chunkCoordX; int entZ = entity.chunkCoordZ; - if ((entity.addedToChunk) && (oldWorld.getChunkProvider().chunkExists(entX, entZ))) - { + if ((entity.addedToChunk) && (oldWorld.getChunkProvider().chunkExists(entX, entZ))) { oldWorld.getChunkFromChunkCoords(entX, entZ).removeEntity(entity); - oldWorld.getChunkFromChunkCoords(entX, entZ).isModified = true; + oldWorld.getChunkFromChunkCoords(entX, entZ).setModified(true); } + // Memory concerns. oldWorld.onEntityRemoved(entity); - if (player == null) // Are we NOT working with a player? - { + if (player == null) { // Are we NOT working with a player? NBTTagCompound entityNBT = new NBTTagCompound(); entity.isDead = false; entity.writeMountToNBT(entityNBT); - if(entityNBT.hasNoTags()) - { + + if(entityNBT.hasNoTags()) { return entity; } + entity.isDead = true; entity = EntityList.createEntityFromNBT(entityNBT, newWorld); - if (entity == null) - { + if (entity == null) { // TODO FIXME IMPLEMENT NULL CHECKS THAT ACTUALLY DO SOMETHING. /* * shit ourselves in an organized fashion, preferably @@ -360,27 +334,25 @@ public class DDTeleporter { // Finally, respawn the entity in its new home. newWorld.spawnEntityInWorld(entity); entity.setWorld(newWorld); - } + + entity.worldObj.updateEntityWithOptionalForce(entity, false); // Hey, remember me? It's time to remount. - if (cart != null) - { + if (cart != null) { // Was there a player teleported? If there was, it's important that we update shit. - if (player != null) - { + if (player != null) { entity.worldObj.updateEntityWithOptionalForce(entity, true); } entity.mountEntity(cart); } // Did we teleport a player? Load the chunk for them. - if (player != null) - { - newWorld.getChunkProvider().loadChunk(MathHelper.floor_double(entity.posX) >> 4, MathHelper.floor_double(entity.posZ) >> 4); + if (player != null) { + newWorld.getChunkProvider().provideChunk(MathHelper.floor_double(entity.posX) >> 4, MathHelper.floor_double(entity.posZ) >> 4); // Tell Forge we're moving its players so everyone else knows. // Let's try doing this down here in case this is what's killing NEI. - FMLCommonHandler.instance().firePlayerChangedDimensionEvent((EntityPlayer) entity, oldWorld.provider.dimensionId, newWorld.provider.dimensionId); + FMLCommonHandler.instance().firePlayerChangedDimensionEvent((EntityPlayer) entity, oldWorld.provider.getDimensionId(), newWorld.provider.getDimensionId()); } DDTeleporter.placeInPortal(entity, newWorld, destination, properties, checkOrientation); @@ -401,45 +373,33 @@ public class DDTeleporter { if(link == null) throw new IllegalArgumentException("link cannot be null."); if(entity == null) throw new IllegalArgumentException("entity cannot be null."); - if (cooldown == 0 || entity instanceof EntityPlayer) - { + if (cooldown == 0 || entity instanceof EntityPlayer) { // According to Steven, we increase the cooldown by a random amount so that if someone // makes a loop with doors and throws items in them, the slamming sounds won't all // sync up and be very loud. The cooldown itself prevents server-crashing madness. cooldown = 2 + random.nextInt(2); - } - else - { + } else { return; } - if (!initializeDestination(link, DDProperties.instance(),entity,door)) - { + if (!initializeDestination(link, DDProperties.instance(),entity,door)) { return; - } - if (link.linkType() == LinkType.RANDOM) - { + } if (link.linkType() == LinkType.RANDOM) { Point4D randomDestination = getRandomDestination(); - if (randomDestination != null) - { + if (randomDestination != null) { entity = teleportEntity(entity, randomDestination, true); entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.endermen.portal", 1.0F, 1.0F); } - } - else - { + } else { buildExitDoor(door, link, DDProperties.instance()); entity = teleportEntity(entity, link.destination(), link.linkType() != LinkType.UNSAFE_EXIT); entity.worldObj.playSoundEffect(entity.posX, entity.posY, entity.posZ, "mob.endermen.portal", 1.0F, 1.0F); } } - private static boolean initializeDestination(DimLink link, DDProperties properties, Entity entity, Block door) - { - if (link.hasDestination()&&link.linkType()!=LinkType.PERSONAL) - { - if (PocketManager.isBlackListed(link.destination().getDimension())) - { + private static boolean initializeDestination(DimLink link, DDProperties properties, Entity entity, Block door) { + if (link.hasDestination()&&link.linkType()!=LinkType.PERSONAL) { + if (PocketManager.isBlackListed(link.destination().getDimension())) { // This link leads to a dimension that has been blacklisted. // That means that it was a pocket and it was deleted. @@ -447,35 +407,26 @@ public class DDTeleporter { // the teleport operation. We don't need to assign 'link' with // a different value. DimData will overwrite it in-place. DimData start = PocketManager.getDimensionData(link.source().getDimension()); - if (link.linkType() == LinkType.DUNGEON) - { + if (link.linkType() == LinkType.DUNGEON) { // Ovewrite the link into a dungeon link with no destination start.createLink(link.source(), LinkType.DUNGEON, link.orientation(), null); - } - else - { - if (start.isPocketDimension()) - { + } else { + if (start.isPocketDimension()) { // Ovewrite the link into a safe exit link, because // this could be the only way out from a pocket. start.createLink(link.source(), LinkType.SAFE_EXIT, link.orientation(), null); - } - else - { + } else { // Cancel the teleport attempt return false; } } - } - else - { + } else { return true; } } // Check the destination type and respond accordingly - switch (link.linkType()) - { + switch (link.linkType()) { case DUNGEON: return PocketBuilder.generateNewDungeonPocket(link, properties); case POCKET: @@ -489,8 +440,7 @@ public class DDTeleporter { case UNSAFE_EXIT: return generateUnsafeExit(link); case LIMBO: - if(!(entity instanceof EntityPlayer)) - { + if(!(entity instanceof EntityPlayer)) { return false; } @@ -506,32 +456,27 @@ public class DDTeleporter { } } - private static boolean setupPersonalLink(DimLink link, DDProperties properties,Entity entity, Block door) - { - if(!(entity instanceof EntityPlayer)) - { + private static boolean setupPersonalLink(DimLink link, DDProperties properties,Entity entity, Block door) { + if(!(entity instanceof EntityPlayer)) { return false; } EntityPlayer player = (EntityPlayer)entity; DimData dim = PocketManager.getPersonalDimensionForPlayer(player.getGameProfile().getId().toString()); - if(dim == null) - { + if(dim == null) { return PocketBuilder.generateNewPersonalPocket(link, properties, player, door); } DimLink personalHomeLink = dim.getLink(dim.origin()); - if(personalHomeLink!=null) - { + if(personalHomeLink!=null) { link.tail.setDestination(personalHomeLink.source()); - PocketManager.getDimensionData(link.source().getDimension()).setLinkDestination(personalHomeLink, link.source().getX(), link.source().getY(), link.source().getZ()); + PocketManager.getDimensionData(link.source().getDimension()).setLinkDestination(personalHomeLink, link.source().toBlockPos()); } return true; } - private static Point4D getRandomDestination() - { + private static Point4D getRandomDestination() { // Our aim is to return a random link's source point // so that a link of type RANDOM can teleport a player there. @@ -543,27 +488,22 @@ public class DDTeleporter { // Don't just pick a random root and a random link within that root // because we want to have unbiased selection among all links. ArrayList matches = new ArrayList(); - for (DimData dimension : PocketManager.getRootDimensions()) - { - for (DimLink link : dimension.getAllLinks()) - { - if (link.linkType() != LinkType.RANDOM) - { + for (DimData dimension : PocketManager.getRootDimensions()) { + for (DimLink link : dimension.getAllLinks()) { + if (link.linkType() != LinkType.RANDOM) { matches.add(link.source()); } } } // Pick a random point, if any is available - if (!matches.isEmpty()) - { + if (!matches.isEmpty()) { return matches.get( random.nextInt(matches.size()) ); } return null; } - private static boolean generateUnsafeExit(DimLink link) - { + private static boolean generateUnsafeExit(DimLink link) { // An unsafe exit teleports the user to the first available air space // in the pocket's root dimension. X and Z are kept roughly the same // as the source location, but Y is set by searching down. We don't @@ -575,68 +515,58 @@ public class DDTeleporter { DimData current = PocketManager.getDimensionData(link.point.getDimension()); - if (current.isPocketDimension()) - { + if (current.isPocketDimension()) { Point4D source = link.source(); World world = PocketManager.loadDimension(current.root().id()); - if (world == null) - { + if (world == null) { return false; } BlockPos destination = yCoordHelper.findDropPoint(world, source.getX(), source.getY() + 1, source.getZ()); - if (destination != null) - { - current.root().setLinkDestination(link, destination.getX(), destination.getY(), destination.getZ()); + if (destination != null) { + current.root().setLinkDestination(link, destination); return true; } } + return false; } - private static void buildExitDoor(Block door,DimLink link, DDProperties prop) - { + private static void buildExitDoor(Block door,DimLink link, DDProperties prop) { World startWorld = PocketManager.loadDimension(link.source().getDimension()); World destWorld = PocketManager.loadDimension(link.destination().getDimension()); - TileEntity doorTE = startWorld.getTileEntity(link.source().getX(), link.source().getY(), link.point.getZ()); - if(doorTE instanceof TileEntityDimDoor) - { - if((TileEntityDimDoor.class.cast(doorTE).hasGennedPair)) - { + TileEntity doorTE = startWorld.getTileEntity(link.source().toBlockPos()); + if(doorTE instanceof TileEntityDimDoor) { + if((TileEntityDimDoor.class.cast(doorTE).hasGennedPair)) { return; } TileEntityDimDoor.class.cast(doorTE).hasGennedPair=true; - Block blockToReplace = destWorld.getBlock(link.destination().getX(), link.destination().getY(), link.destination().getZ()); + Block blockToReplace = destWorld.getBlockState(link.destination().toBlockPos()).getBlock(); - if(!destWorld.isAirBlock(link.destination().getX(), link.destination().getY(), link.destination().getZ())) - { - if(!blockToReplace.isReplaceable(destWorld, link.destination().getX(), link.destination().getY(), link.destination().getZ())) - { + if(!destWorld.isAirBlock(link.destination().toBlockPos())) { + if(!blockToReplace.isReplaceable(destWorld, link.destination().toBlockPos())) { return; } } - ItemDoor.placeDoorBlock(destWorld, link.destination().getX(), link.destination().getY()-1, link.destination().getZ(),link.getDestinationOrientation(), door); + ItemDoor.placeDoor(destWorld, link.destination().toBlockPos().down(), link.getDestinationOrientation(), door); - TileEntity doorDestTE = ((BaseDimDoor)door).initDoorTE(destWorld, link.destination().getX(), link.destination().getY(), link.destination().getZ()); + TileEntity doorDestTE = ((BaseDimDoor)door).initDoorTE(destWorld, link.destination().toBlockPos()); - if(doorDestTE instanceof TileEntityDimDoor) - { + if(doorDestTE instanceof TileEntityDimDoor) { TileEntityDimDoor.class.cast(doorDestTE).hasGennedPair=true; } } } - private static boolean generateSafeExit(DimLink link, DDProperties properties) - { + private static boolean generateSafeExit(DimLink link, DDProperties properties) { DimData current = PocketManager.getDimensionData(link.point.getDimension()); return generateSafeExit(current.root(), link, properties); } - private static boolean generateDungeonExit(DimLink link, DDProperties properties) - { + private static boolean generateDungeonExit(DimLink link, DDProperties properties) { // A dungeon exit acts the same as a safe exit, but has the chance of // taking the user to any non-pocket dimension, excluding Limbo and The End. // There is a chance of choosing the Nether first before other root dimensions @@ -647,21 +577,16 @@ public class DDTeleporter { ArrayList roots = PocketManager.getRootDimensions(); int shiftChance = START_ROOT_SHIFT_CHANCE + ROOT_SHIFT_CHANCE_PER_LEVEL * (current.packDepth() - 1); - if (random.nextInt(MAX_ROOT_SHIFT_CHANCE) < shiftChance) - { - if (current.root().id() != OVERWORLD_DIMENSION_ID && random.nextInt(MAX_OVERWORLD_EXIT_CHANCE) < OVERWORLD_EXIT_CHANCE) - { + if (random.nextInt(MAX_ROOT_SHIFT_CHANCE) < shiftChance) { + if (current.root().id() != OVERWORLD_DIMENSION_ID && random.nextInt(MAX_OVERWORLD_EXIT_CHANCE) < OVERWORLD_EXIT_CHANCE) { return generateSafeExit(PocketManager.createDimensionDataDangerously(OVERWORLD_DIMENSION_ID), link, properties); - } - if (current.root().id() != NETHER_DIMENSION_ID && random.nextInt(MAX_NETHER_EXIT_CHANCE) < NETHER_EXIT_CHANCE) - { + } if (current.root().id() != NETHER_DIMENSION_ID && random.nextInt(MAX_NETHER_EXIT_CHANCE) < NETHER_EXIT_CHANCE) { return generateSafeExit(PocketManager.createDimensionDataDangerously(NETHER_DIMENSION_ID), link, properties); } - for (int attempts = 0; attempts < 10; attempts++) - { + + for (int attempts = 0; attempts < 10; attempts++) { DimData selection = roots.get( random.nextInt(roots.size()) ); - if (selection != current.root() && isValidForDungeonExit(selection, properties)) - { + if (selection != current.root() && isValidForDungeonExit(selection, properties)) { return generateSafeExit(selection, link, properties); } } @@ -674,18 +599,17 @@ public class DDTeleporter { private static boolean isValidForDungeonExit(DimData destination, DDProperties properties) { // Prevent exits to The End and Limbo - if (destination.id() == END_DIMENSION_ID || destination.id() == properties.LimboDimensionID) - { + if (destination.id() == END_DIMENSION_ID || destination.id() == properties.LimboDimensionID) { return false; } + // Prevent exits to Witchery's Spirit World; we need to load the dimension to retrieve its name. // This is okay because the dimension would have to be loaded subsequently by generateSafeExit(). World world = PocketManager.loadDimension(destination.id()); return (world != null && !SPIRIT_WORLD_NAME.equals(world.provider.getDimensionName())); } - private static boolean generateSafeExit(DimData destinationDim, DimLink link, DDProperties properties) - { + private static boolean generateSafeExit(DimData destinationDim, DimLink link, DDProperties properties) { // A safe exit attempts to place a Warp Door in a dimension with // some precautions to protect the player. The X and Z coordinates // are fixed to match the source (mostly - may be shifted a little), @@ -694,8 +618,7 @@ public class DDTeleporter { Point4D source = link.source(); World world = PocketManager.loadDimension(destinationDim.id()); - if (world == null) - { + if (world == null) { return false; } @@ -704,40 +627,28 @@ public class DDTeleporter { BlockPos locationUp = yCoordHelper.findSafeCubeUp(world, source.getX(), startY, source.getZ()); BlockPos locationDown = yCoordHelper.findSafeCubeDown(world, source.getX(), startY, source.getZ()); - if (locationUp == null) - { + if (locationUp == null) { + destination = locationDown; + } else if (locationDown == null) { + destination = locationUp; + } else if (locationUp.getY() - startY <= startY - locationDown.getY()) { + destination = locationUp; + } else { destination = locationDown; } - else if (locationDown == null) - { - destination = locationUp; - } - else if (locationUp.getY() - startY <= startY - locationDown.getY()) - { - destination = locationUp; - } - else - { - destination = locationDown; - } - if (destination != null) - { + + if (destination != null) { // Set up a 3x3 platform at the destination // Only place fabric of reality if the block is replaceable or air // Don't cause block updates - int x = destination.getX(); - int y = destination.getY(); - int z = destination.getZ(); - for (int dx = -1; dx <= 1; dx++) - { - for (int dz = -1; dz <= 1; dz++) - { + BlockPos pos = destination; + for (int dx = -1; dx <= 1; dx++) { + for (int dz = -1; dz <= 1; dz++) { // Checking if the block is not an opaque solid is equivalent // checking for a replaceable block, because we only allow // exits intersecting blocks on those two surfaces. - if (!world.isBlockNormalCubeDefault(x + dx, y, z + dz, false)) - { - world.setBlock(x + dx, y, z + dz, DimDoors.blockDimWall, 0, 2); + if (!world.isBlockNormalCube(pos.add(dx, 0, dz), false)) { + world.setBlockState(pos.add(dx, 0, dz), DimDoors.blockDimWall.getDefaultState()); } } } @@ -745,31 +656,28 @@ public class DDTeleporter { // Clear out any blocks in the space above the platform layer // This removes any potential threats like replaceable Poison Ivy from BoP // Remember to avoid block updates to keep gravel from collapsing - for (int dy = 1; dy <= 2; dy++) - { - for (int dx = -1; dx <= 1; dx++) - { - for (int dz = -1; dz <= 1; dz++) - { - world.setBlock(x + dx, y + dy, z + dz, Blocks.air, 0, 2); + for (int dy = 1; dy <= 2; dy++) { + for (int dx = -1; dx <= 1; dx++) { + for (int dz = -1; dz <= 1; dz++) { + world.setBlockState(pos.add(dx, dy, dz), Blocks.air.getDefaultState()); } } } // Create a reverse link for returning - int orientation = getDestinationOrientation(source, properties); + EnumFacing orientation = getDestinationOrientation(source, properties); DimData sourceDim = PocketManager.getDimensionData(link.source().getDimension()); - DimLink reverse = destinationDim.createLink(x, y + 2, z, LinkType.REVERSE,orientation); + DimLink reverse = destinationDim.createLink(pos.up(2), LinkType.REVERSE,orientation); - sourceDim.setLinkDestination(reverse, source.getX(), source.getY(), source.getZ()); + sourceDim.setLinkDestination(reverse, source.toBlockPos()); // Set up the warp door at the destination - orientation = BlockRotator.transformMetadata(orientation, 2, DimDoors.warpDoor); - ItemDoor.placeDoorBlock(world, x, y + 1, z, orientation, DimDoors.warpDoor); + orientation = EnumFacingHelper.getFacingFromBlockState(BlockRotator.transform(DimDoors.warpDoor.getDefaultState(), 2)); + ItemDoor.placeDoor(world, pos.up(), orientation, DimDoors.warpDoor); // Complete the link to the destination // This comes last so the destination isn't set unless everything else works first - destinationDim.setLinkDestination(link, x, y + 2, z); + destinationDim.setLinkDestination(link, pos.up(2)); } return (destination != null); diff --git a/src/main/java/com/zixiken/dimdoors/schematic/ChunkBlockSetter.java b/src/main/java/com/zixiken/dimdoors/schematic/ChunkBlockSetter.java index d303f0de..bee1a22d 100644 --- a/src/main/java/com/zixiken/dimdoors/schematic/ChunkBlockSetter.java +++ b/src/main/java/com/zixiken/dimdoors/schematic/ChunkBlockSetter.java @@ -1,50 +1,37 @@ package com.zixiken.dimdoors.schematic; import net.minecraft.block.Block; +import net.minecraft.block.state.IBlockState; +import net.minecraft.util.BlockPos; import net.minecraft.world.World; import net.minecraft.world.chunk.Chunk; import net.minecraft.world.chunk.storage.ExtendedBlockStorage; -public class ChunkBlockSetter implements IBlockSetter -{ +public class ChunkBlockSetter implements IBlockSetter { private boolean ignoreAir; - public ChunkBlockSetter(boolean ignoreAir) - { + public ChunkBlockSetter(boolean ignoreAir) { this.ignoreAir = ignoreAir; } - public void setBlock(World world, int x, int y, int z, Block block, int metadata) - { - if (block.isAir(world, x, y, z) && ignoreAir) - { + public void setBlock(World world, BlockPos pos, IBlockState state) { + if (state.getBlock().isAir(world, pos) && ignoreAir) { return; } - int cX = x >> 4; - int cZ = z >> 4; - int cY = y >> 4; + int cX = pos.getX() >> 4; + int cZ = pos.getY() >> 4; + Chunk chunk; - int localX = (x % 16) < 0 ? (x % 16) + 16 : (x % 16); - int localZ = (z % 16) < 0 ? (z % 16) + 16 : (z % 16); - ExtendedBlockStorage extBlockStorage; + int localX = (pos.getX() % 16) < 0 ? (pos.getX() % 16) + 16 : (pos.getX() % 16); + int localZ = (pos.getZ() % 16) < 0 ? (pos.getZ() % 16) + 16 : (pos.getZ() % 16); - try - { + try { chunk = world.getChunkFromChunkCoords(cX, cZ); - extBlockStorage = chunk.getBlockStorageArray()[cY]; - if (extBlockStorage == null) - { - extBlockStorage = new ExtendedBlockStorage(cY << 4, !world.provider.hasNoSky); - chunk.getBlockStorageArray()[cY] = extBlockStorage; - } - extBlockStorage.func_150818_a(localX, y & 15, localZ, block); - extBlockStorage.setExtBlockMetadata(localX, y & 15, localZ, metadata); + chunk.setBlockState(new BlockPos(localX, pos.getY() & 15, localZ), state); chunk.setChunkModified(); - } - catch(Exception e) - { + } catch(Exception e) { e.printStackTrace(); } } diff --git a/src/main/java/com/zixiken/dimdoors/ticking/MobMonolith.java b/src/main/java/com/zixiken/dimdoors/ticking/MobMonolith.java index f9d56c7e..c1d45279 100644 --- a/src/main/java/com/zixiken/dimdoors/ticking/MobMonolith.java +++ b/src/main/java/com/zixiken/dimdoors/ticking/MobMonolith.java @@ -9,9 +9,7 @@ import net.minecraft.entity.SharedMonsterAttributes; import net.minecraft.entity.monster.IMob; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.util.AxisAlignedBB; -import net.minecraft.util.DamageSource; -import net.minecraft.util.MathHelper; +import net.minecraft.util.*; import net.minecraft.world.World; import com.zixiken.dimdoors.config.DDProperties; import com.zixiken.dimdoors.core.DDTeleporter; @@ -40,8 +38,7 @@ public class MobMonolith extends EntityFlying implements IMob private static DDProperties properties = null; - public MobMonolith(World world) - { + public MobMonolith(World world) { super(world); this.setSize(WIDTH, HEIGHT); this.noClip = true; @@ -51,88 +48,74 @@ public class MobMonolith extends EntityFlying implements IMob } public boolean isDangerous() { - return properties.MonolithTeleportationEnabled && (properties.LimboDimensionID != worldObj.provider.dimensionId || !properties.DangerousLimboMonolithsDisabled); + return properties.MonolithTeleportationEnabled && (properties.LimboDimensionID != worldObj.provider.getDimensionId() || !properties.DangerousLimboMonolithsDisabled); } @Override - protected void damageEntity(DamageSource par1DamageSource, float par2) - { + protected void damageEntity(DamageSource par1DamageSource, float par2) { return; } @Override - public boolean attackEntityFrom(DamageSource par1DamageSource, float par2) - { - if (par1DamageSource != DamageSource.inWall) - { + public boolean attackEntityFrom(DamageSource par1DamageSource, float par2) { + if (par1DamageSource != DamageSource.inWall) { this.aggro = MAX_AGGRO; } return false; } @Override - public boolean canBreatheUnderwater() - { + public boolean canBreatheUnderwater() { return true; } @Override - public AxisAlignedBB getBoundingBox() - { + public AxisAlignedBB getCollisionBoundingBox() { return null; } @Override - public AxisAlignedBB getCollisionBox(Entity par1Entity) - { + public AxisAlignedBB getCollisionBox(Entity par1Entity) { return null; } @Override - public boolean canDespawn() - { + public boolean canDespawn() { return false; } @Override - protected void applyEntityAttributes() - { + protected void applyEntityAttributes() { super.applyEntityAttributes(); this.getAttributeMap().getAttributeInstance(SharedMonsterAttributes.maxHealth).setBaseValue(57005); } @Override - public boolean canBePushed() - { + public boolean canBePushed() { return false; } @Override - public float getEyeHeight() - { + public float getEyeHeight() { return EYE_HEIGHT; } @Override - protected void entityInit() - { + protected void entityInit() { super.entityInit(); // Add a short for the aggro level this.dataWatcher.addObject(AGGRO_WATCHER_INDEX, Short.valueOf((short) 0)); } @Override - public boolean isEntityAlive() - { + public boolean isEntityAlive() { return false; } @Override - public void onEntityUpdate() - { + public void onEntityUpdate() { // Remove this Monolith if it's not in Limbo or in a pocket dimension - if (!(this.worldObj.provider.dimensionId == properties.LimboDimensionID|| this.worldObj.provider instanceof PocketProvider)) - { + if (!(this.worldObj.provider.getDimensionId() == properties.LimboDimensionID|| this.worldObj.provider instanceof PocketProvider)) { this.setDead(); super.onEntityUpdate(); return; @@ -146,11 +129,9 @@ public class MobMonolith extends EntityFlying implements IMob this.updateAggroLevel(player, visibility); // Change orientation and face a player if one is in range - if (player != null) - { + if (player != null) { this.facePlayer(player); - if (!this.worldObj.isRemote && isDangerous()) - { + if (!this.worldObj.isRemote && isDangerous()) { // Play sounds on the server side, if the player isn't in Limbo. // Limbo is excluded to avoid drowning out its background music. // Also, since it's a large open area with many Monoliths, some @@ -159,23 +140,19 @@ public class MobMonolith extends EntityFlying implements IMob this.playSounds(player); } - if (visibility) - { + if (visibility) { // Only spawn particles on the client side and outside Limbo - if (this.worldObj.isRemote && isDangerous()) - { + if (this.worldObj.isRemote && isDangerous()) { this.spawnParticles(player); } // Teleport the target player if various conditions are met if (aggro >= MAX_AGGRO && !this.worldObj.isRemote && - properties.MonolithTeleportationEnabled && !player.capabilities.isCreativeMode && - isDangerous()) - { + properties.MonolithTeleportationEnabled && !player.capabilities.isCreativeMode && isDangerous()) { this.aggro = 0; Point4D destination = LimboProvider.getLimboSkySpawn(player, properties); DDTeleporter.teleportEntity(player, destination, false); - player.worldObj.playSoundAtEntity(player, DimDoors.modid + ":crack", 13, 1); + player.worldObj.playSoundAtEntity(player, DimDoors.MODID + ":crack", 13, 1); } } } @@ -185,28 +162,21 @@ public class MobMonolith extends EntityFlying implements IMob { // If we're working on the server side, adjust aggro level // If we're working on the client side, retrieve aggro level from dataWatcher - if (!this.worldObj.isRemote) - { + if (!this.worldObj.isRemote) { // Server side... // Rapidly increase the aggro level if this Monolith can see the player - if (visibility) - { - if (this.worldObj.provider.dimensionId == properties.LimboDimensionID) - { + if (visibility) { + if (this.worldObj.provider.getDimensionId() == properties.LimboDimensionID) { if (isDangerous()) aggro++; else aggro += 36; - } - else - { + } else { // Aggro increases faster outside of Limbo aggro += 3; } - } - else - { - if (isDangerous()) { + } else { + if (isDangerous()) { if (aggro > aggroCap) { // Decrease aggro over time aggro--; @@ -221,16 +191,13 @@ public class MobMonolith extends EntityFlying implements IMob int maxAggro = isDangerous()?MAX_AGGRO:180; aggro = (short) MathHelper.clamp_int(aggro, 0, maxAggro); this.dataWatcher.updateObject(AGGRO_WATCHER_INDEX, Short.valueOf(aggro)); - } - else - { + } else { // Client side... aggro = this.dataWatcher.getWatchableObjectShort(AGGRO_WATCHER_INDEX); } } - public int getTextureState() - { + public int getTextureState() { // Determine texture state from aggro progress return MathHelper.clamp_int(MAX_TEXTURE_STATE * aggro / MAX_AGGRO, 0, MAX_TEXTURE_STATE); } @@ -239,33 +206,27 @@ public class MobMonolith extends EntityFlying implements IMob * Plays sounds at different levels of aggro, using soundTime to prevent too many sounds at once. * @param entityPlayer */ - private void playSounds(EntityPlayer entityPlayer) - { + private void playSounds(EntityPlayer entityPlayer) { float aggroPercent = this.getAggroProgress(); if (this.soundTime <= 0) { - this.playSound(DimDoors.modid + ":monk", 1F, 1F); + this.playSound(DimDoors.MODID + ":monk", 1F, 1F); this.soundTime = 100; - } - if ((aggroPercent > 0.70) && this.soundTime < 100) - { - this.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, DimDoors.modid + ":tearing", 1F, (float) (1 + this.rand.nextGaussian())); + } if ((aggroPercent > 0.70) && this.soundTime < 100) { + this.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, DimDoors.MODID + ":tearing", 1F, (float) (1 + this.rand.nextGaussian())); this.soundTime = 100 + this.rand.nextInt(75); - } - if ((aggroPercent > 0.80) && this.soundTime < 200) - { - this.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, DimDoors.modid + ":tearing", 7, 1F); + } if ((aggroPercent > 0.80) && this.soundTime < 200) { + this.worldObj.playSoundEffect(entityPlayer.posX, entityPlayer.posY, entityPlayer.posZ, DimDoors.MODID + ":tearing", 7, 1F); this.soundTime = 250; } this.soundTime--; } - private void spawnParticles(EntityPlayer player) - { + private void spawnParticles(EntityPlayer player) { int count = 10 * aggro / MAX_AGGRO; - for (int i = 1; i < count; ++i) - { - player.worldObj.spawnParticle("portal", player.posX + (this.rand.nextDouble() - 0.5D) * this.width, + + for (int i = 1; i < count; ++i) { + player.worldObj.spawnParticle(EnumParticleTypes.PORTAL, player.posX + (this.rand.nextDouble() - 0.5D) * this.width, player.posY + this.rand.nextDouble() * player.height - 0.75D, player.posZ + (this.rand.nextDouble() - 0.5D) * player.width, (this.rand.nextDouble() - 0.5D) * 2.0D, -this.rand.nextDouble(), @@ -273,13 +234,11 @@ public class MobMonolith extends EntityFlying implements IMob } } - public float getAggroProgress() - { + public float getAggroProgress() { return ((float) aggro) / MAX_AGGRO; } - private void facePlayer(EntityPlayer player) - { + private void facePlayer(EntityPlayer player) { double d0 = player.posX - this.posX; double d1 = player.posZ - this.posZ; double d2 = (player.posY + player.getEyeHeight()) - (this.posY + this.getEyeHeight()); @@ -292,15 +251,13 @@ public class MobMonolith extends EntityFlying implements IMob } @Override - public void writeEntityToNBT(NBTTagCompound rootTag) - { + public void writeEntityToNBT(NBTTagCompound rootTag) { super.writeEntityToNBT(rootTag); rootTag.setInteger("Aggro", this.aggro); } @Override - public void readEntityFromNBT(NBTTagCompound rootTag) - { + public void readEntityFromNBT(NBTTagCompound rootTag) { super.readEntityFromNBT(rootTag); // Load Monoliths with half aggro so they don't teleport players instantly @@ -308,29 +265,22 @@ public class MobMonolith extends EntityFlying implements IMob } @Override - public boolean getCanSpawnHere() - { + public boolean getCanSpawnHere() { @SuppressWarnings("rawtypes") - List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.getBoundingBox( this.posX-15, posY-4, this.posZ-15, this.posX+15, this.posY+15, this.posZ+15)); + List list = this.worldObj.getEntitiesWithinAABBExcludingEntity(this, AxisAlignedBB.fromBounds(this.posX-15, posY-4, this.posZ-15, this.posX+15, this.posY+15, this.posZ+15)); - if (this.worldObj.provider.dimensionId == DDProperties.instance().LimboDimensionID) - { - if(list.size()>0) - { + if (this.worldObj.provider.getDimensionId() == DDProperties.instance().LimboDimensionID) { + if(list.size()>0) { return false; } } - else if(this.worldObj.provider instanceof PocketProvider) - { - if (list.size() > 5 || - this.worldObj.canBlockSeeTheSky((int)this.posX, (int)this.posY, (int)this.posZ)) - { + else if(this.worldObj.provider instanceof PocketProvider) { + if (list.size() > 5 || this.worldObj.canBlockSeeSky(new BlockPos((int)this.posX, (int)this.posY, (int)this.posZ))) { return false; } } - return this.worldObj.checkNoEntityCollision(this.boundingBox) && - this.worldObj.getCollidingBoundingBoxes(this, this.boundingBox).isEmpty() && - !this.worldObj.isAnyLiquid(this.boundingBox); + + return this.worldObj.checkNoEntityCollision(this.getEntityBoundingBox()) && this.worldObj.getCollidingBoundingBoxes(this, this.getEntityBoundingBox()).isEmpty() && !this.worldObj.isAnyLiquid(this.getEntityBoundingBox()); } } \ No newline at end of file diff --git a/src/main/java/com/zixiken/dimdoors/world/CustomSkyProvider.java b/src/main/java/com/zixiken/dimdoors/world/CustomSkyProvider.java index 6b49d5e1..93937092 100644 --- a/src/main/java/com/zixiken/dimdoors/world/CustomSkyProvider.java +++ b/src/main/java/com/zixiken/dimdoors/world/CustomSkyProvider.java @@ -50,7 +50,7 @@ public class CustomSkyProvider extends IRenderHandler if (mc.theWorld.provider.isSurfaceWorld()) { GL11.glDisable(GL11.GL_TEXTURE_2D); - Vec3 vec3 = world.getSkyColor(mc.renderViewEntity, par1); + Vec3 vec3 = world.getSkyColor(mc.getRenderViewEntity(), par1); float f1 = (float)vec3.xCoord; float f2 = (float)vec3.yCoord; float f3 = (float)vec3.zCoord;