diff --git a/assets/hbm/textures/gui/gui_radar.png b/assets/hbm/textures/gui/gui_radar.png index 22d33bda2..2189848df 100644 Binary files a/assets/hbm/textures/gui/gui_radar.png and b/assets/hbm/textures/gui/gui_radar.png differ diff --git a/assets/hbm/textures/models/alpha.png b/assets/hbm/textures/models/alpha.png new file mode 100644 index 000000000..7f8df7ee1 Binary files /dev/null and b/assets/hbm/textures/models/alpha.png differ diff --git a/com/hbm/entity/missile/EntityMissileBaseAdvanced.java b/com/hbm/entity/missile/EntityMissileBaseAdvanced.java index c8e2082aa..e20c284e9 100644 --- a/com/hbm/entity/missile/EntityMissileBaseAdvanced.java +++ b/com/hbm/entity/missile/EntityMissileBaseAdvanced.java @@ -173,8 +173,10 @@ public abstract class EntityMissileBaseAdvanced extends Entity implements IChunk { //super.onUpdate(); - if(!worldObj.isRemote && !TileEntityMachineRadar.allMissiles.contains(this)) + if(!worldObj.isRemote) { + TileEntityMachineRadar.allMissiles.remove(this); TileEntityMachineRadar.allMissiles.add(this); + } //if(!worldObj.loadedEntityList.contains(this)) // worldObj.loadedEntityList.add(this); diff --git a/com/hbm/entity/missile/EntityMissileNuclear.java b/com/hbm/entity/missile/EntityMissileNuclear.java index 92039622a..20e61f992 100644 --- a/com/hbm/entity/missile/EntityMissileNuclear.java +++ b/com/hbm/entity/missile/EntityMissileNuclear.java @@ -36,9 +36,9 @@ public class EntityMissileNuclear extends EntityMissileBaseAdvanced { this.worldObj.spawnEntityInWorld(entity); - EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(this.worldObj, 1000); + EntityNukeCloudSmall entity2 = new EntityNukeCloudSmall(this.worldObj, 300); entity2.posX = this.posX; - entity2.posY = this.posY - 9; + entity2.posY = this.posY/* - 9*/; entity2.posZ = this.posZ; this.worldObj.spawnEntityInWorld(entity2); } diff --git a/com/hbm/inventory/gui/GUIMachineRadar.java b/com/hbm/inventory/gui/GUIMachineRadar.java index 0fdef150d..1c74bca59 100644 --- a/com/hbm/inventory/gui/GUIMachineRadar.java +++ b/com/hbm/inventory/gui/GUIMachineRadar.java @@ -6,6 +6,7 @@ import com.hbm.inventory.FluidTank; import com.hbm.inventory.container.ContainerGenerator; import com.hbm.inventory.container.ContainerMachineRadar; import com.hbm.lib.RefStrings; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.machine.TileEntityMachineGenerator; import com.hbm.tileentity.machine.TileEntityMachineRadar; diff --git a/com/hbm/lib/HbmWorldGen.java b/com/hbm/lib/HbmWorldGen.java index 24146ea03..ae2cfae39 100644 --- a/com/hbm/lib/HbmWorldGen.java +++ b/com/hbm/lib/HbmWorldGen.java @@ -354,7 +354,7 @@ public class HbmWorldGen implements IWorldGenerator { } } - if (rand.nextInt(15) == 0) { + if (rand.nextInt(25) == 0) { int randPosX = i + rand.nextInt(16); int randPosY = rand.nextInt(25); int randPosZ = j + rand.nextInt(16); diff --git a/com/hbm/packet/PacketDispatcher.java b/com/hbm/packet/PacketDispatcher.java index 3c1616d4c..549a59371 100644 --- a/com/hbm/packet/PacketDispatcher.java +++ b/com/hbm/packet/PacketDispatcher.java @@ -59,6 +59,8 @@ public class PacketDispatcher { wrapper.registerMessage(ItemDesignatorPacket.Handler.class, ItemDesignatorPacket.class, i++, Side.SERVER); //Siren packet for looped sounds wrapper.registerMessage(TERadarPacket.Handler.class, TERadarPacket.class, i++, Side.CLIENT); + //Siren packet for looped sounds + wrapper.registerMessage(TERadarDestructorPacket.Handler.class, TERadarDestructorPacket.class, i++, Side.CLIENT); } } diff --git a/com/hbm/packet/TERadarDestructorPacket.java b/com/hbm/packet/TERadarDestructorPacket.java new file mode 100644 index 000000000..e70de5128 --- /dev/null +++ b/com/hbm/packet/TERadarDestructorPacket.java @@ -0,0 +1,64 @@ +package com.hbm.packet; + +import com.hbm.main.MainRegistry; +import com.hbm.tileentity.conductor.TileEntityPylonRedWire; +import com.hbm.tileentity.machine.TileEntityMachineRadar; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import io.netty.buffer.ByteBuf; +import net.minecraft.client.Minecraft; +import net.minecraft.tileentity.TileEntity; + +public class TERadarDestructorPacket implements IMessage { + + int x; + int y; + int z; + + public TERadarDestructorPacket() { + + } + + public TERadarDestructorPacket(int x, int y, int z) { + this.x = x; + this.y = y; + this.z = z; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readInt(); + y = buf.readInt(); + z = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeInt(x); + buf.writeInt(y); + buf.writeInt(z); + } + + public static class Handler implements IMessageHandler { + + @Override + @SideOnly(Side.CLIENT) + public IMessage onMessage(TERadarDestructorPacket m, MessageContext ctx) { + TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); + + try { + if (te != null && te instanceof TileEntityMachineRadar) { + + TileEntityMachineRadar radar = (TileEntityMachineRadar) te; + radar.nearbyMissiles.clear(); + } + } catch (Exception x) { + } + return null; + } + } +} diff --git a/com/hbm/packet/TERadarPacket.java b/com/hbm/packet/TERadarPacket.java index 50ec64f96..3e364cdce 100644 --- a/com/hbm/packet/TERadarPacket.java +++ b/com/hbm/packet/TERadarPacket.java @@ -1,11 +1,14 @@ package com.hbm.packet; +import com.hbm.main.MainRegistry; import com.hbm.tileentity.conductor.TileEntityPylonRedWire; import com.hbm.tileentity.machine.TileEntityMachineRadar; import cpw.mods.fml.common.network.simpleimpl.IMessage; import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; import net.minecraft.client.Minecraft; import net.minecraft.tileentity.TileEntity; @@ -55,6 +58,7 @@ public class TERadarPacket implements IMessage { public static class Handler implements IMessageHandler { @Override + @SideOnly(Side.CLIENT) public IMessage onMessage(TERadarPacket m, MessageContext ctx) { TileEntity te = Minecraft.getMinecraft().theWorld.getTileEntity(m.x, m.y, m.z); @@ -62,7 +66,7 @@ public class TERadarPacket implements IMessage { if (te != null && te instanceof TileEntityMachineRadar) { TileEntityMachineRadar radar = (TileEntityMachineRadar) te; - radar.nearbyMissiles.add(new int[]{m.x, m.y, m.z}); + radar.nearbyMissiles.add(new int[]{m.conX, m.conY, m.conZ}); } } catch (Exception x) { } diff --git a/com/hbm/render/entity/RenderCloudFleija.java b/com/hbm/render/entity/RenderCloudFleija.java index 9e0d6e90d..ec29037f7 100644 --- a/com/hbm/render/entity/RenderCloudFleija.java +++ b/com/hbm/render/entity/RenderCloudFleija.java @@ -35,11 +35,7 @@ public class RenderCloudFleija extends Render { GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_CULL_FACE); - //if(cloud.age < 150) - { - //GL11.glTranslatef(0.0F, -60F + ((p_76986_1_.age - 100) * 60 / 50), 0.0F); - GL11.glTranslatef(0.0F, 0.0F, 0.0F); - } + GL11.glScalef(cloud.age, cloud.age, cloud.age); bindTexture(blastTexture); diff --git a/com/hbm/render/entity/RenderSmallNukeMK3.java b/com/hbm/render/entity/RenderSmallNukeMK3.java new file mode 100644 index 000000000..bd2217eac --- /dev/null +++ b/com/hbm/render/entity/RenderSmallNukeMK3.java @@ -0,0 +1,86 @@ +package com.hbm.render.entity; + +import java.util.Random; + +import org.lwjgl.opengl.GL11; + +import com.hbm.entity.effect.EntityCloudFleijaRainbow; +import com.hbm.entity.effect.EntityNukeCloudSmall; +import com.hbm.lib.RefStrings; +import com.hbm.main.ResourceManager; + +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.entity.Render; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.AdvancedModelLoader; +import net.minecraftforge.client.model.IModelCustom; + +public class RenderSmallNukeMK3 extends Render { + + private static final ResourceLocation objTesterModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/NukeCloudSmall.obj"); + private IModelCustom blastModel; + private ResourceLocation blastTexture; + private static final ResourceLocation ringModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/Ring.obj"); + private IModelCustom ringModel; + private ResourceLocation ringTexture; + private static final ResourceLocation ringBigModelRL = new ResourceLocation(/*"/assets/" + */RefStrings.MODID, "models/RingBig.obj"); + private IModelCustom ringBigModel; + private ResourceLocation ringBigTexture; + public float scale = 0; + public float ring = 0; + + public RenderSmallNukeMK3() { + blastModel = AdvancedModelLoader.loadModel(objTesterModelRL); + blastTexture = new ResourceLocation(RefStrings.MODID, "textures/models/NukeCloudFire.png"); + ringModel = AdvancedModelLoader.loadModel(ringModelRL); + ringTexture = new ResourceLocation(RefStrings.MODID, "textures/models/Ring2.png"); + ringBigModel = AdvancedModelLoader.loadModel(ringBigModelRL); + ringBigTexture = new ResourceLocation(RefStrings.MODID, "textures/models/Ring2.png"); + scale = 0; + ring = 0; + } + + @Override + public void doRender(Entity p_76986_1_, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { + render((EntityNukeCloudSmall)p_76986_1_, p_76986_2_, p_76986_4_, p_76986_6_, p_76986_8_, p_76986_9_); + } + + public void render(EntityNukeCloudSmall cloud, double p_76986_2_, double p_76986_4_, double p_76986_6_, float p_76986_8_, float p_76986_9_) { + GL11.glPushMatrix(); + GL11.glTranslatef((float)p_76986_2_, (float)p_76986_4_, (float)p_76986_6_); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_CULL_FACE); + GL11.glDisable(GL11.GL_TEXTURE_2D); + + GL11.glColor4f(0.2F, 0.2F, 0.2F, 0.9F); + + GL11.glScalef(0.5F, 0.5F, 0.5F); + //ResourceManager.sphere_ruv.renderAll(); + GL11.glScalef(1/0.5F, 1/0.5F, 1/0.5F); + + int a = cloud.age; + + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_DST_COLOR); + + GL11.glScalef(a, a, a); + ringModel.renderAll(); + GL11.glScalef(2, 2, 2); + ResourceManager.sphere_ruv.renderAll(); + ResourceManager.sphere_iuv.renderAll(); + + GL11.glDisable(GL11.GL_BLEND); + GL11.glEnable(GL11.GL_LIGHTING); + GL11.glEnable(GL11.GL_TEXTURE_2D); + GL11.glDisable(GL11.GL_CULL_FACE); + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity p_110775_1_) { + return null; + } + +} diff --git a/com/hbm/tileentity/machine/TileEntityMachineRadar.java b/com/hbm/tileentity/machine/TileEntityMachineRadar.java index 47d850250..dd07ed84d 100644 --- a/com/hbm/tileentity/machine/TileEntityMachineRadar.java +++ b/com/hbm/tileentity/machine/TileEntityMachineRadar.java @@ -6,8 +6,10 @@ import java.util.List; import com.hbm.entity.missile.EntityMissileBaseAdvanced; import com.hbm.interfaces.IConsumer; import com.hbm.lib.ModDamageSource; +import com.hbm.main.MainRegistry; import com.hbm.packet.AuxElectricityPacket; import com.hbm.packet.PacketDispatcher; +import com.hbm.packet.TERadarDestructorPacket; import com.hbm.packet.TERadarPacket; import cpw.mods.fml.relauncher.Side; @@ -45,13 +47,14 @@ public class TileEntityMachineRadar extends TileEntity implements IConsumer { @Override public void updateEntity() { - - nearbyMissiles.clear(); + + if(!worldObj.isRemote) + nearbyMissiles.clear(); if(power > 0) { - allocateMissiles(); if(!worldObj.isRemote) { + allocateMissiles(); sendMissileData(); } @@ -68,14 +71,28 @@ public class TileEntityMachineRadar extends TileEntity implements IConsumer { private void allocateMissiles() { - for(Object e : allMissiles) { - //for(Object e : worldObj.loadedEntityList) { + nearbyMissiles.clear(); + + List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord + 0.5 - range, 0, zCoord + 0.5 - range, xCoord + 0.5 + range, 5000, zCoord + 0.5 + range)); + + for(Entity e : list) { + /*if(e instanceof EntityMissileBaseAdvanced) { + EntityMissileBaseAdvanced mis = (EntityMissileBaseAdvanced)e; + nearbyMissiles.add(new int[] { (int)mis.posX, (int)mis.posZ, mis.getMissileType() }); + }*/ + + if(!(e instanceof EntityMissileBaseAdvanced) && e.width * e.width * e.height >= 0.5D && e.posY >= yCoord + 30) { + nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, 5 }); + } + } + + for(Entity e : allMissiles) { if(e instanceof EntityMissileBaseAdvanced) { - EntityMissileBaseAdvanced m = (EntityMissileBaseAdvanced)e; - - if(!m.isDead && m.posX < xCoord + range && m.posX > xCoord - range && - m.posZ < zCoord + range && m.posZ > zCoord - range) - this.nearbyMissiles.add(new int[] {(int)m.posX, (int)m.posZ, m.getMissileType()}); + if(e.posX < xCoord + range && e.posX > xCoord - range && + e.posZ < zCoord + range && e.posZ > zCoord - range) { + EntityMissileBaseAdvanced mis = (EntityMissileBaseAdvanced)e; + nearbyMissiles.add(new int[] { (int)mis.posX, (int)mis.posZ, mis.getMissileType() }); + } } } } @@ -106,6 +123,8 @@ public class TileEntityMachineRadar extends TileEntity implements IConsumer { private void sendMissileData() { + PacketDispatcher.wrapper.sendToAll(new TERadarDestructorPacket(xCoord, yCoord, zCoord)); + for(int[] e : this.nearbyMissiles) { PacketDispatcher.wrapper.sendToAll(new TERadarPacket(xCoord, yCoord, zCoord, e[0], e[1], e[2])); }