last bit of EC compat stuff

This commit is contained in:
Boblet 2024-02-21 16:31:34 +01:00
parent 4588db50af
commit b30bb8ae15
20 changed files with 200 additions and 40 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 829 B