Updated radar with better base class, implemented IRadarDetectable

This commit is contained in:
Boblet 2020-08-06 15:45:26 +02:00
parent e7df37f771
commit cef5fbecf2
29 changed files with 150 additions and 115 deletions

View File

@ -13,8 +13,9 @@ public interface IRadarDetectable {
MISSILE_15, //size 15 custom missiles
MISSILE_15_20, //size 15/20 custom missiles
MISSILE_20, //size 20 custom missiles
MISSILE_AB, //anti ballistic missile
PLAYER, //airborne players
}
//TODO: rewrite the crappy radaar TE code and implement the API
public RadarTargetType getTargetType();
}

View File

@ -5,6 +5,7 @@ import java.util.List;
import com.hbm.entity.particle.EntitySmokeFX;
import com.hbm.explosion.ExplosionLarge;
import api.hbm.energy.IRadarDetectable;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.entity.Entity;
@ -15,7 +16,7 @@ import net.minecraft.util.MathHelper;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
public class EntityMissileAntiBallistic extends Entity {
public class EntityMissileAntiBallistic extends Entity implements IRadarDetectable {
int activationTimer;
@ -157,4 +158,9 @@ public class EntityMissileAntiBallistic extends Entity {
return distance < 500000;
}
@Override
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_AB;
}
}

View File

@ -52,8 +52,8 @@ public class EntityMissileBHole extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 0;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER0;
}
}

View File

@ -10,6 +10,7 @@ import com.hbm.packet.AuxParticlePacket;
import com.hbm.packet.PacketDispatcher;
import com.hbm.tileentity.machine.TileEntityMachineRadar;
import api.hbm.energy.IRadarDetectable;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@ -26,7 +27,7 @@ import net.minecraftforge.common.ForgeChunkManager;
import net.minecraftforge.common.ForgeChunkManager.Ticket;
import net.minecraftforge.common.ForgeChunkManager.Type;
public abstract class EntityMissileBaseAdvanced extends Entity implements IChunkLoader {
public abstract class EntityMissileBaseAdvanced extends Entity implements IChunkLoader, IRadarDetectable {
int startX;
int startZ;
@ -261,8 +262,6 @@ public abstract class EntityMissileBaseAdvanced extends Entity implements IChunk
public abstract void onImpact();
public abstract int getMissileType();
public abstract List<ItemStack> getDebris();
public abstract ItemStack getDebrisRareDrop();

View File

@ -48,8 +48,8 @@ public class EntityMissileBunkerBuster extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 0;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER1;
}
}

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -44,7 +45,7 @@ public class EntityMissileBurst extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 2;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER3;
}
}

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -48,7 +49,7 @@ public class EntityMissileBusterStrong extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 1;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER2;
}
}

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.hbm.explosion.ExplosionChaos;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -48,7 +49,7 @@ public class EntityMissileCluster extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 0;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER1;
}
}

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.hbm.explosion.ExplosionChaos;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -49,7 +50,7 @@ public class EntityMissileClusterStrong extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 1;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER2;
}
}

View File

@ -3,6 +3,8 @@ package com.hbm.entity.missile;
import java.util.List;
import com.hbm.explosion.ExplosionLarge;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -104,8 +106,7 @@ public class EntityMissileDoomsday extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 3;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER4;
}
}

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -48,7 +49,7 @@ public class EntityMissileDrill extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 2;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER3;
}
}

View File

