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;
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
{
@@ -32,4 +48,9 @@ public class FailedConnection extends Exception
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.helpers.AEGlassMaterial;
import appeng.helpers.ICustomCollision;
import appeng.tile.AEBaseTile;
import appeng.util.LookDirection;
import appeng.util.Platform;
@@ -132,27 +133,21 @@ public abstract class AEBaseBlock extends Block implements IAEFeature
return this.renderInfo;
}
try
{
final BaseBlockRender renderer = this.getRenderer().newInstance();
this.renderInfo = new BlockRenderInfo( renderer );
final BaseBlockRender<? extends AEBaseBlock, ? extends AEBaseTile> renderer = this.getRenderer();
this.renderInfo = new BlockRenderInfo( renderer );
return this.renderInfo;
}
catch( final InstantiationException e )
{
throw new IllegalStateException( "Failed to create a new instance of an illegal class " + this.getRenderer(), e );
}
catch( final IllegalAccessException e )
{
throw new IllegalStateException( "Failed to create a new instance of " + this.getRenderer() + " because of permissions.", e );
}
return this.renderInfo;
}
/**
* Factory method to create a new render instance.
*
* @return the newly created instance.
*/
@SideOnly( Side.CLIENT )
protected Class<? 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 )
@@ -32,7 +32,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.AEApi;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockCraftingCPUMonitor;
import appeng.client.texture.ExtraBlockTextures;
import appeng.tile.crafting.TileCraftingMonitorTile;
@@ -46,9 +45,10 @@ public class BlockCraftingMonitor extends BlockCraftingUnit
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockCraftingCPUMonitor getRenderer()
{
return RenderBlockCraftingCPUMonitor.class;
return new RenderBlockCraftingCPUMonitor();
}
@Override
@@ -36,7 +36,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockCraftingCPU;
import appeng.client.texture.ExtraBlockTextures;
import appeng.core.features.AEFeature;
@@ -59,9 +58,10 @@ public class BlockCraftingUnit extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockCraftingCPU<? extends BlockCraftingUnit, ? extends TileCraftingTile> getRenderer()
{
return RenderBlockCraftingCPU.class;
return new RenderBlockCraftingCPU<BlockCraftingUnit, TileCraftingTile>();
}
@Override
@@ -30,7 +30,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockAssembler;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
@@ -68,9 +67,9 @@ public class BlockMolecularAssembler extends AEBaseTileBlock
@Override
@SideOnly( Side.CLIENT )
public Class<? extends BaseBlockRender> getRenderer()
public RenderBlockAssembler getRenderer()
{
return RenderBlockAssembler.class;
return new RenderBlockAssembler();
}
@Override
@@ -31,9 +31,11 @@ import net.minecraft.world.World;
import net.minecraftforge.common.util.FakePlayer;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.implementations.tiles.ICrankable;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockCrank;
import appeng.core.features.AEFeature;
import appeng.core.stats.Stats;
@@ -56,9 +58,10 @@ public class BlockCrank extends AEBaseTileBlock
}
@Override
public Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
public RenderBlockCrank getRenderer()
{
return RenderBlockCrank.class;
return new RenderBlockCrank();
}
@Override
@@ -37,7 +37,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.AEApi;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockCharger;
import appeng.client.render.effects.LightningFX;
import appeng.core.AEConfig;
@@ -63,9 +62,10 @@ public class BlockCharger extends AEBaseTileBlock implements ICustomCollision
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockCharger getRenderer()
{
return RenderBlockCharger.class;
return new RenderBlockCharger();
}
@Override
@@ -26,8 +26,10 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockInscriber;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
@@ -49,9 +51,10 @@ public class BlockInscriber extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockInscriber getRenderer()
{
return RenderBlockInscriber.class;
return new RenderBlockInscriber();
}
@Override
@@ -26,9 +26,11 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.util.IOrientable;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockInterface;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
@@ -48,9 +50,10 @@ public class BlockInterface extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockInterface getRenderer()
{
return RenderBlockInterface.class;
return new RenderBlockInterface();
}
@Override
@@ -91,9 +91,10 @@ public class BlockLightDetector extends AEBaseTileBlock implements IOrientableBl
}
@Override
protected Class<? extends RenderQuartzTorch> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderQuartzTorch getRenderer()
{
return RenderQuartzTorch.class;
return new RenderQuartzTorch();
}
@Override
@@ -37,7 +37,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockPaint;
import appeng.core.features.AEFeature;
import appeng.tile.misc.TilePaint;
@@ -59,9 +58,10 @@ public class BlockPaint extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockPaint getRenderer()
{
return RenderBlockPaint.class;
return new RenderBlockPaint();
}
@Override
@@ -33,7 +33,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.util.IOrientableBlock;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockQuartzAccelerator;
import appeng.client.render.effects.LightningFX;
import appeng.core.AEConfig;
@@ -55,9 +54,10 @@ public class BlockQuartzGrowthAccelerator extends AEBaseTileBlock implements IOr
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockQuartzAccelerator getRenderer()
{
return RenderBlockQuartzAccelerator.class;
return new RenderBlockQuartzAccelerator();
}
@Override
@@ -39,7 +39,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.util.IOrientable;
import appeng.api.util.IOrientableBlock;
import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderQuartzTorch;
import appeng.client.render.effects.LightningFX;
import appeng.core.AEConfig;
@@ -63,9 +62,10 @@ public class BlockQuartzTorch extends AEBaseBlock implements IOrientableBlock, I
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderQuartzTorch getRenderer()
{
return RenderQuartzTorch.class;
return new RenderQuartzTorch();
}
@Override
@@ -26,8 +26,10 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RendererSecurity;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
@@ -47,9 +49,10 @@ public class BlockSecurity extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RendererSecurity getRenderer()
{
return RendererSecurity.class;
return new RendererSecurity();
}
@Override
@@ -37,7 +37,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockSkyCompass;
import appeng.core.features.AEFeature;
import appeng.helpers.ICustomCollision;
@@ -57,9 +56,10 @@ public class BlockSkyCompass extends AEBaseTileBlock implements ICustomCollision
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockSkyCompass getRenderer()
{
return RenderBlockSkyCompass.class;
return new RenderBlockSkyCompass();
}
@Override
@@ -40,9 +40,10 @@ import net.minecraft.world.Explosion;
import net.minecraft.world.World;
import cpw.mods.fml.common.registry.EntityRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderTinyTNT;
import appeng.client.texture.FullIcon;
import appeng.core.AppEng;
@@ -70,9 +71,10 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderTinyTNT getRenderer()
{
return RenderTinyTNT.class;
return new RenderTinyTNT();
}
@Override
@@ -89,19 +91,18 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision
}
@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 )
{
this.startFuse( w, x, y, z, player );
w.setBlockToAir( x, y, z );
player.getCurrentEquippedItem().damageItem( 1, player );
return true;
}
else
{
return super.onActivated( w, x, y, z, player, side, hitX, hitY, hitZ );
}
return super.onBlockActivated( w, x, y, z, player, side, hitX, hitY, hitZ );
}
@Override
@@ -110,16 +111,6 @@ public class BlockTinyTNT extends AEBaseBlock implements ICustomCollision
// 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
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 ) );
}
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.util.AEColor;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.BusRenderHelper;
import appeng.client.render.blocks.RendererCableBus;
import appeng.client.texture.ExtraBlockTextures;
@@ -414,9 +413,10 @@ public class BlockCableBus extends AEBaseTileBlock implements IRedNetConnection
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RendererCableBus getRenderer()
{
return RendererCableBus.class;
return new RendererCableBus();
}
@Override
@@ -25,8 +25,10 @@ import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockController;
import appeng.core.features.AEFeature;
import appeng.tile.networking.TileController;
@@ -54,8 +56,9 @@ public class BlockController extends AEBaseTileBlock
}
@Override
protected Class<? 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.AEBaseItemBlockChargeable;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockEnergyCube;
import appeng.client.texture.ExtraBlockTextures;
import appeng.core.features.AEFeature;
@@ -55,9 +54,10 @@ public class BlockEnergyCell extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockEnergyCube getRenderer()
{
return RenderBlockEnergyCube.class;
return new RenderBlockEnergyCube();
}
@Override
@@ -29,8 +29,10 @@ import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockWireless;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
@@ -54,9 +56,10 @@ public class BlockWireless extends AEBaseTileBlock implements ICustomCollision
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockWireless getRenderer()
{
return RenderBlockWireless.class;
return new RenderBlockWireless();
}
@Override
@@ -25,6 +25,9 @@ import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.blocks.RenderQNB;
import appeng.core.features.AEFeature;
@@ -69,9 +72,10 @@ public abstract class BlockQuantumBase extends AEBaseTileBlock implements ICusto
}
@Override
protected Class<? 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 appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderQuartzGlass;
import appeng.core.features.AEFeature;
import appeng.helpers.AEGlassMaterial;
@@ -46,9 +45,9 @@ public class BlockQuartzGlass extends AEBaseBlock
@Override
@SideOnly( Side.CLIENT )
public Class<? extends BaseBlockRender> getRenderer()
public RenderQuartzGlass getRenderer()
{
return RenderQuartzGlass.class;
return new RenderQuartzGlass();
}
@Override
@@ -31,10 +31,12 @@ import net.minecraft.util.MathHelper;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.AEApi;
import appeng.api.exceptions.MissingDefinition;
import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderQuartzOre;
import appeng.core.features.AEFeature;
@@ -57,9 +59,10 @@ public class OreQuartz extends AEBaseBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderQuartzOre getRenderer()
{
return RenderQuartzOre.class;
return new RenderQuartzOre();
}
@Override
@@ -38,7 +38,6 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderNull;
import appeng.core.features.AEFeature;
import appeng.helpers.ICustomCollision;
@@ -58,9 +57,10 @@ public class BlockMatrixFrame extends AEBaseBlock implements ICustomCollision
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderNull getRenderer()
{
return RenderNull.class;
return new RenderNull();
}
@Override
@@ -25,8 +25,10 @@ import net.minecraft.block.Block;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderSpatialPylon;
import appeng.core.features.AEFeature;
import appeng.helpers.AEGlassMaterial;
@@ -65,8 +67,9 @@ public class BlockSpatialPylon extends AEBaseTileBlock
}
@Override
protected Class<? 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.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.AEApi;
import appeng.api.storage.ICellHandler;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderMEChest;
import appeng.core.features.AEFeature;
import appeng.core.localization.PlayerMessages;
@@ -50,9 +52,10 @@ public class BlockChest extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderMEChest getRenderer()
{
return RenderMEChest.class;
return new RenderMEChest();
}
@Override
@@ -26,8 +26,10 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.World;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderDrive;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
@@ -46,9 +48,10 @@ public class BlockDrive extends AEBaseTileBlock
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderDrive getRenderer()
{
return RenderDrive.class;
return new RenderDrive();
}
@Override
@@ -43,7 +43,6 @@ import cpw.mods.fml.relauncher.SideOnly;
import appeng.api.AEApi;
import appeng.block.AEBaseTileBlock;
import appeng.client.render.BaseBlockRender;
import appeng.client.render.blocks.RenderBlockSkyChest;
import appeng.core.features.AEFeature;
import appeng.core.sync.GuiBridge;
@@ -83,9 +82,10 @@ public class BlockSkyChest extends AEBaseTileBlock implements ICustomCollision
}
@Override
protected Class<? extends BaseBlockRender> getRenderer()
@SideOnly( Side.CLIENT )
protected RenderBlockSkyChest getRenderer()
{
return RenderBlockSkyChest.class;
return new RenderBlockSkyChest();
}
@Override
@@ -383,9 +383,7 @@ public class GuiCraftConfirm extends AEBaseGui
if( this.tooltip >= 0 && dspToolTip.length() > 0 )
{
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
this.drawTooltip( toolPosX, toolPosY + 10, 0, dspToolTip );
GL11.glPopAttrib();
}
}
@@ -334,9 +334,7 @@ public class GuiCraftingCPU extends AEBaseGui implements ISortSource
if( this.tooltip >= 0 && dspToolTip.length() > 0 )
{
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
this.drawTooltip( toolPosX, toolPosY + 10, 0, dspToolTip );
GL11.glPopAttrib();
}
}
@@ -202,9 +202,7 @@ public class GuiNetworkStatus extends AEBaseGui implements ISortSource
if( this.tooltip >= 0 && toolTip.length() > 0 )
{
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
this.drawTooltip( toolPosX, toolPosY + 10, 0, toolTip );
GL11.glPopAttrib();
}
}
@@ -67,17 +67,21 @@ public class AppEngRenderItem extends RenderItem
final double health = is.getItem().getDurabilityForDisplay( is );
final int j1 = (int) Math.round( 13.0D - health * 13.0D );
final int k = (int) Math.round( 255.0D - health * 255.0D );
GL11.glDisable( GL11.GL_LIGHTING );
GL11.glDisable( GL11.GL_DEPTH_TEST );
GL11.glDisable( GL11.GL_TEXTURE_2D );
GL11.glDisable( GL11.GL_ALPHA_TEST );
GL11.glDisable( GL11.GL_BLEND );
final Tessellator tessellator = Tessellator.instance;
final int l = 255 - k << 16 | k << 8;
final int i1 = ( 255 - k ) / 4 << 16 | 16128;
this.renderQuad( tessellator, par4 + 2, par5 + 13, 13, 2, 0 );
this.renderQuad( tessellator, par4 + 2, par5 + 13, 12, 1, i1 );
this.renderQuad( tessellator, par4 + 2, par5 + 13, j1, 1, l );
GL11.glEnable( GL11.GL_ALPHA_TEST );
GL11.glEnable( GL11.GL_TEXTURE_2D );
GL11.glEnable( GL11.GL_LIGHTING );
@@ -88,19 +92,23 @@ public class AppEngRenderItem extends RenderItem
if( is.stackSize == 0 )
{
final String craftLabelText = AEConfig.instance.useTerminalUseLargeFont() ? GuiText.LargeFontCraft.getLocal() : GuiText.SmallFontCraft.getLocal();
GL11.glDisable( GL11.GL_LIGHTING );
GL11.glDisable( GL11.GL_DEPTH_TEST );
GL11.glPushMatrix();
GL11.glScaled( scaleFactor, scaleFactor, scaleFactor );
final int X = (int) ( ( (float) par4 + offset + 16.0f - fontRenderer.getStringWidth( craftLabelText ) * scaleFactor ) * inverseScaleFactor );
final int Y = (int) ( ( (float) par5 + offset + 16.0f - 7.0f * scaleFactor ) * inverseScaleFactor );
fontRenderer.drawStringWithShadow( craftLabelText, X, Y, 16777215 );
GL11.glPopMatrix();
GL11.glEnable( GL11.GL_LIGHTING );
GL11.glEnable( GL11.GL_DEPTH_TEST );
}
final long amount = this.aeStack != null ? this.aeStack.getStackSize() : is.stackSize;
if( amount != 0 )
{
final String stackSize = this.getToBeRenderedStackSize( amount );
@@ -109,9 +117,11 @@ public class AppEngRenderItem extends RenderItem
GL11.glDisable( GL11.GL_DEPTH_TEST );
GL11.glPushMatrix();
GL11.glScaled( scaleFactor, scaleFactor, scaleFactor );
final int X = (int) ( ( (float) par4 + offset + 16.0f - fontRenderer.getStringWidth( stackSize ) * scaleFactor ) * inverseScaleFactor );
final int Y = (int) ( ( (float) par5 + offset + 16.0f - 7.0f * scaleFactor ) * inverseScaleFactor );
fontRenderer.drawStringWithShadow( stackSize, X, Y, 16777215 );
GL11.glPopMatrix();
GL11.glEnable( GL11.GL_LIGHTING );
GL11.glEnable( GL11.GL_DEPTH_TEST );
@@ -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 )
{
final Tessellator tess = Tessellator.instance;
final BlockRenderInfo info = block.getRendererInstance();
if( info.isValid() )
{
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 )
{
if( block == null )
{
return;
}
int meta = 0;
if( block != null && block.hasSubtypes() && item != null )
if( block.hasSubtypes() && item != null )
{
meta = item.getItemDamage();
}
@@ -400,6 +406,7 @@ public class BaseBlockRender<B extends AEBaseBlock, T extends AEBaseTile>
return o;
}
}
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 );
this.postRenderInWorld( renderer );
return o;
}
@@ -418,6 +426,7 @@ public class BaseBlockRender<B extends AEBaseBlock, T extends AEBaseTile>
final BlockRenderInfo info = block.getRendererInstance();
final IOrientable te = this.getOrientable( block, world, x, y, z );
if( te != null )
{
final ForgeDirection forward = te.getForward();
@@ -450,13 +459,7 @@ public class BaseBlockRender<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 );
}
protected void renderBlockBounds( final RenderBlocks renderer,
double minX, double minY, double minZ,
double maxX, double maxY, double maxZ,
final ForgeDirection x, final ForgeDirection y, final ForgeDirection z )
protected void renderBlockBounds( final RenderBlocks renderer, double minX, double minY, double minZ, double maxX, double maxY, double maxZ, final ForgeDirection x, final ForgeDirection y, final ForgeDirection z )
{
minX /= 16.0;
minY /= 16.0;
@@ -763,6 +766,7 @@ public class BaseBlockRender<B extends AEBaseBlock, T extends AEBaseTile>
if( itemstack != null )
{
final EntityItem entityitem = new EntityItem( par1EntityItemFrame.getWorldObj(), 0.0D, 0.0D, 0.0D, itemstack );
entityitem.getEntityItem().stackSize = 1;
// set all this stuff and then do shit? meh?
@@ -22,14 +22,16 @@ package appeng.client.render;
import net.minecraft.util.IIcon;
import net.minecraftforge.common.util.ForgeDirection;
import appeng.block.AEBaseBlock;
import appeng.client.texture.FlippableIcon;
import appeng.client.texture.TmpFlippableIcon;
import appeng.tile.AEBaseTile;
public class BlockRenderInfo
{
private final BaseBlockRender rendererInstance;
private final BaseBlockRender<? extends AEBaseBlock, ? extends AEBaseTile> rendererInstance;
private final TmpFlippableIcon tmpTopIcon = new TmpFlippableIcon();
private final TmpFlippableIcon tmpBottomIcon = new TmpFlippableIcon();
private final TmpFlippableIcon tmpSouthIcon = new TmpFlippableIcon();
@@ -44,7 +46,7 @@ public class BlockRenderInfo
private FlippableIcon eastIcon = null;
private FlippableIcon westIcon = null;
public BlockRenderInfo( final BaseBlockRender inst )
public BlockRenderInfo( final BaseBlockRender<? extends AEBaseBlock, ? extends AEBaseTile> inst )
{
this.rendererInstance = inst;
}
@@ -56,7 +56,7 @@ public final class BusRenderHelper implements IPartRenderHelper
private final BoundBoxCalculator bbc;
private final boolean noAlphaPass;
private final BaseBlockRender bbr;
private final BaseBlockRender<AEBaseBlock, AEBaseTile> bbr;
private final Optional<Block> maybeBlock;
private final Optional<AEBaseBlock> maybeBaseBlock;
private int renderingForPass;
@@ -74,7 +74,7 @@ public class BusRenderer implements IItemRenderer
}
GL11.glPushMatrix();
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
GL11.glPushAttrib( GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT );
GL11.glEnable( GL11.GL_DEPTH_TEST );
GL11.glEnable( GL11.GL_TEXTURE_2D );
GL11.glEnable( GL11.GL_LIGHTING );
@@ -147,6 +147,7 @@ public class BusRenderer implements IItemRenderer
else
{
final IPart ip = this.getRenderer( item, (IPartItem) item.getItem() );
if( ip != null )
{
if( type == ItemRenderType.ENTITY )
@@ -171,6 +172,7 @@ public class BusRenderer implements IItemRenderer
final int id = ( Item.getIdFromItem( is.getItem() ) << Platform.DEF_OFFSET ) | is.getItemDamage();
IPart part = RENDER_PART.get( id );
if( part == null )
{
part = c.createPartFromItemStack( is );
@@ -85,6 +85,7 @@ public class CableRenderHelper
* snag list of boxes...
*/
final List<AxisAlignedBB> boxes = new ArrayList<AxisAlignedBB>();
for( final ForgeDirection s : ForgeDirection.values() )
{
final IPart part = cableBusContainer.getPart( s );
@@ -120,6 +121,7 @@ public class CableRenderHelper
for( final ForgeDirection s : ForgeDirection.VALID_DIRECTIONS )
{
final IFacadePart fPart = iFacadeContainer.getFacade( s );
if( fPart != null )
{
fPart.setThinFacades( useThinFacades );
@@ -214,6 +216,7 @@ public class CableRenderHelper
for( final ForgeDirection s : ForgeDirection.values() )
{
final IPart part = cableBusContainer.getPart( s );
if( part != null )
{
final ForgeDirection ax;
@@ -46,7 +46,7 @@ public class ItemRenderer implements IItemRenderer
public void renderItem( final ItemRenderType type, final ItemStack item, final Object... data )
{
GL11.glPushMatrix();
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
GL11.glPushAttrib( GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT );
GL11.glEnable( GL11.GL_ALPHA_TEST );
GL11.glEnable( GL11.GL_DEPTH_TEST );
GL11.glEnable( GL11.GL_BLEND );
@@ -689,7 +689,6 @@ public class RenderBlocksWorkaround extends RenderBlocks
private static class LightingCache implements ISimplifiedBundle
{
public final int[] aoXPos;
public final int[] aoXNeg;
public final int[] aoYPos;
@@ -55,6 +55,7 @@ public class SpatialSkyRender extends IRenderHandler
public void render( final float partialTicks, final WorldClient world, final Minecraft mc )
{
final long now = System.currentTimeMillis();
if( now - this.cycle > 2000 )
{
this.cycle = now;
@@ -67,42 +68,37 @@ public class SpatialSkyRender extends IRenderHandler
fade /= 1000;
fade = 0.15f * ( 1.0f - Math.abs( ( fade - 1.0f ) * ( fade - 1.0f ) ) );
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
GL11.glDisable( GL11.GL_FOG );
GL11.glDisable( GL11.GL_ALPHA_TEST );
GL11.glDisable( GL11.GL_BLEND );
GL11.glDepthMask( false );
GL11.glColor4f( 0.0f, 0.0f, 0.0f, 1.0f );
final Tessellator tessellator = Tessellator.instance;
for( int i = 0; i < 6; ++i )
{
GL11.glPushMatrix();
if( i == 1 )
switch( i )
{
GL11.glRotatef( 90.0F, 1.0F, 0.0F, 0.0F );
}
if( i == 2 )
{
GL11.glRotatef( -90.0F, 1.0F, 0.0F, 0.0F );
}
if( i == 3 )
{
GL11.glRotatef( 180.0F, 1.0F, 0.0F, 0.0F );
}
if( i == 4 )
{
GL11.glRotatef( 90.0F, 0.0F, 0.0F, 1.0F );
}
if( i == 5 )
{
GL11.glRotatef( -90.0F, 0.0F, 0.0F, 1.0F );
case 1:
GL11.glRotatef( 90.0F, 1.0F, 0.0F, 0.0F );
break;
case 2:
GL11.glRotatef( -90.0F, 1.0F, 0.0F, 0.0F );
break;
case 3:
GL11.glRotatef( 180.0F, 1.0F, 0.0F, 0.0F );
break;
case 4:
GL11.glRotatef( 90.0F, 0.0F, 0.0F, 1.0F );
break;
case 5:
GL11.glRotatef( -90.0F, 0.0F, 0.0F, 1.0F );
break;
default:
break;
}
tessellator.startDrawingQuads();
@@ -112,30 +108,29 @@ public class SpatialSkyRender extends IRenderHandler
tessellator.addVertexWithUV( 100.0D, -100.0D, 100.0D, 16.0D, 16.0D );
tessellator.addVertexWithUV( 100.0D, -100.0D, -100.0D, 16.0D, 0.0D );
tessellator.draw();
GL11.glPopMatrix();
}
GL11.glDepthMask( true );
if( fade > 0.0f )
{
GL11.glDisable( GL11.GL_FOG );
GL11.glDisable( GL11.GL_ALPHA_TEST );
GL11.glEnable( GL11.GL_BLEND );
GL11.glDepthMask( false );
GL11.glEnable( GL11.GL_FOG );
GL11.glDisable( GL11.GL_FOG );
GL11.glDisable( GL11.GL_ALPHA_TEST );
GL11.glDisable( GL11.GL_TEXTURE_2D );
OpenGlHelper.glBlendFunc( 770, 771, 1, 0 );
RenderHelper.disableStandardItemLighting();
GL11.glDepthMask( false );
GL11.glEnable( GL11.GL_TEXTURE_2D );
GL11.glColor4f( fade, fade, fade, 1.0f );
GL11.glCallList( this.dspList );
RenderHelper.enableStandardItemLighting();
}
GL11.glPopAttrib();
GL11.glEnable( GL11.GL_FOG );
GL11.glEnable( GL11.GL_ALPHA_TEST );
GL11.glEnable( GL11.GL_BLEND );
GL11.glDepthMask( true );
GL11.glColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
}
@@ -159,6 +154,7 @@ public class SpatialSkyRender extends IRenderHandler
iX *= dist;
iY *= dist;
iZ *= dist;
final double x = iX * 100.0D;
final double y = iY * 100.0D;
final double z = iZ * 100.0D;
@@ -183,6 +179,7 @@ public class SpatialSkyRender extends IRenderHandler
final double d23 = d17 * d12 - d20 * d13;
final double d24 = d23 * d9 - d21 * d10;
final double d25 = d21 * d9 + d23 * d10;
tessellator.addVertex( x + d24, y + d22, z + d25 );
}
}
@@ -20,6 +20,7 @@ package appeng.client.render;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.RenderBlocks;
@@ -41,7 +42,7 @@ public final class WorldRender implements ISimpleBlockRenderingHandler
{
public static final WorldRender INSTANCE = new WorldRender();
private final HashMap<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 RenderBlocks renderer = new RenderBlocks();
private boolean hasError = false;
@@ -203,42 +203,48 @@ public class RenderBlockAssembler extends BaseBlockRender<BlockMolecularAssemble
{
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 )
{
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 );
}
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 )
{
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 );
}
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 )
{
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 );
}
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 )
{
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 );
}
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 )
{
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 );
}
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 )
{
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 )
{
final int tileYPos = y + side.offsetY;
if( -1 < tileYPos && tileYPos < 256 )
{
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 IPart pcx = ph.getPart( ForgeDirection.UNKNOWN );
if( pcx instanceof PartCable )
{
final PartCable pc = (PartCable) pcx;
if( pc.isConnected( side.getOpposite() ) )
{
if( covered )
@@ -124,48 +124,59 @@ public class RenderBlockCharger extends BaseBlockRender<BlockCharger, TileCharge
@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 )
{
if( tile == null )
{
return;
}
final ItemStack sis = tile.getStackInSlot( 0 );
if( sis != null )
if( sis == null )
{
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 );
}
// << 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();
return;
}
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 )
{
final int v = ( Math.abs( x ) + Math.abs( y ) + Math.abs( z ) ) % 2;
renderer.uvRotateEast = renderer.uvRotateBottom = renderer.uvRotateNorth = renderer.uvRotateSouth = renderer.uvRotateTop = renderer.uvRotateWest = 0;
if( v == 0 )
@@ -140,6 +141,7 @@ public class RenderBlockController extends BaseBlockRender<BlockController, Tile
if( hasPower )
{
blk.getRendererInstance().setTemporaryRenderIcon( ExtraBlockTextures.BlockControllerPowered.getIcon() );
if( isConflict )
{
lights = ExtraBlockTextures.BlockControllerConflict;
@@ -156,6 +158,7 @@ public class RenderBlockController extends BaseBlockRender<BlockController, Tile
}
final boolean out = renderer.renderStandardBlock( blk, x, y, z );
if( lights != null )
{
Tessellator.instance.setColorOpaque_F( 1.0f, 1.0f, 1.0f );
@@ -57,21 +57,20 @@ public class RenderBlockCraftingCPU<B extends BlockCraftingUnit, T extends TileC
@Override
public boolean renderInWorld( final B blk, final IBlockAccess w, final int x, final int y, final int z, RenderBlocks renderer )
{
boolean formed = false;
boolean emitsLight = false;
final TileCraftingTile craftingTile = blk.getTileEntity( w, x, y, z );
final TileCraftingTile ct = blk.getTileEntity( w, x, y, z );
if( ct != null && ct.isFormed() )
if( craftingTile == null )
{
formed = true;
emitsLight = ct.isPowered();
return false;
}
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 IIcon theIcon = blk.getIcon( ForgeDirection.SOUTH.ordinal(), meta | ( formed ? 8 : 0 ) );
IIcon nonForward = theIcon;
if( isMonitor )
{
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
{
ct.setLightCache( i.useSimplifiedRendering( x, y, z, null, ct.getLightCache() ) );
craftingTile.setLightCache( i.useSimplifiedRendering( x, y, z, null, craftingTile.getLightCache() ) );
}
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.prepareBounds( renderer );
boolean LocalEmit = emitsLight;
if( blk instanceof BlockCraftingMonitor && ct.getForward() != side )
boolean localEmit = emitsLight;
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 );
@@ -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 )
{
final int tileYPos = y + side.offsetY;
if( 0 <= tileYPos && tileYPos <= 255 )
{
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 )
{
if( this.isConnected( w, x, y, z, up ) )
{
return;
}
if( this.isConnected( w, x, y, z, east ) )
{
return;
}
if( this.isConnected( w, x, y, z, south ) )
if( this.isConnected( w, x, y, z, up ) || this.isConnected( w, x, y, z, east ) || this.isConnected( w, x, y, z, south ) )
{
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 ) )
{
final double width = 3.0 / 16.0;
switch( a )
{
case DOWN:
@@ -68,8 +68,7 @@ public class RenderBlockCraftingCPUMonitor extends RenderBlockCraftingCPU<BlockC
tile.setUpdateList( true );
tile.setDisplayList( GLAllocation.generateDisplayLists( 1 ) );
}
if( ais != null )
else
{
GL11.glPushMatrix();
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;
int spin = 0;
int max = 5;
while( walrus != cmt.getUp() && max > 0 )
{
max--;
@@ -107,50 +106,43 @@ public class RenderBlockCraftingCPUMonitor extends RenderBlockCraftingCPU<BlockC
}
max--;
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
GL11.glTranslated( side.offsetX * 0.69, side.offsetY * 0.69, side.offsetZ * 0.69 );
final float scale = 0.7f;
GL11.glScalef( scale, scale, scale );
if( side == ForgeDirection.UP )
switch( side )
{
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 );
case UP:
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 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
{
final ItemStack sis = ais.getItemStack();
@@ -159,6 +151,7 @@ public class RenderBlockCraftingCPUMonitor extends RenderBlockCraftingCPU<BlockC
final int br = 16 << 20 | 16 << 4;
final int var11 = br % 65536;
final int var12 = br / 65536;
OpenGlHelper.setLightmapTextureCoords( OpenGlHelper.lightmapTexUnit, var11 * 0.8F, var12 * 0.8F );
GL11.glColor4f( 1.0F, 1.0F, 1.0F, 1.0F );
@@ -174,8 +167,11 @@ public class RenderBlockCraftingCPUMonitor extends RenderBlockCraftingCPU<BlockC
{
AELog.error( e );
}
GL11.glPopMatrix();
finally
{
GL11.glEnable( GL12.GL_RESCALE_NORMAL );
GL11.glEnable( GL11.GL_LIGHTING );
}
GL11.glTranslatef( 0.0f, 0.14f, -0.24f );
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 int width = fr.getStringWidth( renderedStackSize );
GL11.glTranslatef( -0.5f * width, 0.0f, -1.0f );
fr.drawString( renderedStackSize, 0, 0, 0 );
GL11.glPopAttrib();
}
}
@@ -71,7 +71,6 @@ public class RenderBlockCrank extends BaseBlockRender<BlockCrank, TileCrank>
{
return;
}
Minecraft.getMinecraft().getTextureManager().bindTexture( TextureMap.locationBlocksTexture );
RenderHelper.disableStandardItemLighting();
@@ -84,6 +83,7 @@ public class RenderBlockCrank extends BaseBlockRender<BlockCrank, TileCrank>
GL11.glShadeModel( GL11.GL_FLAT );
}
GL11.glCullFace( GL11.GL_FRONT );
GL11.glColor4f( 1.0f, 1.0f, 1.0f, 1.0f );
this.applyTESRRotation( x, y, z, tile.getForward(), tile.getUp() );
@@ -107,6 +107,9 @@ public class RenderBlockCrank extends BaseBlockRender<BlockCrank, TileCrank>
tess.draw();
tess.setTranslation( 0, 0, 0 );
GL11.glCullFace( GL11.GL_BACK );
RenderHelper.enableStandardItemLighting();
}
}
@@ -67,6 +67,7 @@ public class RenderBlockEnergyCube extends BaseBlockRender<BlockEnergyCell, Tile
final int meta = world.getBlockMetadata( x, y, z );
renderer.overrideBlockTexture = blk.getIcon( 0, meta );
final boolean out = renderer.renderStandardBlock( blk, x, y, z );
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;
public RenderBlockInscriber()
{
super( true, 30 );
@@ -108,14 +107,15 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
@Override
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 );
if( te == null )
{
return false;
}
this.preRenderInWorld( block, world, x, y, z, renderer );
final ForgeDirection fdy = te.getUp();
final ForgeDirection fdz = te.getForward();
final ForgeDirection fdx = Platform.crossProduct( fdz, fdy ).getOpposite();
@@ -151,6 +151,8 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
@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 )
{
// render inscriber
GL11.glPushMatrix();
this.applyTESRRotation( x, y, z, tile.getForward(), tile.getUp() );
@@ -223,11 +225,11 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
tess.draw();
GL11.glCullFace( GL11.GL_BACK );
GL11.glEnable( GL11.GL_LIGHTING );
GL11.glEnable( GL12.GL_RESCALE_NORMAL );
GL11.glPopMatrix();
// render items.
GL11.glColor4f( 1.0F, 1.0F, 1.0F, 1.0F );
int items = 0;
if( tile.getStackInSlot( 0 ) != null )
{
@@ -259,18 +261,14 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
}
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( 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 );
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 )
@@ -278,6 +276,7 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
if( sis != null )
{
sis = sis.copy();
GL11.glPushMatrix();
// fix to inscriber
this.applyTESRRotation( x, y, z, tile.getForward(), tile.getUp() );
@@ -289,7 +288,6 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
// set 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() );
@@ -297,12 +295,15 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
if( sis.getItemSpriteNumber() == 0 && block != null && RenderBlocks.renderItemIn3d( blk.getRenderType() ) )
{
// rotate block in angle to make it more plastic
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 );
GL11.glRotatef( 22.5f, 1f, 0f, 0f );
GL11.glRotatef( -33.75f, 0f, 1f, 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;
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 );
boolean out = false;
if( tp != null )
{
// 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 )
{
final TileEntity te = world.getTileEntity( x, y, z );
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 side = ExtraBlockTextures.BlockQuartzGrowthAcceleratorSideOn.getIcon();
blk.getRendererInstance().setTemporaryRenderIcons( top_Bottom, top_Bottom, side, side, side, side );
}
}
final boolean out = super.renderInWorld( blk, world, x, y, z, renderer );
blk.getRendererInstance().setTemporaryRenderIcon( null );
return out;
@@ -85,12 +85,7 @@ public class RenderBlockSkyChest extends BaseBlockRender<BlockSkyChest, TileSkyC
@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 )
{
if( skyChest == null )
{
return;
}
if( !skyChest.hasWorldObj() )
if( skyChest == null || !skyChest.hasWorldObj() )
{
return;
}
@@ -43,6 +43,7 @@ import appeng.tile.misc.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();
@@ -57,8 +58,8 @@ public class RenderBlockSkyCompass extends BaseBlockRender<BlockSkyCompass, Tile
if( type == ItemRenderType.INVENTORY )
{
boolean isGood = false;
final IInventory inv = Minecraft.getMinecraft().thePlayer.inventory;
for( int x = 0; x < inv.getSizeInventory(); x++ )
{
if( inv.getStackInSlot( x ) == is )
@@ -76,9 +77,7 @@ public class RenderBlockSkyCompass extends BaseBlockRender<BlockSkyCompass, Tile
GL11.glEnable( GL12.GL_RESCALE_NORMAL );
GL11.glColor4f( 1.0F, 1.0F, 1.0F, 1.0F );
final ResourceLocation loc = new ResourceLocation( "appliedenergistics2", "textures/models/compass.png" );
Minecraft.getMinecraft().getTextureManager().bindTexture( loc );
Minecraft.getMinecraft().getTextureManager().bindTexture( TEXTURE_SKY_COMPASS );
if( type == ItemRenderType.ENTITY )
{
@@ -108,6 +107,7 @@ public class RenderBlockSkyCompass extends BaseBlockRender<BlockSkyCompass, Tile
}
long now = System.currentTimeMillis();
if( type == ItemRenderType.EQUIPPED_FIRST_PERSON || type == ItemRenderType.INVENTORY || type == ItemRenderType.EQUIPPED )
{
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 adjustment = (float) Math.PI * 0.74f;
this.model.renderAll( (float) this.flipidiy( cr.getRad() + offRads + adjustment ) );
}
else
{
final float offRads = rYaw / 180.0f * (float) Math.PI;
final float adjustment = (float) Math.PI * -0.74f;
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.glCullFace( GL11.GL_FRONT );
final ResourceLocation loc = new ResourceLocation( "appliedenergistics2", "textures/models/compass.png" );
Minecraft.getMinecraft().getTextureManager().bindTexture( loc );
Minecraft.getMinecraft().getTextureManager().bindTexture( TEXTURE_SKY_COMPASS );
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 );
long now = System.currentTimeMillis();
CompassResult cr = null;
if( skyCompass.getForward() == ForgeDirection.UP || skyCompass.getForward() == ForgeDirection.DOWN )
{
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.hasChan = false;
this.hasPower = false;
final BlockRenderInfo ri = blk.getRendererInstance();
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 );
this.blk = blk;
if( tw != null )
{
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 )
{
final TileDrive sp = imb.getTileEntity( world, x, y, z );
renderer.setRenderBounds( 0, 0, 0, 1, 1, 1 );
final ForgeDirection up = sp.getUp();
final ForgeDirection forward = sp.getForward();
final ForgeDirection west = Platform.crossProduct( forward, up );
final boolean result = super.renderInWorld( imb, world, x, y, z, renderer );
final Tessellator tess = Tessellator.instance;
renderer.setRenderBounds( 0, 0, 0, 1, 1, 1 );
final boolean result = super.renderInWorld( imb, world, x, y, z, renderer );
final Tessellator tess = Tessellator.instance;
final IIcon ico = ExtraBlockTextures.MEStorageCellTextures.getIcon();
final int b = world.getLightBrightnessForSkyBlocks( x + forward.offsetX, y + forward.offsetY, z + forward.offsetZ, 0 );
@@ -76,6 +76,7 @@ public class RenderDrive extends BaseBlockRender<BlockDrive, TileDrive>
for( int xx = 0; xx < 2; xx++ )
{
final int stat = sp.getCellStatus( yy * 2 + ( 1 - xx ) );
this.selectFace( renderer, west, up, forward, 2 + xx * 7, 7 + xx * 7, 1 + yy * 3, 3 + yy * 3 );
int spin = 0;
@@ -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 )
{
Tessellator.instance.setBrightness( 0 );
renderer.overrideBlockTexture = ExtraBlockTextures.getMissing();
this.renderInvBlock( EnumSet.of( ForgeDirection.SOUTH ), block, is, Tessellator.instance, 0x000000, renderer );
@@ -67,13 +68,14 @@ public class RenderMEChest extends BaseBlockRender<BlockChest, TileChest>
public boolean renderInWorld( final BlockChest imb, final IBlockAccess world, final int x, final int y, final int z, final RenderBlocks renderer )
{
final TileChest sp = imb.getTileEntity( world, x, y, z );
renderer.setRenderBounds( 0, 0, 0, 1, 1, 1 );
if( sp == null )
{
return false;
}
renderer.setRenderBounds( 0, 0, 0, 1, 1, 1 );
final ForgeDirection up = sp.getUp();
final ForgeDirection forward = sp.getForward();
final ForgeDirection west = Platform.crossProduct( forward, up );
@@ -97,6 +99,7 @@ public class RenderMEChest extends BaseBlockRender<BlockChest, TileChest>
final int offsetU = -4;
final FlippableIcon flippableIcon = new FlippableIcon( new OffsetIcon( ExtraBlockTextures.MEStorageCellTextures.getIcon(), offsetU, offsetV ) );
if( forward == ForgeDirection.EAST && ( up == ForgeDirection.NORTH || up == ForgeDirection.SOUTH ) )
{
flippableIcon.setFlip( true, false );
@@ -118,13 +121,6 @@ public class RenderMEChest extends BaseBlockRender<BlockChest, TileChest>
flippableIcon.setFlip( true, false );
}
/*
* 1.7.2
* else if ( forward == ForgeDirection.EAST && up == ForgeDirection.UP ) flippableIcon.setFlip( true, false );
* else if (
* forward == ForgeDirection.NORTH && up == ForgeDirection.UP ) flippableIcon.setFlip( true, false );
*/
this.renderFace( x, y, z, imb, flippableIcon, renderer, forward );
if( stat != 0 )
@@ -45,14 +45,19 @@ import appeng.tile.qnb.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
public void renderInventory( final BlockQuantumBase block, final ItemStack item, final RenderBlocks renderer, final ItemRenderType type, final Object[] obj )
{
final float minPx = 2.0f / 16.0f;
final float maxPx = 14.0f / 16.0f;
renderer.setRenderBounds( minPx, minPx, minPx, maxPx, maxPx, maxPx );
renderer.setRenderBounds( DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX );
super.renderInventory( block, item, renderer, type, obj );
}
@@ -60,6 +65,7 @@ public class RenderQNB extends BaseBlockRender<BlockQuantumBase, TileQuantumBrid
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 );
if( tqb == null )
{
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 );
}
final float renderMin = 2.0f / 16.0f;
final float renderMax = 14.0f / 16.0f;
renderer.setRenderBounds( renderMin, renderMin, renderMin, renderMax, renderMax, renderMax );
renderer.setRenderBounds( DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX );
renderer.renderStandardBlock( block, x, y, z );
}
else
{
if( !tqb.isFormed() )
{
final float renderMin = 2.0f / 16.0f;
final float renderMax = 14.0f / 16.0f;
renderer.setRenderBounds( renderMin, renderMin, renderMin, renderMax, renderMax, renderMax );
renderer.setRenderBounds( DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX );
renderer.renderStandardBlock( block, x, y, z );
}
else if( tqb.isCorner() )
{
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() );
float renderMin = 4.0f / 16.0f;
float renderMax = 12.0f / 16.0f;
renderer.setRenderBounds( renderMin, renderMin, renderMin, renderMax, renderMax, renderMax );
renderer.setRenderBounds( DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX );
renderer.renderStandardBlock( block, x, y, z );
if( tqb.isPowered() )
{
renderMin = 3.9f / 16.0f;
renderMax = 12.1f / 16.0f;
renderer.setRenderBounds( renderMin, renderMin, renderMin, renderMax, renderMax, renderMax );
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 );
Tessellator.instance.setColorOpaque_F( 1.0F, 1.0F, 1.0F );
final int bn = 15;
@@ -129,22 +126,18 @@ public class RenderQNB extends BaseBlockRender<BlockQuantumBase, TileQuantumBrid
}
else
{
float renderMin = 2.0f / 16.0f;
float renderMax = 14.0f / 16.0f;
renderer.setRenderBounds( 0, renderMin, renderMin, 1, renderMax, renderMax );
renderer.setRenderBounds( 0, DEFAULT_RENDER_MIN, DEFAULT_RENDER_MIN, 1, DEFAULT_RENDER_MAX, DEFAULT_RENDER_MAX );
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.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 );
if( tqb.isPowered() )
{
renderMin = -0.01f / 16.0f;
renderMax = 16.01f / 16.0f;
renderer.setRenderBounds( renderMin, renderMin, renderMin, renderMax, renderMax, renderMax );
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 );
Tessellator.instance.setColorOpaque_F( 1.0F, 1.0F, 1.0F );
final int bn = 15;
@@ -38,23 +38,28 @@ import appeng.tile.AEBaseTile;
public class RenderQuartzGlass extends BaseBlockRender<BlockQuartzGlass, AEBaseTile>
{
private static byte[][][] offsets;
private static final byte[][][] OFFSETS = generateOffsets();
public RenderQuartzGlass()
{
super( false, 0 );
if( offsets == null )
}
private static byte[][][] generateOffsets()
{
final Random r = new Random( 924 );
final byte[][][] offset = new byte[10][10][10];
for( int x = 0; x < 10; x++ )
{
final Random r = new Random( 924 );
offsets = new byte[10][10][10];
for( int x = 0; x < 10; x++ )
for( int y = 0; y < 10; y++ )
{
for( int y = 0; y < 10; y++ )
{
r.nextBytes( offsets[x][y] );
}
r.nextBytes( offset[x][y] );
}
}
return offset;
}
@Override
@@ -75,10 +80,10 @@ public class RenderQuartzGlass extends BaseBlockRender<BlockQuartzGlass, AEBaseT
final int cy = Math.abs( y % 10 );
final int cz = Math.abs( z % 10 );
final int u = offsets[cx][cy][cz] % 4;
final int v = offsets[9 - cx][9 - cy][9 - cz] % 4;
final int u = OFFSETS[cx][cy][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:
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 );
renderer.renderAllFaces = true;
float zOff = 0.0f;
float yOff = 0.0f;
float xOff = 0.0f;
float yOff = 0.0f;
float zOff = 0.0f;
renderer.renderAllFaces = true;
if( te != null )
{
final ForgeDirection forward = te.getUp();
@@ -66,6 +66,7 @@ public class RenderSpatialPylon extends BaseBlockRender<BlockSpatialPylon, TileS
if( ( displayBits & TileSpatialPylon.DISPLAY_Z ) == TileSpatialPylon.DISPLAY_X )
{
ori = ForgeDirection.EAST;
if( ( displayBits & TileSpatialPylon.DISPLAY_MIDDLE ) == TileSpatialPylon.DISPLAY_END_MAX )
{
renderer.uvRotateEast = 1;
@@ -70,6 +70,7 @@ public class RendererSecurity extends BaseBlockRender<BlockSecurity, TileSecurit
final boolean result = renderer.renderStandardBlock( imb, x, y, z );
int b = world.getLightBrightnessForSkyBlocks( x + up.offsetX, y + up.offsetY, z + up.offsetZ, 0 );
if( sp.isActive() )
{
b = 15 << 20 | 15 << 4;
@@ -82,6 +83,7 @@ public class RendererSecurity extends BaseBlockRender<BlockSecurity, TileSecurit
Tessellator.instance.setColorOpaque_I( sp.getColor().whiteVariant );
IIcon ico = sp.isActive() ? ExtraBlockTextures.BlockMESecurityOn_Light.getIcon() : ExtraBlockTextures.MEChest.getIcon();
this.renderFace( x, y, z, imb, ico, renderer, up );
if( sp.isActive() )
{
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 )
{
this.time += l;
if( this.time > 4.0 )
{
this.time -= 4.0;
@@ -37,10 +37,12 @@ public class ChargedOreFX extends EntityReddustFX
int j1 = super.getBrightnessForRender( par1 );
j1 = Math.max( j1 >> 20, j1 >> 4 );
j1 += 3;
if( j1 > 15 )
{
j1 = 15;
}
return j1 << 20 | j1 << 4;
}
}
@@ -89,6 +89,7 @@ public class CraftingFx extends EntityBreakingFX
final int blkX = MathHelper.floor_double( offX );
final int blkY = MathHelper.floor_double( offY );
final int blkZ = MathHelper.floor_double( offZ );
if( blkX == this.startBlkX && blkY == this.startBlkY && blkZ == this.startBlkZ )
{
offX -= interpPosX;
@@ -51,8 +51,8 @@ public class LightningArcFX extends LightningFX
final double lastDirectionX = this.rx * i;
final double lastDirectionY = this.ry * i;
final double lastDirectionZ = this.rz * i;
final double len = Math.sqrt( lastDirectionX * lastDirectionX + lastDirectionY * lastDirectionY + lastDirectionZ * lastDirectionZ );
for( int s = 0; s < this.getSteps(); s++ )
{
final double[][] localSteps = this.getPrecomputedSteps();
@@ -31,7 +31,6 @@ import net.minecraft.world.World;
public class LightningFX extends EntityFX
{
private static final Random RANDOM_GENERATOR = new Random();
private static final int STEPS = 5;
@@ -62,6 +61,7 @@ public class LightningFX extends EntityFX
double lastDirectionX = ( RANDOM_GENERATOR.nextDouble() - 0.5 ) * 0.9;
double lastDirectionY = ( RANDOM_GENERATOR.nextDouble() - 0.5 ) * 0.9;
double lastDirectionZ = ( RANDOM_GENERATOR.nextDouble() - 0.5 ) * 0.9;
for( int s = 0; s < LightningFX.STEPS; s++ )
{
this.precomputedSteps[s][0] = lastDirectionX = ( lastDirectionX + ( RANDOM_GENERATOR.nextDouble() - 0.5 ) * 0.9 ) / 2.0;
@@ -86,7 +86,9 @@ public class LightningFX extends EntityFX
public void renderParticle( final Tessellator tess, final float l, final float rX, final float rY, final float rZ, final float rYZ, final float rXY )
{
final float j = 1.0f;
tess.setColorRGBA_F( this.particleRed * j * 0.9f, this.particleGreen * j * 0.95f, this.particleBlue * j, this.particleAlpha );
if( this.particleAge == 3 )
{
this.regen();
@@ -190,10 +192,6 @@ public class LightningFX extends EntityFX
}
}
}
/*
* GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS ); GL11.glDisable( GL11.GL_CULL_FACE ); tess.draw();
* GL11.glPopAttrib(); tess.startDrawingQuads();
*/
}
private void clear()
@@ -210,7 +208,9 @@ public class LightningFX extends EntityFX
tess.addVertexWithUV( this.verticesWithUV[0], this.verticesWithUV[1], this.verticesWithUV[2], f6, f8 );
tess.addVertexWithUV( b[0], b[1], b[2], f6, f8 );
}
this.hasData = true;
for( int x = 0; x < 3; x++ )
{
this.vertices[x] = a[x];
@@ -45,6 +45,7 @@ public class ItemEncodedPatternRenderer implements IItemRenderer
if( !this.recursive && type == IItemRenderer.ItemRenderType.INVENTORY && isShiftHeld )
{
final ItemEncodedPattern iep = (ItemEncodedPattern) item.getItem();
if( iep.getOutput( item ) != null )
{
return true;
@@ -66,11 +67,10 @@ public class ItemEncodedPatternRenderer implements IItemRenderer
this.recursive = true;
final ItemEncodedPattern iep = (ItemEncodedPattern) item.getItem();
final ItemStack is = iep.getOutput( item );
final Minecraft mc = Minecraft.getMinecraft();
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
GL11.glPushAttrib( GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT );
RenderHelper.enableGUIStandardItemLighting();
this.ri.renderItemAndEffectIntoGUI( mc.fontRenderer, mc.getTextureManager(), is, 0, 0 );
RenderHelper.disableStandardItemLighting();
@@ -50,8 +50,13 @@ public class PaintBallRender implements IItemRenderer
@Override
public void renderItem( final ItemRenderType type, final ItemStack item, final Object... data )
{
IIcon par2Icon = item.getIconIndex();
if( item.getItemDamage() >= 20 )
final IIcon par2Icon;
if( item.getItemDamage() < 20 )
{
par2Icon = item.getIconIndex();
}
else
{
par2Icon = ExtraItemTextures.ItemPaintBallShimmer.getIcon();
}
@@ -64,8 +69,8 @@ public class PaintBallRender implements IItemRenderer
final ItemPaintBall ipb = (ItemPaintBall) item.getItem();
final Tessellator tessellator = Tessellator.instance;
GL11.glPushMatrix();
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
final AEColor col = ipb.getColor( item );
@@ -122,7 +127,15 @@ public class PaintBallRender implements IItemRenderer
GL11.glColor4f( 1, 1, 1, 1.0F );
GL11.glPopAttrib();
if( type == ItemRenderType.INVENTORY )
{
GL11.glDisable( GL11.GL_ALPHA_TEST );
}
else
{
GL11.glEnable( GL11.GL_CULL_FACE );
}
GL11.glPopMatrix();
}
}
@@ -60,8 +60,9 @@ public class ToolBiometricCardRender implements IItemRenderer
final float f7 = par2Icon.getMaxV();
final Tessellator tessellator = Tessellator.instance;
GL11.glPushMatrix();
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
GL11.glPushAttrib( GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT );
if( type == ItemRenderType.INVENTORY )
{
@@ -96,6 +97,7 @@ public class ToolBiometricCardRender implements IItemRenderer
final float v = ExtraItemTextures.White.getIcon().getInterpolatedV( 8.1 );
String username = "";
if( item.getItem() instanceof IBiometricCard )
{
final GameProfile gp = ( (IBiometricCard) item.getItem() ).getProfile( item );
@@ -119,6 +121,7 @@ public class ToolBiometricCardRender implements IItemRenderer
}
final float z = 0;
for( int x = 0; x < 8; x++ )// 8
{
for( int y = 0; y < 6; y++ )// 6
@@ -150,6 +153,7 @@ public class ToolBiometricCardRender implements IItemRenderer
tessellator.addVertexWithUV( x, y + 1, z, u, v );
}
}
tessellator.draw();
GL11.glPopAttrib();
@@ -58,8 +58,9 @@ public class ToolColorApplicatorRender implements IItemRenderer
float f7 = par2Icon.getMaxV();
final Tessellator tessellator = Tessellator.instance;
GL11.glPushMatrix();
GL11.glPushAttrib( GL11.GL_ALL_ATTRIB_BITS );
GL11.glPushAttrib( GL11.GL_ENABLE_BIT | GL11.GL_COLOR_BUFFER_BIT );
if( type == ItemRenderType.INVENTORY )
{
@@ -106,10 +107,12 @@ public class ToolColorApplicatorRender implements IItemRenderer
final IIcon light = ExtraItemTextures.ToolColorApplicatorTip_Light.getIcon();
GL11.glScalef( 1F / 16F, 1F / 16F, 1F );
if( type != ItemRenderType.INVENTORY )
{
GL11.glTranslatef( 2, 0, 0 );
}
GL11.glDisable( GL11.GL_LIGHTING );
final AEColor col = ( (ToolColorApplicator) item.getItem() ).getActiveColor( item );
+13 -5
View File
@@ -24,7 +24,10 @@ import java.util.EnumSet;
import net.minecraftforge.common.util.ForgeDirection;
import appeng.api.exceptions.ExistingConnectionException;
import appeng.api.exceptions.FailedConnection;
import appeng.api.exceptions.NullNodeConnectionException;
import appeng.api.exceptions.SecurityConnectionException;
import appeng.api.networking.GridFlags;
import appeng.api.networking.IGridConnection;
import appeng.api.networking.IGridNode;
@@ -43,6 +46,8 @@ import appeng.util.ReadOnlyCollection;
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 int channelData = 0;
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() );
}
throw new FailedConnection();
throw new SecurityConnectionException();
}
if( a == null || b == null )
{
throw new GridException( "Connection Forged Between null entities." );
throw new NullNodeConnectionException();
}
if( a.hasConnection( b ) || b.hasConnection( a ) )
{
final String aCoords = a.getGridBlock().getLocation().toString();
final String bCoords = b.getGridBlock().getLocation().toString();
final String aMachineClass = a.getGridBlock().getMachine().getClass().getSimpleName();
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.fromAtoB = fromAtoB;
this.sideB = b;
@@ -29,6 +29,7 @@ import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.oredict.OreDictionary;
import appeng.api.AEApi;
import appeng.api.config.Actionable;
import appeng.api.config.FuzzyMode;
import appeng.api.exceptions.AppEngException;
@@ -43,7 +44,6 @@ import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList;
import appeng.util.Platform;
import appeng.util.item.AEItemStack;
import appeng.util.item.UnsortedItemList;
public class CellInventory implements ICellInventory
@@ -191,7 +191,7 @@ public class CellInventory implements ICellInventory
private boolean isEmpty( final IMEInventory<IAEItemStack> meInventory )
{
return meInventory.getAvailableItems( new UnsortedItemList() ).isEmpty();
return meInventory.getAvailableItems( AEApi.instance().storage().createItemList() ).isEmpty();
}
@Override
@@ -446,7 +446,7 @@ public class CellInventory implements ICellInventory
{
if( this.cellItems == null )
{
this.cellItems = new UnsortedItemList();
this.cellItems = AEApi.instance().storage().createItemList();
}
this.cellItems.resetStatus(); // clears totals and stuff.
@@ -59,7 +59,7 @@ public final class VersionCheckerConfig
public VersionCheckerConfig( @Nonnull final File file )
{
Preconditions.checkNotNull( file );
Preconditions.checkState( file.isFile() );
Preconditions.checkState( !file.isDirectory() );
this.config = new Configuration( file );
+9 -32
View File
@@ -21,14 +21,11 @@ package appeng.util.item;
import java.util.Collection;
import java.util.Collections;
import java.util.IdentityHashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Map;
import java.util.NavigableMap;
import java.util.concurrent.ConcurrentSkipListMap;
import net.minecraft.item.Item;
import net.minecraftforge.oredict.OreDictionary;
import appeng.api.config.FuzzyMode;
@@ -39,7 +36,7 @@ import appeng.api.storage.data.IItemList;
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
public void add( final IAEItemStack option )
@@ -49,7 +46,7 @@ public final class ItemList implements IItemList<IAEItemStack>
return;
}
final IAEItemStack st = this.getItemRecord( option.getItem() ).get( option );
final IAEItemStack st = this.records.get( option );
if( st != null )
{
@@ -70,7 +67,7 @@ public final class ItemList implements IItemList<IAEItemStack>
return null;
}
return this.getItemRecord( itemStack.getItem() ).get( itemStack );
return this.records.get( itemStack );
}
@Override
@@ -123,7 +120,7 @@ public final class ItemList implements IItemList<IAEItemStack>
return;
}
final IAEItemStack st = this.getItemRecord( option.getItem() ).get( option );
final IAEItemStack st = this.records.get( option );
if( st != null )
{
@@ -149,7 +146,7 @@ public final class ItemList implements IItemList<IAEItemStack>
return;
}
final IAEItemStack st = this.getItemRecord( option.getItem() ).get( option );
final IAEItemStack st = this.records.get( option );
if( st != null )
{
@@ -172,7 +169,7 @@ public final class ItemList implements IItemList<IAEItemStack>
return;
}
final IAEItemStack st = this.getItemRecord( option.getItem() ).get( option );
final IAEItemStack st = this.records.get( option );
if( st != null )
{
@@ -202,14 +199,7 @@ public final class ItemList implements IItemList<IAEItemStack>
@Override
public int size()
{
int size = 0;
for( final Map<IAEItemStack, IAEItemStack> element : this.records.values() )
{
size += element.size();
}
return size;
return this.records.size();
}
@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 )
{
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 )
@@ -250,6 +227,6 @@ public final class ItemList implements IItemList<IAEItemStack>
final IAEItemStack low = filter.getLow( 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.NavigableMap;
import java.util.NoSuchElementException;
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>
{
private final Iterator<NavigableMap<T, T>> parent;
private Iterator<T> innerIterater = null;
private final Iterator<T> parent;
private T next;
public MeaningfulItemIterator( final Iterator<NavigableMap<T, T>> iterator )
public MeaningfulItemIterator( final Iterator<T> iterator )
{
this.parent = iterator;
if( this.parent.hasNext() )
{
this.innerIterater = this.parent.next().values().iterator();
}
}
@Override
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.innerIterater.hasNext() )
if( this.next.isMeaningful() )
{
this.next = this.innerIterater.next();
if( this.next.isMeaningful() )
{
return true;
}
else
{
this.innerIterater.remove(); // self cleaning :3
}
return true;
}
if( this.parent.hasNext() )
else
{
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.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.BlockCondenser.name=Matter Condenser
tile.appliedenergistics2.BlockCondenser.name=Anyag Sűrítő
tile.appliedenergistics2.BlockController.name=ME Vezérlő
tile.appliedenergistics2.BlockCrank.name=Fa Kurbli
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.BlockDrive.name=ME Meghajtó
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.BlockIOPort.name=ME IO Port
tile.appliedenergistics2.BlockIOPort.name=ME Be/Ki Port
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.BlockQuantumRing.name=ME Kvantum Gyűrű
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.BlockQuartzLamp.name=Vibráló Kvarc Üveg
tile.appliedenergistics2.BlockQuartzPillar.name=Certus Kvarc Oszlop
tile.appliedenergistics2.BlockQuartzTorch.name=Feltöltött Kvarc Fáklya
tile.appliedenergistics2.BlockLightDetector.name=Fény Detector Fixture
tile.appliedenergistics2.BlockSpatialIOPort.name=Spatial IO Port
tile.appliedenergistics2.BlockSpatialPylon.name=Spatial Pylon
tile.appliedenergistics2.BlockQuartzTorch.name=Töltött Kvarc Test
tile.appliedenergistics2.BlockLightDetector.name=Fény Észlelő test
tile.appliedenergistics2.BlockSpatialIOPort.name=Tér-IO Port
tile.appliedenergistics2.BlockSpatialPylon.name=Tér-Pylon
tile.appliedenergistics2.BlockTinyTNT.name=Pici TNT
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.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.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.Brick.name=Égboltkő Tégla
tile.appliedenergistics2.BlockSkyStone.SmallBrick.name=Kicsi Égboltkő Tégla
tile.appliedenergistics2.BlockSkyChest.name=Égboltkő 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.BlockCraftingStorage.name=1k Crafting Tároló
tile.appliedenergistics2.BlockCraftingStorage4k.name=4k Crafting Tároló
tile.appliedenergistics2.BlockCraftingStorage16k.name=16k Crafting Tároló
tile.appliedenergistics2.BlockCraftingStorage64k.name=64k Crafting Tároló
tile.appliedenergistics2.BlockCraftingAccelerator.name=Crafting Co-Processing Egység
tile.appliedenergistics2.BlockCraftingUnit.name=Crafting Egység
tile.appliedenergistics2.BlockMolecularAssembler.name=Molekuláris Összerakó
tile.appliedenergistics2.BlockCraftingStorage.name=1k Barkács Tároló
tile.appliedenergistics2.BlockCraftingStorage4k.name=4k Barkács Tároló
tile.appliedenergistics2.BlockCraftingStorage16k.name=16k Barkács Tároló
tile.appliedenergistics2.BlockCraftingStorage64k.name=64k Barkács Tároló
tile.appliedenergistics2.BlockCraftingAccelerator.name=Barkács Segédfeldolgozó Egység
tile.appliedenergistics2.BlockCraftingUnit.name=Barkácsoló Egység
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.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.LoadedSettings=Beállítások sikeresen beolvasva.
chat.appliedenergistics2.DeviceNotPowered=A készüléknek alacsony az energia szintje.
chat.appliedenergistics2.MachineNotPowered=A készülék nem kap energiát.
chat.appliedenergistics2.CommunicationError=Hiba lépet fel a hálózat kommunikációja közben.
chat.appliedenergistics2.DeviceNotPowered=A készülékenergia szintje alacsony.
chat.appliedenergistics2.DeviceNotWirelessTerminal=A készülék nem egy Vezetéknélküli Terminál.
chat.appliedenergistics2.DeviceNotLinked=Az eszköz nincs összekötve.
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.isNowLocked=Monitor zárolva.
chat.appliedenergistics2.isNowUnlocked=Monitor feloldva.
// Creative Tabs
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.METunnel=ME
gui.appliedenergistics2.ItemTunnel=Item
gui.appliedenergistics2.FluidTunnel=Folyadék
gui.appliedenergistics2.RedstoneTunnel=Vöröskő
gui.appliedenergistics2.EUTunnel=EU
gui.appliedenergistics2.RFTunnel=RF
gui.appliedenergistics2.LightTunnel=Fény
gui.appliedenergistics2.METunnel=ME Csatorna
gui.appliedenergistics2.ItemTunnel=Tárgy Csatorna
gui.appliedenergistics2.FluidTunnel=Folyadék Csatorna
gui.appliedenergistics2.RedstoneTunnel=Vöröskő Csatorna
gui.appliedenergistics2.EUTunnel=EU Csatorna
gui.appliedenergistics2.RFTunnel=RF Csatorna
gui.appliedenergistics2.LightTunnel=Fény Csatorna
gui.appliedenergistics2.OCTunnel=OpenComputers
gui.appliedenergistics2.PressureTunnel=Nyomás
gui.appliedenergistics2.security.extract.name=Kiszed
gui.appliedenergistics2.security.inject.name=Berak
gui.appliedenergistics2.security.craft.name=Craftolás
gui.appliedenergistics2.security.extract.name=Eltávolítás
gui.appliedenergistics2.security.inject.name=Behelyezés
gui.appliedenergistics2.security.craft.name=Barkácsolás
gui.appliedenergistics2.security.build.name=Építés
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.inject.tip=A felhasználónak engedélyezett, hogy tároljon új itemeket a tárolóban.
gui.appliedenergistics2.security.craft.tip=A felhasználó képes indítani új craftolást.
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.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 új tárgyakat helyezzen a tárolóba.
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 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.Efficiency=Hatékonyság
gui.appliedenergistics2.RequiredPower=Szükséges Energia
gui.appliedenergistics2.StoredPower=Tárolt Energia
gui.appliedenergistics2.MaxPower=Maximum Energia
gui.appliedenergistics2.QuartzCuttingKnife=Kvarc Vágó Kés
gui.appliedenergistics2.Inscriber=Karcoló
gui.appliedenergistics2.Wireless=Wireless Hozzáférési Pont
gui.appliedenergistics2.WirelessTerminal=Wireless terminal
gui.appliedenergistics2.QuartzCuttingKnife=Kvarc Vágókés
gui.appliedenergistics2.Inscriber=Véső
gui.appliedenergistics2.Wireless=Vezetéknélküli Hozzáférési Pont
gui.appliedenergistics2.WirelessTerminal=Vezetéknélküli terminál
gui.appliedenergistics2.NoPermissions=Hozzáférési jog nincs kijelölve.
gui.appliedenergistics2.SecurityCardEditor=Biometrikus kártya szerkesztő
gui.appliedenergistics2.Encoded=Kódolva
gui.appliedenergistics2.Priority=Prioritás
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.NetworkTool=Hálózati Eszköz
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.Security=Biztonsági Szabályzat
gui.appliedenergistics2.CellWorkbench=Cella Munkaasztal
gui.appliedenergistics2.QuantumLinkChamber=Kvantum összekötő kamra
gui.appliedenergistics2.IOPort=ME IO Port
gui.appliedenergistics2.Chest=ME Láda
gui.appliedenergistics2.Condenser=Matter Condenser
gui.appliedenergistics2.Config=Konfig
gui.appliedenergistics2.Condenser=Anyag Sűrítő
gui.appliedenergistics2.Config=Konfiguráció
gui.appliedenergistics2.Drive=ME Meghajtó
gui.appliedenergistics2.ExportBus=ME Export Busz
gui.appliedenergistics2.GrindStone=Csiszo
gui.appliedenergistics2.GrindStone=Dará
gui.appliedenergistics2.ImportBus=ME Import Busz
gui.appliedenergistics2.Interface=ME Csatlakozás Felület
gui.appliedenergistics2.LevelEmitter=ME Level Emitter
gui.appliedenergistics2.Of=-ból
gui.appliedenergistics2.Interface=ME Interfész
gui.appliedenergistics2.LevelEmitter=ME Szint Kibocsátó
gui.appliedenergistics2.Of=-ból/-ből
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.StoredItems=Tárolt Itemek
gui.appliedenergistics2.Terminal=Terminal
gui.appliedenergistics2.InterfaceTerminal=Interface Terminal
gui.appliedenergistics2.InterfaceTerminalHint=Show Or Hide on Interface Terminal.
gui.appliedenergistics2.FormationPlane=Formation Plane
gui.appliedenergistics2.StoredItems=Tárolt Tárgyak
gui.appliedenergistics2.Terminal=Terminál
gui.appliedenergistics2.InterfaceTerminal=Interfész Terminál
gui.appliedenergistics2.InterfaceTerminalHint=Az interfész terminál megjelenítése, elrejtése.
gui.appliedenergistics2.FormationPlane=Kialakító Lap
gui.appliedenergistics2.VibrationChamber=Vibrációs Kamra
gui.appliedenergistics2.NetworkDetails=Hálózati Részletek
gui.appliedenergistics2.StorageCells=ME Tároló Cellák
gui.appliedenergistics2.IOBuses=ME Import/Export Busz
gui.appliedenergistics2.Stores=Stores
gui.appliedenergistics2.BytesUsed=Bytes használva
gui.appliedenergistics2.Stores=Tárak
gui.appliedenergistics2.BytesUsed=Használt bájtok
gui.appliedenergistics2.Types=Típus
gui.appliedenergistics2.Blank=Üres
gui.appliedenergistics2.Unlinked=Nincs Összekötve
gui.appliedenergistics2.Linked=Összekötve
gui.appliedenergistics2.StoredSize=Tárolt Méret
gui.appliedenergistics2.SkyChest=Ékboltkő Láda
gui.appliedenergistics2.PatternTerminal=Minta Terminal
gui.appliedenergistics2.CraftingPattern=Minta Kraftolás
gui.appliedenergistics2.MolecularAssembler=Molekuláris Összerakó
gui.appliedenergistics2.ProcessingPattern=Minta Feldolgozó
gui.appliedenergistics2.Crafts=Crafts
gui.appliedenergistics2.PatternTerminal=Minta Terminál
gui.appliedenergistics2.CraftingPattern=Barkácsoló Minta
gui.appliedenergistics2.MolecularAssembler=Molekuláris Összeállító
gui.appliedenergistics2.ProcessingPattern=Feldolgozó Minta
gui.appliedenergistics2.Crafts=Barkácsol
gui.appliedenergistics2.And=és
gui.appliedenergistics2.Creates=Creates
gui.appliedenergistics2.With=-vel
gui.appliedenergistics2.InWorldCrafting=AE2 In World Crafting
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.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.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.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.inWorldSingularity=To create drop 1 Singularity and 1 Ender Dust and cause an explosion within range of the items.
gui.appliedenergistics2.ChargedQuartz=Charged Certus Quartz is crafted by inserting an uncharged Certus Quartz Crystal into the Charger, and powering it.
gui.appliedenergistics2.OfSecondOutput=%1$d%% Chance for second output.
gui.appliedenergistics2.NoSecondOutput=No Secondary Output
gui.appliedenergistics2.SelectAmount=Select Amount
gui.appliedenergistics2.CopyMode=Copy Mode
gui.appliedenergistics2.CopyModeDesc=Controls if the contents of the configuration pane are cleared when you remove the cell.
gui.appliedenergistics2.Creates=Amít készít
gui.appliedenergistics2.With=Az alábbiakkal
gui.appliedenergistics2.Substitute=Pótlékokat használ:
gui.appliedenergistics2.Yes=Igen
gui.appliedenergistics2.No=Nem
gui.appliedenergistics2.InWorldCrafting=AE2 Világbeli Barkácsolás
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.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.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.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.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.ChargedQuartz=Töltött Certus Kvarc készítéséhez helyezz be egy Certus Kvarcot a Töltőbe.
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.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.Lumen=Lumen
gui.appliedenergistics2.Empty=Üres
gui.appliedenergistics2.Stored=Tárolva
gui.appliedenergistics2.Cancel=Mégse
gui.appliedenergistics2.Crafting=Craftolás
gui.appliedenergistics2.Scheduled=Idözitve
gui.appliedenergistics2.CraftingStatus=Craftolási Státusz
gui.appliedenergistics2.ETAFormat=HH:mm:ss
gui.appliedenergistics2.Crafting=Barkácsolás alatt
gui.appliedenergistics2.Scheduled=Ütemezett
gui.appliedenergistics2.CraftingStatus=Barkácsolási Státusz
gui.appliedenergistics2.FromStorage=Rendelkezésre áll
gui.appliedenergistics2.ToCraft=To Craft
gui.appliedenergistics2.CraftingPlan=Crafting Plan
gui.appliedenergistics2.Automatic=Autmatikus
gui.appliedenergistics2.ToCraft=Hogy barkácsoljon
gui.appliedenergistics2.CraftingPlan=Barkácsolási terv
gui.appliedenergistics2.Automatic=Automatikus
gui.appliedenergistics2.Start=Indítás
gui.appliedenergistics2.Missing=Hiányzik
gui.appliedenergistics2.Bytes=Storage
gui.appliedenergistics2.Simulation=Simulation
gui.appliedenergistics2.CoProcessors=Co Processors
gui.appliedenergistics2.CraftingCPU=Crafting CPU
gui.appliedenergistics2.NoCraftingCPUs=No Crafting CPUs are Available
gui.appliedenergistics2.CalculatingWait=Calculating Please Wait...
gui.appliedenergistics2.Bytes=Bájt
gui.appliedenergistics2.Simulation=Szimuláció
gui.appliedenergistics2.CoProcessors=Segéd CPU
gui.appliedenergistics2.CraftingCPU=Barkácsolási CPU
gui.appliedenergistics2.NoCraftingCPUs=Nincs elérhető Barkácsolási CPU
gui.appliedenergistics2.CalculatingWait=Számítás folyamatban...
gui.appliedenergistics2.Clean=Tiszta
gui.appliedenergistics2.InvalidPattern=Invalid Pattern
gui.appliedenergistics2.InvalidPattern=Érvénytelen Minta
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.appliedenergistics2.StashDesc=Return items on the crafting grid to network storage.
gui.tooltips.appliedenergistics2.Substitutions=Ore-Dict Substitutions
gui.tooltips.appliedenergistics2.SubstitutionsDesc=Edit substitution options for input components.
gui.tooltips.appliedenergistics2.SubstitutionsOn=Substitutions Enabled
gui.tooltips.appliedenergistics2.SubstitutionsOff=Substitutions Disabled
gui.tooltips.appliedenergistics2.Encode=Encode Pattern
gui.tooltips.appliedenergistics2.EncodeDescription=Write the entered pattern to the current encoded pattern, or to available blank pattern.
gui.tooltips.appliedenergistics2.FuzzyMode=Fuzzy Comparison
gui.tooltips.appliedenergistics2.FZPercent_25=Split Damage at 25%
gui.tooltips.appliedenergistics2.FZPercent_50=Split Damage at 50%
gui.tooltips.appliedenergistics2.FZPercent_75=Split Damage at 75%
gui.tooltips.appliedenergistics2.FZPercent_99=Split Damage at 99%
gui.tooltips.appliedenergistics2.SortOrder=Sort Order
gui.tooltips.appliedenergistics2.SortBy=Sort By
gui.tooltips.appliedenergistics2.FZIgnoreAll=Match Any
gui.tooltips.appliedenergistics2.TransferDirection=Transfer Direction
gui.tooltips.appliedenergistics2.TransferToNetwork=Transfer data to Network
gui.tooltips.appliedenergistics2.TransferToStorageCell=Transfer data to Storage Cell
gui.tooltips.appliedenergistics2.ToggleSortDirection=Toggle sorting direction
gui.tooltips.appliedenergistics2.StoredItems=Stored Items
gui.tooltips.appliedenergistics2.StoredCraftable=Stored / Craftable
gui.tooltips.appliedenergistics2.View=View
gui.tooltips.appliedenergistics2.RedstoneMode=Redstone Mode
gui.tooltips.appliedenergistics2.OperationMode=Operation Mode
gui.tooltips.appliedenergistics2.NumberOfItems=Number of items
gui.tooltips.appliedenergistics2.ItemName=Item name
gui.tooltips.appliedenergistics2.PowerUnits=Power Units
gui.tooltips.appliedenergistics2.IOMode=Input/Output Mode
gui.tooltips.appliedenergistics2.CondenserOutput=ME Condenser - Output
gui.tooltips.appliedenergistics2.PartitionStorage=Partition Storage
gui.tooltips.appliedenergistics2.Clear=Clear
gui.tooltips.appliedenergistics2.TrashController=Deletion via Shift / Space Clicking.
gui.tooltips.appliedenergistics2.InterfaceBlockingMode=Blocking Mode
gui.tooltips.appliedenergistics2.InterfaceCraftingMode=Crafting Mode
gui.tooltips.appliedenergistics2.Trash=Destroy Items
gui.tooltips.appliedenergistics2.MatterBalls=Condense Into Matter Balls\n%s per item
gui.tooltips.appliedenergistics2.Singularity=Condense Into Singularities\n%s per item
gui.tooltips.appliedenergistics2.Read=Extract Only
gui.tooltips.appliedenergistics2.Write=Insert Only
gui.tooltips.appliedenergistics2.ReadWrite=Bi-Directional
gui.tooltips.appliedenergistics2.AlwaysActive=Always active
gui.tooltips.appliedenergistics2.ActiveWithoutSignal=Active without signal
gui.tooltips.appliedenergistics2.ActiveWithSignal=Active with signal
gui.tooltips.appliedenergistics2.ActiveOnPulse=Activate once per pulse
gui.tooltips.appliedenergistics2.EmitLevelsBelow=Emit when levels are below or equal to limit.
gui.tooltips.appliedenergistics2.EmitLevelAbove=Emit when levels are above or equal to limit.
gui.tooltips.appliedenergistics2.SearchMode_Auto=Auto Search
gui.tooltips.appliedenergistics2.SearchMode_Standard=Standard Search
gui.tooltips.appliedenergistics2.SearchMode_NEIAuto=NEI Syncronized Auto
gui.tooltips.appliedenergistics2.SearchMode_NEIStandard=NEI Syncronized Standard
gui.tooltips.appliedenergistics2.SearchMode=Search Box Mode
gui.tooltips.appliedenergistics2.PartitionStorageHint=Configures Partition based on currently stored items.
gui.tooltips.appliedenergistics2.ClearSettings=Clear Config/Settings
gui.tooltips.appliedenergistics2.Craftable=Craftable
gui.tooltips.appliedenergistics2.MoveWhenEmpty=Move to output when empty.
gui.tooltips.appliedenergistics2.MoveWhenWorkIsDone=Move to output when work is done.
gui.tooltips.appliedenergistics2.MoveWhenFull=Move to output when full.
gui.tooltips.appliedenergistics2.Disabled=Disabled
gui.tooltips.appliedenergistics2.Enable=Enabled
gui.tooltips.appliedenergistics2.Blocking=Do not push crafing items if inventory contains items.
gui.tooltips.appliedenergistics2.NonBlocking=Ignore the contents of the target inventory.
gui.tooltips.appliedenergistics2.Craft=Crafting Behavior
gui.tooltips.appliedenergistics2.CraftOnly=Do not use stocked items, only craft items while exporting.
gui.tooltips.appliedenergistics2.CraftEither=Use stocked items, or craft items while exporting.
gui.tooltips.appliedenergistics2.LevelType=Level Type
gui.tooltips.appliedenergistics2.LevelType_Energy=Energy
gui.tooltips.appliedenergistics2.LevelType_Item=Item
gui.tooltips.appliedenergistics2.InventoryTweaks=Inventory Tweaks
gui.tooltips.appliedenergistics2.TerminalStyle=Terminal Style
gui.tooltips.appliedenergistics2.TerminalStyle_Full=Full Screen Terminal
gui.tooltips.appliedenergistics2.TerminalStyle_Tall=Tall Centered Terminal
gui.tooltips.appliedenergistics2.TerminalStyle_Small=Small Centered Terminal
// GUI Tooltips
gui.tooltips.appliedenergistics2.Stash=Tárgyak raktározása
gui.tooltips.appliedenergistics2.StashDesc=A tárgyak barkácsfelületről való hálózatba helyezése.
gui.tooltips.appliedenergistics2.Substitutions=Érc-szótár pótlás
gui.tooltips.appliedenergistics2.SubstitutionsDescEnabled=Bemeneti pótlékok engedélyezése.
gui.tooltips.appliedenergistics2.SubstitutionsDescDisabled=Bemeneti pótlékok tiltása.
gui.tooltips.appliedenergistics2.SubstitutionsOn=Pótlékok engedélyezve.
gui.tooltips.appliedenergistics2.SubstitutionsOff=Pótlékok tiltva.
gui.tooltips.appliedenergistics2.Encode=Minta kódolása
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.FuzzyMode=Megkülönböztető összehasonlítás
gui.tooltips.appliedenergistics2.FZPercent_25=25% sérülésnél való elválasztás
gui.tooltips.appliedenergistics2.FZPercent_50=50% sérülésnél való elválasztás
gui.tooltips.appliedenergistics2.FZPercent_75=75% sérülésnél való elválasztás
gui.tooltips.appliedenergistics2.FZPercent_99=99% sérülésnél való elválasztás
gui.tooltips.appliedenergistics2.SortOrder=Rendezési irány
gui.tooltips.appliedenergistics2.SortBy=Rendezés
gui.tooltips.appliedenergistics2.FZIgnoreAll=Akármelyikkel egyező
gui.tooltips.appliedenergistics2.TransferDirection=Átviteli irány
gui.tooltips.appliedenergistics2.TransferToNetwork=Az adat hálózat felé való átvitele
gui.tooltips.appliedenergistics2.TransferToStorageCell=Az adat Taroló Cella felé való átvitele
gui.tooltips.appliedenergistics2.ToggleSortDirection=Rendezés fel/le váltogatása
gui.tooltips.appliedenergistics2.StoredItems=Tárolt tárgyak
gui.tooltips.appliedenergistics2.StoredCraftable=Tárolt / Barkácsolható tárgyak
gui.tooltips.appliedenergistics2.View=Nézett:
gui.tooltips.appliedenergistics2.RedstoneMode=Vöröskő Mód
gui.tooltips.appliedenergistics2.OperationMode=Művelet Mód
gui.tooltips.appliedenergistics2.NumberOfItems=Tárgyak száma szerint
gui.tooltips.appliedenergistics2.ItemName=Tárgy neve szerint
gui.tooltips.appliedenergistics2.PowerUnits=Energia egységek
gui.tooltips.appliedenergistics2.IOMode=Bemenet/Kimenet Mód
gui.tooltips.appliedenergistics2.CondenserOutput=ME Sűrítő - Kimenet
gui.tooltips.appliedenergistics2.PartitionStorage=Partició Tároló
gui.tooltips.appliedenergistics2.Clear=Ürítés
gui.tooltips.appliedenergistics2.TrashController=Törlés Shift/Szóköz+Kattintással.
gui.tooltips.appliedenergistics2.InterfaceBlockingMode=Torlaszoló Mód
gui.tooltips.appliedenergistics2.InterfaceCraftingMode=Barkácsoló Mód
gui.tooltips.appliedenergistics2.Trash=Tágyak elpusztítása
gui.tooltips.appliedenergistics2.MatterBalls=Anyaglabdává sűrítés \n%s darabonként
gui.tooltips.appliedenergistics2.Singularity=Szingularitássá sűrítés \n%s darabonként
gui.tooltips.appliedenergistics2.Read=Csak eltávolítás
gui.tooltips.appliedenergistics2.Write=Csak behelyezés
gui.tooltips.appliedenergistics2.ReadWrite=Két irányú
gui.tooltips.appliedenergistics2.AlwaysActive=Mindig aktív
gui.tooltips.appliedenergistics2.ActiveWithoutSignal=Jel nélkül aktív
gui.tooltips.appliedenergistics2.ActiveWithSignal=Jellel aktív
gui.tooltips.appliedenergistics2.ActiveOnPulse=Pulzusonként aktív
gui.tooltips.appliedenergistics2.EmitLevelsBelow=Kibocsátás ha a szint a határérték alatt van vagy azzal egyenlő.
gui.tooltips.appliedenergistics2.EmitLevelAbove=Kibocsátás ha a szint a határérték felett van vagy azzal egyenlő.
gui.tooltips.appliedenergistics2.SearchMode_Auto=Automata keresés
gui.tooltips.appliedenergistics2.SearchMode_Standard=Általános Keresés
gui.tooltips.appliedenergistics2.SearchMode_NEIAuto=NEI-vel szinkronizált automata
gui.tooltips.appliedenergistics2.SearchMode_NEIStandard=NEI-vel szinkronizált általános
gui.tooltips.appliedenergistics2.SearchMode=Keresési rublika mód
gui.tooltips.appliedenergistics2.PartitionStorageHint=A jelenleg tárolt tárgyak szerint konfigurálja a particiót.
gui.tooltips.appliedenergistics2.ClearSettings=Beállítások konfigurálása/törlése
gui.tooltips.appliedenergistics2.Craftable=Barkácsolható
gui.tooltips.appliedenergistics2.MoveWhenEmpty=Helyezze a kimenetfelé mikor üres.
gui.tooltips.appliedenergistics2.MoveWhenWorkIsDone=Helyezze a kimenetfelé mikor a feladat kész van.
gui.tooltips.appliedenergistics2.MoveWhenFull=Helyezze a kimenetfelé mikor megtelt.
gui.tooltips.appliedenergistics2.Disabled=Tiltott
gui.tooltips.appliedenergistics2.Enable=Engedélyezett
gui.tooltips.appliedenergistics2.Blocking=Ne helyezzen barkácsoló tárgyakat a tárolóba ha az tartalmaz tárgyakat.
gui.tooltips.appliedenergistics2.NonBlocking=A cél tároló tartalmának figyelmenkívül hagyása.
gui.tooltips.appliedenergistics2.Craft=Barkácsoló Viselkedés
gui.tooltips.appliedenergistics2.CraftOnly=Ne használjon tárolt tárgyakat, csak export közben barkácsoljon.
gui.tooltips.appliedenergistics2.CraftEither=Használjon tárolt tárgyakat, vagy eyport közben barkácsoljon.
gui.tooltips.appliedenergistics2.LevelType=Szint Típus
gui.tooltips.appliedenergistics2.LevelType_Energy=Energia
gui.tooltips.appliedenergistics2.LevelType_Item=Tárgy
gui.tooltips.appliedenergistics2.InventoryTweaks=Inventory Tweaks szerint
gui.tooltips.appliedenergistics2.Mod=Mod szerint
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.ic2=Energy Units
gui.appliedenergistics2.units.mekanism=Joules
gui.appliedenergistics2.units.rotarycraft=Watts
gui.appliedenergistics2.units.thermalexpansion=Redstone Flux
gui.appliedenergistics2.units.ic2=Energia Egység
gui.appliedenergistics2.units.mekanism=Joule
gui.appliedenergistics2.units.rotarycraft=Watt
gui.appliedenergistics2.units.thermalexpansion=Vöröskő Flux
// Colors
gui.appliedenergistics2.White=Fehér
gui.appliedenergistics2.Orange=Narancssárga
gui.appliedenergistics2.Orange=Narancs
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.Lime=Limezöld
gui.appliedenergistics2.Pink=Rózsaszín
gui.appliedenergistics2.Lime=Lime
gui.appliedenergistics2.Pink=Pink
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.Purple=Lila
gui.appliedenergistics2.Blue=Kék
gui.appliedenergistics2.Brown=Barna
gui.appliedenergistics2.Green=Zöld
gui.appliedenergistics2.Red=Piros
gui.appliedenergistics2.Red=Vörös
gui.appliedenergistics2.Black=Fekete
gui.appliedenergistics2.Fluix=Fluix
// Waila
waila.appliedenergistics2.Crafting=Barkácsol
waila.appliedenergistics2.DeviceOnline=Eszköz Online
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.Unlocked=Nincs zárolva
waila.appliedenergistics2.Showing=Mutatni
waila.appliedenergistics2.Contains=Tárolni
waila.appliedenergistics2.Channels=%1$d of %2$d Csatornák
waila.appliedenergistics2.Unlocked=Feloldva
waila.appliedenergistics2.Showing=Mutatott tárgy
waila.appliedenergistics2.Contains=Energiaszint
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.4k.name=4k 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.ItemCreativeStorageCell.name=Kreatív ME Tároló Cella
item.appliedenergistics2.ItemEncodedPattern.name=Encoded Pattern
item.appliedenergistics2.ItemViewCell.name=View Cell
item.appliedenergistics2.ItemFacade.name=Cable Facade
item.appliedenergistics2.ItemCreativeStorageCell.name=Kreatív ME Tároló Cella
item.appliedenergistics2.ItemEncodedPattern.name=Kódolt Minta
item.appliedenergistics2.ItemViewCell.name=Nézet Cella
item.appliedenergistics2.ItemFacade.name=Kábel Látszat
item.appliedenergistics2.ItemCrystalSeed.Certus.name=Certus Kvarc Mag
item.appliedenergistics2.ItemCrystalSeed.Nether.name=Alvilági Kvarc 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.AnnihilationCore.name=Megsemmisítő Mag
item.appliedenergistics2.ItemMaterial.BasicCard.name=Egyszerű Kártya
item.appliedenergistics2.ItemMaterial.BlankPattern.name=Üres Minta
item.appliedenergistics2.ItemMaterial.CalcProcessor.name=Kalkulációs Processzor
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.CardRedstone.name=Vöröskő 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.Cell64kPart.name=64k ME Taroló Komponens
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.EmptyStorageCell.name=ME Storage Housing
item.appliedenergistics2.ItemMaterial.EnderDust.name=Ender Por
item.appliedenergistics2.ItemMaterial.EmptyStorageCell.name=ME Tároló Ház
item.appliedenergistics2.ItemMaterial.EnderDust.name=Bevégző Gyöngy Por
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.FluixDust.name=Fluix Por
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.PurifiedCertusQuartzCrystal.name=Tiszta Certus Kvarc 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.Silicon.name=Szilikon
item.appliedenergistics2.ItemMaterial.Singularity.name=Szingularitás
item.appliedenergistics2.ItemMaterial.Wireless.name=Wireless Fogadó
item.appliedenergistics2.ItemMaterial.WirelessBooster.name=Wireless Erősítő
item.appliedenergistics2.ItemMaterial.Wireless.name=Vezetéknélküli Fogadó
item.appliedenergistics2.ItemMaterial.WirelessBooster.name=Vezetéknélküli Erősítő
item.appliedenergistics2.ItemMaterial.WoodenGear.name=Fa fogaskerék
item.appliedenergistics2.ItemMaterial.EngProcessorPress.name=Karcolt Műszaki Nyomat
item.appliedenergistics2.ItemMaterial.CalcProcessorPress.name=Karcolt Kalkulációs Nyomat
item.appliedenergistics2.ItemMaterial.LogicProcessorPress.name=Karcolt Logikai Nyomat
item.appliedenergistics2.ItemMaterial.EngProcessorPress.name=Műszaki Processzor Nyomat
item.appliedenergistics2.ItemMaterial.CalcProcessorPress.name=Kalkulációs Processzor Nyomat
item.appliedenergistics2.ItemMaterial.LogicProcessorPress.name=Logikai Processzor Nyomat
item.appliedenergistics2.ItemMaterial.EngProcessorPrint.name=Nyomtatott Műszaki Á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.SiliconPress.name=Karcolt Szilikon Nyomat
item.appliedenergistics2.ItemMaterial.SiliconPress.name=Vésett Szilikon Nyomat
item.appliedenergistics2.ItemMaterial.SiliconPrint.name=Nyomtatott Szilikon
item.appliedenergistics2.ItemMaterial.NamePress.name=Karcolt Név Nyomat
item.appliedenergistics2.ItemMaterial.SkyDust.name=Égboltkő por
item.appliedenergistics2.ItemMaterial.CardCrafting.name=Craftoló Kártya
item.appliedenergistics2.ItemMaterial.NamePress.name=Név Nyomat
item.appliedenergistics2.ItemMaterial.SkyDust.name=Égboltkő Por
item.appliedenergistics2.ItemMaterial.CardCrafting.name=Barkácsoló Kártya
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.CableCovered.name=ME Szigetelt Kábel
item.appliedenergistics2.ItemPart.CableGlass.name=ME Üveg Kábel
item.appliedenergistics2.ItemPart.CableSmart.name=ME Okos Kábel
item.appliedenergistics2.ItemPart.CableDense.name=ME Sűrű Kábel
item.appliedenergistics2.ItemPart.StorageMonitor.name=ME Tároló Monitor
item.appliedenergistics2.ItemPart.ConversionMonitor.name=ME Átváltó Monitor
item.appliedenergistics2.ItemPart.CraftingTerminal.name=ME Craftoló Terminal
item.appliedenergistics2.ItemPart.ConversionMonitor.name=ME Átváltási Monitor
item.appliedenergistics2.ItemPart.CraftingTerminal.name=ME Barkácsoló Terminal
item.appliedenergistics2.ItemPart.SemiDarkMonitor.name=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.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.Interface.name=ME Interface
item.appliedenergistics2.ItemPart.LevelEmitter.name=ME Level Emitter
item.appliedenergistics2.ItemPart.P2PTunnel.name=P2P Alagut
item.appliedenergistics2.ItemPart.PatternTerminal.name=ME Minta Terminal
item.appliedenergistics2.ItemPart.QuartzFiber.name=Kvarc Szálas
item.appliedenergistics2.ItemPart.Interface.name=ME Interfész
item.appliedenergistics2.ItemPart.LevelEmitter.name=ME Szint Kibocsátó
item.appliedenergistics2.ItemPart.P2PTunnel.name=P2P Alagút
item.appliedenergistics2.ItemPart.PatternTerminal.name=ME Minta Terminál
item.appliedenergistics2.ItemPart.QuartzFiber.name=Kvarc Rost
item.appliedenergistics2.ItemPart.StorageBus.name=ME Tároló Busz
item.appliedenergistics2.ItemPart.Terminal.name=ME Terminal
item.appliedenergistics2.ItemPart.InvertedToggleBus.name=ME Inverted Toggle Busz
item.appliedenergistics2.ItemPart.ToggleBus.name=ME Toggle Busz
item.appliedenergistics2.ItemPart.CraftingMonitor.name=ME Craftoló Monitor
item.appliedenergistics2.ItemPart.InterfaceTerminal.name=ME Interface Terminal
item.appliedenergistics2.ItemPart.Terminal.name=ME Terminál
item.appliedenergistics2.ItemPart.InvertedToggleBus.name=ME Invertált Kapcsoló Busz
item.appliedenergistics2.ItemPart.ToggleBus.name=ME Kapcsoló Busz
item.appliedenergistics2.ItemPart.CraftingMonitor.name=ME Barkácsoló Monitor
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.16Cubed.name=16³ 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.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.ToolCertusQuartzPickaxe.name=Certus Kvarc Csákány
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.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.ToolNetherQuartzPickaxe.name=Alvilági Kvarc Csákány
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.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.ToolChargedStaff.name=Feltöltött Bot
item.appliedenergistics2.ToolEntropyManipulator.name=Entropy Manipulator
item.appliedenergistics2.ToolChargedStaff.name=Feltöltött Pálca
item.appliedenergistics2.ToolEntropyManipulator.name=Bomlás Manipuláló
item.appliedenergistics2.ToolMassCannon.name=Anyag Ágyú
item.appliedenergistics2.ToolMemoryCard.name=Memória Kártya
item.appliedenergistics2.ToolColorApplicator.name=Color Applicator
item.appliedenergistics2.ToolWirelessTerminal.name=Wireless Terminal
item.appliedenergistics2.ToolColorApplicator.name=Szín Alkalmazó
item.appliedenergistics2.ToolWirelessTerminal.name=Vezetéknélküli Terminál
item.appliedenergistics2.ToolBiometricCard.name=Biometrikus Kártya
item.appliedenergistics2.ToolDebugCard.name=Dev.DebugCard
item.appliedenergistics2.ToolReplicatorCard.name=Dev.ReplicatorCard
item.appliedenergistics2.ToolDebugCard.name=Dev.Debug Kártya
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