Radar fix

This commit is contained in:
HbmMods 2018-03-06 00:03:11 +01:00
parent ed14c30bd3
commit 40b40ab638
12 changed files with 194 additions and 20 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -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);

View File

@ -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);
}

View File

@ -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;

View File

@ -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);

View File

@ -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);
}
}

View File

@ -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<TERadarDestructorPacket, IMessage> {
@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;
}
}
}

View File

@ -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<TERadarPacket, IMessage> {
@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) {
}

View File

@ -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);

View File

@ -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;
}
}

View File

@ -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<Entity> 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]));
}