mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
new radar targeting interface, second GUI, target localiaztion
This commit is contained in:
parent
e40343b6dd
commit
ba014d54f7
@ -15,11 +15,19 @@ public interface IRadarDetectableNT {
|
||||
public static final int TIER_AB = 10;
|
||||
public static final int PLAYER = 11;
|
||||
public static final int ARTY = 12;
|
||||
/** Reserved type that shows a unique purple blip. Used for when nothing else applies. */
|
||||
public static final int SPECIAL = 13;
|
||||
|
||||
/** Name use for radar display, uses I18n for lookup */
|
||||
public String getUnlocalizedName();
|
||||
/** The type of dot to show on the radar as well as the redstone level in tier mode */
|
||||
public int getBlipLevel();
|
||||
/** Whether the object can be seen by this type of radar */
|
||||
public boolean canBeSeenBy(Object radar);
|
||||
/** Whether the object is currently visible, as well as whether the radar's setting allow for picking this up */
|
||||
public boolean paramsApplicable(RadarScanParams params);
|
||||
/** Whether this radar entry should be counted for the redstone output */
|
||||
public boolean suppliesRedstone(RadarScanParams params);
|
||||
|
||||
public static class RadarScanParams {
|
||||
public boolean scanMissiles = true;
|
||||
|
||||
@ -7,34 +7,39 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
|
||||
public class RadarEntry {
|
||||
|
||||
/** Name use for radar display, uses I18n for lookup */
|
||||
public String unlocalizedName;
|
||||
/** The type of dot to show on the radar as well as the redstone level in tier mode */
|
||||
public int blipLevel;
|
||||
public int posX;
|
||||
public int posY;
|
||||
public int posZ;
|
||||
public int dim;
|
||||
/** Whether this radar entry should be counted for the redstone output */
|
||||
public boolean redstone;
|
||||
|
||||
public RadarEntry() { } //blank ctor for packets
|
||||
|
||||
public RadarEntry(String name, int level, int x, int y, int z, int dim) {
|
||||
public RadarEntry(String name, int level, int x, int y, int z, int dim, boolean redstone) {
|
||||
this.unlocalizedName = name;
|
||||
this.blipLevel = level;
|
||||
this.posX = x;
|
||||
this.posY = y;
|
||||
this.posZ = z;
|
||||
this.dim = dim;
|
||||
this.redstone = redstone;
|
||||
}
|
||||
|
||||
public RadarEntry(IRadarDetectableNT detectable, Entity entity) {
|
||||
this(detectable.getUnlocalizedName(), detectable.getBlipLevel(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension);
|
||||
public RadarEntry(IRadarDetectableNT detectable, Entity entity, boolean redstone) {
|
||||
this(detectable.getUnlocalizedName(), detectable.getBlipLevel(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension, redstone);
|
||||
}
|
||||
|
||||
public RadarEntry(IRadarDetectable detectable, Entity entity) {
|
||||
this(detectable.getTargetType().name, detectable.getTargetType().ordinal(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension);
|
||||
this(detectable.getTargetType().name, detectable.getTargetType().ordinal(), (int) Math.floor(entity.posX), (int) Math.floor(entity.posY), (int) Math.floor(entity.posZ), entity.dimension, entity.motionY < 0);
|
||||
}
|
||||
|
||||
public RadarEntry(EntityPlayer player) {
|
||||
this(player.getDisplayName(), IRadarDetectableNT.PLAYER, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ), player.dimension);
|
||||
this(player.getDisplayName(), IRadarDetectableNT.PLAYER, (int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ), player.dimension, true);
|
||||
}
|
||||
|
||||
public void fromBytes(ByteBuf buf) {
|
||||
|
||||
@ -52,7 +52,7 @@ public class ConsumableRecipes {
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.med_ptsd, 1), new Object[] { ModItems.med_ipecac });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.pancake, 1), new Object[] { REDSTONE.dust(), DIAMOND.dust(), Items.wheat, ModItems.bolt_tungsten, ModItems.wire_copper, STEEL.plate() });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.pancake, 1), new Object[] { REDSTONE.dust(), EMERALD.dust(), Items.wheat, ModItems.bolt_tungsten, ModItems.wire_copper, STEEL.plate() });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.chocolate_milk, 1), new Object[] { KEY_ANYPANE, new ItemStack(Items.dye, 1, 3), Items.milk_bucket, KNO.block(), S.dust(), S.dust(), S.dust(), P_RED.dust() });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.chocolate_milk, 1), new Object[] { KEY_ANYPANE, new ItemStack(Items.dye, 1, 3), Items.milk_bucket, Fluids.NITROGLYCERIN.getDict(1_000) });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.loops), new Object[] { ModItems.flame_pony, Items.wheat, Items.sugar });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.loop_stew), new Object[] { ModItems.loops, ModItems.can_smart, Items.bowl });
|
||||
CraftingManager.addShapelessAuto(new ItemStack(ModItems.coffee), new Object[] { COAL.dust(), Items.milk_bucket, Items.potionitem, Items.sugar });
|
||||
|
||||
@ -10,6 +10,7 @@ import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineRadarNT;
|
||||
|
||||
import api.hbm.entity.IRadarDetectable;
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.entity.Entity;
|
||||
@ -23,7 +24,7 @@ import net.minecraftforge.common.ForgeChunkManager;
|
||||
import net.minecraftforge.common.ForgeChunkManager.Ticket;
|
||||
import net.minecraftforge.common.ForgeChunkManager.Type;
|
||||
|
||||
public class EntityMissileAntiBallistic extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable {
|
||||
public class EntityMissileAntiBallistic extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable, IRadarDetectableNT {
|
||||
|
||||
private Ticket loaderTicket;
|
||||
public Entity tracking;
|
||||
@ -226,4 +227,29 @@ public class EntityMissileAntiBallistic extends EntityThrowableInterp implements
|
||||
public RadarTargetType getTargetType() {
|
||||
return RadarTargetType.MISSILE_AB;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.abm";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlipLevel() {
|
||||
return IRadarDetectableNT.TIER_AB;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBeSeenBy(Object radar) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean paramsApplicable(RadarScanParams params) {
|
||||
return params.scanMissiles;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean suppliesRedstone(RadarScanParams params) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@ -9,6 +9,7 @@ import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.main.MainRegistry;
|
||||
|
||||
import api.hbm.entity.IRadarDetectable;
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -23,7 +24,7 @@ import net.minecraftforge.common.ForgeChunkManager;
|
||||
import net.minecraftforge.common.ForgeChunkManager.Ticket;
|
||||
import net.minecraftforge.common.ForgeChunkManager.Type;
|
||||
|
||||
public abstract class EntityMissileBaseNT extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable {
|
||||
public abstract class EntityMissileBaseNT extends EntityThrowableInterp implements IChunkLoader, IRadarDetectable, IRadarDetectableNT {
|
||||
|
||||
public int startX;
|
||||
public int startZ;
|
||||
@ -62,6 +63,23 @@ public abstract class EntityMissileBaseNT extends EntityThrowableInterp implemen
|
||||
|
||||
this.setSize(1.5F, 1.5F);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canBeSeenBy(Object radar) {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean paramsApplicable(RadarScanParams params) {
|
||||
if(!params.scanMissiles) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean suppliesRedstone(RadarScanParams params) {
|
||||
if(params.smartMode && this.motionY >= 0) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void entityInit() {
|
||||
|
||||
@ -21,6 +21,7 @@ import com.hbm.items.weapon.ItemMissile.WarheadType;
|
||||
import com.hbm.main.MainRegistry;
|
||||
|
||||
import api.hbm.entity.IRadarDetectable;
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
@ -233,6 +234,38 @@ public class EntityMissileCustom extends EntityMissileBaseNT implements IChunkLo
|
||||
return RadarTargetType.MISSILE_TIER1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
|
||||
ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(10));
|
||||
PartSize top = part.top;
|
||||
PartSize bottom = part.bottom;
|
||||
|
||||
if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_10) return "radar.target.custom10";
|
||||
if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_15) return "radar.target.custom1015";
|
||||
if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_15) return "radar.target.custom15";
|
||||
if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_20) return "radar.target.custom1520";
|
||||
if(top == PartSize.SIZE_20 && bottom == PartSize.SIZE_20) return "radar.target.custom20";
|
||||
|
||||
return "radar.target.custom";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlipLevel() {
|
||||
|
||||
ItemMissile part = (ItemMissile) Item.getItemById(this.dataWatcher.getWatchableObjectInt(10));
|
||||
PartSize top = part.top;
|
||||
PartSize bottom = part.bottom;
|
||||
|
||||
if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_10) return IRadarDetectableNT.TIER10;
|
||||
if(top == PartSize.SIZE_10 && bottom == PartSize.SIZE_15) return IRadarDetectableNT.TIER10_15;
|
||||
if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_15) return IRadarDetectableNT.TIER15;
|
||||
if(top == PartSize.SIZE_15 && bottom == PartSize.SIZE_20) return IRadarDetectableNT.TIER15_20;
|
||||
if(top == PartSize.SIZE_20 && bottom == PartSize.SIZE_20) return IRadarDetectableNT.TIER20;
|
||||
|
||||
return IRadarDetectableNT.TIER1;
|
||||
}
|
||||
|
||||
@Override public List<ItemStack> getDebris() { return new ArrayList(); }
|
||||
@Override public ItemStack getDebrisRareDrop() { return null; }
|
||||
}
|
||||
|
||||
@ -4,6 +4,7 @@ import java.util.List;
|
||||
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@ -108,4 +109,14 @@ public class EntityMissileDoomsday extends EntityMissileBaseNT {
|
||||
public RadarTargetType getTargetType() {
|
||||
return RadarTargetType.MISSILE_TIER4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.doomsday";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlipLevel() {
|
||||
return IRadarDetectableNT.TIER4;
|
||||
}
|
||||
}
|
||||
|
||||
@ -11,6 +11,7 @@ import com.hbm.main.MainRegistry;
|
||||
import com.hbm.packet.AuxParticlePacketNT;
|
||||
import com.hbm.packet.PacketDispatcher;
|
||||
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -64,4 +65,14 @@ public class EntityMissileShuttle extends EntityMissileBaseNT {
|
||||
public RadarTargetType getTargetType() {
|
||||
return RadarTargetType.MISSILE_TIER3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.shuttle";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlipLevel() {
|
||||
return IRadarDetectableNT.TIER3;
|
||||
}
|
||||
}
|
||||
@ -13,6 +13,9 @@ import com.hbm.entity.logic.EntityNukeExplosionMK3;
|
||||
import com.hbm.explosion.ExplosionNukeGeneric;
|
||||
import com.hbm.explosion.ExplosionNukeSmall;
|
||||
import com.hbm.items.ModItems;
|
||||
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
|
||||
import com.hbm.items.ItemAmmoEnums.AmmoFatman;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
@ -38,6 +41,16 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT {
|
||||
public RadarTargetType getTargetType() {
|
||||
return RadarTargetType.MISSILE_TIER0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.tier0";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlipLevel() {
|
||||
return IRadarDetectableNT.TIER0;
|
||||
}
|
||||
|
||||
public static class EntityMissileMicro extends EntityMissileTier0 {
|
||||
public EntityMissileMicro(World world) { super(world); }
|
||||
|
||||
@ -7,6 +7,7 @@ import com.hbm.explosion.ExplosionChaos;
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.items.ModItems;
|
||||
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@ -29,6 +30,16 @@ public abstract class EntityMissileTier1 extends EntityMissileBaseNT {
|
||||
return RadarTargetType.MISSILE_TIER1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.tier1";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlipLevel() {
|
||||
return IRadarDetectableNT.TIER1;
|
||||
}
|
||||
|
||||
public static class EntityMissileGeneric extends EntityMissileTier1 {
|
||||
public EntityMissileGeneric(World world) { super(world); }
|
||||
public EntityMissileGeneric(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||
|
||||
@ -8,6 +8,7 @@ import com.hbm.explosion.ExplosionChaos;
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.items.ModItems;
|
||||
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@ -33,6 +34,16 @@ public abstract class EntityMissileTier2 extends EntityMissileBaseNT {
|
||||
return RadarTargetType.MISSILE_TIER2;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.tier2";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlipLevel() {
|
||||
return IRadarDetectableNT.TIER2;
|
||||
}
|
||||
|
||||
public static class EntityMissileStrong extends EntityMissileTier2 {
|
||||
public EntityMissileStrong(World world) { super(world); }
|
||||
public EntityMissileStrong(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); }
|
||||
|
||||
@ -10,6 +10,7 @@ import com.hbm.explosion.ExplosionThermo;
|
||||
import com.hbm.explosion.ExplosionNT.ExAttrib;
|
||||
import com.hbm.items.ModItems;
|
||||
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@ -34,6 +35,16 @@ public abstract class EntityMissileTier3 extends EntityMissileBaseNT {
|
||||
public RadarTargetType getTargetType() {
|
||||
return RadarTargetType.MISSILE_TIER3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.tier3";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlipLevel() {
|
||||
return IRadarDetectableNT.TIER3;
|
||||
}
|
||||
|
||||
public static class EntityMissileBurst extends EntityMissileTier3 {
|
||||
public EntityMissileBurst(World world) { super(world); }
|
||||
|
||||
@ -10,6 +10,7 @@ import com.hbm.entity.logic.EntityNukeExplosionMK5;
|
||||
import com.hbm.explosion.ExplosionLarge;
|
||||
import com.hbm.items.ModItems;
|
||||
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@ -31,7 +32,17 @@ public abstract class EntityMissileTier4 extends EntityMissileBaseNT {
|
||||
|
||||
@Override
|
||||
public RadarTargetType getTargetType() {
|
||||
return RadarTargetType.MISSILE_TIER1;
|
||||
return RadarTargetType.MISSILE_TIER4;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getUnlocalizedName() {
|
||||
return "radar.target.tier4";
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlipLevel() {
|
||||
return IRadarDetectableNT.TIER4;
|
||||
}
|
||||
|
||||
public static class EntityMissileNuclear extends EntityMissileTier4 {
|
||||
|
||||
@ -0,0 +1,76 @@
|
||||
package com.hbm.inventory.container;
|
||||
|
||||
import com.hbm.items.ModItems;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineRadarNT;
|
||||
|
||||
import api.hbm.energy.IBatteryItem;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.inventory.Container;
|
||||
import net.minecraft.inventory.Slot;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ContainerMachineRadarNT extends Container {
|
||||
|
||||
private TileEntityMachineRadarNT radar;
|
||||
|
||||
public ContainerMachineRadarNT(InventoryPlayer invPlayer, TileEntityMachineRadarNT tedf) {
|
||||
this.radar = tedf;
|
||||
|
||||
for(int i = 0; i < 8; i++) this.addSlotToContainer(new Slot(tedf, i, 26 + i * 18, 17));
|
||||
|
||||
this.addSlotToContainer(new Slot(tedf, 8, 26, 44));
|
||||
this.addSlotToContainer(new Slot(tedf, 9, 152, 44));
|
||||
|
||||
for(int i = 0; i < 3; i++) {
|
||||
for(int j = 0; j < 9; j++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, j + i * 9 + 9, 8 + j * 18, 103 + i * 18));
|
||||
}
|
||||
}
|
||||
|
||||
for(int i = 0; i < 9; i++) {
|
||||
this.addSlotToContainer(new Slot(invPlayer, i, 8 + i * 18, 161));
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack transferStackInSlot(EntityPlayer p_82846_1_, int par2) {
|
||||
ItemStack var3 = null;
|
||||
Slot var4 = (Slot) this.inventorySlots.get(par2);
|
||||
|
||||
if(var4 != null && var4.getHasStack()) {
|
||||
ItemStack var5 = var4.getStack();
|
||||
var3 = var5.copy();
|
||||
|
||||
if(par2 <= 9) {
|
||||
if(!this.mergeItemStack(var5, 10, this.inventorySlots.size(), true)) {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
|
||||
if(var3.getItem() instanceof IBatteryItem || var3.getItem() == ModItems.battery_creative) {
|
||||
if(!this.mergeItemStack(var5, 9, 10, false)) {
|
||||
return null;
|
||||
}
|
||||
} else {
|
||||
if(!this.mergeItemStack(var5, 0, 9, false)) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(var5.stackSize == 0) {
|
||||
var4.putStack((ItemStack) null);
|
||||
} else {
|
||||
var4.onSlotChanged();
|
||||
}
|
||||
}
|
||||
|
||||
return var3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean canInteractWith(EntityPlayer player) {
|
||||
return radar.isUseableByPlayer(player);
|
||||
}
|
||||
}
|
||||
@ -53,6 +53,8 @@ public class GUIMachineRadarNT extends GuiScreen {
|
||||
if(checkClick(x, y, -10, 118, 8, 8)) cmd = "smart";
|
||||
if(checkClick(x, y, -10, 128, 8, 8)) cmd = "red";
|
||||
if(checkClick(x, y, -10, 138, 8, 8)) cmd = "map";
|
||||
if(checkClick(x, y, -10, 158, 8, 8)) cmd = "gui1";
|
||||
if(checkClick(x, y, -10, 178, 8, 8)) cmd = "clear";
|
||||
|
||||
if(cmd != null) {
|
||||
mc.getSoundHandler().playSound(PositionedSoundRecord.func_147674_a(new ResourceLocation("gui.button.press"), 1.0F));
|
||||
@ -81,6 +83,8 @@ public class GUIMachineRadarNT extends GuiScreen {
|
||||
if(checkClick(mouseX, mouseY, -10, 118, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.smartMode")), mouseX, mouseY);
|
||||
if(checkClick(mouseX, mouseY, -10, 128, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.redMode")), mouseX, mouseY);
|
||||
if(checkClick(mouseX, mouseY, -10, 138, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.showMap")), mouseX, mouseY);
|
||||
if(checkClick(mouseX, mouseY, -10, 158, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.toggleGui")), mouseX, mouseY);
|
||||
if(checkClick(mouseX, mouseY, -10, 178, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.clearMap")), mouseX, mouseY);
|
||||
|
||||
if(!radar.entries.isEmpty()) {
|
||||
for(RadarEntry m : radar.entries) {
|
||||
@ -102,6 +106,7 @@ public class GUIMachineRadarNT extends GuiScreen {
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
drawTexturedModalRect(guiLeft - 14, guiTop + 84, 224, 0, 14, 66);
|
||||
drawTexturedModalRect(guiLeft - 14, guiTop + 154, 224, 66, 14, 36);
|
||||
|
||||
if(radar.power > 0) {
|
||||
int i = (int) (radar.power * 200 / radar.maxPower);
|
||||
|
||||
@ -0,0 +1,69 @@
|
||||
package com.hbm.inventory.gui;
|
||||
|
||||
import java.util.Arrays;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.inventory.container.ContainerMachineRadarNT;
|
||||
import com.hbm.lib.RefStrings;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.machine.TileEntityMachineRadarNT;
|
||||
import com.hbm.util.I18nUtil;
|
||||
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.resources.I18n;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.network.play.client.C0DPacketCloseWindow;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
|
||||
public class GUIMachineRadarNTSlots extends GuiInfoContainer {
|
||||
|
||||
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/machine/gui_radar_link.png");
|
||||
private TileEntityMachineRadarNT radar;
|
||||
|
||||
public GUIMachineRadarNTSlots(InventoryPlayer invPlayer, TileEntityMachineRadarNT tedf) {
|
||||
super(new ContainerMachineRadarNT(invPlayer, tedf));
|
||||
radar = tedf;
|
||||
|
||||
this.xSize = 176;
|
||||
this.ySize = 184;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void mouseClicked(int x, int y, int i) {
|
||||
super.mouseClicked(x, y, i);
|
||||
|
||||
if(checkClick(x, y, 5, 5, 8, 8)) {
|
||||
this.mc.thePlayer.sendQueue.addToSendQueue(new C0DPacketCloseWindow(this.mc.thePlayer.openContainer.windowId)); // closes the server-side GUI component without resetting the client's cursor position
|
||||
FMLNetworkHandler.openGui(this.mc.thePlayer, MainRegistry.instance, 0, radar.getWorldObj(), radar.xCoord, radar.yCoord, radar.zCoord);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void drawScreen(int mouseX, int mouseY, float f) {
|
||||
super.drawScreen(mouseX, mouseY, f);
|
||||
|
||||
if(checkClick(mouseX, mouseY, 5, 5, 8, 8)) this.func_146283_a(Arrays.asList(I18nUtil.resolveKeyArray("radar.toggleGui")), mouseX, mouseY);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerForegroundLayer(int i, int j) {
|
||||
String name = this.radar.hasCustomInventoryName() ? this.radar.getInventoryName() : I18n.format(this.radar.getInventoryName());
|
||||
this.fontRendererObj.drawString(name, this.xSize / 2 - this.fontRendererObj.getStringWidth(name) / 2, 6, 4210752);
|
||||
this.fontRendererObj.drawString(I18n.format("container.inventory"), 8, this.ySize - 96 + 2, 4210752);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void drawGuiContainerBackgroundLayer(float p_146976_1_, int p_146976_2_, int p_146976_3_) {
|
||||
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
|
||||
Minecraft.getMinecraft().getTextureManager().bindTexture(texture);
|
||||
drawTexturedModalRect(guiLeft, guiTop, 0, 0, xSize, ySize);
|
||||
|
||||
if(radar.power > 0) {
|
||||
int i = (int) (radar.power * 160 / radar.maxPower);
|
||||
drawTexturedModalRect(guiLeft + 8, guiTop + 64, 0, 185, i, 16);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -75,6 +75,10 @@ public abstract class GuiInfoContainer extends GuiContainer {
|
||||
return this.func_146978_c(slot.xDisplayPosition, slot.yDisplayPosition, 16, 16, x, y);
|
||||
}
|
||||
|
||||
protected boolean checkClick(int x, int y, int left, int top, int sizeX, int sizeY) {
|
||||
return guiLeft + left <= x && guiLeft + left + sizeX > x && guiTop + top < y && guiTop + top + sizeY >= y;
|
||||
}
|
||||
|
||||
/* Getters for external use of the GUI's rect rendering, such as NumberDisplay */
|
||||
public int getGuiTop() {
|
||||
return this.guiTop;
|
||||
|
||||
@ -11,8 +11,11 @@ import com.hbm.blocks.ModBlocks;
|
||||
import com.hbm.config.WeaponConfig;
|
||||
import com.hbm.extprop.HbmLivingProps;
|
||||
import com.hbm.interfaces.IControlReceiver;
|
||||
import com.hbm.inventory.container.ContainerMachineRadarNT;
|
||||
import com.hbm.inventory.gui.GUIMachineRadarNT;
|
||||
import com.hbm.inventory.gui.GUIMachineRadarNTSlots;
|
||||
import com.hbm.lib.Library;
|
||||
import com.hbm.main.MainRegistry;
|
||||
import com.hbm.tileentity.IConfigurableMachine;
|
||||
import com.hbm.tileentity.IGUIProvider;
|
||||
import com.hbm.tileentity.TileEntityMachineBase;
|
||||
@ -23,6 +26,7 @@ import api.hbm.entity.IRadarDetectable;
|
||||
import api.hbm.entity.IRadarDetectableNT;
|
||||
import api.hbm.entity.IRadarDetectableNT.RadarScanParams;
|
||||
import api.hbm.entity.RadarEntry;
|
||||
import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
import cpw.mods.fml.relauncher.SideOnly;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
@ -70,6 +74,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
|
||||
public static int chunkLoadCap = 5;
|
||||
|
||||
public byte[] map = new byte[40_000];
|
||||
public boolean clearFlag = false;
|
||||
|
||||
public List<RadarEntry> entries = new ArrayList();
|
||||
|
||||
@ -99,12 +104,12 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
|
||||
}
|
||||
|
||||
public TileEntityMachineRadarNT() {
|
||||
super(1);
|
||||
super(10);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return "";
|
||||
return "container.radar";
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -113,6 +118,8 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
|
||||
if(this.map == null || this.map.length != 40_000) this.map = new byte[40_000];
|
||||
|
||||
if(!worldObj.isRemote) {
|
||||
|
||||
this.power = Library.chargeTEFromItems(slots, 9, power, maxPower);
|
||||
|
||||
if(worldObj.getTotalWorldTime() % 20 == 0) this.updateStandardConnections(worldObj, xCoord, yCoord, zCoord);
|
||||
|
||||
@ -158,6 +165,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
|
||||
}
|
||||
|
||||
this.networkPackNT(50);
|
||||
if(this.clearFlag) this.clearFlag = false;
|
||||
} else {
|
||||
prevRotation = rotation;
|
||||
if(power > 0) rotation += 5F;
|
||||
@ -181,15 +189,20 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
|
||||
buf.writeBoolean(this.jammed);
|
||||
buf.writeInt(entries.size());
|
||||
for(RadarEntry entry : entries) entry.toBytes(buf);
|
||||
if(this.showMap) {
|
||||
if(this.clearFlag) {
|
||||
buf.writeBoolean(true);
|
||||
short index = (short) (worldObj.getTotalWorldTime() % 400);
|
||||
buf.writeShort(index);
|
||||
for(int i = index * 100; i < (index + 1) * 100; i++) {
|
||||
buf.writeByte(this.map[i]);
|
||||
}
|
||||
} else {
|
||||
buf.writeBoolean(false);
|
||||
if(this.showMap) {
|
||||
buf.writeBoolean(true);
|
||||
short index = (short) (worldObj.getTotalWorldTime() % 400);
|
||||
buf.writeShort(index);
|
||||
for(int i = index * 100; i < (index + 1) * 100; i++) {
|
||||
buf.writeByte(this.map[i]);
|
||||
}
|
||||
} else {
|
||||
buf.writeBoolean(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -210,10 +223,14 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
|
||||
entry.fromBytes(buf);
|
||||
this.entries.add(entry);
|
||||
}
|
||||
if(buf.readBoolean()) {
|
||||
int index = buf.readShort();
|
||||
for(int i = index * 100; i < (index + 1) * 100; i++) {
|
||||
this.map[i] = buf.readByte();
|
||||
if(buf.readBoolean()) { // clear flag
|
||||
this.map = new byte[40_000];
|
||||
} else {
|
||||
if(buf.readBoolean()) { // map enabled
|
||||
int index = buf.readShort();
|
||||
for(int i = index * 100; i < (index + 1) * 100; i++) {
|
||||
this.map[i] = buf.readByte();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -289,6 +306,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
|
||||
|
||||
for(int i = 0; i < entries.size(); i++) {
|
||||
RadarEntry e = entries.get(i);
|
||||
if(!e.redstone) continue;
|
||||
double dist = Math.sqrt(Math.pow(e.posX - xCoord, 2) + Math.pow(e.posZ - zCoord, 2));
|
||||
int p = 15 - (int)Math.floor(dist / maxRange * 15);
|
||||
|
||||
@ -303,9 +321,10 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
|
||||
int power = 0;
|
||||
|
||||
for(int i = 0; i < entries.size(); i++) {
|
||||
|
||||
if(entries.get(i).blipLevel + 1 > power) {
|
||||
power = entries.get(i).blipLevel + 1;
|
||||
RadarEntry e = entries.get(i);
|
||||
if(!e.redstone) continue;
|
||||
if(e.blipLevel + 1 > power) {
|
||||
power = e.blipLevel + 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -340,14 +359,20 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
|
||||
return this.isUseableByPlayer(player);
|
||||
}
|
||||
|
||||
@Override public void receiveControl(NBTTagCompound data) { }
|
||||
|
||||
@Override
|
||||
public void receiveControl(NBTTagCompound data) {
|
||||
public void receiveControl(EntityPlayer player, NBTTagCompound data) {
|
||||
|
||||
if(data.hasKey("missiles")) this.scanMissiles = !this.scanMissiles;
|
||||
if(data.hasKey("shells")) this.scanShells = !this.scanShells;
|
||||
if(data.hasKey("players")) this.scanPlayers = !this.scanPlayers;
|
||||
if(data.hasKey("smart")) this.smartMode = !this.smartMode;
|
||||
if(data.hasKey("red")) this.redMode = !this.redMode;
|
||||
if(data.hasKey("map")) this.showMap = !this.showMap;
|
||||
if(data.hasKey("clear")) this.clearFlag = true;
|
||||
|
||||
if(data.hasKey("gui1")) FMLNetworkHandler.openGui(player, MainRegistry.instance, 1, worldObj, xCoord, yCoord, zCoord);
|
||||
}
|
||||
|
||||
AxisAlignedBB bb = null;
|
||||
@ -375,12 +400,18 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
|
||||
return 65536.0D;
|
||||
}
|
||||
|
||||
@Override public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) { return null; }
|
||||
@Override
|
||||
public Container provideContainer(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
if(ID == 1) return new ContainerMachineRadarNT(player.inventory, this);
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
@SideOnly(Side.CLIENT)
|
||||
public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) {
|
||||
return new GUIMachineRadarNT(this);
|
||||
if(ID == 0) return new GUIMachineRadarNT(this);
|
||||
if(ID == 1) return new GUIMachineRadarNTSlots(player.inventory, this);
|
||||
return null;
|
||||
}
|
||||
|
||||
/** List of lambdas that are supplied a Pair with the entity and radar in question to generate a RadarEntry
|
||||
@ -422,7 +453,7 @@ public class TileEntityMachineRadarNT extends TileEntityMachineBase implements I
|
||||
Entity e = x.getX();
|
||||
if(e instanceof IRadarDetectableNT) {
|
||||
IRadarDetectableNT detectable = (IRadarDetectableNT) e;
|
||||
if(detectable.canBeSeenBy(x.getY()) && detectable.paramsApplicable(x.getZ())) return new RadarEntry(detectable, e);
|
||||
if(detectable.canBeSeenBy(x.getY()) && detectable.paramsApplicable(x.getZ())) return new RadarEntry(detectable, e, detectable.suppliesRedstone(x.getZ()));
|
||||
}
|
||||
return null;
|
||||
});
|
||||
|
||||
@ -3439,10 +3439,14 @@ potion.hbm_stability=Stabilität
|
||||
potion.hbm_taint=Verdorben
|
||||
potion.hbm_telekinesis=! ! !
|
||||
|
||||
radar.clearMap=Karte zurücksetzen
|
||||
radar.detectMissiles=Raketen erkennen
|
||||
radar.detectPlayers=Spieler erkennen
|
||||
radar.detectShells=Geschosse erkennen
|
||||
radar.redMode=Redstone Mode$Ein: Redstonesignal basiert auf Nähe$Aus: Redstonesignal basiert auf Größe
|
||||
radar.showMap=Karte anzeigen
|
||||
radar.smartMode=Smart Mode$Redstonesignal ignoriert aufsteigende Raketen
|
||||
radar.toggleGui=Ansicht umschalten
|
||||
|
||||
rbmk.heat=Komponententemperatur: %s
|
||||
rbmk.boiler.water=Wasser: %s / %s
|
||||
|
||||
@ -3017,7 +3017,7 @@ item.mike_kit.name=Ivy Mike Kit
|
||||
item.mirror_tool.name=Mirror Adjustment Tool
|
||||
item.mirror_tool.linked=Alignment position set!
|
||||
item.mirror_tool.desc=Right-click boiler to memorize the position.$Click on mirrors to turn them towards the boiler.
|
||||
item.missile_anti_ballistic.name=Anti Ballistic Missile
|
||||
item.missile_anti_ballistic.name=Anti-Ballistic Missile
|
||||
item.missile_assembly.name=Small Missile Assembly
|
||||
item.missile_bhole.name=Black Hole Missile
|
||||
item.missile_burst.name=Spare Missile
|
||||
@ -4368,10 +4368,28 @@ potion.hbm_stability=Stability
|
||||
potion.hbm_taint=Tainted
|
||||
potion.hbm_telekinesis=! ! !
|
||||
|
||||
radar.clearMap=Clear Map
|
||||
radar.detectMissiles=Detect Missiles
|
||||
radar.detectPlayers=Detect Players
|
||||
radar.detectShells=Detect Shells
|
||||
radar.redMode=Redstone Mode$On: Redstone output based on range$Off: Redstone output based on tier
|
||||
radar.showMap=Show Map
|
||||
radar.smartMode=Smart Mode$Redstone output ignores ascending missiles
|
||||
radar.toggleGui=Switch View
|
||||
|
||||
radar.target.abm=Anti-Ballsitic Missile
|
||||
radar.target.custom10=Size 10 Custom Missile
|
||||
radar.target.custom1015=Size 10/15 Custom Missile
|
||||
radar.target.custom15=Size 15 Custom Missile
|
||||
radar.target.custom1520=Size 15/20 Custom Missile
|
||||
radar.target.custom20=Size 20 Custom Missile
|
||||
radar.target.doomsday=Doomsday Missile
|
||||
radar.target.shuttle=Reliant Robin Space Shuttle
|
||||
radar.target.tier0=Tier 0 Missile
|
||||
radar.target.tier1=Tier 1 Missile
|
||||
radar.target.tier2=Tier 2 Missile
|
||||
radar.target.tier3=Tier 3 Missile
|
||||
radar.target.tier4=Tier 4 Missile
|
||||
|
||||
rbmk.heat=Column temperature: %s
|
||||
rbmk.boiler.water=Feedwater: %s / %s
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.5 KiB After Width: | Height: | Size: 2.0 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
Loading…
x
Reference in New Issue
Block a user