@ -8,6 +8,7 @@ import com.hbm.entity.effect.EntityEMPBlast;
import com.hbm.explosion.ExplosionNukeGeneric;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -53,8 +54,7 @@ public class EntityMissileEMP extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 0;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER0;
}
}

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.hbm.entity.logic.EntityEMP;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -48,7 +49,7 @@ public class EntityMissileEMPStrong extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 1;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER2;
}
}

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.hbm.explosion.ExplosionThermo;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -45,7 +46,7 @@ public class EntityMissileEndo extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 3;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER3;
}
}

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.hbm.explosion.ExplosionThermo;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -45,7 +46,7 @@ public class EntityMissileExo extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 3;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER3;
}
}

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -41,8 +42,8 @@ public class EntityMissileGeneric extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 0;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER1;
}
/*public EntityMissileGeneric(World p_i1582_1_) {

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -41,8 +42,7 @@ public class EntityMissileIncendiary extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 0;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER1;
}
}

View File

@ -7,6 +7,7 @@ import com.hbm.explosion.ExplosionChaos;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -44,7 +45,7 @@ public class EntityMissileIncendiaryStrong extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 1;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER2;
}
}

View File

@ -7,6 +7,7 @@ import com.hbm.explosion.ExplosionChaos;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -45,7 +46,7 @@ public class EntityMissileInferno extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 2;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER3;
}
}

View File

@ -9,6 +9,7 @@ import com.hbm.explosion.ExplosionParticleB;
import com.hbm.items.ModItems;
import com.hbm.main.MainRegistry;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -72,8 +73,7 @@ public class EntityMissileMicro extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 0;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER0;
}
}

View File

@ -8,6 +8,7 @@ import com.hbm.entity.logic.EntityNukeExplosionMK4;
import com.hbm.items.ModItems;
import com.hbm.main.MainRegistry;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -52,7 +53,7 @@ public class EntityMissileMirv extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 3;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER4;
}
}

View File

@ -8,6 +8,7 @@ import com.hbm.entity.logic.EntityNukeExplosionMK4;
import com.hbm.items.ModItems;
import com.hbm.main.MainRegistry;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -59,8 +60,7 @@ public class EntityMissileNuclear extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 3;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER4;
}
}

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.hbm.explosion.ExplosionChaos;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -49,7 +50,7 @@ public class EntityMissileRain extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 2;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER3;
}
}

View File

@ -8,6 +8,7 @@ import com.hbm.entity.logic.EntityNukeExplosionMK3;
import com.hbm.items.ModItems;
import com.hbm.main.MainRegistry;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -63,8 +64,7 @@ public class EntityMissileSchrabidium extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 0;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER0;
}
}

View File

@ -6,6 +6,7 @@ import java.util.List;
import com.hbm.explosion.ExplosionLarge;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -42,8 +43,7 @@ public class EntityMissileStrong extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 1;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER2;
}
}

View File

@ -7,6 +7,7 @@ import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.bomb.BlockTaint;
import com.hbm.items.ModItems;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
@ -52,7 +53,7 @@ public class EntityMissileTaint extends EntityMissileBaseAdvanced {
}
@Override
public int getMissileType() {
return 0;
public RadarTargetType getTargetType() {
return RadarTargetType.MISSILE_TIER0;
}
}

View File

@ -0,0 +1,3 @@
package com.hbm.interfaces;
public @interface Untested { }

View File

@ -253,9 +253,10 @@ public class GUIScreenSatInterface extends GuiScreen {
int t = 5;
if(e instanceof EntityMissileBaseAdvanced) {
//TODO: fix radar screen implementation
/*if(e instanceof EntityMissileBaseAdvanced) {
t = ((EntityMissileBaseAdvanced)e).getMissileType();
}
}*/
if(e instanceof EntityMob) {
t = 6;

View File

@ -6,12 +6,16 @@ import java.util.List;
import com.hbm.entity.missile.EntityMissileAntiBallistic;
import com.hbm.entity.missile.EntityMissileBaseAdvanced;
import com.hbm.interfaces.IConsumer;
import com.hbm.interfaces.Untested;
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 com.hbm.tileentity.TileEntityTickingBase;
import api.hbm.energy.IRadarDetectable;
import api.hbm.energy.IRadarDetectable.RadarTargetType;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
@ -21,16 +25,22 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
public class TileEntityMachineRadar extends TileEntity implements IConsumer {
@Untested
public class TileEntityMachineRadar extends TileEntityTickingBase implements IConsumer {
public static List<EntityMissileBaseAdvanced> allMissiles = new ArrayList();
public List<int[]> nearbyMissiles = new ArrayList();
int pingTimer = 0;
int lastPower;
final static int maxTimer = 40;
public long power = 0;
public static final int maxPower = 100000;
@Override
public String getInventoryName() {
return "";
}
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
@ -51,31 +61,32 @@ public class TileEntityMachineRadar extends TileEntity implements IConsumer {
if(this.yCoord < MainRegistry.radarAltitude)
return;
if(!worldObj.isRemote)
nearbyMissiles.clear();
int lastPower = getRedPower();
if(power > 0) {
if(!worldObj.isRemote) {
if(!worldObj.isRemote) {
nearbyMissiles.clear();
if(power > 0) {
allocateMissiles();
sendMissileData();
power -= 500;
if(power < 0)
power = 0;
}
power -= 500;
if(power < 0)
power = 0;
}
worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType());
if(!worldObj.isRemote)
PacketDispatcher.wrapper.sendToAllAround(new AuxElectricityPacket(xCoord, yCoord, zCoord, power), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 150));
pingTimer++;
if(power > 0 && pingTimer >= maxTimer) {
this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.sonarPing", 5.0F, 1.0F);
pingTimer = 0;
if(lastPower != getRedPower())
worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType());
sendMissileData();
pingTimer++;
if(power > 0 && pingTimer >= maxTimer) {
this.worldObj.playSoundEffect(this.xCoord, this.yCoord, this.zCoord, "hbm:block.sonarPing", 5.0F, 1.0F);
pingTimer = 0;
}
}
}
@ -86,41 +97,15 @@ public class TileEntityMachineRadar extends TileEntity implements IConsumer {
List<Entity> list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord + 0.5 - MainRegistry.radarRange, 0, zCoord + 0.5 - MainRegistry.radarRange, xCoord + 0.5 + MainRegistry.radarRange, 5000, zCoord + 0.5 + MainRegistry.radarRange));
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 EntityRocketHoming && e.posY >= yCoord + MainRegistry.radarBuffer) {
EntityRocketHoming rocket = (EntityRocketHoming)e;
if(rocket.getIsCritical())
nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, 7, (int)e.posY });
else
nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, 6, (int)e.posY });
continue;
}*/
if(e instanceof EntityPlayer && e.posY >= yCoord + MainRegistry.radarBuffer) {
nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, 5, (int)e.posY });
nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, RadarTargetType.PLAYER.ordinal(), (int)e.posY });
}
if(e instanceof EntityMissileAntiBallistic && e.posY >= yCoord + MainRegistry.radarBuffer) {
nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, 4, (int)e.posY });
if(e instanceof IRadarDetectable && e.posY >= yCoord + MainRegistry.radarBuffer) {
nearbyMissiles.add(new int[] { (int)e.posX, (int)e.posZ, ((IRadarDetectable)e).getTargetType().ordinal(), (int)e.posY });
}
}
for(Entity e : allMissiles) {
if(e != null && !e.isDead && e.posY >= yCoord + MainRegistry.radarBuffer)
if(e instanceof EntityMissileBaseAdvanced) {
if(e.posX < xCoord + MainRegistry.radarRange && e.posX > xCoord - MainRegistry.radarRange &&
e.posZ < zCoord + MainRegistry.radarRange && e.posZ > zCoord - MainRegistry.radarRange) {
EntityMissileBaseAdvanced mis = (EntityMissileBaseAdvanced)e;
nearbyMissiles.add(new int[] { (int)mis.posX, (int)mis.posZ, mis.getMissileType(), (int)mis.posY });
}
}
}
}
public int getRedPower() {
@ -149,10 +134,35 @@ public class TileEntityMachineRadar extends TileEntity implements IConsumer {
private void sendMissileData() {
PacketDispatcher.wrapper.sendToAllAround(new TERadarDestructorPacket(xCoord, yCoord, zCoord), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50));
NBTTagCompound data = new NBTTagCompound();
data.setLong("power", power);
data.setInteger("count", this.nearbyMissiles.size());
for(int[] e : this.nearbyMissiles) {
PacketDispatcher.wrapper.sendToAllAround(new TERadarPacket(xCoord, yCoord, zCoord, e[0], e[1], e[2], e[3]), new TargetPoint(worldObj.provider.dimensionId, xCoord, yCoord, zCoord, 50));
for(int i = 0; i < this.nearbyMissiles.size(); i++) {
data.setInteger("x" + i, this.nearbyMissiles.get(i)[0]);
data.setInteger("z" + i, this.nearbyMissiles.get(i)[1]);
data.setInteger("type" + i, this.nearbyMissiles.get(i)[2]);
data.setInteger("y" + i, this.nearbyMissiles.get(i)[3]);
}
this.networkPack(data, 15);
}
public void networkUnpack(NBTTagCompound data) {
this.nearbyMissiles.clear();
this.power = data.getLong("power");
int count = data.getInteger("count");
for(int i = 0; i < count; i++) {
int x = data.getInteger("x" + i);
int z = data.getInteger("z" + i);
int type = data.getInteger("type" + i);
int y = data.getInteger("y" + i);
this.nearbyMissiles.add(new int[] {x, z, type, y});
}
}