diff --git a/src/main/java/com/hbm/entity/EntityMappings.java b/src/main/java/com/hbm/entity/EntityMappings.java index 179da42d0..30d51c83c 100644 --- a/src/main/java/com/hbm/entity/EntityMappings.java +++ b/src/main/java/com/hbm/entity/EntityMappings.java @@ -122,6 +122,7 @@ public class EntityMappings { addEntity(EntityExplosiveBeam.class, "entity_beam_bomb", 1000); addEntity(EntityAAShell.class, "entity_aa_shell", 1000); addEntity(EntityRocketHoming.class, "entity_stinger", 1000); + addEntity(EntityMissileTest.class, "entity_missile_test_mk2", 1000); addEntity(EntityMissileMicro.class, "entity_missile_micronuclear", 1000); addEntity(EntityCloudSolinium.class, "entity_cloud_rainbow", 1000); addEntity(EntityRagingVortex.class, "entity_raging_vortex", 250); diff --git a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java index d6132a9c5..7ea0f7b6f 100644 --- a/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java +++ b/src/main/java/com/hbm/entity/missile/EntityMissileTier0.java @@ -16,7 +16,10 @@ import com.hbm.items.ModItems; import com.hbm.items.ItemAmmoEnums.AmmoFatman; +import net.minecraft.block.Block; +import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; public abstract class EntityMissileTier0 extends EntityMissileBaseNT { @@ -40,6 +43,40 @@ public abstract class EntityMissileTier0 extends EntityMissileBaseNT { return 0.5F; } + public static class EntityMissileTest extends EntityMissileTier0 { + public EntityMissileTest(World world) { super(world); } + public EntityMissileTest(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } + @Override public ItemStack getDebrisRareDrop() { return null; } + @Override public ItemStack getMissileItemForInfo() { return new ItemStack(ModItems.missile_test); } + + @Override public void onImpact() { + int x = (int) Math.floor(posX); + int y = (int) Math.floor(posY); + int z = (int) Math.floor(posZ); + int range = 50; + + for(int iX = -range; iX <= range; iX++) { + for(int iY = -range; iY <= range; iY++) { + for(int iZ = -range; iZ <= range; iZ++) { + double dist = Math.sqrt(iX * iX + iY * iY + iZ * iZ); + if(dist > range) continue; + Block block = worldObj.getBlock(x + iX, y + iY, z + iZ); + int meta = worldObj.getBlockMetadata(x + iX, y + iY, z + iZ); + int charMeta = (int) MathHelper.clamp_double(12 - (dist / range) * (dist / range) * 13, 0, 12); + + if(block.isNormalCube()) { + if(block != ModBlocks.sellafield_slaked || meta < charMeta) { + worldObj.setBlock(x + iX, y + iY, z + iZ, ModBlocks.sellafield_slaked, charMeta, 3); + } + } else { + worldObj.setBlock(x + iX, y + iY, z + iZ, Blocks.air); + } + } + } + } + } + } + public static class EntityMissileMicro extends EntityMissileTier0 { public EntityMissileMicro(World world) { super(world); } public EntityMissileMicro(World world, float x, float y, float z, int a, int b) { super(world, x, y, z, a, b); } diff --git a/src/main/java/com/hbm/items/ModItems.java b/src/main/java/com/hbm/items/ModItems.java index d8214f073..d48129c4d 100644 --- a/src/main/java/com/hbm/items/ModItems.java +++ b/src/main/java/com/hbm/items/ModItems.java @@ -1330,6 +1330,7 @@ public class ModItems { public static Item missile_emp; public static Item missile_shuttle; public static Item missile_stealth; + public static Item missile_test; public static Item mp_thruster_10_kerosene; public static Item mp_thruster_10_kerosene_tec; @@ -3955,6 +3956,7 @@ public class ModItems { missile_emp = new ItemMissile(MissileFormFactor.MICRO, MissileTier.TIER0).setUnlocalizedName("missile_emp").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_emp"); missile_shuttle = new ItemMissile(MissileFormFactor.OTHER, MissileTier.TIER3, MissileFuel.KEROSENE_PEROXIDE).setUnlocalizedName("missile_shuttle").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_shuttle"); missile_stealth = new ItemMissile(MissileFormFactor.STRONG, MissileTier.TIER1).setUnlocalizedName("missile_stealth").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":missile_stealth"); + missile_test = new ItemMissile(MissileFormFactor.MICRO, MissileTier.TIER0).setUnlocalizedName("missile_test").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":missile_micro"); missile_carrier = new Item().setUnlocalizedName("missile_carrier").setMaxStackSize(1).setCreativeTab(null).setTextureName(RefStrings.MODID + ":missile_carrier"); missile_soyuz = new ItemSoyuz().setUnlocalizedName("missile_soyuz").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz"); missile_soyuz_lander = new ItemCustomLore().setUnlocalizedName("missile_soyuz_lander").setMaxStackSize(1).setCreativeTab(MainRegistry.missileTab).setTextureName(RefStrings.MODID + ":soyuz_lander"); @@ -6878,6 +6880,7 @@ public class ModItems { //Missiles //Tier 0 + GameRegistry.registerItem(missile_test, missile_test.getUnlocalizedName()); GameRegistry.registerItem(missile_taint, missile_taint.getUnlocalizedName()); GameRegistry.registerItem(missile_micro, missile_micro.getUnlocalizedName()); GameRegistry.registerItem(missile_bhole, missile_bhole.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 0027bced9..9661ef3b6 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -419,6 +419,7 @@ public class ClientProxy extends ServerProxy { MinecraftForgeClient.registerItemRenderer(ModItems.dnt_sword, new ItemRenderTransformer(rtp, ttp_high, stp, rfp, tfp, sfp, rir, tir, sir)); ItemRenderMissileGeneric.init(); + MinecraftForgeClient.registerItemRenderer(ModItems.missile_test, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); MinecraftForgeClient.registerItemRenderer(ModItems.missile_taint, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); MinecraftForgeClient.registerItemRenderer(ModItems.missile_micro, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); MinecraftForgeClient.registerItemRenderer(ModItems.missile_bhole, new ItemRenderMissileGeneric(RenderMissileType.TYPE_TIER0)); @@ -719,6 +720,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerEntityRenderingHandler(EntityMissileSchrabidium.class, new RenderMissileTaint()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileEMP.class, new RenderMissileTaint()); RenderingRegistry.registerEntityRenderingHandler(EntityMissileShuttle.class, new RenderMissileShuttle()); + RenderingRegistry.registerEntityRenderingHandler(EntityMissileTest.class, new RenderMissileTaint()); //effects RenderingRegistry.registerEntityRenderingHandler(EntityCloudFleija.class, new RenderCloudFleija()); RenderingRegistry.registerEntityRenderingHandler(EntityCloudFleijaRainbow.class, new RenderCloudRainbow()); diff --git a/src/main/java/com/hbm/main/ResourceManager.java b/src/main/java/com/hbm/main/ResourceManager.java index b84692e8e..8aa0f75f7 100644 --- a/src/main/java/com/hbm/main/ResourceManager.java +++ b/src/main/java/com/hbm/main/ResourceManager.java @@ -1239,6 +1239,7 @@ public class ResourceManager { public static final ResourceLocation missileMicroBHole_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_micro_bhole.png"); public static final ResourceLocation missileMicroSchrab_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_micro_schrab.png"); public static final ResourceLocation missileMicroEMP_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_micro_emp.png"); + public static final ResourceLocation missileMicroTest_tex = new ResourceLocation(RefStrings.MODID, "textures/models/missile_test.png"); public static final ResourceLocation soyuz_engineblock = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz/engineblock.png"); public static final ResourceLocation soyuz_bottomstage = new ResourceLocation(RefStrings.MODID, "textures/models/soyuz/bottomstage.png"); diff --git a/src/main/java/com/hbm/render/entity/rocket/RenderMissileTaint.java b/src/main/java/com/hbm/render/entity/rocket/RenderMissileTaint.java index 422b8fd33..09d45cba4 100644 --- a/src/main/java/com/hbm/render/entity/rocket/RenderMissileTaint.java +++ b/src/main/java/com/hbm/render/entity/rocket/RenderMissileTaint.java @@ -49,6 +49,8 @@ public class RenderMissileTaint extends Render { return ResourceManager.missileMicroSchrab_tex; if(p_110775_1_ instanceof EntityMissileEMP) return ResourceManager.missileMicroEMP_tex; + if(p_110775_1_ instanceof EntityMissileTest) + return ResourceManager.missileMicroTest_tex; return ResourceManager.missileMicro_tex; } diff --git a/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java b/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java index f3354722d..d38d09a86 100644 --- a/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java +++ b/src/main/java/com/hbm/render/item/ItemRenderMissileGeneric.java @@ -130,6 +130,7 @@ public class ItemRenderMissileGeneric implements IItemRenderer { public static void init() { + renderers.put(new ComparableStack(ModItems.missile_test), generateStandard(ResourceManager.missileMicroTest_tex, ResourceManager.missileMicro)); renderers.put(new ComparableStack(ModItems.missile_taint), generateStandard(ResourceManager.missileTaint_tex, ResourceManager.missileMicro)); renderers.put(new ComparableStack(ModItems.missile_micro), generateStandard(ResourceManager.missileMicro_tex, ResourceManager.missileMicro)); renderers.put(new ComparableStack(ModItems.missile_bhole), generateStandard(ResourceManager.missileMicroBHole_tex, ResourceManager.missileMicro)); diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java index ef9631a5f..81b2573c8 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityLaunchPadBase.java @@ -7,33 +7,12 @@ import java.util.Set; import org.apache.logging.log4j.Level; import com.hbm.config.GeneralConfig; -import com.hbm.entity.missile.EntityMissileAntiBallistic; -import com.hbm.entity.missile.EntityMissileBaseNT; -import com.hbm.entity.missile.EntityMissileDoomsday; -import com.hbm.entity.missile.EntityMissileShuttle; -import com.hbm.entity.missile.EntityMissileStealth; -import com.hbm.entity.missile.EntityMissileTier0.EntityMissileBHole; -import com.hbm.entity.missile.EntityMissileTier0.EntityMissileEMP; -import com.hbm.entity.missile.EntityMissileTier0.EntityMissileMicro; -import com.hbm.entity.missile.EntityMissileTier0.EntityMissileSchrabidium; -import com.hbm.entity.missile.EntityMissileTier0.EntityMissileTaint; -import com.hbm.entity.missile.EntityMissileTier1.EntityMissileBunkerBuster; -import com.hbm.entity.missile.EntityMissileTier1.EntityMissileCluster; -import com.hbm.entity.missile.EntityMissileTier1.EntityMissileDecoy; -import com.hbm.entity.missile.EntityMissileTier1.EntityMissileGeneric; -import com.hbm.entity.missile.EntityMissileTier1.EntityMissileIncendiary; -import com.hbm.entity.missile.EntityMissileTier2.EntityMissileBusterStrong; -import com.hbm.entity.missile.EntityMissileTier2.EntityMissileClusterStrong; -import com.hbm.entity.missile.EntityMissileTier2.EntityMissileEMPStrong; -import com.hbm.entity.missile.EntityMissileTier2.EntityMissileIncendiaryStrong; -import com.hbm.entity.missile.EntityMissileTier2.EntityMissileStrong; -import com.hbm.entity.missile.EntityMissileTier3.EntityMissileBurst; -import com.hbm.entity.missile.EntityMissileTier3.EntityMissileDrill; -import com.hbm.entity.missile.EntityMissileTier3.EntityMissileInferno; -import com.hbm.entity.missile.EntityMissileTier3.EntityMissileRain; -import com.hbm.entity.missile.EntityMissileTier4.EntityMissileMirv; -import com.hbm.entity.missile.EntityMissileTier4.EntityMissileNuclear; -import com.hbm.entity.missile.EntityMissileTier4.EntityMissileVolcano; +import com.hbm.entity.missile.*; +import com.hbm.entity.missile.EntityMissileTier0.*; +import com.hbm.entity.missile.EntityMissileTier1.*; +import com.hbm.entity.missile.EntityMissileTier2.*; +import com.hbm.entity.missile.EntityMissileTier3.*; +import com.hbm.entity.missile.EntityMissileTier4.*; import com.hbm.interfaces.IBomb.BombReturnCode; import com.hbm.inventory.RecipesCommon.ComparableStack; import com.hbm.inventory.container.ContainerLaunchPadLarge; @@ -78,6 +57,7 @@ public abstract class TileEntityLaunchPadBase extends TileEntityMachineBase impl public static void registerLaunchables() { //Tier 0 + missiles.put(new ComparableStack(ModItems.missile_test), EntityMissileTest.class); missiles.put(new ComparableStack(ModItems.missile_micro), EntityMissileMicro.class); missiles.put(new ComparableStack(ModItems.missile_schrabidium), EntityMissileSchrabidium.class); missiles.put(new ComparableStack(ModItems.missile_bhole), EntityMissileBHole.class); diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java index 3b12f505b..13c6a2036 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCore.java @@ -21,7 +21,9 @@ import com.hbm.lib.ModDamageSource; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.ArmorUtil; +import com.hbm.util.CompatEnergyControl; +import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -33,7 +35,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.Vec3; import net.minecraft.world.World; -public class TileEntityCore extends TileEntityMachineBase implements IGUIProvider { +public class TileEntityCore extends TileEntityMachineBase implements IGUIProvider, IInfoProviderEC { public int field; public int heat; @@ -41,6 +43,8 @@ public class TileEntityCore extends TileEntityMachineBase implements IGUIProvide public FluidTank[] tanks; private boolean lastTickValid = false; public boolean meltdownTick = false; + protected int consumption; + protected int prevConsumption; public TileEntityCore() { super(3); @@ -59,6 +63,9 @@ public class TileEntityCore extends TileEntityMachineBase implements IGUIProvide if(!worldObj.isRemote) { + this.prevConsumption = this.consumption; + this.consumption = 0; + int chunkX = xCoord >> 4; int chunkZ = zCoord >> 4; @@ -231,6 +238,8 @@ public class TileEntityCore extends TileEntityMachineBase implements IGUIProvide if(tanks[0].getFill() < demand || tanks[1].getFill() < demand) return joules; + this.consumption += demand; + heat += (int)Math.ceil((double)joules / 10000D); tanks[0].setFill(tanks[0].getFill() - demand); @@ -355,4 +364,9 @@ public class TileEntityCore extends TileEntityMachineBase implements IGUIProvide public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICore(player.inventory, this); } + + @Override + public void provideExtraInfo(NBTTagCompound data) { + data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, this.prevConsumption); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java index 7346c6168..442668e49 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreEmitter.java @@ -3,6 +3,8 @@ package com.hbm.tileentity.machine; import api.hbm.block.ILaserable; import api.hbm.energy.IEnergyUser; import api.hbm.fluid.IFluidStandardReceiver; +import api.hbm.tile.IInfoProviderEC; + import com.hbm.inventory.container.ContainerCoreEmitter; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; @@ -10,6 +12,8 @@ import com.hbm.inventory.gui.GUICoreEmitter; import com.hbm.lib.ModDamageSource; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.CompatEnergyControl; + import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -33,7 +37,7 @@ import net.minecraftforge.common.util.ForgeDirection; import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyUser, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider { +public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEnergyUser, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC { public long power; public static final long maxPower = 1000000000L; @@ -330,4 +334,10 @@ public class TileEntityCoreEmitter extends TileEntityMachineBase implements IEne public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICoreEmitter(player.inventory, this); } + + @Override + public void provideExtraInfo(NBTTagCompound data) { + data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, joules > 0 || prev > 0 ? 20 : 0); + data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, maxPower * watts / 2000); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java index 565c9a6ee..2805004db 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreReceiver.java @@ -8,10 +8,12 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUICoreReceiver; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.CompatEnergyControl; import api.hbm.block.ILaserable; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardReceiver; +import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -30,7 +32,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEnergyGenerator, IFluidAcceptor, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider { +public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEnergyGenerator, IFluidAcceptor, ILaserable, IFluidStandardReceiver, SimpleComponent, IGUIProvider, IInfoProviderEC { public long power; public long joules; @@ -153,8 +155,7 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn @Override @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() - { + public double getMaxRenderDistanceSquared() { return 65536.0D; } @@ -220,4 +221,10 @@ public class TileEntityCoreReceiver extends TileEntityMachineBase implements IEn public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICoreReceiver(player.inventory, this); } + + @Override + public void provideExtraInfo(NBTTagCompound data) { + data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, joules > 0 ? 20 : 0); + data.setDouble(CompatEnergyControl.D_OUTPUT_HE, joules * 5000); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java index 437d9cfa6..344b02ea0 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityCoreStabilizer.java @@ -6,8 +6,10 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemLens; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.CompatEnergyControl; import api.hbm.energy.IEnergyUser; +import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -26,7 +28,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityCoreStabilizer extends TileEntityMachineBase implements IEnergyUser, SimpleComponent, IGUIProvider { +public class TileEntityCoreStabilizer extends TileEntityMachineBase implements IEnergyUser, SimpleComponent, IGUIProvider, IInfoProviderEC { public long power; public static final long maxPower = 2500000000L; @@ -224,4 +226,15 @@ public class TileEntityCoreStabilizer extends TileEntityMachineBase implements I public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUICoreStabilizer(player.inventory, this); } + + @Override + public void provideExtraInfo(NBTTagCompound data) { + int demand = (int) Math.pow(watts, 4); + long damage = ItemLens.getLensDamage(slots[0]); + ItemLens lens = (ItemLens) com.hbm.items.ModItems.ams_lens; + if(getPower() >= demand && slots[0] != null && slots[0].getItem() == lens && damage < 432000000L) + data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, demand); + else + data.setDouble(CompatEnergyControl.D_CONSUMPTION_HE, 0); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java index 4c43bf5fc..a53e7614d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityGeiger.java @@ -4,15 +4,20 @@ import java.util.ArrayList; import java.util.List; import com.hbm.handler.radiation.ChunkRadiationManager; +import com.hbm.util.CompatEnergyControl; +import com.hbm.util.ContaminationUtil; + +import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import li.cil.oc.api.machine.Arguments; import li.cil.oc.api.machine.Callback; import li.cil.oc.api.machine.Context; import li.cil.oc.api.network.SimpleComponent; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityGeiger extends TileEntity implements SimpleComponent { +public class TileEntityGeiger extends TileEntity implements SimpleComponent, IInfoProviderEC { int timer = 0; int ticker = 0; @@ -74,4 +79,10 @@ public class TileEntityGeiger extends TileEntity implements SimpleComponent { return new Object[] {check()}; } + @Override + public void provideExtraInfo(NBTTagCompound data) { + int rads = check(); + String chunkPrefix = ContaminationUtil.getPreffixFromRad(rads); + data.setString(CompatEnergyControl.S_CHUNKRAD, chunkPrefix + rads + " RAD/s"); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java index 11e57b625..93f49a593 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHeaterElectric.java @@ -5,9 +5,11 @@ import com.hbm.main.MainRegistry; import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.tileentity.TileEntityLoadedBase; +import com.hbm.util.CompatEnergyControl; import api.hbm.energy.IEnergyUser; import api.hbm.tile.IHeatSource; +import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; @@ -15,7 +17,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IHeatSource, IEnergyUser, INBTPacketReceiver { +public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IHeatSource, IEnergyUser, INBTPacketReceiver, IInfoProviderEC { public long power; public int heatEnergy; @@ -200,4 +202,11 @@ public class TileEntityHeaterElectric extends TileEntityLoadedBase implements IH public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public void provideExtraInfo(NBTTagCompound data) { + data.setLong(CompatEnergyControl.D_CONSUMPTION_HE, getConsumption()); + data.setLong(CompatEnergyControl.L_ENERGY_TU, getHeatStored()); + data.setLong(CompatEnergyControl.D_OUTPUT_TU, getHeatGen()); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java index 01c4cc7ce..a1b83fb45 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineTurbofan.java @@ -28,11 +28,13 @@ import com.hbm.sound.AudioWrapper; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachinePolluting; +import com.hbm.util.CompatEnergyControl; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardTransceiver; +import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -49,7 +51,7 @@ import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider { +public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardTransceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { public long power; public static final long maxPower = 1_000_000; @@ -59,6 +61,8 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem public int afterburner; public boolean wasOn; public boolean showBlood = false; + protected int output; + protected int consumption; public float spin; public float lastSpin; @@ -119,6 +123,9 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem if(!worldObj.isRemote) { + this.output = 0; + this.consumption = 0; + //meta below 12 means that it's an old multiblock configuration if(this.getBlockMetadata() < 12) { //get old direction @@ -165,7 +172,9 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem if(amountToBurn > 0) { this.wasOn = true; this.tank.setFill(this.tank.getFill() - amountToBurn); - this.power += burnValue * amountToBurn * (1 + Math.min(this.afterburner / 3D, 4)); + this.output = (int) (burnValue * amountToBurn * (1 + Math.min(this.afterburner / 3D, 4))); + this.power += this.output; + this.consumption = amountToBurn; if(worldObj.getTotalWorldTime() % 20 == 0) PollutionHandler.incrementPollution(worldObj, xCoord, yCoord, zCoord, PollutionType.SOOT, PollutionHandler.SOOT_PER_SECOND * amountToBurn); } @@ -513,4 +522,11 @@ public class TileEntityMachineTurbofan extends TileEntityMachinePolluting implem if(type == UpgradeType.AFTERBURN) return 3; return 0; } + + @Override + public void provideExtraInfo(NBTTagCompound data) { + data.setBoolean(CompatEnergyControl.B_ACTIVE, this.output > 0); + data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, this.consumption); + data.setDouble(CompatEnergyControl.D_OUTPUT_HE, this.output); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java index c73041b75..d9f1f476c 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineGasFlare.java @@ -24,12 +24,14 @@ import com.hbm.main.MainRegistry; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.CompatEnergyControl; import com.hbm.util.I18nUtil; import com.hbm.util.ParticleUtil; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energy.IEnergyGenerator; import api.hbm.fluid.IFluidStandardReceiver; +import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; @@ -43,13 +45,15 @@ import net.minecraft.util.DamageSource; import net.minecraft.util.EnumChatFormatting; import net.minecraft.world.World; -public class TileEntityMachineGasFlare extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider { +public class TileEntityMachineGasFlare extends TileEntityMachineBase implements IEnergyGenerator, IFluidContainer, IFluidAcceptor, IFluidStandardReceiver, IControlReceiver, IGUIProvider, IUpgradeInfoProvider, IInfoProviderEC { public long power; public static final long maxPower = 100000; public FluidTank tank; public boolean isOn = false; public boolean doesBurn = false; + protected int fluidUsed = 0; + protected int output = 0; public TileEntityMachineGasFlare() { super(6); @@ -99,6 +103,9 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements public void updateEntity() { if(!worldObj.isRemote) { + + this.fluidUsed = 0; + this.output = 0; for(DirPos pos : getConPos()) { this.sendPower(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); @@ -125,6 +132,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements if(tank.getTankType().hasTrait(FT_Gaseous.class) || tank.getTankType().hasTrait(FT_Gaseous_ART.class)) { int eject = Math.min(maxVent, tank.getFill()); + this.fluidUsed = eject; tank.setFill(tank.getFill() - eject); tank.getTankType().onFluidRelease(this, tank, eject); @@ -135,6 +143,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements if(tank.getTankType().hasTrait(FT_Flammable.class)) { int eject = Math.min(maxBurn, tank.getFill()); + this.fluidUsed = eject; tank.setFill(tank.getFill() - eject); int penalty = 5; @@ -145,6 +154,7 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements powerProd /= penalty; powerProd += powerProd * yield / 3; + this.output = (int) powerProd; power += powerProd; if(power > maxPower) @@ -336,4 +346,11 @@ public class TileEntityMachineGasFlare extends TileEntityMachineBase implements if(type == UpgradeType.EFFECT) return 3; return 0; } + + @Override + public void provideExtraInfo(NBTTagCompound data) { + data.setBoolean(CompatEnergyControl.B_ACTIVE, this.fluidUsed > 0); + data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, this.fluidUsed); + data.setDouble(CompatEnergyControl.D_OUTPUT_HE, this.output); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java index c0a883300..164ce4192 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKBoiler.java @@ -3,6 +3,8 @@ package com.hbm.tileentity.machine.rbmk; import api.hbm.fluid.IFluidStandardTransceiver; import api.hbm.fluid.IFluidUser; import api.hbm.fluid.IPipeNet; +import api.hbm.tile.IInfoProviderEC; + import com.hbm.blocks.ModBlocks; import com.hbm.entity.projectile.EntityRBMKDebris.DebrisType; import com.hbm.handler.CompatHandler; @@ -16,6 +18,7 @@ import com.hbm.inventory.fluid.tank.FluidTank; import com.hbm.inventory.gui.GUIRBMKBoiler; import com.hbm.lib.Library; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; +import com.hbm.util.CompatEnergyControl; import com.hbm.util.fauxpointtwelve.DirPos; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; @@ -35,11 +38,13 @@ import java.util.ArrayList; import java.util.List; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent { +public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements IFluidAcceptor, IFluidSource, IControlReceiver, IFluidStandardTransceiver, SimpleComponent, IInfoProviderEC { public FluidTank feed; public FluidTank steam; public List list = new ArrayList(); + protected int consumption; + protected int output; public TileEntityRBMKBoiler() { super(0); @@ -59,6 +64,9 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I if(!worldObj.isRemote) { feed.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); steam.updateTank(xCoord, yCoord, zCoord, worldObj.provider.dimensionId); + + this.consumption = 0; + this.output = 0; double heatCap = this.getHeatFromSteam(steam.getTankType()); double heatProvided = this.heat - heatCap; @@ -83,6 +91,9 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I steamProduced = (int)Math.floor((waterUsed * 100D) / steamFactor); } + this.consumption = waterUsed; + this.output = steamProduced; + feed.setFill(feed.getFill() - waterUsed); steam.setFill(steam.getFill() + steamProduced); @@ -402,4 +413,10 @@ public class TileEntityRBMKBoiler extends TileEntityRBMKSlottedBase implements I public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIRBMKBoiler(player.inventory, this); } + + @Override + public void provideExtraInfo(NBTTagCompound data) { + data.setDouble(CompatEnergyControl.D_CONSUMPTION_MB, consumption); + data.setDouble(CompatEnergyControl.D_OUTPUT_MB, output); + } } diff --git a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java index 3f1536eff..2b6d0c9b5 100644 --- a/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java +++ b/src/main/java/com/hbm/tileentity/machine/rbmk/TileEntityRBMKRod.java @@ -11,8 +11,10 @@ import com.hbm.items.ModItems; import com.hbm.items.machine.ItemRBMKRod; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKConsole.ColumnType; import com.hbm.util.Compat; +import com.hbm.util.CompatEnergyControl; import com.hbm.util.ParticleUtil; +import api.hbm.tile.IInfoProviderEC; import cpw.mods.fml.common.Optional; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -31,7 +33,7 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; @Optional.InterfaceList({@Optional.Interface(iface = "li.cil.oc.api.network.SimpleComponent", modid = "OpenComputers")}) -public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, SimpleComponent { +public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBMKFluxReceiver, IRBMKLoadable, SimpleComponent, IInfoProviderEC { //amount of "neutron energy" buffered for the next tick to use for the reaction public double fluxFast; @@ -503,4 +505,15 @@ public class TileEntityRBMKRod extends TileEntityRBMKSlottedBase implements IRBM public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIRBMKRod(player.inventory, this); } + + @Override + public void provideExtraInfo(NBTTagCompound data) { + if(slots[0] != null && slots[0].getItem() instanceof ItemRBMKRod) { + data.setDouble(CompatEnergyControl.D_DEPLETION_PERCENT, ((1.0D - ItemRBMKRod.getEnrichment(slots[0])) * 100_000.0D) / 1_000.0D); + data.setDouble(CompatEnergyControl.D_XENON_PERCENT, ItemRBMKRod.getPoison(slots[0])); + data.setDouble(CompatEnergyControl.D_SKIN_C, ItemRBMKRod.getHullHeat(slots[0])); + data.setDouble(CompatEnergyControl.D_CORE_C, ItemRBMKRod.getCoreHeat(slots[0])); + data.setDouble(CompatEnergyControl.D_MELT_C, ((ItemRBMKRod) slots[0].getItem()).meltingPoint); + } + } } diff --git a/src/main/java/com/hbm/util/CompatEnergyControl.java b/src/main/java/com/hbm/util/CompatEnergyControl.java index 7f60115fa..ea3ec0683 100644 --- a/src/main/java/com/hbm/util/CompatEnergyControl.java +++ b/src/main/java/com/hbm/util/CompatEnergyControl.java @@ -6,6 +6,7 @@ import java.util.List; import com.hbm.inventory.fluid.FluidType; import com.hbm.inventory.fluid.Fluids; import com.hbm.inventory.fluid.tank.FluidTank; +import com.hbm.items.ModItems; import com.hbm.tileentity.machine.TileEntityMachineGasCent; import com.hbm.tileentity.machine.TileEntityMachineGasCent.PseudoFluidTank; import com.hbm.tileentity.machine.rbmk.TileEntityRBMKBase; @@ -22,6 +23,11 @@ import net.minecraft.world.World; /** Provides data specified by EC's CrossModBase */ public class CompatEnergyControl { + + /** Returns the steel ingot to craft the sensor kit with */ + public static ItemStack getCraftingMaterial() { + return new ItemStack(ModItems.ingot_steel); //in the event that i do end up moving all ingots to metadata + } /** Returns true for stacks with electric items like batteries or powertools (i.e. implements IBatteryItem) */ public static boolean isElectricItem(ItemStack stack) { diff --git a/src/main/resources/assets/hbm/textures/models/missile_test.png b/src/main/resources/assets/hbm/textures/models/missile_test.png new file mode 100644 index 000000000..3138a80f5 Binary files /dev/null and b/src/main/resources/assets/hbm/textures/models/missile_test.png differ