From d5dfc31210391b5c973a5a86dff3380ff60eb3d4 Mon Sep 17 00:00:00 2001 From: yueh Date: Wed, 16 Sep 2015 18:03:07 +0200 Subject: [PATCH 1/2] Rendering cleanup Replaces the reflexive instantiation of the Renderes with a factory method. Some optimizations to the renderers to no longer push the whole OpenGL state to the stack. General cleanup of duplicate code, etc --- src/main/java/appeng/block/AEBaseBlock.java | 27 +++--- .../block/crafting/BlockCraftingMonitor.java | 6 +- .../block/crafting/BlockCraftingUnit.java | 6 +- .../crafting/BlockMolecularAssembler.java | 5 +- .../appeng/block/grindstone/BlockCrank.java | 9 +- .../java/appeng/block/misc/BlockCharger.java | 6 +- .../appeng/block/misc/BlockInscriber.java | 9 +- .../appeng/block/misc/BlockInterface.java | 9 +- .../appeng/block/misc/BlockLightDetector.java | 5 +- .../java/appeng/block/misc/BlockPaint.java | 6 +- .../misc/BlockQuartzGrowthAccelerator.java | 6 +- .../appeng/block/misc/BlockQuartzTorch.java | 6 +- .../java/appeng/block/misc/BlockSecurity.java | 9 +- .../appeng/block/misc/BlockSkyCompass.java | 6 +- .../java/appeng/block/misc/BlockTinyTNT.java | 8 +- .../block/networking/BlockCableBus.java | 6 +- .../block/networking/BlockController.java | 9 +- .../block/networking/BlockEnergyCell.java | 6 +- .../block/networking/BlockWireless.java | 9 +- .../appeng/block/qnb/BlockQuantumBase.java | 8 +- .../appeng/block/solids/BlockQuartzGlass.java | 5 +- .../java/appeng/block/solids/OreQuartz.java | 9 +- .../block/spatial/BlockMatrixFrame.java | 6 +- .../block/spatial/BlockSpatialPylon.java | 9 +- .../java/appeng/block/storage/BlockChest.java | 9 +- .../java/appeng/block/storage/BlockDrive.java | 9 +- .../appeng/block/storage/BlockSkyChest.java | 6 +- .../gui/implementations/GuiCraftConfirm.java | 2 - .../gui/implementations/GuiCraftingCPU.java | 2 - .../gui/implementations/GuiNetworkStatus.java | 2 - .../client/render/AppEngRenderItem.java | 10 +++ .../appeng/client/render/BaseBlockRender.java | 22 +++-- .../appeng/client/render/BlockRenderInfo.java | 6 +- .../appeng/client/render/BusRenderHelper.java | 2 +- .../appeng/client/render/BusRenderer.java | 4 +- .../client/render/CableRenderHelper.java | 3 + .../appeng/client/render/ItemRenderer.java | 2 +- .../client/render/RenderBlocksWorkaround.java | 1 - .../client/render/SpatialSkyRender.java | 65 +++++++------- .../appeng/client/render/WorldRender.java | 3 +- .../render/blocks/RenderBlockAssembler.java | 21 +++-- .../render/blocks/RenderBlockCharger.java | 89 +++++++++++-------- .../render/blocks/RenderBlockController.java | 3 + .../render/blocks/RenderBlockCraftingCPU.java | 38 ++++---- .../blocks/RenderBlockCraftingCPUMonitor.java | 81 ++++++++--------- .../render/blocks/RenderBlockCrank.java | 5 +- .../render/blocks/RenderBlockEnergyCube.java | 1 + .../render/blocks/RenderBlockInscriber.java | 11 ++- .../render/blocks/RenderBlockPaint.java | 1 + .../blocks/RenderBlockQuartzAccelerator.java | 7 +- .../render/blocks/RenderBlockSkyChest.java | 7 +- .../render/blocks/RenderBlockSkyCompass.java | 16 ++-- .../render/blocks/RenderBlockWireless.java | 2 + .../client/render/blocks/RenderDrive.java | 9 +- .../client/render/blocks/RenderMEChest.java | 12 +-- .../client/render/blocks/RenderQNB.java | 45 ++++------ .../render/blocks/RenderQuartzGlass.java | 29 +++--- .../render/blocks/RenderQuartzTorch.java | 8 +- .../render/blocks/RenderSpatialPylon.java | 1 + .../render/blocks/RendererSecurity.java | 2 + .../client/render/effects/AssemblerFX.java | 1 + .../client/render/effects/ChargedOreFX.java | 2 + .../client/render/effects/CraftingFx.java | 1 + .../client/render/effects/LightningArcFX.java | 2 +- .../client/render/effects/LightningFX.java | 10 +-- .../items/ItemEncodedPatternRenderer.java | 4 +- .../client/render/items/PaintBallRender.java | 21 ++++- .../render/items/ToolBiometricCardRender.java | 6 +- .../items/ToolColorApplicatorRender.java | 5 +- 69 files changed, 435 insertions(+), 343 deletions(-) diff --git a/src/main/java/appeng/block/AEBaseBlock.java b/src/main/java/appeng/block/AEBaseBlock.java index 438efb88..2cb8128d 100644 --- a/src/main/java/appeng/block/AEBaseBlock.java +++ b/src/main/java/appeng/block/AEBaseBlock.java @@ -61,6 +61,7 @@ import appeng.core.features.IAEFeature; import appeng.core.features.IFeatureHandler; import appeng.helpers.AEGlassMaterial; import appeng.helpers.ICustomCollision; +import appeng.tile.AEBaseTile; import appeng.util.LookDirection; import appeng.util.Platform; @@ -132,27 +133,21 @@ public abstract class AEBaseBlock extends Block implements IAEFeature return this.renderInfo; } - try - { - final BaseBlockRender renderer = this.getRenderer().newInstance(); - this.renderInfo = new BlockRenderInfo( renderer ); + final BaseBlockRender renderer = this.getRenderer(); + this.renderInfo = new BlockRenderInfo( renderer ); - return this.renderInfo; - } - catch( final InstantiationException e ) - { - throw new IllegalStateException( "Failed to create a new instance of an illegal class " + this.getRenderer(), e ); - } - catch( final IllegalAccessException e ) - { - throw new IllegalStateException( "Failed to create a new instance of " + this.getRenderer() + " because of permissions.", e ); - } + return this.renderInfo; } + /** + * Factory method to create a new render instance. + * + * @return the newly created instance. + */ @SideOnly( Side.CLIENT ) - protected Class getRenderer() + protected BaseBlockRender getRenderer() { - return BaseBlockRender.class; + return new BaseBlockRender(); } IIcon unmappedGetIcon( final IBlockAccess w, final int x, final int y, final int z, final int s ) diff --git a/src/main/java/appeng/block/crafting/BlockCraftingMonitor.java b/src/main/java/appeng/block/crafting/BlockCraftingMonitor.java index e4a9e787..e4b8fb0f 100644 --- a/src/main/java/appeng/block/crafting/BlockCraftingMonitor.java +++ b/src/main/java/appeng/block/crafting/BlockCraftingMonitor.java @@ -32,7 +32,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import appeng.api.AEApi; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderBlockCraftingCPUMonitor; import appeng.client.texture.ExtraBlockTextures; import appeng.tile.crafting.TileCraftingMonitorTile; @@ -46,9 +45,10 @@ public class BlockCraftingMonitor extends BlockCraftingUnit } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderBlockCraftingCPUMonitor getRenderer() { - return RenderBlockCraftingCPUMonitor.class; + return new RenderBlockCraftingCPUMonitor(); } @Override diff --git a/src/main/java/appeng/block/crafting/BlockCraftingUnit.java b/src/main/java/appeng/block/crafting/BlockCraftingUnit.java index e019024f..9ce8783a 100644 --- a/src/main/java/appeng/block/crafting/BlockCraftingUnit.java +++ b/src/main/java/appeng/block/crafting/BlockCraftingUnit.java @@ -36,7 +36,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderBlockCraftingCPU; import appeng.client.texture.ExtraBlockTextures; import appeng.core.features.AEFeature; @@ -59,9 +58,10 @@ public class BlockCraftingUnit extends AEBaseTileBlock } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderBlockCraftingCPU getRenderer() { - return RenderBlockCraftingCPU.class; + return new RenderBlockCraftingCPU(); } @Override diff --git a/src/main/java/appeng/block/crafting/BlockMolecularAssembler.java b/src/main/java/appeng/block/crafting/BlockMolecularAssembler.java index 296ccf92..d80a4a7f 100644 --- a/src/main/java/appeng/block/crafting/BlockMolecularAssembler.java +++ b/src/main/java/appeng/block/crafting/BlockMolecularAssembler.java @@ -30,7 +30,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderBlockAssembler; import appeng.core.features.AEFeature; import appeng.core.sync.GuiBridge; @@ -68,9 +67,9 @@ public class BlockMolecularAssembler extends AEBaseTileBlock @Override @SideOnly( Side.CLIENT ) - public Class getRenderer() + public RenderBlockAssembler getRenderer() { - return RenderBlockAssembler.class; + return new RenderBlockAssembler(); } @Override diff --git a/src/main/java/appeng/block/grindstone/BlockCrank.java b/src/main/java/appeng/block/grindstone/BlockCrank.java index 490f5ad4..835c7556 100644 --- a/src/main/java/appeng/block/grindstone/BlockCrank.java +++ b/src/main/java/appeng/block/grindstone/BlockCrank.java @@ -31,9 +31,11 @@ import net.minecraft.world.World; import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.common.util.ForgeDirection; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import appeng.api.implementations.tiles.ICrankable; import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderBlockCrank; import appeng.core.features.AEFeature; import appeng.core.stats.Stats; @@ -56,9 +58,10 @@ public class BlockCrank extends AEBaseTileBlock } @Override - public Class getRenderer() + @SideOnly( Side.CLIENT ) + public RenderBlockCrank getRenderer() { - return RenderBlockCrank.class; + return new RenderBlockCrank(); } @Override diff --git a/src/main/java/appeng/block/misc/BlockCharger.java b/src/main/java/appeng/block/misc/BlockCharger.java index ca75c4a1..7c5dccb3 100644 --- a/src/main/java/appeng/block/misc/BlockCharger.java +++ b/src/main/java/appeng/block/misc/BlockCharger.java @@ -37,7 +37,6 @@ import cpw.mods.fml.relauncher.SideOnly; import appeng.api.AEApi; import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderBlockCharger; import appeng.client.render.effects.LightningFX; import appeng.core.AEConfig; @@ -63,9 +62,10 @@ public class BlockCharger extends AEBaseTileBlock implements ICustomCollision } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderBlockCharger getRenderer() { - return RenderBlockCharger.class; + return new RenderBlockCharger(); } @Override diff --git a/src/main/java/appeng/block/misc/BlockInscriber.java b/src/main/java/appeng/block/misc/BlockInscriber.java index 53f0537f..de6450ea 100644 --- a/src/main/java/appeng/block/misc/BlockInscriber.java +++ b/src/main/java/appeng/block/misc/BlockInscriber.java @@ -26,8 +26,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderBlockInscriber; import appeng.core.features.AEFeature; import appeng.core.sync.GuiBridge; @@ -49,9 +51,10 @@ public class BlockInscriber extends AEBaseTileBlock } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderBlockInscriber getRenderer() { - return RenderBlockInscriber.class; + return new RenderBlockInscriber(); } @Override diff --git a/src/main/java/appeng/block/misc/BlockInterface.java b/src/main/java/appeng/block/misc/BlockInterface.java index e6aaf701..f73b4070 100644 --- a/src/main/java/appeng/block/misc/BlockInterface.java +++ b/src/main/java/appeng/block/misc/BlockInterface.java @@ -26,9 +26,11 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import appeng.api.util.IOrientable; import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderBlockInterface; import appeng.core.features.AEFeature; import appeng.core.sync.GuiBridge; @@ -48,9 +50,10 @@ public class BlockInterface extends AEBaseTileBlock } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderBlockInterface getRenderer() { - return RenderBlockInterface.class; + return new RenderBlockInterface(); } @Override diff --git a/src/main/java/appeng/block/misc/BlockLightDetector.java b/src/main/java/appeng/block/misc/BlockLightDetector.java index 70874874..b09422ff 100644 --- a/src/main/java/appeng/block/misc/BlockLightDetector.java +++ b/src/main/java/appeng/block/misc/BlockLightDetector.java @@ -91,9 +91,10 @@ public class BlockLightDetector extends AEBaseTileBlock implements IOrientableBl } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderQuartzTorch getRenderer() { - return RenderQuartzTorch.class; + return new RenderQuartzTorch(); } @Override diff --git a/src/main/java/appeng/block/misc/BlockPaint.java b/src/main/java/appeng/block/misc/BlockPaint.java index a9211c76..82fdcf3a 100644 --- a/src/main/java/appeng/block/misc/BlockPaint.java +++ b/src/main/java/appeng/block/misc/BlockPaint.java @@ -37,7 +37,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderBlockPaint; import appeng.core.features.AEFeature; import appeng.tile.misc.TilePaint; @@ -59,9 +58,10 @@ public class BlockPaint extends AEBaseTileBlock } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderBlockPaint getRenderer() { - return RenderBlockPaint.class; + return new RenderBlockPaint(); } @Override diff --git a/src/main/java/appeng/block/misc/BlockQuartzGrowthAccelerator.java b/src/main/java/appeng/block/misc/BlockQuartzGrowthAccelerator.java index 36e1d08d..d2b4419a 100644 --- a/src/main/java/appeng/block/misc/BlockQuartzGrowthAccelerator.java +++ b/src/main/java/appeng/block/misc/BlockQuartzGrowthAccelerator.java @@ -33,7 +33,6 @@ import cpw.mods.fml.relauncher.SideOnly; import appeng.api.util.IOrientableBlock; import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderBlockQuartzAccelerator; import appeng.client.render.effects.LightningFX; import appeng.core.AEConfig; @@ -55,9 +54,10 @@ public class BlockQuartzGrowthAccelerator extends AEBaseTileBlock implements IOr } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderBlockQuartzAccelerator getRenderer() { - return RenderBlockQuartzAccelerator.class; + return new RenderBlockQuartzAccelerator(); } @Override diff --git a/src/main/java/appeng/block/misc/BlockQuartzTorch.java b/src/main/java/appeng/block/misc/BlockQuartzTorch.java index 8b8f6df3..7c1a3de7 100644 --- a/src/main/java/appeng/block/misc/BlockQuartzTorch.java +++ b/src/main/java/appeng/block/misc/BlockQuartzTorch.java @@ -39,7 +39,6 @@ import cpw.mods.fml.relauncher.SideOnly; import appeng.api.util.IOrientable; import appeng.api.util.IOrientableBlock; import appeng.block.AEBaseBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderQuartzTorch; import appeng.client.render.effects.LightningFX; import appeng.core.AEConfig; @@ -63,9 +62,10 @@ public class BlockQuartzTorch extends AEBaseBlock implements IOrientableBlock, I } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderQuartzTorch getRenderer() { - return RenderQuartzTorch.class; + return new RenderQuartzTorch(); } @Override diff --git a/src/main/java/appeng/block/misc/BlockSecurity.java b/src/main/java/appeng/block/misc/BlockSecurity.java index dceabff7..e43298c4 100644 --- a/src/main/java/appeng/block/misc/BlockSecurity.java +++ b/src/main/java/appeng/block/misc/BlockSecurity.java @@ -26,8 +26,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RendererSecurity; import appeng.core.features.AEFeature; import appeng.core.sync.GuiBridge; @@ -47,9 +49,10 @@ public class BlockSecurity extends AEBaseTileBlock } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RendererSecurity getRenderer() { - return RendererSecurity.class; + return new RendererSecurity(); } @Override diff --git a/src/main/java/appeng/block/misc/BlockSkyCompass.java b/src/main/java/appeng/block/misc/BlockSkyCompass.java index 535a0fd6..a42af531 100644 --- a/src/main/java/appeng/block/misc/BlockSkyCompass.java +++ b/src/main/java/appeng/block/misc/BlockSkyCompass.java @@ -37,7 +37,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderBlockSkyCompass; import appeng.core.features.AEFeature; import appeng.helpers.ICustomCollision; @@ -57,9 +56,10 @@ public class BlockSkyCompass extends AEBaseTileBlock implements ICustomCollision } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderBlockSkyCompass getRenderer() { - return RenderBlockSkyCompass.class; + return new RenderBlockSkyCompass(); } @Override diff --git a/src/main/java/appeng/block/misc/BlockTinyTNT.java b/src/main/java/appeng/block/misc/BlockTinyTNT.java index b3b7c5ab..f9b09993 100644 --- a/src/main/java/appeng/block/misc/BlockTinyTNT.java +++ b/src/main/java/appeng/block/misc/BlockTinyTNT.java @@ -40,9 +40,10 @@ import net.minecraft.world.Explosion; import net.minecraft.world.World; import cpw.mods.fml.common.registry.EntityRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import appeng.block.AEBaseBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderTinyTNT; import appeng.client.texture.FullIcon; import appeng.core.AppEng; @@ -70,9 +71,10 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderTinyTNT getRenderer() { - return RenderTinyTNT.class; + return new RenderTinyTNT(); } @Override diff --git a/src/main/java/appeng/block/networking/BlockCableBus.java b/src/main/java/appeng/block/networking/BlockCableBus.java index 5e5c657b..ebc3268f 100644 --- a/src/main/java/appeng/block/networking/BlockCableBus.java +++ b/src/main/java/appeng/block/networking/BlockCableBus.java @@ -54,7 +54,6 @@ import appeng.api.parts.PartItemStack; import appeng.api.parts.SelectedPart; import appeng.api.util.AEColor; import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.BusRenderHelper; import appeng.client.render.blocks.RendererCableBus; import appeng.client.texture.ExtraBlockTextures; @@ -414,9 +413,10 @@ public class BlockCableBus extends AEBaseTileBlock implements IRedNetConnection } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RendererCableBus getRenderer() { - return RendererCableBus.class; + return new RendererCableBus(); } @Override diff --git a/src/main/java/appeng/block/networking/BlockController.java b/src/main/java/appeng/block/networking/BlockController.java index bfea1bf0..aae4341b 100644 --- a/src/main/java/appeng/block/networking/BlockController.java +++ b/src/main/java/appeng/block/networking/BlockController.java @@ -25,8 +25,10 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.world.World; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderBlockController; import appeng.core.features.AEFeature; import appeng.tile.networking.TileController; @@ -54,8 +56,9 @@ public class BlockController extends AEBaseTileBlock } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderBlockController getRenderer() { - return RenderBlockController.class; + return new RenderBlockController(); } } diff --git a/src/main/java/appeng/block/networking/BlockEnergyCell.java b/src/main/java/appeng/block/networking/BlockEnergyCell.java index 7382d1c7..ce4d65d2 100644 --- a/src/main/java/appeng/block/networking/BlockEnergyCell.java +++ b/src/main/java/appeng/block/networking/BlockEnergyCell.java @@ -34,7 +34,6 @@ import cpw.mods.fml.relauncher.SideOnly; import appeng.block.AEBaseItemBlock; import appeng.block.AEBaseItemBlockChargeable; import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderBlockEnergyCube; import appeng.client.texture.ExtraBlockTextures; import appeng.core.features.AEFeature; @@ -55,9 +54,10 @@ public class BlockEnergyCell extends AEBaseTileBlock } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderBlockEnergyCube getRenderer() { - return RenderBlockEnergyCube.class; + return new RenderBlockEnergyCube(); } @Override diff --git a/src/main/java/appeng/block/networking/BlockWireless.java b/src/main/java/appeng/block/networking/BlockWireless.java index 2bc0b45b..dadcb0b2 100644 --- a/src/main/java/appeng/block/networking/BlockWireless.java +++ b/src/main/java/appeng/block/networking/BlockWireless.java @@ -29,8 +29,10 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderBlockWireless; import appeng.core.features.AEFeature; import appeng.core.sync.GuiBridge; @@ -54,9 +56,10 @@ public class BlockWireless extends AEBaseTileBlock implements ICustomCollision } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderBlockWireless getRenderer() { - return RenderBlockWireless.class; + return new RenderBlockWireless(); } @Override diff --git a/src/main/java/appeng/block/qnb/BlockQuantumBase.java b/src/main/java/appeng/block/qnb/BlockQuantumBase.java index 8d08d14b..3d2b631f 100644 --- a/src/main/java/appeng/block/qnb/BlockQuantumBase.java +++ b/src/main/java/appeng/block/qnb/BlockQuantumBase.java @@ -25,6 +25,9 @@ import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.world.World; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import appeng.block.AEBaseTileBlock; import appeng.client.render.blocks.RenderQNB; import appeng.core.features.AEFeature; @@ -69,9 +72,10 @@ public abstract class BlockQuantumBase extends AEBaseTileBlock implements ICusto } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderQNB getRenderer() { - return RenderQNB.class; + return new RenderQNB(); } } diff --git a/src/main/java/appeng/block/solids/BlockQuartzGlass.java b/src/main/java/appeng/block/solids/BlockQuartzGlass.java index 25417025..f09944fb 100644 --- a/src/main/java/appeng/block/solids/BlockQuartzGlass.java +++ b/src/main/java/appeng/block/solids/BlockQuartzGlass.java @@ -28,7 +28,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import appeng.block.AEBaseBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderQuartzGlass; import appeng.core.features.AEFeature; import appeng.helpers.AEGlassMaterial; @@ -46,9 +45,9 @@ public class BlockQuartzGlass extends AEBaseBlock @Override @SideOnly( Side.CLIENT ) - public Class getRenderer() + public RenderQuartzGlass getRenderer() { - return RenderQuartzGlass.class; + return new RenderQuartzGlass(); } @Override diff --git a/src/main/java/appeng/block/solids/OreQuartz.java b/src/main/java/appeng/block/solids/OreQuartz.java index 261b3217..223b3c7e 100644 --- a/src/main/java/appeng/block/solids/OreQuartz.java +++ b/src/main/java/appeng/block/solids/OreQuartz.java @@ -31,10 +31,12 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import appeng.api.AEApi; import appeng.api.exceptions.MissingDefinition; import appeng.block.AEBaseBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderQuartzOre; import appeng.core.features.AEFeature; @@ -57,9 +59,10 @@ public class OreQuartz extends AEBaseBlock } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderQuartzOre getRenderer() { - return RenderQuartzOre.class; + return new RenderQuartzOre(); } @Override diff --git a/src/main/java/appeng/block/spatial/BlockMatrixFrame.java b/src/main/java/appeng/block/spatial/BlockMatrixFrame.java index 6bbb565e..07f00b26 100644 --- a/src/main/java/appeng/block/spatial/BlockMatrixFrame.java +++ b/src/main/java/appeng/block/spatial/BlockMatrixFrame.java @@ -38,7 +38,6 @@ import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import appeng.block.AEBaseBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderNull; import appeng.core.features.AEFeature; import appeng.helpers.ICustomCollision; @@ -58,9 +57,10 @@ public class BlockMatrixFrame extends AEBaseBlock implements ICustomCollision } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderNull getRenderer() { - return RenderNull.class; + return new RenderNull(); } @Override diff --git a/src/main/java/appeng/block/spatial/BlockSpatialPylon.java b/src/main/java/appeng/block/spatial/BlockSpatialPylon.java index 4c1582aa..b0fad90a 100644 --- a/src/main/java/appeng/block/spatial/BlockSpatialPylon.java +++ b/src/main/java/appeng/block/spatial/BlockSpatialPylon.java @@ -25,8 +25,10 @@ import net.minecraft.block.Block; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderSpatialPylon; import appeng.core.features.AEFeature; import appeng.helpers.AEGlassMaterial; @@ -65,8 +67,9 @@ public class BlockSpatialPylon extends AEBaseTileBlock } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderSpatialPylon getRenderer() { - return RenderSpatialPylon.class; + return new RenderSpatialPylon(); } } diff --git a/src/main/java/appeng/block/storage/BlockChest.java b/src/main/java/appeng/block/storage/BlockChest.java index 6a8e8846..c7e5f350 100644 --- a/src/main/java/appeng/block/storage/BlockChest.java +++ b/src/main/java/appeng/block/storage/BlockChest.java @@ -27,10 +27,12 @@ import net.minecraft.item.ItemStack; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import appeng.api.AEApi; import appeng.api.storage.ICellHandler; import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderMEChest; import appeng.core.features.AEFeature; import appeng.core.localization.PlayerMessages; @@ -50,9 +52,10 @@ public class BlockChest extends AEBaseTileBlock } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderMEChest getRenderer() { - return RenderMEChest.class; + return new RenderMEChest(); } @Override diff --git a/src/main/java/appeng/block/storage/BlockDrive.java b/src/main/java/appeng/block/storage/BlockDrive.java index dce71d79..10faed7e 100644 --- a/src/main/java/appeng/block/storage/BlockDrive.java +++ b/src/main/java/appeng/block/storage/BlockDrive.java @@ -26,8 +26,10 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderDrive; import appeng.core.features.AEFeature; import appeng.core.sync.GuiBridge; @@ -46,9 +48,10 @@ public class BlockDrive extends AEBaseTileBlock } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderDrive getRenderer() { - return RenderDrive.class; + return new RenderDrive(); } @Override diff --git a/src/main/java/appeng/block/storage/BlockSkyChest.java b/src/main/java/appeng/block/storage/BlockSkyChest.java index 8fba6f70..0e87f4bb 100644 --- a/src/main/java/appeng/block/storage/BlockSkyChest.java +++ b/src/main/java/appeng/block/storage/BlockSkyChest.java @@ -43,7 +43,6 @@ import cpw.mods.fml.relauncher.SideOnly; import appeng.api.AEApi; import appeng.block.AEBaseTileBlock; -import appeng.client.render.BaseBlockRender; import appeng.client.render.blocks.RenderBlockSkyChest; import appeng.core.features.AEFeature; import appeng.core.sync.GuiBridge; @@ -83,9 +82,10 @@ public class BlockSkyChest extends AEBaseTileBlock implements ICustomCollision } @Override - protected Class getRenderer() + @SideOnly( Side.CLIENT ) + protected RenderBlockSkyChest getRenderer() { - return RenderBlockSkyChest.class; + return new RenderBlockSkyChest(); } @Override diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java b/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java index 71d2ccbf..bc34a04c 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftConfirm.java @@ -383,9 +383,7 @@ public class GuiCraftConfirm extends AEBaseGui if( this.tooltip >= 0 && dspToolTip.length() > 0 ) { - GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); this.drawTooltip( toolPosX, toolPosY + 10, 0, dspToolTip ); - GL11.glPopAttrib(); } } diff --git a/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java b/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java index c87d02ad..7d832564 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java +++ b/src/main/java/appeng/client/gui/implementations/GuiCraftingCPU.java @@ -334,9 +334,7 @@ public class GuiCraftingCPU extends AEBaseGui implements ISortSource if( this.tooltip >= 0 && dspToolTip.length() > 0 ) { - GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); this.drawTooltip( toolPosX, toolPosY + 10, 0, dspToolTip ); - GL11.glPopAttrib(); } } diff --git a/src/main/java/appeng/client/gui/implementations/GuiNetworkStatus.java b/src/main/java/appeng/client/gui/implementations/GuiNetworkStatus.java index b7cca616..d3deb2b1 100644 --- a/src/main/java/appeng/client/gui/implementations/GuiNetworkStatus.java +++ b/src/main/java/appeng/client/gui/implementations/GuiNetworkStatus.java @@ -202,9 +202,7 @@ public class GuiNetworkStatus extends AEBaseGui implements ISortSource if( this.tooltip >= 0 && toolTip.length() > 0 ) { - GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); this.drawTooltip( toolPosX, toolPosY + 10, 0, toolTip ); - GL11.glPopAttrib(); } } diff --git a/src/main/java/appeng/client/render/AppEngRenderItem.java b/src/main/java/appeng/client/render/AppEngRenderItem.java index c9177c28..7fd59886 100644 --- a/src/main/java/appeng/client/render/AppEngRenderItem.java +++ b/src/main/java/appeng/client/render/AppEngRenderItem.java @@ -67,17 +67,21 @@ public class AppEngRenderItem extends RenderItem final double health = is.getItem().getDurabilityForDisplay( is ); final int j1 = (int) Math.round( 13.0D - health * 13.0D ); final int k = (int) Math.round( 255.0D - health * 255.0D ); + GL11.glDisable( GL11.GL_LIGHTING ); GL11.glDisable( GL11.GL_DEPTH_TEST ); GL11.glDisable( GL11.GL_TEXTURE_2D ); GL11.glDisable( GL11.GL_ALPHA_TEST ); GL11.glDisable( GL11.GL_BLEND ); + final Tessellator tessellator = Tessellator.instance; final int l = 255 - k << 16 | k << 8; final int i1 = ( 255 - k ) / 4 << 16 | 16128; + this.renderQuad( tessellator, par4 + 2, par5 + 13, 13, 2, 0 ); this.renderQuad( tessellator, par4 + 2, par5 + 13, 12, 1, i1 ); this.renderQuad( tessellator, par4 + 2, par5 + 13, j1, 1, l ); + GL11.glEnable( GL11.GL_ALPHA_TEST ); GL11.glEnable( GL11.GL_TEXTURE_2D ); GL11.glEnable( GL11.GL_LIGHTING ); @@ -88,19 +92,23 @@ public class AppEngRenderItem extends RenderItem if( is.stackSize == 0 ) { final String craftLabelText = AEConfig.instance.useTerminalUseLargeFont() ? GuiText.LargeFontCraft.getLocal() : GuiText.SmallFontCraft.getLocal(); + GL11.glDisable( GL11.GL_LIGHTING ); GL11.glDisable( GL11.GL_DEPTH_TEST ); GL11.glPushMatrix(); GL11.glScaled( scaleFactor, scaleFactor, scaleFactor ); + final int X = (int) ( ( (float) par4 + offset + 16.0f - fontRenderer.getStringWidth( craftLabelText ) * scaleFactor ) * inverseScaleFactor ); final int Y = (int) ( ( (float) par5 + offset + 16.0f - 7.0f * scaleFactor ) * inverseScaleFactor ); fontRenderer.drawStringWithShadow( craftLabelText, X, Y, 16777215 ); + GL11.glPopMatrix(); GL11.glEnable( GL11.GL_LIGHTING ); GL11.glEnable( GL11.GL_DEPTH_TEST ); } final long amount = this.aeStack != null ? this.aeStack.getStackSize() : is.stackSize; + if( amount != 0 ) { final String stackSize = this.getToBeRenderedStackSize( amount ); @@ -109,9 +117,11 @@ public class AppEngRenderItem extends RenderItem GL11.glDisable( GL11.GL_DEPTH_TEST ); GL11.glPushMatrix(); GL11.glScaled( scaleFactor, scaleFactor, scaleFactor ); + final int X = (int) ( ( (float) par4 + offset + 16.0f - fontRenderer.getStringWidth( stackSize ) * scaleFactor ) * inverseScaleFactor ); final int Y = (int) ( ( (float) par5 + offset + 16.0f - 7.0f * scaleFactor ) * inverseScaleFactor ); fontRenderer.drawStringWithShadow( stackSize, X, Y, 16777215 ); + GL11.glPopMatrix(); GL11.glEnable( GL11.GL_LIGHTING ); GL11.glEnable( GL11.GL_DEPTH_TEST ); diff --git a/src/main/java/appeng/client/render/BaseBlockRender.java b/src/main/java/appeng/client/render/BaseBlockRender.java index c0522fcd..165f0468 100644 --- a/src/main/java/appeng/client/render/BaseBlockRender.java +++ b/src/main/java/appeng/client/render/BaseBlockRender.java @@ -283,8 +283,8 @@ public class BaseBlockRender public void renderInventory( final B block, final ItemStack item, final RenderBlocks renderer, final ItemRenderType type, final Object[] data ) { final Tessellator tess = Tessellator.instance; - final BlockRenderInfo info = block.getRendererInstance(); + if( info.isValid() ) { if( block.hasSubtypes() ) @@ -330,8 +330,14 @@ public class BaseBlockRender public void renderInvBlock( final EnumSet sides, final B block, final ItemStack item, final Tessellator tess, final int color, final RenderBlocks renderer ) { + if( block == null ) + { + return; + } + int meta = 0; - if( block != null && block.hasSubtypes() && item != null ) + + if( block.hasSubtypes() && item != null ) { meta = item.getItemDamage(); } @@ -400,6 +406,7 @@ public class BaseBlockRender return o; } } + return ExtraBlockTextures.getMissing(); } @@ -410,6 +417,7 @@ public class BaseBlockRender final boolean o = renderer.renderStandardBlock( block, x, y, z ); this.postRenderInWorld( renderer ); + return o; } @@ -418,6 +426,7 @@ public class BaseBlockRender final BlockRenderInfo info = block.getRendererInstance(); final IOrientable te = this.getOrientable( block, world, x, y, z ); + if( te != null ) { final ForgeDirection forward = te.getForward(); @@ -450,13 +459,7 @@ public class BaseBlockRender renderer.setRenderBounds( i / 16.0, j / 16.0, k / 16.0, l / 16.0, m / 16.0, n / 16.0 ); } - protected void renderBlockBounds( final RenderBlocks renderer, - - double minX, double minY, double minZ, - - double maxX, double maxY, double maxZ, - - final ForgeDirection x, final ForgeDirection y, final ForgeDirection z ) + protected void renderBlockBounds( final RenderBlocks renderer, double minX, double minY, double minZ, double maxX, double maxY, double maxZ, final ForgeDirection x, final ForgeDirection y, final ForgeDirection z ) { minX /= 16.0; minY /= 16.0; @@ -763,6 +766,7 @@ public class BaseBlockRender if( itemstack != null ) { final EntityItem entityitem = new EntityItem( par1EntityItemFrame.getWorldObj(), 0.0D, 0.0D, 0.0D, itemstack ); + entityitem.getEntityItem().stackSize = 1; // set all this stuff and then do shit? meh? diff --git a/src/main/java/appeng/client/render/BlockRenderInfo.java b/src/main/java/appeng/client/render/BlockRenderInfo.java index ae7555c7..13778c19 100644 --- a/src/main/java/appeng/client/render/BlockRenderInfo.java +++ b/src/main/java/appeng/client/render/BlockRenderInfo.java @@ -22,14 +22,16 @@ package appeng.client.render; import net.minecraft.util.IIcon; import net.minecraftforge.common.util.ForgeDirection; +import appeng.block.AEBaseBlock; import appeng.client.texture.FlippableIcon; import appeng.client.texture.TmpFlippableIcon; +import appeng.tile.AEBaseTile; public class BlockRenderInfo { - private final BaseBlockRender rendererInstance; + private final BaseBlockRender rendererInstance; private final TmpFlippableIcon tmpTopIcon = new TmpFlippableIcon(); private final TmpFlippableIcon tmpBottomIcon = new TmpFlippableIcon(); private final TmpFlippableIcon tmpSouthIcon = new TmpFlippableIcon(); @@ -44,7 +46,7 @@ public class BlockRenderInfo private FlippableIcon eastIcon = null; private FlippableIcon westIcon = null; - public BlockRenderInfo( final BaseBlockRender inst ) + public BlockRenderInfo( final BaseBlockRender inst ) { this.rendererInstance = inst; } diff --git a/src/main/java/appeng/client/render/BusRenderHelper.java b/src/main/java/appeng/client/render/BusRenderHelper.java index 3ae857ae..47a8cfa5 100644 --- a/src/main/java/appeng/client/render/BusRenderHelper.java +++ b/src/main/java/appeng/client/render/BusRenderHelper.java @@ -56,7 +56,7 @@ public final class BusRenderHelper implements IPartRenderHelper private final BoundBoxCalculator bbc; private final boolean noAlphaPass; - private final BaseBlockRender bbr; + private final BaseBlockRender bbr; private final Optional maybeBlock; private final Optional maybeBaseBlock; private int renderingForPass; diff --git a/src/main/java/appeng/client/render/BusRenderer.java b/src/main/java/appeng/client/render/BusRenderer.java index 9de36044..1e97de6f 100644 --- a/src/main/java/appeng/client/render/BusRenderer.java +++ b/src/main/java/appeng/client/render/BusRenderer.java @@ -74,7 +74,7 @@ public class BusRenderer implements IItemRenderer } GL11.glPushMatrix(); - GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); + GL11.glPushAttrib( GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT ); GL11.glEnable( GL11.GL_DEPTH_TEST ); GL11.glEnable( GL11.GL_TEXTURE_2D ); GL11.glEnable( GL11.GL_LIGHTING ); @@ -147,6 +147,7 @@ public class BusRenderer implements IItemRenderer else { final IPart ip = this.getRenderer( item, (IPartItem) item.getItem() ); + if( ip != null ) { if( type == ItemRenderType.ENTITY ) @@ -171,6 +172,7 @@ public class BusRenderer implements IItemRenderer final int id = ( Item.getIdFromItem( is.getItem() ) << Platform.DEF_OFFSET ) | is.getItemDamage(); IPart part = RENDER_PART.get( id ); + if( part == null ) { part = c.createPartFromItemStack( is ); diff --git a/src/main/java/appeng/client/render/CableRenderHelper.java b/src/main/java/appeng/client/render/CableRenderHelper.java index 66fdf998..c7fd8f53 100644 --- a/src/main/java/appeng/client/render/CableRenderHelper.java +++ b/src/main/java/appeng/client/render/CableRenderHelper.java @@ -85,6 +85,7 @@ public class CableRenderHelper * snag list of boxes... */ final List boxes = new ArrayList(); + for( final ForgeDirection s : ForgeDirection.values() ) { final IPart part = cableBusContainer.getPart( s ); @@ -120,6 +121,7 @@ public class CableRenderHelper for( final ForgeDirection s : ForgeDirection.VALID_DIRECTIONS ) { final IFacadePart fPart = iFacadeContainer.getFacade( s ); + if( fPart != null ) { fPart.setThinFacades( useThinFacades ); @@ -214,6 +216,7 @@ public class CableRenderHelper for( final ForgeDirection s : ForgeDirection.values() ) { final IPart part = cableBusContainer.getPart( s ); + if( part != null ) { final ForgeDirection ax; diff --git a/src/main/java/appeng/client/render/ItemRenderer.java b/src/main/java/appeng/client/render/ItemRenderer.java index 9ab42660..e79296d4 100644 --- a/src/main/java/appeng/client/render/ItemRenderer.java +++ b/src/main/java/appeng/client/render/ItemRenderer.java @@ -46,7 +46,7 @@ public class ItemRenderer implements IItemRenderer public void renderItem( final ItemRenderType type, final ItemStack item, final Object... data ) { GL11.glPushMatrix(); - GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); + GL11.glPushAttrib( GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT ); GL11.glEnable( GL11.GL_ALPHA_TEST ); GL11.glEnable( GL11.GL_DEPTH_TEST ); GL11.glEnable( GL11.GL_BLEND ); diff --git a/src/main/java/appeng/client/render/RenderBlocksWorkaround.java b/src/main/java/appeng/client/render/RenderBlocksWorkaround.java index a0849313..f359ee1a 100644 --- a/src/main/java/appeng/client/render/RenderBlocksWorkaround.java +++ b/src/main/java/appeng/client/render/RenderBlocksWorkaround.java @@ -689,7 +689,6 @@ public class RenderBlocksWorkaround extends RenderBlocks private static class LightingCache implements ISimplifiedBundle { - public final int[] aoXPos; public final int[] aoXNeg; public final int[] aoYPos; diff --git a/src/main/java/appeng/client/render/SpatialSkyRender.java b/src/main/java/appeng/client/render/SpatialSkyRender.java index f444d495..9e8bd1ec 100644 --- a/src/main/java/appeng/client/render/SpatialSkyRender.java +++ b/src/main/java/appeng/client/render/SpatialSkyRender.java @@ -55,6 +55,7 @@ public class SpatialSkyRender extends IRenderHandler public void render( final float partialTicks, final WorldClient world, final Minecraft mc ) { final long now = System.currentTimeMillis(); + if( now - this.cycle > 2000 ) { this.cycle = now; @@ -67,42 +68,37 @@ public class SpatialSkyRender extends IRenderHandler fade /= 1000; fade = 0.15f * ( 1.0f - Math.abs( ( fade - 1.0f ) * ( fade - 1.0f ) ) ); - GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); - GL11.glDisable( GL11.GL_FOG ); GL11.glDisable( GL11.GL_ALPHA_TEST ); GL11.glDisable( GL11.GL_BLEND ); GL11.glDepthMask( false ); GL11.glColor4f( 0.0f, 0.0f, 0.0f, 1.0f ); + final Tessellator tessellator = Tessellator.instance; for( int i = 0; i < 6; ++i ) { GL11.glPushMatrix(); - if( i == 1 ) + switch( i ) { - GL11.glRotatef( 90.0F, 1.0F, 0.0F, 0.0F ); - } - - if( i == 2 ) - { - GL11.glRotatef( -90.0F, 1.0F, 0.0F, 0.0F ); - } - - if( i == 3 ) - { - GL11.glRotatef( 180.0F, 1.0F, 0.0F, 0.0F ); - } - - if( i == 4 ) - { - GL11.glRotatef( 90.0F, 0.0F, 0.0F, 1.0F ); - } - - if( i == 5 ) - { - GL11.glRotatef( -90.0F, 0.0F, 0.0F, 1.0F ); + case 1: + GL11.glRotatef( 90.0F, 1.0F, 0.0F, 0.0F ); + break; + case 2: + GL11.glRotatef( -90.0F, 1.0F, 0.0F, 0.0F ); + break; + case 3: + GL11.glRotatef( 180.0F, 1.0F, 0.0F, 0.0F ); + break; + case 4: + GL11.glRotatef( 90.0F, 0.0F, 0.0F, 1.0F ); + break; + case 5: + GL11.glRotatef( -90.0F, 0.0F, 0.0F, 1.0F ); + break; + default: + break; } tessellator.startDrawingQuads(); @@ -112,30 +108,29 @@ public class SpatialSkyRender extends IRenderHandler tessellator.addVertexWithUV( 100.0D, -100.0D, 100.0D, 16.0D, 16.0D ); tessellator.addVertexWithUV( 100.0D, -100.0D, -100.0D, 16.0D, 0.0D ); tessellator.draw(); + GL11.glPopMatrix(); } - GL11.glDepthMask( true ); - if( fade > 0.0f ) { - GL11.glDisable( GL11.GL_FOG ); - GL11.glDisable( GL11.GL_ALPHA_TEST ); GL11.glEnable( GL11.GL_BLEND ); - GL11.glDepthMask( false ); - GL11.glEnable( GL11.GL_FOG ); - GL11.glDisable( GL11.GL_FOG ); - GL11.glDisable( GL11.GL_ALPHA_TEST ); GL11.glDisable( GL11.GL_TEXTURE_2D ); + OpenGlHelper.glBlendFunc( 770, 771, 1, 0 ); RenderHelper.disableStandardItemLighting(); - GL11.glDepthMask( false ); + GL11.glEnable( GL11.GL_TEXTURE_2D ); GL11.glColor4f( fade, fade, fade, 1.0f ); GL11.glCallList( this.dspList ); + + RenderHelper.enableStandardItemLighting(); } - GL11.glPopAttrib(); + GL11.glEnable( GL11.GL_FOG ); + GL11.glEnable( GL11.GL_ALPHA_TEST ); + GL11.glEnable( GL11.GL_BLEND ); + GL11.glDepthMask( true ); GL11.glColor4f( 1.0f, 1.0f, 1.0f, 1.0f ); } @@ -159,6 +154,7 @@ public class SpatialSkyRender extends IRenderHandler iX *= dist; iY *= dist; iZ *= dist; + final double x = iX * 100.0D; final double y = iY * 100.0D; final double z = iZ * 100.0D; @@ -183,6 +179,7 @@ public class SpatialSkyRender extends IRenderHandler final double d23 = d17 * d12 - d20 * d13; final double d24 = d23 * d9 - d21 * d10; final double d25 = d21 * d9 + d23 * d10; + tessellator.addVertex( x + d24, y + d22, z + d25 ); } } diff --git a/src/main/java/appeng/client/render/WorldRender.java b/src/main/java/appeng/client/render/WorldRender.java index 56f4de3d..b7e9a0f3 100644 --- a/src/main/java/appeng/client/render/WorldRender.java +++ b/src/main/java/appeng/client/render/WorldRender.java @@ -20,6 +20,7 @@ package appeng.client.render; import java.util.HashMap; +import java.util.Map; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; @@ -41,7 +42,7 @@ public final class WorldRender implements ISimpleBlockRenderingHandler { public static final WorldRender INSTANCE = new WorldRender(); - private final HashMap blockRenders = new HashMap(); + private final Map blockRenders = new HashMap(); private final int renderID = RenderingRegistry.getNextAvailableRenderId(); private final RenderBlocks renderer = new RenderBlocks(); private boolean hasError = false; diff --git a/src/main/java/appeng/client/render/blocks/RenderBlockAssembler.java b/src/main/java/appeng/client/render/blocks/RenderBlockAssembler.java index 28081f50..bc3d2902 100644 --- a/src/main/java/appeng/client/render/blocks/RenderBlockAssembler.java +++ b/src/main/java/appeng/client/render/blocks/RenderBlockAssembler.java @@ -203,42 +203,48 @@ public class RenderBlockAssembler extends BaseBlockRender= 2 ) { final int v = ( Math.abs( x ) + Math.abs( y ) + Math.abs( z ) ) % 2; + renderer.uvRotateEast = renderer.uvRotateBottom = renderer.uvRotateNorth = renderer.uvRotateSouth = renderer.uvRotateTop = renderer.uvRotateWest = 0; if( v == 0 ) @@ -140,6 +141,7 @@ public class RenderBlockController extends BaseBlockRender 15.999 ) ) { final double width = 3.0 / 16.0; + switch( a ) { case DOWN: diff --git a/src/main/java/appeng/client/render/blocks/RenderBlockCraftingCPUMonitor.java b/src/main/java/appeng/client/render/blocks/RenderBlockCraftingCPUMonitor.java index 26216926..45bb14a4 100644 --- a/src/main/java/appeng/client/render/blocks/RenderBlockCraftingCPUMonitor.java +++ b/src/main/java/appeng/client/render/blocks/RenderBlockCraftingCPUMonitor.java @@ -68,8 +68,7 @@ public class RenderBlockCraftingCPUMonitor extends RenderBlockCraftingCPU 0 ) { max--; @@ -107,50 +106,43 @@ public class RenderBlockCraftingCPUMonitor extends RenderBlockCraftingCPU { return; } - Minecraft.getMinecraft().getTextureManager().bindTexture( TextureMap.locationBlocksTexture ); RenderHelper.disableStandardItemLighting(); @@ -84,6 +83,7 @@ public class RenderBlockCrank extends BaseBlockRender GL11.glShadeModel( GL11.GL_FLAT ); } + GL11.glCullFace( GL11.GL_FRONT ); GL11.glColor4f( 1.0f, 1.0f, 1.0f, 1.0f ); this.applyTESRRotation( x, y, z, tile.getForward(), tile.getUp() ); @@ -107,6 +107,9 @@ public class RenderBlockCrank extends BaseBlockRender tess.draw(); tess.setTranslation( 0, 0, 0 ); + + GL11.glCullFace( GL11.GL_BACK ); + RenderHelper.enableStandardItemLighting(); } } diff --git a/src/main/java/appeng/client/render/blocks/RenderBlockEnergyCube.java b/src/main/java/appeng/client/render/blocks/RenderBlockEnergyCube.java index ab159fd0..8d6ea30b 100644 --- a/src/main/java/appeng/client/render/blocks/RenderBlockEnergyCube.java +++ b/src/main/java/appeng/client/render/blocks/RenderBlockEnergyCube.java @@ -67,6 +67,7 @@ public class RenderBlockEnergyCube extends BaseBlockRender { final TilePaint tp = imb.getTileEntity( world, x, y, z ); boolean out = false; + if( tp != null ) { // super.renderInWorld( imb, world, x, y, z, renderer ); diff --git a/src/main/java/appeng/client/render/blocks/RenderBlockQuartzAccelerator.java b/src/main/java/appeng/client/render/blocks/RenderBlockQuartzAccelerator.java index 7cbe4311..84de3607 100644 --- a/src/main/java/appeng/client/render/blocks/RenderBlockQuartzAccelerator.java +++ b/src/main/java/appeng/client/render/blocks/RenderBlockQuartzAccelerator.java @@ -42,17 +42,22 @@ public class RenderBlockQuartzAccelerator extends BaseBlockRender { + private static final ResourceLocation TEXTURE_SKY_COMPASS = new ResourceLocation( "appliedenergistics2", "textures/models/compass.png" ); private final ModelCompass model = new ModelCompass(); @@ -57,8 +58,8 @@ public class RenderBlockSkyCompass extends BaseBlockRender public boolean renderInWorld( final BlockDrive imb, final IBlockAccess world, final int x, final int y, final int z, final RenderBlocks renderer ) { final TileDrive sp = imb.getTileEntity( world, x, y, z ); - renderer.setRenderBounds( 0, 0, 0, 1, 1, 1 ); - final ForgeDirection up = sp.getUp(); final ForgeDirection forward = sp.getForward(); final ForgeDirection west = Platform.crossProduct( forward, up ); - final boolean result = super.renderInWorld( imb, world, x, y, z, renderer ); - final Tessellator tess = Tessellator.instance; + renderer.setRenderBounds( 0, 0, 0, 1, 1, 1 ); + final boolean result = super.renderInWorld( imb, world, x, y, z, renderer ); + + final Tessellator tess = Tessellator.instance; final IIcon ico = ExtraBlockTextures.MEStorageCellTextures.getIcon(); final int b = world.getLightBrightnessForSkyBlocks( x + forward.offsetX, y + forward.offsetY, z + forward.offsetZ, 0 ); @@ -76,6 +76,7 @@ public class RenderDrive extends BaseBlockRender for( int xx = 0; xx < 2; xx++ ) { final int stat = sp.getCellStatus( yy * 2 + ( 1 - xx ) ); + this.selectFace( renderer, west, up, forward, 2 + xx * 7, 7 + xx * 7, 1 + yy * 3, 3 + yy * 3 ); int spin = 0; diff --git a/src/main/java/appeng/client/render/blocks/RenderMEChest.java b/src/main/java/appeng/client/render/blocks/RenderMEChest.java index d6f15250..12409187 100644 --- a/src/main/java/appeng/client/render/blocks/RenderMEChest.java +++ b/src/main/java/appeng/client/render/blocks/RenderMEChest.java @@ -53,6 +53,7 @@ public class RenderMEChest extends BaseBlockRender public void renderInventory( final BlockChest block, final ItemStack is, final RenderBlocks renderer, final ItemRenderType type, final Object[] obj ) { Tessellator.instance.setBrightness( 0 ); + renderer.overrideBlockTexture = ExtraBlockTextures.getMissing(); this.renderInvBlock( EnumSet.of( ForgeDirection.SOUTH ), block, is, Tessellator.instance, 0x000000, renderer ); @@ -67,13 +68,14 @@ public class RenderMEChest extends BaseBlockRender public boolean renderInWorld( final BlockChest imb, final IBlockAccess world, final int x, final int y, final int z, final RenderBlocks renderer ) { final TileChest sp = imb.getTileEntity( world, x, y, z ); - renderer.setRenderBounds( 0, 0, 0, 1, 1, 1 ); if( sp == null ) { return false; } + renderer.setRenderBounds( 0, 0, 0, 1, 1, 1 ); + final ForgeDirection up = sp.getUp(); final ForgeDirection forward = sp.getForward(); final ForgeDirection west = Platform.crossProduct( forward, up ); @@ -97,6 +99,7 @@ public class RenderMEChest extends BaseBlockRender final int offsetU = -4; final FlippableIcon flippableIcon = new FlippableIcon( new OffsetIcon( ExtraBlockTextures.MEStorageCellTextures.getIcon(), offsetU, offsetV ) ); + if( forward == ForgeDirection.EAST && ( up == ForgeDirection.NORTH || up == ForgeDirection.SOUTH ) ) { flippableIcon.setFlip( true, false ); @@ -118,13 +121,6 @@ public class RenderMEChest extends BaseBlockRender flippableIcon.setFlip( true, false ); } - /* - * 1.7.2 - * else if ( forward == ForgeDirection.EAST && up == ForgeDirection.UP ) flippableIcon.setFlip( true, false ); - * else if ( - * forward == ForgeDirection.NORTH && up == ForgeDirection.UP ) flippableIcon.setFlip( true, false ); - */ - this.renderFace( x, y, z, imb, flippableIcon, renderer, forward ); if( stat != 0 ) diff --git a/src/main/java/appeng/client/render/blocks/RenderQNB.java b/src/main/java/appeng/client/render/blocks/RenderQNB.java index 219e7635..0a1a0180 100644 --- a/src/main/java/appeng/client/render/blocks/RenderQNB.java +++ b/src/main/java/appeng/client/render/blocks/RenderQNB.java @@ -45,14 +45,19 @@ import appeng.tile.qnb.TileQuantumBridge; public class RenderQNB extends BaseBlockRender { + private static final float DEFAULT_RENDER_MIN = 2.0f / 16.0f; + private static final float DEFAULT_RENDER_MAX = 14.0f / 16.0f; + + private static final float CORNER_POWERED_RENDER_MIN = 3.9f / 16.0f; + private static final float CORNER_POWERED_RENDER_MAX = 12.1f / 16.0f; + + private static final float CENTER_POWERED_RENDER_MIN = -0.01f / 16.0f; + private static final float CENTER_POWERED_RENDER_MAX = 16.01f / 16.0f; @Override public void renderInventory( final BlockQuantumBase block, final ItemStack item, final RenderBlocks renderer, final ItemRenderType type, final Object[] obj ) { - final float minPx = 2.0f / 16.0f; - final float maxPx = 14.0f / 16.0f; - renderer.setRenderBounds( minPx, minPx, minPx, maxPx, maxPx, maxPx ); - + renderer.setRenderBounds( DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX ); super.renderInventory( block, item, renderer, type, obj ); } @@ -60,6 +65,7 @@ public class RenderQNB extends BaseBlockRender { - private static byte[][][] offsets; + private static final byte[][][] OFFSETS = generateOffsets(); public RenderQuartzGlass() { super( false, 0 ); - if( offsets == null ) + + } + + private static byte[][][] generateOffsets() + { + final Random r = new Random( 924 ); + final byte[][][] offset = new byte[10][10][10]; + + for( int x = 0; x < 10; x++ ) { - final Random r = new Random( 924 ); - offsets = new byte[10][10][10]; - for( int x = 0; x < 10; x++ ) + for( int y = 0; y < 10; y++ ) { - for( int y = 0; y < 10; y++ ) - { - r.nextBytes( offsets[x][y] ); - } + r.nextBytes( offset[x][y] ); } } + + return offset; } @Override @@ -75,10 +80,10 @@ public class RenderQuartzGlass extends BaseBlockRender { final IOrientable te = ( (IOrientableBlock) block ).getOrientable( world, x, y, z ); - renderer.renderAllFaces = true; - float zOff = 0.0f; - float yOff = 0.0f; float xOff = 0.0f; + float yOff = 0.0f; + float zOff = 0.0f; + + renderer.renderAllFaces = true; + if( te != null ) { final ForgeDirection forward = te.getUp(); diff --git a/src/main/java/appeng/client/render/blocks/RenderSpatialPylon.java b/src/main/java/appeng/client/render/blocks/RenderSpatialPylon.java index c60c9272..5fa512bd 100644 --- a/src/main/java/appeng/client/render/blocks/RenderSpatialPylon.java +++ b/src/main/java/appeng/client/render/blocks/RenderSpatialPylon.java @@ -66,6 +66,7 @@ public class RenderSpatialPylon extends BaseBlockRender 4.0 ) { this.time -= 4.0; diff --git a/src/main/java/appeng/client/render/effects/ChargedOreFX.java b/src/main/java/appeng/client/render/effects/ChargedOreFX.java index 11344aec..bb60cdd7 100644 --- a/src/main/java/appeng/client/render/effects/ChargedOreFX.java +++ b/src/main/java/appeng/client/render/effects/ChargedOreFX.java @@ -37,10 +37,12 @@ public class ChargedOreFX extends EntityReddustFX int j1 = super.getBrightnessForRender( par1 ); j1 = Math.max( j1 >> 20, j1 >> 4 ); j1 += 3; + if( j1 > 15 ) { j1 = 15; } + return j1 << 20 | j1 << 4; } } diff --git a/src/main/java/appeng/client/render/effects/CraftingFx.java b/src/main/java/appeng/client/render/effects/CraftingFx.java index 8c5f07e7..efe01e33 100644 --- a/src/main/java/appeng/client/render/effects/CraftingFx.java +++ b/src/main/java/appeng/client/render/effects/CraftingFx.java @@ -89,6 +89,7 @@ public class CraftingFx extends EntityBreakingFX final int blkX = MathHelper.floor_double( offX ); final int blkY = MathHelper.floor_double( offY ); final int blkZ = MathHelper.floor_double( offZ ); + if( blkX == this.startBlkX && blkY == this.startBlkY && blkZ == this.startBlkZ ) { offX -= interpPosX; diff --git a/src/main/java/appeng/client/render/effects/LightningArcFX.java b/src/main/java/appeng/client/render/effects/LightningArcFX.java index 5680abfb..305127fe 100644 --- a/src/main/java/appeng/client/render/effects/LightningArcFX.java +++ b/src/main/java/appeng/client/render/effects/LightningArcFX.java @@ -51,8 +51,8 @@ public class LightningArcFX extends LightningFX final double lastDirectionX = this.rx * i; final double lastDirectionY = this.ry * i; final double lastDirectionZ = this.rz * i; - final double len = Math.sqrt( lastDirectionX * lastDirectionX + lastDirectionY * lastDirectionY + lastDirectionZ * lastDirectionZ ); + for( int s = 0; s < this.getSteps(); s++ ) { final double[][] localSteps = this.getPrecomputedSteps(); diff --git a/src/main/java/appeng/client/render/effects/LightningFX.java b/src/main/java/appeng/client/render/effects/LightningFX.java index 2f4a88a4..e4603e57 100644 --- a/src/main/java/appeng/client/render/effects/LightningFX.java +++ b/src/main/java/appeng/client/render/effects/LightningFX.java @@ -31,7 +31,6 @@ import net.minecraft.world.World; public class LightningFX extends EntityFX { - private static final Random RANDOM_GENERATOR = new Random(); private static final int STEPS = 5; @@ -62,6 +61,7 @@ public class LightningFX extends EntityFX double lastDirectionX = ( RANDOM_GENERATOR.nextDouble() - 0.5 ) * 0.9; double lastDirectionY = ( RANDOM_GENERATOR.nextDouble() - 0.5 ) * 0.9; double lastDirectionZ = ( RANDOM_GENERATOR.nextDouble() - 0.5 ) * 0.9; + for( int s = 0; s < LightningFX.STEPS; s++ ) { this.precomputedSteps[s][0] = lastDirectionX = ( lastDirectionX + ( RANDOM_GENERATOR.nextDouble() - 0.5 ) * 0.9 ) / 2.0; @@ -86,7 +86,9 @@ public class LightningFX extends EntityFX public void renderParticle( final Tessellator tess, final float l, final float rX, final float rY, final float rZ, final float rYZ, final float rXY ) { final float j = 1.0f; + tess.setColorRGBA_F( this.particleRed * j * 0.9f, this.particleGreen * j * 0.95f, this.particleBlue * j, this.particleAlpha ); + if( this.particleAge == 3 ) { this.regen(); @@ -190,10 +192,6 @@ public class LightningFX extends EntityFX } } } - /* - * GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); GL11.glDisable( GL11.GL_CULL_FACE ); tess.draw(); - * GL11.glPopAttrib(); tess.startDrawingQuads(); - */ } private void clear() @@ -210,7 +208,9 @@ public class LightningFX extends EntityFX tess.addVertexWithUV( this.verticesWithUV[0], this.verticesWithUV[1], this.verticesWithUV[2], f6, f8 ); tess.addVertexWithUV( b[0], b[1], b[2], f6, f8 ); } + this.hasData = true; + for( int x = 0; x < 3; x++ ) { this.vertices[x] = a[x]; diff --git a/src/main/java/appeng/client/render/items/ItemEncodedPatternRenderer.java b/src/main/java/appeng/client/render/items/ItemEncodedPatternRenderer.java index 1f4b367a..f5515940 100644 --- a/src/main/java/appeng/client/render/items/ItemEncodedPatternRenderer.java +++ b/src/main/java/appeng/client/render/items/ItemEncodedPatternRenderer.java @@ -45,6 +45,7 @@ public class ItemEncodedPatternRenderer implements IItemRenderer if( !this.recursive && type == IItemRenderer.ItemRenderType.INVENTORY && isShiftHeld ) { final ItemEncodedPattern iep = (ItemEncodedPattern) item.getItem(); + if( iep.getOutput( item ) != null ) { return true; @@ -66,11 +67,10 @@ public class ItemEncodedPatternRenderer implements IItemRenderer this.recursive = true; final ItemEncodedPattern iep = (ItemEncodedPattern) item.getItem(); - final ItemStack is = iep.getOutput( item ); final Minecraft mc = Minecraft.getMinecraft(); - GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); + GL11.glPushAttrib( GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT ); RenderHelper.enableGUIStandardItemLighting(); this.ri.renderItemAndEffectIntoGUI( mc.fontRenderer, mc.getTextureManager(), is, 0, 0 ); RenderHelper.disableStandardItemLighting(); diff --git a/src/main/java/appeng/client/render/items/PaintBallRender.java b/src/main/java/appeng/client/render/items/PaintBallRender.java index 6f890adf..74649427 100644 --- a/src/main/java/appeng/client/render/items/PaintBallRender.java +++ b/src/main/java/appeng/client/render/items/PaintBallRender.java @@ -50,8 +50,13 @@ public class PaintBallRender implements IItemRenderer @Override public void renderItem( final ItemRenderType type, final ItemStack item, final Object... data ) { - IIcon par2Icon = item.getIconIndex(); - if( item.getItemDamage() >= 20 ) + final IIcon par2Icon; + + if( item.getItemDamage() < 20 ) + { + par2Icon = item.getIconIndex(); + } + else { par2Icon = ExtraItemTextures.ItemPaintBallShimmer.getIcon(); } @@ -64,8 +69,8 @@ public class PaintBallRender implements IItemRenderer final ItemPaintBall ipb = (ItemPaintBall) item.getItem(); final Tessellator tessellator = Tessellator.instance; + GL11.glPushMatrix(); - GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); final AEColor col = ipb.getColor( item ); @@ -122,7 +127,15 @@ public class PaintBallRender implements IItemRenderer GL11.glColor4f( 1, 1, 1, 1.0F ); - GL11.glPopAttrib(); + if( type == ItemRenderType.INVENTORY ) + { + GL11.glDisable( GL11.GL_ALPHA_TEST ); + } + else + { + GL11.glEnable( GL11.GL_CULL_FACE ); + } + GL11.glPopMatrix(); } } diff --git a/src/main/java/appeng/client/render/items/ToolBiometricCardRender.java b/src/main/java/appeng/client/render/items/ToolBiometricCardRender.java index 65913fb6..95902c4d 100644 --- a/src/main/java/appeng/client/render/items/ToolBiometricCardRender.java +++ b/src/main/java/appeng/client/render/items/ToolBiometricCardRender.java @@ -60,8 +60,9 @@ public class ToolBiometricCardRender implements IItemRenderer final float f7 = par2Icon.getMaxV(); final Tessellator tessellator = Tessellator.instance; + GL11.glPushMatrix(); - GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); + GL11.glPushAttrib( GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT ); if( type == ItemRenderType.INVENTORY ) { @@ -96,6 +97,7 @@ public class ToolBiometricCardRender implements IItemRenderer final float v = ExtraItemTextures.White.getIcon().getInterpolatedV( 8.1 ); String username = ""; + if( item.getItem() instanceof IBiometricCard ) { final GameProfile gp = ( (IBiometricCard) item.getItem() ).getProfile( item ); @@ -119,6 +121,7 @@ public class ToolBiometricCardRender implements IItemRenderer } final float z = 0; + for( int x = 0; x < 8; x++ )// 8 { for( int y = 0; y < 6; y++ )// 6 @@ -150,6 +153,7 @@ public class ToolBiometricCardRender implements IItemRenderer tessellator.addVertexWithUV( x, y + 1, z, u, v ); } } + tessellator.draw(); GL11.glPopAttrib(); diff --git a/src/main/java/appeng/client/render/items/ToolColorApplicatorRender.java b/src/main/java/appeng/client/render/items/ToolColorApplicatorRender.java index 80b6caff..752b5b25 100644 --- a/src/main/java/appeng/client/render/items/ToolColorApplicatorRender.java +++ b/src/main/java/appeng/client/render/items/ToolColorApplicatorRender.java @@ -58,8 +58,9 @@ public class ToolColorApplicatorRender implements IItemRenderer float f7 = par2Icon.getMaxV(); final Tessellator tessellator = Tessellator.instance; + GL11.glPushMatrix(); - GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); + GL11.glPushAttrib( GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT ); if( type == ItemRenderType.INVENTORY ) { @@ -106,10 +107,12 @@ public class ToolColorApplicatorRender implements IItemRenderer final IIcon light = ExtraItemTextures.ToolColorApplicatorTip_Light.getIcon(); GL11.glScalef( 1F / 16F, 1F / 16F, 1F ); + if( type != ItemRenderType.INVENTORY ) { GL11.glTranslatef( 2, 0, 0 ); } + GL11.glDisable( GL11.GL_LIGHTING ); final AEColor col = ( (ToolColorApplicator) item.getItem() ).getActiveColor( item ); From 8b4a39085e53e6974c3ae0f04f60dae0a8791aaa Mon Sep 17 00:00:00 2001 From: yueh Date: Mon, 16 Nov 2015 11:31:02 +0100 Subject: [PATCH 2/2] Fixes #1998: Using the correct culling mode and rotation Blocks are now rendered with the correct culling mode and rotated similar to the icon itself, but slightly shifted to the left that the front texture appears larger (This applies to items following the normal minecraft rotation like furnaces) Items are also now rotated a bit differently and more in line with their item rendering as well as longer being mirror inverted. --- .../render/blocks/RenderBlockInscriber.java | 40 ++++++++----------- 1 file changed, 17 insertions(+), 23 deletions(-) diff --git a/src/main/java/appeng/client/render/blocks/RenderBlockInscriber.java b/src/main/java/appeng/client/render/blocks/RenderBlockInscriber.java index 50b470ae..cd71dad5 100644 --- a/src/main/java/appeng/client/render/blocks/RenderBlockInscriber.java +++ b/src/main/java/appeng/client/render/blocks/RenderBlockInscriber.java @@ -58,7 +58,6 @@ public class RenderBlockInscriber extends BaseBlockRender