diff --git a/assets/hbm/textures/blocks/machine_converter_he_rf.png b/assets/hbm/textures/blocks/machine_converter_he_rf.png new file mode 100644 index 000000000..c3535d9f6 Binary files /dev/null and b/assets/hbm/textures/blocks/machine_converter_he_rf.png differ diff --git a/assets/hbm/textures/blocks/machine_converter_rf_he.png b/assets/hbm/textures/blocks/machine_converter_rf_he.png new file mode 100644 index 000000000..21e102708 Binary files /dev/null and b/assets/hbm/textures/blocks/machine_converter_rf_he.png differ diff --git a/assets/hbm/textures/gui/gui_he_rf_converter.png b/assets/hbm/textures/gui/gui_he_rf_converter.png new file mode 100644 index 000000000..42c670d99 Binary files /dev/null and b/assets/hbm/textures/gui/gui_he_rf_converter.png differ diff --git a/assets/hbm/textures/gui/gui_rf_he_converter.png b/assets/hbm/textures/gui/gui_rf_he_converter.png new file mode 100644 index 000000000..db8f87795 Binary files /dev/null and b/assets/hbm/textures/gui/gui_rf_he_converter.png differ diff --git a/assets/hbm/textures/models/CapeDafnik.png b/assets/hbm/textures/models/CapeDafnik.png new file mode 100644 index 000000000..50ba68d17 Binary files /dev/null and b/assets/hbm/textures/models/CapeDafnik.png differ diff --git a/cofh/api/CoFHAPIProps.java b/cofh/api/CoFHAPIProps.java new file mode 100644 index 000000000..c2fbcd9cb --- /dev/null +++ b/cofh/api/CoFHAPIProps.java @@ -0,0 +1,11 @@ +package cofh.api; + +public class CoFHAPIProps { + + private CoFHAPIProps() { + + } + + public static final String VERSION = "1.7.10R1.0.2"; + +} \ No newline at end of file diff --git a/cofh/api/energy/EnergyStorage.java b/cofh/api/energy/EnergyStorage.java new file mode 100644 index 000000000..60bebdb17 --- /dev/null +++ b/cofh/api/energy/EnergyStorage.java @@ -0,0 +1,158 @@ +package cofh.api.energy; + +import net.minecraft.nbt.NBTTagCompound; + +/** + * Reference implementation of {@link IEnergyStorage}. Use/extend this or implement your own. + * + * @author King Lemming + * + */ +public class EnergyStorage implements IEnergyStorage { + + protected int energy; + protected int capacity; + protected int maxReceive; + protected int maxExtract; + + public EnergyStorage(int capacity) { + + this(capacity, capacity, capacity); + } + + public EnergyStorage(int capacity, int maxTransfer) { + + this(capacity, maxTransfer, maxTransfer); + } + + public EnergyStorage(int capacity, int maxReceive, int maxExtract) { + + this.capacity = capacity; + this.maxReceive = maxReceive; + this.maxExtract = maxExtract; + } + + public EnergyStorage readFromNBT(NBTTagCompound nbt) { + + this.energy = nbt.getInteger("Energy"); + + if (energy > capacity) { + energy = capacity; + } + return this; + } + + public NBTTagCompound writeToNBT(NBTTagCompound nbt) { + + if (energy < 0) { + energy = 0; + } + nbt.setInteger("Energy", energy); + return nbt; + } + + public void setCapacity(int capacity) { + + this.capacity = capacity; + + if (energy > capacity) { + energy = capacity; + } + } + + public void setMaxTransfer(int maxTransfer) { + + setMaxReceive(maxTransfer); + setMaxExtract(maxTransfer); + } + + public void setMaxReceive(int maxReceive) { + + this.maxReceive = maxReceive; + } + + public void setMaxExtract(int maxExtract) { + + this.maxExtract = maxExtract; + } + + public int getMaxReceive() { + + return maxReceive; + } + + public int getMaxExtract() { + + return maxExtract; + } + + /** + * This function is included to allow for server -> client sync. Do not call this externally to the containing Tile Entity, as not all IEnergyHandlers + * are guaranteed to have it. + * + * @param energy + */ + public void setEnergyStored(int energy) { + + this.energy = energy; + + if (this.energy > capacity) { + this.energy = capacity; + } else if (this.energy < 0) { + this.energy = 0; + } + } + + /** + * This function is included to allow the containing tile to directly and efficiently modify the energy contained in the EnergyStorage. Do not rely on this + * externally, as not all IEnergyHandlers are guaranteed to have it. + * + * @param energy + */ + public void modifyEnergyStored(int energy) { + + this.energy += energy; + + if (this.energy > capacity) { + this.energy = capacity; + } else if (this.energy < 0) { + this.energy = 0; + } + } + + /* IEnergyStorage */ + @Override + public int receiveEnergy(int maxReceive, boolean simulate) { + + int energyReceived = Math.min(capacity - energy, Math.min(this.maxReceive, maxReceive)); + + if (!simulate) { + energy += energyReceived; + } + return energyReceived; + } + + @Override + public int extractEnergy(int maxExtract, boolean simulate) { + + int energyExtracted = Math.min(energy, Math.min(this.maxExtract, maxExtract)); + + if (!simulate) { + energy -= energyExtracted; + } + return energyExtracted; + } + + @Override + public int getEnergyStored() { + + return energy; + } + + @Override + public int getMaxEnergyStored() { + + return capacity; + } + +} \ No newline at end of file diff --git a/cofh/api/energy/IEnergyConnection.java b/cofh/api/energy/IEnergyConnection.java new file mode 100644 index 000000000..5d68a132c --- /dev/null +++ b/cofh/api/energy/IEnergyConnection.java @@ -0,0 +1,21 @@ +package cofh.api.energy; + +import net.minecraftforge.common.util.ForgeDirection; + +/** + * Implement this interface on TileEntities which should connect to energy transportation blocks. This is intended for blocks which generate energy but do not + * accept it; otherwise just use IEnergyHandler. + *
+ * Note that {@link IEnergyHandler} is an extension of this. + * + * @author King Lemming + * + */ +public interface IEnergyConnection { + + /** + * Returns TRUE if the TileEntity can connect on a given side. + */ + boolean canConnectEnergy(ForgeDirection from); + +} \ No newline at end of file diff --git a/cofh/api/energy/IEnergyContainerItem.java b/cofh/api/energy/IEnergyContainerItem.java new file mode 100644 index 000000000..24c743809 --- /dev/null +++ b/cofh/api/energy/IEnergyContainerItem.java @@ -0,0 +1,52 @@ +package cofh.api.energy; + +import net.minecraft.item.ItemStack; + +/** + * Implement this interface on Item classes that support external manipulation of their internal energy storages. + *
+ * A reference implementation is provided {@link ItemEnergyContainer}. + * + * @author King Lemming + * + */ +public interface IEnergyContainerItem { + + /** + * Adds energy to a container item. Returns the quantity of energy that was accepted. This should always return 0 if the item cannot be externally charged. + * + * @param container + * ItemStack to be charged. + * @param maxReceive + * Maximum amount of energy to be sent into the item. + * @param simulate + * If TRUE, the charge will only be simulated. + * @return Amount of energy that was (or would have been, if simulated) received by the item. + */ + int receiveEnergy(ItemStack container, int maxReceive, boolean simulate); + + /** + * Removes energy from a container item. Returns the quantity of energy that was removed. This should always return 0 if the item cannot be externally + * discharged. + * + * @param container + * ItemStack to be discharged. + * @param maxExtract + * Maximum amount of energy to be extracted from the item. + * @param simulate + * If TRUE, the discharge will only be simulated. + * @return Amount of energy that was (or would have been, if simulated) extracted from the item. + */ + int extractEnergy(ItemStack container, int maxExtract, boolean simulate); + + /** + * Get the amount of energy currently stored in the container item. + */ + int getEnergyStored(ItemStack container); + + /** + * Get the max amount of energy that can be stored in the container item. + */ + int getMaxEnergyStored(ItemStack container); + +} \ No newline at end of file diff --git a/cofh/api/energy/IEnergyHandler.java b/cofh/api/energy/IEnergyHandler.java new file mode 100644 index 000000000..9e4fe6f78 --- /dev/null +++ b/cofh/api/energy/IEnergyHandler.java @@ -0,0 +1,58 @@ +package cofh.api.energy; + +import net.minecraftforge.common.util.ForgeDirection; + +/** + * Implement this interface on Tile Entities which should handle energy, generally storing it in one or more internal {@link IEnergyStorage} objects. + *
+ * A reference implementation is provided {@link TileEnergyHandler}. + * + * @author King Lemming + * + */ +public interface IEnergyHandler extends IEnergyProvider, IEnergyReceiver { + + // merely a convenience interface (remove these methods in 1.8; provided here for back-compat via compiler doing things) + + /** + * Add energy to an IEnergyReceiver, internal distribution is left entirely to the IEnergyReceiver. + * + * @param from + * Orientation the energy is received from. + * @param maxReceive + * Maximum amount of energy to receive. + * @param simulate + * If TRUE, the charge will only be simulated. + * @return Amount of energy that was (or would have been, if simulated) received. + */ + @Override + int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate); + + /** + * Remove energy from an IEnergyProvider, internal distribution is left entirely to the IEnergyProvider. + * + * @param from + * Orientation the energy is extracted from. + * @param maxExtract + * Maximum amount of energy to extract. + * @param simulate + * If TRUE, the extraction will only be simulated. + * @return Amount of energy that was (or would have been, if simulated) extracted. + */ + @Override + int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate); + + + /** + * Returns the amount of energy currently stored. + */ + @Override + int getEnergyStored(ForgeDirection from); + + /** + * Returns the maximum amount of energy that can be stored. + */ + @Override + int getMaxEnergyStored(ForgeDirection from); + +} \ No newline at end of file diff --git a/cofh/api/energy/IEnergyProvider.java b/cofh/api/energy/IEnergyProvider.java new file mode 100644 index 000000000..af1210b95 --- /dev/null +++ b/cofh/api/energy/IEnergyProvider.java @@ -0,0 +1,38 @@ +package cofh.api.energy; + +import net.minecraftforge.common.util.ForgeDirection; + +/** + * Implement this interface on Tile Entities which should provide energy, generally storing it in one or more internal {@link IEnergyStorage} objects. + *
+ * A reference implementation is provided {@link TileEnergyHandler}. + * + * @author King Lemming + * + */ +public interface IEnergyProvider extends IEnergyConnection { + + /** + * Remove energy from an IEnergyProvider, internal distribution is left entirely to the IEnergyProvider. + * + * @param from + * Orientation the energy is extracted from. + * @param maxExtract + * Maximum amount of energy to extract. + * @param simulate + * If TRUE, the extraction will only be simulated. + * @return Amount of energy that was (or would have been, if simulated) extracted. + */ + int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate); + + /** + * Returns the amount of energy currently stored. + */ + int getEnergyStored(ForgeDirection from); + + /** + * Returns the maximum amount of energy that can be stored. + */ + int getMaxEnergyStored(ForgeDirection from); + +} \ No newline at end of file diff --git a/cofh/api/energy/IEnergyReceiver.java b/cofh/api/energy/IEnergyReceiver.java new file mode 100644 index 000000000..77c1c0a63 --- /dev/null +++ b/cofh/api/energy/IEnergyReceiver.java @@ -0,0 +1,38 @@ +package cofh.api.energy; + +import net.minecraftforge.common.util.ForgeDirection; + +/** + * Implement this interface on Tile Entities which should receive energy, generally storing it in one or more internal {@link IEnergyStorage} objects. + *
+ * A reference implementation is provided {@link TileEnergyHandler}.
+ *
+ * @author King Lemming
+ *
+ */
+public interface IEnergyReceiver extends IEnergyConnection {
+
+ /**
+ * Add energy to an IEnergyReceiver, internal distribution is left entirely to the IEnergyReceiver.
+ *
+ * @param from
+ * Orientation the energy is received from.
+ * @param maxReceive
+ * Maximum amount of energy to receive.
+ * @param simulate
+ * If TRUE, the charge will only be simulated.
+ * @return Amount of energy that was (or would have been, if simulated) received.
+ */
+ int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate);
+
+ /**
+ * Returns the amount of energy currently stored.
+ */
+ int getEnergyStored(ForgeDirection from);
+
+ /**
+ * Returns the maximum amount of energy that can be stored.
+ */
+ int getMaxEnergyStored(ForgeDirection from);
+
+}
\ No newline at end of file
diff --git a/cofh/api/energy/IEnergyStorage.java b/cofh/api/energy/IEnergyStorage.java
new file mode 100644
index 000000000..9be47af0f
--- /dev/null
+++ b/cofh/api/energy/IEnergyStorage.java
@@ -0,0 +1,46 @@
+package cofh.api.energy;
+
+/**
+ * An energy storage is the unit of interaction with Energy inventories.
+ * This is not to be implemented on TileEntities. This is for internal use only.
+ *
+ * A reference implementation can be found at {@link EnergyStorage}.
+ *
+ * @author King Lemming
+ *
+ */
+public interface IEnergyStorage {
+
+ /**
+ * Adds energy to the storage. Returns quantity of energy that was accepted.
+ *
+ * @param maxReceive
+ * Maximum amount of energy to be inserted.
+ * @param simulate
+ * If TRUE, the insertion will only be simulated.
+ * @return Amount of energy that was (or would have been, if simulated) accepted by the storage.
+ */
+ int receiveEnergy(int maxReceive, boolean simulate);
+
+ /**
+ * Removes energy from the storage. Returns quantity of energy that was removed.
+ *
+ * @param maxExtract
+ * Maximum amount of energy to be extracted.
+ * @param simulate
+ * If TRUE, the extraction will only be simulated.
+ * @return Amount of energy that was (or would have been, if simulated) extracted from the storage.
+ */
+ int extractEnergy(int maxExtract, boolean simulate);
+
+ /**
+ * Returns the amount of energy currently stored.
+ */
+ int getEnergyStored();
+
+ /**
+ * Returns the maximum amount of energy that can be stored.
+ */
+ int getMaxEnergyStored();
+
+}
\ No newline at end of file
diff --git a/cofh/api/energy/ItemEnergyContainer.java b/cofh/api/energy/ItemEnergyContainer.java
new file mode 100644
index 000000000..3fb5835c5
--- /dev/null
+++ b/cofh/api/energy/ItemEnergyContainer.java
@@ -0,0 +1,110 @@
+package cofh.api.energy;
+
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.nbt.NBTTagCompound;
+
+/**
+ * Reference implementation of {@link IEnergyContainerItem}. Use/extend this or implement your own.
+ *
+ * @author King Lemming
+ *
+ */
+public class ItemEnergyContainer extends Item implements IEnergyContainerItem {
+
+ protected int capacity;
+ protected int maxReceive;
+ protected int maxExtract;
+
+ public ItemEnergyContainer() {
+
+ }
+
+ public ItemEnergyContainer(int capacity) {
+
+ this(capacity, capacity, capacity);
+ }
+
+ public ItemEnergyContainer(int capacity, int maxTransfer) {
+
+ this(capacity, maxTransfer, maxTransfer);
+ }
+
+ public ItemEnergyContainer(int capacity, int maxReceive, int maxExtract) {
+
+ this.capacity = capacity;
+ this.maxReceive = maxReceive;
+ this.maxExtract = maxExtract;
+ }
+
+ public ItemEnergyContainer setCapacity(int capacity) {
+
+ this.capacity = capacity;
+ return this;
+ }
+
+ public void setMaxTransfer(int maxTransfer) {
+
+ setMaxReceive(maxTransfer);
+ setMaxExtract(maxTransfer);
+ }
+
+ public void setMaxReceive(int maxReceive) {
+
+ this.maxReceive = maxReceive;
+ }
+
+ public void setMaxExtract(int maxExtract) {
+
+ this.maxExtract = maxExtract;
+ }
+
+ /* IEnergyContainerItem */
+ @Override
+ public int receiveEnergy(ItemStack container, int maxReceive, boolean simulate) {
+
+ if (container.stackTagCompound == null) {
+ container.stackTagCompound = new NBTTagCompound();
+ }
+ int energy = container.stackTagCompound.getInteger("Energy");
+ int energyReceived = Math.min(capacity - energy, Math.min(this.maxReceive, maxReceive));
+
+ if (!simulate) {
+ energy += energyReceived;
+ container.stackTagCompound.setInteger("Energy", energy);
+ }
+ return energyReceived;
+ }
+
+ @Override
+ public int extractEnergy(ItemStack container, int maxExtract, boolean simulate) {
+
+ if (container.stackTagCompound == null || !container.stackTagCompound.hasKey("Energy")) {
+ return 0;
+ }
+ int energy = container.stackTagCompound.getInteger("Energy");
+ int energyExtracted = Math.min(energy, Math.min(this.maxExtract, maxExtract));
+
+ if (!simulate) {
+ energy -= energyExtracted;
+ container.stackTagCompound.setInteger("Energy", energy);
+ }
+ return energyExtracted;
+ }
+
+ @Override
+ public int getEnergyStored(ItemStack container) {
+
+ if (container.stackTagCompound == null || !container.stackTagCompound.hasKey("Energy")) {
+ return 0;
+ }
+ return container.stackTagCompound.getInteger("Energy");
+ }
+
+ @Override
+ public int getMaxEnergyStored(ItemStack container) {
+
+ return capacity;
+ }
+
+}
\ No newline at end of file
diff --git a/cofh/api/energy/TileEnergyHandler.java b/cofh/api/energy/TileEnergyHandler.java
new file mode 100644
index 000000000..ec3db4de0
--- /dev/null
+++ b/cofh/api/energy/TileEnergyHandler.java
@@ -0,0 +1,65 @@
+package cofh.api.energy;
+
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.common.util.ForgeDirection;
+
+/**
+ * Reference implementation of {@link IEnergyHandler}. Use/extend this or implement your own.
+ *
+ * @author King Lemming
+ *
+ */
+public class TileEnergyHandler extends TileEntity implements IEnergyHandler {
+
+ protected EnergyStorage storage = new EnergyStorage(32000);
+
+ @Override
+ public void readFromNBT(NBTTagCompound nbt) {
+
+ super.readFromNBT(nbt);
+ storage.readFromNBT(nbt);
+ }
+
+ @Override
+ public void writeToNBT(NBTTagCompound nbt) {
+
+ super.writeToNBT(nbt);
+ storage.writeToNBT(nbt);
+ }
+
+ /* IEnergyConnection */
+ @Override
+ public boolean canConnectEnergy(ForgeDirection from) {
+
+ return true;
+ }
+
+ /* IEnergyReceiver */
+ @Override
+ public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) {
+
+ return storage.receiveEnergy(maxReceive, simulate);
+ }
+
+ /* IEnergyProvider */
+ @Override
+ public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) {
+
+ return storage.extractEnergy(maxExtract, simulate);
+ }
+
+ /* IEnergyReceiver and IEnergyProvider */
+ @Override
+ public int getEnergyStored(ForgeDirection from) {
+
+ return storage.getEnergyStored();
+ }
+
+ @Override
+ public int getMaxEnergyStored(ForgeDirection from) {
+
+ return storage.getMaxEnergyStored();
+ }
+
+}
\ No newline at end of file
diff --git a/cofh/api/energy/package-info.java b/cofh/api/energy/package-info.java
new file mode 100644
index 000000000..812015c1c
--- /dev/null
+++ b/cofh/api/energy/package-info.java
@@ -0,0 +1,9 @@
+/**
+ * (C) 2014 Team CoFH / CoFH / Cult of the Full Hub
+ * http://www.teamcofh.com
+ */
+@API(apiVersion = CoFHAPIProps.VERSION, owner = "CoFHAPI", provides = "CoFHAPI|energy")
+package cofh.api.energy;
+
+import cofh.api.CoFHAPIProps;
+import cpw.mods.fml.common.API;
\ No newline at end of file
diff --git a/cofh/api/package-info.java b/cofh/api/package-info.java
new file mode 100644
index 000000000..8f78d17b1
--- /dev/null
+++ b/cofh/api/package-info.java
@@ -0,0 +1,8 @@
+/**
+ * (C) 2014 Team CoFH / CoFH / Cult of the Full Hub
+ * http://www.teamcofh.com
+ */
+@API(apiVersion = CoFHAPIProps.VERSION, owner = "CoFHLib", provides = "CoFHAPI")
+package cofh.api;
+
+import cpw.mods.fml.common.API;
\ No newline at end of file
diff --git a/com/hbm/blocks/BlockConverterHeRf.java b/com/hbm/blocks/BlockConverterHeRf.java
new file mode 100644
index 000000000..6dce34911
--- /dev/null
+++ b/com/hbm/blocks/BlockConverterHeRf.java
@@ -0,0 +1,41 @@
+package com.hbm.blocks;
+
+import com.hbm.main.MainRegistry;
+
+import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
+import net.minecraft.block.BlockContainer;
+import net.minecraft.block.material.Material;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public class BlockConverterHeRf extends BlockContainer {
+
+ protected BlockConverterHeRf(Material p_i45386_1_) {
+ super(p_i45386_1_);
+ }
+
+ @Override
+ public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
+ return new TileEntityConverterHeRf();
+ }
+
+ @Override
+ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
+ if(world.isRemote)
+ {
+ return true;
+ } else if(!player.isSneaking())
+ {
+ TileEntityConverterHeRf entity = (TileEntityConverterHeRf) world.getTileEntity(x, y, z);
+ if(entity != null)
+ {
+ FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_converter_he_rf, world, x, y, z);
+ }
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+}
diff --git a/com/hbm/blocks/BlockConverterRfHe.java b/com/hbm/blocks/BlockConverterRfHe.java
new file mode 100644
index 000000000..0304e4d9a
--- /dev/null
+++ b/com/hbm/blocks/BlockConverterRfHe.java
@@ -0,0 +1,41 @@
+package com.hbm.blocks;
+
+import com.hbm.main.MainRegistry;
+
+import cpw.mods.fml.common.network.internal.FMLNetworkHandler;
+import net.minecraft.block.BlockContainer;
+import net.minecraft.block.material.Material;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+public class BlockConverterRfHe extends BlockContainer {
+
+ protected BlockConverterRfHe(Material p_i45386_1_) {
+ super(p_i45386_1_);
+ }
+
+ @Override
+ public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
+ return new TileEntityConverterRfHe();
+ }
+
+ @Override
+ public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
+ if(world.isRemote)
+ {
+ return true;
+ } else if(!player.isSneaking())
+ {
+ TileEntityConverterRfHe entity = (TileEntityConverterRfHe) world.getTileEntity(x, y, z);
+ if(entity != null)
+ {
+ FMLNetworkHandler.openGui(player, MainRegistry.instance, ModBlocks.guiID_converter_rf_he, world, x, y, z);
+ }
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+}
diff --git a/com/hbm/blocks/ModBlocks.java b/com/hbm/blocks/ModBlocks.java
index 0140faa45..d99571e80 100644
--- a/com/hbm/blocks/ModBlocks.java
+++ b/com/hbm/blocks/ModBlocks.java
@@ -206,6 +206,12 @@ public class ModBlocks {
public static Block plasma;
public static final int guiID_fusion_multiblock = 27;
+ public static Block machine_converter_he_rf;
+ public static final int guiID_converter_he_rf = 28;
+
+ public static Block machine_converter_rf_he;
+ public static final int guiID_converter_rf_he = 29;
+
public static Block launch_pad;
public static Block launch_pad_generic;
public static Block launch_pad_incendiary;
@@ -391,6 +397,9 @@ public class ModBlocks {
fusion_hatch = new FusionHatch(Material.iron).setBlockName("fusion_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":fusion_hatch");
fusion_core = new FusionCore(Material.iron).setBlockName("fusion_core").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":fusion_core_side");
plasma = new BlockPlasma(Material.iron).setBlockName("plasma").setHardness(5.0F).setResistance(6000.0F).setLightLevel(1.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":plasma");
+
+ machine_converter_he_rf = new BlockConverterHeRf(Material.iron).setBlockName("machine_converter_he_rf").setHardness(5.0F).setResistance(6000.0F).setLightLevel(1.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_converter_he_rf");
+ machine_converter_rf_he = new BlockConverterRfHe(Material.iron).setBlockName("machine_converter_rf_he").setHardness(5.0F).setResistance(6000.0F).setLightLevel(1.0F).setCreativeTab(MainRegistry.tabBlock).setBlockTextureName(RefStrings.MODID + ":machine_converter_rf_he");
launch_pad = new LaunchPad(Material.iron).setBlockName("launch_pad").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.tabNuke).setBlockTextureName(RefStrings.MODID + ":launch_pad");
launch_pad_generic = new LaunchPad(Material.iron).setBlockName("launch_pad_generic").setHardness(5.0F).setResistance(10.0F).setBlockTextureName(RefStrings.MODID + ":launch_pad");
@@ -544,6 +553,8 @@ public class ModBlocks {
GameRegistry.registerBlock(red_cable, red_cable.getUnlocalizedName());
GameRegistry.registerBlock(red_wire_coated, red_wire_coated.getUnlocalizedName());
GameRegistry.registerBlock(machine_battery, machine_battery.getUnlocalizedName());
+ GameRegistry.registerBlock(machine_converter_he_rf, machine_converter_he_rf.getUnlocalizedName());
+ GameRegistry.registerBlock(machine_converter_rf_he, machine_converter_rf_he.getUnlocalizedName());
GameRegistry.registerBlock(machine_electric_furnace_off, machine_electric_furnace_off.getUnlocalizedName());
GameRegistry.registerBlock(machine_electric_furnace_on, machine_electric_furnace_on.getUnlocalizedName());
GameRegistry.registerBlock(machine_deuterium, machine_deuterium.getUnlocalizedName());
diff --git a/com/hbm/blocks/TileEntityConverterHeRf.java b/com/hbm/blocks/TileEntityConverterHeRf.java
new file mode 100644
index 000000000..f1ac28d78
--- /dev/null
+++ b/com/hbm/blocks/TileEntityConverterHeRf.java
@@ -0,0 +1,108 @@
+package com.hbm.blocks;
+
+import com.hbm.calc.Location;
+import com.hbm.interfaces.IConsumer;
+
+import cofh.api.energy.EnergyStorage;
+import cofh.api.energy.IEnergyHandler;
+import cofh.api.energy.IEnergyProvider;
+import cofh.api.energy.IEnergyReceiver;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public class TileEntityConverterHeRf extends TileEntity implements IConsumer, IEnergyProvider {
+
+ public int power;
+ public final int maxPower = 10000;
+ public EnergyStorage storage = new EnergyStorage(40000, 25000, 25000);
+
+ //Thanks to the great people of Fusion Warfare for helping me with this part.
+
+ @Override
+ public void updateEntity() {
+ if (!worldObj.isRemote) {
+
+ if(power >= 1000 && storage.getEnergyStored() + 4000 <= storage.getMaxEnergyStored())
+ {
+ power -= 1000;
+ storage.setEnergyStored(storage.getEnergyStored() + 4000);
+ }
+ if(power >= 100 && storage.getEnergyStored() + 400 <= storage.getMaxEnergyStored())
+ {
+ power -= 100;
+ storage.setEnergyStored(storage.getEnergyStored() + 400);
+ }
+ if(power >= 10 && storage.getEnergyStored() + 40 <= storage.getMaxEnergyStored())
+ {
+ power -= 10;
+ storage.setEnergyStored(storage.getEnergyStored() + 4);
+ }
+ if(power >= 1 && storage.getEnergyStored() + 4 <= storage.getMaxEnergyStored())
+ {
+ power -= 1;
+ storage.setEnergyStored(storage.getEnergyStored() + 40);
+ }
+
+ for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) {
+
+ Location loc = new Location(worldObj, xCoord, yCoord, zCoord).add(dir);
+ TileEntity entity = loc.getTileEntity();
+
+ if (entity != null && entity instanceof IEnergyReceiver) {
+
+ IEnergyReceiver receiver = (IEnergyReceiver) entity;
+
+ int maxExtract = storage.getMaxExtract();
+ int maxAvailable = storage.extractEnergy(maxExtract, true);
+ int energyTransferred = receiver.receiveEnergy(dir.getOpposite(), maxAvailable, false);
+
+ storage.extractEnergy(energyTransferred, false);
+ }
+ }
+ }
+ }
+
+ @Override
+ public boolean canConnectEnergy(ForgeDirection from) {
+ return true;
+ }
+
+ @Override
+ public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) {
+ return storage.extractEnergy(maxExtract, simulate);
+ }
+
+ @Override
+ public int getEnergyStored(ForgeDirection from) {
+ return storage.getEnergyStored();
+ }
+
+ @Override
+ public int getMaxEnergyStored(ForgeDirection from) {
+ return storage.getMaxEnergyStored();
+ }
+
+ @Override
+ public void setPower(int i) {
+ power = i;
+ }
+
+ @Override
+ public int getPower() {
+ return power;
+ }
+
+ @Override
+ public int getMaxPower() {
+ return maxPower;
+ }
+
+ public int getPowerScaled(int i) {
+ return (power * i) / maxPower;
+ }
+
+ public int getFluxScaled(int i) {
+ return (storage.getEnergyStored() * i) / storage.getMaxEnergyStored();
+ }
+
+}
diff --git a/com/hbm/blocks/TileEntityConverterRfHe.java b/com/hbm/blocks/TileEntityConverterRfHe.java
new file mode 100644
index 000000000..9809f560e
--- /dev/null
+++ b/com/hbm/blocks/TileEntityConverterRfHe.java
@@ -0,0 +1,214 @@
+package com.hbm.blocks;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import com.hbm.calc.UnionOfTileEntitiesAndBooleans;
+import com.hbm.interfaces.IConductor;
+import com.hbm.interfaces.IConsumer;
+import com.hbm.interfaces.ISource;
+import com.hbm.lib.Library;
+
+import cofh.api.energy.EnergyStorage;
+import cofh.api.energy.IEnergyProvider;
+import cofh.api.energy.IEnergyReceiver;
+import net.minecraft.block.Block;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.common.util.ForgeDirection;
+
+public class TileEntityConverterRfHe extends TileEntity implements ISource, IEnergyReceiver {
+
+ public int power;
+ public final int maxPower = 10000;
+ public List