From eb8e8da0a28c4b115214da3ffc589878b6f5202d Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Tue, 27 May 2014 12:06:55 -0500 Subject: [PATCH 01/11] Removed Layers from API - I'm sick of people commenting on it. --- parts/layers/InvSot.java | 47 ++++ parts/layers/LayerIBatteryProvider.java | 23 ++ parts/layers/LayerIEnergyHandler.java | 61 +++++ parts/layers/LayerIEnergySink.java | 146 +++++++++++ parts/layers/LayerIEnergySource.java | 139 +++++++++++ parts/layers/LayerIFluidHandler.java | 69 ++++++ parts/layers/LayerIPipeConnection.java | 21 ++ parts/layers/LayerIPowerEmitter.java | 19 ++ parts/layers/LayerIPowerReceptor.java | 36 +++ parts/layers/LayerISidedInventory.java | 228 ++++++++++++++++++ .../layers/LayerITileStorageMonitorable.java | 22 ++ 11 files changed, 811 insertions(+) create mode 100644 parts/layers/InvSot.java create mode 100644 parts/layers/LayerIBatteryProvider.java create mode 100644 parts/layers/LayerIEnergyHandler.java create mode 100644 parts/layers/LayerIEnergySink.java create mode 100644 parts/layers/LayerIEnergySource.java create mode 100644 parts/layers/LayerIFluidHandler.java create mode 100644 parts/layers/LayerIPipeConnection.java create mode 100644 parts/layers/LayerIPowerEmitter.java create mode 100644 parts/layers/LayerIPowerReceptor.java create mode 100644 parts/layers/LayerISidedInventory.java create mode 100644 parts/layers/LayerITileStorageMonitorable.java diff --git a/parts/layers/InvSot.java b/parts/layers/InvSot.java new file mode 100644 index 00000000..320a7219 --- /dev/null +++ b/parts/layers/InvSot.java @@ -0,0 +1,47 @@ +package appeng.api.parts.layers; + +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; + +public class InvSot +{ + + final public ISidedInventory partInv; + final public int index; + + public InvSot(ISidedInventory part, int slot) { + partInv = part; + index = slot; + } + + public ItemStack decrStackSize(int j) + { + return partInv.decrStackSize( index, j ); + } + + public ItemStack getStackInSlot() + { + return partInv.getStackInSlot( index ); + } + + public boolean isItemValidForSlot(ItemStack itemstack) + { + return partInv.isItemValidForSlot( index, itemstack ); + } + + public void setInventorySlotContents(ItemStack itemstack) + { + partInv.setInventorySlotContents( index, itemstack ); + } + + public boolean canExtractItem(ItemStack itemstack, int side) + { + return partInv.canExtractItem( index, itemstack, side ); + } + + public boolean canInsertItem(ItemStack itemstack, int side) + { + return partInv.canInsertItem( index, itemstack, side ); + } + +} diff --git a/parts/layers/LayerIBatteryProvider.java b/parts/layers/LayerIBatteryProvider.java new file mode 100644 index 00000000..99d990ee --- /dev/null +++ b/parts/layers/LayerIBatteryProvider.java @@ -0,0 +1,23 @@ +package appeng.api.parts.layers; + +import net.minecraftforge.common.util.ForgeDirection; +import appeng.api.parts.IPart; +import appeng.api.parts.LayerBase; +import buildcraft.api.mj.IBatteryObject; +import buildcraft.api.mj.ISidedBatteryProvider; + +public class LayerIBatteryProvider extends LayerBase implements ISidedBatteryProvider +{ + + @Override + public IBatteryObject getMjBattery(String kind, ForgeDirection direction) + { + IPart p = getPart( direction ); + + if ( p instanceof ISidedBatteryProvider ) + return ((ISidedBatteryProvider) p).getMjBattery( kind, direction ); + + return null; + } + +} diff --git a/parts/layers/LayerIEnergyHandler.java b/parts/layers/LayerIEnergyHandler.java new file mode 100644 index 00000000..6b6b71f8 --- /dev/null +++ b/parts/layers/LayerIEnergyHandler.java @@ -0,0 +1,61 @@ +package appeng.api.parts.layers; + +import net.minecraftforge.common.util.ForgeDirection; +import appeng.api.parts.IPart; +import appeng.api.parts.LayerBase; +import cofh.api.energy.IEnergyHandler; + +public class LayerIEnergyHandler extends LayerBase implements IEnergyHandler +{ + + @Override + public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) + { + IPart part = getPart( from ); + if ( part instanceof IEnergyHandler ) + return ((IEnergyHandler) part).receiveEnergy( from, maxReceive, simulate ); + + return 0; + } + + @Override + public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) + { + IPart part = getPart( from ); + if ( part instanceof IEnergyHandler ) + return ((IEnergyHandler) part).extractEnergy( from, maxExtract, simulate ); + + return 0; + } + + @Override + public int getEnergyStored(ForgeDirection from) + { + IPart part = getPart( from ); + if ( part instanceof IEnergyHandler ) + return ((IEnergyHandler) part).getEnergyStored( from ); + + return 0; + } + + @Override + public int getMaxEnergyStored(ForgeDirection from) + { + IPart part = getPart( from ); + if ( part instanceof IEnergyHandler ) + return ((IEnergyHandler) part).getMaxEnergyStored( from ); + + return 0; + } + + @Override + public boolean canConnectEnergy(ForgeDirection from) + { + IPart part = getPart( from ); + if ( part instanceof IEnergyHandler ) + return ((IEnergyHandler) part).canConnectEnergy( from ); + + return false; + } + +} diff --git a/parts/layers/LayerIEnergySink.java b/parts/layers/LayerIEnergySink.java new file mode 100644 index 00000000..cbb47e63 --- /dev/null +++ b/parts/layers/LayerIEnergySink.java @@ -0,0 +1,146 @@ +package appeng.api.parts.layers; + +import ic2.api.energy.tile.IEnergySink; +import ic2.api.energy.tile.IEnergyTile; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.ForgeDirection; +import appeng.api.parts.IPart; +import appeng.api.parts.IPartHost; +import appeng.api.parts.LayerBase; +import appeng.api.parts.LayerFlags; +import appeng.util.Platform; + +public class LayerIEnergySink extends LayerBase implements IEnergySink +{ + + private boolean isInIC2() + { + return getLayerFlags().contains( LayerFlags.IC2_ENET ); + } + + private TileEntity getEnergySinkTile() + { + IPartHost host = (IPartHost) this; + return host.getTile(); + } + + private World getEnergySinkWorld() + { + if ( getEnergySinkTile() == null ) + return null; + + return getEnergySinkTile().getWorldObj(); + } + + final private void addToENet() + { + if ( getEnergySinkWorld() == null ) + return; + + // re-add + removeFromENet(); + + if ( !isInIC2() && Platform.isServer() ) + { + getLayerFlags().add( LayerFlags.IC2_ENET ); + MinecraftForge.EVENT_BUS.post( new ic2.api.energy.event.EnergyTileLoadEvent( (IEnergySink) getEnergySinkTile() ) ); + } + } + + final private void removeFromENet() + { + if ( getEnergySinkWorld() == null ) + return; + + if ( isInIC2() && Platform.isServer() ) + { + getLayerFlags().remove( LayerFlags.IC2_ENET ); + MinecraftForge.EVENT_BUS.post( new ic2.api.energy.event.EnergyTileUnloadEvent( (IEnergySink) getEnergySinkTile() ) ); + } + } + + final private boolean interestedInIC2() + { + int interested = 0; + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + IPart part = getPart( dir ); + if ( part instanceof IEnergyTile ) + { + interested++; + } + } + return interested == 1;// if more then one tile is interested we need to abandonship... + } + + @Override + public void partChanged() + { + super.partChanged(); + + if ( interestedInIC2() ) + addToENet(); + else + removeFromENet(); + } + + @Override + public boolean acceptsEnergyFrom(TileEntity emitter, ForgeDirection direction) + { + if ( !isInIC2() ) + return false; + + IPart part = getPart( direction ); + if ( part instanceof IEnergySink ) + return ((IEnergySink) part).acceptsEnergyFrom( emitter, direction ); + return false; + } + + @Override + public double demandedEnergyUnits() + { + if ( !isInIC2() ) + return 0; + + // this is a flawed implementation, that requires a change to the IC2 API. + + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + IPart part = getPart( dir ); + if ( part instanceof IEnergySink ) + { + // use lower number cause ic2 deletes power it sends that isn't recieved. + return ((IEnergySink) part).demandedEnergyUnits(); + } + } + + return 0; + } + + @Override + public double injectEnergyUnits(ForgeDirection directionFrom, double amount) + { + if ( !isInIC2() ) + return amount; + + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + IPart part = getPart( dir ); + if ( part instanceof IEnergySink ) + { + return ((IEnergySink) part).injectEnergyUnits( directionFrom, amount ); + } + } + + return amount; + } + + @Override + public int getMaxSafeInput() + { + return Integer.MAX_VALUE; // no real options here... + } + +} diff --git a/parts/layers/LayerIEnergySource.java b/parts/layers/LayerIEnergySource.java new file mode 100644 index 00000000..255988e2 --- /dev/null +++ b/parts/layers/LayerIEnergySource.java @@ -0,0 +1,139 @@ +package appeng.api.parts.layers; + +import ic2.api.energy.tile.IEnergyEmitter; +import ic2.api.energy.tile.IEnergySink; +import ic2.api.energy.tile.IEnergySource; +import ic2.api.energy.tile.IEnergyTile; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraftforge.common.MinecraftForge; +import net.minecraftforge.common.util.ForgeDirection; +import appeng.api.parts.IPart; +import appeng.api.parts.IPartHost; +import appeng.api.parts.LayerBase; +import appeng.api.parts.LayerFlags; +import appeng.util.Platform; + +public class LayerIEnergySource extends LayerBase implements IEnergySource +{ + + private boolean isInIC2() + { + return getLayerFlags().contains( LayerFlags.IC2_ENET ); + } + + private TileEntity getEnergySourceTile() + { + IPartHost host = (IPartHost) this; + return host.getTile(); + } + + private World getEnergySourceWorld() + { + if ( getEnergySourceTile() == null ) + return null; + return getEnergySourceTile().getWorldObj(); + } + + final private void addToENet() + { + if ( getEnergySourceWorld() == null ) + return; + + // re-add + removeFromENet(); + + if ( !isInIC2() && Platform.isServer() ) + { + getLayerFlags().add( LayerFlags.IC2_ENET ); + MinecraftForge.EVENT_BUS.post( new ic2.api.energy.event.EnergyTileLoadEvent( (IEnergySink) getEnergySourceTile() ) ); + } + } + + final private void removeFromENet() + { + if ( getEnergySourceWorld() == null ) + return; + + if ( isInIC2() && Platform.isServer() ) + { + getLayerFlags().remove( LayerFlags.IC2_ENET ); + MinecraftForge.EVENT_BUS.post( new ic2.api.energy.event.EnergyTileUnloadEvent( (IEnergySink) getEnergySourceTile() ) ); + } + } + + final private boolean interestedInIC2() + { + int interested = 0; + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + IPart part = getPart( dir ); + if ( part instanceof IEnergyTile ) + { + interested++; + } + } + return interested == 1;// if more then one tile is interested we need to abandonship... + } + + @Override + public void partChanged() + { + super.partChanged(); + + if ( interestedInIC2() ) + addToENet(); + else + removeFromENet(); + } + + @Override + public boolean emitsEnergyTo(TileEntity receiver, ForgeDirection direction) + { + if ( !isInIC2() ) + return false; + + IPart part = getPart( direction ); + if ( part instanceof IEnergySink ) + return ((IEnergyEmitter) part).emitsEnergyTo( receiver, direction ); + return false; + } + + @Override + public double getOfferedEnergy() + { + if ( !isInIC2() ) + return 0; + + // this is a flawed implementation, that requires a change to the IC2 API. + + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + IPart part = getPart( dir ); + if ( part instanceof IEnergySource ) + { + // use lower number cause ic2 deletes power it sends that isn't recieved. + return ((IEnergySource) part).getOfferedEnergy(); + } + } + + return 0; + } + + @Override + public void drawEnergy(double amount) + { + // this is a flawed implementation, that requires a change to the IC2 API. + + for (ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) + { + IPart part = getPart( dir ); + if ( part instanceof IEnergySource ) + { + ((IEnergySource) part).drawEnergy( amount ); + return; + } + } + } + +} diff --git a/parts/layers/LayerIFluidHandler.java b/parts/layers/LayerIFluidHandler.java new file mode 100644 index 00000000..96168f2b --- /dev/null +++ b/parts/layers/LayerIFluidHandler.java @@ -0,0 +1,69 @@ +package appeng.api.parts.layers; + +import net.minecraftforge.common.util.ForgeDirection; +import net.minecraftforge.fluids.FluidStack; +import net.minecraftforge.fluids.FluidTankInfo; +import net.minecraftforge.fluids.IFluidHandler; +import appeng.api.parts.IPart; +import appeng.api.parts.LayerBase; + +public class LayerIFluidHandler extends LayerBase implements IFluidHandler +{ + + static final FluidTankInfo[] emptyList = new FluidTankInfo[0]; + + @Override + public int fill(ForgeDirection from, FluidStack resource, boolean doFill) + { + IPart part = getPart( from ); + if ( part instanceof IFluidHandler ) + return ((IFluidHandler) part).fill( from, resource, doFill ); + return 0; + } + + @Override + public FluidStack drain(ForgeDirection from, FluidStack resource, boolean doDrain) + { + IPart part = getPart( from ); + if ( part instanceof IFluidHandler ) + return ((IFluidHandler) part).drain( from, resource, doDrain ); + return null; + } + + @Override + public FluidStack drain(ForgeDirection from, int maxDrain, boolean doDrain) + { + IPart part = getPart( from ); + if ( part instanceof IFluidHandler ) + return ((IFluidHandler) part).drain( from, maxDrain, doDrain ); + return null; + } + + @Override + public boolean canFill(ForgeDirection from, net.minecraftforge.fluids.Fluid fluid) + { + IPart part = getPart( from ); + if ( part instanceof IFluidHandler ) + return ((IFluidHandler) part).canFill( from, fluid ); + return false; + } + + @Override + public boolean canDrain(ForgeDirection from, net.minecraftforge.fluids.Fluid fluid) + { + IPart part = getPart( from ); + if ( part instanceof IFluidHandler ) + return ((IFluidHandler) part).canDrain( from, fluid ); + return false; + } + + @Override + public FluidTankInfo[] getTankInfo(ForgeDirection from) + { + IPart part = getPart( from ); + if ( part instanceof IFluidHandler ) + return ((IFluidHandler) part).getTankInfo( from ); + return emptyList; + } + +} diff --git a/parts/layers/LayerIPipeConnection.java b/parts/layers/LayerIPipeConnection.java new file mode 100644 index 00000000..bbe939f5 --- /dev/null +++ b/parts/layers/LayerIPipeConnection.java @@ -0,0 +1,21 @@ +package appeng.api.parts.layers; + +import net.minecraftforge.common.util.ForgeDirection; +import appeng.api.parts.IPart; +import appeng.api.parts.LayerBase; +import buildcraft.api.transport.IPipeConnection; +import buildcraft.api.transport.IPipeTile.PipeType; + +public class LayerIPipeConnection extends LayerBase implements IPipeConnection +{ + + @Override + public ConnectOverride overridePipeConnection(PipeType type, ForgeDirection with) + { + IPart part = getPart( with ); + if ( part instanceof IPipeConnection ) + return ((IPipeConnection) part).overridePipeConnection( type, with ); + return ConnectOverride.DEFAULT; + } + +} diff --git a/parts/layers/LayerIPowerEmitter.java b/parts/layers/LayerIPowerEmitter.java new file mode 100644 index 00000000..2d7b3407 --- /dev/null +++ b/parts/layers/LayerIPowerEmitter.java @@ -0,0 +1,19 @@ +package appeng.api.parts.layers; + +import net.minecraftforge.common.util.ForgeDirection; +import appeng.api.parts.IPart; +import appeng.api.parts.LayerBase; +import buildcraft.api.power.IPowerEmitter; + +public class LayerIPowerEmitter extends LayerBase implements IPowerEmitter +{ + + @Override + public boolean canEmitPowerFrom(ForgeDirection side) + { + IPart part = getPart( side ); + if ( part instanceof IPowerEmitter ) + return ((IPowerEmitter) part).canEmitPowerFrom( side ); + return false; + } +} diff --git a/parts/layers/LayerIPowerReceptor.java b/parts/layers/LayerIPowerReceptor.java new file mode 100644 index 00000000..f82d658c --- /dev/null +++ b/parts/layers/LayerIPowerReceptor.java @@ -0,0 +1,36 @@ +package appeng.api.parts.layers; + +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; +import appeng.api.parts.IPart; +import appeng.api.parts.IPartHost; +import appeng.api.parts.LayerBase; +import buildcraft.api.power.IPowerReceptor; +import buildcraft.api.power.PowerHandler; +import buildcraft.api.power.PowerHandler.PowerReceiver; + +public class LayerIPowerReceptor extends LayerBase implements IPowerReceptor +{ + + @Override + public PowerReceiver getPowerReceiver(ForgeDirection side) + { + IPart part = getPart( side ); + if ( part instanceof IPowerReceptor ) + return ((IPowerReceptor) part).getPowerReceiver( side ); + return null; + } + + @Override + public void doWork(PowerHandler workProvider) + { + // do nothing, this seems pointless. + } + + @Override + public World getWorld() + { + return ((IPartHost) this).getTile().getWorldObj(); + } + +} diff --git a/parts/layers/LayerISidedInventory.java b/parts/layers/LayerISidedInventory.java new file mode 100644 index 00000000..7a96b8c0 --- /dev/null +++ b/parts/layers/LayerISidedInventory.java @@ -0,0 +1,228 @@ +package appeng.api.parts.layers; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; + +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraftforge.common.util.ForgeDirection; +import appeng.api.parts.IPart; +import appeng.api.parts.IPartHost; +import appeng.api.parts.LayerBase; + +/** + * Inventory wrapper for parts, + * + * this is considerably more complicated then the other wrappers as it requires creating a "unified inventory". + * + * You must use {@link ISidedInventory} instead of {@link IInventory}. + * + * If your inventory changes in between placement and removal, you must trigger a PartChange on the {@link IPartHost} so + * it can recalculate the inventory wrapper. + */ +public class LayerISidedInventory extends LayerBase implements ISidedInventory +{ + + // a simple empty array for empty stuff.. + private final static int[] nullSides = new int[] {}; + + // cache of inventory state. + private int sides[][] = null; + private List invs = null; + private List slots = null; + + /** + * Recalculate inventory wrapper cache. + */ + @Override + public void partChanged() + { + invs = new ArrayList(); + int slotCount = 0; + + for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) + { + IPart bp = getPart( side ); + if ( bp instanceof ISidedInventory ) + { + ISidedInventory part = (ISidedInventory) bp; + slotCount += part.getSizeInventory(); + invs.add( part ); + } + } + + if ( invs.isEmpty() || slotCount == 0 ) + { + invs = null; + sides = null; + slots = null; + } + else + { + sides = new int[][] { nullSides, nullSides, nullSides, nullSides, nullSides, nullSides }; + slots = new ArrayList( Collections.nCopies( slotCount, (InvSot) null ) ); + + int offsetForLayer = 0; + int offsetForPart = 0; + for (ISidedInventory sides : invs) + { + offsetForPart = 0; + slotCount = sides.getSizeInventory(); + + ForgeDirection currentSide = ForgeDirection.UNKNOWN; + for (ForgeDirection side : ForgeDirection.VALID_DIRECTIONS) + if ( getPart( side ) == sides ) + { + currentSide = side; + break; + } + + int cSidesList[] = this.sides[currentSide.ordinal()] = new int[slotCount]; + for (int cSlot = 0; cSlot < slotCount; cSlot++) + { + cSidesList[cSlot] = offsetForLayer; + slots.set( offsetForLayer++, new InvSot( sides, offsetForPart++ ) ); + } + } + } + + // make sure inventory is updated before we call FMP. + super.partChanged(); + } + + /** + * check if a slot index is valid, prevent crashes from bad code :) + * + * @param slot + * @return true, if the slot exists. + */ + boolean isSlotValid(int slot) + { + return slots != null && slot >= 0 && slot < slots.size(); + } + + @Override + public ItemStack decrStackSize(int slot, int amount) + { + if ( isSlotValid( slot ) ) + return slots.get( slot ).decrStackSize( amount ); + + return null; + } + + @Override + public int getSizeInventory() + { + if ( slots == null ) + return 0; + + return slots.size(); + } + + @Override + public ItemStack getStackInSlot(int slot) + { + if ( isSlotValid( slot ) ) + return slots.get( slot ).getStackInSlot(); + + return null; + } + + @Override + public boolean isItemValidForSlot(int slot, ItemStack itemstack) + { + if ( isSlotValid( slot ) ) + return slots.get( slot ).isItemValidForSlot( itemstack ); + + return false; + } + + @Override + public void setInventorySlotContents(int slot, ItemStack itemstack) + { + if ( isSlotValid( slot ) ) + slots.get( slot ).setInventorySlotContents( itemstack ); + } + + @Override + public boolean canExtractItem(int slot, ItemStack itemstack, int side) + { + if ( isSlotValid( slot ) ) + return slots.get( slot ).canExtractItem( itemstack, side ); + + return false; + } + + @Override + public boolean canInsertItem(int slot, ItemStack itemstack, int side) + { + if ( isSlotValid( slot ) ) + return slots.get( slot ).canInsertItem( itemstack, side ); + + return false; + } + + @Override + public void markDirty() + { + super.markForSave(); + + if ( invs != null ) + { + for (IInventory inv : invs) + inv.markDirty(); + } + } + + @Override + public int[] getAccessibleSlotsFromSide(int side) + { + if ( sides == null || side < 0 || side > 5 ) + return nullSides; + return sides[side]; + } + + @Override + public int getInventoryStackLimit() + { + return 64; // no options here. + } + + @Override + public String getInventoryName() + { + return "AEMultiPart"; + } + + @Override + public boolean hasCustomInventoryName() + { + return false; + } + + @Override + public ItemStack getStackInSlotOnClosing(int slot) + { + return null; + } + + @Override + public boolean isUseableByPlayer(EntityPlayer entityplayer) + { + return false; + } + + @Override + public void closeInventory() + { + } + + @Override + public void openInventory() + { + } + +} diff --git a/parts/layers/LayerITileStorageMonitorable.java b/parts/layers/LayerITileStorageMonitorable.java new file mode 100644 index 00000000..7ebf8ee7 --- /dev/null +++ b/parts/layers/LayerITileStorageMonitorable.java @@ -0,0 +1,22 @@ +package appeng.api.parts.layers; + +import net.minecraftforge.common.util.ForgeDirection; +import appeng.api.implementations.tiles.ITileStorageMonitorable; +import appeng.api.networking.security.BaseActionSource; +import appeng.api.parts.IPart; +import appeng.api.parts.LayerBase; +import appeng.api.storage.IStorageMonitorable; + +public class LayerITileStorageMonitorable extends LayerBase implements ITileStorageMonitorable +{ + + @Override + public IStorageMonitorable getMonitorable(ForgeDirection side, BaseActionSource src) + { + IPart part = getPart( side ); + if ( part instanceof ITileStorageMonitorable ) + return ((ITileStorageMonitorable) part).getMonitorable( side, src ); + return null; + } + +} From ac8effba3b5b46194ff9728bec78925ea013b2d0 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Tue, 27 May 2014 12:14:35 -0500 Subject: [PATCH 02/11] Change path to layers. --- core/Registration.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/core/Registration.java b/core/Registration.java index b4787e89..399b1745 100644 --- a/core/Registration.java +++ b/core/Registration.java @@ -457,29 +457,29 @@ public class Registration recipeHandler.parseRecipes( new JarLoader( "/assets/appliedenergistics2/recipes/" ), "index.recipe" ); IPartHelper ph = AEApi.instance().partHelper(); - ph.registerNewLayer( "appeng.api.parts.layers.LayerISidedInventory", "net.minecraft.inventory.ISidedInventory" ); - ph.registerNewLayer( "appeng.api.parts.layers.LayerIFluidHandler", "net.minecraftforge.fluids.IFluidHandler" ); - ph.registerNewLayer( "appeng.api.parts.layers.LayerITileStorageMonitorable", "appeng.api.implementations.tiles.ITileStorageMonitorable" ); + ph.registerNewLayer( "appeng.parts.layers.LayerISidedInventory", "net.minecraft.inventory.ISidedInventory" ); + ph.registerNewLayer( "appeng.parts.layers.LayerIFluidHandler", "net.minecraftforge.fluids.IFluidHandler" ); + ph.registerNewLayer( "appeng.parts.layers.LayerITileStorageMonitorable", "appeng.api.implementations.tiles.ITileStorageMonitorable" ); if ( AppEng.instance.isIntegrationEnabled( "IC2" ) ) { - ph.registerNewLayer( "appeng.api.parts.layers.LayerIEnergySink", "ic2.api.energy.tile.IEnergySink" ); - ph.registerNewLayer( "appeng.api.parts.layers.LayerIEnergySource", "ic2.api.energy.tile.IEnergySource" ); + ph.registerNewLayer( "appeng.parts.layers.LayerIEnergySink", "ic2.api.energy.tile.IEnergySink" ); + ph.registerNewLayer( "appeng.parts.layers.LayerIEnergySource", "ic2.api.energy.tile.IEnergySource" ); } if ( AppEng.instance.isIntegrationEnabled( "MJ5" ) ) { - ph.registerNewLayer( "appeng.api.parts.layers.LayerIPowerEmitter", "buildcraft.api.power.IPowerEmitter" ); - ph.registerNewLayer( "appeng.api.parts.layers.LayerIPowerReceptor", "buildcraft.api.power.IPowerReceptor" ); + ph.registerNewLayer( "appeng.parts.layers.LayerIPowerEmitter", "buildcraft.api.power.IPowerEmitter" ); + ph.registerNewLayer( "appeng.parts.layers.LayerIPowerReceptor", "buildcraft.api.power.IPowerReceptor" ); } if ( AppEng.instance.isIntegrationEnabled( "MJ6" ) ) { - ph.registerNewLayer( "appeng.api.parts.layers.LayerIBatteryProvider", "buildcraft.api.mj.IBatteryProvider" ); + ph.registerNewLayer( "appeng.parts.layers.LayerIBatteryProvider", "buildcraft.api.mj.IBatteryProvider" ); } if ( AppEng.instance.isIntegrationEnabled( "RF" ) ) - ph.registerNewLayer( "appeng.api.parts.layers.LayerIEnergyHandler", "cofh.api.energy.IEnergyHandler" ); + ph.registerNewLayer( "appeng.parts.layers.LayerIEnergyHandler", "cofh.api.energy.IEnergyHandler" ); FMLCommonHandler.instance().bus().register( TickHandler.instance ); MinecraftForge.EVENT_BUS.register( TickHandler.instance ); From 0ac83b04c9c75cbd8bd7f46b13cdb7094e678296 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Tue, 27 May 2014 12:15:49 -0500 Subject: [PATCH 03/11] Changed Package Names. --- core/Registration.java | 2 -- parts/layers/InvSot.java | 2 +- parts/layers/LayerIBatteryProvider.java | 2 +- parts/layers/LayerIEnergyHandler.java | 2 +- parts/layers/LayerIEnergySink.java | 2 +- parts/layers/LayerIEnergySource.java | 2 +- parts/layers/LayerIFluidHandler.java | 2 +- parts/layers/LayerIPipeConnection.java | 2 +- parts/layers/LayerIPowerEmitter.java | 2 +- parts/layers/LayerIPowerReceptor.java | 2 +- parts/layers/LayerISidedInventory.java | 2 +- parts/layers/LayerITileStorageMonitorable.java | 2 +- 12 files changed, 11 insertions(+), 13 deletions(-) diff --git a/core/Registration.java b/core/Registration.java index 399b1745..6401a32e 100644 --- a/core/Registration.java +++ b/core/Registration.java @@ -474,9 +474,7 @@ public class Registration } if ( AppEng.instance.isIntegrationEnabled( "MJ6" ) ) - { ph.registerNewLayer( "appeng.parts.layers.LayerIBatteryProvider", "buildcraft.api.mj.IBatteryProvider" ); - } if ( AppEng.instance.isIntegrationEnabled( "RF" ) ) ph.registerNewLayer( "appeng.parts.layers.LayerIEnergyHandler", "cofh.api.energy.IEnergyHandler" ); diff --git a/parts/layers/InvSot.java b/parts/layers/InvSot.java index 320a7219..493492c7 100644 --- a/parts/layers/InvSot.java +++ b/parts/layers/InvSot.java @@ -1,4 +1,4 @@ -package appeng.api.parts.layers; +package appeng.parts.layers; import net.minecraft.inventory.ISidedInventory; import net.minecraft.item.ItemStack; diff --git a/parts/layers/LayerIBatteryProvider.java b/parts/layers/LayerIBatteryProvider.java index 99d990ee..f3069076 100644 --- a/parts/layers/LayerIBatteryProvider.java +++ b/parts/layers/LayerIBatteryProvider.java @@ -1,4 +1,4 @@ -package appeng.api.parts.layers; +package appeng.parts.layers; import net.minecraftforge.common.util.ForgeDirection; import appeng.api.parts.IPart; diff --git a/parts/layers/LayerIEnergyHandler.java b/parts/layers/LayerIEnergyHandler.java index 6b6b71f8..75b49d81 100644 --- a/parts/layers/LayerIEnergyHandler.java +++ b/parts/layers/LayerIEnergyHandler.java @@ -1,4 +1,4 @@ -package appeng.api.parts.layers; +package appeng.parts.layers; import net.minecraftforge.common.util.ForgeDirection; import appeng.api.parts.IPart; diff --git a/parts/layers/LayerIEnergySink.java b/parts/layers/LayerIEnergySink.java index cbb47e63..e10b9e79 100644 --- a/parts/layers/LayerIEnergySink.java +++ b/parts/layers/LayerIEnergySink.java @@ -1,4 +1,4 @@ -package appeng.api.parts.layers; +package appeng.parts.layers; import ic2.api.energy.tile.IEnergySink; import ic2.api.energy.tile.IEnergyTile; diff --git a/parts/layers/LayerIEnergySource.java b/parts/layers/LayerIEnergySource.java index 255988e2..f9a655d4 100644 --- a/parts/layers/LayerIEnergySource.java +++ b/parts/layers/LayerIEnergySource.java @@ -1,4 +1,4 @@ -package appeng.api.parts.layers; +package appeng.parts.layers; import ic2.api.energy.tile.IEnergyEmitter; import ic2.api.energy.tile.IEnergySink; diff --git a/parts/layers/LayerIFluidHandler.java b/parts/layers/LayerIFluidHandler.java index 96168f2b..ddc577a4 100644 --- a/parts/layers/LayerIFluidHandler.java +++ b/parts/layers/LayerIFluidHandler.java @@ -1,4 +1,4 @@ -package appeng.api.parts.layers; +package appeng.parts.layers; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.fluids.FluidStack; diff --git a/parts/layers/LayerIPipeConnection.java b/parts/layers/LayerIPipeConnection.java index bbe939f5..8247706b 100644 --- a/parts/layers/LayerIPipeConnection.java +++ b/parts/layers/LayerIPipeConnection.java @@ -1,4 +1,4 @@ -package appeng.api.parts.layers; +package appeng.parts.layers; import net.minecraftforge.common.util.ForgeDirection; import appeng.api.parts.IPart; diff --git a/parts/layers/LayerIPowerEmitter.java b/parts/layers/LayerIPowerEmitter.java index 2d7b3407..269c07ff 100644 --- a/parts/layers/LayerIPowerEmitter.java +++ b/parts/layers/LayerIPowerEmitter.java @@ -1,4 +1,4 @@ -package appeng.api.parts.layers; +package appeng.parts.layers; import net.minecraftforge.common.util.ForgeDirection; import appeng.api.parts.IPart; diff --git a/parts/layers/LayerIPowerReceptor.java b/parts/layers/LayerIPowerReceptor.java index f82d658c..b90127a5 100644 --- a/parts/layers/LayerIPowerReceptor.java +++ b/parts/layers/LayerIPowerReceptor.java @@ -1,4 +1,4 @@ -package appeng.api.parts.layers; +package appeng.parts.layers; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; diff --git a/parts/layers/LayerISidedInventory.java b/parts/layers/LayerISidedInventory.java index 7a96b8c0..2b6494ad 100644 --- a/parts/layers/LayerISidedInventory.java +++ b/parts/layers/LayerISidedInventory.java @@ -1,4 +1,4 @@ -package appeng.api.parts.layers; +package appeng.parts.layers; import java.util.ArrayList; import java.util.Collections; diff --git a/parts/layers/LayerITileStorageMonitorable.java b/parts/layers/LayerITileStorageMonitorable.java index 7ebf8ee7..b3cd40bb 100644 --- a/parts/layers/LayerITileStorageMonitorable.java +++ b/parts/layers/LayerITileStorageMonitorable.java @@ -1,4 +1,4 @@ -package appeng.api.parts.layers; +package appeng.parts.layers; import net.minecraftforge.common.util.ForgeDirection; import appeng.api.implementations.tiles.ITileStorageMonitorable; From 45155caeee660b06018178fe490dd3c146eea979 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Tue, 27 May 2014 15:47:36 -0500 Subject: [PATCH 04/11] Annihilation Plane now drops its buffer. --- parts/automation/PartAnnihilationPlane.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/parts/automation/PartAnnihilationPlane.java b/parts/automation/PartAnnihilationPlane.java index 47711ed4..afb03ea2 100644 --- a/parts/automation/PartAnnihilationPlane.java +++ b/parts/automation/PartAnnihilationPlane.java @@ -2,6 +2,7 @@ package appeng.parts.automation; import java.io.IOException; import java.util.LinkedList; +import java.util.List; import java.util.concurrent.Callable; import net.minecraft.block.Block; @@ -203,6 +204,14 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab return Buffer.isEmpty(); } + @Override + public void getDrops(List drops, boolean wrenched) + { + for (IAEItemStack is : Buffer) + if ( is != null ) + drops.add( is.getItemStack() ); + } + @MENetworkEventSubscribe public void chanRender(MENetworkChannelsChanged c) { From e8e97a1c20fca23f0ea736f5a640ca936953af60 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Tue, 27 May 2014 16:02:15 -0500 Subject: [PATCH 05/11] Changed "Invalid NBT For CableBus Container" to a warning instead of a exception. --- parts/CableBusContainer.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/parts/CableBusContainer.java b/parts/CableBusContainer.java index d7b2e43a..e1acae0a 100644 --- a/parts/CableBusContainer.java +++ b/parts/CableBusContainer.java @@ -40,6 +40,7 @@ import appeng.api.util.AEColor; import appeng.api.util.DimensionalCoord; import appeng.client.render.BusRenderHelper; import appeng.client.render.CableRenderHelper; +import appeng.core.AELog; import appeng.core.AppEng; import appeng.facade.FacadeContainer; import appeng.helpers.AEMultiTile; @@ -704,7 +705,9 @@ public class CableBusContainer implements AEMultiTile, ICableBusContainer p.readFromNBT( extra ); } else - throw new RuntimeException( "Invalid NBT For CableBus Container: " + iss.getItem().getClass().getName() + " is not a valid part." ); + { + AELog.warning( "Invalid NBT For CableBus Container: " + iss.getItem().getClass().getName() + " is not a valid part; it was ignored." ); + } } } else From 57d4541418238538d737476b47a511e0566e20e3 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Thu, 29 May 2014 11:40:42 -0500 Subject: [PATCH 06/11] Cable Null checks for EVERYTHING! --- block/networking/BlockCableBus.java | 91 +++++++++++++++++------------ 1 file changed, 54 insertions(+), 37 deletions(-) diff --git a/block/networking/BlockCableBus.java b/block/networking/BlockCableBus.java index 886e2d18..ae609a1e 100644 --- a/block/networking/BlockCableBus.java +++ b/block/networking/BlockCableBus.java @@ -89,7 +89,8 @@ public class BlockCableBus extends AEBaseBlock @Override public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity) { - return cb( world, x, y, z ).isLadder( entity ); + ICableBusContainer cbc = cb( world, x, y, z ); + return cbc == null ? false : cbc.isLadder( entity ); } @Override @@ -100,33 +101,33 @@ public class BlockCableBus extends AEBaseBlock public boolean recolourBlock(World world, int x, int y, int z, ForgeDirection side, int colour, EntityPlayer who) { - try - { - return cb( world, x, y, z ).recolourBlock( side, colour, who ); - } - catch (Throwable t) - { - } - return false; + ICableBusContainer cbc = cb( world, x, y, z ); + return cbc == null ? false : cbc.recolourBlock( side, colour, who ); } @Override public void randomDisplayTick(World world, int x, int y, int z, Random r) { - cb( world, x, y, z ).randomDisplayTick( world, x, y, z, r ); + ICableBusContainer cbc = cb( world, x, y, z ); + if( cbc != null ) + cbc.randomDisplayTick( world, x, y, z, r ); } @Override public int getLightValue(IBlockAccess world, int x, int y, int z) { Block block = world.getBlock( x, y, z ); + if ( block != null && block != this ) { return block.getLightValue( world, x, y, z ); } + if ( block == null ) return 0; - return cb( world, x, y, z ).getLightValue(); + + ICableBusContainer cbc = cb( world, x, y, z ); + return cbc == null ? 0 : cbc.getLightValue(); } @Override @@ -146,7 +147,8 @@ public class BlockCableBus extends AEBaseBlock @Override public boolean isReplaceable(IBlockAccess world, int x, int y, int z) { - return cb( world, x, y, z ).isEmpty(); + ICableBusContainer cbc = cb( world, x, y, z ); + return cbc == null ? false : cbc.isEmpty(); } @Override @@ -159,6 +161,7 @@ public class BlockCableBus extends AEBaseBlock tile.dropItems = false; // maybe ray trace? } + return super.removedByPlayer( world, player, x, y, z ); } @@ -197,15 +200,18 @@ public class BlockCableBus extends AEBaseBlock } @Override - public boolean isSideSolid(IBlockAccess w, int x, int y, int z, ForgeDirection side) + public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirection side) { - return cb( w, x, y, z ).isSolidOnSide( side ); + ICableBusContainer cbc = cb( world, x, y, z ); + return cbc == null ? false : cbc.isSolidOnSide( side ); } @Override - public void onNeighborBlockChange(World w, int x, int y, int z, Block meh) + public void onNeighborBlockChange(World world, int x, int y, int z, Block meh) { - cb( w, x, y, z ).onNeighborChanged(); + ICableBusContainer cbc = cb( world, x, y, z ); + if ( cbc != null ) + cbc.onNeighborChanged(); } @Override @@ -215,47 +221,58 @@ public class BlockCableBus extends AEBaseBlock } @Override - public boolean onActivated(World w, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) + public boolean onActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - return cb( w, x, y, z ).activate( player, w.getWorldVec3Pool().getVecFromPool( hitX, hitY, hitZ ) ); + ICableBusContainer cbc = cb( world, x, y, z ); + return cbc == null ? false : cbc.activate( player, world.getWorldVec3Pool().getVecFromPool( hitX, hitY, hitZ ) ); } @Override - public void onEntityCollidedWithBlock(World w, int x, int y, int z, Entity e) + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity e) { - cb( w, x, y, z ).onEntityCollision( e ); + ICableBusContainer cbc = cb( world, x, y, z ); + if ( cbc != null ) + cbc.onEntityCollision( e ); } @Override - public boolean canConnectRedstone(IBlockAccess w, int x, int y, int z, int side) + public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int side) { - switch (side) + ICableBusContainer cbc = cb( world, x, y, z ); + + if ( cbc != null ) { - case -1: - case 4: - return cb( w, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.UP, ForgeDirection.DOWN ) ); - case 0: - return cb( w, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.NORTH ) ); - case 1: - return cb( w, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.EAST ) ); - case 2: - return cb( w, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.SOUTH ) ); - case 3: - return cb( w, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.WEST ) ); + switch (side) + { + case -1: + case 4: + return cb( world, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.UP, ForgeDirection.DOWN ) ); + case 0: + return cb( world, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.NORTH ) ); + case 1: + return cb( world, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.EAST ) ); + case 2: + return cb( world, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.SOUTH ) ); + case 3: + return cb( world, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.WEST ) ); + } } + return false; } @Override - public int isProvidingWeakPower(IBlockAccess w, int x, int y, int z, int side) + public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side) { - return cb( w, x, y, z ).isProvidingWeakPower( ForgeDirection.getOrientation( side ).getOpposite() ); + ICableBusContainer cbc = cb( world, x, y, z ); + return cbc == null ? 0 : cbc.isProvidingWeakPower( ForgeDirection.getOrientation( side ).getOpposite() ); } @Override - public int isProvidingStrongPower(IBlockAccess w, int x, int y, int z, int side) + public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int side) { - return cb( w, x, y, z ).isProvidingStrongPower( ForgeDirection.getOrientation( side ).getOpposite() ); + ICableBusContainer cbc = cb( world, x, y, z ); + return cbc == null ? 0 : cbc.isProvidingStrongPower( ForgeDirection.getOrientation( side ).getOpposite() ); } @Override From b872ae66c3a8dba3bc3e86dfe4b7e69d0e8e5142 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Thu, 29 May 2014 11:41:29 -0500 Subject: [PATCH 07/11] Fixed http://ae2.ae-mod.info/Tracker/0475/ --- me/helpers/AENetworkProxy.java | 9 +++++++-- tile/qnb/TileQuantumBridge.java | 10 ++++++++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/me/helpers/AENetworkProxy.java b/me/helpers/AENetworkProxy.java index 83eafc26..23b0a24a 100644 --- a/me/helpers/AENetworkProxy.java +++ b/me/helpers/AENetworkProxy.java @@ -36,7 +36,7 @@ public class AENetworkProxy implements IGridBlock final private IGridProxyable gp; final private boolean worldNode; - final private ItemStack myRepInstance; + private ItemStack myRepInstance; private boolean isReady = false; private IGridNode node = null; @@ -57,7 +57,12 @@ public class AENetworkProxy implements IGridBlock { return myRepInstance; } - + + public void setVisualRepresentation( ItemStack is ) + { + myRepInstance = is; + } + public AENetworkProxy(IGridProxyable te, String nbtName, ItemStack visual, boolean inWorld) { this.gp = te; this.nbtName = nbtName; diff --git a/tile/qnb/TileQuantumBridge.java b/tile/qnb/TileQuantumBridge.java index 8258bb37..201f9192 100644 --- a/tile/qnb/TileQuantumBridge.java +++ b/tile/qnb/TileQuantumBridge.java @@ -31,6 +31,8 @@ import appeng.util.Platform; public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock { + final private static ItemStack ring = AEApi.instance().blocks().blockQuantumRing.stack(1); + final int sidesRing[] = new int[] {}; final int sidesLink[] = new int[] { 0 }; @@ -147,6 +149,14 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock { return !isInvalid(); } + + @Override + public void onReady() + { + super.onReady(); + if ( worldObj.getBlock( xCoord, yCoord, zCoord) == AEApi.instance().blocks().blockQuantumRing.block() ) + gridProxy.setVisualRepresentation( ring ); + } public void updateStatus(QuantumCluster c, byte flags) { From 3746c49d49685e4a28afe82c392e72de30126227 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Thu, 29 May 2014 11:41:47 -0500 Subject: [PATCH 08/11] Fixed http://openeye.openmods.info/crashes/45620002c5dacfe15acc8e1e37187991 and friends. --- util/item/AEItemStack.java | 5 ++++- util/item/OreHelper.java | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/util/item/AEItemStack.java b/util/item/AEItemStack.java index 64e7d3f8..1af8d3ce 100644 --- a/util/item/AEItemStack.java +++ b/util/item/AEItemStack.java @@ -53,7 +53,10 @@ public final class AEItemStack extends AEStack implements IAEItemS def = new AEItemDef(); def.item = is.getItem(); - + + if ( def.item == null ) + throw new RuntimeException( "This ItemStack is bad, it has a null item." ); + /* * Prevent an Item from changing the damage value on me... Either, this or a core mod. */ diff --git a/util/item/OreHelper.java b/util/item/OreHelper.java index 2bb61936..802b7f25 100644 --- a/util/item/OreHelper.java +++ b/util/item/OreHelper.java @@ -98,7 +98,8 @@ public class OreHelper // SUMMON AE STACKS! for (ItemStack is : set) - aeset.add( AEItemStack.create( is ) ); + if ( is.getItem() != null ) + aeset.add( AEItemStack.create( is ) ); } } From e17ac60141a76d7e411a2a5d0e168a587f071fb4 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Thu, 29 May 2014 11:51:07 -0500 Subject: [PATCH 09/11] Fixed Bug: #0470 - Incorrect search with russian capital letters --- client/me/ItemRepo.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/me/ItemRepo.java b/client/me/ItemRepo.java index ffd3d7ba..9ddb71ea 100644 --- a/client/me/ItemRepo.java +++ b/client/me/ItemRepo.java @@ -225,7 +225,7 @@ public class ItemRepo String dspName = Platform.getItemDisplayName( is ); notDone = true; - if ( m.matcher( dspName ).find() ) + if ( m.matcher( dspName.toLowerCase() ).find() ) { view.add( is ); notDone = false; From 623e3aa22813af489a614a9da6e4c23de762b233 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Thu, 29 May 2014 15:01:42 -0500 Subject: [PATCH 10/11] Revert "Cable Null checks for EVERYTHING!" This reverts commit 57d4541418238538d737476b47a511e0566e20e3. This was already resolved - this is a duplicate fix. --- block/networking/BlockCableBus.java | 91 ++++++++++++----------------- 1 file changed, 37 insertions(+), 54 deletions(-) diff --git a/block/networking/BlockCableBus.java b/block/networking/BlockCableBus.java index ae609a1e..886e2d18 100644 --- a/block/networking/BlockCableBus.java +++ b/block/networking/BlockCableBus.java @@ -89,8 +89,7 @@ public class BlockCableBus extends AEBaseBlock @Override public boolean isLadder(IBlockAccess world, int x, int y, int z, EntityLivingBase entity) { - ICableBusContainer cbc = cb( world, x, y, z ); - return cbc == null ? false : cbc.isLadder( entity ); + return cb( world, x, y, z ).isLadder( entity ); } @Override @@ -101,33 +100,33 @@ public class BlockCableBus extends AEBaseBlock public boolean recolourBlock(World world, int x, int y, int z, ForgeDirection side, int colour, EntityPlayer who) { - ICableBusContainer cbc = cb( world, x, y, z ); - return cbc == null ? false : cbc.recolourBlock( side, colour, who ); + try + { + return cb( world, x, y, z ).recolourBlock( side, colour, who ); + } + catch (Throwable t) + { + } + return false; } @Override public void randomDisplayTick(World world, int x, int y, int z, Random r) { - ICableBusContainer cbc = cb( world, x, y, z ); - if( cbc != null ) - cbc.randomDisplayTick( world, x, y, z, r ); + cb( world, x, y, z ).randomDisplayTick( world, x, y, z, r ); } @Override public int getLightValue(IBlockAccess world, int x, int y, int z) { Block block = world.getBlock( x, y, z ); - if ( block != null && block != this ) { return block.getLightValue( world, x, y, z ); } - if ( block == null ) return 0; - - ICableBusContainer cbc = cb( world, x, y, z ); - return cbc == null ? 0 : cbc.getLightValue(); + return cb( world, x, y, z ).getLightValue(); } @Override @@ -147,8 +146,7 @@ public class BlockCableBus extends AEBaseBlock @Override public boolean isReplaceable(IBlockAccess world, int x, int y, int z) { - ICableBusContainer cbc = cb( world, x, y, z ); - return cbc == null ? false : cbc.isEmpty(); + return cb( world, x, y, z ).isEmpty(); } @Override @@ -161,7 +159,6 @@ public class BlockCableBus extends AEBaseBlock tile.dropItems = false; // maybe ray trace? } - return super.removedByPlayer( world, player, x, y, z ); } @@ -200,18 +197,15 @@ public class BlockCableBus extends AEBaseBlock } @Override - public boolean isSideSolid(IBlockAccess world, int x, int y, int z, ForgeDirection side) + public boolean isSideSolid(IBlockAccess w, int x, int y, int z, ForgeDirection side) { - ICableBusContainer cbc = cb( world, x, y, z ); - return cbc == null ? false : cbc.isSolidOnSide( side ); + return cb( w, x, y, z ).isSolidOnSide( side ); } @Override - public void onNeighborBlockChange(World world, int x, int y, int z, Block meh) + public void onNeighborBlockChange(World w, int x, int y, int z, Block meh) { - ICableBusContainer cbc = cb( world, x, y, z ); - if ( cbc != null ) - cbc.onNeighborChanged(); + cb( w, x, y, z ).onNeighborChanged(); } @Override @@ -221,58 +215,47 @@ public class BlockCableBus extends AEBaseBlock } @Override - public boolean onActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) + public boolean onActivated(World w, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) { - ICableBusContainer cbc = cb( world, x, y, z ); - return cbc == null ? false : cbc.activate( player, world.getWorldVec3Pool().getVecFromPool( hitX, hitY, hitZ ) ); + return cb( w, x, y, z ).activate( player, w.getWorldVec3Pool().getVecFromPool( hitX, hitY, hitZ ) ); } @Override - public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity e) + public void onEntityCollidedWithBlock(World w, int x, int y, int z, Entity e) { - ICableBusContainer cbc = cb( world, x, y, z ); - if ( cbc != null ) - cbc.onEntityCollision( e ); + cb( w, x, y, z ).onEntityCollision( e ); } @Override - public boolean canConnectRedstone(IBlockAccess world, int x, int y, int z, int side) + public boolean canConnectRedstone(IBlockAccess w, int x, int y, int z, int side) { - ICableBusContainer cbc = cb( world, x, y, z ); - - if ( cbc != null ) + switch (side) { - switch (side) - { - case -1: - case 4: - return cb( world, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.UP, ForgeDirection.DOWN ) ); - case 0: - return cb( world, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.NORTH ) ); - case 1: - return cb( world, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.EAST ) ); - case 2: - return cb( world, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.SOUTH ) ); - case 3: - return cb( world, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.WEST ) ); - } + case -1: + case 4: + return cb( w, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.UP, ForgeDirection.DOWN ) ); + case 0: + return cb( w, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.NORTH ) ); + case 1: + return cb( w, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.EAST ) ); + case 2: + return cb( w, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.SOUTH ) ); + case 3: + return cb( w, x, y, z ).canConnectRedstone( EnumSet.of( ForgeDirection.WEST ) ); } - return false; } @Override - public int isProvidingWeakPower(IBlockAccess world, int x, int y, int z, int side) + public int isProvidingWeakPower(IBlockAccess w, int x, int y, int z, int side) { - ICableBusContainer cbc = cb( world, x, y, z ); - return cbc == null ? 0 : cbc.isProvidingWeakPower( ForgeDirection.getOrientation( side ).getOpposite() ); + return cb( w, x, y, z ).isProvidingWeakPower( ForgeDirection.getOrientation( side ).getOpposite() ); } @Override - public int isProvidingStrongPower(IBlockAccess world, int x, int y, int z, int side) + public int isProvidingStrongPower(IBlockAccess w, int x, int y, int z, int side) { - ICableBusContainer cbc = cb( world, x, y, z ); - return cbc == null ? 0 : cbc.isProvidingStrongPower( ForgeDirection.getOrientation( side ).getOpposite() ); + return cb( w, x, y, z ).isProvidingStrongPower( ForgeDirection.getOrientation( side ).getOpposite() ); } @Override From baf5e661446c1dfbf686178099cf990fccc5f031 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Sat, 31 May 2014 20:56:55 -0500 Subject: [PATCH 11/11] inWorldPurification messages split for each item, to improve clarity. --- core/localization/GuiText.java | 2 +- integration/modules/NEIHelpers/NEIWorldCraftingHandler.java | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/core/localization/GuiText.java b/core/localization/GuiText.java index 36e0a245..37b860f2 100644 --- a/core/localization/GuiText.java +++ b/core/localization/GuiText.java @@ -26,7 +26,7 @@ public enum GuiText METunnel, ItemTunnel, RedstoneTunnel, MJTunnel, EUTunnel, FluidTunnel, StoredSize, - StoredPower, MaxPower, RequiredPower, Efficiency, InWorldCrafting, inWorldFluix, inWorldPurification, inWorldSingularity, OfSecondOutput, NoSecondOutput, RFTunnel; + StoredPower, MaxPower, RequiredPower, Efficiency, InWorldCrafting, inWorldFluix, inWorldPurificationCertus, inWorldPurificationNether, inWorldPurificationFluix, inWorldSingularity, OfSecondOutput, NoSecondOutput, RFTunnel; String root; diff --git a/integration/modules/NEIHelpers/NEIWorldCraftingHandler.java b/integration/modules/NEIHelpers/NEIWorldCraftingHandler.java index 332f7634..1a29aad6 100644 --- a/integration/modules/NEIHelpers/NEIWorldCraftingHandler.java +++ b/integration/modules/NEIHelpers/NEIWorldCraftingHandler.java @@ -55,9 +55,9 @@ public class NEIWorldCraftingHandler implements ICraftingHandler, IUsageHandler if ( AEConfig.instance.isFeatureEnabled( AEFeature.inWorldPurification ) ) { - addRecipe( AEApi.instance().materials().materialPureifiedCertusQuartzCrystal, GuiText.inWorldPurification.getLocal() ); - addRecipe( AEApi.instance().materials().materialPureifiedNetherQuartzCrystal, GuiText.inWorldPurification.getLocal() ); - addRecipe( AEApi.instance().materials().materialPureifiedFluixCrystal, GuiText.inWorldPurification.getLocal() ); + addRecipe( AEApi.instance().materials().materialPureifiedCertusQuartzCrystal, GuiText.inWorldPurificationCertus.getLocal() ); + addRecipe( AEApi.instance().materials().materialPureifiedNetherQuartzCrystal, GuiText.inWorldPurificationNether.getLocal() ); + addRecipe( AEApi.instance().materials().materialPureifiedFluixCrystal, GuiText.inWorldPurificationFluix.getLocal() ); } }