Initial rendering fix for rifts

This commit is contained in:
CannibalVox
2015-03-08 17:46:42 -05:00
parent 22654722b6
commit 4d26a2ec31
5 changed files with 184 additions and 176 deletions

View File

@@ -53,7 +53,7 @@ public class BlockRift extends Block implements ITileEntityProvider
private final ArrayList<Block> blocksImmuneToRift; // List of Vanilla blocks immune to rifts private final ArrayList<Block> blocksImmuneToRift; // List of Vanilla blocks immune to rifts
private final ArrayList<Block> modBlocksImmuneToRift; // List of DD blocks immune to rifts private final ArrayList<Block> modBlocksImmuneToRift; // List of DD blocks immune to rifts
public BlockRift(int j, Material par2Material, DDProperties properties) public BlockRift(Material par2Material, DDProperties properties)
{ {
super(par2Material); super(par2Material);
this.setTickRandomly(true); this.setTickRandomly(true);
@@ -131,11 +131,7 @@ public class BlockRift extends Block implements ITileEntityProvider
public int getRenderType() public int getRenderType()
{ {
// This doesn't do anything yet // This doesn't do anything yet
if (mod_pocketDim.isPlayerWearingGoogles) return 0;
{
return 0;
}
return 8;
} }
/** /**
@@ -320,12 +316,11 @@ public class BlockRift extends Block implements ITileEntityProvider
TileEntityRift tile = (TileEntityRift)world.getTileEntity(x, y, z); TileEntityRift tile = (TileEntityRift)world.getTileEntity(x, y, z);
if(rand.nextBoolean())
{
//renders an extra little blob on top of the actual rift location so its easier to find. Eventually will only render if the player has the goggles. //renders an extra little blob on top of the actual rift location so its easier to find. Eventually will only render if the player has the goggles.
FMLClientHandler.instance().getClient().effectRenderer.addEffect(new GoggleRiftFX(world,x+.5, y+.5, z+.5, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, FMLClientHandler.instance().getClient().effectRenderer)); FMLClientHandler.instance().getClient().effectRenderer.addEffect(new GoggleRiftFX(world,x+.5, y+.5, z+.5, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, FMLClientHandler.instance().getClient().effectRenderer));
}
if(tile.shouldClose) if(tile.shouldClose)
{ {
//renders an opposite color effect if it is being closed by the rift remover //renders an opposite color effect if it is being closed by the rift remover
FMLClientHandler.instance().getClient().effectRenderer.addEffect(new ClosingRiftFX(world,x+.5, y+.5, z+.5, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, FMLClientHandler.instance().getClient().effectRenderer)); FMLClientHandler.instance().getClient().effectRenderer.addEffect(new ClosingRiftFX(world,x+.5, y+.5, z+.5, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, rand.nextGaussian() * 0.01D, FMLClientHandler.instance().getClient().effectRenderer));

View File

@@ -140,8 +140,6 @@ public class mod_pocketDim
public static BiomeGenBase limboBiome; public static BiomeGenBase limboBiome;
public static BiomeGenBase pocketBiome; public static BiomeGenBase pocketBiome;
public static boolean isPlayerWearingGoogles = false;
public static DDProperties properties; public static DDProperties properties;
public static DDWorldProperties worldProperties; public static DDWorldProperties worldProperties;
public static CustomLimboPopulator spawner; //Added this field temporarily. Will be refactored out later. public static CustomLimboPopulator spawner; //Added this field temporarily. Will be refactored out later.
@@ -206,7 +204,7 @@ public class mod_pocketDim
blockDimWall = new BlockDimWall(0, Material.iron).setLightLevel(1.0F).setHardness(0.1F).setBlockName("blockDimWall"); blockDimWall = new BlockDimWall(0, Material.iron).setLightLevel(1.0F).setHardness(0.1F).setBlockName("blockDimWall");
blockDimWallPerm = (new BlockDimWallPerm(0, Material.iron)).setLightLevel(1.0F).setBlockUnbreakable().setResistance(6000000.0F).setBlockName("blockDimWallPerm"); blockDimWallPerm = (new BlockDimWallPerm(0, Material.iron)).setLightLevel(1.0F).setBlockUnbreakable().setResistance(6000000.0F).setBlockName("blockDimWallPerm");
warpDoor = new WarpDoor(Material.wood, properties).setHardness(1.0F) .setBlockName("dimDoorWarp"); warpDoor = new WarpDoor(Material.wood, properties).setHardness(1.0F) .setBlockName("dimDoorWarp");
blockRift = (BlockRift) (new BlockRift(0, Material.air, properties).setHardness(1.0F) .setBlockName("rift")); blockRift = (BlockRift) (new BlockRift(Material.fire, properties).setHardness(1.0F) .setBlockName("rift"));
blockLimbo = new BlockLimbo(15, Material.iron, properties.LimboDimensionID, limboDecay).setHardness(.2F).setBlockName("BlockLimbo").setLightLevel(.0F); blockLimbo = new BlockLimbo(15, Material.iron, properties.LimboDimensionID, limboDecay).setHardness(.2F).setBlockName("BlockLimbo").setLightLevel(.0F);
unstableDoor = (new UnstableDoor(Material.iron, properties).setHardness(.2F).setBlockName("chaosDoor").setLightLevel(.0F) ); unstableDoor = (new UnstableDoor(Material.iron, properties).setHardness(.2F).setBlockName("chaosDoor").setLightLevel(.0F) );
dimensionalDoor = (DimensionalDoor) (new DimensionalDoor(Material.iron, properties).setHardness(1.0F).setResistance(2000.0F) .setBlockName("dimDoor")); dimensionalDoor = (DimensionalDoor) (new DimensionalDoor(Material.iron, properties).setHardness(1.0F).setResistance(2000.0F) .setBlockName("dimDoor"));
@@ -310,10 +308,10 @@ public class mod_pocketDim
LanguageRegistry.instance().addStringLocalization("itemGroup.dimDoorsCustomTab", "en_US", "Dimensional Doors Items"); LanguageRegistry.instance().addStringLocalization("itemGroup.dimDoorsCustomTab", "en_US", "Dimensional Doors Items");
GameRegistry.registerTileEntity(TileEntityDimDoor.class, "TileEntityDimDoor"); GameRegistry.registerTileEntity(TileEntityDimDoor.class, "TileEntityDimDoor");
GameRegistry.registerTileEntity(TileEntityRift.class, "TileEntityRift"); GameRegistry.registerTileEntity(TileEntityRift.class, "TileEntityRift");
GameRegistry.registerTileEntity(TileEntityTransTrapdoor.class, "TileEntityDimHatch"); GameRegistry.registerTileEntity(TileEntityTransTrapdoor.class, "TileEntityDimHatch");
GameRegistry.registerTileEntity(TileEntityDimDoorGold.class, "TileEntityDimDoorGold"); GameRegistry.registerTileEntity(TileEntityDimDoorGold.class, "TileEntityDimDoorGold");
EntityRegistry.registerModEntity(MobMonolith.class, "Monolith", properties.MonolithEntityID, this, 70, 1, true); EntityRegistry.registerModEntity(MobMonolith.class, "Monolith", properties.MonolithEntityID, this, 70, 1, true);
EntityList.IDtoClassMapping.put(properties.MonolithEntityID, MobMonolith.class); EntityList.IDtoClassMapping.put(properties.MonolithEntityID, MobMonolith.class);

View File

@@ -289,21 +289,30 @@ public class TileEntityRift extends DDTileEntityBase
@Override @Override
public Packet getDescriptionPacket() public Packet getDescriptionPacket()
{ {
NBTTagCompound tag = new NBTTagCompound();
writeToNBT(tag);
if(PocketManager.getLink(xCoord, yCoord, zCoord, worldObj)!=null) if(PocketManager.getLink(xCoord, yCoord, zCoord, worldObj)!=null)
{ {
ClientLinkData linkData = new ClientLinkData(PocketManager.getLink(xCoord, yCoord, zCoord, worldObj)); ClientLinkData linkData = new ClientLinkData(PocketManager.getLink(xCoord, yCoord, zCoord, worldObj));
NBTTagCompound tag = new NBTTagCompound();
NBTTagCompound link = new NBTTagCompound();
linkData.writeToNBT(tag); linkData.writeToNBT(tag);
return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 1, tag);
tag.setTag("Link", link);
} }
return null; return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, tag);
} }
@Override @Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
NBTTagCompound tag = pkt.func_148857_g(); NBTTagCompound tag = pkt.func_148857_g();
ClientLinkData linkData = ClientLinkData.readFromNBT(tag); readFromNBT(tag);
PocketManager.getLinkWatcher().onCreated(linkData);
if (tag.hasKey("Link")) {
ClientLinkData linkData = ClientLinkData.readFromNBT(tag.getCompoundTag("Link"));
PocketManager.getLinkWatcher().onCreated(linkData);
}
} }
@Override @Override

View File

@@ -23,8 +23,6 @@ public class ClientProxy extends CommonProxy
//MinecraftForgeClient.preloadTexture(BLOCK_PNG); //MinecraftForgeClient.preloadTexture(BLOCK_PNG);
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDimDoor.class, new RenderDimDoor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDimDoor.class, new RenderDimDoor());
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTransTrapdoor.class, new RenderTransTrapdoor()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityTransTrapdoor.class, new RenderTransTrapdoor());
//This code activates the new rift rendering, as well as a bit of code in TileEntityRift
ClientRegistry.bindTileEntitySpecialRenderer(TileEntityRift.class, new RenderRift());
//MinecraftForgeClient.preloadTexture(RIFT2_PNG); //MinecraftForgeClient.preloadTexture(RIFT2_PNG);
RenderingRegistry.registerEntityRenderingHandler(MobMonolith.class, new RenderMobObelisk(.5F)); RenderingRegistry.registerEntityRenderingHandler(MobMonolith.class, new RenderMobObelisk(.5F));

View File

@@ -12,180 +12,188 @@ import cpw.mods.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)
public class GoggleRiftFX extends EntityFireworkSparkFX public class GoggleRiftFX extends EntityFireworkSparkFX
{ {
private int field_92049_a = 160; private int field_92049_a = 160;
private boolean field_92054_ax; private boolean field_92054_ax;
private boolean field_92048_ay; private boolean field_92048_ay;
private final EffectRenderer field_92047_az; private final EffectRenderer field_92047_az;
private float field_92050_aA; private float field_92050_aA;
private float field_92051_aB; private float field_92051_aB;
private float field_92052_aC; private float field_92052_aC;
private boolean field_92053_aD; private boolean field_92053_aD;
public GoggleRiftFX(World par1World, double par2, double par4, double par6, double par8, double par10, double par12, EffectRenderer par14EffectRenderer) 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); super(par1World, par2, par4, par6, par12, par12, par12, par14EffectRenderer);
this.motionX = par8; this.motionX = par8;
this.motionY = par10; this.motionY = par10;
this.motionZ = par12; this.motionZ = par12;
this.field_92047_az = par14EffectRenderer; this.field_92047_az = par14EffectRenderer;
this.particleScale *= .55F; this.particleScale *= 0.75F;
this.particleMaxAge = 30 + this.rand.nextInt(16); this.particleMaxAge = 40 + this.rand.nextInt(26);
this.noClip = true; this.noClip = true;
} }
@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) public void func_92045_e(boolean par1)
{ {
float var8 = super.particleTextureIndexX % 16 / 16.0F; this.field_92054_ax = par1;
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 = .0F;
if (PocketManager.createDimensionData(worldObj).isPocketDimension()) public void func_92043_f(boolean par1)
{ {
var16 = .7F; this.field_92048_ay = par1;
} }
par1Tessellator.setColorRGBA_F(this.particleRed * var16, this.particleGreen * var16, this.particleBlue * var16, (float) .7); 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);
}
par1Tessellator.addVertexWithUV(var13 - par3 * var12 - par6 * var12, var14 - par4 * var12, var15 - par5 * var12 - par7 * var12, var9, var11); public void func_92046_g(int par1)
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); this.field_92050_aA = ((par1 & 16711680) >> 16) / 255.0F;
par1Tessellator.addVertexWithUV(var13 + par3 * var12 - par6 * var12, var14 - par4 * var12, var15 + par5 * var12 - par7 * var12, var8, var11); 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)
{
public void func_92045_e(boolean par1) this.doRenderParticle(par1Tessellator, par2, par3, par4, par5, par6, par7);
{ }
this.field_92054_ax = par1; }
}
public void func_92043_f(boolean par1) public void doRenderParticle(Tessellator par1Tessellator, float par2, float par3, float par4, float par5, float par6, float par7)
{ {
this.field_92048_ay = par1; 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;
public void func_92044_a(int par1) if (this.particleIcon != null)
{ {
float var2 = ((par1 & 16711680) >> 16) / 255.0F; f6 = this.particleIcon.getMinU();
float var3 = ((par1 & 65280) >> 8) / 255.0F; f7 = this.particleIcon.getMaxU();
float var4 = ((par1 & 255) >> 0) / 255.0F; f8 = this.particleIcon.getMinV();
float var5 = 1.0F; f9 = this.particleIcon.getMaxV();
this.setRBGColorF(var2 * var5, var3 * var5, var4 * var5); }
}
public void func_92046_g(int par1) float f11 = (float)(this.prevPosX + (this.posX - this.prevPosX) * par2 - interpPosX);
{ float f12 = (float)(this.prevPosY + (this.posY - this.prevPosY) * par2 - interpPosY);
this.field_92050_aA = ((par1 & 16711680) >> 16) / 255.0F; float f13 = (float)(this.prevPosZ + (this.posZ - this.prevPosZ) * par2 - interpPosZ);
this.field_92051_aB = ((par1 & 65280) >> 8) / 255.0F; float f14 = 0F;
this.field_92052_aC = ((par1 & 255) >> 0) / 255.0F;
this.field_92053_aD = true;
}
/** if (PocketManager.createDimensionData(worldObj).isPocketDimension())
* returns the bounding box for this entity {
*/ f14 = 0.7F;
@Override }
public AxisAlignedBB getBoundingBox()
{
return null;
}
/** par1Tessellator.setColorRGBA_F(this.particleRed * f14, this.particleGreen * f14, this.particleBlue * f14, (float) .7);
* Returns true if this entity should push and be pushed by other entities when colliding. 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);
@Override par1Tessellator.addVertexWithUV(f11 + par3 * f10 + par6 * f10, f12 + par4 * f10, f13 + par5 * f10 + par7 * f10, f6, f8);
public boolean canBePushed() par1Tessellator.addVertexWithUV(f11 + par3 * f10 - par6 * f10, f12 - par4 * f10, f13 + par5 * f10 - par7 * f10, f6, f9);
{ }
return false;
}
/**
* 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)
* Called to update the entity's position/logic. {
*/ this.setAlphaF(1.0F - ((float)this.particleAge - (float)(this.particleMaxAge / 2)) / this.particleMaxAge);
@Override
public void onUpdate()
{
this.prevPosX = this.posX;
this.prevPosY = this.posY;
this.prevPosZ = this.posZ;
if (this.particleAge++ >= this.particleMaxAge) if (this.field_92053_aD)
{ {
this.setDead(); 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.particleAge > this.particleMaxAge / 2) this.setParticleTextureIndex(this.field_92049_a + (7 - this.particleAge * 8 / this.particleMaxAge));
{ // this.motionY -= 0.004D;
this.setAlphaF(1.0F - ((float)this.particleAge - (float)(this.particleMaxAge / 2)) / this.particleMaxAge); this.moveEntity(this.motionX, this.motionY, this.motionZ);
this.motionX *= 0.9100000262260437D;
this.motionY *= 0.9100000262260437D;
this.motionZ *= 0.9100000262260437D;
if (this.field_92053_aD) if (this.onGround)
{ {
this.particleRed += (this.field_92050_aA - this.particleRed) * 0.2F; this.motionX *= 0.699999988079071D;
this.particleGreen += (this.field_92051_aB - this.particleGreen) * 0.2F; this.motionZ *= 0.699999988079071D;
this.particleBlue += (this.field_92052_aC - this.particleBlue) * 0.2F; }
}
}
this.setParticleTextureIndex(this.field_92049_a + (7 - this.particleAge * 8 / this.particleMaxAge)); if (this.field_92054_ax && this.particleAge < this.particleMaxAge / 2 && (this.particleAge + this.particleMaxAge) % 2 == 0)
// this.motionY -= 0.004D; {
this.moveEntity(this.motionX, this.motionY, this.motionZ); GoggleRiftFX var1 = new GoggleRiftFX(this.worldObj, this.posX, this.posY, this.posZ, 0.0D, 0.0D, 0.0D, this.field_92047_az);
this.motionX *= 0.9100000262260437D; var1.setRBGColorF(this.particleRed, this.particleGreen, this.particleBlue);
this.motionY *= 0.9100000262260437D; var1.particleAge = var1.particleMaxAge / 2;
this.motionZ *= 0.9100000262260437D;
if (this.onGround) if (this.field_92053_aD)
{ {
this.motionX *= 0.699999988079071D; var1.field_92053_aD = true;
this.motionZ *= 0.699999988079071D; 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.field_92054_ax && this.particleAge < this.particleMaxAge / 2 && (this.particleAge + this.particleMaxAge) % 2 == 0) var1.field_92048_ay = this.field_92048_ay;
{ this.field_92047_az.addEffect(var1);
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) @Override
{ public int getBrightnessForRender(float par1)
var1.field_92053_aD = true; {
var1.field_92050_aA = this.field_92050_aA; return 15728880;
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); * Gets how bright this entity is.
} */
} @Override
public float getBrightness(float par1)
@Override {
public int getBrightnessForRender(float par1) return 1.0F;
{ }
return 15728880;
}
/**
* Gets how bright this entity is.
*/
@Override
public float getBrightness(float par1)
{
return 1.0F;
}
} }