Compare commits

...

23 Commits

Author SHA1 Message Date
yueh 04b1ca3485 Merge pull request #2050 from XFRGod/patch-7
Update hu_HU.lang
2015-12-11 22:39:14 +01:00
yueh c14f688100 Merge pull request #1997 from thatsIch/b-1995-versionchecker-config
Fixes #1995: Allows creation of version checker config file after start up
2015-12-11 22:38:54 +01:00
yueh 8bf98919e2 Merge pull request #2053 from AppliedEnergistics/revert-2032-feature-cached-networkmonitor
Revert "Changed NetworkMonitor to update its cache."
2015-12-11 22:31:46 +01:00
yueh 1862ab3562 Revert "Changed NetworkMonitor to update its cache." 2015-12-11 22:26:21 +01:00
XFRGod df6070ecbd Update hu_HU.lang
This is a language "correction"(?) and typo fixing update for the lang file and now it's 110% localized:D
2015-12-11 16:04:16 +01:00
yueh 12cf76a62f Merge pull request #1880 from yueh/feature-rendering-cleanup
Rendering cleanup
2015-12-10 16:36:01 +01:00
yueh 919faefb15 Merge pull request #2032 from yueh/feature-cached-networkmonitor
Changed NetworkMonitor to update its cache.
2015-12-10 16:34:24 +01:00
yueh 71a9687b01 Merge pull request #2045 from yueh/fix-2044
Fixes #2044: No longer uses internal exceptions
2015-12-10 16:33:25 +01:00
yueh e877eac7bb Fixes #2044: No longer uses internal exceptions
Added 3 new exception as subclass to FailedConnection to allow a more
precise handling and/or logging.
2015-12-10 16:24:40 +01:00
yueh 0696662254 Changed NetworkMonitor to update its cache.
No longer invalidates and refresh it with every single change.
This should now also ensure that updates are send exactly once per network
instead of multiple times scaling up with the amount of chained networks.
2015-12-10 16:11:30 +01:00
yueh 1aa84945eb Merge pull request #2037 from XFRGod/patch-5
Update hu_HU.lang
2015-12-07 20:40:53 +01:00
XFRGod 88f9c8ba40 Update hu_HU.lang
Okay now it's absolutely 100% done and I'm officially dead.
Onto EnderIO and Botania then!
2015-12-06 21:36:53 +01:00
yueh 0ed1054aad Merge pull request #2035 from XFRGod/patch-3
Update hu_HU.lang
2015-12-06 16:55:53 +01:00
XFRGod 11f92f6888 Update hu_HU.lang 2015-12-06 16:49:45 +01:00
yueh b0d3a6c743 Merge pull request #2022 from yueh/feature-revert-itemlist-changes
Reverts some of the changes to ItemList.
2015-12-06 14:36:45 +01:00
yueh b252d1f269 Merge pull request #2028 from yueh/fix-2027
Fixes 2027: TinyTNT not triggered by flint&steel.
2015-12-06 14:36:09 +01:00
yueh d4692128a5 Merge pull request #2031 from yueh/e-gridconnection-better-logging
Exception during GridConnection now reports the machine and side.
2015-12-06 14:35:54 +01:00
yueh 599e6f3e64 Exception during GridConnection now reports the machine and side. 2015-11-30 12:55:47 +01:00
yueh 478d400627 Fixes 2027: TinyTNT not triggered by flint&steel. 2015-11-29 18:21:05 +01:00
yueh fbfd13d163 Reverts some of the changes to ItemList.
Removes the split collection as in some rare corner cases the insertion
order is important to maintain the correct data in terms of self cleaning.

Keeps the general cleanups and split of Fluid/ItemList.

