diff --git a/src/main/java/net/anvilcraft/pccompat/PCCompat.java b/src/main/java/net/anvilcraft/pccompat/PCCompat.java index f63fa06..dd69ba5 100644 --- a/src/main/java/net/anvilcraft/pccompat/PCCompat.java +++ b/src/main/java/net/anvilcraft/pccompat/PCCompat.java @@ -13,6 +13,7 @@ import net.anvilcraft.pccompat.mods.AppliedEnergisticsProxy; import net.anvilcraft.pccompat.mods.GregTechProxy; import net.anvilcraft.pccompat.mods.HBMProxy; import net.anvilcraft.pccompat.mods.ProjectRedProxy; +import net.anvilcraft.pccompat.mods.RailcraftProxy; import net.anvilcraft.pccompat.mods.RedPowerProxy; import net.anvilcraft.pccompat.mods.UltraTechProxy; import net.anvilcraft.pccompat.mods.UniversalElectricityProxy; @@ -22,7 +23,7 @@ import net.anvilcraft.pccompat.mods.UniversalElectricityProxy; name = "PC Compat", version = "0.1.0", dependencies - = "required-after:PowerConverters3;after:basiccomponents;after:appliedenergistics2;after:hbm;after:RedPowerCore;after:ProjRed|Expansion;after:gregtech;after:UltraTech" + = "required-after:PowerConverters3;after:basiccomponents;after:appliedenergistics2;after:hbm;after:RedPowerCore;after:ProjRed|Expansion;after:gregtech;after:UltraTech;after:Railcraft" ) public class PCCompat { public static HashSet mods = new HashSet<>(); @@ -67,5 +68,7 @@ public class PCCompat { mods.add(new GregTechProxy()); if (Loader.isModLoaded("UltraTech")) mods.add(new UltraTechProxy()); + if (Loader.isModLoaded("Railcraft")) + mods.add(new RailcraftProxy()); } } diff --git a/src/main/java/net/anvilcraft/pccompat/blocks/BlockPowerConverterRailcraft.java b/src/main/java/net/anvilcraft/pccompat/blocks/BlockPowerConverterRailcraft.java new file mode 100644 index 0000000..fc54270 --- /dev/null +++ b/src/main/java/net/anvilcraft/pccompat/blocks/BlockPowerConverterRailcraft.java @@ -0,0 +1,30 @@ +package net.anvilcraft.pccompat.blocks; + +import covers1624.powerconverters.block.BlockPowerConverter; +import covers1624.powerconverters.gui.PCCreativeTab; +import net.anvilcraft.pccompat.Utils; +import net.anvilcraft.pccompat.tiles.TileEntityRailcraftConsumer; +import net.anvilcraft.pccompat.tiles.TileEntityRailcraftProducer; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class BlockPowerConverterRailcraft extends BlockPowerConverter { + + public BlockPowerConverterRailcraft() { + super(2); + this.setCreativeTab(PCCreativeTab.tab); + } + + @Override + public void registerBlockIcons(IIconRegister reg) { + Utils.registerStandardPowerConverterBlockIcons(reg, this._icons, "rc"); + } + + @Override + public TileEntity createNewTileEntity(World world, int meta) { + return meta == 0 ? new TileEntityRailcraftConsumer() + : new TileEntityRailcraftProducer(); + } + +} diff --git a/src/main/java/net/anvilcraft/pccompat/items/ItemBlockPowerConverterRailcraft.java b/src/main/java/net/anvilcraft/pccompat/items/ItemBlockPowerConverterRailcraft.java new file mode 100644 index 0000000..6dc433d --- /dev/null +++ b/src/main/java/net/anvilcraft/pccompat/items/ItemBlockPowerConverterRailcraft.java @@ -0,0 +1,16 @@ +package net.anvilcraft.pccompat.items; + +import net.minecraft.block.Block; + +public class ItemBlockPowerConverterRailcraft extends AbstractItemBlockPowerConverter { + + public ItemBlockPowerConverterRailcraft(Block block) { + super(block); + } + + @Override + public String getModPrefix() { + return "rc"; + } + +} diff --git a/src/main/java/net/anvilcraft/pccompat/mods/RailcraftProxy.java b/src/main/java/net/anvilcraft/pccompat/mods/RailcraftProxy.java new file mode 100644 index 0000000..3a8f568 --- /dev/null +++ b/src/main/java/net/anvilcraft/pccompat/mods/RailcraftProxy.java @@ -0,0 +1,49 @@ +package net.anvilcraft.pccompat.mods; + +import covers1624.powerconverters.api.registry.PowerSystemRegistry; +import covers1624.powerconverters.api.registry.PowerSystemRegistry.PowerSystem; +import cpw.mods.fml.common.registry.GameRegistry; +import net.anvilcraft.pccompat.IModProxy; +import net.anvilcraft.pccompat.blocks.BlockPowerConverterRailcraft; +import net.anvilcraft.pccompat.items.ItemBlockPowerConverterRailcraft; +import net.anvilcraft.pccompat.tiles.TileEntityRailcraftConsumer; +import net.anvilcraft.pccompat.tiles.TileEntityRailcraftProducer; +import net.minecraft.block.Block; + +public class RailcraftProxy implements IModProxy { + + public static PowerSystem powerSystem; + public static Block blockPowerConverter; + + @Override + public void registerPowerSystem() { + PowerSystemRegistry.registerPowerSystem( + powerSystem = new PowerSystem("Railcraft", "Charge", 4000, "C") + ); + } + + @Override + public void registerBlocks() { + GameRegistry.registerBlock( + blockPowerConverter = new BlockPowerConverterRailcraft(), + ItemBlockPowerConverterRailcraft.class, + "power_converter_railcraft" + ); + } + + @Override + public void registerTiles() { + GameRegistry.registerTileEntity( + TileEntityRailcraftConsumer.class, "railcraft_consumer" + ); + GameRegistry.registerTileEntity( + TileEntityRailcraftProducer.class, "railcraft_producer" + ); + } + + @Override + public void registerRecipes() { + + } + +} diff --git a/src/main/java/net/anvilcraft/pccompat/tiles/TileEntityRailcraftConsumer.java b/src/main/java/net/anvilcraft/pccompat/tiles/TileEntityRailcraftConsumer.java new file mode 100644 index 0000000..266446f --- /dev/null +++ b/src/main/java/net/anvilcraft/pccompat/tiles/TileEntityRailcraftConsumer.java @@ -0,0 +1,62 @@ +package net.anvilcraft.pccompat.tiles; + +import covers1624.powerconverters.tile.main.TileEntityEnergyConsumer; +import mods.railcraft.api.electricity.IElectricGrid; +import mods.railcraft.api.electricity.IElectricGrid.ChargeHandler.ConnectType; +import net.anvilcraft.pccompat.mods.RailcraftProxy; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; + +public class TileEntityRailcraftConsumer extends TileEntityEnergyConsumer implements IElectricGrid { + + private ChargeHandler chargeHandler; + private double lastTransfer = 0.0; + + public TileEntityRailcraftConsumer() { + super(RailcraftProxy.powerSystem, 0, IElectricGrid.class); + this.chargeHandler = new ChargeHandler(this, ConnectType.BLOCK); + } + + @Override + public ChargeHandler getChargeHandler() { + return this.chargeHandler; + } + + @Override + public TileEntity getTile() { + return this; + } + + @Override + public void readFromNBT(NBTTagCompound tagCompound) { + super.readFromNBT(tagCompound); + this.chargeHandler.readFromNBT(tagCompound); + } + + @Override + public void updateEntity() { + super.updateEntity(); + if (!this.worldObj.isRemote) { + this.chargeHandler.tick(); + double demand = this.getTotalEnergyDemand() / this.getPowerSystem().getScaleAmmount(); + double consumed = 0; + if (demand > 0) { + consumed = this.chargeHandler.removeCharge(demand); + this.storeEnergy(consumed * this.getPowerSystem().getScaleAmmount(), false); + } + this.lastTransfer = consumed; + } + } + + @Override + public void writeToNBT(NBTTagCompound tagCompound) { + super.writeToNBT(tagCompound); + this.chargeHandler.writeToNBT(tagCompound); + } + + @Override + public double getInputRate() { + return this.lastTransfer; + } + +} diff --git a/src/main/java/net/anvilcraft/pccompat/tiles/TileEntityRailcraftProducer.java b/src/main/java/net/anvilcraft/pccompat/tiles/TileEntityRailcraftProducer.java new file mode 100644 index 0000000..5d47657 --- /dev/null +++ b/src/main/java/net/anvilcraft/pccompat/tiles/TileEntityRailcraftProducer.java @@ -0,0 +1,57 @@ +package net.anvilcraft.pccompat.tiles; + +import covers1624.powerconverters.tile.main.TileEntityEnergyProducer; +import mods.railcraft.api.electricity.IElectricGrid; +import mods.railcraft.api.electricity.IElectricGrid.ChargeHandler.ConnectType; +import net.anvilcraft.pccompat.mods.RailcraftProxy; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; + +public class TileEntityRailcraftProducer extends TileEntityEnergyProducer implements IElectricGrid { + + private ChargeHandler chargeHandler; + + public TileEntityRailcraftProducer() { + super(RailcraftProxy.powerSystem, 0, IElectricGrid.class); + this.chargeHandler = new ChargeHandler(this, ConnectType.BLOCK); + } + + @Override + public double produceEnergy(double energy) { + double charge = energy / this.getPowerSystem().getScaleAmmount(); + double toProduce = Math.min(charge, this.chargeHandler.getCapacity() - this.chargeHandler.getCharge()); + this.chargeHandler.addCharge(toProduce); + return energy - toProduce * this.getPowerSystem().getScaleAmmount(); + } + + @Override + public ChargeHandler getChargeHandler() { + return this.chargeHandler; + } + + @Override + public TileEntity getTile() { + return this; + } + + @Override + public void readFromNBT(NBTTagCompound tagCompound) { + super.readFromNBT(tagCompound); + this.chargeHandler.readFromNBT(tagCompound); + } + + @Override + public void updateEntity() { + super.updateEntity(); + if (!this.worldObj.isRemote) { + this.chargeHandler.tick(); + } + } + + @Override + public void writeToNBT(NBTTagCompound tagCompound) { + super.writeToNBT(tagCompound); + this.chargeHandler.writeToNBT(tagCompound); + } + +} diff --git a/src/main/resources/assets/pccompat/lang/en_US.lang b/src/main/resources/assets/pccompat/lang/en_US.lang index 80b460d..4b043f9 100644 --- a/src/main/resources/assets/pccompat/lang/en_US.lang +++ b/src/main/resources/assets/pccompat/lang/en_US.lang @@ -30,3 +30,6 @@ pccompat:power_converter_gt_7.name=GregTech EV Producer pccompat:power_converter_ut_0.name=Quantum Power Consumer pccompat:power_converter_ut_1.name=Quantum Power Producer + +pccompat:power_converter_rc_0.name=Railcraft Consumer +pccompat:power_converter_rc_1.name=Railcraft Producer