diff --git a/src/main/java/appeng/client/ClientHelper.java b/src/main/java/appeng/client/ClientHelper.java index 3b29c97f..db2837a1 100644 --- a/src/main/java/appeng/client/ClientHelper.java +++ b/src/main/java/appeng/client/ClientHelper.java @@ -541,7 +541,7 @@ public class ClientHelper extends ServerHelper } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } } } diff --git a/src/main/java/appeng/client/gui/AEBaseGui.java b/src/main/java/appeng/client/gui/AEBaseGui.java index 4996469e..028c12c8 100644 --- a/src/main/java/appeng/client/gui/AEBaseGui.java +++ b/src/main/java/appeng/client/gui/AEBaseGui.java @@ -413,7 +413,7 @@ public abstract class AEBaseGui extends GuiContainer } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } } else if( slot instanceof SlotCraftingTerm ) @@ -782,7 +782,7 @@ public abstract class AEBaseGui extends GuiContainer } catch( final Exception err ) { - AELog.warning( "[AppEng] AE prevented crash while drawing slot: " + err.toString() ); + AELog.warn( "[AppEng] AE prevented crash while drawing slot: " + err.toString() ); } this.setItemRender( pIR ); return; @@ -850,7 +850,7 @@ public abstract class AEBaseGui extends GuiContainer } catch( final Exception err ) { - AELog.error( err ); + AELog.debug( err ); } } ( (AppEngSlot) s ).setIsValid( isValid ? hasCalculatedValidness.Valid : hasCalculatedValidness.Invalid ); @@ -884,7 +884,7 @@ public abstract class AEBaseGui extends GuiContainer } catch( final Exception err ) { - AELog.warning( "[AppEng] AE prevented crash while drawing slot: " + err.toString() ); + AELog.warn( "[AppEng] AE prevented crash while drawing slot: " + err.toString() ); } } // do the usual for non-ME Slots. diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java b/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java index d24f4d3f..cd6723fd 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java @@ -558,7 +558,7 @@ public class GuiCraftConfirm extends AEBaseGui } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } } @@ -575,7 +575,7 @@ public class GuiCraftConfirm extends AEBaseGui } catch( final Throwable e ) { - AELog.error( e ); + AELog.debug( e ); } } } diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java b/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java index 72f6baf8..a297eb52 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java @@ -129,7 +129,7 @@ public class GuiCraftingCPU extends AEBaseGui implements ISortSource } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } } } diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java b/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java index d2580852..58916bf4 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftingStatus.java @@ -121,7 +121,7 @@ public class GuiCraftingStatus extends GuiCraftingCPU } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } } diff --git a/src/main/java/appeng/client/gui/implementations/GuiLevelEmitter.java b/src/main/java/appeng/client/gui/implementations/GuiLevelEmitter.java index c458d539..97264036 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiLevelEmitter.java +++ b/src/main/java/appeng/client/gui/implementations/GuiLevelEmitter.java @@ -233,7 +233,7 @@ public class GuiLevelEmitter extends GuiUpgradeable } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } } @@ -269,7 +269,7 @@ public class GuiLevelEmitter extends GuiUpgradeable } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } } else diff --git a/src/main/java/appeng/client/gui/implementations/GuiMEMonitorable.java b/src/main/java/appeng/client/gui/implementations/GuiMEMonitorable.java index 55c98349..7ace97cf 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiMEMonitorable.java +++ b/src/main/java/appeng/client/gui/implementations/GuiMEMonitorable.java @@ -199,7 +199,7 @@ public class GuiMEMonitorable extends AEBaseMEGui implements ISortSource, IConfi } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } } diff --git a/src/main/java/appeng/client/gui/implementations/GuiNetworkTool.java b/src/main/java/appeng/client/gui/implementations/GuiNetworkTool.java index 3bdf1794..08562e43 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiNetworkTool.java +++ b/src/main/java/appeng/client/gui/implementations/GuiNetworkTool.java @@ -59,7 +59,7 @@ public class GuiNetworkTool extends AEBaseGui } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } } diff --git a/src/main/java/appeng/client/gui/implementations/GuiPriority.java b/src/main/java/appeng/client/gui/implementations/GuiPriority.java index 085a4898..4006584d 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiPriority.java +++ b/src/main/java/appeng/client/gui/implementations/GuiPriority.java @@ -240,7 +240,7 @@ public class GuiPriority extends AEBaseGui } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } } @@ -276,7 +276,7 @@ public class GuiPriority extends AEBaseGui } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } } else diff --git a/src/main/java/appeng/client/gui/implementations/GuiQuartzKnife.java b/src/main/java/appeng/client/gui/implementations/GuiQuartzKnife.java index 852de22f..ad20665b 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiQuartzKnife.java +++ b/src/main/java/appeng/client/gui/implementations/GuiQuartzKnife.java @@ -85,7 +85,7 @@ public class GuiQuartzKnife extends AEBaseGui } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } } else diff --git a/src/main/java/appeng/client/gui/implementations/GuiSecurity.java b/src/main/java/appeng/client/gui/implementations/GuiSecurity.java index d2c8f8c4..1f59318f 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiSecurity.java +++ b/src/main/java/appeng/client/gui/implementations/GuiSecurity.java @@ -90,7 +90,7 @@ public class GuiSecurity extends GuiMEMonitorable } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } } } diff --git a/src/main/java/appeng/client/gui/implementations/GuiStorageBus.java b/src/main/java/appeng/client/gui/implementations/GuiStorageBus.java index 609599c4..a2d89d63 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiStorageBus.java +++ b/src/main/java/appeng/client/gui/implementations/GuiStorageBus.java @@ -137,7 +137,7 @@ public class GuiStorageBus extends GuiUpgradeable } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } } } diff --git a/src/main/java/appeng/client/render/TESRWrapper.java b/src/main/java/appeng/client/render/TESRWrapper.java index 275a526f..9203fcfd 100644 --- a/src/main/java/appeng/client/render/TESRWrapper.java +++ b/src/main/java/appeng/client/render/TESRWrapper.java @@ -74,9 +74,9 @@ public class TESRWrapper extends TileEntitySpecialRenderer } catch( final Throwable t ) { - AELog.severe( "Hi, Looks like there was a crash while rendering something..." ); + AELog.error( "Hi, Looks like there was a crash while rendering something..." ); t.printStackTrace(); - AELog.severe( "MC will now crash ( probably )!" ); + AELog.error( "MC will now crash ( probably )!" ); throw new IllegalStateException( t ); } } diff --git a/src/main/java/appeng/client/render/WorldRender.java b/src/main/java/appeng/client/render/WorldRender.java index 2836b97c..5c79e549 100644 --- a/src/main/java/appeng/client/render/WorldRender.java +++ b/src/main/java/appeng/client/render/WorldRender.java @@ -87,9 +87,9 @@ public final class WorldRender implements ISimpleBlockRenderingHandler if( !this.hasError ) { this.hasError = true; - AELog.severe( "Invalid render - item/block mismatch" ); - AELog.severe( " item: " + item.getUnlocalizedName() ); - AELog.severe( " block: " + blk.getUnlocalizedName() ); + AELog.error( "Invalid render - item/block mismatch" ); + AELog.error( " item: " + item.getUnlocalizedName() ); + AELog.error( " block: " + blk.getUnlocalizedName() ); } } } diff --git a/src/main/java/appeng/client/render/blocks/RenderBlockCharger.java b/src/main/java/appeng/client/render/blocks/RenderBlockCharger.java index 313f170d..9346ab92 100644 --- a/src/main/java/appeng/client/render/blocks/RenderBlockCharger.java +++ b/src/main/java/appeng/client/render/blocks/RenderBlockCharger.java @@ -164,7 +164,7 @@ public class RenderBlockCharger extends BaseBlockRender. + */ + +package appeng.fmp; + + +import java.io.IOException; +import java.util.ArrayList; +import java.util.EnumSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Set; + +import io.netty.buffer.ByteBuf; +import io.netty.buffer.Unpooled; + +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.util.Vec3; +import net.minecraftforge.common.util.ForgeDirection; + +import codechicken.lib.data.MCDataInput; +import codechicken.lib.data.MCDataOutput; +import codechicken.lib.raytracer.IndexedCuboid6; +import codechicken.lib.vec.Cuboid6; +import codechicken.lib.vec.Vector3; +import codechicken.multipart.IMaskedRedstonePart; +import codechicken.multipart.JCuboidPart; +import codechicken.multipart.JNormalOcclusion; +import codechicken.multipart.NormalOcclusionTest; +import codechicken.multipart.NormallyOccludedPart; +import codechicken.multipart.TMultiPart; +import codechicken.multipart.scalatraits.TIInventoryTile; + +import appeng.api.implementations.parts.IPartCable; +import appeng.api.networking.IGridNode; +import appeng.api.parts.IFacadeContainer; +import appeng.api.parts.IFacadePart; +import appeng.api.parts.IPart; +import appeng.api.parts.IPartCollisionHelper; +import appeng.api.parts.IPartItem; +import appeng.api.parts.LayerFlags; +import appeng.api.parts.PartItemStack; +import appeng.api.parts.SelectedPart; +import appeng.api.util.AECableType; +import appeng.api.util.AEColor; +import appeng.api.util.DimensionalCoord; +import appeng.client.render.BusRenderHelper; +import appeng.client.render.BusRenderer; +import appeng.core.AEConfig; +import appeng.core.AELog; +import appeng.core.features.AEFeature; +import appeng.helpers.AEMultiTile; +import appeng.parts.BusCollisionHelper; +import appeng.parts.CableBusContainer; +import appeng.parts.PartPlacement; +import appeng.tile.networking.TileCableBus; +import appeng.util.Platform; + + +/** + * Implementing these might help improve visuals for hollow covers + * + * TSlottedPart,ISidedHollowConnect + */ +public class CableBusPart extends JCuboidPart implements JNormalOcclusion, IMaskedRedstonePart, AEMultiTile +{ + private static final ThreadLocal DISABLE_FACADE_OCCLUSION = new ThreadLocal(); + private static final double SHORTER = 6.0 / 16.0; + private static final double LONGER = 10.0 / 16.0; + private static final double MIN_DIRECTION = 0; + private static final double MAX_DIRECTION = 1.0; + private static final Cuboid6[] SIDE_TESTS = { + + // DOWN(0, -1, 0), + new Cuboid6( SHORTER, MIN_DIRECTION, SHORTER, LONGER, SHORTER, LONGER ), + + // UP(0, 1, 0), + new Cuboid6( SHORTER, LONGER, SHORTER, LONGER, MAX_DIRECTION, LONGER ), + + // NORTH(0, 0, -1), + new Cuboid6( SHORTER, SHORTER, MIN_DIRECTION, LONGER, LONGER, SHORTER ), + + // SOUTH(0, 0, 1), + new Cuboid6( SHORTER, SHORTER, LONGER, LONGER, LONGER, MAX_DIRECTION ), + + // WEST(-1, 0, 0), + new Cuboid6( MIN_DIRECTION, SHORTER, SHORTER, SHORTER, LONGER, LONGER ), + + // EAST(1, 0, 0), + new Cuboid6( LONGER, SHORTER, SHORTER, MAX_DIRECTION, LONGER, LONGER ), + }; + + /** + * Mask for {@link IMaskedRedstonePart#getConnectionMask(int)} + * + * the bits are derived from the rotation, where 4 is the center + */ + private static final int CONNECTION_MASK = 0x000010; + private CableBusContainer cb = new CableBusContainer( this ); + private boolean canUpdate = false; + + @Override + public boolean recolourBlock( final ForgeDirection side, final AEColor colour, final EntityPlayer who ) + { + return this.getCableBus().recolourBlock( side, colour, who ); + } + + @Override + public Cuboid6 getBounds() + { + AxisAlignedBB b = null; + + for( final AxisAlignedBB bx : this.getCableBus().getSelectedBoundingBoxesFromPool( false, true, null, true ) ) + { + if( b == null ) + { + b = bx; + } + else + { + final double minX = Math.min( b.minX, bx.minX ); + final double minY = Math.min( b.minY, bx.minY ); + final double minZ = Math.min( b.minZ, bx.minZ ); + final double maxX = Math.max( b.maxX, bx.maxX ); + final double maxY = Math.max( b.maxY, bx.maxY ); + final double maxZ = Math.max( b.maxZ, bx.maxZ ); + b.setBounds( minX, minY, minZ, maxX, maxY, maxZ ); + } + } + + if( b == null ) + { + return new Cuboid6( 0.0, 0.0, 0.0, 1.0, 1.0, 1.0 ); + } + + return new Cuboid6( b.minX, b.minY, b.minZ, b.maxX, b.maxY, b.maxZ ); + } + + @Override + public String getType() + { + return PartRegistry.CableBusPart.getName(); + } + + @Override + public int getLightValue() + { + return this.getCableBus().getLightValue(); + } + + @Override + public void onWorldJoin() + { + this.canUpdate = true; + this.getCableBus().updateConnections(); + this.getCableBus().addToWorld(); + } + + @Override + public boolean occlusionTest( final TMultiPart part ) + { + return NormalOcclusionTest.apply( this, part ); + } + + @Override + public boolean renderStatic( final Vector3 pos, final int pass ) + { + if( pass == 0 || ( pass == 1 && AEConfig.instance.isFeatureEnabled( AEFeature.AlphaPass ) ) ) + { + BusRenderHelper.INSTANCE.setPass( pass ); + BusRenderer.INSTANCE.getRenderer().renderAllFaces = true; + BusRenderer.INSTANCE.getRenderer().blockAccess = this.world(); + BusRenderer.INSTANCE.getRenderer().overrideBlockTexture = null; + this.getCableBus().renderStatic( pos.x, pos.y, pos.z ); + return BusRenderHelper.INSTANCE.getItemsRendered() > 0; + } + return false; + } + + @Override + public void renderDynamic( final Vector3 pos, final float frame, final int pass ) + { + if( pass == 0 || ( pass == 1 && AEConfig.instance.isFeatureEnabled( AEFeature.AlphaPass ) ) ) + { + BusRenderHelper.INSTANCE.setPass( pass ); + this.getCableBus().renderDynamic( pos.x, pos.y, pos.z ); + } + } + + @Override + public void onPartChanged( final TMultiPart part ) + { + this.getCableBus().updateConnections(); + } + + @Override + public void onEntityCollision( final Entity entity ) + { + this.getCableBus().onEntityCollision( entity ); + } + + @Override + public boolean activate( final EntityPlayer player, final MovingObjectPosition hit, final ItemStack item ) + { + return this.getCableBus().activate( player, hit.hitVec.addVector( -hit.blockX, -hit.blockY, -hit.blockZ ) ); + } + + @Override + public void load( final NBTTagCompound tag ) + { + this.getCableBus().readFromNBT( tag ); + } + + @Override + public void onWorldSeparate() + { + this.canUpdate = false; + this.getCableBus().removeFromWorld(); + } + + @Override + public void save( final NBTTagCompound tag ) + { + this.getCableBus().writeToNBT( tag ); + } + + @Override + public void writeDesc( final MCDataOutput packet ) + { + final ByteBuf stream = Unpooled.buffer(); + + try + { + this.getCableBus().writeToStream( stream ); + packet.writeInt( stream.readableBytes() ); + stream.capacity( stream.readableBytes() ); + packet.writeByteArray( stream.array() ); + } + catch( final IOException e ) + { + AELog.debug( e ); + } + } + + @Override + public ItemStack pickItem( final MovingObjectPosition hit ) + { + final Vec3 v3 = hit.hitVec.addVector( -hit.blockX, -hit.blockY, -hit.blockZ ); + final SelectedPart sp = this.getCableBus().selectPart( v3 ); + if( sp != null ) + { + if( sp.part != null ) + { + return sp.part.getItemStack( PartItemStack.Break ); + } + if( sp.facade != null ) + { + return sp.facade.getItemStack(); + } + } + return null; + } + + @Override + public Iterable getDrops() + { + return this.getCableBus().getDrops( new ArrayList() ); + } + + @Override + public void onNeighborChanged() + { + this.getCableBus().onNeighborChanged(); + } + + @Override + public boolean doesTick() + { + return false; + } + + @Override + public void invalidateConvertedTile() + { + this.getCableBus().setHost( this ); + } + + @Override + public void readDesc( final MCDataInput packet ) + { + final int len = packet.readInt(); + final byte[] data = packet.readByteArray( len ); + + try + { + if( len > 0 ) + { + final ByteBuf byteBuffer = Unpooled.wrappedBuffer( data ); + this.getCableBus().readFromStream( byteBuffer ); + } + } + catch( final IOException e ) + { + AELog.debug( e ); + } + } + + @Override + public boolean canConnectRedstone( final int side ) + { + return this.getCableBus().canConnectRedstone( EnumSet.of( ForgeDirection.getOrientation( side ) ) ); + } + + @Override + public int weakPowerLevel( final int side ) + { + return this.getCableBus().isProvidingWeakPower( ForgeDirection.getOrientation( side ) ); + } + + @Override + public int strongPowerLevel( final int side ) + { + return this.getCableBus().isProvidingStrongPower( ForgeDirection.getOrientation( side ) ); + } + + public void convertFromTile( final TileEntity blockTileEntity ) + { + final TileCableBus tcb = (TileCableBus) blockTileEntity; + this.setCableBus( tcb.getCableBus() ); + } + + @Override + public Iterable getOcclusionBoxes() + { + final LinkedList l = new LinkedList(); + for( final AxisAlignedBB b : this.getCableBus().getSelectedBoundingBoxesFromPool( true, DISABLE_FACADE_OCCLUSION.get() == null, null, true ) ) + { + l.add( new Cuboid6( b.minX, b.minY, b.minZ, b.maxX, b.maxY, b.maxZ ) ); + } + return l; + } + + @Override + public IGridNode getGridNode( final ForgeDirection dir ) + { + return this.getCableBus().getGridNode( dir ); + } + + @Override + public AECableType getCableConnectionType( final ForgeDirection dir ) + { + return this.getCableBus().getCableConnectionType( dir ); + } + + @Override + public void securityBreak() + { + this.getCableBus().securityBreak(); + } + + // @Override + public int getHollowSize( final int side ) + { + final IPartCable cable = (IPartCable) this.getPart( ForgeDirection.UNKNOWN ); + + final ForgeDirection dir = ForgeDirection.getOrientation( side ); + if( cable != null && cable.isConnected( dir ) ) + { + final List boxes = new ArrayList(); + + final BusCollisionHelper bch = new BusCollisionHelper( boxes, ForgeDirection.EAST, ForgeDirection.UP, ForgeDirection.SOUTH, null, true ); + + for( final ForgeDirection whichSide : ForgeDirection.values() ) + { + final IPart fPart = this.getPart( whichSide ); + + if( fPart != null ) + { + fPart.getBoxes( bch ); + } + } + + AxisAlignedBB b = null; + final AxisAlignedBB pb = Platform.getPrimaryBox( dir, 2 ); + + for( final AxisAlignedBB bb : boxes ) + { + if( bb.intersectsWith( pb ) ) + { + if( b == null ) + { + b = bb; + } + else + { + b.maxX = Math.max( b.maxX, bb.maxX ); + b.maxY = Math.max( b.maxY, bb.maxY ); + b.maxZ = Math.max( b.maxZ, bb.maxZ ); + b.minX = Math.min( b.minX, bb.minX ); + b.minY = Math.min( b.minY, bb.minY ); + b.minZ = Math.min( b.minZ, bb.minZ ); + } + } + } + + if( b == null ) + { + return 0; + } + + switch( dir ) + { + case WEST: + case EAST: + return this.getSize( b.minZ, b.maxZ, b.minY, b.maxY ); + case DOWN: + case NORTH: + return this.getSize( b.minX, b.maxX, b.minZ, b.maxZ ); + case SOUTH: + case UP: + return this.getSize( b.minX, b.maxX, b.minY, b.maxY ); + default: + } + } + + return 12; + } + + private int getSize( final double a, final double b, final double c, final double d ) + { + double r = Math.abs( a - 0.5 ); + r = Math.max( Math.abs( b - 0.5 ), r ); + r = Math.max( Math.abs( c - 0.5 ), r ); + return( 8 * (int) Math.max( Math.abs( d - 0.5 ), r ) ); + } + + // @Override + public int getSlotMask() + { + int mask = 0; + + for( final ForgeDirection side : ForgeDirection.values() ) + { + if( this.getPart( side ) != null ) + { + mask |= 1 << side.ordinal(); + } + else if( side != ForgeDirection.UNKNOWN && this.getFacadeContainer().getFacade( side ) != null ) + { + mask |= 1 << side.ordinal(); + } + } + + return mask; + } + + @Override + public IFacadeContainer getFacadeContainer() + { + return this.getCableBus().getFacadeContainer(); + } + + @Override + public boolean canAddPart( ItemStack is, final ForgeDirection side ) + { + final IFacadePart fp = PartPlacement.isFacade( is, side ); + if( fp != null ) + { + if( !( side == null || side == ForgeDirection.UNKNOWN || this.tile() == null ) ) + { + final List boxes = new ArrayList(); + final IPartCollisionHelper bch = new BusCollisionHelper( boxes, side, null, true ); + fp.getBoxes( bch, null ); + for( final AxisAlignedBB bb : boxes ) + { + DISABLE_FACADE_OCCLUSION.set( true ); + final boolean canAdd = this.tile().canAddPart( new NormallyOccludedPart( new Cuboid6( bb ) ) ); + DISABLE_FACADE_OCCLUSION.remove(); + if( !canAdd ) + { + return false; + } + } + } + return true; + } + + if( is.getItem() instanceof IPartItem ) + { + final IPartItem bi = (IPartItem) is.getItem(); + + is = is.copy(); + is.stackSize = 1; + + final IPart bp = bi.createPartFromItemStack( is ); + if( !( side == null || side == ForgeDirection.UNKNOWN || this.tile() == null ) ) + { + final List boxes = new ArrayList(); + final IPartCollisionHelper bch = new BusCollisionHelper( boxes, side, null, true ); + if( bp != null ) + { + bp.getBoxes( bch ); + } + for( final AxisAlignedBB bb : boxes ) + { + if( !this.tile().canAddPart( new NormallyOccludedPart( new Cuboid6( bb ) ) ) ) + { + return false; + } + } + } + } + + return this.getCableBus().canAddPart( is, side ); + } + + @Override + public ForgeDirection addPart( final ItemStack is, final ForgeDirection side, final EntityPlayer owner ) + { + return this.getCableBus().addPart( is, side, owner ); + } + + @Override + public IPart getPart( final ForgeDirection side ) + { + return this.getCableBus().getPart( side ); + } + + @Override + public void removePart( final ForgeDirection side, final boolean suppressUpdate ) + { + this.getCableBus().removePart( side, suppressUpdate ); + } + + @Override + public void markForUpdate() + { + if( Platform.isServer() && this.canUpdate ) + { + this.sendDescUpdate(); + } + } + + @Override + public DimensionalCoord getLocation() + { + return new DimensionalCoord( this.tile() ); + } + + @Override + public AEColor getColor() + { + return this.getCableBus().getColor(); + } + + @Override + public void clearContainer() + { + this.setCableBus( new CableBusContainer( this ) ); + } + + @Override + public boolean isBlocked( final ForgeDirection side ) + { + if( side == null || side == ForgeDirection.UNKNOWN || this.tile() == null ) + { + return false; + } + + DISABLE_FACADE_OCCLUSION.set( true ); + + final int ordinal = side.ordinal(); + final Cuboid6 sideTest = SIDE_TESTS[ordinal]; + final NormallyOccludedPart occludedPart = new NormallyOccludedPart( sideTest ); + final boolean blocked = !this.tile().canAddPart( occludedPart ); + DISABLE_FACADE_OCCLUSION.remove(); + + return blocked; + } + + @Override + public SelectedPart selectPart( final Vec3 pos ) + { + return this.getCableBus().selectPart( pos ); + } + + @Override + public void markForSave() + { + // mark the chunk for save... + final TileEntity te = this.tile(); + if( te != null && te.getWorldObj() != null ) + { + te.getWorldObj().getChunkFromBlockCoords( this.x(), this.z() ).isModified = true; + } + } + + @Override + public void partChanged() + { + if( this.isInWorld() ) + { + this.notifyNeighbors(); + } + } + + @Override + public boolean hasRedstone( final ForgeDirection side ) + { + return this.getCableBus().hasRedstone( side ); + } + + @Override + public boolean isEmpty() + { + return this.getCableBus().isEmpty(); + } + + @Override + public Set getLayerFlags() + { + return this.getCableBus().getLayerFlags(); + } + + @Override + public void cleanup() + { + this.tile().remPart( this ); + } + + @Override + public void notifyNeighbors() + { + if( this.tile() instanceof TIInventoryTile ) + { + ( (TIInventoryTile) this.tile() ).rebuildSlotMap(); + } + + if( this.world() != null && this.world().blockExists( this.x(), this.y(), this.z() ) && !CableBusContainer.isLoading() ) + { + Platform.notifyBlocksOfNeighbors( this.world(), this.x(), this.y(), this.z() ); + } + } + + @Override + public boolean isInWorld() + { + return this.getCableBus().isInWorld(); + } + + @Override + public Iterable getCollisionBoxes() + { + final LinkedList l = new LinkedList(); + for( final AxisAlignedBB b : this.getCableBus().getSelectedBoundingBoxesFromPool( false, true, null, true ) ) + { + l.add( new Cuboid6( b.minX, b.minY, b.minZ, b.maxX, b.maxY, b.maxZ ) ); + } + return l; + } + + @Override + public Iterable getSubParts() + { + final LinkedList l = new LinkedList(); + for( final Cuboid6 c : this.getCollisionBoxes() ) + { + l.add( new IndexedCuboid6( 0, c ) ); + } + return l; + } + + @Override + public int getConnectionMask( final int side ) + { + return CONNECTION_MASK; + } + + public CableBusContainer getCableBus() + { + return this.cb; + } + + private void setCableBus( final CableBusContainer cb ) + { + this.cb = cb; + } +} diff --git a/src/main/java/appeng/hooks/TickHandler.java b/src/main/java/appeng/hooks/TickHandler.java index 4317653f..d3bc1d70 100644 --- a/src/main/java/appeng/hooks/TickHandler.java +++ b/src/main/java/appeng/hooks/TickHandler.java @@ -286,7 +286,7 @@ public class TickHandler } catch( final Exception e ) { - AELog.error( e ); + AELog.debug( e ); } } diff --git a/src/main/java/appeng/items/tools/powered/ToolMassCannon.java b/src/main/java/appeng/items/tools/powered/ToolMassCannon.java index 9c05dce5..e260b259 100644 --- a/src/main/java/appeng/items/tools/powered/ToolMassCannon.java +++ b/src/main/java/appeng/items/tools/powered/ToolMassCannon.java @@ -256,7 +256,7 @@ public class ToolMassCannon extends AEBasePoweredItem implements IStorageCell } catch( final Exception err ) { - AELog.error( err ); + AELog.debug( err ); } if( pos != null && type != null && type.getItem() instanceof ItemPaintBall ) @@ -373,7 +373,7 @@ public class ToolMassCannon extends AEBasePoweredItem implements IStorageCell } catch( final Exception err ) { - AELog.error( err ); + AELog.debug( err ); } if( pos != null ) diff --git a/src/main/java/appeng/me/GridStorage.java b/src/main/java/appeng/me/GridStorage.java index 42b3fd3f..057f7c5a 100644 --- a/src/main/java/appeng/me/GridStorage.java +++ b/src/main/java/appeng/me/GridStorage.java @@ -110,7 +110,7 @@ public class GridStorage implements IGridStorage } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } return ""; diff --git a/src/main/java/appeng/me/NetworkEventBus.java b/src/main/java/appeng/me/NetworkEventBus.java index 90e777b1..893ec0df 100644 --- a/src/main/java/appeng/me/NetworkEventBus.java +++ b/src/main/java/appeng/me/NetworkEventBus.java @@ -184,10 +184,10 @@ public class NetworkEventBus } catch( final Throwable e1 ) { - AELog.severe( "[AppEng] Network Event caused exception:" ); - AELog.severe( "Offending Class: " + obj.getClass().getName() ); - AELog.severe( "Offending Object: " + obj.toString() ); - AELog.error( e1 ); + AELog.error( "[AppEng] Network Event caused exception:" ); + AELog.error( "Offending Class: " + obj.getClass().getName() ); + AELog.error( "Offending Object: " + obj.toString() ); + AELog.debug( e1 ); throw new IllegalStateException( e1 ); } diff --git a/src/main/java/appeng/me/cluster/MBCalculator.java b/src/main/java/appeng/me/cluster/MBCalculator.java index 0685b5db..2c3656d5 100644 --- a/src/main/java/appeng/me/cluster/MBCalculator.java +++ b/src/main/java/appeng/me/cluster/MBCalculator.java @@ -117,7 +117,7 @@ public abstract class MBCalculator } catch( final Throwable err ) { - AELog.error( err ); + AELog.debug( err ); } this.disconnect(); diff --git a/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java b/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java index 1de18096..3e3740c7 100644 --- a/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java +++ b/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java @@ -82,6 +82,8 @@ import appeng.util.item.AEItemStack; public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { + private static final String LOG_MARK_AS_COMPLETE = "Completed job for %s."; + private final WorldCoord min; private final WorldCoord max; private final int[] usedOps = new int[3]; @@ -426,12 +428,19 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU ( (CraftingLink) this.myLastLink ).markDone(); } - AELog.crafting( "marking job as complete" ); + if( AELog.isCraftingLogEnabled() ) + { + final IAEItemStack logStack = this.finalOutput.copy(); + logStack.setStackSize( this.startItemCount ); + AELog.crafting( LOG_MARK_AS_COMPLETE, logStack ); + } + this.remainingItemCount = 0; this.startItemCount = 0; this.lastTime = 0; this.elapsedTime = 0; this.isComplete = true; + } private void updateCPU() diff --git a/src/main/java/appeng/parts/CableBusContainer.java b/src/main/java/appeng/parts/CableBusContainer.java index 9fb19a16..07d6ed6e 100644 --- a/src/main/java/appeng/parts/CableBusContainer.java +++ b/src/main/java/appeng/parts/CableBusContainer.java @@ -1081,7 +1081,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I } else { - AELog.warning( "Invalid NBT For CableBus Container: " + iss.getItem().getClass().getName() + " is not a valid part; it was ignored." ); + AELog.warn( "Invalid NBT For CableBus Container: " + iss.getItem().getClass().getName() + " is not a valid part; it was ignored." ); } } } diff --git a/src/main/java/appeng/parts/automation/PartExportBus.java b/src/main/java/appeng/parts/automation/PartExportBus.java index 5b50b6ed..10bfd998 100644 --- a/src/main/java/appeng/parts/automation/PartExportBus.java +++ b/src/main/java/appeng/parts/automation/PartExportBus.java @@ -305,7 +305,7 @@ public class PartExportBus extends PartSharedItemBus implements ICraftingRequest } catch( final GridAccessException e ) { - AELog.error( e ); + AELog.debug( e ); } return items; diff --git a/src/main/java/appeng/parts/p2p/PartP2PTunnelME.java b/src/main/java/appeng/parts/p2p/PartP2PTunnelME.java index 2c4120dc..32243289 100644 --- a/src/main/java/appeng/parts/p2p/PartP2PTunnelME.java +++ b/src/main/java/appeng/parts/p2p/PartP2PTunnelME.java @@ -233,14 +233,15 @@ public class PartP2PTunnelME extends PartP2PTunnel implements I { final TileEntity start = this.getTile(); final TileEntity end = me.getTile(); - AELog.warning( "Failed to establish a ME P2P Tunnel between the tunnels at [x=%d, y=%d, z=%d] and [x=%d, y=%d, z=%d]", start.getPos().getX(), start.getPos().getY(), start.getPos().getZ(), end.getPos().getX(), end.getPos().getY(), end.getPos().getZ() ); + + AELog.warn( "Failed to establish a ME P2P Tunnel between the tunnels at [x=%d, y=%d, z=%d] and [x=%d, y=%d, z=%d]", start.getPos().getX(), start.getPos().getY(), start.getPos().getZ(), end.getPos().getX(), end.getPos().getY(), end.getPos().getZ() ); // :( } } } catch( final GridAccessException e ) { - AELog.error( e ); + AELog.debug( e ); } } } diff --git a/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java b/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java index b8999b99..ed19ec84 100644 --- a/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java +++ b/src/main/java/appeng/parts/reporting/AbstractPartMonitor.java @@ -374,7 +374,7 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements } catch( final Exception e ) { - AELog.error( e ); + AELog.debug( e ); } finally { diff --git a/src/main/java/appeng/recipes/RecipeHandler.java b/src/main/java/appeng/recipes/RecipeHandler.java index 97ecd806..6e78189a 100644 --- a/src/main/java/appeng/recipes/RecipeHandler.java +++ b/src/main/java/appeng/recipes/RecipeHandler.java @@ -252,10 +252,10 @@ public class RecipeHandler implements IRecipeHandler } catch( final Exception err ) { - AELog.warning( "Error Loading Recipe File:" + path ); + AELog.warn( "Error Loading Recipe File:" + path ); if( this.data.exceptions ) { - AELog.error( err ); + AELog.debug( err ); } return; } @@ -355,7 +355,7 @@ public class RecipeHandler implements IRecipeHandler } catch( final Throwable e ) { - AELog.error( e ); + AELog.debug( e ); if( this.data.crash ) { throw new IllegalStateException( e ); @@ -393,10 +393,10 @@ public class RecipeHandler implements IRecipeHandler } catch( final RegistrationError e ) { - AELog.warning( "Unable to register a recipe: " + e.getMessage() ); + AELog.warn( "Unable to register a recipe: " + e.getMessage() ); if( this.data.exceptions ) { - AELog.error( e ); + AELog.debug( e ); } if( this.data.crash ) { @@ -407,10 +407,10 @@ public class RecipeHandler implements IRecipeHandler { if( this.data.errorOnMissing ) { - AELog.warning( "Unable to register a recipe:" + e.getMessage() ); + AELog.warn( "Unable to register a recipe:" + e.getMessage() ); if( this.data.exceptions ) { - AELog.error( e ); + AELog.debug( e ); } if( this.data.crash ) { @@ -424,7 +424,7 @@ public class RecipeHandler implements IRecipeHandler { if( this.data.exceptions ) { - AELog.error( e ); + AELog.debug( e ); } if( this.data.crash ) { @@ -500,11 +500,11 @@ public class RecipeHandler implements IRecipeHandler } catch( final FileNotFoundException e1 ) { - AELog.error( e1 ); + AELog.debug( e1 ); } catch( final IOException e1 ) { - AELog.error( e1 ); + AELog.debug( e1 ); } } } @@ -524,7 +524,7 @@ public class RecipeHandler implements IRecipeHandler } catch( final Throwable t ) { - AELog.error( t ); + AELog.debug( t ); } } @@ -673,10 +673,10 @@ public class RecipeHandler implements IRecipeHandler } catch( final RecipeError e ) { - AELog.warning( "Recipe Error '" + e.getMessage() + "' near line:" + line + " in " + file + " with: " + this.tokens.toString() ); + AELog.warn( "Recipe Error '" + e.getMessage() + "' near line:" + line + " in " + file + " with: " + this.tokens.toString() ); if( this.data.exceptions ) { - AELog.error( e ); + AELog.debug( e ); } if( this.data.crash ) { diff --git a/src/main/java/appeng/recipes/handlers/Shaped.java b/src/main/java/appeng/recipes/handlers/Shaped.java index b7907236..58687d97 100644 --- a/src/main/java/appeng/recipes/handlers/Shaped.java +++ b/src/main/java/appeng/recipes/handlers/Shaped.java @@ -117,7 +117,7 @@ public class Shaped implements ICraftHandler, IWebsiteSerializer } catch( final Throwable e ) { - AELog.error( e ); + AELog.debug( e ); throw new RegistrationError( "Error while adding shaped recipe." ); } } diff --git a/src/main/java/appeng/recipes/handlers/Shapeless.java b/src/main/java/appeng/recipes/handlers/Shapeless.java index 279b220c..840f5fe9 100644 --- a/src/main/java/appeng/recipes/handlers/Shapeless.java +++ b/src/main/java/appeng/recipes/handlers/Shapeless.java @@ -80,7 +80,7 @@ public class Shapeless implements ICraftHandler, IWebsiteSerializer } catch( final Throwable e ) { - AELog.error( e ); + AELog.debug( e ); throw new RegistrationError( "Error while adding shapeless recipe." ); } } diff --git a/src/main/java/appeng/recipes/ores/OreDictionaryHandler.java b/src/main/java/appeng/recipes/ores/OreDictionaryHandler.java index df03d9e4..d15c2a13 100644 --- a/src/main/java/appeng/recipes/ores/OreDictionaryHandler.java +++ b/src/main/java/appeng/recipes/ores/OreDictionaryHandler.java @@ -88,7 +88,7 @@ public class OreDictionaryHandler } catch( final Throwable e ) { - AELog.error( e ); + AELog.debug( e ); } } } diff --git a/src/main/java/appeng/services/VersionChecker.java b/src/main/java/appeng/services/VersionChecker.java index 9def9843..87bec13d 100644 --- a/src/main/java/appeng/services/VersionChecker.java +++ b/src/main/java/appeng/services/VersionChecker.java @@ -101,7 +101,7 @@ public final class VersionChecker implements Runnable catch( final Exception exception ) { // Log any unhandled exception to prevent the JVM from reporting them as unhandled. - AELog.error( exception ); + AELog.debug( exception ); } AELog.info( "Stopping AE2 VersionChecker" ); diff --git a/src/main/java/appeng/services/export/MinecraftItemCSVExporter.java b/src/main/java/appeng/services/export/MinecraftItemCSVExporter.java index 11fe7978..2e587b8f 100644 --- a/src/main/java/appeng/services/export/MinecraftItemCSVExporter.java +++ b/src/main/java/appeng/services/export/MinecraftItemCSVExporter.java @@ -117,8 +117,8 @@ final class MinecraftItemCSVExporter implements Exporter } catch( final IOException e ) { - AELog.warning( EXPORT_UNSUCCESSFUL_MESSAGE ); - AELog.error( e ); + AELog.warn( EXPORT_UNSUCCESSFUL_MESSAGE ); + AELog.debug( e ); } } @@ -198,6 +198,7 @@ final class MinecraftItemCSVExporter implements Exporter private static final String LOCALIZATION_NAME_EXTENSION = ".name"; private static final String EXPORTING_NOTHING_MESSAGE = "Exporting nothing"; private static final String EXPORTING_SUBTYPES_MESSAGE = "Exporting input %s with subtypes: %b"; + private static final String EXPORTING_SUBTYPES_FAILED_MESSAGE = "Could not export subtypes of: %s"; @Nonnull private final FMLControlledNamespacedRegistry itemRegistry; @@ -243,7 +244,8 @@ final class MinecraftItemCSVExporter implements Exporter } catch( final Exception ignored ) { - AELog.error( ignored ); + AELog.warn( EXPORTING_SUBTYPES_FAILED_MESSAGE, input.getUnlocalizedName() ); + AELog.debug( ignored ); // ignore if mods do bullshit in their code return null; diff --git a/src/main/java/appeng/services/version/ModVersionFetcher.java b/src/main/java/appeng/services/version/ModVersionFetcher.java index 6a4c5b1f..eb5e8015 100644 --- a/src/main/java/appeng/services/version/ModVersionFetcher.java +++ b/src/main/java/appeng/services/version/ModVersionFetcher.java @@ -67,7 +67,7 @@ public final class ModVersionFetcher implements VersionFetcher } catch( final VersionCheckerException e ) { - AELog.error( e ); + AELog.debug( e ); return EXCEPTIONAL_VERSION; } diff --git a/src/main/java/appeng/services/version/github/ReleaseFetcher.java b/src/main/java/appeng/services/version/github/ReleaseFetcher.java index 2d332982..30a337d5 100644 --- a/src/main/java/appeng/services/version/github/ReleaseFetcher.java +++ b/src/main/java/appeng/services/version/github/ReleaseFetcher.java @@ -75,15 +75,15 @@ public final class ReleaseFetcher } catch( final VersionCheckerException e ) { - AELog.error( e ); + AELog.debug( e ); } catch( final MalformedURLException e ) { - AELog.error( e ); + AELog.debug( e ); } catch( final IOException e ) { - AELog.error( e ); + AELog.debug( e ); } return EXCEPTIONAL_RELEASE; diff --git a/src/main/java/appeng/spatial/CachedPlane.java b/src/main/java/appeng/spatial/CachedPlane.java index bf1c63ee..76a46394 100644 --- a/src/main/java/appeng/spatial/CachedPlane.java +++ b/src/main/java/appeng/spatial/CachedPlane.java @@ -181,7 +181,7 @@ public class CachedPlane } catch( final Exception e ) { - AELog.error( e ); + AELog.debug( e ); } } } @@ -299,7 +299,7 @@ public class CachedPlane } catch( final Throwable e ) { - AELog.error( e ); + AELog.debug( e ); final BlockPos pos = new BlockPos( x, y, z ); @@ -325,7 +325,7 @@ public class CachedPlane } catch( final Throwable e ) { - AELog.error( e ); + AELog.debug( e ); } } diff --git a/src/main/java/appeng/tile/AEBaseTile.java b/src/main/java/appeng/tile/AEBaseTile.java index 3e654d1c..596f7183 100644 --- a/src/main/java/appeng/tile/AEBaseTile.java +++ b/src/main/java/appeng/tile/AEBaseTile.java @@ -206,7 +206,7 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, } catch( final Throwable t ) { - AELog.error( t ); + AELog.debug( t ); } stream.capacity( stream.readableBytes() ); @@ -280,7 +280,7 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, } catch( final Throwable t ) { - AELog.error( t ); + AELog.debug( t ); } return output; @@ -320,7 +320,7 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile, } catch( final Throwable t ) { - AELog.error( t ); + AELog.debug( t ); } } diff --git a/src/main/java/appeng/tile/inventory/AppEngInternalAEInventory.java b/src/main/java/appeng/tile/inventory/AppEngInternalAEInventory.java index 47ed591f..78a81e8d 100644 --- a/src/main/java/appeng/tile/inventory/AppEngInternalAEInventory.java +++ b/src/main/java/appeng/tile/inventory/AppEngInternalAEInventory.java @@ -126,7 +126,7 @@ public class AppEngInternalAEInventory implements IInventory, Iterable } catch( final Exception e ) { - AELog.error( e ); + AELog.debug( e ); } } } diff --git a/src/main/java/appeng/util/ClassInstantiation.java b/src/main/java/appeng/util/ClassInstantiation.java index a9589327..583212a9 100644 --- a/src/main/java/appeng/util/ClassInstantiation.java +++ b/src/main/java/appeng/util/ClassInstantiation.java @@ -113,7 +113,7 @@ public class ClassInstantiation } catch( final Throwable t ) { - AELog.error( t ); + AELog.debug( t ); } } } diff --git a/src/main/java/appeng/util/ConfigManager.java b/src/main/java/appeng/util/ConfigManager.java index 82c57407..64c28487 100644 --- a/src/main/java/appeng/util/ConfigManager.java +++ b/src/main/java/appeng/util/ConfigManager.java @@ -125,7 +125,7 @@ public final class ConfigManager implements IConfigManager } catch( final IllegalArgumentException e ) { - AELog.error( e ); + AELog.debug( e ); } } } diff --git a/src/main/java/appeng/util/Platform.java b/src/main/java/appeng/util/Platform.java index 4b69e37f..4c8f129c 100644 --- a/src/main/java/appeng/util/Platform.java +++ b/src/main/java/appeng/util/Platform.java @@ -594,8 +594,8 @@ public class Platform } catch( final Throwable z ) { - AELog.error( t ); - AELog.error( z ); + AELog.debug( t ); + AELog.debug( z ); } } } @@ -607,7 +607,7 @@ public class Platform } catch( final Throwable t ) { - AELog.error( t ); + AELog.debug( t ); } return new ArrayList(); @@ -2149,7 +2149,7 @@ public class Platform } catch( final Throwable t ) { - AELog.error( t ); + AELog.debug( t ); } }