Fixes #1964
2015-11-28 11:12:31 +01:00
yueh 8b4a39085e 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.
2015-11-16 11:31:02 +01:00
yueh d5dfc31210 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
2015-11-16 10:52:20 +01:00
thatsIch 8c62e1e7a6 Fixes #1995: Allows creation of version checker config file after start up 2015-11-11 21:39:29 +01:00
80 changed files with 1039 additions and 844 deletions
@@ -0,0 +1,56 @@
/*
* The MIT License (MIT)
*
* Copyright (c) 2013 AlgorithmX2
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package appeng.api.exceptions;
import appeng.api.networking.IGridNode;
/**
* Exception occurred because of an already existing connection between the two {@link IGridNode}s
*
* Intended to signal an internal exception and not intended to be thrown by
* any 3rd party module.
*
* @author yueh
* @version rv3
* @since rv3
*/
public class ExistingConnectionException extends FailedConnection
{
private static final long serialVersionUID = 2975450379720353182L;
private static final String DEFAULT_MESSAGE = "Connection between both nodes already exists.";
public ExistingConnectionException()
{
super( DEFAULT_MESSAGE );
}
public ExistingConnectionException( String message )
{
super( message );
}
}
@@ -24,6 +24,22 @@
package appeng.api.exceptions; package appeng.api.exceptions;
import appeng.api.networking.IGridNode;
/**
* Exception indicating a failed connection between two {@link IGridNode}s.
*
* Intended to signal an internal exception and not intended to be thrown by
* any 3rd party module.
*
* See any subclass for a more specific reason.
*
* @author AlgorithmX2
* @author yueh
* @version rv3
* @since rv0
*/
public class FailedConnection extends Exception public class FailedConnection extends Exception
{ {
@@ -32,4 +48,9 @@ public class FailedConnection extends Exception
public FailedConnection() public FailedConnection()
{ {
} }
public FailedConnection( String message )
{
super( message );
}
} }
@@ -0,0 +1,53 @@
/*
* The MIT License (MIT)
*
* Copyright (c) 2013 AlgorithmX2
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package appeng.api.exceptions;
/**
* Exception due to trying to connect one or more null values.
*
* Intended to signal an internal exception and not intended to be thrown by
* any 3rd party module.
*
* @author yueh
* @version rv3
* @since rv3
*/
public class NullNodeConnectionException extends FailedConnection
{
private static final long serialVersionUID = -2143719383495321764L;
private static final String DEFAULT_MESSAGE = "Connection forged between null entities.";
public NullNodeConnectionException()
{
super( DEFAULT_MESSAGE );
}
public NullNodeConnectionException( String message )
{
super( message );
}
}
@@ -0,0 +1,52 @@
/*
* The MIT License (MIT)
*
* Copyright (c) 2013 AlgorithmX2
*
* Permission is hereby granted, free of charge, to any person obtaining a copy of
* this software and associated documentation files (the "Software"), to deal in
* the Software without restriction, including without limitation the rights to
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
* the Software, and to permit persons to whom the Software is furnished to do so,
* subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in all
* copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
package appeng.api.exceptions;
/**
* Exception due to trying to connect different security realms.
*
* Intended to signal an internal exception and not intended to be thrown by
* any 3rd party module.
*
* @author yueh
* @version rv3
* @since rv3
*/
public class SecurityConnectionException extends FailedConnection
{
private static final long serialVersionUID = 5048714900434215426L;
private static final String DEFAULT_MESSAGE = "Connection failed due to different security realms.";
public SecurityConnectionException()
{
super( DEFAULT_MESSAGE );
}
public SecurityConnectionException( String message )
{
super( message );
}
}
+11 -16
View File
@@ -61,6 +61,7 @@ import appeng.core.features.IAEFeature;
import appeng.core.features.IFeatureHandler; import appeng.core.features.IFeatureHandler;
import appeng.helpers.AEGlassMaterial; import appeng.helpers.AEGlassMaterial;
import appeng.helpers.ICustomCollision; import appeng.helpers.ICustomCollision;
import appeng.tile.AEBaseTile;
import appeng.util.LookDirection; import appeng.util.LookDirection;
import appeng.util.Platform; import appeng.util.Platform;
@@ -132,27 +133,21 @@ public abstract class AEBaseBlock extends Block implements IAEFeature
return this.renderInfo; return this.renderInfo;
} }
try final BaseBlockRender<? extends AEBaseBlock, ? extends AEBaseTile> renderer = this.getRenderer();
{ this.renderInfo = new BlockRenderInfo( renderer );
final BaseBlockRender renderer = this.getRenderer().newInstance();
this.renderInfo = new BlockRenderInfo( renderer );
return this.renderInfo; 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 );
}
} }
/**
* Factory method to create a new render instance.
*
* @return the newly created instance.
*/
@SideOnly( Side.CLIENT ) @SideOnly( Side.CLIENT )
protected Class<? extends BaseBlockRender> getRenderer() protected BaseBlockRender<? extends AEBaseBlock, ? extends AEBaseTile> getRenderer()
{ {
return BaseBlockRender.class; return new BaseBlockRender<AEBaseBlock, AEBaseTile>();
} }
IIcon unmappedGetIcon( final IBlockAccess w, final int x, final int y, final int z, final int s ) IIcon unmappedGetIcon( final IBlockAccess w, final int x, final int y, final int z, final int s )
@@ -32,7 +32,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.AEApi; import appeng.api.AEApi;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockCraftingCPUMonitor; import appeng.client.render.blocks.RenderBlockCraftingCPUMonitor;
import appeng.client.texture.ExtraBlockTextures; import appeng.client.texture.ExtraBlockTextures;
import appeng.tile.crafting.TileCraftingMonitorTile; import appeng.tile.crafting.TileCraftingMonitorTile;
@@ -46,9 +45,10 @@ public class BlockCraftingMonitor extends BlockCraftingUnit
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderBlockCraftingCPUMonitor getRenderer()
{ {
return RenderBlockCraftingCPUMonitor.class; return new RenderBlockCraftingCPUMonitor();
} }
@Override @Override
@@ -36,7 +36,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockCraftingCPU; import appeng.client.render.blocks.RenderBlockCraftingCPU;
import appeng.client.texture.ExtraBlockTextures; import appeng.client.texture.ExtraBlockTextures;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
@@ -59,9 +58,10 @@ public class BlockCraftingUnit extends AEBaseTileBlock
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderBlockCraftingCPU<? extends BlockCraftingUnit, ? extends TileCraftingTile> getRenderer()
{ {
return RenderBlockCraftingCPU.class; return new RenderBlockCraftingCPU<BlockCraftingUnit, TileCraftingTile>();
} }
@Override @Override
@@ -30,7 +30,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockAssembler; import appeng.client.render.blocks.RenderBlockAssembler;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge; import appeng.core.sync.GuiBridge;
@@ -68,9 +67,9 @@ public class BlockMolecularAssembler extends AEBaseTileBlock
@Override @Override
@SideOnly( Side.CLIENT ) @SideOnly( Side.CLIENT )
public Class<? extends BaseBlockRender> getRenderer() public RenderBlockAssembler getRenderer()
{ {
return RenderBlockAssembler.class; return new RenderBlockAssembler();
} }
@Override @Override
@@ -31,9 +31,11 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.FakePlayer; import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.common.util.ForgeDirection; 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.api.implementations.tiles.ICrankable;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockCrank; import appeng.client.render.blocks.RenderBlockCrank;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.core.stats.Stats; import appeng.core.stats.Stats;
@@ -56,9 +58,10 @@ public class BlockCrank extends AEBaseTileBlock
} }
@Override @Override
public Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
public RenderBlockCrank getRenderer()
{ {
return RenderBlockCrank.class; return new RenderBlockCrank();
} }
@Override @Override
@@ -37,7 +37,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.AEApi; import appeng.api.AEApi;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockCharger; import appeng.client.render.blocks.RenderBlockCharger;
import appeng.client.render.effects.LightningFX; import appeng.client.render.effects.LightningFX;
import appeng.core.AEConfig; import appeng.core.AEConfig;
@@ -63,9 +62,10 @@ public class BlockCharger extends AEBaseTileBlock implements ICustomCollision
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderBlockCharger getRenderer()
{ {
return RenderBlockCharger.class; return new RenderBlockCharger();
} }
@Override @Override
@@ -26,8 +26,10 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockInscriber; import appeng.client.render.blocks.RenderBlockInscriber;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge; import appeng.core.sync.GuiBridge;
@@ -49,9 +51,10 @@ public class BlockInscriber extends AEBaseTileBlock
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderBlockInscriber getRenderer()
{ {
return RenderBlockInscriber.class; return new RenderBlockInscriber();
} }
@Override @Override
@@ -26,9 +26,11 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; 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.api.util.IOrientable;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockInterface; import appeng.client.render.blocks.RenderBlockInterface;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge; import appeng.core.sync.GuiBridge;
@@ -48,9 +50,10 @@ public class BlockInterface extends AEBaseTileBlock
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderBlockInterface getRenderer()
{ {
return RenderBlockInterface.class; return new RenderBlockInterface();
} }
@Override @Override
@@ -91,9 +91,10 @@ public class BlockLightDetector extends AEBaseTileBlock implements IOrientableBl
} }
@Override @Override
protected Class<? extends RenderQuartzTorch> getRenderer() @SideOnly( Side.CLIENT )
protected RenderQuartzTorch getRenderer()
{ {
return RenderQuartzTorch.class; return new RenderQuartzTorch();
} }
@Override @Override
@@ -37,7 +37,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockPaint; import appeng.client.render.blocks.RenderBlockPaint;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.tile.misc.TilePaint; import appeng.tile.misc.TilePaint;
@@ -59,9 +58,10 @@ public class BlockPaint extends AEBaseTileBlock
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderBlockPaint getRenderer()
{ {
return RenderBlockPaint.class; return new RenderBlockPaint();
} }
@Override @Override
@@ -33,7 +33,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.util.IOrientableBlock; import appeng.api.util.IOrientableBlock;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockQuartzAccelerator; import appeng.client.render.blocks.RenderBlockQuartzAccelerator;
import appeng.client.render.effects.LightningFX; import appeng.client.render.effects.LightningFX;
import appeng.core.AEConfig; import appeng.core.AEConfig;
@@ -55,9 +54,10 @@ public class BlockQuartzGrowthAccelerator extends AEBaseTileBlock implements IOr
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderBlockQuartzAccelerator getRenderer()
{ {
return RenderBlockQuartzAccelerator.class; return new RenderBlockQuartzAccelerator();
} }
@Override @Override
@@ -39,7 +39,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.util.IOrientable; import appeng.api.util.IOrientable;
import appeng.api.util.IOrientableBlock; import appeng.api.util.IOrientableBlock;
import appeng.block.AEBaseBlock; import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderQuartzTorch; import appeng.client.render.blocks.RenderQuartzTorch;
import appeng.client.render.effects.LightningFX; import appeng.client.render.effects.LightningFX;
import appeng.core.AEConfig; import appeng.core.AEConfig;
@@ -63,9 +62,10 @@ public class BlockQuartzTorch extends AEBaseBlock implements IOrientableBlock, I
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderQuartzTorch getRenderer()
{ {
return RenderQuartzTorch.class; return new RenderQuartzTorch();
} }
@Override @Override
@@ -26,8 +26,10 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RendererSecurity; import appeng.client.render.blocks.RendererSecurity;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge; import appeng.core.sync.GuiBridge;
@@ -47,9 +49,10 @@ public class BlockSecurity extends AEBaseTileBlock
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RendererSecurity getRenderer()
{ {
return RendererSecurity.class; return new RendererSecurity();
} }
@Override @Override
@@ -37,7 +37,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockSkyCompass; import appeng.client.render.blocks.RenderBlockSkyCompass;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.helpers.ICustomCollision; import appeng.helpers.ICustomCollision;
@@ -57,9 +56,10 @@ public class BlockSkyCompass extends AEBaseTileBlock implements ICustomCollision
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderBlockSkyCompass getRenderer()
{ {
return RenderBlockSkyCompass.class; return new RenderBlockSkyCompass();
} }
@Override @Override
@@ -40,9 +40,10 @@ import net.minecraft.world.Explosion;
import net.minecraft.world.World; import net.minecraft.world.World;
import cpw.mods.fml.common.registry.EntityRegistry; 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.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderTinyTNT; import appeng.client.render.blocks.RenderTinyTNT;
import appeng.client.texture.FullIcon; import appeng.client.texture.FullIcon;
import appeng.core.AppEng; import appeng.core.AppEng;
@@ -70,9 +71,10 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderTinyTNT getRenderer()
{ {
return RenderTinyTNT.class; return new RenderTinyTNT();
} }
@Override @Override
@@ -89,19 +91,18 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision
} }
@Override @Override
public boolean onActivated( final World w, final int x, final int y, final int z, final EntityPlayer player, final int side, final float hitX, final float hitY, final float hitZ ) public boolean onBlockActivated( World w, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ )
{ {
if( player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == Items.flint_and_steel ) if( player.getCurrentEquippedItem() != null && player.getCurrentEquippedItem().getItem() == Items.flint_and_steel )
{ {
this.startFuse( w, x, y, z, player ); this.startFuse( w, x, y, z, player );
w.setBlockToAir( x, y, z ); w.setBlockToAir( x, y, z );
player.getCurrentEquippedItem().damageItem( 1, player ); player.getCurrentEquippedItem().damageItem( 1, player );
return true; return true;
} }
else
{ return super.onBlockActivated( w, x, y, z, player, side, hitX, hitY, hitZ );
return super.onActivated( w, x, y, z, player, side, hitX, hitY, hitZ );
}
} }
@Override @Override
@@ -110,16 +111,6 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision
// no images required. // no images required.
} }
public void startFuse( final World w, final int x, final int y, final int z, final EntityLivingBase igniter )
{
if( !w.isRemote )
{
final EntityTinyTNTPrimed primedTinyTNTEntity = new EntityTinyTNTPrimed( w, x + 0.5F, y + 0.5F, z + 0.5F, igniter );
w.spawnEntityInWorld( primedTinyTNTEntity );
w.playSoundAtEntity( primedTinyTNTEntity, "game.tnt.primed", 1.0F, 1.0F );
}
}
@Override @Override
public void onBlockAdded( final World w, final int x, final int y, final int z ) public void onBlockAdded( final World w, final int x, final int y, final int z )
{ {
@@ -185,4 +176,14 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision
{ {
out.add( AxisAlignedBB.getBoundingBox( 0.25, 0, 0.25, 0.75, 0.5, 0.75 ) ); out.add( AxisAlignedBB.getBoundingBox( 0.25, 0, 0.25, 0.75, 0.5, 0.75 ) );
} }
public void startFuse( final World w, final int x, final int y, final int z, final EntityLivingBase igniter )
{
if( !w.isRemote )
{
final EntityTinyTNTPrimed primedTinyTNTEntity = new EntityTinyTNTPrimed( w, x + 0.5F, y + 0.5F, z + 0.5F, igniter );
w.spawnEntityInWorld( primedTinyTNTEntity );
w.playSoundAtEntity( primedTinyTNTEntity, "game.tnt.primed", 1.0F, 1.0F );
}
}
} }
@@ -54,7 +54,6 @@ import appeng.api.parts.PartItemStack;
import appeng.api.parts.SelectedPart; import appeng.api.parts.SelectedPart;
import appeng.api.util.AEColor; import appeng.api.util.AEColor;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.BusRenderHelper; import appeng.client.render.BusRenderHelper;
import appeng.client.render.blocks.RendererCableBus; import appeng.client.render.blocks.RendererCableBus;
import appeng.client.texture.ExtraBlockTextures; import appeng.client.texture.ExtraBlockTextures;
@@ -414,9 +413,10 @@ public class BlockCableBus extends AEBaseTileBlock implements IRedNetConnection
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RendererCableBus getRenderer()
{ {
return RendererCableBus.class; return new RendererCableBus();
} }
@Override @Override
@@ -25,8 +25,10 @@ import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.world.World; import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockController; import appeng.client.render.blocks.RenderBlockController;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.tile.networking.TileController; import appeng.tile.networking.TileController;
@@ -54,8 +56,9 @@ public class BlockController extends AEBaseTileBlock
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderBlockController getRenderer()
{ {
return RenderBlockController.class; return new RenderBlockController();
} }
} }
@@ -34,7 +34,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseItemBlock; import appeng.block.AEBaseItemBlock;
import appeng.block.AEBaseItemBlockChargeable; import appeng.block.AEBaseItemBlockChargeable;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockEnergyCube; import appeng.client.render.blocks.RenderBlockEnergyCube;
import appeng.client.texture.ExtraBlockTextures; import appeng.client.texture.ExtraBlockTextures;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
@@ -55,9 +54,10 @@ public class BlockEnergyCell extends AEBaseTileBlock
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderBlockEnergyCube getRenderer()
{ {
return RenderBlockEnergyCube.class; return new RenderBlockEnergyCube();
} }
@Override @Override
@@ -29,8 +29,10 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockWireless; import appeng.client.render.blocks.RenderBlockWireless;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge; import appeng.core.sync.GuiBridge;
@@ -54,9 +56,10 @@ public class BlockWireless extends AEBaseTileBlock implements ICustomCollision
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderBlockWireless getRenderer()
{ {
return RenderBlockWireless.class; return new RenderBlockWireless();
} }
@Override @Override
@@ -25,6 +25,9 @@ import net.minecraft.block.Block;
import net.minecraft.block.material.Material; import net.minecraft.block.material.Material;
import net.minecraft.world.World; import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.blocks.RenderQNB; import appeng.client.render.blocks.RenderQNB;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
@@ -69,9 +72,10 @@ public abstract class BlockQuantumBase extends AEBaseTileBlock implements ICusto
} }
@Override @Override
protected Class<? extends RenderQNB> getRenderer() @SideOnly( Side.CLIENT )
protected RenderQNB getRenderer()
{ {
return RenderQNB.class; return new RenderQNB();
} }
} }
@@ -28,7 +28,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseBlock; import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderQuartzGlass; import appeng.client.render.blocks.RenderQuartzGlass;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.helpers.AEGlassMaterial; import appeng.helpers.AEGlassMaterial;
@@ -46,9 +45,9 @@ public class BlockQuartzGlass extends AEBaseBlock
@Override @Override
@SideOnly( Side.CLIENT ) @SideOnly( Side.CLIENT )
public Class<? extends BaseBlockRender> getRenderer() public RenderQuartzGlass getRenderer()
{ {
return RenderQuartzGlass.class; return new RenderQuartzGlass();
} }
@Override @Override
@@ -31,10 +31,12 @@ import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.AEApi; import appeng.api.AEApi;
import appeng.api.exceptions.MissingDefinition; import appeng.api.exceptions.MissingDefinition;
import appeng.block.AEBaseBlock; import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderQuartzOre; import appeng.client.render.blocks.RenderQuartzOre;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
@@ -57,9 +59,10 @@ public class OreQuartz extends AEBaseBlock
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderQuartzOre getRenderer()
{ {
return RenderQuartzOre.class; return new RenderQuartzOre();
} }
@Override @Override
@@ -38,7 +38,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly; import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseBlock; import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderNull; import appeng.client.render.blocks.RenderNull;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.helpers.ICustomCollision; import appeng.helpers.ICustomCollision;
@@ -58,9 +57,10 @@ public class BlockMatrixFrame extends AEBaseBlock implements ICustomCollision
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderNull getRenderer()
{ {
return RenderNull.class; return new RenderNull();
} }
@Override @Override
@@ -25,8 +25,10 @@ import net.minecraft.block.Block;
import net.minecraft.world.IBlockAccess; import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World; import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderSpatialPylon; import appeng.client.render.blocks.RenderSpatialPylon;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.helpers.AEGlassMaterial; import appeng.helpers.AEGlassMaterial;
@@ -65,8 +67,9 @@ public class BlockSpatialPylon extends AEBaseTileBlock
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderSpatialPylon getRenderer()
{ {
return RenderSpatialPylon.class; return new RenderSpatialPylon();
} }
} }
@@ -27,10 +27,12 @@ import net.minecraft.item.ItemStack;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; 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.AEApi;
import appeng.api.storage.ICellHandler; import appeng.api.storage.ICellHandler;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderMEChest; import appeng.client.render.blocks.RenderMEChest;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.core.localization.PlayerMessages; import appeng.core.localization.PlayerMessages;
@@ -50,9 +52,10 @@ public class BlockChest extends AEBaseTileBlock
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderMEChest getRenderer()
{ {
return RenderMEChest.class; return new RenderMEChest();
} }
@Override @Override
@@ -26,8 +26,10 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World; import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderDrive; import appeng.client.render.blocks.RenderDrive;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge; import appeng.core.sync.GuiBridge;
@@ -46,9 +48,10 @@ public class BlockDrive extends AEBaseTileBlock
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderDrive getRenderer()
{ {
return RenderDrive.class; return new RenderDrive();
} }
@Override @Override
@@ -43,7 +43,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.AEApi; import appeng.api.AEApi;
import appeng.block.AEBaseTileBlock; import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockSkyChest; import appeng.client.render.blocks.RenderBlockSkyChest;
import appeng.core.features.AEFeature; import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge; import appeng.core.sync.GuiBridge;
@@ -83,9 +82,10 @@ public class BlockSkyChest extends AEBaseTileBlock implements ICustomCollision
} }
@Override @Override
protected Class<? extends BaseBlockRender> getRenderer() @SideOnly( Side.CLIENT )
protected RenderBlockSkyChest getRenderer()
{ {
return RenderBlockSkyChest.class; return new RenderBlockSkyChest();
} }
@Override @Override
@@ -383,9 +383,7 @@ public class GuiCraftConfirm extends AEBaseGui
if( this.tooltip >= 0 && dspToolTip.length() > 0 ) if( this.tooltip >= 0 && dspToolTip.length() > 0 )
{ {
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
this.drawTooltip( toolPosX, toolPosY + 10, 0, dspToolTip ); this.drawTooltip( toolPosX, toolPosY + 10, 0, dspToolTip );
GL11.glPopAttrib();
} }
} }
@@ -334,9 +334,7 @@ public class GuiCraftingCPU extends AEBaseGui implements ISortSource
if( this.tooltip >= 0 && dspToolTip.length() > 0 ) if( this.tooltip >= 0 && dspToolTip.length() > 0 )
{ {
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
this.drawTooltip( toolPosX, toolPosY + 10, 0, dspToolTip ); this.drawTooltip( toolPosX, toolPosY + 10, 0, dspToolTip );
GL11.glPopAttrib();
} }
} }
@@ -202,9 +202,7 @@ public class GuiNetworkStatus extends AEBaseGui implements ISortSource
if( this.tooltip >= 0 && toolTip.length() > 0 ) if( this.tooltip >= 0 && toolTip.length() > 0 )
{ {
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
this.drawTooltip( toolPosX, toolPosY + 10, 0, toolTip ); this.drawTooltip( toolPosX, toolPosY + 10, 0, toolTip );
GL11.glPopAttrib();
} }
} }
@@ -67,17 +67,21 @@ public class AppEngRenderItem extends RenderItem
final double health = is.getItem().getDurabilityForDisplay( is ); final double health = is.getItem().getDurabilityForDisplay( is );
final int j1 = (int) Math.round( 13.0D - health * 13.0D ); final int j1 = (int) Math.round( 13.0D - health * 13.0D );
final int k = (int) Math.round( 255.0D - health * 255.0D ); final int k = (int) Math.round( 255.0D - health * 255.0D );
GL11.glDisable( GL11.GL_LIGHTING ); GL11.glDisable( GL11.GL_LIGHTING );
GL11.glDisable( GL11.GL_DEPTH_TEST ); GL11.glDisable( GL11.GL_DEPTH_TEST );
GL11.glDisable( GL11.GL_TEXTURE_2D ); GL11.glDisable( GL11.GL_TEXTURE_2D );
GL11.glDisable( GL11.GL_ALPHA_TEST ); GL11.glDisable( GL11.GL_ALPHA_TEST );
GL11.glDisable( GL11.GL_BLEND ); GL11.glDisable( GL11.GL_BLEND );
final Tessellator tessellator = Tessellator.instance; final Tessellator tessellator = Tessellator.instance;
final int l = 255 - k << 16 | k << 8; final int l = 255 - k << 16 | k << 8;
final int i1 = ( 255 - k ) / 4 << 16 | 16128; 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, 13, 2, 0 );
this.renderQuad( tessellator, par4 + 2, par5 + 13, 12, 1, i1 ); this.renderQuad( tessellator, par4 + 2, par5 + 13, 12, 1, i1 );
this.renderQuad( tessellator, par4 + 2, par5 + 13, j1, 1, l ); this.renderQuad( tessellator, par4 + 2, par5 + 13, j1, 1, l );
GL11.glEnable( GL11.GL_ALPHA_TEST ); GL11.glEnable( GL11.GL_ALPHA_TEST );
GL11.glEnable( GL11.GL_TEXTURE_2D ); GL11.glEnable( GL11.GL_TEXTURE_2D );
GL11.glEnable( GL11.GL_LIGHTING ); GL11.glEnable( GL11.GL_LIGHTING );
@@ -88,19 +92,23 @@ public class AppEngRenderItem extends RenderItem
if( is.stackSize == 0 ) if( is.stackSize == 0 )
{ {
final String craftLabelText = AEConfig.instance.useTerminalUseLargeFont() ? GuiText.LargeFontCraft.getLocal() : GuiText.SmallFontCraft.getLocal(); final String craftLabelText = AEConfig.instance.useTerminalUseLargeFont() ? GuiText.LargeFontCraft.getLocal() : GuiText.SmallFontCraft.getLocal();
GL11.glDisable( GL11.GL_LIGHTING ); GL11.glDisable( GL11.GL_LIGHTING );
GL11.glDisable( GL11.GL_DEPTH_TEST ); GL11.glDisable( GL11.GL_DEPTH_TEST );
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glScaled( scaleFactor, scaleFactor, scaleFactor ); GL11.glScaled( scaleFactor, scaleFactor, scaleFactor );
final int X = (int) ( ( (float) par4 + offset + 16.0f - fontRenderer.getStringWidth( craftLabelText ) * scaleFactor ) * inverseScaleFactor ); 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 ); final int Y = (int) ( ( (float) par5 + offset + 16.0f - 7.0f * scaleFactor ) * inverseScaleFactor );
fontRenderer.drawStringWithShadow( craftLabelText, X, Y, 16777215 ); fontRenderer.drawStringWithShadow( craftLabelText, X, Y, 16777215 );
GL11.glPopMatrix(); GL11.glPopMatrix();
GL11.glEnable( GL11.GL_LIGHTING ); GL11.glEnable( GL11.GL_LIGHTING );
GL11.glEnable( GL11.GL_DEPTH_TEST ); GL11.glEnable( GL11.GL_DEPTH_TEST );
} }
final long amount = this.aeStack != null ? this.aeStack.getStackSize() : is.stackSize; final long amount = this.aeStack != null ? this.aeStack.getStackSize() : is.stackSize;
if( amount != 0 ) if( amount != 0 )
{ {
final String stackSize = this.getToBeRenderedStackSize( amount ); final String stackSize = this.getToBeRenderedStackSize( amount );
@@ -109,9 +117,11 @@ public class AppEngRenderItem extends RenderItem
GL11.glDisable( GL11.GL_DEPTH_TEST ); GL11.glDisable( GL11.GL_DEPTH_TEST );
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glScaled( scaleFactor, scaleFactor, scaleFactor ); GL11.glScaled( scaleFactor, scaleFactor, scaleFactor );
final int X = (int) ( ( (float) par4 + offset + 16.0f - fontRenderer.getStringWidth( stackSize ) * scaleFactor ) * inverseScaleFactor ); 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 ); final int Y = (int) ( ( (float) par5 + offset + 16.0f - 7.0f * scaleFactor ) * inverseScaleFactor );
fontRenderer.drawStringWithShadow( stackSize, X, Y, 16777215 ); fontRenderer.drawStringWithShadow( stackSize, X, Y, 16777215 );
GL11.glPopMatrix(); GL11.glPopMatrix();
GL11.glEnable( GL11.GL_LIGHTING ); GL11.glEnable( GL11.GL_LIGHTING );
GL11.glEnable( GL11.GL_DEPTH_TEST ); GL11.glEnable( GL11.GL_DEPTH_TEST );
@@ -283,8 +283,8 @@ public class BaseBlockRender<B extends AEBaseBlock, T extends AEBaseTile>
public void renderInventory( final B block, final ItemStack item, final RenderBlocks renderer, final ItemRenderType type, final Object[] data ) public void renderInventory( final B block, final ItemStack item, final RenderBlocks renderer, final ItemRenderType type, final Object[] data )
{ {
final Tessellator tess = Tessellator.instance; final Tessellator tess = Tessellator.instance;
final BlockRenderInfo info = block.getRendererInstance(); final BlockRenderInfo info = block.getRendererInstance();
if( info.isValid() ) if( info.isValid() )
{ {
if( block.hasSubtypes() ) if( block.hasSubtypes() )
@@ -330,8 +330,14 @@ public class BaseBlockRender<B extends AEBaseBlock, T extends AEBaseTile>
public void renderInvBlock( final EnumSet<ForgeDirection> sides, final B block, final ItemStack item, final Tessellator tess, final int color, final RenderBlocks renderer ) public void renderInvBlock( final EnumSet<ForgeDirection> sides, final B block, final ItemStack item, final Tessellator tess, final int color, final RenderBlocks renderer )
{ {
if( block == null )
{
return;
}
int meta = 0; int meta = 0;
if( block != null && block.hasSubtypes() && item != null )
if( block.hasSubtypes() && item != null )
{ {
meta = item.getItemDamage(); meta = item.getItemDamage();
} }
@@ -400,6 +406,7 @@ public class BaseBlockRender<B extends AEBaseBlock, T extends AEBaseTile>
return o; return o;
} }
} }
return ExtraBlockTextures.getMissing(); return ExtraBlockTextures.getMissing();
} }
@@ -410,6 +417,7 @@ public class BaseBlockRender<B extends AEBaseBlock, T extends AEBaseTile>
final boolean o = renderer.renderStandardBlock( block, x, y, z ); final boolean o = renderer.renderStandardBlock( block, x, y, z );
this.postRenderInWorld( renderer ); this.postRenderInWorld( renderer );
return o; return o;
} }
@@ -418,6 +426,7 @@ public class BaseBlockRender<B extends AEBaseBlock, T extends AEBaseTile>
final BlockRenderInfo info = block.getRendererInstance(); final BlockRenderInfo info = block.getRendererInstance();
final IOrientable te = this.getOrientable( block, world, x, y, z ); final IOrientable te = this.getOrientable( block, world, x, y, z );
if( te != null ) if( te != null )
{ {
final ForgeDirection forward = te.getForward(); final ForgeDirection forward = te.getForward();
@@ -450,13 +459,7 @@ public class BaseBlockRender<B extends AEBaseBlock, T extends AEBaseTile>
renderer.setRenderBounds( i / 16.0, j / 16.0, k / 16.0, l / 16.0, m / 16.0, n / 16.0 ); 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, 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 )
double minX, double minY, double minZ,
double maxX, double maxY, double maxZ,
final ForgeDirection x, final ForgeDirection y, final ForgeDirection z )
{ {
minX /= 16.0; minX /= 16.0;
minY /= 16.0; minY /= 16.0;
@@ -763,6 +766,7 @@ public class BaseBlockRender<B extends AEBaseBlock, T extends AEBaseTile>
if( itemstack != null ) if( itemstack != null )
{ {
final EntityItem entityitem = new EntityItem( par1EntityItemFrame.getWorldObj(), 0.0D, 0.0D, 0.0D, itemstack ); final EntityItem entityitem = new EntityItem( par1EntityItemFrame.getWorldObj(), 0.0D, 0.0D, 0.0D, itemstack );
entityitem.getEntityItem().stackSize = 1; entityitem.getEntityItem().stackSize = 1;
// set all this stuff and then do shit? meh? // set all this stuff and then do shit? meh?
@@ -22,14 +22,16 @@ package appeng.client.render;
import net.minecraft.util.IIcon; import net.minecraft.util.IIcon;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import appeng.block.AEBaseBlock;
import appeng.client.texture.FlippableIcon; import appeng.client.texture.FlippableIcon;
import appeng.client.texture.TmpFlippableIcon; import appeng.client.texture.TmpFlippableIcon;
import appeng.tile.AEBaseTile;
public class BlockRenderInfo public class BlockRenderInfo
{ {
private final BaseBlockRender rendererInstance; private final BaseBlockRender<? extends AEBaseBlock, ? extends AEBaseTile> rendererInstance;
private final TmpFlippableIcon tmpTopIcon = new TmpFlippableIcon(); private final TmpFlippableIcon tmpTopIcon = new TmpFlippableIcon();
private final TmpFlippableIcon tmpBottomIcon = new TmpFlippableIcon(); private final TmpFlippableIcon tmpBottomIcon = new TmpFlippableIcon();
private final TmpFlippableIcon tmpSouthIcon = new TmpFlippableIcon(); private final TmpFlippableIcon tmpSouthIcon = new TmpFlippableIcon();
@@ -44,7 +46,7 @@ public class BlockRenderInfo
private FlippableIcon eastIcon = null; private FlippableIcon eastIcon = null;
private FlippableIcon westIcon = null; private FlippableIcon westIcon = null;
public BlockRenderInfo( final BaseBlockRender inst ) public BlockRenderInfo( final BaseBlockRender<? extends AEBaseBlock, ? extends AEBaseTile> inst )
{ {
this.rendererInstance = inst; this.rendererInstance = inst;
} }
@@ -56,7 +56,7 @@ public final class BusRenderHelper implements IPartRenderHelper
private final BoundBoxCalculator bbc; private final BoundBoxCalculator bbc;
private final boolean noAlphaPass; private final boolean noAlphaPass;
private final BaseBlockRender bbr; private final BaseBlockRender<AEBaseBlock, AEBaseTile> bbr;
private final Optional<Block> maybeBlock; private final Optional<Block> maybeBlock;
private final Optional<AEBaseBlock> maybeBaseBlock; private final Optional<AEBaseBlock> maybeBaseBlock;
private int renderingForPass; private int renderingForPass;
@@ -74,7 +74,7 @@ public class BusRenderer implements IItemRenderer
} }
GL11.glPushMatrix(); 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_DEPTH_TEST );
GL11.glEnable( GL11.GL_TEXTURE_2D ); GL11.glEnable( GL11.GL_TEXTURE_2D );
GL11.glEnable( GL11.GL_LIGHTING ); GL11.glEnable( GL11.GL_LIGHTING );
@@ -147,6 +147,7 @@ public class BusRenderer implements IItemRenderer
else else
{ {
final IPart ip = this.getRenderer( item, (IPartItem) item.getItem() ); final IPart ip = this.getRenderer( item, (IPartItem) item.getItem() );
if( ip != null ) if( ip != null )
{ {
if( type == ItemRenderType.ENTITY ) 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(); final int id = ( Item.getIdFromItem( is.getItem() ) << Platform.DEF_OFFSET ) | is.getItemDamage();
IPart part = RENDER_PART.get( id ); IPart part = RENDER_PART.get( id );
if( part == null ) if( part == null )
{ {
part = c.createPartFromItemStack( is ); part = c.createPartFromItemStack( is );
@@ -85,6 +85,7 @@ public class CableRenderHelper
* snag list of boxes... * snag list of boxes...
*/ */
final List<AxisAlignedBB> boxes = new ArrayList<AxisAlignedBB>(); final List<AxisAlignedBB> boxes = new ArrayList<AxisAlignedBB>();
for( final ForgeDirection s : ForgeDirection.values() ) for( final ForgeDirection s : ForgeDirection.values() )
{ {
final IPart part = cableBusContainer.getPart( s ); final IPart part = cableBusContainer.getPart( s );
@@ -120,6 +121,7 @@ public class CableRenderHelper
for( final ForgeDirection s : ForgeDirection.VALID_DIRECTIONS ) for( final ForgeDirection s : ForgeDirection.VALID_DIRECTIONS )
{ {
final IFacadePart fPart = iFacadeContainer.getFacade( s ); final IFacadePart fPart = iFacadeContainer.getFacade( s );
if( fPart != null ) if( fPart != null )
{ {
fPart.setThinFacades( useThinFacades ); fPart.setThinFacades( useThinFacades );
@@ -214,6 +216,7 @@ public class CableRenderHelper
for( final ForgeDirection s : ForgeDirection.values() ) for( final ForgeDirection s : ForgeDirection.values() )
{ {
final IPart part = cableBusContainer.getPart( s ); final IPart part = cableBusContainer.getPart( s );
if( part != null ) if( part != null )
{ {
final ForgeDirection ax; final ForgeDirection ax;
@@ -46,7 +46,7 @@ public class ItemRenderer implements IItemRenderer
public void renderItem( final ItemRenderType type, final ItemStack item, final Object... data ) public void renderItem( final ItemRenderType type, final ItemStack item, final Object... data )
{ {
GL11.glPushMatrix(); 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_ALPHA_TEST );
GL11.glEnable( GL11.GL_DEPTH_TEST ); GL11.glEnable( GL11.GL_DEPTH_TEST );
GL11.glEnable( GL11.GL_BLEND ); GL11.glEnable( GL11.GL_BLEND );
@@ -689,7 +689,6 @@ public class RenderBlocksWorkaround extends RenderBlocks
private static class LightingCache implements ISimplifiedBundle private static class LightingCache implements ISimplifiedBundle
{ {
public final int[] aoXPos; public final int[] aoXPos;
public final int[] aoXNeg; public final int[] aoXNeg;
public final int[] aoYPos; public final int[] aoYPos;
@@ -55,6 +55,7 @@ public class SpatialSkyRender extends IRenderHandler
public void render( final float partialTicks, final WorldClient world, final Minecraft mc ) public void render( final float partialTicks, final WorldClient world, final Minecraft mc )
{ {
final long now = System.currentTimeMillis(); final long now = System.currentTimeMillis();
if( now - this.cycle > 2000 ) if( now - this.cycle > 2000 )
{ {
this.cycle = now; this.cycle = now;
@@ -67,42 +68,37 @@ public class SpatialSkyRender extends IRenderHandler
fade /= 1000; fade /= 1000;
fade = 0.15f * ( 1.0f - Math.abs( ( fade - 1.0f ) * ( fade - 1.0f ) ) ); 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_FOG );
GL11.glDisable( GL11.GL_ALPHA_TEST ); GL11.glDisable( GL11.GL_ALPHA_TEST );
GL11.glDisable( GL11.GL_BLEND ); GL11.glDisable( GL11.GL_BLEND );
GL11.glDepthMask( false ); GL11.glDepthMask( false );
GL11.glColor4f( 0.0f, 0.0f, 0.0f, 1.0f ); GL11.glColor4f( 0.0f, 0.0f, 0.0f, 1.0f );
final Tessellator tessellator = Tessellator.instance; final Tessellator tessellator = Tessellator.instance;
for( int i = 0; i < 6; ++i ) for( int i = 0; i < 6; ++i )
{ {
GL11.glPushMatrix(); GL11.glPushMatrix();
if( i == 1 ) switch( i )
{ {
GL11.glRotatef( 90.0F, 1.0F, 0.0F, 0.0F ); case 1:
} GL11.glRotatef( 90.0F, 1.0F, 0.0F, 0.0F );
break;
if( i == 2 ) case 2:
{ GL11.glRotatef( -90.0F, 1.0F, 0.0F, 0.0F );
GL11.glRotatef( -90.0F, 1.0F, 0.0F, 0.0F ); break;
} case 3:
GL11.glRotatef( 180.0F, 1.0F, 0.0F, 0.0F );
if( i == 3 ) break;
{ case 4:
GL11.glRotatef( 180.0F, 1.0F, 0.0F, 0.0F ); GL11.glRotatef( 90.0F, 0.0F, 0.0F, 1.0F );
} break;
case 5:
if( i == 4 ) GL11.glRotatef( -90.0F, 0.0F, 0.0F, 1.0F );
{ break;
GL11.glRotatef( 90.0F, 0.0F, 0.0F, 1.0F ); default:
} break;
if( i == 5 )
{
GL11.glRotatef( -90.0F, 0.0F, 0.0F, 1.0F );
} }
tessellator.startDrawingQuads(); 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, 16.0D );
tessellator.addVertexWithUV( 100.0D, -100.0D, -100.0D, 16.0D, 0.0D ); tessellator.addVertexWithUV( 100.0D, -100.0D, -100.0D, 16.0D, 0.0D );
tessellator.draw(); tessellator.draw();
GL11.glPopMatrix(); GL11.glPopMatrix();
} }
GL11.glDepthMask( true );
if( fade > 0.0f ) if( fade > 0.0f )
{ {
GL11.glDisable( GL11.GL_FOG );
GL11.glDisable( GL11.GL_ALPHA_TEST );
GL11.glEnable( GL11.GL_BLEND ); 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 ); GL11.glDisable( GL11.GL_TEXTURE_2D );
OpenGlHelper.glBlendFunc( 770, 771, 1, 0 ); OpenGlHelper.glBlendFunc( 770, 771, 1, 0 );
RenderHelper.disableStandardItemLighting(); RenderHelper.disableStandardItemLighting();
GL11.glDepthMask( false );
GL11.glEnable( GL11.GL_TEXTURE_2D );
GL11.glColor4f( fade, fade, fade, 1.0f ); GL11.glColor4f( fade, fade, fade, 1.0f );
GL11.glCallList( this.dspList ); 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 ); GL11.glColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
} }
@@ -159,6 +154,7 @@ public class SpatialSkyRender extends IRenderHandler
iX *= dist; iX *= dist;
iY *= dist; iY *= dist;
iZ *= dist; iZ *= dist;
final double x = iX * 100.0D; final double x = iX * 100.0D;
final double y = iY * 100.0D; final double y = iY * 100.0D;
final double z = iZ * 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 d23 = d17 * d12 - d20 * d13;
final double d24 = d23 * d9 - d21 * d10; final double d24 = d23 * d9 - d21 * d10;
final double d25 = d21 * d9 + d23 * d10; final double d25 = d21 * d9 + d23 * d10;
tessellator.addVertex( x + d24, y + d22, z + d25 ); tessellator.addVertex( x + d24, y + d22, z + d25 );
} }
} }
@@ -20,6 +20,7 @@ package appeng.client.render;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.RenderBlocks;
@@ -41,7 +42,7 @@ public final class WorldRender implements ISimpleBlockRenderingHandler
{ {
public static final WorldRender INSTANCE = new WorldRender(); public static final WorldRender INSTANCE = new WorldRender();
private final HashMap<AEBaseBlock, BaseBlockRender> blockRenders = new HashMap<AEBaseBlock, BaseBlockRender>(); private final Map<AEBaseBlock, BaseBlockRender> blockRenders = new HashMap<AEBaseBlock, BaseBlockRender>();
private final int renderID = RenderingRegistry.getNextAvailableRenderId(); private final int renderID = RenderingRegistry.getNextAvailableRenderId();
private final RenderBlocks renderer = new RenderBlocks(); private final RenderBlocks renderer = new RenderBlocks();
private boolean hasError = false; private boolean hasError = false;
@@ -203,42 +203,48 @@ public class RenderBlockAssembler extends BaseBlockRender<BlockMolecularAssemble
{ {
IIcon texture = null; IIcon texture = null;
block.getRendererInstance().setTemporaryRenderIcon( texture = this.getConnectedCable( world, x, y, z, ForgeDirection.WEST, covered ) ); texture = this.getConnectedCable( world, x, y, z, ForgeDirection.WEST, covered );
block.getRendererInstance().setTemporaryRenderIcon( texture );
if( texture != null ) if( texture != null )
{ {
renderer.setRenderBounds( 0.0D, 0.5D - thickness, 0.5D - thickness, 0.5D - thickness - pull, 0.5D + thickness, 0.5D + thickness ); renderer.setRenderBounds( 0.0D, 0.5D - thickness, 0.5D - thickness, 0.5D - thickness - pull, 0.5D + thickness, 0.5D + thickness );
renderer.renderStandardBlock( block, x, y, z ); renderer.renderStandardBlock( block, x, y, z );
} }
block.getRendererInstance().setTemporaryRenderIcon( texture = this.getConnectedCable( world, x, y, z, ForgeDirection.EAST, covered ) ); texture = this.getConnectedCable( world, x, y, z, ForgeDirection.EAST, covered );
block.getRendererInstance().setTemporaryRenderIcon( texture );
if( texture != null ) if( texture != null )
{ {
renderer.setRenderBounds( 0.5D + thickness + pull, 0.5D - thickness, 0.5D - thickness, 1.0D, 0.5D + thickness, 0.5D + thickness ); renderer.setRenderBounds( 0.5D + thickness + pull, 0.5D - thickness, 0.5D - thickness, 1.0D, 0.5D + thickness, 0.5D + thickness );
renderer.renderStandardBlock( block, x, y, z ); renderer.renderStandardBlock( block, x, y, z );
} }
block.getRendererInstance().setTemporaryRenderIcon( texture = this.getConnectedCable( world, x, y, z, ForgeDirection.NORTH, covered ) ); texture = this.getConnectedCable( world, x, y, z, ForgeDirection.NORTH, covered );
block.getRendererInstance().setTemporaryRenderIcon( texture );
if( texture != null ) if( texture != null )
{ {
renderer.setRenderBounds( 0.5D - thickness, 0.5D - thickness, 0.0D, 0.5D + thickness, 0.5D + thickness, 0.5D - thickness - pull ); renderer.setRenderBounds( 0.5D - thickness, 0.5D - thickness, 0.0D, 0.5D + thickness, 0.5D + thickness, 0.5D - thickness - pull );
renderer.renderStandardBlock( block, x, y, z ); renderer.renderStandardBlock( block, x, y, z );
} }
block.getRendererInstance().setTemporaryRenderIcon( texture = this.getConnectedCable( world, x, y, z, ForgeDirection.SOUTH, covered ) ); texture = this.getConnectedCable( world, x, y, z, ForgeDirection.SOUTH, covered );
block.getRendererInstance().setTemporaryRenderIcon( texture );
if( texture != null ) if( texture != null )
{ {
renderer.setRenderBounds( 0.5D - thickness, 0.5D - thickness, 0.5D + thickness + pull, 0.5D + thickness, 0.5D + thickness, 1.0D ); renderer.setRenderBounds( 0.5D - thickness, 0.5D - thickness, 0.5D + thickness + pull, 0.5D + thickness, 0.5D + thickness, 1.0D );
renderer.renderStandardBlock( block, x, y, z ); renderer.renderStandardBlock( block, x, y, z );
} }
block.getRendererInstance().setTemporaryRenderIcon( texture = this.getConnectedCable( world, x, y, z, ForgeDirection.DOWN, covered ) ); texture = this.getConnectedCable( world, x, y, z, ForgeDirection.DOWN, covered );
block.getRendererInstance().setTemporaryRenderIcon( texture );
if( texture != null ) if( texture != null )
{ {
renderer.setRenderBounds( 0.5D - thickness, 0.0D, 0.5D - thickness, 0.5D + thickness, 0.5D - thickness - pull, 0.5D + thickness ); renderer.setRenderBounds( 0.5D - thickness, 0.0D, 0.5D - thickness, 0.5D + thickness, 0.5D - thickness - pull, 0.5D + thickness );
renderer.renderStandardBlock( block, x, y, z ); renderer.renderStandardBlock( block, x, y, z );
} }
block.getRendererInstance().setTemporaryRenderIcon( texture = this.getConnectedCable( world, x, y, z, ForgeDirection.UP, covered ) ); texture = this.getConnectedCable( world, x, y, z, ForgeDirection.UP, covered );
block.getRendererInstance().setTemporaryRenderIcon( texture );
if( texture != null ) if( texture != null )
{ {
renderer.setRenderBounds( 0.5D - thickness, 0.5D + thickness + pull, 0.5D - thickness, 0.5D + thickness, 1.0D, 0.5D + thickness ); renderer.setRenderBounds( 0.5D - thickness, 0.5D + thickness + pull, 0.5D - thickness, 0.5D + thickness, 1.0D, 0.5D + thickness );
@@ -251,6 +257,7 @@ public class RenderBlockAssembler extends BaseBlockRender<BlockMolecularAssemble
private IIcon getConnectedCable( final IBlockAccess world, final int x, final int y, final int z, final ForgeDirection side, final boolean covered ) private IIcon getConnectedCable( final IBlockAccess world, final int x, final int y, final int z, final ForgeDirection side, final boolean covered )
{ {
final int tileYPos = y + side.offsetY; final int tileYPos = y + side.offsetY;
if( -1 < tileYPos && tileYPos < 256 ) if( -1 < tileYPos && tileYPos < 256 )
{ {
final TileEntity ne = world.getTileEntity( x + side.offsetX, tileYPos, z + side.offsetZ ); final TileEntity ne = world.getTileEntity( x + side.offsetX, tileYPos, z + side.offsetZ );
@@ -258,9 +265,11 @@ public class RenderBlockAssembler extends BaseBlockRender<BlockMolecularAssemble
{ {
final IPartHost ph = (IPartHost) ne; final IPartHost ph = (IPartHost) ne;
final IPart pcx = ph.getPart( ForgeDirection.UNKNOWN ); final IPart pcx = ph.getPart( ForgeDirection.UNKNOWN );
if( pcx instanceof PartCable ) if( pcx instanceof PartCable )
{ {
final PartCable pc = (PartCable) pcx; final PartCable pc = (PartCable) pcx;
if( pc.isConnected( side.getOpposite() ) ) if( pc.isConnected( side.getOpposite() ) )
{ {
if( covered ) if( covered )
@@ -124,48 +124,59 @@ public class RenderBlockCharger extends BaseBlockRender<BlockCharger, TileCharge
@Override @Override
public void renderTile( final BlockCharger block, final TileCharger tile, final Tessellator tess, final double x, final double y, final double z, final float f, final RenderBlocks renderer ) public void renderTile( final BlockCharger block, final TileCharger tile, final Tessellator tess, final double x, final double y, final double z, final float f, final RenderBlocks renderer )
{ {
if( tile == null )
{
return;
}
final ItemStack sis = tile.getStackInSlot( 0 ); final ItemStack sis = tile.getStackInSlot( 0 );
if( sis != null ) if( sis == null )
{ {
GL11.glPushMatrix(); return;
this.applyTESRRotation( x, y, z, tile.getForward(), tile.getUp() );
try
{
GL11.glTranslatef( 0.5f, 0.45f, 0.5f );
GL11.glScalef( 1.0f / 1.1f, 1.0f / 1.1f, 1.0f / 1.1f );
GL11.glScalef( 1.0f, 1.0f, 1.0f );
final Block blk = Block.getBlockFromItem( sis.getItem() );
if( sis.getItemSpriteNumber() == 0 && block != null && RenderBlocks.renderItemIn3d( blk.getRenderType() ) )
{
GL11.glRotatef( 25.0f, 1.0f, 0.0f, 0.0f );
GL11.glRotatef( 15.0f, 0.0f, 1.0f, 0.0f );
GL11.glRotatef( 30.0f, 0.0f, 1.0f, 0.0f );
}
// << 20 | light << 4;
final int br = tile.getWorldObj().getLightBrightnessForSkyBlocks( tile.xCoord, tile.yCoord, tile.zCoord, 0 );
final int var11 = br % 65536;
final int var12 = br / 65536;
OpenGlHelper.setLightmapTextureCoords( OpenGlHelper.lightmapTexUnit, var11, var12 );
GL11.glColor4f( 1.0F, 1.0F, 1.0F, 1.0F );
GL11.glDisable( GL11.GL_LIGHTING );
GL11.glDisable( GL12.GL_RESCALE_NORMAL );
tess.setColorOpaque_F( 1.0f, 1.0f, 1.0f );
this.doRenderItem( sis, tile );
}
catch( final Exception err )
{
AELog.error( err );
}
GL11.glPopMatrix();
} }
GL11.glPushMatrix();
this.applyTESRRotation( x, y, z, tile.getForward(), tile.getUp() );
try
{
GL11.glTranslatef( 0.5f, 0.45f, 0.5f );
GL11.glScalef( 1.0f / 1.1f, 1.0f / 1.1f, 1.0f / 1.1f );
GL11.glScalef( 1.0f, 1.0f, 1.0f );
final Block blk = Block.getBlockFromItem( sis.getItem() );
if( sis.getItemSpriteNumber() == 0 && block != null && RenderBlocks.renderItemIn3d( blk.getRenderType() ) )
{
GL11.glRotatef( 25.0f, 1.0f, 0.0f, 0.0f );
GL11.glRotatef( 15.0f, 0.0f, 1.0f, 0.0f );
GL11.glRotatef( 30.0f, 0.0f, 1.0f, 0.0f );
}
final int br = tile.getWorldObj().getLightBrightnessForSkyBlocks( tile.xCoord, tile.yCoord, tile.zCoord, 0 );
final int var11 = br % 65536;
final int var12 = br / 65536;
OpenGlHelper.setLightmapTextureCoords( OpenGlHelper.lightmapTexUnit, var11, var12 );
GL11.glColor4f( 1.0F, 1.0F, 1.0F, 1.0F );
GL11.glDisable( GL11.GL_LIGHTING );
GL11.glDisable( GL12.GL_RESCALE_NORMAL );
tess.setColorOpaque_F( 1.0f, 1.0f, 1.0f );
this.doRenderItem( sis, tile );
}
catch( final Exception err )
{
AELog.error( err );
}
finally
{
GL11.glEnable( GL12.GL_RESCALE_NORMAL );
GL11.glEnable( GL11.GL_LIGHTING );
}
GL11.glPopMatrix();
} }
} }
@@ -124,6 +124,7 @@ public class RenderBlockController extends BaseBlockRender<BlockController, Tile
else if( ( xx ? 1 : 0 ) + ( yy ? 1 : 0 ) + ( zz ? 1 : 0 ) >= 2 ) else if( ( xx ? 1 : 0 ) + ( yy ? 1 : 0 ) + ( zz ? 1 : 0 ) >= 2 )
{ {
final int v = ( Math.abs( x ) + Math.abs( y ) + Math.abs( z ) ) % 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; renderer.uvRotateEast = renderer.uvRotateBottom = renderer.uvRotateNorth = renderer.uvRotateSouth = renderer.uvRotateTop = renderer.uvRotateWest = 0;
if( v == 0 ) if( v == 0 )
@@ -140,6 +141,7 @@ public class RenderBlockController extends BaseBlockRender<BlockController, Tile
if( hasPower ) if( hasPower )
{ {
blk.getRendererInstance().setTemporaryRenderIcon( ExtraBlockTextures.BlockControllerPowered.getIcon() ); blk.getRendererInstance().setTemporaryRenderIcon( ExtraBlockTextures.BlockControllerPowered.getIcon() );
if( isConflict ) if( isConflict )
{ {
lights = ExtraBlockTextures.BlockControllerConflict; lights = ExtraBlockTextures.BlockControllerConflict;
@@ -156,6 +158,7 @@ public class RenderBlockController extends BaseBlockRender<BlockController, Tile
} }
final boolean out = renderer.renderStandardBlock( blk, x, y, z ); final boolean out = renderer.renderStandardBlock( blk, x, y, z );
if( lights != null ) if( lights != null )
{ {
Tessellator.instance.setColorOpaque_F( 1.0f, 1.0f, 1.0f ); Tessellator.instance.setColorOpaque_F( 1.0f, 1.0f, 1.0f );
@@ -57,21 +57,20 @@ public class RenderBlockCraftingCPU<B extends BlockCraftingUnit, T extends TileC
@Override @Override
public boolean renderInWorld( final B blk, final IBlockAccess w, final int x, final int y, final int z, RenderBlocks renderer ) public boolean renderInWorld( final B blk, final IBlockAccess w, final int x, final int y, final int z, RenderBlocks renderer )
{ {
boolean formed = false; final TileCraftingTile craftingTile = blk.getTileEntity( w, x, y, z );
boolean emitsLight = false;
final TileCraftingTile ct = blk.getTileEntity( w, x, y, z ); if( craftingTile == null )
if( ct != null && ct.isFormed() )
{ {
formed = true; return false;
emitsLight = ct.isPowered();
} }
final int meta = w.getBlockMetadata( x, y, z ) & 3;
final boolean formed = craftingTile.isFormed();
final boolean emitsLight = craftingTile.isPowered();
final int meta = w.getBlockMetadata( x, y, z ) & 3;
final boolean isMonitor = blk.getClass() == BlockCraftingMonitor.class; final boolean isMonitor = blk.getClass() == BlockCraftingMonitor.class;
final IIcon theIcon = blk.getIcon( ForgeDirection.SOUTH.ordinal(), meta | ( formed ? 8 : 0 ) ); final IIcon theIcon = blk.getIcon( ForgeDirection.SOUTH.ordinal(), meta | ( formed ? 8 : 0 ) );
IIcon nonForward = theIcon; IIcon nonForward = theIcon;
if( isMonitor ) if( isMonitor )
{ {
for( final Block craftingBlock : AEApi.instance().definitions().blocks().craftingUnit().maybeBlock().asSet() ) for( final Block craftingBlock : AEApi.instance().definitions().blocks().craftingUnit().maybeBlock().asSet() )
@@ -92,7 +91,7 @@ public class RenderBlockCraftingCPU<B extends BlockCraftingUnit, T extends TileC
try try
{ {
ct.setLightCache( i.useSimplifiedRendering( x, y, z, null, ct.getLightCache() ) ); craftingTile.setLightCache( i.useSimplifiedRendering( x, y, z, null, craftingTile.getLightCache() ) );
} }
catch( final Throwable ignored ) catch( final Throwable ignored )
{ {
@@ -122,13 +121,14 @@ public class RenderBlockCraftingCPU<B extends BlockCraftingUnit, T extends TileC
i.setBounds( this.fso( side, lowX, ForgeDirection.WEST ), this.fso( side, lowY, ForgeDirection.DOWN ), this.fso( side, lowZ, ForgeDirection.NORTH ), this.fso( side, highX, ForgeDirection.EAST ), this.fso( side, highY, ForgeDirection.UP ), this.fso( side, highZ, ForgeDirection.SOUTH ) ); i.setBounds( this.fso( side, lowX, ForgeDirection.WEST ), this.fso( side, lowY, ForgeDirection.DOWN ), this.fso( side, lowZ, ForgeDirection.NORTH ), this.fso( side, highX, ForgeDirection.EAST ), this.fso( side, highY, ForgeDirection.UP ), this.fso( side, highZ, ForgeDirection.SOUTH ) );
i.prepareBounds( renderer ); i.prepareBounds( renderer );
boolean LocalEmit = emitsLight; boolean localEmit = emitsLight;
if( blk instanceof BlockCraftingMonitor && ct.getForward() != side )
if( blk instanceof BlockCraftingMonitor && craftingTile.getForward() != side )
{ {
LocalEmit = false; localEmit = false;
} }
this.handleSide( blk, meta, x, y, z, i, renderer, ct.getForward() == side ? theIcon : nonForward, LocalEmit, isMonitor, side, w ); this.handleSide( blk, meta, x, y, z, i, renderer, craftingTile.getForward() == side ? theIcon : nonForward, localEmit, isMonitor, side, w );
} }
BusRenderer.INSTANCE.getRenderer().setFacade( false ); BusRenderer.INSTANCE.getRenderer().setFacade( false );
@@ -150,6 +150,7 @@ public class RenderBlockCraftingCPU<B extends BlockCraftingUnit, T extends TileC
private boolean isConnected( final IBlockAccess w, final int x, final int y, final int z, final ForgeDirection side ) private boolean isConnected( final IBlockAccess w, final int x, final int y, final int z, final ForgeDirection side )
{ {
final int tileYPos = y + side.offsetY; final int tileYPos = y + side.offsetY;
if( 0 <= tileYPos && tileYPos <= 255 ) if( 0 <= tileYPos && tileYPos <= 255 )
{ {
final TileEntity tile = w.getTileEntity( x + side.offsetX, tileYPos, z + side.offsetZ ); final TileEntity tile = w.getTileEntity( x + side.offsetX, tileYPos, z + side.offsetZ );
@@ -164,15 +165,7 @@ public class RenderBlockCraftingCPU<B extends BlockCraftingUnit, T extends TileC
private void renderCorner( final BusRenderHelper i, final RenderBlocks renderer, final IBlockAccess w, final int x, final int y, final int z, final ForgeDirection up, final ForgeDirection east, final ForgeDirection south ) private void renderCorner( final BusRenderHelper i, final RenderBlocks renderer, final IBlockAccess w, final int x, final int y, final int z, final ForgeDirection up, final ForgeDirection east, final ForgeDirection south )
{ {
if( this.isConnected( w, x, y, z, up ) ) if( this.isConnected( w, x, y, z, up ) || this.isConnected( w, x, y, z, east ) || this.isConnected( w, x, y, z, south ) )
{
return;
}
if( this.isConnected( w, x, y, z, east ) )
{
return;
}
if( this.isConnected( w, x, y, z, south ) )
{ {
return; return;
} }
@@ -303,6 +296,7 @@ public class RenderBlockCraftingCPU<B extends BlockCraftingUnit, T extends TileC
if( !( i.getBound( a ) < 0.001 || i.getBound( a ) > 15.999 ) ) if( !( i.getBound( a ) < 0.001 || i.getBound( a ) > 15.999 ) )
{ {
final double width = 3.0 / 16.0; final double width = 3.0 / 16.0;
switch( a ) switch( a )
{ {
case DOWN: case DOWN:
@@ -68,8 +68,7 @@ public class RenderBlockCraftingCPUMonitor extends RenderBlockCraftingCPU<BlockC
tile.setUpdateList( true ); tile.setUpdateList( true );
tile.setDisplayList( GLAllocation.generateDisplayLists( 1 ) ); tile.setDisplayList( GLAllocation.generateDisplayLists( 1 ) );
} }
else
if( ais != null )
{ {
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glTranslated( x + 0.5, y + 0.5, z + 0.5 ); GL11.glTranslated( x + 0.5, y + 0.5, z + 0.5 );
@@ -97,8 +96,8 @@ public class RenderBlockCraftingCPUMonitor extends RenderBlockCraftingCPU<BlockC
ForgeDirection walrus = side.offsetY != 0 ? ForgeDirection.SOUTH : ForgeDirection.UP; ForgeDirection walrus = side.offsetY != 0 ? ForgeDirection.SOUTH : ForgeDirection.UP;
int spin = 0; int spin = 0;
int max = 5; int max = 5;
while( walrus != cmt.getUp() && max > 0 ) while( walrus != cmt.getUp() && max > 0 )
{ {
max--; max--;
@@ -107,50 +106,43 @@ public class RenderBlockCraftingCPUMonitor extends RenderBlockCraftingCPU<BlockC
} }
max--; max--;
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
GL11.glTranslated( side.offsetX * 0.69, side.offsetY * 0.69, side.offsetZ * 0.69 ); GL11.glTranslated( side.offsetX * 0.69, side.offsetY * 0.69, side.offsetZ * 0.69 );
final float scale = 0.7f; final float scale = 0.7f;
GL11.glScalef( scale, scale, scale ); GL11.glScalef( scale, scale, scale );
if( side == ForgeDirection.UP ) switch( side )
{ {
GL11.glScalef( 1.0f, -1.0f, 1.0f ); case UP:
GL11.glRotatef( 90.0f, 1.0f, 0.0f, 0.0f ); GL11.glScalef( 1.0f, -1.0f, 1.0f );
GL11.glRotatef( spin * 90.0F, 0, 0, 1 ); GL11.glRotatef( 90.0f, 1.0f, 0.0f, 0.0f );
GL11.glRotatef( spin * 90.0F, 0, 0, 1 );
break;
case DOWN:
GL11.glScalef( 1.0f, -1.0f, 1.0f );
GL11.glRotatef( -90.0f, 1.0f, 0.0f, 0.0f );
GL11.glRotatef( spin * -90.0F, 0, 0, 1 );
break;
case EAST:
GL11.glScalef( -1.0f, -1.0f, -1.0f );
GL11.glRotatef( -90.0f, 0.0f, 1.0f, 0.0f );
break;
case WEST:
GL11.glScalef( -1.0f, -1.0f, -1.0f );
GL11.glRotatef( 90.0f, 0.0f, 1.0f, 0.0f );
break;
case NORTH:
GL11.glScalef( -1.0f, -1.0f, -1.0f );
break;
case SOUTH:
GL11.glScalef( -1.0f, -1.0f, -1.0f );
GL11.glRotatef( 180.0f, 0.0f, 1.0f, 0.0f );
break;
default:
break;
} }
if( side == ForgeDirection.DOWN )
{
GL11.glScalef( 1.0f, -1.0f, 1.0f );
GL11.glRotatef( -90.0f, 1.0f, 0.0f, 0.0f );
GL11.glRotatef( spin * -90.0F, 0, 0, 1 );
}
if( side == ForgeDirection.EAST )
{
GL11.glScalef( -1.0f, -1.0f, -1.0f );
GL11.glRotatef( -90.0f, 0.0f, 1.0f, 0.0f );
}
if( side == ForgeDirection.WEST )
{
GL11.glScalef( -1.0f, -1.0f, -1.0f );
GL11.glRotatef( 90.0f, 0.0f, 1.0f, 0.0f );
}
if( side == ForgeDirection.NORTH )
{
GL11.glScalef( -1.0f, -1.0f, -1.0f );
}
if( side == ForgeDirection.SOUTH )
{
GL11.glScalef( -1.0f, -1.0f, -1.0f );
GL11.glRotatef( 180.0f, 0.0f, 1.0f, 0.0f );
}
GL11.glPushMatrix();
try try
{ {
final ItemStack sis = ais.getItemStack(); final ItemStack sis = ais.getItemStack();
@@ -159,6 +151,7 @@ public class RenderBlockCraftingCPUMonitor extends RenderBlockCraftingCPU<BlockC
final int br = 16 << 20 | 16 << 4; final int br = 16 << 20 | 16 << 4;
final int var11 = br % 65536; final int var11 = br % 65536;
final int var12 = br / 65536; final int var12 = br / 65536;
OpenGlHelper.setLightmapTextureCoords( OpenGlHelper.lightmapTexUnit, var11 * 0.8F, var12 * 0.8F ); OpenGlHelper.setLightmapTextureCoords( OpenGlHelper.lightmapTexUnit, var11 * 0.8F, var12 * 0.8F );
GL11.glColor4f( 1.0F, 1.0F, 1.0F, 1.0F ); GL11.glColor4f( 1.0F, 1.0F, 1.0F, 1.0F );
@@ -174,8 +167,11 @@ public class RenderBlockCraftingCPUMonitor extends RenderBlockCraftingCPU<BlockC
{ {
AELog.error( e ); AELog.error( e );
} }
finally
GL11.glPopMatrix(); {
GL11.glEnable( GL12.GL_RESCALE_NORMAL );
GL11.glEnable( GL11.GL_LIGHTING );
}
GL11.glTranslatef( 0.0f, 0.14f, -0.24f ); GL11.glTranslatef( 0.0f, 0.14f, -0.24f );
GL11.glScalef( 1.0f / 62.0f, 1.0f / 62.0f, 1.0f / 62.0f ); GL11.glScalef( 1.0f / 62.0f, 1.0f / 62.0f, 1.0f / 62.0f );
@@ -185,9 +181,8 @@ public class RenderBlockCraftingCPUMonitor extends RenderBlockCraftingCPU<BlockC
final FontRenderer fr = Minecraft.getMinecraft().fontRenderer; final FontRenderer fr = Minecraft.getMinecraft().fontRenderer;
final int width = fr.getStringWidth( renderedStackSize ); final int width = fr.getStringWidth( renderedStackSize );
GL11.glTranslatef( -0.5f * width, 0.0f, -1.0f ); GL11.glTranslatef( -0.5f * width, 0.0f, -1.0f );
fr.drawString( renderedStackSize, 0, 0, 0 ); fr.drawString( renderedStackSize, 0, 0, 0 );
GL11.glPopAttrib();
} }
} }
@@ -71,7 +71,6 @@ public class RenderBlockCrank extends BaseBlockRender<BlockCrank, TileCrank>
{ {
return; return;
} }
Minecraft.getMinecraft().getTextureManager().bindTexture( TextureMap.locationBlocksTexture ); Minecraft.getMinecraft().getTextureManager().bindTexture( TextureMap.locationBlocksTexture );
RenderHelper.disableStandardItemLighting(); RenderHelper.disableStandardItemLighting();
@@ -84,6 +83,7 @@ public class RenderBlockCrank extends BaseBlockRender<BlockCrank, TileCrank>
GL11.glShadeModel( GL11.GL_FLAT ); GL11.glShadeModel( GL11.GL_FLAT );
} }
GL11.glCullFace( GL11.GL_FRONT );
GL11.glColor4f( 1.0f, 1.0f, 1.0f, 1.0f ); GL11.glColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
this.applyTESRRotation( x, y, z, tile.getForward(), tile.getUp() ); this.applyTESRRotation( x, y, z, tile.getForward(), tile.getUp() );
@@ -107,6 +107,9 @@ public class RenderBlockCrank extends BaseBlockRender<BlockCrank, TileCrank>
tess.draw(); tess.draw();
tess.setTranslation( 0, 0, 0 ); tess.setTranslation( 0, 0, 0 );
GL11.glCullFace( GL11.GL_BACK );
RenderHelper.enableStandardItemLighting(); RenderHelper.enableStandardItemLighting();
} }
} }
@@ -67,6 +67,7 @@ public class RenderBlockEnergyCube extends BaseBlockRender<BlockEnergyCell, Tile
final int meta = world.getBlockMetadata( x, y, z ); final int meta = world.getBlockMetadata( x, y, z );
renderer.overrideBlockTexture = blk.getIcon( 0, meta ); renderer.overrideBlockTexture = blk.getIcon( 0, meta );
final boolean out = renderer.renderStandardBlock( blk, x, y, z ); final boolean out = renderer.renderStandardBlock( blk, x, y, z );
renderer.overrideBlockTexture = null; renderer.overrideBlockTexture = null;
@@ -58,7 +58,6 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
{ {
private static final float ITEM_RENDER_SCALE = 1.0f / 1.1f; private static final float ITEM_RENDER_SCALE = 1.0f / 1.1f;
public RenderBlockInscriber() public RenderBlockInscriber()
{ {
super( true, 30 ); super( true, 30 );
@@ -108,14 +107,15 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
@Override @Override
public boolean renderInWorld( final BlockInscriber block, final IBlockAccess world, final int x, final int y, final int z, final RenderBlocks renderer ) public boolean renderInWorld( final BlockInscriber block, final IBlockAccess world, final int x, final int y, final int z, final RenderBlocks renderer )
{ {
this.preRenderInWorld( block, world, x, y, z, renderer );
final IOrientable te = this.getOrientable( block, world, x, y, z ); final IOrientable te = this.getOrientable( block, world, x, y, z );
if( te == null ) if( te == null )
{ {
return false; return false;
} }
this.preRenderInWorld( block, world, x, y, z, renderer );
final ForgeDirection fdy = te.getUp(); final ForgeDirection fdy = te.getUp();
final ForgeDirection fdz = te.getForward(); final ForgeDirection fdz = te.getForward();
final ForgeDirection fdx = Platform.crossProduct( fdz, fdy ).getOpposite(); final ForgeDirection fdx = Platform.crossProduct( fdz, fdy ).getOpposite();
@@ -151,6 +151,8 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
@Override @Override
public void renderTile( final BlockInscriber block, final TileInscriber tile, final Tessellator tess, final double x, final double y, final double z, final float f, final RenderBlocks renderer ) public void renderTile( final BlockInscriber block, final TileInscriber tile, final Tessellator tess, final double x, final double y, final double z, final float f, final RenderBlocks renderer )
{ {
// render inscriber
GL11.glPushMatrix(); GL11.glPushMatrix();
this.applyTESRRotation( x, y, z, tile.getForward(), tile.getUp() ); this.applyTESRRotation( x, y, z, tile.getForward(), tile.getUp() );
@@ -223,11 +225,11 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
tess.draw(); tess.draw();
GL11.glCullFace( GL11.GL_BACK );
GL11.glEnable( GL11.GL_LIGHTING );
GL11.glEnable( GL12.GL_RESCALE_NORMAL );
GL11.glPopMatrix(); GL11.glPopMatrix();
// render items.
GL11.glColor4f( 1.0F, 1.0F, 1.0F, 1.0F );
int items = 0; int items = 0;
if( tile.getStackInSlot( 0 ) != null ) if( tile.getStackInSlot( 0 ) != null )
{ {
@@ -259,18 +261,14 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
} }
else else
{ {
GL11.glColor4f( 1.0F, 1.0F, 1.0F, 1.0F );
GL11.glDisable( GL11.GL_LIGHTING );
GL11.glDisable( GL12.GL_RESCALE_NORMAL );
this.renderItem( tile.getStackInSlot( 0 ), press, block, tile, tess, x, y, z, f, renderer ); this.renderItem( tile.getStackInSlot( 0 ), press, block, tile, tess, x, y, z, f, renderer );
this.renderItem( tile.getStackInSlot( 1 ), -press, block, tile, tess, x, y, z, f, renderer ); this.renderItem( tile.getStackInSlot( 1 ), -press, block, tile, tess, x, y, z, f, renderer );
this.renderItem( tile.getStackInSlot( 2 ), 0.0f, block, tile, tess, x, y, z, f, renderer ); this.renderItem( tile.getStackInSlot( 2 ), 0.0f, block, tile, tess, x, y, z, f, renderer );
GL11.glEnable( GL11.GL_LIGHTING );
GL11.glEnable( GL12.GL_RESCALE_NORMAL );
} }
GL11.glEnable( GL11.GL_LIGHTING );
GL11.glEnable( GL12.GL_RESCALE_NORMAL );
GL11.glCullFace( GL11.GL_BACK );
} }
private void renderItem( ItemStack sis, final float o, final AEBaseBlock block, final AEBaseTile tile, final Tessellator tess, final double x, final double y, final double z, final float f, final RenderBlocks renderer ) private void renderItem( ItemStack sis, final float o, final AEBaseBlock block, final AEBaseTile tile, final Tessellator tess, final double x, final double y, final double z, final float f, final RenderBlocks renderer )
@@ -278,6 +276,7 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
if( sis != null ) if( sis != null )
{ {
sis = sis.copy(); sis = sis.copy();
GL11.glPushMatrix(); GL11.glPushMatrix();
// fix to inscriber // fix to inscriber
this.applyTESRRotation( x, y, z, tile.getForward(), tile.getUp() ); this.applyTESRRotation( x, y, z, tile.getForward(), tile.getUp() );
@@ -289,7 +288,6 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
// set scale // set scale
GL11.glScalef( ITEM_RENDER_SCALE, ITEM_RENDER_SCALE, ITEM_RENDER_SCALE ); GL11.glScalef( ITEM_RENDER_SCALE, ITEM_RENDER_SCALE, ITEM_RENDER_SCALE );
GL11.glScalef( 1.0f, 1.0f, 1.0f );
final Block blk = Block.getBlockFromItem( sis.getItem() ); final Block blk = Block.getBlockFromItem( sis.getItem() );
@@ -297,12 +295,15 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
if( sis.getItemSpriteNumber() == 0 && block != null && RenderBlocks.renderItemIn3d( blk.getRenderType() ) ) if( sis.getItemSpriteNumber() == 0 && block != null && RenderBlocks.renderItemIn3d( blk.getRenderType() ) )
{ {
// rotate block in angle to make it more plastic // rotate block in angle to make it more plastic
GL11.glRotatef( 25.0f, 1.0f, 0.0f, 0.0f ); GL11.glRotatef( 22.5f, 1f, 0f, 0f );
GL11.glRotatef( 15.0f, 0.0f, 1.0f, 0.0f ); GL11.glRotatef( -33.75f, 0f, 1f, 0f );
GL11.glRotatef( 30.0f, 0.0f, 1.0f, 0.0f ); }
else
{
// rotate item to match the inventory icon orientation.
GL11.glRotatef( -90.0f, 1f, 0f, 0f );
GL11.glRotatef( 180.0f, 0f, 1f, 0f );
} }
GL11.glRotatef( 90.0f, 1, 0, 0 );
// << 20 | light << 4; // << 20 | light << 4;
final int br = tile.getWorldObj().getLightBrightnessForSkyBlocks( tile.xCoord, tile.yCoord, tile.zCoord, 0 ); final int br = tile.getWorldObj().getLightBrightnessForSkyBlocks( tile.xCoord, tile.yCoord, tile.zCoord, 0 );
@@ -55,6 +55,7 @@ public class RenderBlockPaint extends BaseBlockRender<BlockPaint, TilePaint>
{ {
final TilePaint tp = imb.getTileEntity( world, x, y, z ); final TilePaint tp = imb.getTileEntity( world, x, y, z );
boolean out = false; boolean out = false;
if( tp != null ) if( tp != null )
{ {
// super.renderInWorld( imb, world, x, y, z, renderer ); // super.renderInWorld( imb, world, x, y, z, renderer );
@@ -42,17 +42,22 @@ public class RenderBlockQuartzAccelerator extends BaseBlockRender<BlockQuartzGro
public boolean renderInWorld( final BlockQuartzGrowthAccelerator blk, final IBlockAccess world, final int x, final int y, final int z, final RenderBlocks renderer ) public boolean renderInWorld( final BlockQuartzGrowthAccelerator blk, final IBlockAccess world, final int x, final int y, final int z, final RenderBlocks renderer )
{ {
final TileEntity te = world.getTileEntity( x, y, z ); final TileEntity te = world.getTileEntity( x, y, z );
if( te instanceof TileQuartzGrowthAccelerator ) if( te instanceof TileQuartzGrowthAccelerator )
{ {
if( ( (TileQuartzGrowthAccelerator) te ).isPowered() ) final TileQuartzGrowthAccelerator tileCGA = (TileQuartzGrowthAccelerator) te;
if( tileCGA.isPowered() )
{ {
final IIcon top_Bottom = ExtraBlockTextures.BlockQuartzGrowthAcceleratorOn.getIcon(); final IIcon top_Bottom = ExtraBlockTextures.BlockQuartzGrowthAcceleratorOn.getIcon();
final IIcon side = ExtraBlockTextures.BlockQuartzGrowthAcceleratorSideOn.getIcon(); final IIcon side = ExtraBlockTextures.BlockQuartzGrowthAcceleratorSideOn.getIcon();
blk.getRendererInstance().setTemporaryRenderIcons( top_Bottom, top_Bottom, side, side, side, side ); blk.getRendererInstance().setTemporaryRenderIcons( top_Bottom, top_Bottom, side, side, side, side );
} }
} }
final boolean out = super.renderInWorld( blk, world, x, y, z, renderer ); final boolean out = super.renderInWorld( blk, world, x, y, z, renderer );
blk.getRendererInstance().setTemporaryRenderIcon( null ); blk.getRendererInstance().setTemporaryRenderIcon( null );
return out; return out;
@@ -85,12 +85,7 @@ public class RenderBlockSkyChest extends BaseBlockRender<BlockSkyChest, TileSkyC
@Override @Override
public void renderTile( final BlockSkyChest block, final TileSkyChest skyChest, final Tessellator tess, final double x, final double y, final double z, final float partialTick, final RenderBlocks renderer ) public void renderTile( final BlockSkyChest block, final TileSkyChest skyChest, final Tessellator tess, final double x, final double y, final double z, final float partialTick, final RenderBlocks renderer )
{ {
if( skyChest == null ) if( skyChest == null || !skyChest.hasWorldObj() )
{
return;
}
if( !skyChest.hasWorldObj() )
{ {
return; return;
} }
@@ -43,6 +43,7 @@ import appeng.tile.misc.TileSkyCompass;
public class RenderBlockSkyCompass extends BaseBlockRender<BlockSkyCompass, TileSkyCompass> public class RenderBlockSkyCompass extends BaseBlockRender<BlockSkyCompass, TileSkyCompass>
{ {
private static final ResourceLocation TEXTURE_SKY_COMPASS = new ResourceLocation( "appliedenergistics2", "textures/models/compass.png" );
private final ModelCompass model = new ModelCompass(); private final ModelCompass model = new ModelCompass();
@@ -57,8 +58,8 @@ public class RenderBlockSkyCompass extends BaseBlockRender<BlockSkyCompass, Tile
if( type == ItemRenderType.INVENTORY ) if( type == ItemRenderType.INVENTORY )
{ {
boolean isGood = false; boolean isGood = false;
final IInventory inv = Minecraft.getMinecraft().thePlayer.inventory; final IInventory inv = Minecraft.getMinecraft().thePlayer.inventory;
for( int x = 0; x < inv.getSizeInventory(); x++ ) for( int x = 0; x < inv.getSizeInventory(); x++ )
{ {
if( inv.getStackInSlot( x ) == is ) if( inv.getStackInSlot( x ) == is )
@@ -76,9 +77,7 @@ public class RenderBlockSkyCompass extends BaseBlockRender<BlockSkyCompass, Tile
GL11.glEnable( GL12.GL_RESCALE_NORMAL ); GL11.glEnable( GL12.GL_RESCALE_NORMAL );
GL11.glColor4f( 1.0F, 1.0F, 1.0F, 1.0F ); GL11.glColor4f( 1.0F, 1.0F, 1.0F, 1.0F );
final ResourceLocation loc = new ResourceLocation( "appliedenergistics2", "textures/models/compass.png" ); Minecraft.getMinecraft().getTextureManager().bindTexture( TEXTURE_SKY_COMPASS );
Minecraft.getMinecraft().getTextureManager().bindTexture( loc );
if( type == ItemRenderType.ENTITY ) if( type == ItemRenderType.ENTITY )
{ {
@@ -108,6 +107,7 @@ public class RenderBlockSkyCompass extends BaseBlockRender<BlockSkyCompass, Tile
} }
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
if( type == ItemRenderType.EQUIPPED_FIRST_PERSON || type == ItemRenderType.INVENTORY || type == ItemRenderType.EQUIPPED ) if( type == ItemRenderType.EQUIPPED_FIRST_PERSON || type == ItemRenderType.INVENTORY || type == ItemRenderType.EQUIPPED )
{ {
EntityPlayer p = Minecraft.getMinecraft().thePlayer; EntityPlayer p = Minecraft.getMinecraft().thePlayer;
@@ -145,12 +145,14 @@ public class RenderBlockSkyCompass extends BaseBlockRender<BlockSkyCompass, Tile
{ {
final float offRads = rYaw / 180.0f * (float) Math.PI; final float offRads = rYaw / 180.0f * (float) Math.PI;
final float adjustment = (float) Math.PI * 0.74f; final float adjustment = (float) Math.PI * 0.74f;
this.model.renderAll( (float) this.flipidiy( cr.getRad() + offRads + adjustment ) ); this.model.renderAll( (float) this.flipidiy( cr.getRad() + offRads + adjustment ) );
} }
else else
{ {
final float offRads = rYaw / 180.0f * (float) Math.PI; final float offRads = rYaw / 180.0f * (float) Math.PI;
final float adjustment = (float) Math.PI * -0.74f; final float adjustment = (float) Math.PI * -0.74f;
this.model.renderAll( (float) this.flipidiy( cr.getRad() + offRads + adjustment ) ); this.model.renderAll( (float) this.flipidiy( cr.getRad() + offRads + adjustment ) );
} }
} }
@@ -194,9 +196,7 @@ public class RenderBlockSkyCompass extends BaseBlockRender<BlockSkyCompass, Tile
GL11.glColor4f( 1.0F, 1.0F, 1.0F, 1.0F ); GL11.glColor4f( 1.0F, 1.0F, 1.0F, 1.0F );
GL11.glCullFace( GL11.GL_FRONT ); GL11.glCullFace( GL11.GL_FRONT );
final ResourceLocation loc = new ResourceLocation( "appliedenergistics2", "textures/models/compass.png" ); Minecraft.getMinecraft().getTextureManager().bindTexture( TEXTURE_SKY_COMPASS );
Minecraft.getMinecraft().getTextureManager().bindTexture( loc );
this.applyTESRRotation( x, y, z, skyCompass.getUp(), skyCompass.getForward() ); this.applyTESRRotation( x, y, z, skyCompass.getUp(), skyCompass.getForward() );
@@ -204,8 +204,8 @@ public class RenderBlockSkyCompass extends BaseBlockRender<BlockSkyCompass, Tile
GL11.glTranslatef( 0.5F, -1.5F, -0.5F ); GL11.glTranslatef( 0.5F, -1.5F, -0.5F );
long now = System.currentTimeMillis(); long now = System.currentTimeMillis();
CompassResult cr = null; CompassResult cr = null;
if( skyCompass.getForward() == ForgeDirection.UP || skyCompass.getForward() == ForgeDirection.DOWN ) if( skyCompass.getForward() == ForgeDirection.UP || skyCompass.getForward() == ForgeDirection.DOWN )
{ {
cr = CompassManager.INSTANCE.getCompassDirection( 0, skyCompass.xCoord, skyCompass.yCoord, skyCompass.zCoord ); cr = CompassManager.INSTANCE.getCompassDirection( 0, skyCompass.xCoord, skyCompass.yCoord, skyCompass.zCoord );
@@ -64,6 +64,7 @@ public class RenderBlockWireless extends BaseBlockRender<BlockWireless, TileWire
this.centerZ = 0; this.centerZ = 0;
this.hasChan = false; this.hasChan = false;
this.hasPower = false; this.hasPower = false;
final BlockRenderInfo ri = blk.getRendererInstance(); final BlockRenderInfo ri = blk.getRendererInstance();
final Tessellator tess = Tessellator.instance; final Tessellator tess = Tessellator.instance;
@@ -111,6 +112,7 @@ public class RenderBlockWireless extends BaseBlockRender<BlockWireless, TileWire
{ {
final TileWireless tw = blk.getTileEntity( world, x, y, z ); final TileWireless tw = blk.getTileEntity( world, x, y, z );
this.blk = blk; this.blk = blk;
if( tw != null ) if( tw != null )
{ {
this.hasChan = ( tw.getClientFlags() & ( TileWireless.POWERED_FLAG | TileWireless.CHANNEL_FLAG ) ) == ( TileWireless.POWERED_FLAG | TileWireless.CHANNEL_FLAG ); this.hasChan = ( tw.getClientFlags() & ( TileWireless.POWERED_FLAG | TileWireless.CHANNEL_FLAG ) ) == ( TileWireless.POWERED_FLAG | TileWireless.CHANNEL_FLAG );
@@ -58,15 +58,15 @@ public class RenderDrive extends BaseBlockRender<BlockDrive, TileDrive>
public boolean renderInWorld( final BlockDrive imb, final IBlockAccess world, final int x, final int y, final int z, final RenderBlocks renderer ) 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 ); final TileDrive sp = imb.getTileEntity( world, x, y, z );
renderer.setRenderBounds( 0, 0, 0, 1, 1, 1 );
final ForgeDirection up = sp.getUp(); final ForgeDirection up = sp.getUp();
final ForgeDirection forward = sp.getForward(); final ForgeDirection forward = sp.getForward();
final ForgeDirection west = Platform.crossProduct( forward, up ); final ForgeDirection west = Platform.crossProduct( forward, up );
final boolean result = super.renderInWorld( imb, world, x, y, z, renderer ); renderer.setRenderBounds( 0, 0, 0, 1, 1, 1 );
final Tessellator tess = Tessellator.instance;
final boolean result = super.renderInWorld( imb, world, x, y, z, renderer );
final Tessellator tess = Tessellator.instance;
final IIcon ico = ExtraBlockTextures.MEStorageCellTextures.getIcon(); final IIcon ico = ExtraBlockTextures.MEStorageCellTextures.getIcon();
final int b = world.getLightBrightnessForSkyBlocks( x + forward.offsetX, y + forward.offsetY, z + forward.offsetZ, 0 ); final int b = world.getLightBrightnessForSkyBlocks( x + forward.offsetX, y + forward.offsetY, z + forward.offsetZ, 0 );
@@ -76,6 +76,7 @@ public class RenderDrive extends BaseBlockRender<BlockDrive, TileDrive>
for( int xx = 0; xx < 2; xx++ ) for( int xx = 0; xx < 2; xx++ )
{ {
final int stat = sp.getCellStatus( yy * 2 + ( 1 - 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 ); this.selectFace( renderer, west, up, forward, 2 + xx * 7, 7 + xx * 7, 1 + yy * 3, 3 + yy * 3 );
int spin = 0; int spin = 0;
@@ -53,6 +53,7 @@ public class RenderMEChest extends BaseBlockRender<BlockChest, TileChest>
public void renderInventory( final BlockChest block, final ItemStack is, final RenderBlocks renderer, final ItemRenderType type, final Object[] obj ) public void renderInventory( final BlockChest block, final ItemStack is, final RenderBlocks renderer, final ItemRenderType type, final Object[] obj )
{ {
Tessellator.instance.setBrightness( 0 ); Tessellator.instance.setBrightness( 0 );
renderer.overrideBlockTexture = ExtraBlockTextures.getMissing(); renderer.overrideBlockTexture = ExtraBlockTextures.getMissing();
this.renderInvBlock( EnumSet.of( ForgeDirection.SOUTH ), block, is, Tessellator.instance, 0x000000, renderer ); this.renderInvBlock( EnumSet.of( ForgeDirection.SOUTH ), block, is, Tessellator.instance, 0x000000, renderer );
@@ -67,13 +68,14 @@ public class RenderMEChest extends BaseBlockRender<BlockChest, TileChest>
public boolean renderInWorld( final BlockChest imb, final IBlockAccess world, final int x, final int y, final int z, final RenderBlocks renderer ) 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 ); final TileChest sp = imb.getTileEntity( world, x, y, z );
renderer.setRenderBounds( 0, 0, 0, 1, 1, 1 );
if( sp == null ) if( sp == null )
{ {
return false; return false;
} }
renderer.setRenderBounds( 0, 0, 0, 1, 1, 1 );
final ForgeDirection up = sp.getUp(); final ForgeDirection up = sp.getUp();
final ForgeDirection forward = sp.getForward(); final ForgeDirection forward = sp.getForward();
final ForgeDirection west = Platform.crossProduct( forward, up ); final ForgeDirection west = Platform.crossProduct( forward, up );
@@ -97,6 +99,7 @@ public class RenderMEChest extends BaseBlockRender<BlockChest, TileChest>
final int offsetU = -4; final int offsetU = -4;
final FlippableIcon flippableIcon = new FlippableIcon( new OffsetIcon( ExtraBlockTextures.MEStorageCellTextures.getIcon(), offsetU, offsetV ) ); final FlippableIcon flippableIcon = new FlippableIcon( new OffsetIcon( ExtraBlockTextures.MEStorageCellTextures.getIcon(), offsetU, offsetV ) );
if( forward == ForgeDirection.EAST && ( up == ForgeDirection.NORTH || up == ForgeDirection.SOUTH ) ) if( forward == ForgeDirection.EAST && ( up == ForgeDirection.NORTH || up == ForgeDirection.SOUTH ) )
{ {
flippableIcon.setFlip( true, false ); flippableIcon.setFlip( true, false );
@@ -118,13 +121,6 @@ public class RenderMEChest extends BaseBlockRender<BlockChest, TileChest>
flippableIcon.setFlip( true, false ); 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 ); this.renderFace( x, y, z, imb, flippableIcon, renderer, forward );
if( stat != 0 ) if( stat != 0 )
@@ -45,14 +45,19 @@ import appeng.tile.qnb.TileQuantumBridge;
public class RenderQNB extends BaseBlockRender<BlockQuantumBase, TileQuantumBridge> public class RenderQNB extends BaseBlockRender<BlockQuantumBase, TileQuantumBridge>
{ {
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 @Override
public void renderInventory( final BlockQuantumBase block, final ItemStack item, final RenderBlocks renderer, final ItemRenderType type, final Object[] obj ) 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; renderer.setRenderBounds( DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX );
final float maxPx = 14.0f / 16.0f;
renderer.setRenderBounds( minPx, minPx, minPx, maxPx, maxPx, maxPx );
super.renderInventory( block, item, renderer, type, obj ); super.renderInventory( block, item, renderer, type, obj );
} }
@@ -60,6 +65,7 @@ public class RenderQNB extends BaseBlockRender<BlockQuantumBase, TileQuantumBrid
public boolean renderInWorld( final BlockQuantumBase block, final IBlockAccess world, final int x, final int y, final int z, final RenderBlocks renderer ) public boolean renderInWorld( final BlockQuantumBase block, final IBlockAccess world, final int x, final int y, final int z, final RenderBlocks renderer )
{ {
final TileQuantumBridge tqb = block.getTileEntity( world, x, y, z ); final TileQuantumBridge tqb = block.getTileEntity( world, x, y, z );
if( tqb == null ) if( tqb == null )
{ {
return false; return false;
@@ -86,37 +92,28 @@ public class RenderQNB extends BaseBlockRender<BlockQuantumBase, TileQuantumBrid
this.renderCableAt( 0.188D, world, x, y, z, block, renderer, transCoveredCable.getIconIndex( parts.cableCovered().stack( AEColor.Transparent, 1 ) ), 0.1875D, sides ); this.renderCableAt( 0.188D, world, x, y, z, block, renderer, transCoveredCable.getIconIndex( parts.cableCovered().stack( AEColor.Transparent, 1 ) ), 0.1875D, sides );
} }
final float renderMin = 2.0f / 16.0f; renderer.setRenderBounds( DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX );
final float renderMax = 14.0f / 16.0f;
renderer.setRenderBounds( renderMin, renderMin, renderMin, renderMax, renderMax, renderMax );
renderer.renderStandardBlock( block, x, y, z ); renderer.renderStandardBlock( block, x, y, z );
} }
else else
{ {
if( !tqb.isFormed() ) if( !tqb.isFormed() )
{ {
final float renderMin = 2.0f / 16.0f; renderer.setRenderBounds( DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX );
final float renderMax = 14.0f / 16.0f;
renderer.setRenderBounds( renderMin, renderMin, renderMin, renderMax, renderMax, renderMax );
renderer.renderStandardBlock( block, x, y, z ); renderer.renderStandardBlock( block, x, y, z );
} }
else if( tqb.isCorner() ) else if( tqb.isCorner() )
{ {
final Item transCoveredCable = parts.cableCovered().item( AEColor.Transparent ); final Item transCoveredCable = parts.cableCovered().item( AEColor.Transparent );
this.renderCableAt( 0.188D, world, x, y, z, block, renderer, transCoveredCable.getIconIndex( parts.cableCovered().stack( AEColor.Transparent, 1 ) ), 0.05D, tqb.getConnections() ); this.renderCableAt( 0.188D, world, x, y, z, block, renderer, transCoveredCable.getIconIndex( parts.cableCovered().stack( AEColor.Transparent, 1 ) ), 0.05D, tqb.getConnections() );
float renderMin = 4.0f / 16.0f; renderer.setRenderBounds( DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX );
float renderMax = 12.0f / 16.0f;
renderer.setRenderBounds( renderMin, renderMin, renderMin, renderMax, renderMax, renderMax );
renderer.renderStandardBlock( block, x, y, z ); renderer.renderStandardBlock( block, x, y, z );
if( tqb.isPowered() ) if( tqb.isPowered() )
{ {
renderer.setRenderBounds( CORNER_POWERED_RENDER_MIN, CORNER_POWERED_RENDER_MIN, CORNER_POWERED_RENDER_MIN, CORNER_POWERED_RENDER_MAX, CORNER_POWERED_RENDER_MAX, CORNER_POWERED_RENDER_MAX );
renderMin = 3.9f / 16.0f;
renderMax = 12.1f / 16.0f;
renderer.setRenderBounds( renderMin, renderMin, renderMin, renderMax, renderMax, renderMax );
Tessellator.instance.setColorOpaque_F( 1.0F, 1.0F, 1.0F ); Tessellator.instance.setColorOpaque_F( 1.0F, 1.0F, 1.0F );
final int bn = 15; final int bn = 15;
@@ -129,22 +126,18 @@ public class RenderQNB extends BaseBlockRender<BlockQuantumBase, TileQuantumBrid
} }
else else
{ {
float renderMin = 2.0f / 16.0f; renderer.setRenderBounds( 0, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, 1, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX );
float renderMax = 14.0f / 16.0f;
renderer.setRenderBounds( 0, renderMin, renderMin, 1, renderMax, renderMax );
renderer.renderStandardBlock( block, x, y, z ); renderer.renderStandardBlock( block, x, y, z );
renderer.setRenderBounds( renderMin, 0, renderMin, renderMax, 1, renderMax ); renderer.setRenderBounds( DEFAULT_RENDER_MIN, 0, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MAX, 1, DEFAULT_RENDER_MAX );
renderer.renderStandardBlock( block, x, y, z ); renderer.renderStandardBlock( block, x, y, z );
renderer.setRenderBounds( renderMin, renderMin, 0, renderMax, renderMax, 1 ); renderer.setRenderBounds( DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, 0, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX, 1 );
renderer.renderStandardBlock( block, x, y, z ); renderer.renderStandardBlock( block, x, y, z );
if( tqb.isPowered() ) if( tqb.isPowered() )
{ {
renderMin = -0.01f / 16.0f; renderer.setRenderBounds( CENTER_POWERED_RENDER_MIN, CENTER_POWERED_RENDER_MIN, CENTER_POWERED_RENDER_MIN, CENTER_POWERED_RENDER_MAX, CENTER_POWERED_RENDER_MAX, CENTER_POWERED_RENDER_MAX );
renderMax = 16.01f / 16.0f;
renderer.setRenderBounds( renderMin, renderMin, renderMin, renderMax, renderMax, renderMax );
Tessellator.instance.setColorOpaque_F( 1.0F, 1.0F, 1.0F ); Tessellator.instance.setColorOpaque_F( 1.0F, 1.0F, 1.0F );
final int bn = 15; final int bn = 15;
@@ -38,23 +38,28 @@ import appeng.tile.AEBaseTile;
public class RenderQuartzGlass extends BaseBlockRender<BlockQuartzGlass, AEBaseTile> public class RenderQuartzGlass extends BaseBlockRender<BlockQuartzGlass, AEBaseTile>
{ {
private static byte[][][] offsets; private static final byte[][][] OFFSETS = generateOffsets();
public RenderQuartzGlass() public RenderQuartzGlass()
{ {
super( false, 0 ); 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 ); for( int y = 0; y < 10; y++ )
offsets = new byte[10][10][10];
for( int x = 0; x < 10; x++ )
{ {
for( int y = 0; y < 10; y++ ) r.nextBytes( offset[x][y] );
{
r.nextBytes( offsets[x][y] );
}
} }
} }
return offset;
} }
@Override @Override
@@ -75,10 +80,10 @@ public class RenderQuartzGlass extends BaseBlockRender<BlockQuartzGlass, AEBaseT
final int cy = Math.abs( y % 10 ); final int cy = Math.abs( y % 10 );
final int cz = Math.abs( z % 10 ); final int cz = Math.abs( z % 10 );
final int u = offsets[cx][cy][cz] % 4; final int u = OFFSETS[cx][cy][cz] % 4;
final int v = offsets[9 - cx][9 - cy][9 - cz] % 4; final int v = OFFSETS[9 - cx][9 - cy][9 - cz] % 4;
switch( Math.abs( ( offsets[cx][cy][cz] + ( x + y + z ) ) % 4 ) ) switch( Math.abs( ( OFFSETS[cx][cy][cz] + ( x + y + z ) ) % 4 ) )
{ {
case 0: case 0:
renderer.overrideBlockTexture = new OffsetIcon( imb.getIcon( 0, 0 ), u / 2, v / 2 ); renderer.overrideBlockTexture = new OffsetIcon( imb.getIcon( 0, 0 ), u / 2, v / 2 );
@@ -99,10 +99,12 @@ public class RenderQuartzTorch extends BaseBlockRender<AEBaseBlock, AEBaseTile>
{ {
final IOrientable te = ( (IOrientableBlock) block ).getOrientable( world, x, y, z ); 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 xOff = 0.0f;
float yOff = 0.0f;
float zOff = 0.0f;
renderer.renderAllFaces = true;
if( te != null ) if( te != null )
{ {
final ForgeDirection forward = te.getUp(); final ForgeDirection forward = te.getUp();
@@ -66,6 +66,7 @@ public class RenderSpatialPylon extends BaseBlockRender<BlockSpatialPylon, TileS
if( ( displayBits & TileSpatialPylon.DISPLAY_Z ) == TileSpatialPylon.DISPLAY_X ) if( ( displayBits & TileSpatialPylon.DISPLAY_Z ) == TileSpatialPylon.DISPLAY_X )
{ {
ori = ForgeDirection.EAST; ori = ForgeDirection.EAST;
if( ( displayBits & TileSpatialPylon.DISPLAY_MIDDLE ) == TileSpatialPylon.DISPLAY_END_MAX ) if( ( displayBits & TileSpatialPylon.DISPLAY_MIDDLE ) == TileSpatialPylon.DISPLAY_END_MAX )
{ {
renderer.uvRotateEast = 1; renderer.uvRotateEast = 1;
@@ -70,6 +70,7 @@ public class RendererSecurity extends BaseBlockRender<BlockSecurity, TileSecurit
final boolean result = renderer.renderStandardBlock( imb, x, y, z ); final boolean result = renderer.renderStandardBlock( imb, x, y, z );
int b = world.getLightBrightnessForSkyBlocks( x + up.offsetX, y + up.offsetY, z + up.offsetZ, 0 ); int b = world.getLightBrightnessForSkyBlocks( x + up.offsetX, y + up.offsetY, z + up.offsetZ, 0 );
if( sp.isActive() ) if( sp.isActive() )
{ {
b = 15 << 20 | 15 << 4; b = 15 << 20 | 15 << 4;
@@ -82,6 +83,7 @@ public class RendererSecurity extends BaseBlockRender<BlockSecurity, TileSecurit
Tessellator.instance.setColorOpaque_I( sp.getColor().whiteVariant ); Tessellator.instance.setColorOpaque_I( sp.getColor().whiteVariant );
IIcon ico = sp.isActive() ? ExtraBlockTextures.BlockMESecurityOn_Light.getIcon() : ExtraBlockTextures.MEChest.getIcon(); IIcon ico = sp.isActive() ? ExtraBlockTextures.BlockMESecurityOn_Light.getIcon() : ExtraBlockTextures.MEChest.getIcon();
this.renderFace( x, y, z, imb, ico, renderer, up ); this.renderFace( x, y, z, imb, ico, renderer, up );
if( sp.isActive() ) if( sp.isActive() )
{ {
Tessellator.instance.setColorOpaque_I( sp.getColor().mediumVariant ); Tessellator.instance.setColorOpaque_I( sp.getColor().mediumVariant );
@@ -76,6 +76,7 @@ public class AssemblerFX 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 ) public void renderParticle( final Tessellator tess, final float l, final float rX, final float rY, final float rZ, final float rYZ, final float rXY )
{ {
this.time += l; this.time += l;
if( this.time > 4.0 ) if( this.time > 4.0 )
{ {
this.time -= 4.0; this.time -= 4.0;
@@ -37,10 +37,12 @@ public class ChargedOreFX extends EntityReddustFX
int j1 = super.getBrightnessForRender( par1 ); int j1 = super.getBrightnessForRender( par1 );
j1 = Math.max( j1 >> 20, j1 >> 4 ); j1 = Math.max( j1 >> 20, j1 >> 4 );
j1 += 3; j1 += 3;
if( j1 > 15 ) if( j1 > 15 )
{ {
j1 = 15; j1 = 15;
} }
return j1 << 20 | j1 << 4; return j1 << 20 | j1 << 4;
} }
} }
@@ -89,6 +89,7 @@ public class CraftingFx extends EntityBreakingFX
final int blkX = MathHelper.floor_double( offX ); final int blkX = MathHelper.floor_double( offX );
final int blkY = MathHelper.floor_double( offY ); final int blkY = MathHelper.floor_double( offY );
final int blkZ = MathHelper.floor_double( offZ ); final int blkZ = MathHelper.floor_double( offZ );
if( blkX == this.startBlkX && blkY == this.startBlkY && blkZ == this.startBlkZ ) if( blkX == this.startBlkX && blkY == this.startBlkY && blkZ == this.startBlkZ )
{ {
offX -= interpPosX; offX -= interpPosX;
@@ -51,8 +51,8 @@ public class LightningArcFX extends LightningFX
final double lastDirectionX = this.rx * i; final double lastDirectionX = this.rx * i;
final double lastDirectionY = this.ry * i; final double lastDirectionY = this.ry * i;
final double lastDirectionZ = this.rz * i; final double lastDirectionZ = this.rz * i;
final double len = Math.sqrt( lastDirectionX * lastDirectionX + lastDirectionY * lastDirectionY + lastDirectionZ * lastDirectionZ ); final double len = Math.sqrt( lastDirectionX * lastDirectionX + lastDirectionY * lastDirectionY + lastDirectionZ * lastDirectionZ );
for( int s = 0; s < this.getSteps(); s++ ) for( int s = 0; s < this.getSteps(); s++ )
{ {
final double[][] localSteps = this.getPrecomputedSteps(); final double[][] localSteps = this.getPrecomputedSteps();
@@ -31,7 +31,6 @@ import net.minecraft.world.World;
public class LightningFX extends EntityFX public class LightningFX extends EntityFX
{ {
private static final Random RANDOM_GENERATOR = new Random(); private static final Random RANDOM_GENERATOR = new Random();
private static final int STEPS = 5; 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 lastDirectionX = ( RANDOM_GENERATOR.nextDouble() - 0.5 ) * 0.9;
double lastDirectionY = ( 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; double lastDirectionZ = ( RANDOM_GENERATOR.nextDouble() - 0.5 ) * 0.9;
for( int s = 0; s < LightningFX.STEPS; s++ ) for( int s = 0; s < LightningFX.STEPS; s++ )
{ {
this.precomputedSteps[s][0] = lastDirectionX = ( lastDirectionX + ( RANDOM_GENERATOR.nextDouble() - 0.5 ) * 0.9 ) / 2.0; 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 ) 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; final float j = 1.0f;
tess.setColorRGBA_F( this.particleRed * j * 0.9f, this.particleGreen * j * 0.95f, this.particleBlue * j, this.particleAlpha ); tess.setColorRGBA_F( this.particleRed * j * 0.9f, this.particleGreen * j * 0.95f, this.particleBlue * j, this.particleAlpha );
if( this.particleAge == 3 ) if( this.particleAge == 3 )
{ {
this.regen(); 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() 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( this.verticesWithUV[0], this.verticesWithUV[1], this.verticesWithUV[2], f6, f8 );
tess.addVertexWithUV( b[0], b[1], b[2], f6, f8 ); tess.addVertexWithUV( b[0], b[1], b[2], f6, f8 );
} }
this.hasData = true; this.hasData = true;
for( int x = 0; x < 3; x++ ) for( int x = 0; x < 3; x++ )
{ {
this.vertices[x] = a[x]; this.vertices[x] = a[x];
@@ -45,6 +45,7 @@ public class ItemEncodedPatternRenderer implements IItemRenderer
if( !this.recursive && type == IItemRenderer.ItemRenderType.INVENTORY && isShiftHeld ) if( !this.recursive && type == IItemRenderer.ItemRenderType.INVENTORY && isShiftHeld )
{ {
final ItemEncodedPattern iep = (ItemEncodedPattern) item.getItem(); final ItemEncodedPattern iep = (ItemEncodedPattern) item.getItem();
if( iep.getOutput( item ) != null ) if( iep.getOutput( item ) != null )
{ {
return true; return true;
@@ -66,11 +67,10 @@ public class ItemEncodedPatternRenderer implements IItemRenderer
this.recursive = true; this.recursive = true;
final ItemEncodedPattern iep = (ItemEncodedPattern) item.getItem(); final ItemEncodedPattern iep = (ItemEncodedPattern) item.getItem();
final ItemStack is = iep.getOutput( item ); final ItemStack is = iep.getOutput( item );
final Minecraft mc = Minecraft.getMinecraft(); 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(); RenderHelper.enableGUIStandardItemLighting();
this.ri.renderItemAndEffectIntoGUI( mc.fontRenderer, mc.getTextureManager(), is, 0, 0 ); this.ri.renderItemAndEffectIntoGUI( mc.fontRenderer, mc.getTextureManager(), is, 0, 0 );
RenderHelper.disableStandardItemLighting(); RenderHelper.disableStandardItemLighting();
@@ -50,8 +50,13 @@ public class PaintBallRender implements IItemRenderer
@Override @Override
public void renderItem( final ItemRenderType type, final ItemStack item, final Object... data ) public void renderItem( final ItemRenderType type, final ItemStack item, final Object... data )
{ {
IIcon par2Icon = item.getIconIndex(); final IIcon par2Icon;
if( item.getItemDamage() >= 20 )
if( item.getItemDamage() < 20 )
{
par2Icon = item.getIconIndex();
}
else
{ {
par2Icon = ExtraItemTextures.ItemPaintBallShimmer.getIcon(); par2Icon = ExtraItemTextures.ItemPaintBallShimmer.getIcon();
} }
@@ -64,8 +69,8 @@ public class PaintBallRender implements IItemRenderer
final ItemPaintBall ipb = (ItemPaintBall) item.getItem(); final ItemPaintBall ipb = (ItemPaintBall) item.getItem();
final Tessellator tessellator = Tessellator.instance; final Tessellator tessellator = Tessellator.instance;
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
final AEColor col = ipb.getColor( item ); final AEColor col = ipb.getColor( item );
@@ -122,7 +127,15 @@ public class PaintBallRender implements IItemRenderer
GL11.glColor4f( 1, 1, 1, 1.0F ); 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(); GL11.glPopMatrix();
} }
} }
@@ -60,8 +60,9 @@ public class ToolBiometricCardRender implements IItemRenderer
final float f7 = par2Icon.getMaxV(); final float f7 = par2Icon.getMaxV();
final Tessellator tessellator = Tessellator.instance; final Tessellator tessellator = Tessellator.instance;
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); GL11.glPushAttrib( GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT );
if( type == ItemRenderType.INVENTORY ) if( type == ItemRenderType.INVENTORY )
{ {
@@ -96,6 +97,7 @@ public class ToolBiometricCardRender implements IItemRenderer
final float v = ExtraItemTextures.White.getIcon().getInterpolatedV( 8.1 ); final float v = ExtraItemTextures.White.getIcon().getInterpolatedV( 8.1 );
String username = ""; String username = "";
if( item.getItem() instanceof IBiometricCard ) if( item.getItem() instanceof IBiometricCard )
{ {
final GameProfile gp = ( (IBiometricCard) item.getItem() ).getProfile( item ); final GameProfile gp = ( (IBiometricCard) item.getItem() ).getProfile( item );
@@ -119,6 +121,7 @@ public class ToolBiometricCardRender implements IItemRenderer
} }
final float z = 0; final float z = 0;
for( int x = 0; x < 8; x++ )// 8 for( int x = 0; x < 8; x++ )// 8
{ {
for( int y = 0; y < 6; y++ )// 6 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.addVertexWithUV( x, y + 1, z, u, v );
} }
} }
tessellator.draw(); tessellator.draw();
GL11.glPopAttrib(); GL11.glPopAttrib();
@@ -58,8 +58,9 @@ public class ToolColorApplicatorRender implements IItemRenderer
float f7 = par2Icon.getMaxV(); float f7 = par2Icon.getMaxV();
final Tessellator tessellator = Tessellator.instance; final Tessellator tessellator = Tessellator.instance;
GL11.glPushMatrix(); GL11.glPushMatrix();
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); GL11.glPushAttrib( GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT );
if( type == ItemRenderType.INVENTORY ) if( type == ItemRenderType.INVENTORY )
{ {
@@ -106,10 +107,12 @@ public class ToolColorApplicatorRender implements IItemRenderer
final IIcon light = ExtraItemTextures.ToolColorApplicatorTip_Light.getIcon(); final IIcon light = ExtraItemTextures.ToolColorApplicatorTip_Light.getIcon();
GL11.glScalef( 1F / 16F, 1F / 16F, 1F ); GL11.glScalef( 1F / 16F, 1F / 16F, 1F );
if( type != ItemRenderType.INVENTORY ) if( type != ItemRenderType.INVENTORY )
{ {
GL11.glTranslatef( 2, 0, 0 ); GL11.glTranslatef( 2, 0, 0 );
} }
GL11.glDisable( GL11.GL_LIGHTING ); GL11.glDisable( GL11.GL_LIGHTING );
final AEColor col = ( (ToolColorApplicator) item.getItem() ).getActiveColor( item ); final AEColor col = ( (ToolColorApplicator) item.getItem() ).getActiveColor( item );
+13 -5
View File
@@ -24,7 +24,10 @@ import java.util.EnumSet;
import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.common.util.ForgeDirection;
import appeng.api.exceptions.ExistingConnectionException;
import appeng.api.exceptions.FailedConnection; import appeng.api.exceptions.FailedConnection;
import appeng.api.exceptions.NullNodeConnectionException;
import appeng.api.exceptions.SecurityConnectionException;
import appeng.api.networking.GridFlags; import appeng.api.networking.GridFlags;
import appeng.api.networking.IGridConnection; import appeng.api.networking.IGridConnection;
import appeng.api.networking.IGridNode; import appeng.api.networking.IGridNode;
@@ -43,6 +46,8 @@ import appeng.util.ReadOnlyCollection;
public class GridConnection implements IGridConnection, IPathItem public class GridConnection implements IGridConnection, IPathItem
{ {
private static final String EXISTING_CONNECTION_MESSAGE = "Connection between node [machine=%s, %s] and [machine=%s, %s] on [%s] already exists.";
private static final MENetworkChannelsChanged EVENT = new MENetworkChannelsChanged(); private static final MENetworkChannelsChanged EVENT = new MENetworkChannelsChanged();
private int channelData = 0; private int channelData = 0;
private Object visitorIterationNumber = null; private Object visitorIterationNumber = null;
@@ -67,21 +72,24 @@ public class GridConnection implements IGridConnection, IPathItem
AELog.info( "Security audit 2 failed at [%s] belonging to player [id=%d]", bCoordinates.toString(), b.getPlayerID() ); AELog.info( "Security audit 2 failed at [%s] belonging to player [id=%d]", bCoordinates.toString(), b.getPlayerID() );
} }
throw new FailedConnection(); throw new SecurityConnectionException();
} }
if( a == null || b == null ) if( a == null || b == null )
{ {
throw new GridException( "Connection Forged Between null entities." ); throw new NullNodeConnectionException();
} }
if( a.hasConnection( b ) || b.hasConnection( a ) ) if( a.hasConnection( b ) || b.hasConnection( a ) )
{ {
final String aCoords = a.getGridBlock().getLocation().toString(); final String aMachineClass = a.getGridBlock().getMachine().getClass().getSimpleName();
final String bCoords = b.getGridBlock().getLocation().toString(); final String bMachineClass = b.getGridBlock().getMachine().getClass().getSimpleName();
final String aCoordinates = a.getGridBlock().getLocation().toString();
final String bCoordinates = b.getGridBlock().getLocation().toString();
throw new GridException( String.format( "Connection already exists between node at [%s] and node at [%s].", aCoords, bCoords ) ); throw new ExistingConnectionException( String.format( EXISTING_CONNECTION_MESSAGE, aMachineClass, aCoordinates, bMachineClass, bCoordinates, fromAtoB ) );
} }
this.sideA = a; this.sideA = a;
this.fromAtoB = fromAtoB; this.fromAtoB = fromAtoB;
this.sideB = b; this.sideB = b;
@@ -29,6 +29,7 @@ import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.OreDictionary;
import appeng.api.AEApi;
import appeng.api.config.Actionable; import appeng.api.config.Actionable;
import appeng.api.config.FuzzyMode; import appeng.api.config.FuzzyMode;
import appeng.api.exceptions.AppEngException; import appeng.api.exceptions.AppEngException;
@@ -43,7 +44,6 @@ import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList; import appeng.api.storage.data.IItemList;
import appeng.util.Platform; import appeng.util.Platform;
import appeng.util.item.AEItemStack; import appeng.util.item.AEItemStack;
import appeng.util.item.UnsortedItemList;
public class CellInventory implements ICellInventory public class CellInventory implements ICellInventory
@@ -191,7 +191,7 @@ public class CellInventory implements ICellInventory
private boolean isEmpty( final IMEInventory<IAEItemStack> meInventory ) private boolean isEmpty( final IMEInventory<IAEItemStack> meInventory )
{ {
return meInventory.getAvailableItems( new UnsortedItemList() ).isEmpty(); return meInventory.getAvailableItems( AEApi.instance().storage().createItemList() ).isEmpty();
} }
@Override @Override
@@ -446,7 +446,7 @@ public class CellInventory implements ICellInventory
{ {
if( this.cellItems == null ) if( this.cellItems == null )
{ {
this.cellItems = new UnsortedItemList(); this.cellItems = AEApi.instance().storage().createItemList();
} }
this.cellItems.resetStatus(); // clears totals and stuff. this.cellItems.resetStatus(); // clears totals and stuff.
@@ -59,7 +59,7 @@ public final class VersionCheckerConfig
public VersionCheckerConfig( @Nonnull final File file ) public VersionCheckerConfig( @Nonnull final File file )
{ {
Preconditions.checkNotNull( file ); Preconditions.checkNotNull( file );
Preconditions.checkState( file.isFile() ); Preconditions.checkState( !file.isDirectory() );
this.config = new Configuration( file ); this.config = new Configuration( file );
+9 -32
View File
@@ -21,14 +21,11 @@ package appeng.util.item;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.IdentityHashMap;
import java.util.Iterator; import java.util.Iterator;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.Map;
import java.util.NavigableMap; import java.util.NavigableMap;
import java.util.concurrent.ConcurrentSkipListMap; import java.util.concurrent.ConcurrentSkipListMap;
import net.minecraft.item.Item;
import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.OreDictionary;
import appeng.api.config.FuzzyMode; import appeng.api.config.FuzzyMode;
@@ -39,7 +36,7 @@ import appeng.api.storage.data.IItemList;
public final class ItemList implements IItemList<IAEItemStack> public final class ItemList implements IItemList<IAEItemStack>
{ {
private final Map<Item, NavigableMap<IAEItemStack, IAEItemStack>> records = new IdentityHashMap<Item, NavigableMap<IAEItemStack, IAEItemStack>>(); private final NavigableMap<IAEItemStack, IAEItemStack> records = new ConcurrentSkipListMap<IAEItemStack, IAEItemStack>();
@Override @Override
public void add( final IAEItemStack option ) public void add( final IAEItemStack option )
@@ -49,7 +46,7 @@ public final class ItemList implements IItemList<IAEItemStack>
return; return;
} }
final IAEItemStack st = this.getItemRecord( option.getItem() ).get( option ); final IAEItemStack st = this.records.get( option );
if( st != null ) if( st != null )
{ {
@@ -70,7 +67,7 @@ public final class ItemList implements IItemList<IAEItemStack>
return null; return null;
} }
return this.getItemRecord( itemStack.getItem() ).get( itemStack ); return this.records.get( itemStack );
} }
@Override @Override
@@ -123,7 +120,7 @@ public final class ItemList implements IItemList<IAEItemStack>
return; return;
} }
final IAEItemStack st = this.getItemRecord( option.getItem() ).get( option ); final IAEItemStack st = this.records.get( option );
if( st != null ) if( st != null )
{ {
@@ -149,7 +146,7 @@ public final class ItemList implements IItemList<IAEItemStack>
return; return;
} }
final IAEItemStack st = this.getItemRecord( option.getItem() ).get( option ); final IAEItemStack st = this.records.get( option );
if( st != null ) if( st != null )
{ {
@@ -172,7 +169,7 @@ public final class ItemList implements IItemList<IAEItemStack>
return; return;
} }
final IAEItemStack st = this.getItemRecord( option.getItem() ).get( option ); final IAEItemStack st = this.records.get( option );
if( st != null ) if( st != null )
{ {
@@ -202,14 +199,7 @@ public final class ItemList implements IItemList<IAEItemStack>
@Override @Override
public int size() public int size()
{ {
int size = 0; return this.records.size();
for( final Map<IAEItemStack, IAEItemStack> element : this.records.values() )
{
size += element.size();
}
return size;
} }
@Override @Override
@@ -227,22 +217,9 @@ public final class ItemList implements IItemList<IAEItemStack>
} }
} }
private NavigableMap<IAEItemStack, IAEItemStack> getItemRecord( final Item item )
{
NavigableMap<IAEItemStack, IAEItemStack> itemRecords = this.records.get( item );
if( itemRecords == null )
{
itemRecords = new ConcurrentSkipListMap<IAEItemStack, IAEItemStack>();
this.records.put( item, itemRecords );
}
return itemRecords;
}
private IAEItemStack putItemRecord( final IAEItemStack itemStack ) private IAEItemStack putItemRecord( final IAEItemStack itemStack )
{ {
return this.getItemRecord( itemStack.getItem() ).put( itemStack, itemStack ); return this.records.put( itemStack, itemStack );
} }
private Collection<IAEItemStack> findFuzzyDamage( final AEItemStack filter, final FuzzyMode fuzzy, final boolean ignoreMeta ) private Collection<IAEItemStack> findFuzzyDamage( final AEItemStack filter, final FuzzyMode fuzzy, final boolean ignoreMeta )
@@ -250,6 +227,6 @@ public final class ItemList implements IItemList<IAEItemStack>
final IAEItemStack low = filter.getLow( fuzzy, ignoreMeta ); final IAEItemStack low = filter.getLow( fuzzy, ignoreMeta );
final IAEItemStack high = filter.getHigh( fuzzy, ignoreMeta ); final IAEItemStack high = filter.getHigh( fuzzy, ignoreMeta );
return this.getItemRecord( filter.getItem() ).subMap( low, true, high, true ).descendingMap().values(); return this.records.subMap( low, true, high, true ).descendingMap().values();
} }
} }
@@ -20,7 +20,6 @@ package appeng.util.item;
import java.util.Iterator; import java.util.Iterator;
import java.util.NavigableMap;
import java.util.NoSuchElementException; import java.util.NoSuchElementException;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
@@ -29,47 +28,28 @@ import appeng.api.storage.data.IAEItemStack;
public class MeaningfulItemIterator<T extends IAEItemStack> implements Iterator<T> public class MeaningfulItemIterator<T extends IAEItemStack> implements Iterator<T>
{ {
private final Iterator<NavigableMap<T, T>> parent; private final Iterator<T> parent;
private Iterator<T> innerIterater = null;
private T next; private T next;
public MeaningfulItemIterator( final Iterator<NavigableMap<T, T>> iterator ) public MeaningfulItemIterator( final Iterator<T> iterator )
{ {
this.parent = iterator; this.parent = iterator;
if( this.parent.hasNext() )
{
this.innerIterater = this.parent.next().values().iterator();
}
} }
@Override @Override
public boolean hasNext() public boolean hasNext()
{ {
if( this.innerIterater == null ) while( this.parent.hasNext() )
{ {
return false; this.next = this.parent.next();
}
while( this.innerIterater.hasNext() || this.parent.hasNext() ) if( this.next.isMeaningful() )
{
if( this.innerIterater.hasNext() )
{ {
this.next = this.innerIterater.next(); return true;
if( this.next.isMeaningful() )
{
return true;
}
else
{
this.innerIterater.remove(); // self cleaning :3
}
} }
else
if( this.parent.hasNext() )
{ {
this.innerIterater = this.parent.next().values().iterator(); this.parent.remove(); // self cleaning :3
} }
} }
@@ -1,179 +0,0 @@
/*
* This file is part of Applied Energistics 2.
* Copyright (c) 2013 - 2015, AlgorithmX2, All rights reserved.
*
* Applied Energistics 2 is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Applied Energistics 2 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
*/
package appeng.util.item;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import javax.annotation.Nonnull;
import com.google.common.base.Predicate;
import com.google.common.collect.Iterators;
import appeng.api.config.FuzzyMode;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList;
/**
* An unsorted {@link IItemList} providing constant access time instead of logarithmic time.
*
* As tradeoff it will no longer support fuzzy operations.
* Also no advanced features like storing craftable or requestable items is supported.
*
*/
public final class UnsortedItemList implements IItemList<IAEItemStack>
{
/**
* {@link Predicate} to filter all meaningful entries with {@link Iterators}
*/
private static final Predicate<IAEItemStack> MEANINGFUL_PREDICATE = new Predicate<IAEItemStack>()
{
@Override
public boolean apply( @Nonnull final IAEItemStack input )
{
return input.isMeaningful();
}
};
private final Map<IAEItemStack, IAEItemStack> records = new HashMap<IAEItemStack, IAEItemStack>();
@Override
public void add( final IAEItemStack option )
{
if( option == null )
{
return;
}
final IAEItemStack st = this.records.get( option );
if( st != null )
{
st.add( option );
return;
}
final IAEItemStack opt = option.copy();
this.records.put( opt, opt );
}
@Override
public IAEItemStack findPrecise( final IAEItemStack itemStack )
{
if( itemStack == null )
{
return null;
}
return this.records.get( itemStack );
}
@Override
public boolean isEmpty()
{
return !this.iterator().hasNext();
}
@Override
public int size()
{
return this.records.size();
}
@Override
public Iterator<IAEItemStack> iterator()
{
return Iterators.filter( this.records.values().iterator(), MEANINGFUL_PREDICATE );
}
@Override
public IAEItemStack getFirstItem()
{
for( final IAEItemStack stackType : this )
{
return stackType;
}
return null;
}
@Override
public void resetStatus()
{
for( final IAEItemStack i : this )
{
i.reset();
}
}
/**
* Unsupported due to being a unsorted collection and thus only solvable in linear or worse time.
*
* @deprecated to indicate this method is unsupported.
*/
@Override
@Deprecated
public Collection<IAEItemStack> findFuzzy( final IAEItemStack filter, final FuzzyMode fuzzy )
{
throw new UnsupportedOperationException( "Unsupported on an unsorted collection" );
}
/**
* Unsupported to avoid being used as anything but a plain collection to store real item stacks.
*
* @deprecated to indicate this method is unsupported.
*/
@Override
@Deprecated
public void addStorage( final IAEItemStack option )
{
throw new UnsupportedOperationException( "Purely designed for item storage" );
}
/**
* Unsupported to avoid being used as anything but a plain collection to store real item stacks.
*
* @deprecated to indicate this method is unsupported.
*/
@Override
@Deprecated
public void addCrafting( final IAEItemStack option )
{
throw new UnsupportedOperationException( "Purely designed for item storage" );
}
/**
* Unsupported to avoid being used as anything but a plain collection to store real item stacks.
*
* @deprecated to indicate this method is unsupported.
*/
@Override
@Deprecated
public void addRequestable( final IAEItemStack option )
{
throw new UnsupportedOperationException( "Purely designed for item storage" );
}
}
@@ -1,8 +1,9 @@
// Blocks
tile.appliedenergistics2.BlockCableBus.name=AE2 Kábel és/vagy Busz tile.appliedenergistics2.BlockCableBus.name=AE2 Kábel és/vagy Busz
tile.appliedenergistics2.BlockCellWorkbench.name=Cella Munkaasztal tile.appliedenergistics2.BlockCellWorkbench.name=Cella Munkaasztal
tile.appliedenergistics2.BlockCharger.name=Feltöltő tile.appliedenergistics2.BlockCharger.name=Töltő
tile.appliedenergistics2.BlockChest.name=ME Láda tile.appliedenergistics2.BlockChest.name=ME Láda
tile.appliedenergistics2.BlockCondenser.name=Matter Condenser tile.appliedenergistics2.BlockCondenser.name=Anyag Sűrítő
tile.appliedenergistics2.BlockController.name=ME Vezérlő tile.appliedenergistics2.BlockController.name=ME Vezérlő
tile.appliedenergistics2.BlockCrank.name=Fa Kurbli tile.appliedenergistics2.BlockCrank.name=Fa Kurbli
tile.appliedenergistics2.BlockCreativeEnergyCell.name=Kreatív Energia Cella tile.appliedenergistics2.BlockCreativeEnergyCell.name=Kreatív Energia Cella
@@ -10,11 +11,11 @@ tile.appliedenergistics2.BlockDenseEnergyCell.name=Sűrű Energia Cella
tile.appliedenergistics2.BlockEnergyCell.name=Energia Cella tile.appliedenergistics2.BlockEnergyCell.name=Energia Cella
tile.appliedenergistics2.BlockDrive.name=ME Meghajtó tile.appliedenergistics2.BlockDrive.name=ME Meghajtó
tile.appliedenergistics2.BlockEnergyAcceptor.name=Energia Befogadó tile.appliedenergistics2.BlockEnergyAcceptor.name=Energia Befogadó
tile.appliedenergistics2.BlockGrinder.name=Kvarc Csiszo tile.appliedenergistics2.BlockGrinder.name=Kvarc Dará
tile.appliedenergistics2.BlockMatrixFrame.name=Mátrix Keret tile.appliedenergistics2.BlockMatrixFrame.name=Mátrix Keret
tile.appliedenergistics2.BlockIOPort.name=ME IO Port tile.appliedenergistics2.BlockIOPort.name=ME Be/Ki Port
tile.appliedenergistics2.BlockInscriber.name=Karcoló tile.appliedenergistics2.BlockInscriber.name=Karcoló
tile.appliedenergistics2.BlockInterface.name=ME Csatlakozási Felület tile.appliedenergistics2.BlockInterface.name=ME Interfész
tile.appliedenergistics2.BlockQuantumLinkChamber.name=ME Kvantum Összekötő Kamra tile.appliedenergistics2.BlockQuantumLinkChamber.name=ME Kvantum Összekötő Kamra
tile.appliedenergistics2.BlockQuantumRing.name=ME Kvantum Gyűrű tile.appliedenergistics2.BlockQuantumRing.name=ME Kvantum Gyűrű
tile.appliedenergistics2.BlockFluix.name=Fluix Blokk tile.appliedenergistics2.BlockFluix.name=Fluix Blokk
@@ -23,293 +24,367 @@ tile.appliedenergistics2.BlockQuartzChiseled.name=Finom Certus Kvarc Blokk
tile.appliedenergistics2.BlockQuartzGlass.name=Kvarc Üveg tile.appliedenergistics2.BlockQuartzGlass.name=Kvarc Üveg
tile.appliedenergistics2.BlockQuartzLamp.name=Vibráló Kvarc Üveg tile.appliedenergistics2.BlockQuartzLamp.name=Vibráló Kvarc Üveg
tile.appliedenergistics2.BlockQuartzPillar.name=Certus Kvarc Oszlop tile.appliedenergistics2.BlockQuartzPillar.name=Certus Kvarc Oszlop
tile.appliedenergistics2.BlockQuartzTorch.name=Feltöltött Kvarc Fáklya tile.appliedenergistics2.BlockQuartzTorch.name=Töltött Kvarc Test
tile.appliedenergistics2.BlockLightDetector.name=Fény Detector Fixture tile.appliedenergistics2.BlockLightDetector.name=Fény Észlelő test
tile.appliedenergistics2.BlockSpatialIOPort.name=Spatial IO Port tile.appliedenergistics2.BlockSpatialIOPort.name=Tér-IO Port
tile.appliedenergistics2.BlockSpatialPylon.name=Spatial Pylon tile.appliedenergistics2.BlockSpatialPylon.name=Tér-Pylon
tile.appliedenergistics2.BlockTinyTNT.name=Pici TNT tile.appliedenergistics2.BlockTinyTNT.name=Pici TNT
tile.appliedenergistics2.BlockVibrationChamber.name=Vibrációs Kamra tile.appliedenergistics2.BlockVibrationChamber.name=Vibrációs Kamra
tile.appliedenergistics2.BlockWireless.name=ME Wireless Hozzáférési Pont tile.appliedenergistics2.BlockWireless.name=ME Vezetéknélküli Hozzáférési Pont
tile.appliedenergistics2.OreQuartz.name=Certus Kvarc Érc tile.appliedenergistics2.OreQuartz.name=Certus Kvarc Érc
tile.appliedenergistics2.OreQuartzCharged.name=Feltöltött Certus Kvarc Érc tile.appliedenergistics2.OreQuartzCharged.name=Töltött Certus Kvarc Érc
tile.appliedenergistics2.BlockSecurity.name=ME Bizonsági Terminál tile.appliedenergistics2.BlockSecurity.name=ME Bizonsági Terminál
tile.appliedenergistics2.BlockQuartzGrowthAccelerator.name=Kristály Növekedés Gyorsító tile.appliedenergistics2.BlockQuartzGrowthAccelerator.name=Kristály Növekedés Gyorsító
tile.appliedenergistics2.BlockSkyStone.name=Égbolt Kő tile.appliedenergistics2.BlockSkyStone.name=Égboltkő
tile.appliedenergistics2.BlockSkyStone.Block.name=Égboltkő Blokk tile.appliedenergistics2.BlockSkyStone.Block.name=Égboltkő Blokk
tile.appliedenergistics2.BlockSkyStone.Brick.name=Égboltkő Tégla tile.appliedenergistics2.BlockSkyStone.Brick.name=Égboltkő Tégla
tile.appliedenergistics2.BlockSkyStone.SmallBrick.name=Kicsi Égboltkő Tégla tile.appliedenergistics2.BlockSkyStone.SmallBrick.name=Kicsi Égboltkő Tégla
tile.appliedenergistics2.BlockSkyChest.name=Égboltkő Láda tile.appliedenergistics2.BlockSkyChest.name=Égboltkő Láda
tile.appliedenergistics2.BlockSkyChest.Block.name=Égboltkő Blokk Láda tile.appliedenergistics2.BlockSkyChest.Block.name=Égboltkő Blokk Láda
tile.appliedenergistics2.BlockSkyCompass.name=Meteorite Iránytű tile.appliedenergistics2.BlockSkyCompass.name=Meteor Iránytű
tile.appliedenergistics2.BlockCraftingMonitor.name=Barkácsoló Monitor tile.appliedenergistics2.BlockCraftingMonitor.name=Barkácsoló Monitor
tile.appliedenergistics2.BlockCraftingStorage.name=1k Crafting Tároló tile.appliedenergistics2.BlockCraftingStorage.name=1k Barkács Tároló
tile.appliedenergistics2.BlockCraftingStorage4k.name=4k Crafting Tároló tile.appliedenergistics2.BlockCraftingStorage4k.name=4k Barkács Tároló
tile.appliedenergistics2.BlockCraftingStorage16k.name=16k Crafting Tároló tile.appliedenergistics2.BlockCraftingStorage16k.name=16k Barkács Tároló
tile.appliedenergistics2.BlockCraftingStorage64k.name=64k Crafting Tároló tile.appliedenergistics2.BlockCraftingStorage64k.name=64k Barkács Tároló
tile.appliedenergistics2.BlockCraftingAccelerator.name=Crafting Co-Processing Egység tile.appliedenergistics2.BlockCraftingAccelerator.name=Barkács Segédfeldolgozó Egység
tile.appliedenergistics2.BlockCraftingUnit.name=Crafting Egység tile.appliedenergistics2.BlockCraftingUnit.name=Barkácsoló Egység
tile.appliedenergistics2.BlockMolecularAssembler.name=Molekuláris Összerakó tile.appliedenergistics2.BlockMolecularAssembler.name=Molekuláris Összeállító
// Stairs
tile.appliedenergistics2.ChiseledQuartzStairBlock.name=Finom Certus Kvarc Lépcső
tile.appliedenergistics2.FluixStairBlock.name=Fluix Lépcső
tile.appliedenergistics2.QuartzPillarStairBlock.name=Certus Kvarc Oszlop Lépcső
tile.appliedenergistics2.QuartzStairBlock.name=Certus Kvarc Lépcső
tile.appliedenergistics2.SkyStoneBlockStairBlock.name=Égboltkő Blokk Lépcső
tile.appliedenergistics2.SkyStoneBrickStairBlock.name=Égboltkő Tégla Lépcső
tile.appliedenergistics2.SkyStoneSmallBrickStairBlock.name=Kicsi Égboltkő Tégla Lépcső
tile.appliedenergistics2.SkyStoneStairBlock.name=Égboltkő Lépcső
// Slabs
tile.appliedenergistics2.ChiseledQuartzSlabBlock.name=Finom Certus Kvarc Lépcsőfok
tile.appliedenergistics2.FluixSlabBlock.name=Fluix Lépcsőfok
tile.appliedenergistics2.QuartzPillarSlabBlock.name=Certus Kvarc Oszlop Lépcsőfok
tile.appliedenergistics2.QuartzSlabBlock.name=Certus Kvarc Lépcsőfok
tile.appliedenergistics2.SkyStoneBlockSlabBlock.name=Égboltkő Blokk Lépcsőfok
tile.appliedenergistics2.SkyStoneBrickSlabBlock.name=Égboltkő Tégla Lépcsőfok
tile.appliedenergistics2.SkyStoneSmallBrickSlabBlock.name=Kicsi Égboltkő Tégla Lépcsőfok
tile.appliedenergistics2.SkyStoneSlabBlock.name=Égboltkő Lépcsőfok
// Chat Messages
chat.appliedenergistics2.ChestCannotReadStorageCell=Az ME Láda nem tudja olvasni a tároló cellát. chat.appliedenergistics2.ChestCannotReadStorageCell=Az ME Láda nem tudja olvasni a tároló cellát.
chat.appliedenergistics2.SettingCleared=Beállítások törölve. chat.appliedenergistics2.SettingCleared=Beállítások törölve.
chat.appliedenergistics2.OutOfRange=Wireless hatókörön kívül. chat.appliedenergistics2.OutOfRange=A vezetéknélküli hozzáférési pont hatókörön kívül van.
chat.appliedenergistics2.InvalidMachine=Érvénytelen gép. chat.appliedenergistics2.InvalidMachine=Érvénytelen gép.
chat.appliedenergistics2.LoadedSettings=Beállítások sikeresen beolvasva. chat.appliedenergistics2.LoadedSettings=Beállítások sikeresen beolvasva.
chat.appliedenergistics2.DeviceNotPowered=A készüléknek alacsony az energia szintje. chat.appliedenergistics2.DeviceNotPowered=A készülékenergia szintje alacsony.
chat.appliedenergistics2.MachineNotPowered=A készülék nem kap energiát. chat.appliedenergistics2.DeviceNotWirelessTerminal=A készülék nem egy Vezetéknélküli Terminál.
chat.appliedenergistics2.CommunicationError=Hiba lépet fel a hálózat kommunikációja közben. chat.appliedenergistics2.DeviceNotLinked=Az eszköz nincs összekötve.
chat.appliedenergistics2.SavedSettings=Beállítások sikeresen elmentve. chat.appliedenergistics2.SavedSettings=Beállítások sikeresen elmentve.
chat.appliedenergistics2.MachineNotPowered=A gép nem kap energiát.
chat.appliedenergistics2.CommunicationError=Hiba a hálózattal való kommunikáció közben.
chat.appliedenergistics2.SavedSettings=Beállítások sikeresen mentve.
chat.appliedenergistics2.AmmoDepleted=A lőszer kiürült. chat.appliedenergistics2.AmmoDepleted=A lőszer kiürült.
chat.appliedenergistics2.isNowLocked=Monitor zárolva. chat.appliedenergistics2.isNowLocked=Monitor zárolva.
chat.appliedenergistics2.isNowUnlocked=Monitor feloldva. chat.appliedenergistics2.isNowUnlocked=Monitor feloldva.
// Creative Tabs
itemGroup.appliedenergistics2=Applied Energistics 2 itemGroup.appliedenergistics2=Applied Energistics 2
itemGroup.appliedenergistics2.facades=Applied Energistics 2 - Homlokzatok itemGroup.appliedenergistics2.facades=Applied Energistics 2 - Látszatok
// GUI
gui.appliedenergistics2.CraftingTerminal=Barkácsoló Terminál gui.appliedenergistics2.CraftingTerminal=Barkácsoló Terminál
gui.appliedenergistics2.METunnel=ME gui.appliedenergistics2.METunnel=ME Csatorna
gui.appliedenergistics2.ItemTunnel=Item gui.appliedenergistics2.ItemTunnel=Tárgy Csatorna
gui.appliedenergistics2.FluidTunnel=Folyadék gui.appliedenergistics2.FluidTunnel=Folyadék Csatorna
gui.appliedenergistics2.RedstoneTunnel=Vöröskő gui.appliedenergistics2.RedstoneTunnel=Vöröskő Csatorna
gui.appliedenergistics2.EUTunnel=EU gui.appliedenergistics2.EUTunnel=EU Csatorna
gui.appliedenergistics2.RFTunnel=RF gui.appliedenergistics2.RFTunnel=RF Csatorna
gui.appliedenergistics2.LightTunnel=Fény gui.appliedenergistics2.LightTunnel=Fény Csatorna
gui.appliedenergistics2.OCTunnel=OpenComputers
gui.appliedenergistics2.PressureTunnel=Nyomás
gui.appliedenergistics2.security.extract.name=Kiszed gui.appliedenergistics2.security.extract.name=Eltávolítás
gui.appliedenergistics2.security.inject.name=Berak gui.appliedenergistics2.security.inject.name=Behelyezés
gui.appliedenergistics2.security.craft.name=Craftolás gui.appliedenergistics2.security.craft.name=Barkácsolás
gui.appliedenergistics2.security.build.name=Építés gui.appliedenergistics2.security.build.name=Építés
gui.appliedenergistics2.security.security.name=Biztonság gui.appliedenergistics2.security.security.name=Biztonság
gui.appliedenergistics2.security.extract.tip=A felhasználónak engedélyezett, hogy eltávolítson itemeket a tárolóból. gui.appliedenergistics2.security.extract.tip=A felhasználónak engedélyezett, hogy eltávolítson tárgyakat a tárolóból.
gui.appliedenergistics2.security.inject.tip=A felhasználónak engedélyezett, hogy tároljon új itemeket a tárolóban. gui.appliedenergistics2.security.inject.tip=A felhasználónak engedélyezett, hogy új tárgyakat helyezzen a tárolóba.
gui.appliedenergistics2.security.craft.tip=A felhasználó képes indítani új craftolást. gui.appliedenergistics2.security.craft.tip=A felhasználó képes új barkács folyamatot indítani.
gui.appliedenergistics2.security.build.tip=A felhasználó képes módosítani a teljes struktúrát a hálózaton, illetve képes változtatni a beállításokon. gui.appliedenergistics2.security.build.tip=A felhasználó képes módosítani a hálózat teljes struktúráját, illetve változtatni a beállításokon.
gui.appliedenergistics2.security.security.tip=A felhasználó képes hozzáférni és módosítani a biztonsági terminálon. gui.appliedenergistics2.security.security.tip=A felhasználó képes hozzáférni és módosítani a biztonsági terminálon.
gui.appliedenergistics2.Efficiency=Hatékonyság gui.appliedenergistics2.Efficiency=Hatékonyság
gui.appliedenergistics2.RequiredPower=Szükséges Energia gui.appliedenergistics2.RequiredPower=Szükséges Energia
gui.appliedenergistics2.StoredPower=Tárolt Energia gui.appliedenergistics2.StoredPower=Tárolt Energia
gui.appliedenergistics2.MaxPower=Maximum Energia gui.appliedenergistics2.MaxPower=Maximum Energia
gui.appliedenergistics2.QuartzCuttingKnife=Kvarc Vágó Kés gui.appliedenergistics2.QuartzCuttingKnife=Kvarc Vágókés
gui.appliedenergistics2.Inscriber=Karcoló gui.appliedenergistics2.Inscriber=Véső
gui.appliedenergistics2.Wireless=Wireless Hozzáférési Pont gui.appliedenergistics2.Wireless=Vezetéknélküli Hozzáférési Pont
gui.appliedenergistics2.WirelessTerminal=Wireless terminal gui.appliedenergistics2.WirelessTerminal=Vezetéknélküli terminál
gui.appliedenergistics2.NoPermissions=Hozzáférési jog nincs kijelölve. gui.appliedenergistics2.NoPermissions=Hozzáférési jog nincs kijelölve.
gui.appliedenergistics2.SecurityCardEditor=Biometrikus kártya szerkesztő gui.appliedenergistics2.SecurityCardEditor=Biometrikus kártya szerkesztő
gui.appliedenergistics2.Encoded=Kódolva gui.appliedenergistics2.Encoded=Kódolva
gui.appliedenergistics2.Priority=Prioritás gui.appliedenergistics2.Priority=Prioritás
gui.appliedenergistics2.StorageBus=Tároló Busz gui.appliedenergistics2.StorageBus=Tároló Busz
gui.appliedenergistics2.EnergyDrain=Passzív Elszívás gui.appliedenergistics2.EnergyDrain=Passzív energia igény
gui.appliedenergistics2.Installed=Telepítve gui.appliedenergistics2.Installed=Telepítve
gui.appliedenergistics2.NetworkTool=Hálózati Eszköz gui.appliedenergistics2.NetworkTool=Hálózati Eszköz
gui.appliedenergistics2.PowerUsageRate=Energia Használat gui.appliedenergistics2.PowerUsageRate=Energia Használat
gui.appliedenergistics2.PowerInputRate=Energia Generálás gui.appliedenergistics2.PowerInputRate=Energia Bemenet
gui.appliedenergistics2.PortableCell=Szállítható Cella gui.appliedenergistics2.PortableCell=Szállítható Cella
gui.appliedenergistics2.Security=Biztonsági Szabályzat gui.appliedenergistics2.Security=Biztonsági Szabályzat
gui.appliedenergistics2.CellWorkbench=Cella Munkaasztal gui.appliedenergistics2.CellWorkbench=Cella Munkaasztal
gui.appliedenergistics2.QuantumLinkChamber=Kvantum összekötő kamra gui.appliedenergistics2.QuantumLinkChamber=Kvantum összekötő kamra
gui.appliedenergistics2.IOPort=ME IO Port gui.appliedenergistics2.IOPort=ME IO Port
gui.appliedenergistics2.Chest=ME Láda gui.appliedenergistics2.Chest=ME Láda
gui.appliedenergistics2.Condenser=Matter Condenser gui.appliedenergistics2.Condenser=Anyag Sűrítő
gui.appliedenergistics2.Config=Konfig gui.appliedenergistics2.Config=Konfiguráció
gui.appliedenergistics2.Drive=ME Meghajtó gui.appliedenergistics2.Drive=ME Meghajtó
gui.appliedenergistics2.ExportBus=ME Export Busz gui.appliedenergistics2.ExportBus=ME Export Busz
gui.appliedenergistics2.GrindStone=Csiszo gui.appliedenergistics2.GrindStone=Dará
gui.appliedenergistics2.ImportBus=ME Import Busz gui.appliedenergistics2.ImportBus=ME Import Busz
gui.appliedenergistics2.Interface=ME Csatlakozás Felület gui.appliedenergistics2.Interface=ME Interfész
gui.appliedenergistics2.LevelEmitter=ME Level Emitter gui.appliedenergistics2.LevelEmitter=ME Szint Kibocsátó
gui.appliedenergistics2.Of=-ból gui.appliedenergistics2.Of=-ból/-ből
gui.appliedenergistics2.Patterns=Minták gui.appliedenergistics2.Patterns=Minták
gui.appliedenergistics2.SpatialIOPort=Spatial IO Port gui.appliedenergistics2.SpatialIOPort=Tér-IO Port
gui.appliedenergistics2.StoredEnergy=Tárolt Energia gui.appliedenergistics2.StoredEnergy=Tárolt Energia
gui.appliedenergistics2.StoredItems=Tárolt Itemek gui.appliedenergistics2.StoredItems=Tárolt Tárgyak
gui.appliedenergistics2.Terminal=Terminal gui.appliedenergistics2.Terminal=Terminál
gui.appliedenergistics2.InterfaceTerminal=Interface Terminal gui.appliedenergistics2.InterfaceTerminal=Interfész Terminál
gui.appliedenergistics2.InterfaceTerminalHint=Show Or Hide on Interface Terminal. gui.appliedenergistics2.InterfaceTerminalHint=Az interfész terminál megjelenítése, elrejtése.
gui.appliedenergistics2.FormationPlane=Formation Plane gui.appliedenergistics2.FormationPlane=Kialakító Lap
gui.appliedenergistics2.VibrationChamber=Vibrációs Kamra gui.appliedenergistics2.VibrationChamber=Vibrációs Kamra
gui.appliedenergistics2.NetworkDetails=Hálózati Részletek gui.appliedenergistics2.NetworkDetails=Hálózati Részletek
gui.appliedenergistics2.StorageCells=ME Tároló Cellák gui.appliedenergistics2.StorageCells=ME Tároló Cellák
gui.appliedenergistics2.IOBuses=ME Import/Export Busz gui.appliedenergistics2.IOBuses=ME Import/Export Busz
gui.appliedenergistics2.Stores=Stores gui.appliedenergistics2.Stores=Tárak
gui.appliedenergistics2.BytesUsed=Bytes használva gui.appliedenergistics2.BytesUsed=Használt bájtok
gui.appliedenergistics2.Types=Típus gui.appliedenergistics2.Types=Típus
gui.appliedenergistics2.Blank=Üres gui.appliedenergistics2.Blank=Üres
gui.appliedenergistics2.Unlinked=Nincs Összekötve gui.appliedenergistics2.Unlinked=Nincs Összekötve
gui.appliedenergistics2.Linked=Összekötve gui.appliedenergistics2.Linked=Összekötve
gui.appliedenergistics2.StoredSize=Tárolt Méret gui.appliedenergistics2.StoredSize=Tárolt Méret
gui.appliedenergistics2.SkyChest=Ékboltkő Láda gui.appliedenergistics2.SkyChest=Ékboltkő Láda
gui.appliedenergistics2.PatternTerminal=Minta Terminal gui.appliedenergistics2.PatternTerminal=Minta Terminál
gui.appliedenergistics2.CraftingPattern=Minta Kraftolás gui.appliedenergistics2.CraftingPattern=Barkácsoló Minta
gui.appliedenergistics2.MolecularAssembler=Molekuláris Összerakó gui.appliedenergistics2.MolecularAssembler=Molekuláris Összeállító
gui.appliedenergistics2.ProcessingPattern=Minta Feldolgozó gui.appliedenergistics2.ProcessingPattern=Feldolgozó Minta
gui.appliedenergistics2.Crafts=Crafts gui.appliedenergistics2.Crafts=Barkácsol
gui.appliedenergistics2.And=és gui.appliedenergistics2.And=és
gui.appliedenergistics2.Creates=Creates gui.appliedenergistics2.Creates=Amít készít
gui.appliedenergistics2.With=-vel gui.appliedenergistics2.With=Az alábbiakkal
gui.appliedenergistics2.InWorldCrafting=AE2 In World Crafting gui.appliedenergistics2.Substitute=Pótlékokat használ:
gui.appliedenergistics2.inWorldFluix=Drop 1 Charged Certus Quartz + 1 Nether Quartz + Redstone Dust into a puddle next to one another and wait a moment. gui.appliedenergistics2.Yes=Igen
gui.appliedenergistics2.inWorldPurificationCertus=Drop a Certus Quartz Seed made from Certus Quartz Dust and Sand into a puddle of water; to make the process faster add Crystal Growth Accelerators. gui.appliedenergistics2.No=Nem
gui.appliedenergistics2.inWorldPurificationNether=Drop a Nether Quartz Seed made from Nether Quartz Dust and Sand into a puddle of water; to make the process faster add Crystal Growth Accelerators. gui.appliedenergistics2.InWorldCrafting=AE2 Világbeli Barkácsolás
gui.appliedenergistics2.inWorldPurificationFluix=Drop a Fluix Seed made from Fluix Dust and Sand into a puddle of water; to make the process faster add Crystal Growth Accelerators. gui.appliedenergistics2.inWorldFluix=Dobj 1 Töltött Certus Kvarcot + 1 Alvilági Kvarcot + 1 Vöröskő port egymás mellé egy pocsolyába.
gui.appliedenergistics2.inWorldSingularity=To create drop 1 Singularity and 1 Ender Dust and cause an explosion within range of the items. gui.appliedenergistics2.inWorldPurificationCertus=Dobj egy Certus Kvarc Porból és homokból készúlt magot vízbe; Hogy felgyorsítsd a folyamatot helyezz le Kristály Növekedés gyorsítót.
gui.appliedenergistics2.ChargedQuartz=Charged Certus Quartz is crafted by inserting an uncharged Certus Quartz Crystal into the Charger, and powering it. gui.appliedenergistics2.inWorldPurificationNether=Dobj egy Alvilági Kvarc Porból és homokból készúlt magot vízbe; Hogy felgyorsítsd a folyamatot helyezz le Kristály Növekedés gyorsítót.
gui.appliedenergistics2.OfSecondOutput=%1$d%% Chance for second output. gui.appliedenergistics2.inWorldPurificationFluix=Dobj egy Fluix Porból és homokból készúlt magot vízbe; Hogy felgyorsítsd a folyamatot helyezz le Kristály Növekedés gyorsítót.
gui.appliedenergistics2.NoSecondOutput=No Secondary Output gui.appliedenergistics2.inWorldSingularity=A készítéséhez dobj egy Szingularitást és egy Bevégzőgyöngy Port a földre és robbantsd fel őket.
gui.appliedenergistics2.SelectAmount=Select Amount gui.appliedenergistics2.ChargedQuartz=Töltött Certus Kvarc készítéséhez helyezz be egy Certus Kvarcot a Töltőbe.
gui.appliedenergistics2.CopyMode=Copy Mode gui.appliedenergistics2.ChargedQuartzFind=Töltött Certus Kvarcot félritkán találhatsz a világban. Hasonlít a sima Certus Kvarca csak szikrázik.
gui.appliedenergistics2.CopyModeDesc=Controls if the contents of the configuration pane are cleared when you remove the cell. gui.appliedenergistics2.NoSecondOutput=Nincs másodlagos termék
gui.appliedenergistics2.OfSecondOutput=%1$d%% Esély másodlagos termékre.
gui.appliedenergistics2.MultipleOutputs=%1$d%% esély másodlagos, %2$d%% esély harmadlagos termékre.
gui.appliedenergistics2.SelectAmount=Válassz mennyíséget
gui.appliedenergistics2.CopyMode=Másoló mód
gui.appliedenergistics2.CopyModeDesc=Befolyásolja hogy a beállítás ablakon lévő tárgyak megjelennek-e a terminálban.
gui.appliedenergistics2.Next=Következő gui.appliedenergistics2.Next=Következő
gui.appliedenergistics2.Lumen=Lumen gui.appliedenergistics2.Lumen=Lumen
gui.appliedenergistics2.Empty=Üres gui.appliedenergistics2.Empty=Üres
gui.appliedenergistics2.Stored=Tárolva gui.appliedenergistics2.Stored=Tárolva
gui.appliedenergistics2.Cancel=Mégse gui.appliedenergistics2.Cancel=Mégse
gui.appliedenergistics2.Crafting=Craftolás gui.appliedenergistics2.ETAFormat=HH:mm:ss
gui.appliedenergistics2.Scheduled=Idözitve gui.appliedenergistics2.Crafting=Barkácsolás alatt
gui.appliedenergistics2.CraftingStatus=Craftolási Státusz gui.appliedenergistics2.Scheduled=Ütemezett
gui.appliedenergistics2.CraftingStatus=Barkácsolási Státusz
gui.appliedenergistics2.FromStorage=Rendelkezésre áll gui.appliedenergistics2.FromStorage=Rendelkezésre áll
gui.appliedenergistics2.ToCraft=To Craft gui.appliedenergistics2.ToCraft=Hogy barkácsoljon
gui.appliedenergistics2.CraftingPlan=Crafting Plan gui.appliedenergistics2.CraftingPlan=Barkácsolási terv
gui.appliedenergistics2.Automatic=Autmatikus gui.appliedenergistics2.Automatic=Automatikus
gui.appliedenergistics2.Start=Indítás gui.appliedenergistics2.Start=Indítás
gui.appliedenergistics2.Missing=Hiányzik gui.appliedenergistics2.Missing=Hiányzik
gui.appliedenergistics2.Bytes=Storage gui.appliedenergistics2.Bytes=Bájt
gui.appliedenergistics2.Simulation=Simulation gui.appliedenergistics2.Simulation=Szimuláció
gui.appliedenergistics2.CoProcessors=Co Processors gui.appliedenergistics2.CoProcessors=Segéd CPU
gui.appliedenergistics2.CraftingCPU=Crafting CPU gui.appliedenergistics2.CraftingCPU=Barkácsolási CPU
gui.appliedenergistics2.NoCraftingCPUs=No Crafting CPUs are Available gui.appliedenergistics2.NoCraftingCPUs=Nincs elérhető Barkácsolási CPU
gui.appliedenergistics2.CalculatingWait=Calculating Please Wait... gui.appliedenergistics2.CalculatingWait=Számítás folyamatban...
gui.appliedenergistics2.Clean=Tiszta gui.appliedenergistics2.Clean=Tiszta
gui.appliedenergistics2.InvalidPattern=Invalid Pattern gui.appliedenergistics2.InvalidPattern=Érvénytelen Minta
gui.appliedenergistics2.Range=Hatótáv gui.appliedenergistics2.Range=Hatótáv
gui.appliedenergistics2.TransparentFacades=Átlátszó Látszatok
gui.appliedenergistics2.TransparentFacadesHint=Irányítja a látszatok láthatóságát miközben a Hálózati Eszköz a hotbarodon van.
gui.appliedenergistics2.CPUs=CPU
gui.appliedenergistics2.NoCraftingJobs=Nincs aktív Barkács folyamat
gui.appliedenergistics2.FacadeCrafting=Látszat Barkácsolás
gui.appliedenergistics2.inWorldCraftingPresses=A Barkács Nyomatok meteoritok belsejében találhatók amiket a világban találsz, a Meteor Iránytű segítségével.
gui.appliedenergistics2.Included=Tartalmazott
gui.appliedenergistics2.Excluded=Kihagyott
gui.appliedenergistics2.Partitioned=Particionált
gui.appliedenergistics2.Precise=Precíz
gui.appliedenergistics2.Fuzzy=Megkülönböztető
gui.appliedenergistics2.SmallFontCraft=Barkács
gui.appliedenergistics2.LargeFontCraft=+
gui.appliedenergistics2.Nothing=Semmi
gui.tooltips.appliedenergistics2.Stash=Store Items // GUI Tooltips
gui.tooltips.appliedenergistics2.StashDesc=Return items on the crafting grid to network storage. gui.tooltips.appliedenergistics2.Stash=Tárgyak raktározása
gui.tooltips.appliedenergistics2.Substitutions=Ore-Dict Substitutions gui.tooltips.appliedenergistics2.StashDesc=A tárgyak barkácsfelületről való hálózatba helyezése.
gui.tooltips.appliedenergistics2.SubstitutionsDesc=Edit substitution options for input components. gui.tooltips.appliedenergistics2.Substitutions=Érc-szótár pótlás
gui.tooltips.appliedenergistics2.SubstitutionsOn=Substitutions Enabled gui.tooltips.appliedenergistics2.SubstitutionsDescEnabled=Bemeneti pótlékok engedélyezése.
gui.tooltips.appliedenergistics2.SubstitutionsOff=Substitutions Disabled gui.tooltips.appliedenergistics2.SubstitutionsDescDisabled=Bemeneti pótlékok tiltása.
gui.tooltips.appliedenergistics2.Encode=Encode Pattern gui.tooltips.appliedenergistics2.SubstitutionsOn=Pótlékok engedélyezve.
gui.tooltips.appliedenergistics2.EncodeDescription=Write the entered pattern to the current encoded pattern, or to available blank pattern. gui.tooltips.appliedenergistics2.SubstitutionsOff=Pótlékok tiltva.
gui.tooltips.appliedenergistics2.FuzzyMode=Fuzzy Comparison gui.tooltips.appliedenergistics2.Encode=Minta kódolása
gui.tooltips.appliedenergistics2.FZPercent_25=Split Damage at 25% gui.tooltips.appliedenergistics2.EncodeDescription=A betáplált minta jelenlegi Kódolt Mintára, vagy elérhető Üres Mintára írása.
gui.tooltips.appliedenergistics2.FZPercent_50=Split Damage at 50% gui.tooltips.appliedenergistics2.FuzzyMode=Megkülönböztető összehasonlítás
gui.tooltips.appliedenergistics2.FZPercent_75=Split Damage at 75% gui.tooltips.appliedenergistics2.FZPercent_25=25% sérülésnél való elválasztás
gui.tooltips.appliedenergistics2.FZPercent_99=Split Damage at 99% gui.tooltips.appliedenergistics2.FZPercent_50=50% sérülésnél való elválasztás
gui.tooltips.appliedenergistics2.SortOrder=Sort Order gui.tooltips.appliedenergistics2.FZPercent_75=75% sérülésnél való elválasztás
gui.tooltips.appliedenergistics2.SortBy=Sort By gui.tooltips.appliedenergistics2.FZPercent_99=99% sérülésnél való elválasztás
gui.tooltips.appliedenergistics2.FZIgnoreAll=Match Any gui.tooltips.appliedenergistics2.SortOrder=Rendezési irány
gui.tooltips.appliedenergistics2.TransferDirection=Transfer Direction gui.tooltips.appliedenergistics2.SortBy=Rendezés
gui.tooltips.appliedenergistics2.TransferToNetwork=Transfer data to Network gui.tooltips.appliedenergistics2.FZIgnoreAll=Akármelyikkel egyező
gui.tooltips.appliedenergistics2.TransferToStorageCell=Transfer data to Storage Cell gui.tooltips.appliedenergistics2.TransferDirection=Átviteli irány
gui.tooltips.appliedenergistics2.ToggleSortDirection=Toggle sorting direction gui.tooltips.appliedenergistics2.TransferToNetwork=Az adat hálózat felé való átvitele
gui.tooltips.appliedenergistics2.StoredItems=Stored Items gui.tooltips.appliedenergistics2.TransferToStorageCell=Az adat Taroló Cella felé való átvitele
gui.tooltips.appliedenergistics2.StoredCraftable=Stored / Craftable gui.tooltips.appliedenergistics2.ToggleSortDirection=Rendezés fel/le váltogatása
gui.tooltips.appliedenergistics2.View=View gui.tooltips.appliedenergistics2.StoredItems=Tárolt tárgyak
gui.tooltips.appliedenergistics2.RedstoneMode=Redstone Mode gui.tooltips.appliedenergistics2.StoredCraftable=Tárolt / Barkácsolható tárgyak
gui.tooltips.appliedenergistics2.OperationMode=Operation Mode gui.tooltips.appliedenergistics2.View=Nézett:
gui.tooltips.appliedenergistics2.NumberOfItems=Number of items gui.tooltips.appliedenergistics2.RedstoneMode=Vöröskő Mód
gui.tooltips.appliedenergistics2.ItemName=Item name gui.tooltips.appliedenergistics2.OperationMode=Művelet Mód
gui.tooltips.appliedenergistics2.PowerUnits=Power Units gui.tooltips.appliedenergistics2.NumberOfItems=Tárgyak száma szerint
gui.tooltips.appliedenergistics2.IOMode=Input/Output Mode gui.tooltips.appliedenergistics2.ItemName=Tárgy neve szerint
gui.tooltips.appliedenergistics2.CondenserOutput=ME Condenser - Output gui.tooltips.appliedenergistics2.PowerUnits=Energia egységek
gui.tooltips.appliedenergistics2.PartitionStorage=Partition Storage gui.tooltips.appliedenergistics2.IOMode=Bemenet/Kimenet Mód
gui.tooltips.appliedenergistics2.Clear=Clear gui.tooltips.appliedenergistics2.CondenserOutput=ME Sűrítő - Kimenet
gui.tooltips.appliedenergistics2.TrashController=Deletion via Shift / Space Clicking. gui.tooltips.appliedenergistics2.PartitionStorage=Partició Tároló
gui.tooltips.appliedenergistics2.InterfaceBlockingMode=Blocking Mode gui.tooltips.appliedenergistics2.Clear=Ürítés
gui.tooltips.appliedenergistics2.InterfaceCraftingMode=Crafting Mode gui.tooltips.appliedenergistics2.TrashController=Törlés Shift/Szóköz+Kattintással.
gui.tooltips.appliedenergistics2.Trash=Destroy Items gui.tooltips.appliedenergistics2.InterfaceBlockingMode=Torlaszoló Mód
gui.tooltips.appliedenergistics2.MatterBalls=Condense Into Matter Balls\n%s per item gui.tooltips.appliedenergistics2.InterfaceCraftingMode=Barkácsoló Mód
gui.tooltips.appliedenergistics2.Singularity=Condense Into Singularities\n%s per item gui.tooltips.appliedenergistics2.Trash=Tágyak elpusztítása
gui.tooltips.appliedenergistics2.Read=Extract Only gui.tooltips.appliedenergistics2.MatterBalls=Anyaglabdává sűrítés \n%s darabonként
gui.tooltips.appliedenergistics2.Write=Insert Only gui.tooltips.appliedenergistics2.Singularity=Szingularitássá sűrítés \n%s darabonként
gui.tooltips.appliedenergistics2.ReadWrite=Bi-Directional gui.tooltips.appliedenergistics2.Read=Csak eltávolítás
gui.tooltips.appliedenergistics2.AlwaysActive=Always active gui.tooltips.appliedenergistics2.Write=Csak behelyezés
gui.tooltips.appliedenergistics2.ActiveWithoutSignal=Active without signal gui.tooltips.appliedenergistics2.ReadWrite=Két irányú
gui.tooltips.appliedenergistics2.ActiveWithSignal=Active with signal gui.tooltips.appliedenergistics2.AlwaysActive=Mindig aktív
gui.tooltips.appliedenergistics2.ActiveOnPulse=Activate once per pulse gui.tooltips.appliedenergistics2.ActiveWithoutSignal=Jel nélkül aktív
gui.tooltips.appliedenergistics2.EmitLevelsBelow=Emit when levels are below or equal to limit. gui.tooltips.appliedenergistics2.ActiveWithSignal=Jellel aktív
gui.tooltips.appliedenergistics2.EmitLevelAbove=Emit when levels are above or equal to limit. gui.tooltips.appliedenergistics2.ActiveOnPulse=Pulzusonként aktív
gui.tooltips.appliedenergistics2.SearchMode_Auto=Auto Search gui.tooltips.appliedenergistics2.EmitLevelsBelow=Kibocsátás ha a szint a határérték alatt van vagy azzal egyenlő.
gui.tooltips.appliedenergistics2.SearchMode_Standard=Standard Search gui.tooltips.appliedenergistics2.EmitLevelAbove=Kibocsátás ha a szint a határérték felett van vagy azzal egyenlő.
gui.tooltips.appliedenergistics2.SearchMode_NEIAuto=NEI Syncronized Auto gui.tooltips.appliedenergistics2.SearchMode_Auto=Automata keresés
gui.tooltips.appliedenergistics2.SearchMode_NEIStandard=NEI Syncronized Standard gui.tooltips.appliedenergistics2.SearchMode_Standard=Általános Keresés
gui.tooltips.appliedenergistics2.SearchMode=Search Box Mode gui.tooltips.appliedenergistics2.SearchMode_NEIAuto=NEI-vel szinkronizált automata
gui.tooltips.appliedenergistics2.PartitionStorageHint=Configures Partition based on currently stored items. gui.tooltips.appliedenergistics2.SearchMode_NEIStandard=NEI-vel szinkronizált általános
gui.tooltips.appliedenergistics2.ClearSettings=Clear Config/Settings gui.tooltips.appliedenergistics2.SearchMode=Keresési rublika mód
gui.tooltips.appliedenergistics2.Craftable=Craftable gui.tooltips.appliedenergistics2.PartitionStorageHint=A jelenleg tárolt tárgyak szerint konfigurálja a particiót.
gui.tooltips.appliedenergistics2.MoveWhenEmpty=Move to output when empty. gui.tooltips.appliedenergistics2.ClearSettings=Beállítások konfigurálása/törlése
gui.tooltips.appliedenergistics2.MoveWhenWorkIsDone=Move to output when work is done. gui.tooltips.appliedenergistics2.Craftable=Barkácsolható
gui.tooltips.appliedenergistics2.MoveWhenFull=Move to output when full. gui.tooltips.appliedenergistics2.MoveWhenEmpty=Helyezze a kimenetfelé mikor üres.
gui.tooltips.appliedenergistics2.Disabled=Disabled gui.tooltips.appliedenergistics2.MoveWhenWorkIsDone=Helyezze a kimenetfelé mikor a feladat kész van.
gui.tooltips.appliedenergistics2.Enable=Enabled gui.tooltips.appliedenergistics2.MoveWhenFull=Helyezze a kimenetfelé mikor megtelt.
gui.tooltips.appliedenergistics2.Blocking=Do not push crafing items if inventory contains items. gui.tooltips.appliedenergistics2.Disabled=Tiltott
gui.tooltips.appliedenergistics2.NonBlocking=Ignore the contents of the target inventory. gui.tooltips.appliedenergistics2.Enable=Engedélyezett
gui.tooltips.appliedenergistics2.Craft=Crafting Behavior gui.tooltips.appliedenergistics2.Blocking=Ne helyezzen barkácsoló tárgyakat a tárolóba ha az tartalmaz tárgyakat.
gui.tooltips.appliedenergistics2.CraftOnly=Do not use stocked items, only craft items while exporting. gui.tooltips.appliedenergistics2.NonBlocking=A cél tároló tartalmának figyelmenkívül hagyása.
gui.tooltips.appliedenergistics2.CraftEither=Use stocked items, or craft items while exporting. gui.tooltips.appliedenergistics2.Craft=Barkácsoló Viselkedés
gui.tooltips.appliedenergistics2.LevelType=Level Type gui.tooltips.appliedenergistics2.CraftOnly=Ne használjon tárolt tárgyakat, csak export közben barkácsoljon.
gui.tooltips.appliedenergistics2.LevelType_Energy=Energy gui.tooltips.appliedenergistics2.CraftEither=Használjon tárolt tárgyakat, vagy eyport közben barkácsoljon.
gui.tooltips.appliedenergistics2.LevelType_Item=Item gui.tooltips.appliedenergistics2.LevelType=Szint Típus
gui.tooltips.appliedenergistics2.InventoryTweaks=Inventory Tweaks gui.tooltips.appliedenergistics2.LevelType_Energy=Energia
gui.tooltips.appliedenergistics2.TerminalStyle=Terminal Style gui.tooltips.appliedenergistics2.LevelType_Item=Tárgy
gui.tooltips.appliedenergistics2.TerminalStyle_Full=Full Screen Terminal gui.tooltips.appliedenergistics2.InventoryTweaks=Inventory Tweaks szerint
gui.tooltips.appliedenergistics2.TerminalStyle_Tall=Tall Centered Terminal gui.tooltips.appliedenergistics2.Mod=Mod szerint
gui.tooltips.appliedenergistics2.TerminalStyle_Small=Small Centered Terminal gui.tooltips.appliedenergistics2.TerminalStyle=Terminál Stílus
gui.tooltips.appliedenergistics2.TerminalStyle_Full=Teljes képernyős Terminál
gui.tooltips.appliedenergistics2.TerminalStyle_Tall=Magas Középreigazított Terminál
gui.tooltips.appliedenergistics2.TerminalStyle_Small=Kicsi Középreigazított Terminál
gui.tooltips.appliedenergistics2.DoesntDespawn=Ez a tárgy nem fog eltűnni.
gui.tooltips.appliedenergistics2.EmitterMode=Barkács Kibocsátó Mód
gui.tooltips.appliedenergistics2.CraftViaRedstone=Jel kibocsátása barkácsoláshoz.
gui.tooltips.appliedenergistics2.EmitWhenCrafting=Jel kibocsatása barkácsoláskor.
gui.tooltips.appliedenergistics2.ReportInaccessibleItems=Elérhetetlen tárgyak jelentése
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsYes=Igen: Az el nem távolítható tárgyak is megjelennek.
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsNo=Nem: Csak az eltávolítható tárgyak jelennek meg.
gui.tooltips.appliedenergistics2.BlockPlacement=Blokk lehelyezés
gui.tooltips.appliedenergistics2.BlockPlacementYes=A blokkok blokk ként lesznek lehelyezve.
gui.tooltips.appliedenergistics2.BlockPlacementNo=A blokkok tárgyként lesznek eldobva.
gui.tooltips.appliedenergistics2.SchedulingMode=Ütemező Mód
gui.tooltips.appliedenergistics2.SchedulingModeDefault=Az első tárgy eltávolítása míg a hálózat üres, majd a következőké.
gui.tooltips.appliedenergistics2.SchedulingModeRoundRobin=Eltávolítás körkörösen.
gui.tooltips.appliedenergistics2.SchedulingModeRandom=Eltávolítás véletlenszerűen.
gui.tooltips.appliedenergistics2.ItemsStored=Tárolt tárgyak száma: %s
gui.tooltips.appliedenergistics2.ItemsRequestable=Kérhető Tárgyak száma: %s
// Units
gui.appliedenergistics2.units.appliedenergstics=AE gui.appliedenergistics2.units.appliedenergstics=AE
gui.appliedenergistics2.units.ic2=Energy Units gui.appliedenergistics2.units.ic2=Energia Egység
gui.appliedenergistics2.units.mekanism=Joules gui.appliedenergistics2.units.mekanism=Joule
gui.appliedenergistics2.units.rotarycraft=Watts gui.appliedenergistics2.units.rotarycraft=Watt
gui.appliedenergistics2.units.thermalexpansion=Redstone Flux gui.appliedenergistics2.units.thermalexpansion=Vöröskő Flux
// Colors
gui.appliedenergistics2.White=Fehér gui.appliedenergistics2.White=Fehér
gui.appliedenergistics2.Orange=Narancssárga gui.appliedenergistics2.Orange=Narancs
gui.appliedenergistics2.Magenta=Bíborvörös gui.appliedenergistics2.Magenta=Bíborvörös
gui.appliedenergistics2.LightBlue=Világos kék gui.appliedenergistics2.LightBlue=Világoskék
gui.appliedenergistics2.Yellow=Sárga gui.appliedenergistics2.Yellow=Sárga
gui.appliedenergistics2.Lime=Limezöld gui.appliedenergistics2.Lime=Lime
gui.appliedenergistics2.Pink=Rózsaszín gui.appliedenergistics2.Pink=Pink
gui.appliedenergistics2.Gray=Szürke gui.appliedenergistics2.Gray=Szürke
gui.appliedenergistics2.LightGray=Világos szürke gui.appliedenergistics2.LightGray=Világosszürke
gui.appliedenergistics2.Cyan=Cián gui.appliedenergistics2.Cyan=Cián
gui.appliedenergistics2.Purple=Lila gui.appliedenergistics2.Purple=Lila
gui.appliedenergistics2.Blue=Kék gui.appliedenergistics2.Blue=Kék
gui.appliedenergistics2.Brown=Barna gui.appliedenergistics2.Brown=Barna
gui.appliedenergistics2.Green=Zöld gui.appliedenergistics2.Green=Zöld
gui.appliedenergistics2.Red=Piros gui.appliedenergistics2.Red=Vörös
gui.appliedenergistics2.Black=Fekete gui.appliedenergistics2.Black=Fekete
gui.appliedenergistics2.Fluix=Fluix gui.appliedenergistics2.Fluix=Fluix
// Waila
waila.appliedenergistics2.Crafting=Barkácsol
waila.appliedenergistics2.DeviceOnline=Eszköz Online waila.appliedenergistics2.DeviceOnline=Eszköz Online
waila.appliedenergistics2.DeviceOffline=Eszköz Offline waila.appliedenergistics2.DeviceOffline=Eszköz Offline
waila.appliedenergistics2.DeviceMissingChannel=Eszköz Hiányszó Csatorna waila.appliedenergistics2.DeviceMissingChannel=Hiányzó Csatorna
waila.appliedenergistics2.Locked=Zárolva waila.appliedenergistics2.Locked=Zárolva
waila.appliedenergistics2.Unlocked=Nincs zárolva waila.appliedenergistics2.Unlocked=Feloldva
waila.appliedenergistics2.Showing=Mutatni waila.appliedenergistics2.Showing=Mutatott tárgy
waila.appliedenergistics2.Contains=Tárolni waila.appliedenergistics2.Contains=Energiaszint
waila.appliedenergistics2.Channels=%1$d of %2$d Csatornák waila.appliedenergistics2.Channels=%2$d Csatornából %1$d használatban
// Items
item.appliedenergistics2.ItemBasicStorageCell.1k.name=1k ME Tároló Cella item.appliedenergistics2.ItemBasicStorageCell.1k.name=1k ME Tároló Cella
item.appliedenergistics2.ItemBasicStorageCell.4k.name=4k ME Tároló Cella item.appliedenergistics2.ItemBasicStorageCell.4k.name=4k ME Tároló Cella
item.appliedenergistics2.ItemBasicStorageCell.16k.name=16k ME Tároló Cella item.appliedenergistics2.ItemBasicStorageCell.16k.name=16k ME Tároló Cella
item.appliedenergistics2.ItemBasicStorageCell.64k.name=64k Tároló Cella item.appliedenergistics2.ItemBasicStorageCell.64k.name=64k Tároló Cella
item.appliedenergistics2.ItemCreativeStorageCell.name=Kreatív ME Tároló Cella item.appliedenergistics2.ItemCreativeStorageCell.name=Kreatív ME Tároló Cella
item.appliedenergistics2.ItemEncodedPattern.name=Encoded Pattern item.appliedenergistics2.ItemEncodedPattern.name=Kódolt Minta
item.appliedenergistics2.ItemViewCell.name=View Cell item.appliedenergistics2.ItemViewCell.name=Nézet Cella
item.appliedenergistics2.ItemFacade.name=Cable Facade item.appliedenergistics2.ItemFacade.name=Kábel Látszat
item.appliedenergistics2.ItemCrystalSeed.Certus.name=Certus Kvarc Mag item.appliedenergistics2.ItemCrystalSeed.Certus.name=Certus Kvarc Mag
item.appliedenergistics2.ItemCrystalSeed.Nether.name=Alvilági Kvarc Mag item.appliedenergistics2.ItemCrystalSeed.Nether.name=Alvilági Kvarc Mag
item.appliedenergistics2.ItemCrystalSeed.Fluix.name=Fluix Mag item.appliedenergistics2.ItemCrystalSeed.Fluix.name=Fluix Mag
item.appliedenergistics2.ItemMaterial.InvalidType.name=Ez a tárgy tiltva van.
item.appliedenergistics2.ItemMaterial.AdvCard.name=Fejlett Kártya item.appliedenergistics2.ItemMaterial.AdvCard.name=Fejlett Kártya
item.appliedenergistics2.ItemMaterial.AnnihilationCore.name=Megsemmisítő Mag item.appliedenergistics2.ItemMaterial.AnnihilationCore.name=Megsemmisítő Mag
item.appliedenergistics2.ItemMaterial.BasicCard.name=Egyszerű Kártya item.appliedenergistics2.ItemMaterial.BasicCard.name=Egyszerű Kártya
item.appliedenergistics2.ItemMaterial.BlankPattern.name=Üres Minta item.appliedenergistics2.ItemMaterial.BlankPattern.name=Üres Minta
item.appliedenergistics2.ItemMaterial.CalcProcessor.name=Kalkulációs Processzor item.appliedenergistics2.ItemMaterial.CalcProcessor.name=Kalkulációs Processzor
item.appliedenergistics2.ItemMaterial.CardCapacity.name=Kapacitás Kártya item.appliedenergistics2.ItemMaterial.CardCapacity.name=Kapacitás Kártya
item.appliedenergistics2.ItemMaterial.CardFuzzy.name=Fuzzy Kártya item.appliedenergistics2.ItemMaterial.CardFuzzy.name=Megkülönböztető Kártya
item.appliedenergistics2.ItemMaterial.CardInverter.name=Inverter Kártya item.appliedenergistics2.ItemMaterial.CardInverter.name=Inverter Kártya
item.appliedenergistics2.ItemMaterial.CardRedstone.name=Vöröskő Kártya item.appliedenergistics2.ItemMaterial.CardRedstone.name=Vöröskő Kártya
item.appliedenergistics2.ItemMaterial.CardSpeed.name=Gyorsító Kártya item.appliedenergistics2.ItemMaterial.CardSpeed.name=Gyorsító Kártya
@@ -321,12 +396,12 @@ item.appliedenergistics2.ItemMaterial.Cell4kPart.name=4k ME Taroló Komponens
item.appliedenergistics2.ItemMaterial.Cell16kPart.name=16k ME Taroló Komponens item.appliedenergistics2.ItemMaterial.Cell16kPart.name=16k ME Taroló Komponens
item.appliedenergistics2.ItemMaterial.Cell64kPart.name=64k ME Taroló Komponens item.appliedenergistics2.ItemMaterial.Cell64kPart.name=64k ME Taroló Komponens
item.appliedenergistics2.ItemMaterial.CertusQuartzCrystal.name=Certus Kvarc Kristály item.appliedenergistics2.ItemMaterial.CertusQuartzCrystal.name=Certus Kvarc Kristály
item.appliedenergistics2.ItemMaterial.CertusQuartzCrystalCharged.name=Feltöltött Certus Kvarc Kristály item.appliedenergistics2.ItemMaterial.CertusQuartzCrystalCharged.name=Töltött Certus Kvarc Kristály
item.appliedenergistics2.ItemMaterial.CertusQuartzDust.name=Certus Kvarc Por item.appliedenergistics2.ItemMaterial.CertusQuartzDust.name=Certus Kvarc Por
item.appliedenergistics2.ItemMaterial.EmptyStorageCell.name=ME Storage Housing item.appliedenergistics2.ItemMaterial.EmptyStorageCell.name=ME Tároló Ház
item.appliedenergistics2.ItemMaterial.EnderDust.name=Ender Por item.appliedenergistics2.ItemMaterial.EnderDust.name=Bevégző Gyöngy Por
item.appliedenergistics2.ItemMaterial.EngProcessor.name=Műszaki Processzor item.appliedenergistics2.ItemMaterial.EngProcessor.name=Műszaki Processzor
item.appliedenergistics2.ItemMaterial.Flour.name=Flour item.appliedenergistics2.ItemMaterial.Flour.name=Liszt
item.appliedenergistics2.ItemMaterial.FluixCrystal.name=Fluix Kristály item.appliedenergistics2.ItemMaterial.FluixCrystal.name=Fluix Kristály
item.appliedenergistics2.ItemMaterial.FluixDust.name=Fluix Por item.appliedenergistics2.ItemMaterial.FluixDust.name=Fluix Por
item.appliedenergistics2.ItemMaterial.FluixPearl.name=Fluix Gyöngy item.appliedenergistics2.ItemMaterial.FluixPearl.name=Fluix Gyöngy
@@ -340,58 +415,60 @@ item.appliedenergistics2.ItemMaterial.MatterBall.name=Anyag Labda
item.appliedenergistics2.ItemMaterial.NetherQuartzDust.name=Alvilági Kvarc Por item.appliedenergistics2.ItemMaterial.NetherQuartzDust.name=Alvilági Kvarc Por
item.appliedenergistics2.ItemMaterial.PurifiedCertusQuartzCrystal.name=Tiszta Certus Kvarc Kristály item.appliedenergistics2.ItemMaterial.PurifiedCertusQuartzCrystal.name=Tiszta Certus Kvarc Kristály
item.appliedenergistics2.ItemMaterial.PurifiedFluixCrystal.name=Tiszta Fluix Kristály item.appliedenergistics2.ItemMaterial.PurifiedFluixCrystal.name=Tiszta Fluix Kristály
item.appliedenergistics2.ItemMaterial.PurifiedNetherQuartzCrystal.name=Tiszta Nether Kvarc Kristály item.appliedenergistics2.ItemMaterial.PurifiedNetherQuartzCrystal.name=Tiszta Alvilági Kvarc Kristály
item.appliedenergistics2.ItemMaterial.QESingularity.name=Kvantum Átívelő Szingularitás item.appliedenergistics2.ItemMaterial.QESingularity.name=Kvantum Átívelő Szingularitás
item.appliedenergistics2.ItemMaterial.Silicon.name=Szilikon item.appliedenergistics2.ItemMaterial.Silicon.name=Szilikon
item.appliedenergistics2.ItemMaterial.Singularity.name=Szingularitás item.appliedenergistics2.ItemMaterial.Singularity.name=Szingularitás
item.appliedenergistics2.ItemMaterial.Wireless.name=Wireless Fogadó item.appliedenergistics2.ItemMaterial.Wireless.name=Vezetéknélküli Fogadó
item.appliedenergistics2.ItemMaterial.WirelessBooster.name=Wireless Erősítő item.appliedenergistics2.ItemMaterial.WirelessBooster.name=Vezetéknélküli Erősítő
item.appliedenergistics2.ItemMaterial.WoodenGear.name=Fa fogaskerék item.appliedenergistics2.ItemMaterial.WoodenGear.name=Fa fogaskerék
item.appliedenergistics2.ItemMaterial.EngProcessorPress.name=Karcolt Műszaki Nyomat item.appliedenergistics2.ItemMaterial.EngProcessorPress.name=Műszaki Processzor Nyomat
item.appliedenergistics2.ItemMaterial.CalcProcessorPress.name=Karcolt Kalkulációs Nyomat item.appliedenergistics2.ItemMaterial.CalcProcessorPress.name=Kalkulációs Processzor Nyomat
item.appliedenergistics2.ItemMaterial.LogicProcessorPress.name=Karcolt Logikai Nyomat item.appliedenergistics2.ItemMaterial.LogicProcessorPress.name=Logikai Processzor Nyomat
item.appliedenergistics2.ItemMaterial.EngProcessorPrint.name=Nyomtatott Műszaki Áramkör item.appliedenergistics2.ItemMaterial.EngProcessorPrint.name=Nyomtatott Műszaki Áramkör
item.appliedenergistics2.ItemMaterial.CalcProcessorPrint.name=Nyomtatott Kalkulációs Áramkör item.appliedenergistics2.ItemMaterial.CalcProcessorPrint.name=Nyomtatott Kalkulációs Áramkör
item.appliedenergistics2.ItemMaterial.LogicProcessorPrint.name=Nyomtatott Logikai Áramkör item.appliedenergistics2.ItemMaterial.LogicProcessorPrint.name=Nyomtatott Logikai Áramkör
item.appliedenergistics2.ItemMaterial.SiliconPress.name=Karcolt Szilikon Nyomat item.appliedenergistics2.ItemMaterial.SiliconPress.name=Vésett Szilikon Nyomat
item.appliedenergistics2.ItemMaterial.SiliconPrint.name=Nyomtatott Szilikon item.appliedenergistics2.ItemMaterial.SiliconPrint.name=Nyomtatott Szilikon
item.appliedenergistics2.ItemMaterial.NamePress.name=Karcolt Név Nyomat item.appliedenergistics2.ItemMaterial.NamePress.name=Név Nyomat
item.appliedenergistics2.ItemMaterial.SkyDust.name=Égboltkő por item.appliedenergistics2.ItemMaterial.SkyDust.name=Égboltkő Por
item.appliedenergistics2.ItemMaterial.CardCrafting.name=Craftoló Kártya item.appliedenergistics2.ItemMaterial.CardCrafting.name=Barkácsoló Kártya
item.appliedenergistics2.ItemPart.AnnihilationPlane.name=ME Megsemmisítő Lap item.appliedenergistics2.ItemPart.AnnihilationPlane.name=ME Megsemmisítő Lap
item.appliedenergistics2.ItemPart.IdentityAnnihilationPlane.name=ME Identitás Megsemmisítő Lap
item.appliedenergistics2.ItemPart.CableAnchor.name=Kábel Távtartó item.appliedenergistics2.ItemPart.CableAnchor.name=Kábel Távtartó
item.appliedenergistics2.ItemPart.CableCovered.name=ME Szigetelt Kábel item.appliedenergistics2.ItemPart.CableCovered.name=ME Szigetelt Kábel
item.appliedenergistics2.ItemPart.CableGlass.name=ME Üveg Kábel item.appliedenergistics2.ItemPart.CableGlass.name=ME Üveg Kábel
item.appliedenergistics2.ItemPart.CableSmart.name=ME Okos Kábel item.appliedenergistics2.ItemPart.CableSmart.name=ME Okos Kábel
item.appliedenergistics2.ItemPart.CableDense.name=ME Sűrű Kábel item.appliedenergistics2.ItemPart.CableDense.name=ME Sűrű Kábel
item.appliedenergistics2.ItemPart.StorageMonitor.name=ME Tároló Monitor item.appliedenergistics2.ItemPart.StorageMonitor.name=ME Tároló Monitor
item.appliedenergistics2.ItemPart.ConversionMonitor.name=ME Átváltó Monitor item.appliedenergistics2.ItemPart.ConversionMonitor.name=ME Átváltási Monitor
item.appliedenergistics2.ItemPart.CraftingTerminal.name=ME Craftoló Terminal item.appliedenergistics2.ItemPart.CraftingTerminal.name=ME Barkácsoló Terminal
item.appliedenergistics2.ItemPart.SemiDarkMonitor.name=Kivilágított Lap item.appliedenergistics2.ItemPart.SemiDarkMonitor.name=Kivilágított Lap
item.appliedenergistics2.ItemPart.Monitor.name=Fényes Kivilágított Lap item.appliedenergistics2.ItemPart.Monitor.name=Fényes Kivilágított Lap
item.appliedenergistics2.ItemPart.DarkMonitor.name=Sötét Kivilágított Lap item.appliedenergistics2.ItemPart.DarkMonitor.name=Sötét Kivilágított Lap
item.appliedenergistics2.ItemPart.ExportBus.name=ME Export Busz item.appliedenergistics2.ItemPart.ExportBus.name=ME Export Busz
item.appliedenergistics2.ItemPart.FormationPlane.name=ME Formation Lap item.appliedenergistics2.ItemPart.FormationPlane.name=ME Kialakító Lap
item.appliedenergistics2.ItemPart.ImportBus.name=ME Import Busz item.appliedenergistics2.ItemPart.ImportBus.name=ME Import Busz
item.appliedenergistics2.ItemPart.Interface.name=ME Interface item.appliedenergistics2.ItemPart.Interface.name=ME Interfész
item.appliedenergistics2.ItemPart.LevelEmitter.name=ME Level Emitter item.appliedenergistics2.ItemPart.LevelEmitter.name=ME Szint Kibocsátó
item.appliedenergistics2.ItemPart.P2PTunnel.name=P2P Alagut item.appliedenergistics2.ItemPart.P2PTunnel.name=P2P Alagút
item.appliedenergistics2.ItemPart.PatternTerminal.name=ME Minta Terminal item.appliedenergistics2.ItemPart.PatternTerminal.name=ME Minta Terminál
item.appliedenergistics2.ItemPart.QuartzFiber.name=Kvarc Szálas item.appliedenergistics2.ItemPart.QuartzFiber.name=Kvarc Rost
item.appliedenergistics2.ItemPart.StorageBus.name=ME Tároló Busz item.appliedenergistics2.ItemPart.StorageBus.name=ME Tároló Busz
item.appliedenergistics2.ItemPart.Terminal.name=ME Terminal item.appliedenergistics2.ItemPart.Terminal.name=ME Terminál
item.appliedenergistics2.ItemPart.InvertedToggleBus.name=ME Inverted Toggle Busz item.appliedenergistics2.ItemPart.InvertedToggleBus.name=ME Invertált Kapcsoló Busz
item.appliedenergistics2.ItemPart.ToggleBus.name=ME Toggle Busz item.appliedenergistics2.ItemPart.ToggleBus.name=ME Kapcsoló Busz
item.appliedenergistics2.ItemPart.CraftingMonitor.name=ME Craftoló Monitor item.appliedenergistics2.ItemPart.CraftingMonitor.name=ME Barkácsoló Monitor
item.appliedenergistics2.ItemPart.InterfaceTerminal.name=ME Interface Terminal item.appliedenergistics2.ItemPart.InterfaceTerminal.name=ME Interfész Terminál
item.appliedenergistics2.ItemPart.InvalidType.name=Tiltott Tárgy
item.appliedenergistics2.ItemSpatialStorageCell.128Cubed.name=128³ Térbeli Tároló Cella item.appliedenergistics2.ItemSpatialStorageCell.128Cubed.name=128³ Térbeli Tároló Cella
item.appliedenergistics2.ItemSpatialStorageCell.16Cubed.name=16³ Térbeli Tároló Cella item.appliedenergistics2.ItemSpatialStorageCell.16Cubed.name=16³ Térbeli Tároló Cella
item.appliedenergistics2.ItemSpatialStorageCell.2Cubed.name=2³ Térbeli Tároló Cella item.appliedenergistics2.ItemSpatialStorageCell.2Cubed.name=2³ Térbeli Tároló Cella
item.appliedenergistics2.ToolCertusQuartzAxe.name=Certus Kvarc Fejsze item.appliedenergistics2.ToolCertusQuartzAxe.name=Certus Kvarc Fejsze
item.appliedenergistics2.ToolCertusQuartzCuttingKnife.name=Certus Kvarc Vágó Kés item.appliedenergistics2.ToolCertusQuartzCuttingKnife.name=Certus Kvarc Vágókés
item.appliedenergistics2.ToolCertusQuartzHoe.name=Certus Kvarc Kapa item.appliedenergistics2.ToolCertusQuartzHoe.name=Certus Kvarc Kapa
item.appliedenergistics2.ToolCertusQuartzPickaxe.name=Certus Kvarc Csákány item.appliedenergistics2.ToolCertusQuartzPickaxe.name=Certus Kvarc Csákány
item.appliedenergistics2.ToolCertusQuartzSpade.name=Certus Kvarc Ásó item.appliedenergistics2.ToolCertusQuartzSpade.name=Certus Kvarc Ásó
@@ -399,7 +476,7 @@ item.appliedenergistics2.ToolCertusQuartzSword.name=Certus Kvarc Kard
item.appliedenergistics2.ToolCertusQuartzWrench.name=Certus Kvarc Franciakulcs item.appliedenergistics2.ToolCertusQuartzWrench.name=Certus Kvarc Franciakulcs
item.appliedenergistics2.ToolNetherQuartzAxe.name=Alvilági Kvarc Fejsze item.appliedenergistics2.ToolNetherQuartzAxe.name=Alvilági Kvarc Fejsze
item.appliedenergistics2.ToolNetherQuartzCuttingKnife.name=Alvilági Kvarc Vágó Kés item.appliedenergistics2.ToolNetherQuartzCuttingKnife.name=Alvilági Kvarc Vágókés
item.appliedenergistics2.ToolNetherQuartzHoe.name=Alvilági Kvarc Kapa item.appliedenergistics2.ToolNetherQuartzHoe.name=Alvilági Kvarc Kapa
item.appliedenergistics2.ToolNetherQuartzPickaxe.name=Alvilági Kvarc Csákány item.appliedenergistics2.ToolNetherQuartzPickaxe.name=Alvilági Kvarc Csákány
item.appliedenergistics2.ToolNetherQuartzSpade.name=Alvilági Kvarc Ásó item.appliedenergistics2.ToolNetherQuartzSpade.name=Alvilági Kvarc Ásó
@@ -407,15 +484,80 @@ item.appliedenergistics2.ToolNetherQuartzSword.name=Alvilági Kvarc Kard
item.appliedenergistics2.ToolNetherQuartzWrench.name=Alvilági Kvarc Franciakulcs item.appliedenergistics2.ToolNetherQuartzWrench.name=Alvilági Kvarc Franciakulcs
item.appliedenergistics2.ItemPaintBall.name=Festék Labda item.appliedenergistics2.ItemPaintBall.name=Festék Labda
item.appliedenergistics2.ToolPortableCell.name=Portable Cell item.appliedenergistics2.ToolPortableCell.name=Hordozható Cella
item.appliedenergistics2.ToolNetworkTool.name=Hálózati Eszköz item.appliedenergistics2.ToolNetworkTool.name=Hálózati Eszköz
item.appliedenergistics2.ToolChargedStaff.name=Feltöltött Bot item.appliedenergistics2.ToolChargedStaff.name=Feltöltött Pálca
item.appliedenergistics2.ToolEntropyManipulator.name=Entropy Manipulator item.appliedenergistics2.ToolEntropyManipulator.name=Bomlás Manipuláló
item.appliedenergistics2.ToolMassCannon.name=Anyag Ágyú item.appliedenergistics2.ToolMassCannon.name=Anyag Ágyú
item.appliedenergistics2.ToolMemoryCard.name=Memória Kártya item.appliedenergistics2.ToolMemoryCard.name=Memória Kártya
item.appliedenergistics2.ToolColorApplicator.name=Color Applicator item.appliedenergistics2.ToolColorApplicator.name=Szín Alkalmazó
item.appliedenergistics2.ToolWirelessTerminal.name=Wireless Terminal item.appliedenergistics2.ToolWirelessTerminal.name=Vezetéknélküli Terminál
item.appliedenergistics2.ToolBiometricCard.name=Biometrikus Kártya item.appliedenergistics2.ToolBiometricCard.name=Biometrikus Kártya
item.appliedenergistics2.ToolDebugCard.name=Dev.DebugCard item.appliedenergistics2.ToolDebugCard.name=Dev.Debug Kártya
item.appliedenergistics2.ToolReplicatorCard.name=Dev.ReplicatorCard item.appliedenergistics2.ToolReplicatorCard.name=Dev.Replitor Kártya
// Commands
commands.ae2.usage=Applied Energistics 2 által nyújtott parancsok - Használd az /ae2 list parancsot hogy kilistázza őket, és az /ae2 help _____ parancsot a segítséghez.
commands.ae2.permissions=Nincs elegendő engedélyed hogy futtasd ezt a parancsot.
commands.ae2.ChunkLogger=Állítgatja a Darabka betöltési és kitöltési naplót ( OP )
commands.ae2.ChunkLoggerOn=Darabka naplózás bekapcsolva
commands.ae2.ChunkLoggerOff=Darabka naplózás kikapcsolva
commands.ae2.Supporters=Megjelenít egy listát az AE2-höz hozzájárulókról
// Achievements
achievement.ae2.Compass=Meteorit vadász
achievement.ae2.Compass.desc=Készíts egy Meteor Iránytűt
achievement.ae2.Presses=Ismeretlen technológia
achievement.ae2.Presses.desc=Találj egy Processzor lenyomatot
achievement.ae2.SpatialIO=Térbeli koordináció
achievement.ae2.SpatialIO.desc=Készíts egy Tér-IO portot
achievement.ae2.SpatialIOExplorer=Ahol még ember nem járt
achievement.ae2.SpatialIOExplorer.desc=Legyél tárolva egy Térbeli Tároló Cellában
achievement.ae2.StorageCell=Jobb mint a ládák
achievement.ae2.StorageCell.desc=Készíts egy Tároló Cellát
achievement.ae2.IOPort=Tároló Cella keverés
achievement.ae2.IOPort.desc=Készíts egy ME IO Portot
achievement.ae2.CraftingTerminal=Egy (sokkal) nagyobb asztal
achievement.ae2.CraftingTerminal.desc=Készíts egy Barkácsoló Terminált
achievement.ae2.PatternTerminal=Barkácsoló Maestro
achievement.ae2.PatternTerminal.desc=Készíts egy Minta Terminált
achievement.ae2.ChargedQuartz=Megrázó
achievement.ae2.ChargedQuartz.desc=Találj Töltött Kvarcot
achievement.ae2.Fluix=Természetellenes
achievement.ae2.Fluix.desc=Készíts Fluix Kristályokat
achievement.ae2.Charger=Fluix készítés
achievement.ae2.Charger.desc=Készíts egy Töltőt
achievement.ae2.CrystalGrowthAccelerator=A Gyorsító egy alábecslés
achievement.ae2.CrystalGrowthAccelerator.desc=Készíts egy Krisztály Növekedés Gyorsítót
achievement.ae2.GlassCable=Fluix Energia Kapcsolat
achievement.ae2.GlassCable.desc=Készíts ME Üveg Kábelt
achievement.ae2.Networking1=Hálózati tanonc
achievement.ae2.Networking1.desc=Érj el 8 csatornát egy hálózaton akármivel.
achievement.ae2.Controller=Hálózati kapcsolótábla
achievement.ae2.Controller.desc=Készíts egy Vezérlőt
achievement.ae2.Networking2=Hálózati Mérnök
achievement.ae2.Networking2.desc=Érj el 128 csatornát a hálózaton akármivel.
achievement.ae2.Networking3=Hálózat Adminisztrátor
achievement.ae2.Networking3.desc=Érj el 2048 csatornát a hálózaton akármivel.
achievement.ae2.P2P=Ponttol pontig hálózat
achievement.ae2.P2P.desc=Készíts egy P2P Alagutat
achievement.ae2.Recursive=Rekurzív Hálózat
achievement.ae2.Recursive.desc=Helyezz egy Interfészt egy Tároló Buszra.
achievement.ae2.CraftingCPU=Next Gen Barkácsolás
achievement.ae2.CraftingCPU.desc=Készíts egy Barkácsoló Egységet
achievement.ae2.Facade=Hálózati esztétika
achievement.ae2.Facade.desc=Készíts egy kábel látszatot
achievement.ae2.NetworkTool=Hálózat diagnosztika
achievement.ae2.NetworkTool.desc=Készíts egy Hálózati Eszközt
achievement.ae2.PortableCell=Tárolási Nomád
achievement.ae2.PortableCell.desc=Készíts egy Hordozható Tárolót
achievement.ae2.StorageBus=Határtalan potenciál
achievement.ae2.StorageBus.desc=Készíts egy Tároló Buszt
achievement.ae2.QNB=Kvantum Alagutazás
achievement.ae2.QNB.desc=Készíts egy Kvantum Összeköttetést.
// Stats
stat.ae2.ItemsInserted=Tárgyak hozzáadva ME tárolókhoz
stat.ae2.ItemsExtracted=Tárgyak eltávolítva ME tárolókból
stat.ae2.TurnedCranks=Kurblik forgatva