From ce09a8225f297537a8a134b736b61330f75f6de0 Mon Sep 17 00:00:00 2001 From: Aidan Brady Date: Sun, 7 Jul 2013 13:07:40 -0400 Subject: [PATCH] Formatted EnergyMeter PR, merged Energy Cube comparator support --- common/mekanism/common/BlockEnergyCube.java | 15 ++++++++++++ common/mekanism/common/EnergyNetwork.java | 10 ++++++-- .../common/EnergyNetworkRegistry.java | 22 ++++++++--------- .../mekanism/common/TileEntityEnergyCube.java | 24 +++++++++++++++++++ .../generators/client/RenderWindTurbine.java | 1 - .../common/TileEntityBioGenerator.java | 6 +++++ 6 files changed, 63 insertions(+), 15 deletions(-) diff --git a/common/mekanism/common/BlockEnergyCube.java b/common/mekanism/common/BlockEnergyCube.java index bb3da10c6..e310ef0b1 100644 --- a/common/mekanism/common/BlockEnergyCube.java +++ b/common/mekanism/common/BlockEnergyCube.java @@ -45,6 +45,8 @@ public class BlockEnergyCube extends BlockContainer setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); } + + @Override @SideOnly(Side.CLIENT) public void registerIcons(IconRegister register) @@ -313,4 +315,17 @@ public class BlockEnergyCube extends BlockContainer return itemStack; } + + @Override + public boolean hasComparatorInputOverride() + { + return true; + } + + @Override + public int getComparatorInputOverride(World world, int x, int y, int z, int par5) + { + TileEntityEnergyCube tileEntity = (TileEntityEnergyCube)world.getBlockTileEntity(x, y, z); + return tileEntity.getRedstoneLevel(); + } } diff --git a/common/mekanism/common/EnergyNetwork.java b/common/mekanism/common/EnergyNetwork.java index 945977711..b312c6f56 100644 --- a/common/mekanism/common/EnergyNetwork.java +++ b/common/mekanism/common/EnergyNetwork.java @@ -5,7 +5,6 @@ import ic2.api.energy.tile.IEnergySink; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; -import java.util.EnumSet; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; @@ -196,6 +195,7 @@ public class EnergyNetwork public void merge(EnergyNetwork network) { EnergyNetworkRegistry registry = EnergyNetworkRegistry.getInstance(); + if(network != null && network != this) { EnergyNetwork newNetwork = new EnergyNetwork(); @@ -234,18 +234,22 @@ public class EnergyNetwork { NetworkFinder finder = new NetworkFinder(((TileEntity)splitPoint).worldObj, Object3D.get(connectedBlockA), Object3D.get((TileEntity)splitPoint)); List partNetwork = finder.findNetwork(); + for(int countTwo = countOne + 1; countTwo < connectedBlocks.length; countTwo++) { TileEntity connectedBlockB = connectedBlocks[countTwo]; + if(connectedBlockB instanceof IUniversalCable && !dealtWith[countTwo]) { - if (partNetwork.contains(Object3D.get(connectedBlockB))) + if(partNetwork.contains(Object3D.get(connectedBlockB))) { dealtWith[countTwo] = true; } } } + EnergyNetwork newNetwork = new EnergyNetwork(); + for(Object3D node : finder.iterated) { TileEntity nodeTile = node.getTileEntity(((TileEntity)splitPoint).worldObj); @@ -258,9 +262,11 @@ public class EnergyNetwork } } } + newNetwork.refresh(); } } + EnergyNetworkRegistry.getInstance().removeNetwork(this); } } diff --git a/common/mekanism/common/EnergyNetworkRegistry.java b/common/mekanism/common/EnergyNetworkRegistry.java index 3c674428b..d6fcac04c 100644 --- a/common/mekanism/common/EnergyNetworkRegistry.java +++ b/common/mekanism/common/EnergyNetworkRegistry.java @@ -1,34 +1,30 @@ package mekanism.common; -import java.util.ArrayList; import java.util.EnumSet; import java.util.HashSet; -import java.util.List; import java.util.Set; -import cpw.mods.fml.common.FMLLog; import cpw.mods.fml.common.ITickHandler; import cpw.mods.fml.common.TickType; import cpw.mods.fml.common.registry.TickRegistry; import cpw.mods.fml.relauncher.Side; - public class EnergyNetworkRegistry implements ITickHandler { - + private static EnergyNetworkRegistry INSTANCE = new EnergyNetworkRegistry(); + + private Set networks = new HashSet(); + public EnergyNetworkRegistry() { TickRegistry.registerTickHandler(this, Side.SERVER); } - static private EnergyNetworkRegistry INSTANCE = new EnergyNetworkRegistry(); - static public EnergyNetworkRegistry getInstance() + public static EnergyNetworkRegistry getInstance() { return INSTANCE; } - private Set networks = new HashSet(); - public void registerNetwork(EnergyNetwork network) { networks.add(network); @@ -36,7 +32,7 @@ public class EnergyNetworkRegistry implements ITickHandler public void removeNetwork(EnergyNetwork network) { - if (networks.contains(network)) + if(networks.contains(network)) { networks.remove(network); } @@ -51,7 +47,7 @@ public class EnergyNetworkRegistry implements ITickHandler @Override public void tickEnd(EnumSet type, Object... tickData) { - for (EnergyNetwork net : networks) + for(EnergyNetwork net : networks) { net.clearJoulesTransmitted(); } @@ -69,7 +65,9 @@ public class EnergyNetworkRegistry implements ITickHandler return "Mekanism Energy Networks"; } - public String toString() { + @Override + public String toString() + { return networks.toString(); } } diff --git a/common/mekanism/common/TileEntityEnergyCube.java b/common/mekanism/common/TileEntityEnergyCube.java index f745038ad..fbbe98aa5 100644 --- a/common/mekanism/common/TileEntityEnergyCube.java +++ b/common/mekanism/common/TileEntityEnergyCube.java @@ -21,6 +21,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; import net.minecraftforge.common.ForgeDirection; import net.minecraftforge.common.MinecraftForge; import universalelectricity.core.block.IConductor; @@ -43,6 +44,9 @@ public class TileEntityEnergyCube extends TileEntityElectricBlock implements IEn /** This Energy Cube's tier. */ public EnergyCubeTier tier = EnergyCubeTier.BASIC; + /** The redstone level this Energy Cube is outputting at. */ + public int currentRedstoneLevel; + /** * A block used to store and transfer electricity. * @param energy - maximum energy this block can hold. @@ -432,4 +436,24 @@ public class TileEntityEnergyCube extends TileEntityElectricBlock implements IEn { return side == ForgeDirection.getOrientation(facing); } + + @Override + public void setEnergy(double energy) + { + super.setEnergy(energy); + + int newRedstoneLevel = getRedstoneLevel(); + + if(newRedstoneLevel != currentRedstoneLevel) + { + onInventoryChanged(); + currentRedstoneLevel = newRedstoneLevel; + } + } + + public int getRedstoneLevel() + { + double fractionFull = getEnergy()/getMaxEnergy(); + return MathHelper.floor_float((float) (fractionFull * 14.0F)) + (fractionFull > 0 ? 1 : 0); + } } diff --git a/common/mekanism/generators/client/RenderWindTurbine.java b/common/mekanism/generators/client/RenderWindTurbine.java index bfbb9039e..12bc98025 100644 --- a/common/mekanism/generators/client/RenderWindTurbine.java +++ b/common/mekanism/generators/client/RenderWindTurbine.java @@ -34,7 +34,6 @@ public class RenderWindTurbine extends TileEntitySpecialRenderer GL11.glRotatef(180, 0F, 0F, 1F); if(!Mekanism.proxy.isPaused() && - tileEntity.checkBounds() && tileEntity.worldObj.canBlockSeeTheSky(tileEntity.xCoord, tileEntity.yCoord+4, tileEntity.zCoord)) { tileEntity.angle = (tileEntity.angle+((int)tileEntity.getMultiplier())) % 360; diff --git a/common/mekanism/generators/common/TileEntityBioGenerator.java b/common/mekanism/generators/common/TileEntityBioGenerator.java index e0b1ae908..0bb5c00f5 100644 --- a/common/mekanism/generators/common/TileEntityBioGenerator.java +++ b/common/mekanism/generators/common/TileEntityBioGenerator.java @@ -213,6 +213,12 @@ public class TileEntityBioGenerator extends TileEntityGenerator implements ITank { return bioFuelSlot.liquidStored*i / bioFuelSlot.MAX_LIQUID; } + + @Override + public int[] getAccessibleSlotsFromSide(int side) + { + return ForgeDirection.getOrientation(side) == MekanismUtils.getRight(facing) ? new int[] {1} : new int[] {0}; + } @Override public int getStartInventorySide(ForgeDirection side)