Compare commits

...

14 Commits

Author SHA1 Message Date
yueh 17bdd085b1 Merge pull request #2010 from yueh/feature-logger-refactoring
Refactored the logging
2015-12-27 12:53:01 +01:00
yueh 684cda58c2 Merge pull request #2074 from yueh/backport-1.8-cleanup
Backport some 1.8 cleanups
2015-12-27 12:50:11 +01:00
yueh 740324913e Merge pull request #2073 from yueh/fix-1905-followup
Interfaces now slow down with failed crafting attempts.
2015-12-27 12:50:01 +01:00
yueh dae5e888e9 Merge pull request #2059 from wlhlm/update-german-translation
Update and extend German translation
2015-12-27 12:49:49 +01:00
yueh a3abc7a1f0 Backport some 1.8 cleanups 2015-12-27 12:33:50 +01:00
yueh dd1ae4a9b5 Interfaces now slow down with failed crafting attempts.
Cleanup of unneeded tracking of failed attempts of MultiCraftingTracker.
Followup of #1905
2015-12-27 00:00:12 +01:00
yueh c9ef1beea1 Refactored the logging
Using LogManager instead of FMLRelaunchLog to access the logger instance.
Added logging of the name of failed exports instead of exception.
Improved crafting log to include issuer including their location and the
requested item.
Removed superfluous FMLRelaunchLog instance.
Removed superfluous parameters for PlayerData constructor.

Closes #2009
Refs #2069
2015-12-26 23:14:29 +01:00
Wilhelm Schuster 276480519e Update and extend German translation
Add translated achievements.
2015-12-20 14:23:42 +01:00
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
thatsIch 8c62e1e7a6 Fixes #1995: Allows creation of version checker config file after start up 2015-11-11 21:39:29 +01:00
86 changed files with 829 additions and 639 deletions
@@ -413,7 +413,7 @@ public class ClientHelper extends ServerHelper
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -410,7 +410,7 @@ public abstract class AEBaseGui extends GuiContainer
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
else if( slot instanceof SlotCraftingTerm )
@@ -779,7 +779,7 @@ public abstract class AEBaseGui extends GuiContainer
}
catch( final Exception err )
{
AELog.warning( "[AppEng] AE prevented crash while drawing slot: " + err.toString() );
AELog.warn( "[AppEng] AE prevented crash while drawing slot: " + err.toString() );
}
this.setItemRender( pIR );
return;
@@ -846,7 +846,7 @@ public abstract class AEBaseGui extends GuiContainer
}
catch( final Exception err )
{
AELog.error( err );
AELog.debug( err );
}
}
( (AppEngSlot) s ).setIsValid( isValid ? hasCalculatedValidness.Valid : hasCalculatedValidness.Invalid );
@@ -880,7 +880,7 @@ public abstract class AEBaseGui extends GuiContainer
}
catch( final Exception err )
{
AELog.warning( "[AppEng] AE prevented crash while drawing slot: " + err.toString() );
AELog.warn( "[AppEng] AE prevented crash while drawing slot: " + err.toString() );
}
}
// do the usual for non-ME Slots.
@@ -556,7 +556,7 @@ public class GuiCraftConfirm extends AEBaseGui
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
@@ -573,7 +573,7 @@ public class GuiCraftConfirm extends AEBaseGui
}
catch( final Throwable e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -129,7 +129,7 @@ public class GuiCraftingCPU extends AEBaseGui implements ISortSource
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -121,7 +121,7 @@ public class GuiCraftingStatus extends GuiCraftingCPU
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
@@ -233,7 +233,7 @@ public class GuiLevelEmitter extends GuiUpgradeable
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
@@ -269,7 +269,7 @@ public class GuiLevelEmitter extends GuiUpgradeable
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
else
@@ -199,7 +199,7 @@ public class GuiMEMonitorable extends AEBaseMEGui implements ISortSource, IConfi
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
@@ -59,7 +59,7 @@ public class GuiNetworkTool extends AEBaseGui
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
@@ -240,7 +240,7 @@ public class GuiPriority extends AEBaseGui
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
@@ -276,7 +276,7 @@ public class GuiPriority extends AEBaseGui
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
else
@@ -85,7 +85,7 @@ public class GuiQuartzKnife extends AEBaseGui
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
else
@@ -90,7 +90,7 @@ public class GuiSecurity extends GuiMEMonitorable
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -137,7 +137,7 @@ public class GuiStorageBus extends GuiUpgradeable
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -209,7 +209,7 @@ public class RenderBlocksWorkaround extends RenderBlocks
}
catch( final Throwable t )
{
AELog.error( t );
AELog.debug( t );
// meh
}
return false;
@@ -77,9 +77,9 @@ public class TESRWrapper extends TileEntitySpecialRenderer
}
catch( final Throwable t )
{
AELog.severe( "Hi, Looks like there was a crash while rendering something..." );
AELog.error( "Hi, Looks like there was a crash while rendering something..." );
t.printStackTrace();
AELog.severe( "MC will now crash ( probably )!" );
AELog.error( "MC will now crash ( probably )!" );
throw new IllegalStateException( t );
}
}
@@ -104,9 +104,9 @@ public final class WorldRender implements ISimpleBlockRenderingHandler
if( !this.hasError )
{
this.hasError = true;
AELog.severe( "Invalid render - item/block mismatch" );
AELog.severe( " item: " + item.getUnlocalizedName() );
AELog.severe( " block: " + blk.getUnlocalizedName() );
AELog.error( "Invalid render - item/block mismatch" );
AELog.error( " item: " + item.getUnlocalizedName() );
AELog.error( " block: " + blk.getUnlocalizedName() );
}
}
}
@@ -169,7 +169,7 @@ public class RenderBlockCharger extends BaseBlockRender<BlockCharger, TileCharge
}
catch( final Exception err )
{
AELog.error( err );
AELog.debug( err );
}
finally
{
@@ -165,7 +165,7 @@ public class RenderBlockCraftingCPUMonitor extends RenderBlockCraftingCPU<BlockC
}
catch( final Exception e )
{
AELog.error( e );
AELog.debug( e );
}
finally
{
@@ -318,7 +318,7 @@ public class RenderBlockInscriber extends BaseBlockRender<BlockInscriber, TileIn
}
catch( final Exception err )
{
AELog.error( err );
AELog.debug( err );
}
GL11.glPopMatrix();
@@ -146,7 +146,7 @@ public abstract class AEBaseContainer extends Container
final GuiSync annotation = f.getAnnotation( GuiSync.class );
if( this.syncData.containsKey( annotation.value() ) )
{
AELog.warning( "Channel already in use: " + annotation.value() + " for " + f.getName() );
AELog.warn( "Channel already in use: " + annotation.value() + " for " + f.getName() );
}
else
{
@@ -208,7 +208,7 @@ public abstract class AEBaseContainer extends Container
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
this.dataChunks.clear();
@@ -270,7 +270,7 @@ public abstract class AEBaseContainer extends Container
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
return;
}
}
@@ -1109,7 +1109,7 @@ public abstract class AEBaseContainer extends Container
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -1178,7 +1178,7 @@ public abstract class AEBaseContainer extends Container
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -70,15 +70,15 @@ public class SyncData
}
catch( final IllegalArgumentException e )
{
AELog.error( e );
AELog.debug( e );
}
catch( final IllegalAccessException e )
{
AELog.error( e );
AELog.debug( e );
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
@@ -127,11 +127,11 @@ public class SyncData
}
catch( final IllegalArgumentException e )
{
AELog.error( e );
AELog.debug( e );
}
catch( final IllegalAccessException e )
{
AELog.error( e );
AELog.debug( e );
}
}
@@ -143,11 +143,11 @@ public class SyncData
}
catch( final IllegalArgumentException e )
{
AELog.error( e );
AELog.debug( e );
}
catch( final IllegalAccessException e )
{
AELog.error( e );
AELog.debug( e );
}
}
@@ -199,11 +199,11 @@ public class SyncData
}
catch( final IllegalArgumentException e )
{
AELog.error( e );
AELog.debug( e );
}
catch( final IllegalAccessException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -280,7 +280,7 @@ public class ContainerCraftConfirm extends AEBaseContainer
catch( final Throwable e )
{
this.getPlayerInv().player.addChatMessage( new ChatComponentText( "Error: " + e.toString() ) );
AELog.error( e );
AELog.debug( e );
this.setValidContainer( false );
this.result = null;
}
@@ -121,7 +121,7 @@ public class ContainerCraftingCPU extends AEBaseContainer implements IMEMonitorH
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -194,7 +194,7 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -237,7 +237,7 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
@@ -335,7 +335,7 @@ public class ContainerMEMonitorable extends AEBaseContainer implements IConfigMa
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
+319 -38
View File
@@ -19,93 +19,374 @@
package appeng.core;
import org.apache.logging.log4j.Level;
import javax.annotation.Nonnull;
import cpw.mods.fml.relauncher.FMLRelaunchLog;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.apache.logging.log4j.message.ParameterizedMessage;
import appeng.core.features.AEFeature;
import appeng.tile.AEBaseTile;
import appeng.util.Platform;
/**
* Utility class for easier logging.
*/
public final class AELog
{
public static final FMLRelaunchLog INSTANCE = FMLRelaunchLog.log;
private static final String LOGGER_PREFIX = "AE2:";
private static final String SERVER_SUFFIX = "S";
private static final String CLIENT_SUFFIX = "C";
private static final String BLOCK_UPDATE = "Block Update of %s @ ( %d, %d, %d )";
private static final String DEFAULT_EXCEPTION_MESSAGE = "Exception: ";
private AELog()
{
}
public static void warning( final String format, final Object... data )
/**
* Returns a {@link Logger} logger suitable for the effective side (client/server).
*
* @return a suitable logger instance
*/
private static Logger getLogger()
{
log( Level.WARN, format, data );
final String loggerName = LOGGER_PREFIX + ( Platform.isServer() ? SERVER_SUFFIX : CLIENT_SUFFIX );
final Logger logger = LogManager.getLogger( loggerName );
return logger;
}
private static void log( final Level level, final String format, final Object... data )
/**
* Indicates of the global log is enabled or disabled.
*
* By default it is enabled.
*
* @return true when the log is enabled.
*/
public static boolean isLogEnabled()
{
if( AEConfig.instance == null || AEConfig.instance.isFeatureEnabled( AEFeature.Logging ) )
return AEConfig.instance == null || AEConfig.instance.isFeatureEnabled( AEFeature.Logging );
}
/**
* Logs a formatted message with a specific log level.
*
* This uses {@link String#format(String, Object...)} as opposed to the {@link ParameterizedMessage} to allow a more
* flexible formatting.
*
* The output can be globally disabled via the configuration file.
*
* @param level the intended level.
* @param message the message to be formatted.
* @param params the parameters used for {@link String#format(String, Object...)}.
*/
public static void log( @Nonnull final Level level, @Nonnull final String message, final Object... params )
{
if( AELog.isLogEnabled() )
{
FMLRelaunchLog.log( "AE2:" + ( Platform.isServer() ? "S" : "C" ), level, format, data );
final String formattedMessage = String.format( message, params );
final Logger logger = getLogger();
logger.log( level, formattedMessage );
}
}
public static void grinder( final String o )
/**
* Log an exception with a custom message formated via {@link String#format(String, Object...)}
*
* Similar to {@link AELog#log(Level, String, Object...)}.
*
* @see AELog#log(Level, String, Object...)
*
* @param level the intended level.
* @param exception
* @param message the message to be formatted.
* @param params the parameters used for {@link String#format(String, Object...)}.
*/
public static void log( @Nonnull final Level level, @Nonnull final Throwable exception, @Nonnull String message, final Object... params )
{
if( AEConfig.instance.isFeatureEnabled( AEFeature.GrinderLogging ) )
if( AELog.isLogEnabled() )
{
log( Level.DEBUG, "grinder: " + o );
final String formattedMessage = String.format( message, params );
final Logger logger = getLogger();
logger.log( level, formattedMessage, exception );
}
}
public static void integration( final Throwable exception )
/**
* @see AELog#log(Level, String, Object...)
* @param format
* @param params
*/
public static void info( @Nonnull final String format, final Object... params )
{
if( AEConfig.instance.isFeatureEnabled( AEFeature.IntegrationLogging ) )
{
error( exception );
}
log( Level.INFO, format, params );
}
public static void error( final Throwable e )
/**
* Log exception as {@link Level#INFO}
*
* @see AELog#log(Level, Throwable, String, Object...)
*
* @param exception
*/
public static void info( @Nonnull final Throwable exception )
{
if( AEConfig.instance.isFeatureEnabled( AEFeature.Logging ) )
{
severe( "Error: " + e.getClass().getName() + " : " + e.getMessage() );
e.printStackTrace();
}
log( Level.INFO, exception, DEFAULT_EXCEPTION_MESSAGE );
}
public static void severe( final String format, final Object... data )
/**
* Log exception as {@link Level#INFO}
*
* @see AELog#log(Level, Throwable, String, Object...)
*
* @param exception
* @param message
*/
public static void info( @Nonnull final Throwable exception, @Nonnull final String message )
{
log( Level.ERROR, format, data );
log( Level.INFO, exception, message );
}
public static void blockUpdate( final int xCoord, final int yCoord, final int zCoord, final AEBaseTile aeBaseTile )
/**
* @see AELog#log(Level, String, Object...)
* @param format
* @param params
*/
public static void warn( @Nonnull final String format, final Object... params )
{
if( AEConfig.instance.isFeatureEnabled( AEFeature.UpdateLogging ) )
{
info( aeBaseTile.getClass().getName() + " @ " + xCoord + ", " + yCoord + ", " + zCoord );
}
log( Level.WARN, format, params );
}
public static void info( final String format, final Object... data )
/**
* Log exception as {@link Level#WARN}
*
* @see AELog#log(Level, Throwable, String, Object...)
*
* @param exception
*/
public static void warn( @Nonnull final Throwable exception )
{
log( Level.INFO, format, data );
log( Level.WARN, exception, DEFAULT_EXCEPTION_MESSAGE );
}
public static void crafting( final String format, final Object... data )
/**
* Log exception as {@link Level#WARN}
*
* @see AELog#log(Level, Throwable, String, Object...)
*
* @param exception
* @param message
*/
public static void warn( @Nonnull final Throwable exception, @Nonnull final String message )
{
if( AEConfig.instance.isFeatureEnabled( AEFeature.CraftingLog ) )
{
log( Level.INFO, format, data );
}
log( Level.WARN, exception, message );
}
public static void debug( final String format, final Object... data )
/**
* @see AELog#log(Level, String, Object...)
* @param format
* @param params
*/
public static void error( @Nonnull final String format, final Object... params )
{
if( AEConfig.instance.isFeatureEnabled( AEFeature.DebugLogging ) )
log( Level.ERROR, format, params );
}
/**
* Log exception as {@link Level#ERROR}
*
* @see AELog#log(Level, Throwable, String, Object...)
*
* @param exception
*/
public static void error( @Nonnull final Throwable exception )
{
log( Level.ERROR, exception, DEFAULT_EXCEPTION_MESSAGE );
}
/**
* Log exception as {@link Level#ERROR}
*
* @see AELog#log(Level, Throwable, String, Object...)
*
* @param exception
* @param message
*/
public static void error( @Nonnull final Throwable exception, @Nonnull final String message )
{
log( Level.ERROR, exception, message );
}
/**
* Log message as {@link Level#DEBUG}
*
* @see AELog#log(Level, String, Object...)
* @param format
* @param data
*/
public static void debug( @Nonnull final String format, final Object... data )
{
if( AELog.isDebugLogEnabled() )
{
log( Level.DEBUG, format, data );
}
}
/**
* Log exception as {@link Level#DEBUG}
*
* @see AELog#log(Level, Throwable, String, Object...)
*
* @param exception
*/
public static void debug( @Nonnull final Throwable exception )
{
if( AELog.isDebugLogEnabled() )
{
log( Level.DEBUG, exception, DEFAULT_EXCEPTION_MESSAGE );
}
}
/**
* Log exception as {@link Level#DEBUG}
*
* @see AELog#log(Level, Throwable, String, Object...)
*
* @param exception
* @param message
*/
public static void debug( @Nonnull final Throwable exception, @Nonnull final String message )
{
if( AELog.isDebugLogEnabled() )
{
log( Level.DEBUG, exception, message );
}
}
/**
* Use to check for an enabled debug log.
*
* Can be used to prevent the execution of debug logic.
*
* @return true when the debug log is enabled.
*/
public static boolean isDebugLogEnabled()
{
return AEConfig.instance.isFeatureEnabled( AEFeature.DebugLogging );
}
//
// Specialized handlers
//
/**
* A specialized logging for grinder recipes, can be disabled inside configuration file.
*
* @param message String to be logged
*/
public static void grinder( @Nonnull final String message )
{
if( AEConfig.instance.isFeatureEnabled( AEFeature.GrinderLogging ) )
{
log( Level.DEBUG, "grinder: " + message );
}
}
/**
* A specialized logging for mod integration errors, can be disabled inside configuration file.
*
* @param exception
*/
public static void integration( @Nonnull final Throwable exception )
{
if( AEConfig.instance.isFeatureEnabled( AEFeature.IntegrationLogging ) )
{
debug( exception );
}
}
/**
* Logging of block updates.
*
* Off by default, can be enabled inside the configuration file.
*
* @see AELog#log(Level, String, Object...)
* @param xCoord
* @param yCoord
* @param zCoord
* @param aeBaseTile
*/
public static void blockUpdate( final int xCoord, final int yCoord, final int zCoord, @Nonnull final AEBaseTile aeBaseTile )
{
if( AEConfig.instance.isFeatureEnabled( AEFeature.UpdateLogging ) )
{
info( BLOCK_UPDATE, aeBaseTile.getClass().getName(), xCoord, +yCoord, +zCoord );
}
}
/**
* Use to check for an enabled crafting log.
*
* Can be used to prevent the execution of unneeded logic.
*
* @return true when the crafting log is enabled.
*/
public static boolean isCraftingLogEnabled()
{
return AEConfig.instance.isFeatureEnabled( AEFeature.CraftingLog );
}
/**
* Logging for autocrafting.
*
* Off by default, can be enabled inside the configuration file.
*
* @see AELog#log(Level, String, Object...)
* @param message
* @param params
*/
public static void crafting( @Nonnull final String message, final Object... params )
{
if( AELog.isCraftingLogEnabled() )
{
log( Level.INFO, message, params );
}
}
/**
* Use to check for an enabled crafting debug log.
*
* Can be used to prevent the execution of unneeded logic.
*
* @return true when the crafting debug log is enabled.
*/
public static boolean isCraftingDebugLogEnabled()
{
return AEConfig.instance.isFeatureEnabled( AEFeature.CraftingLog ) && AEConfig.instance.isFeatureEnabled( AEFeature.DebugLogging );
}
/**
* Debug logging for autocrafting.
*
* Off by default, can be enabled inside the configuration file.
*
* @see AELog#log(Level, String, Object...)
* @param message
* @param params
*/
public static void craftingDebug( @Nonnull final String message, final Object... params )
{
if( AELog.isCraftingDebugLogEnabled() )
{
log( Level.DEBUG, message, params );
}
}
}
+2 -2
View File
@@ -95,8 +95,8 @@ public class IMCHandler
}
catch( final Exception t )
{
AELog.warning( "Problem detected when processing IMC " + key + " from " + message.getSender() );
AELog.error( t );
AELog.warn( "Problem detected when processing IMC " + key + " from " + message.getSender() );
AELog.debug( t );
}
}
}
+2 -2
View File
@@ -100,12 +100,12 @@ public class RecipeLoader implements Runnable
// on failure use jar parsing
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
this.handler.parseRecipes( new JarLoader( ASSETS_RECIPE_PATH ), "index.recipe" );
}
catch( final URISyntaxException e )
{
AELog.error( e );
AELog.debug( e );
this.handler.parseRecipes( new JarLoader( ASSETS_RECIPE_PATH ), "index.recipe" );
}
}
+11 -11
View File
@@ -109,7 +109,7 @@ public class ApiPart implements IPartHelper
}
catch( final ClassNotFoundException e )
{
AELog.error( e );
AELog.debug( e );
}
Class myCLass;
@@ -134,8 +134,8 @@ public class ApiPart implements IPartHelper
}
catch( final Throwable t )
{
AELog.warning( "Error loading " + name );
AELog.error( t );
AELog.warn( "Error loading " + name );
AELog.debug( t );
// throw new RuntimeException( t );
}
f = myCLass.getName();
@@ -164,7 +164,7 @@ public class ApiPart implements IPartHelper
}
catch( final Throwable t )
{
AELog.error( t );
AELog.debug( t );
}
for( final MethodNode mn : n.methods )
@@ -197,13 +197,13 @@ public class ApiPart implements IPartHelper
if( !rootC.isInstance( fish ) )
{
hasError = true;
AELog.severe( "Error, Expected layer to implement " + root + " did not." );
AELog.error( "Error, Expected layer to implement " + root + " did not." );
}
if( fish instanceof LayerBase )
{
hasError = true;
AELog.severe( "Error, Expected layer to NOT implement LayerBase but it DID." );
AELog.error( "Error, Expected layer to NOT implement LayerBase but it DID." );
}
if( !fullPath.contains( ".fmp." ) )
@@ -211,13 +211,13 @@ public class ApiPart implements IPartHelper
if( !( fish instanceof TileCableBus ) )
{
hasError = true;
AELog.severe( "Error, Expected layer to implement TileCableBus did not." );
AELog.error( "Error, Expected layer to implement TileCableBus did not." );
}
if( !( fish instanceof TileEntity ) )
{
hasError = true;
AELog.severe( "Error, Expected layer to implement TileEntity did not." );
AELog.error( "Error, Expected layer to implement TileEntity did not." );
}
}
@@ -228,8 +228,8 @@ public class ApiPart implements IPartHelper
}
catch( final Throwable t )
{
AELog.severe( "Layer: " + n.name + " Failed." );
AELog.error( t );
AELog.error( "Layer: " + n.name + " Failed." );
AELog.debug( t );
}
this.roots.put( fullPath, clazz );
@@ -297,7 +297,7 @@ public class ApiPart implements IPartHelper
}
catch( final Exception e )
{
AELog.error( e );
AELog.debug( e );
throw new IllegalStateException( "Unable to manage part API.", e );
}
return clazz;
@@ -61,22 +61,22 @@ public final class GridCacheRegistry implements IGridCacheRegistry
}
catch( final NoSuchMethodException e )
{
AELog.severe( "Grid Caches must have a constructor with IGrid as the single param." );
AELog.error( "Grid Caches must have a constructor with IGrid as the single param." );
throw new IllegalArgumentException( e );
}
catch( final InvocationTargetException e )
{
AELog.severe( "Grid Caches must have a constructor with IGrid as the single param." );
AELog.error( "Grid Caches must have a constructor with IGrid as the single param." );
throw new IllegalStateException( e );
}
catch( final InstantiationException e )
{
AELog.severe( "Grid Caches must have a constructor with IGrid as the single param." );
AELog.error( "Grid Caches must have a constructor with IGrid as the single param." );
throw new IllegalStateException( e );
}
catch( final IllegalAccessException e )
{
AELog.severe( "Grid Caches must have a constructor with IGrid as the single param." );
AELog.error( "Grid Caches must have a constructor with IGrid as the single param." );
throw new IllegalStateException( e );
}
}
@@ -72,8 +72,8 @@ public class RecipeHandlerRegistry implements IRecipeHandlerRegistry
}
catch( final Throwable e )
{
AELog.severe( "Error Caused when trying to construct " + clz.getName() );
AELog.error( e );
AELog.error( "Error Caused when trying to construct " + clz.getName() );
AELog.debug( e );
this.handlers.put( name, null ); // clear it..
@@ -101,7 +101,7 @@ public class RecipeHandlerRegistry implements IRecipeHandlerRegistry
}
catch( final Throwable t )
{
AELog.error( t );
AELog.debug( t );
}
if( rr != null )
@@ -51,19 +51,19 @@ public class AppEngClientPacketHandler extends AppEngPacketHandlerBase implement
}
catch( final InstantiationException e )
{
AELog.error( e );
AELog.debug( e );
}
catch( final IllegalAccessException e )
{
AELog.error( e );
AELog.debug( e );
}
catch( final IllegalArgumentException e )
{
AELog.error( e );
AELog.debug( e );
}
catch( final InvocationTargetException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -48,19 +48,19 @@ public final class AppEngServerPacketHandler extends AppEngPacketHandlerBase imp
}
catch( final InstantiationException e )
{
AELog.error( e );
AELog.debug( e );
}
catch( final IllegalAccessException e )
{
AELog.error( e );
AELog.debug( e );
}
catch( final IllegalArgumentException e )
{
AELog.error( e );
AELog.debug( e );
}
catch( final InvocationTargetException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -121,7 +121,7 @@ public class PacketCraftRequest extends AppEngPacket
{
futureJob.cancel( true );
}
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -186,7 +186,7 @@ public class PacketMEInventoryUpdate extends AppEngPacket
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
return null;
@@ -33,7 +33,6 @@ import net.minecraftforge.common.config.ConfigCategory;
import net.minecraftforge.common.config.Configuration;
import net.minecraftforge.common.config.Property;
import appeng.core.AELog;
import appeng.core.CommonHelper;
@@ -64,7 +63,7 @@ final class PlayerData implements IWorldPlayerData, IOnWorldStartable, IOnWorldS
this.config = configFile;
final ConfigCategory playerList = this.config.getCategory( "players" );
this.playerMapping = new PlayerMapping( playerList, AELog.INSTANCE );
this.playerMapping = new PlayerMapping( playerList );
}
@Nullable
@@ -29,8 +29,6 @@ import com.google.common.base.Preconditions;
import net.minecraftforge.common.config.ConfigCategory;
import cpw.mods.fml.relauncher.FMLRelaunchLog;
/**
* Wrapper class for the player mappings.
@@ -46,9 +44,9 @@ final class PlayerMapping implements IWorldPlayerMapping
*/
private final Map<Integer, UUID> mappings;
public PlayerMapping( final ConfigCategory category, final FMLRelaunchLog log )
public PlayerMapping( final ConfigCategory category )
{
final PlayerMappingsInitializer init = new PlayerMappingsInitializer( category, log );
final PlayerMappingsInitializer init = new PlayerMappingsInitializer( category );
this.mappings = init.getPlayerMappings();
}
@@ -26,8 +26,6 @@ import java.util.UUID;
import net.minecraftforge.common.config.ConfigCategory;
import net.minecraftforge.common.config.Property;
import cpw.mods.fml.relauncher.FMLRelaunchLog;
import appeng.core.AELog;
import appeng.util.UUIDMatcher;
@@ -53,7 +51,7 @@ class PlayerMappingsInitializer
* @param playerList the category for the player list, generally extracted using the "players" tag
* @param log the logger used to warn the server or user of faulty entries
*/
PlayerMappingsInitializer( final ConfigCategory playerList, final FMLRelaunchLog log )
PlayerMappingsInitializer( final ConfigCategory playerList )
{
// Matcher for UUIDs
final UUIDMatcher matcher = new UUIDMatcher();
@@ -78,7 +76,7 @@ class PlayerMappingsInitializer
}
else
{
AELog.warning( "The configuration for players contained an outdated entry instead an expected UUID " + maybeUUID + " for the player " + id + ". Please clean this up." );
AELog.warn( "The configuration for players contained an outdated entry instead an expected UUID " + maybeUUID + " for the player " + id + ". Please clean this up." );
}
}
}
@@ -153,7 +153,7 @@ final class SpawnData implements IWorldSpawnData
catch( final Throwable e )
{
data = new NBTTagCompound();
AELog.error( e );
AELog.debug( e );
}
finally
{
@@ -165,7 +165,7 @@ final class SpawnData implements IWorldSpawnData
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -196,7 +196,7 @@ final class SpawnData implements IWorldSpawnData
}
catch( final Throwable e )
{
AELog.error( e );
AELog.debug( e );
}
finally
{
@@ -208,7 +208,7 @@ final class SpawnData implements IWorldSpawnData
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -140,7 +140,7 @@ final class StorageData implements IWorldGridStorageData, IOnWorldStartable, IOn
}
catch( final NumberFormatException err )
{
AELog.warning( "The config contained a value which was not represented as a Long: %s", lastString );
AELog.warn( "The config contained a value which was not represented as a Long: %s", lastString );
this.lastGridStorage = 0;
}
+52 -16
View File
@@ -24,26 +24,35 @@ import java.util.concurrent.TimeUnit;
import com.google.common.base.Stopwatch;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import appeng.api.AEApi;
import appeng.api.config.Actionable;
import appeng.api.networking.IGrid;
import appeng.api.networking.IGridHost;
import appeng.api.networking.IGridNode;
import appeng.api.networking.crafting.ICraftingCallback;
import appeng.api.networking.crafting.ICraftingGrid;
import appeng.api.networking.crafting.ICraftingJob;
import appeng.api.networking.crafting.ICraftingPatternDetails;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.networking.security.IActionHost;
import appeng.api.networking.security.MachineSource;
import appeng.api.networking.security.PlayerSource;
import appeng.api.networking.storage.IStorageGrid;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList;
import appeng.api.util.DimensionalCoord;
import appeng.core.AELog;
import appeng.hooks.TickHandler;
public class CraftingJob implements Runnable, ICraftingJob
{
private static final String LOG_CRAFTING_JOB = "CraftingJob (%s) issued by %s requesting [%s] using %s bytes took %s ms";
private static final String LOG_MACHINE_SOURCE_DETAILS = "Machine[object=%s, %s]";
private final MECraftingInventory original;
private final World world;
@@ -145,7 +154,7 @@ public class CraftingJob implements Runnable, ICraftingJob
AELog.crafting( s + " * " + ti.times + " = " + ( ti.perOp * ti.times ) );
}
AELog.crafting( "------------- " + this.bytes + "b real" + timer.elapsed( TimeUnit.MILLISECONDS ) + "ms" );
this.logCraftingJob( "real", timer );
// if ( mode == Actionable.MODULATE )
// craftingInventory.moveItemsToStorage( storage );
}
@@ -171,15 +180,15 @@ public class CraftingJob implements Runnable, ICraftingJob
AELog.crafting( s + " * " + ti.times + " = " + ( ti.perOp * ti.times ) );
}
AELog.crafting( "------------- " + this.bytes + "b simulate" + timer.elapsed( TimeUnit.MILLISECONDS ) + "ms" );
this.logCraftingJob( "simulate", timer );
}
catch( final CraftBranchFailure e1 )
{
AELog.error( e1 );
AELog.debug( e1 );
}
catch( final CraftingCalculationFailure f )
{
AELog.error( f );
AELog.debug( f );
}
catch( final InterruptedException e1 )
{
@@ -190,7 +199,7 @@ public class CraftingJob implements Runnable, ICraftingJob
}
catch( final CraftingCalculationFailure f )
{
AELog.error( f );
AELog.debug( f );
}
catch( final InterruptedException e1 )
{
@@ -199,7 +208,7 @@ public class CraftingJob implements Runnable, ICraftingJob
return;
}
this.log( "crafting job now done" );
AELog.craftingDebug( "crafting job now done" );
}
catch( final Throwable t )
{
@@ -227,14 +236,14 @@ public class CraftingJob implements Runnable, ICraftingJob
if( !this.running )
{
this.log( "crafting job will now sleep" );
AELog.craftingDebug( "crafting job will now sleep" );
while( !this.running )
{
this.monitor.wait();
}
this.log( "crafting job now active" );
AELog.craftingDebug( "crafting job now active" );
}
}
@@ -263,11 +272,6 @@ public class CraftingJob implements Runnable, ICraftingJob
}
}
private void log( final String string )
{
// AELog.crafting( string );
}
@Override
public boolean isSimulation()
{
@@ -327,7 +331,7 @@ public class CraftingJob implements Runnable, ICraftingJob
this.watch.start();
this.running = true;
this.log( "main thread is now going to sleep" );
AELog.craftingDebug( "main thread is now going to sleep" );
this.monitor.notify();
@@ -342,7 +346,7 @@ public class CraftingJob implements Runnable, ICraftingJob
}
}
this.log( "main thread is now active" );
AELog.craftingDebug( "main thread is now active" );
}
return true;
@@ -363,9 +367,41 @@ public class CraftingJob implements Runnable, ICraftingJob
this.tree = tree;
}
private void logCraftingJob( String type, Stopwatch timer )
{
if( AELog.isCraftingLogEnabled() )
{
final String itemToOutput = this.output.toString();
final long elapsedTime = timer.elapsed( TimeUnit.MILLISECONDS );
final String actionSource;
if( this.actionSrc instanceof MachineSource )
{
final IActionHost machineSource = ( (MachineSource) this.actionSrc ).via;
final IGridNode actionableNode = machineSource.getActionableNode();
final IGridHost machine = actionableNode.getMachine();
final DimensionalCoord location = actionableNode.getGridBlock().getLocation();
actionSource = String.format( LOG_MACHINE_SOURCE_DETAILS, machine, location );
}
else if( this.actionSrc instanceof PlayerSource )
{
final PlayerSource source = (PlayerSource) this.actionSrc;
final EntityPlayer player = source.player;
actionSource = player.toString();
}
else
{
actionSource = "[unknown source]";
}
AELog.crafting( LOG_CRAFTING_JOB, type, actionSource, itemToOutput, this.bytes, elapsedTime );
}
}
private static class TwoIntegers
{
private final long perOp = 0;
private final long times = 0;
}
+1 -1
View File
@@ -339,7 +339,7 @@ public class FacadePart implements IFacadePart, IBoxProvider
}
catch( final Throwable t )
{
AELog.error( t );
AELog.debug( t );
}
}
}
+2 -2
View File
@@ -259,7 +259,7 @@ public class CableBusPart extends JCuboidPart implements JNormalOcclusion, IMask
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
@@ -322,7 +322,7 @@ public class CableBusPart extends JCuboidPart implements JNormalOcclusion, IMask
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
}
@@ -46,7 +46,6 @@ public class MultiCraftingTracker
private Future<ICraftingJob>[] jobs = null;
private ICraftingLink[] links = null;
private int failedCraftingAttempts = 0;
public MultiCraftingTracker( final ICraftingRequester o, final int size )
{
@@ -54,11 +53,6 @@ public class MultiCraftingTracker
this.size = size;
}
public int getFailedCraftingAttempts()
{
return this.failedCraftingAttempts;
}
public void readFromNBT( final NBTTagCompound extra )
{
for( int x = 0; x < this.size; x++ )
@@ -115,15 +109,10 @@ public class MultiCraftingTracker
if( link != null )
{
this.failedCraftingAttempts = Math.max( 0, this.failedCraftingAttempts - 1 );
this.setLink( x, link );
return true;
}
else
{
this.failedCraftingAttempts = Math.min( 10, this.failedCraftingAttempts + 1 );
}
return true;
}
}
catch( final InterruptedException e )
+1 -1
View File
@@ -289,7 +289,7 @@ public class TickHandler
}
catch( final Exception e )
{
AELog.error( e );
AELog.debug( e );
}
}
@@ -119,11 +119,11 @@ public class BuildCraftBuilder implements IIntegrationModule
}
catch( final InvocationTargetException ignore )
{
AELog.warning( "Encountered problems while initializing the BuildCraft Builder support. Can not invoke the method %s", blockDefinition );
AELog.warn( "Encountered problems while initializing the BuildCraft Builder support. Can not invoke the method %s", blockDefinition );
}
catch( final IllegalAccessException ignore )
{
AELog.warning( "Encountered problems while initializing the BuildCraft Builder support. Can not access the method %s", blockDefinition );
AELog.warn( "Encountered problems while initializing the BuildCraft Builder support. Can not access the method %s", blockDefinition );
}
}
}
@@ -178,7 +178,7 @@ public class FMP implements IIntegrationModule, IPartFactory, IPartConverter, IF
}
catch( final Throwable t )
{
AELog.error( t );
AELog.debug( t );
}
return null;
}
@@ -211,8 +211,8 @@ public class FMP implements IIntegrationModule, IPartFactory, IPartConverter, IF
}
catch( final Throwable t )
{
AELog.severe( "Failed to register " + layerInterface.getName() + " with FMP, some features may not work with MultiParts." );
AELog.error( t );
AELog.error( "Failed to register " + layerInterface.getName() + " with FMP, some features may not work with MultiParts." );
AELog.debug( t );
}
}
@@ -72,7 +72,7 @@ public class ImmibisMicroblocks implements IImmibisMicroblocks, IIntegrationModu
}
catch( final Throwable t )
{
AELog.error( t );
AELog.debug( t );
}
}
@@ -263,7 +263,7 @@ public class ToolMassCannon extends AEBasePoweredItem implements IStorageCell
}
catch( final Exception err )
{
AELog.error( err );
AELog.debug( err );
}
if( pos != null && type != null && type.getItem() instanceof ItemPaintBall )
@@ -385,7 +385,7 @@ public class ToolMassCannon extends AEBasePoweredItem implements IStorageCell
}
catch( final Exception err )
{
AELog.error( err );
AELog.debug( err );
}
if( pos != null )
+1 -1
View File
@@ -110,7 +110,7 @@ public class GridStorage implements IGridStorage
}
catch( final IOException e )
{
AELog.error( e );
AELog.debug( e );
}
return "";
+4 -4
View File
@@ -184,10 +184,10 @@ public class NetworkEventBus
}
catch( final Throwable e1 )
{
AELog.severe( "[AppEng] Network Event caused exception:" );
AELog.severe( "Offending Class: " + obj.getClass().getName() );
AELog.severe( "Offending Object: " + obj.toString() );
AELog.error( e1 );
AELog.error( "[AppEng] Network Event caused exception:" );
AELog.error( "Offending Class: " + obj.getClass().getName() );
AELog.error( "Offending Object: " + obj.toString() );
AELog.debug( e1 );
throw new IllegalStateException( e1 );
}
+2 -2
View File
@@ -239,8 +239,8 @@ public class GridStorageCache implements IStorageGrid
}
}
this.itemMonitor.forceUpdate( false );
this.fluidMonitor.forceUpdate( false );
this.itemMonitor.forceUpdate();
this.fluidMonitor.forceUpdate();
tracker.applyChanges();
}
+79 -286
View File
@@ -21,321 +21,41 @@ package appeng.me.cache;
import java.util.Collection;
import java.util.Deque;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.Map;
import java.util.Map.Entry;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import com.google.common.collect.ImmutableList;
import appeng.api.config.AccessRestriction;
import appeng.api.config.Actionable;
import appeng.api.networking.events.MENetworkStorageEvent;
import appeng.api.networking.security.BaseActionSource;
import appeng.api.storage.IMEInventoryHandler;
import appeng.api.storage.IMEMonitor;
import appeng.api.storage.IMEMonitorHandlerReceiver;
import appeng.api.storage.MEMonitorHandler;
import appeng.api.storage.StorageChannel;
import appeng.api.storage.data.IAEStack;
import appeng.api.storage.data.IItemList;
import appeng.me.storage.ItemWatcher;
public class NetworkMonitor<T extends IAEStack<T>> implements IMEMonitor<T>
public class NetworkMonitor<T extends IAEStack<T>> extends MEMonitorHandler<T>
{
@Nonnull
private static final Deque<NetworkMonitor<?>> GLOBAL_DEPTH = new LinkedList<NetworkMonitor<?>>();
@Nonnull
private static final Deque<NetworkMonitor<?>> DEPTH = new LinkedList<NetworkMonitor<?>>();
private final GridStorageCache myGridCache;
@Nonnull
private final StorageChannel myChannel;
@Nonnull
private final IItemList<T> cachedList;
@Nonnull
private final Map<IMEMonitorHandlerReceiver<T>, Object> listeners = new HashMap<IMEMonitorHandlerReceiver<T>, Object>();
private boolean sendEvent = false;
private boolean hasChanged = false;
private int localDepthSemaphore = 0;
public NetworkMonitor( final GridStorageCache cache, final StorageChannel chan )
{
super( null, chan );
this.myGridCache = cache;
this.myChannel = chan;
this.cachedList = (IItemList<T>) chan.createList();
}
@Override
public void addListener( final IMEMonitorHandlerReceiver<T> l, final Object verificationToken )
void forceUpdate()
{
this.listeners.put( l, verificationToken );
}
@Override
public boolean canAccept( final T input )
{
return this.getHandler().canAccept( input );
}
@Override
public T extractItems( final T request, final Actionable mode, final BaseActionSource src )
{
if( mode == Actionable.SIMULATE )
{
return this.getHandler().extractItems( request, mode, src );
}
localDepthSemaphore++;
final T leftover = this.getHandler().extractItems( request, mode, src );
localDepthSemaphore--;
if( localDepthSemaphore == 0 )
{
this.monitorDifference( request.copy(), leftover, true, src );
}
return leftover;
}
@Override
public AccessRestriction getAccess()
{
return this.getHandler().getAccess();
}
@Override
public IItemList<T> getAvailableItems( final IItemList out )
{
return this.getHandler().getAvailableItems( out );
}
@Override
public StorageChannel getChannel()
{
return this.getHandler().getChannel();
}
@Override
public int getPriority()
{
return this.getHandler().getPriority();
}
@Override
public int getSlot()
{
return this.getHandler().getSlot();
}
@Nonnull
@Override
public IItemList<T> getStorageList()
{
if( this.hasChanged )
{
this.hasChanged = false;
this.cachedList.resetStatus();
return this.getAvailableItems( this.cachedList );
}
return this.cachedList;
}
@Override
public T injectItems( final T input, final Actionable mode, final BaseActionSource src )
{
if( mode == Actionable.SIMULATE )
{
return this.getHandler().injectItems( input, mode, src );
}
localDepthSemaphore++;
final T leftover = this.getHandler().injectItems( input, mode, src );
localDepthSemaphore--;
if( localDepthSemaphore == 0 )
{
this.monitorDifference( input.copy(), leftover, false, src );
}
return leftover;
}
@Override
public boolean isPrioritized( final T input )
{
return this.getHandler().isPrioritized( input );
}
@Override
public void removeListener( final IMEMonitorHandlerReceiver<T> l )
{
this.listeners.remove( l );
}
@Override
public boolean validForPass( final int i )
{
return this.getHandler().validForPass( i );
}
@Nullable
@SuppressWarnings( "unchecked" )
private IMEInventoryHandler<T> getHandler()
{
switch( this.myChannel )
{
case ITEMS:
return (IMEInventoryHandler<T>) this.myGridCache.getItemInventoryHandler();
case FLUIDS:
return (IMEInventoryHandler<T>) this.myGridCache.getFluidInventoryHandler();
default:
}
return null;
}
private Iterator<Entry<IMEMonitorHandlerReceiver<T>, Object>> getListeners()
{
return this.listeners.entrySet().iterator();
}
private T monitorDifference( final IAEStack original, final T leftOvers, final boolean extraction, final BaseActionSource src )
{
final T diff = (T) original.copy();
if( extraction )
{
diff.setStackSize( leftOvers == null ? 0 : -leftOvers.getStackSize() );
}
else if( leftOvers != null )
{
diff.decStackSize( leftOvers.getStackSize() );
}
if( diff.getStackSize() != 0 )
{
this.postChangesToListeners( ImmutableList.of( diff ), src );
}
return leftOvers;
}
private void notifyListenersOfChange( final Iterable<T> diff, final BaseActionSource src )
{
final Iterator<Entry<IMEMonitorHandlerReceiver<T>, Object>> i = this.getListeners();
while( i.hasNext() )
{
final Entry<IMEMonitorHandlerReceiver<T>, Object> o = i.next();
final IMEMonitorHandlerReceiver<T> receiver = o.getKey();
if( receiver.isValid( o.getValue() ) )
{
receiver.postChange( this, diff, src );
}
else
{
i.remove();
}
}
}
private void postChangesToListeners( final Iterable<T> changes, final BaseActionSource src )
{
this.postChange( true, changes, src );
}
private void updateCache( Iterable<T> changes, boolean add )
{
for( final T changedItem : changes )
{
T difference = changedItem;
if( !add && changedItem != null )
{
difference = changedItem.copy();
difference.setStackSize( -changedItem.getStackSize() );
}
this.cachedList.add( difference );
}
}
protected void postChange( final boolean add, final Iterable<T> changes, final BaseActionSource src )
{
if( localDepthSemaphore > 0 || GLOBAL_DEPTH.contains( this ) )
{
return;
}
GLOBAL_DEPTH.push( this );
localDepthSemaphore++;
this.sendEvent = true;
this.updateCache( changes, add );
this.notifyListenersOfChange( changes, src );
for( final T changedItem : changes )
{
T difference = changedItem;
if( !add && changedItem != null )
{
difference = changedItem.copy();
difference.setStackSize( -changedItem.getStackSize() );
}
if( this.myGridCache.getInterestManager().containsKey( changedItem ) )
{
final Collection<ItemWatcher> list = this.myGridCache.getInterestManager().get( changedItem );
if( !list.isEmpty() )
{
IAEStack fullStack = this.getStorageList().findPrecise( changedItem );
if( fullStack == null )
{
fullStack = changedItem.copy();
fullStack.setStackSize( 0 );
}
this.myGridCache.getInterestManager().enableTransactions();
for( final ItemWatcher iw : list )
{
iw.getHost().onStackChange( this.getStorageList(), fullStack, difference, src, this.getChannel() );
}
this.myGridCache.getInterestManager().disableTransactions();
}
}
}
final NetworkMonitor<?> last = GLOBAL_DEPTH.pop();
localDepthSemaphore--;
if( last != this )
{
throw new IllegalStateException( "Invalid Access to Networked Storage API detected." );
}
}
void forceUpdate( boolean reset )
{
if( reset )
{
this.hasChanged = true;
this.cachedList.resetStatus();
this.getAvailableItems( this.cachedList );
}
this.hasChanged = true;
final Iterator<Entry<IMEMonitorHandlerReceiver<T>, Object>> i = this.getListeners();
while( i.hasNext() )
{
final Entry<IMEMonitorHandlerReceiver<T>, Object> o = i.next();
@@ -361,4 +81,77 @@ public class NetworkMonitor<T extends IAEStack<T>> implements IMEMonitor<T>
}
}
@Override
protected IMEInventoryHandler getHandler()
{
switch( this.myChannel )
{
case ITEMS:
return this.myGridCache.getItemInventoryHandler();
case FLUIDS:
return this.myGridCache.getFluidInventoryHandler();
default:
}
return null;
}
@Override
protected void postChangesToListeners( final Iterable<T> changes, final BaseActionSource src )
{
this.postChange( true, changes, src );
}
protected void postChange( final boolean add, final Iterable<T> changes, final BaseActionSource src )
{
if( DEPTH.contains( this ) )
{
return;
}
DEPTH.push( this );
this.sendEvent = true;
this.notifyListenersOfChange( changes, src );
final IItemList<T> myStorageList = this.getStorageList();
for( final T changedItem : changes )
{
T difference = changedItem;
if( !add && changedItem != null )
{
( difference = changedItem.copy() ).setStackSize( -changedItem.getStackSize() );
}
if( this.myGridCache.getInterestManager().containsKey( changedItem ) )
{
final Collection<ItemWatcher> list = this.myGridCache.getInterestManager().get( changedItem );
if( !list.isEmpty() )
{
IAEStack fullStack = myStorageList.findPrecise( changedItem );
if( fullStack == null )
{
fullStack = changedItem.copy();
fullStack.setStackSize( 0 );
}
this.myGridCache.getInterestManager().enableTransactions();
for( final ItemWatcher iw : list )
{
iw.getHost().onStackChange( myStorageList, fullStack, difference, src, this.getChannel() );
}
this.myGridCache.getInterestManager().disableTransactions();
}
}
}
final NetworkMonitor<?> last = DEPTH.pop();
if( last != this )
{
throw new IllegalStateException( "Invalid Access to Networked Storage API detected." );
}
}
}
@@ -116,7 +116,7 @@ public abstract class MBCalculator
}
catch( final Throwable err )
{
AELog.error( err );
AELog.debug( err );
}
this.disconnect();
@@ -83,6 +83,8 @@ import appeng.util.item.AEItemStack;
public final class CraftingCPUCluster implements IAECluster, ICraftingCPU
{
private static final String LOG_MARK_AS_COMPLETE = "Completed job for %s.";
private final WorldCoord min;
private final WorldCoord max;
private final int[] usedOps = new int[3];
@@ -427,12 +429,19 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU
( (CraftingLink) this.myLastLink ).markDone();
}
AELog.crafting( "marking job as complete" );
if( AELog.isCraftingLogEnabled() )
{
final IAEItemStack logStack = this.finalOutput.copy();
logStack.setStackSize( this.startItemCount );
AELog.crafting( LOG_MARK_AS_COMPLETE, logStack );
}
this.remainingItemCount = 0;
this.startItemCount = 0;
this.lastTime = 0;
this.elapsedTime = 0;
this.isComplete = true;
}
private void updateCPU()
@@ -1074,7 +1074,7 @@ public class CableBusContainer extends CableBusStorage implements AEMultiTile, I
}
else
{
AELog.warning( "Invalid NBT For CableBus Container: " + iss.getItem().getClass().getName() + " is not a valid part; it was ignored." );
AELog.warn( "Invalid NBT For CableBus Container: " + iss.getItem().getClass().getName() + " is not a valid part; it was ignored." );
}
}
}
@@ -176,13 +176,6 @@ public class PartExportBus extends PartSharedItemBus implements ICraftingRequest
// :P
}
final int failedAttempts = this.craftingTracker.getFailedCraftingAttempts();
if( this.isCraftingEnabled() && failedAttempts > 0 )
{
return this.getFailedCraftingPenalty( failedAttempts );
}
return this.didSomething ? TickRateModulation.FASTER : TickRateModulation.SLOWER;
}
@@ -306,7 +299,7 @@ public class PartExportBus extends PartSharedItemBus implements ICraftingRequest
}
catch( final GridAccessException e )
{
AELog.error( e );
AELog.debug( e );
}
return items;
@@ -388,18 +381,4 @@ public class PartExportBus extends PartSharedItemBus implements ICraftingRequest
this.nextSlot = ( this.nextSlot + x ) % this.availableSlots();
}
}
private TickRateModulation getFailedCraftingPenalty( final int failedAttempts )
{
if( failedAttempts > 5 )
{
return TickRateModulation.SLOWER;
}
else if( failedAttempts > 1 )
{
return TickRateModulation.SAME;
}
return TickRateModulation.FASTER;
}
}
@@ -378,11 +378,10 @@ public class PartStorageBus extends PartUpgradeable implements IGridTickable, IC
final IMEInventory<IAEItemStack> out = this.getInternalHandler();
// TODO: evaluate, if this is really (not) necessary.
// if( this.monitor != null )
// {
// this.monitor.onTick();
// }
if( this.monitor != null )
{
this.monitor.onTick();
}
IItemList<IAEItemStack> after = AEApi.instance().storage().createItemList();
if( out != null )
@@ -194,7 +194,7 @@ public final class PartP2POpenComputers extends PartP2PTunnel<PartP2POpenCompute
}
catch( final GridAccessException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -233,14 +233,14 @@ public class PartP2PTunnelME extends PartP2PTunnel<PartP2PTunnelME> implements I
{
final TileEntity start = this.getTile();
final TileEntity end = me.getTile();
AELog.warning( "Failed to establish a ME P2P Tunnel between the tunnels at [x=%d, y=%d, z=%d] and [x=%d, y=%d, z=%d]", start.xCoord, start.yCoord, start.zCoord, end.xCoord, end.yCoord, end.zCoord );
AELog.warn( "Failed to establish a ME P2P Tunnel between the tunnels at [x=%d, y=%d, z=%d] and [x=%d, y=%d, z=%d]", start.xCoord, start.yCoord, start.zCoord, end.xCoord, end.yCoord, end.zCoord );
// :(
}
}
}
catch( final GridAccessException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -370,7 +370,7 @@ public abstract class AbstractPartMonitor extends AbstractPartDisplay implements
}
catch( final Exception e )
{
AELog.error( e );
AELog.debug( e );
}
finally
{
+13 -13
View File
@@ -257,10 +257,10 @@ public class RecipeHandler implements IRecipeHandler
}
catch( final Exception err )
{
AELog.warning( "Error Loading Recipe File:" + path );
AELog.warn( "Error Loading Recipe File:" + path );
if( this.data.exceptions )
{
AELog.error( err );
AELog.debug( err );
}
return;
}
@@ -360,7 +360,7 @@ public class RecipeHandler implements IRecipeHandler
}
catch( final Throwable e )
{
AELog.error( e );
AELog.debug( e );
if( this.data.crash )
{
throw new IllegalStateException( e );
@@ -398,10 +398,10 @@ public class RecipeHandler implements IRecipeHandler
}
catch( final RegistrationError e )
{
AELog.warning( "Unable to register a recipe: " + e.getMessage() );
AELog.warn( "Unable to register a recipe: " + e.getMessage() );
if( this.data.exceptions )
{
AELog.error( e );
AELog.debug( e );
}
if( this.data.crash )
{
@@ -412,10 +412,10 @@ public class RecipeHandler implements IRecipeHandler
{
if( this.data.errorOnMissing )
{
AELog.warning( "Unable to register a recipe:" + e.getMessage() );
AELog.warn( "Unable to register a recipe:" + e.getMessage() );
if( this.data.exceptions )
{
AELog.error( e );
AELog.debug( e );
}
if( this.data.crash )
{
@@ -429,7 +429,7 @@ public class RecipeHandler implements IRecipeHandler
{
if( this.data.exceptions )
{
AELog.error( e );
AELog.debug( e );
}
if( this.data.crash )
{
@@ -505,11 +505,11 @@ public class RecipeHandler implements IRecipeHandler
}
catch( final FileNotFoundException e1 )
{
AELog.error( e1 );
AELog.debug( e1 );
}
catch( final IOException e1 )
{
AELog.error( e1 );
AELog.debug( e1 );
}
}
}
@@ -529,7 +529,7 @@ public class RecipeHandler implements IRecipeHandler
}
catch( final Throwable t )
{
AELog.error( t );
AELog.debug( t );
}
}
@@ -678,10 +678,10 @@ public class RecipeHandler implements IRecipeHandler
}
catch( final RecipeError e )
{
AELog.warning( "Recipe Error '" + e.getMessage() + "' near line:" + line + " in " + file + " with: " + this.tokens.toString() );
AELog.warn( "Recipe Error '" + e.getMessage() + "' near line:" + line + " in " + file + " with: " + this.tokens.toString() );
if( this.data.exceptions )
{
AELog.error( e );
AELog.debug( e );
}
if( this.data.crash )
{
@@ -118,7 +118,7 @@ public class Shaped implements ICraftHandler, IWebsiteSerializer
}
catch( final Throwable e )
{
AELog.error( e );
AELog.debug( e );
throw new RegistrationError( "Error while adding shaped recipe." );
}
}
@@ -81,7 +81,7 @@ public class Shapeless implements ICraftHandler, IWebsiteSerializer
}
catch( final Throwable e )
{
AELog.error( e );
AELog.debug( e );
throw new RegistrationError( "Error while adding shapeless recipe." );
}
}
@@ -89,7 +89,7 @@ public class OreDictionaryHandler
}
catch( final Throwable e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -102,7 +102,7 @@ public final class VersionChecker implements Runnable
catch( Exception exception )
{
// Log any unhandled exception to prevent the JVM from reporting them as unhandled.
AELog.error( exception );
AELog.debug( exception );
}
AELog.info( "Stopping AE2 VersionChecker" );
@@ -73,7 +73,8 @@ final class MinecraftItemCSVExporter implements Exporter
/**
* @param exportDirectory directory of the resulting export file. Non-null required.
* @param itemRegistry the registry with minecraft items. Needs to be populated at that time, thus the exporting can only happen in init (pre-init is the
* @param itemRegistry the registry with minecraft items. Needs to be populated at that time, thus the exporting can
* only happen in init (pre-init is the
* phase when all items are determined)
* @param mode mode in which the export should be operated. Resulting CSV will change depending on this.
*/
@@ -103,7 +104,7 @@ final class MinecraftItemCSVExporter implements Exporter
{
FileUtils.forceMkdir( this.exportDirectory );
final Writer writer = new BufferedWriter( new OutputStreamWriter( new FileOutputStream( file ), Charset.forName("UTF-8") ) );
final Writer writer = new BufferedWriter( new OutputStreamWriter( new FileOutputStream( file ), Charset.forName( "UTF-8" ) ) );
final String header = this.mode == ExportMode.MINIMAL ? MINIMAL_HEADER : VERBOSE_HEADER;
writer.write( header );
@@ -116,8 +117,8 @@ final class MinecraftItemCSVExporter implements Exporter
}
catch( final IOException e )
{
AELog.warning( EXPORT_UNSUCCESSFUL_MESSAGE );
AELog.error( e );
AELog.warn( EXPORT_UNSUCCESSFUL_MESSAGE );
AELog.debug( e );
}
}
@@ -186,7 +187,6 @@ final class MinecraftItemCSVExporter implements Exporter
}
}
/**
* transforms an item into a row representation of the CSV file
*/
@@ -198,6 +198,7 @@ final class MinecraftItemCSVExporter implements Exporter
private static final String LOCALIZATION_NAME_EXTENSION = ".name";
private static final String EXPORTING_NOTHING_MESSAGE = "Exporting nothing";
private static final String EXPORTING_SUBTYPES_MESSAGE = "Exporting input %s with subtypes: %b";
private static final String EXPORTING_SUBTYPES_FAILED_MESSAGE = "Could not export subtypes of: %s";
@Nonnull
private final FMLControlledNamespacedRegistry<Item> itemRegistry;
@@ -243,7 +244,8 @@ final class MinecraftItemCSVExporter implements Exporter
}
catch( final Exception ignored )
{
AELog.error( ignored );
AELog.warn( EXPORTING_SUBTYPES_FAILED_MESSAGE, input.getUnlocalizedName() );
AELog.debug( ignored );
// ignore if mods do bullshit in their code
return null;
@@ -67,7 +67,7 @@ public final class ModVersionFetcher implements VersionFetcher
}
catch( final VersionCheckerException e )
{
AELog.error( e );
AELog.debug( e );
return EXCEPTIONAL_VERSION;
}
@@ -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 );
@@ -75,15 +75,15 @@ public final class ReleaseFetcher
}
catch( final VersionCheckerException e )
{
AELog.error( e );
AELog.debug( e );
}
catch( MalformedURLException e )
{
AELog.error( e );
AELog.debug( e );
}
catch( IOException e )
{
AELog.error( e );
AELog.debug( e );
}
return EXCEPTIONAL_RELEASE;
@@ -178,7 +178,7 @@ public class CachedPlane
}
catch( final Exception e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -292,7 +292,7 @@ public class CachedPlane
}
catch( final Throwable e )
{
AELog.error( e );
AELog.debug( e );
// attempt recovery...
te.setWorldObj( this.getWorld() );
@@ -319,7 +319,7 @@ public class CachedPlane
}
catch( final Throwable e )
{
AELog.error( e );
AELog.debug( e );
}
}
+3 -3
View File
@@ -199,7 +199,7 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile,
}
catch( final Throwable t )
{
AELog.error( t );
AELog.debug( t );
}
stream.capacity( stream.readableBytes() );
@@ -279,7 +279,7 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile,
}
catch( final Throwable t )
{
AELog.error( t );
AELog.debug( t );
}
return output;
@@ -319,7 +319,7 @@ public class AEBaseTile extends TileEntity implements IOrientable, ICommonTile,
}
catch( final Throwable t )
{
AELog.error( t );
AELog.debug( t );
}
}
@@ -102,7 +102,7 @@ public class TileMolecularAssembler extends AENetworkInvTile implements IUpgrade
this.settings = new ConfigManager( this );
this.settings.registerSetting( Settings.REDSTONE_CONTROLLED, RedstoneMode.IGNORE );
this.inv.setMaxStackSize( 1 );
this.getGridProxy().setIdlePowerUsage( 0.0 );
this.getProxy().setIdlePowerUsage( 0.0 );
this.upgrades = new DefinitionUpgradeInventory( assembler, this, this.getUpgradeSlots() );
this.craftingInv = new InventoryCrafting( new ContainerNull(), 3, 3 );
}
@@ -152,11 +152,11 @@ public class TileMolecularAssembler extends AENetworkInvTile implements IUpgrade
{
if( this.isAwake )
{
this.getGridProxy().getTick().wakeDevice( this.getGridProxy().getNode() );
this.getProxy().getTick().wakeDevice( this.getProxy().getNode() );
}
else
{
this.getGridProxy().getTick().sleepDevice( this.getGridProxy().getNode() );
this.getProxy().getTick().sleepDevice( this.getProxy().getNode() );
}
}
catch( final GridAccessException e )
@@ -553,7 +553,7 @@ public class TileMolecularAssembler extends AENetworkInvTile implements IUpgrade
{
try
{
return (int) ( this.getGridProxy().getEnergy().extractAEPower( ticksPassed * bonusValue * acceleratorTax, Actionable.MODULATE, PowerMultiplier.CONFIG ) / acceleratorTax );
return (int) ( this.getProxy().getEnergy().extractAEPower( ticksPassed * bonusValue * acceleratorTax, Actionable.MODULATE, PowerMultiplier.CONFIG ) / acceleratorTax );
}
catch( final GridAccessException e )
{
@@ -629,7 +629,7 @@ public class TileMolecularAssembler extends AENetworkInvTile implements IUpgrade
try
{
newState = this.getGridProxy().isActive() && this.getGridProxy().getEnergy().extractAEPower( 1, Actionable.SIMULATE, PowerMultiplier.CONFIG ) > 0.0001;
newState = this.getProxy().isActive() && this.getProxy().getEnergy().extractAEPower( 1, Actionable.SIMULATE, PowerMultiplier.CONFIG ) > 0.0001;
}
catch( final GridAccessException ignored )
{
@@ -39,19 +39,19 @@ public abstract class AENetworkInvTile extends AEBaseInvTile implements IActionH
@TileEvent( TileEventType.WORLD_NBT_READ )
public void readFromNBT_AENetwork( final NBTTagCompound data )
{
this.getGridProxy().readFromNBT( data );
this.getProxy().readFromNBT( data );
}
@TileEvent( TileEventType.WORLD_NBT_WRITE )
public void writeToNBT_AENetwork( final NBTTagCompound data )
{
this.getGridProxy().writeToNBT( data );
this.getProxy().writeToNBT( data );
}
@Override
public AENetworkProxy getProxy()
{
return this.getGridProxy();
return this.gridProxy;
}
@Override
@@ -63,45 +63,41 @@ public abstract class AENetworkInvTile extends AEBaseInvTile implements IActionH
@Override
public IGridNode getGridNode( final ForgeDirection dir )
{
return this.getGridProxy().getNode();
return this.getProxy().getNode();
}
@Override
public void onChunkUnload()
{
super.onChunkUnload();
this.getGridProxy().onChunkUnload();
this.getProxy().onChunkUnload();
}
@Override
public void onReady()
{
super.onReady();
this.getGridProxy().onReady();
this.getProxy().onReady();
}
@Override
public void invalidate()
{
super.invalidate();
this.getGridProxy().invalidate();
this.getProxy().invalidate();
}
@Override
public void validate()
{
super.validate();
this.getGridProxy().validate();
this.getProxy().validate();
}
@Override
public IGridNode getActionableNode()
{
return this.getGridProxy().getNode();
return this.getProxy().getNode();
}
public AENetworkProxy getGridProxy()
{
return this.gridProxy;
}
}
@@ -125,7 +125,7 @@ public class AppEngInternalAEInventory implements IInventory, Iterable<ItemStack
}
catch( final Exception e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -272,7 +272,7 @@ public class AppEngInternalInventory implements IInventory, Iterable<ItemStack>
}
catch( final Exception e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
@@ -67,7 +67,7 @@ import appeng.util.inv.IInventoryDestination;
public class TileInterface extends AENetworkInvTile implements IGridTickable, ITileStorageMonitorable, IStorageMonitorable, IInventoryDestination, IInterfaceHost, IPriorityHost
{
private final DualityInterface duality = new DualityInterface( this.getGridProxy(), this );
private final DualityInterface duality = new DualityInterface( this.getProxy(), this );
private ForgeDirection pointAt = ForgeDirection.UNKNOWN;
@MENetworkEventSubscribe
@@ -115,7 +115,7 @@ public class TileInterface extends AENetworkInvTile implements IGridTickable, IT
this.setOrientation( this.pointAt.offsetY != 0 ? ForgeDirection.SOUTH : ForgeDirection.UP, this.pointAt.getOpposite() );
}
this.getGridProxy().setValidSides( EnumSet.complementOf( EnumSet.of( this.pointAt ) ) );
this.getProxy().setValidSides( EnumSet.complementOf( EnumSet.of( this.pointAt ) ) );
this.markForUpdate();
this.markDirty();
}
@@ -141,7 +141,7 @@ public class TileInterface extends AENetworkInvTile implements IGridTickable, IT
@Override
public void onReady()
{
this.getGridProxy().setValidSides( EnumSet.complementOf( EnumSet.of( this.pointAt ) ) );
this.getProxy().setValidSides( EnumSet.complementOf( EnumSet.of( this.pointAt ) ) );
super.onReady();
this.duality.initialize();
}
@@ -66,8 +66,8 @@ public class TileVibrationChamber extends AENetworkInvTile implements IGridTicka
public TileVibrationChamber()
{
this.getGridProxy().setIdlePowerUsage( 0 );
this.getGridProxy().setFlags();
this.getProxy().setIdlePowerUsage( 0 );
this.getProxy().setFlags();
}
@Override
@@ -131,7 +131,7 @@ public class TileVibrationChamber extends AENetworkInvTile implements IGridTicka
{
try
{
this.getGridProxy().getTick().wakeDevice( this.getGridProxy().getNode() );
this.getProxy().getTick().wakeDevice( this.getProxy().getNode() );
}
catch( final GridAccessException e )
{
@@ -213,7 +213,7 @@ public class TileVibrationChamber extends AENetworkInvTile implements IGridTicka
try
{
final IEnergyGrid grid = this.getGridProxy().getEnergy();
final IEnergyGrid grid = this.getProxy().getEnergy();
final double newPower = timePassed * POWER_PER_TICK;
final double overFlow = grid.injectPower( newPower, Actionable.SIMULATE );
@@ -275,7 +275,7 @@ public class TileVibrationChamber extends AENetworkInvTile implements IGridTicka
{
try
{
this.getGridProxy().getTick().wakeDevice( this.getGridProxy().getNode() );
this.getProxy().getTick().wakeDevice( this.getProxy().getNode() );
}
catch( final GridAccessException e )
{
@@ -60,15 +60,15 @@ public class TileWireless extends AENetworkInvTile implements IWirelessAccessPoi
public TileWireless()
{
this.getGridProxy().setFlags( GridFlags.REQUIRE_CHANNEL );
this.getGridProxy().setValidSides( EnumSet.noneOf( ForgeDirection.class ) );
this.getProxy().setFlags( GridFlags.REQUIRE_CHANNEL );
this.getProxy().setValidSides( EnumSet.noneOf( ForgeDirection.class ) );
}
@Override
public void setOrientation( final ForgeDirection inForward, final ForgeDirection inUp )
{
super.setOrientation( inForward, inUp );
this.getGridProxy().setValidSides( EnumSet.of( this.getForward().getOpposite() ) );
this.getProxy().setValidSides( EnumSet.of( this.getForward().getOpposite() ) );
}
@MENetworkEventSubscribe
@@ -99,12 +99,12 @@ public class TileWireless extends AENetworkInvTile implements IWirelessAccessPoi
try
{
if( this.getGridProxy().getEnergy().isNetworkPowered() )
if( this.getProxy().getEnergy().isNetworkPowered() )
{
this.setClientFlags( this.getClientFlags() | POWERED_FLAG );
}
if( this.getGridProxy().getNode().meetsChannelRequirements() )
if( this.getProxy().getNode().meetsChannelRequirements() )
{
this.setClientFlags( this.getClientFlags() | CHANNEL_FLAG );
}
@@ -162,7 +162,7 @@ public class TileWireless extends AENetworkInvTile implements IWirelessAccessPoi
private void updatePower()
{
this.getGridProxy().setIdlePowerUsage( AEConfig.instance.wireless_getPowerDrain( this.getBoosters() ) );
this.getProxy().setIdlePowerUsage( AEConfig.instance.wireless_getPowerDrain( this.getBoosters() ) );
}
private int getBoosters()
@@ -191,7 +191,7 @@ public class TileWireless extends AENetworkInvTile implements IWirelessAccessPoi
return this.isPowered() && ( CHANNEL_FLAG == ( this.getClientFlags() & CHANNEL_FLAG ) );
}
return this.getGridProxy().isActive();
return this.getProxy().isActive();
}
@Override
@@ -199,7 +199,7 @@ public class TileWireless extends AENetworkInvTile implements IWirelessAccessPoi
{
try
{
return this.getGridProxy().getGrid();
return this.getProxy().getGrid();
}
catch( final GridAccessException e )
{
@@ -68,9 +68,9 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock
public TileQuantumBridge()
{
this.getGridProxy().setValidSides( EnumSet.noneOf( ForgeDirection.class ) );
this.getGridProxy().setFlags( GridFlags.DENSE_CAPACITY );
this.getGridProxy().setIdlePowerUsage( 22 );
this.getProxy().setValidSides( EnumSet.noneOf( ForgeDirection.class ) );
this.getProxy().setFlags( GridFlags.DENSE_CAPACITY );
this.getProxy().setIdlePowerUsage( 22 );
this.internalInventory.setMaxStackSize( 1 );
}
@@ -98,7 +98,7 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock
out |= this.hasSingularity;
}
if( this.getGridProxy().isActive() && this.constructed != -1 )
if( this.getProxy().isActive() && this.constructed != -1 )
{
out |= this.powered;
}
@@ -177,7 +177,7 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock
{
final ItemStack linkStack = maybeLinkStack.get();
this.getGridProxy().setVisualRepresentation( linkStack );
this.getProxy().setVisualRepresentation( linkStack );
}
}
@@ -205,7 +205,7 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock
if( affectWorld )
{
this.getGridProxy().setValidSides( EnumSet.noneOf( ForgeDirection.class ) );
this.getProxy().setValidSides( EnumSet.noneOf( ForgeDirection.class ) );
}
}
@@ -235,11 +235,11 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock
if( this.isCorner() || this.isCenter() )
{
this.getGridProxy().setValidSides( this.getConnections() );
this.getProxy().setValidSides( this.getConnections() );
}
else
{
this.getGridProxy().setValidSides( EnumSet.allOf( ForgeDirection.class ) );
this.getProxy().setValidSides( EnumSet.allOf( ForgeDirection.class ) );
}
}
}
@@ -288,7 +288,7 @@ public class TileQuantumBridge extends AENetworkInvTile implements IAEMultiBlock
try
{
return this.getGridProxy().getEnergy().isNetworkPowered();
return this.getProxy().getEnergy().isNetworkPowered();
}
catch( final GridAccessException e )
{
@@ -58,7 +58,7 @@ public class TileSpatialIOPort extends AENetworkInvTile implements IWorldCallabl
public TileSpatialIOPort()
{
this.getGridProxy().setFlags( GridFlags.REQUIRE_CHANNEL );
this.getProxy().setFlags( GridFlags.REQUIRE_CHANNEL );
}
@TileEvent( TileEventType.WORLD_NBT_WRITE )
@@ -127,8 +127,8 @@ public class TileSpatialIOPort extends AENetworkInvTile implements IWorldCallabl
final ItemStack cell = this.getStackInSlot( 0 );
if( this.isSpatialCell( cell ) && this.getStackInSlot( 1 ) == null )
{
final IGrid gi = this.getGridProxy().getGrid();
final IEnergyGrid energy = this.getGridProxy().getEnergy();
final IGrid gi = this.getProxy().getGrid();
final IEnergyGrid energy = this.getProxy().getEnergy();
final ISpatialStorageCell sc = (ISpatialStorageCell) cell.getItem();
@@ -78,7 +78,7 @@ public class TileDrive extends AENetworkInvTile implements IChestOrDrive, IPrior
public TileDrive()
{
this.mySrc = new MachineSource( this );
this.getGridProxy().setFlags( GridFlags.REQUIRE_CHANNEL );
this.getProxy().setFlags( GridFlags.REQUIRE_CHANNEL );
}
@TileEvent( TileEventType.NETWORK_WRITE )
@@ -93,7 +93,7 @@ public class TileDrive extends AENetworkInvTile implements IChestOrDrive, IPrior
this.state &= 0x24924924; // just keep the blinks...
}
if( this.getGridProxy().isActive() )
if( this.getProxy().isActive() )
{
this.state |= 0x80000000;
}
@@ -160,7 +160,7 @@ public class TileDrive extends AENetworkInvTile implements IChestOrDrive, IPrior
return ( this.state & 0x80000000 ) == 0x80000000;
}
return this.getGridProxy().isActive();
return this.getProxy().isActive();
}
@Override
@@ -205,7 +205,7 @@ public class TileDrive extends AENetworkInvTile implements IChestOrDrive, IPrior
private void recalculateDisplay()
{
final boolean currentActive = this.getGridProxy().isActive();
final boolean currentActive = this.getProxy().isActive();
if( currentActive )
{
this.state |= 0x80000000;
@@ -220,7 +220,7 @@ public class TileDrive extends AENetworkInvTile implements IChestOrDrive, IPrior
this.wasActive = currentActive;
try
{
this.getGridProxy().getGrid().postEvent( new MENetworkCellArrayUpdate() );
this.getProxy().getGrid().postEvent( new MENetworkCellArrayUpdate() );
}
catch( final GridAccessException e )
{
@@ -281,9 +281,9 @@ public class TileDrive extends AENetworkInvTile implements IChestOrDrive, IPrior
try
{
this.getGridProxy().getGrid().postEvent( new MENetworkCellArrayUpdate() );
this.getProxy().getGrid().postEvent( new MENetworkCellArrayUpdate() );
final IStorageGrid gs = this.getGridProxy().getStorage();
final IStorageGrid gs = this.getProxy().getStorage();
Platform.postChanges( gs, removed, added, this.mySrc );
}
catch( final GridAccessException ignored )
@@ -349,7 +349,7 @@ public class TileDrive extends AENetworkInvTile implements IChestOrDrive, IPrior
}
}
this.getGridProxy().setIdlePowerUsage( power );
this.getProxy().setIdlePowerUsage( power );
this.isCached = true;
}
@@ -365,7 +365,7 @@ public class TileDrive extends AENetworkInvTile implements IChestOrDrive, IPrior
@Override
public List<IMEInventoryHandler> getCellArray( final StorageChannel channel )
{
if( this.getGridProxy().isActive() )
if( this.getProxy().isActive() )
{
this.updateState();
return (List) ( channel == StorageChannel.ITEMS ? this.items : this.fluids );
@@ -390,7 +390,7 @@ public class TileDrive extends AENetworkInvTile implements IChestOrDrive, IPrior
try
{
this.getGridProxy().getGrid().postEvent( new MENetworkCellArrayUpdate() );
this.getProxy().getGrid().postEvent( new MENetworkCellArrayUpdate() );
}
catch( final GridAccessException e )
{
@@ -106,7 +106,7 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
@Reflected
public TileIOPort()
{
this.getGridProxy().setFlags( GridFlags.REQUIRE_CHANNEL );
this.getProxy().setFlags( GridFlags.REQUIRE_CHANNEL );
this.manager = new ConfigManager( this );
this.manager.registerSetting( Settings.REDSTONE_CONTROLLED, RedstoneMode.IGNORE );
this.manager.registerSetting( Settings.FULLNESS_MODE, FullnessMode.EMPTY );
@@ -158,11 +158,11 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
{
if( this.hasWork() )
{
this.getGridProxy().getTick().wakeDevice( this.getGridProxy().getNode() );
this.getProxy().getTick().wakeDevice( this.getProxy().getNode() );
}
else
{
this.getGridProxy().getTick().sleepDevice( this.getGridProxy().getNode() );
this.getProxy().getTick().sleepDevice( this.getProxy().getNode() );
}
}
catch( final GridAccessException e )
@@ -313,7 +313,7 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
@Override
public TickRateModulation tickingRequest( final IGridNode node, final int ticksSinceLastCall )
{
if( !this.getGridProxy().isActive() )
if( !this.getProxy().isActive() )
{
return TickRateModulation.IDLE;
}
@@ -335,9 +335,9 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
try
{
final IMEInventory<IAEItemStack> itemNet = this.getGridProxy().getStorage().getItemInventory();
final IMEInventory<IAEFluidStack> fluidNet = this.getGridProxy().getStorage().getFluidInventory();
final IEnergySource energy = this.getGridProxy().getEnergy();
final IMEInventory<IAEItemStack> itemNet = this.getProxy().getStorage().getItemInventory();
final IMEInventory<IAEFluidStack> fluidNet = this.getProxy().getStorage().getFluidInventory();
final IEnergySource energy = this.getProxy().getEnergy();
for( int x = 0; x < 6; x++ )
{
final ItemStack is = this.cells.getStackInSlot( x );
@@ -113,7 +113,7 @@ public class ClassInstantiation<T>
}
catch( final Throwable t )
{
AELog.error( t );
AELog.debug( t );
}
}
}
+1 -1
View File
@@ -125,7 +125,7 @@ public final class ConfigManager implements IConfigManager
}
catch( final IllegalArgumentException e )
{
AELog.error( e );
AELog.debug( e );
}
}
}
+4 -4
View File
@@ -576,8 +576,8 @@ public class Platform
}
catch( final Throwable z )
{
AELog.error( t );
AELog.error( z );
AELog.debug( t );
AELog.debug( z );
}
}
}
@@ -589,7 +589,7 @@ public class Platform
}
catch( final Throwable t )
{
AELog.error( t );
AELog.debug( t );
}
return new ArrayList<NBTBase>();
@@ -2010,7 +2010,7 @@ public class Platform
}
catch( final Throwable t )
{
AELog.error( t );
AELog.debug( t );
}
}
@@ -1,3 +1,4 @@
//Blocks
tile.appliedenergistics2.BlockCableBus.name=AE2-Kabel und/oder Bus
tile.appliedenergistics2.BlockCellWorkbench.name=Speicherzellenwerkbank
tile.appliedenergistics2.BlockCharger.name=Ladegerät
@@ -50,12 +51,36 @@ tile.appliedenergistics2.BlockCraftingAccelerator.name=Fertigungs-Prozessoreinhe
tile.appliedenergistics2.BlockCraftingUnit.name=Fertigungseinheit
tile.appliedenergistics2.BlockMolecularAssembler.name=Molekularassembler
// Stairs
tile.appliedenergistics2.ChiseledQuartzStairBlock.name=Gemeißelte Certusquartztreppe
tile.appliedenergistics2.FluixStairBlock.name=Fluixtreppe
tile.appliedenergistics2.QuartzPillarStairBlock.name=Certusquartzsäulentreppe
tile.appliedenergistics2.QuartzStairBlock.name=Certusquartztreppe
tile.appliedenergistics2.SkyStoneBlockStairBlock.name=Himmelssteinblocktreppe
tile.appliedenergistics2.SkyStoneBrickStairBlock.name=Himmelssteinziegeltreppe
tile.appliedenergistics2.SkyStoneSmallBrickStairBlock.name=Himmelssteinkleinziegeltreppe
tile.appliedenergistics2.SkyStoneStairBlock.name=Himmelssteintreppe
// Slabs
tile.appliedenergistics2.ChiseledQuartzSlabBlock.name=Gemeißelte Certusquartzstufe
tile.appliedenergistics2.FluixSlabBlock.name=Fluixstufe
tile.appliedenergistics2.QuartzPillarSlabBlock.name=Certusquartzsäulenstufe
tile.appliedenergistics2.QuartzSlabBlock.name=Certusquartzstufe
tile.appliedenergistics2.SkyStoneBlockSlabBlock.name=Himmelssteinblockstufe
tile.appliedenergistics2.SkyStoneBrickSlabBlock.name=Himmelssteinziegelstufe
tile.appliedenergistics2.SkyStoneSmallBrickSlabBlock.name=Himmelssteinkleinziegelstufe
tile.appliedenergistics2.SkyStoneSlabBlock.name=Himmelssteinstufe
// Chat Messages
chat.appliedenergistics2.ChestCannotReadStorageCell=ME-Truhe kann die Speicherzelle nicht einlesen.
chat.appliedenergistics2.SettingCleared=Einstellung gelöscht.
chat.appliedenergistics2.OutOfRange=Drahtloser Zugangspunkt außer Reichweite.
chat.appliedenergistics2.InvalidMachine=Ungültige Maschine.
chat.appliedenergistics2.LoadedSettings=Einstellungen erfolgreich geladen.
chat.appliedenergistics2.DeviceNotPowered=Gerät hat zu wenig Energie
chat.appliedenergistics2.DeviceNotWirelessTerminal=Gerät ist keine Drahtloskonsole.
chat.appliedenergistics2.DeviceNotLinked=Gerät ist nicht verbunden.
chat.appliedenergistics2.StationCanNotBeLocated=Station kann nicht lokalisiert werden.
chat.appliedenergistics2.MachineNotPowered=Maschine bekommt keine Energie.
chat.appliedenergistics2.CommunicationError=Fehler beim Kommunizieren mit dem Netzwerk.
chat.appliedenergistics2.SavedSettings=Einstellungen erfolgreich gespeichert.
@@ -63,9 +88,11 @@ chat.appliedenergistics2.AmmoDepleted=Munition verbraucht.
chat.appliedenergistics2.isNowLocked=Monitor ist nun gesperrt.
chat.appliedenergistics2.isNowUnlocked=Monitor ist nun entsperrt.
// Creative Tabs
itemGroup.appliedenergistics2=Applied Energistics 2
itemGroup.appliedenergistics2.facades=Applied Energistics 2 - Fassaden
// GUI
gui.appliedenergistics2.CraftingTerminal=Fertigungskonsole
gui.appliedenergistics2.METunnel=ME
gui.appliedenergistics2.ItemTunnel=Item
@@ -74,6 +101,8 @@ gui.appliedenergistics2.RedstoneTunnel=Redstone
gui.appliedenergistics2.EUTunnel=EU
gui.appliedenergistics2.RFTunnel=RF
gui.appliedenergistics2.LightTunnel=Licht
gui.appliedenergistics2.OCTunnel=OpenComputers
gui.appliedenergistics2.PressureTunnel=Druck
gui.appliedenergistics2.security.extract.name=Extrahieren
gui.appliedenergistics2.security.inject.name=Deponieren
@@ -148,6 +177,9 @@ gui.appliedenergistics2.Crafts=Fertigt
gui.appliedenergistics2.And=und
gui.appliedenergistics2.Creates=Kreiert
gui.appliedenergistics2.With=mit
gui.appliedenergistics2.Substitute=Nutze Substitution:
gui.appliedenergistics2.Yes=Ja
gui.appliedenergistics2.No=Nein
gui.appliedenergistics2.InWorldCrafting=AE2 In-Welt-Fertigung
gui.appliedenergistics2.inWorldFluix=Wirf 1 Geladenes Certusquarzstück + 1 Netherquarz + Redstone-Staub nebeneinander in eine Pfütze und warte einen Moment.
gui.appliedenergistics2.inWorldPurificationCertus=Wirf einen Certusquarzkeim, gemacht aus Certusquarzstaub und Sand, in eine Pfütze Wasser; um den Prozess zu beschleunigen, füge Kristallwachstumsbeschleuniger hinzu.
@@ -195,11 +227,16 @@ gui.appliedenergistics2.Excluded=Ausschließlich
gui.appliedenergistics2.Partitioned=Partitioniert
gui.appliedenergistics2.Precise=Präzise
gui.appliedenergistics2.Fuzzy=Ungenau
gui.appliedenergistics2.SmallFontCraft=Craft
gui.appliedenergistics2.LargeFontCraft=+
gui.appliedenergistics2.Nothing=Nichts
// GUI Tooltips
gui.tooltips.appliedenergistics2.Stash=Items lagern
gui.tooltips.appliedenergistics2.StashDesc=Items aus dem Fertigungsgitter in Netzwerkspeicher zurücksenden.
gui.tooltips.appliedenergistics2.Substitutions=Ore-Dict-Ersetzung
gui.tooltips.appliedenergistics2.SubstitutionsDesc=Ersetzungsoptionen für Eingangskomponenten ändern
gui.tooltips.appliedenergistics2.Substitutions=Ore-Dict-Substitution
gui.tooltips.appliedenergistics2.SubstitutionsDescEnabled=Erlaube Substitution der Eingangskomponenten.
gui.tooltips.appliedenergistics2.SubstitutionsDescDisabled=Verbiete Substitution der Eingangskomponenten.
gui.tooltips.appliedenergistics2.SubstitutionsOn=Ersetzung aktiviert
gui.tooltips.appliedenergistics2.SubstitutionsOff=Ersetzung deaktiviert
gui.tooltips.appliedenergistics2.Encode=Schablone kodieren
@@ -277,13 +314,24 @@ gui.tooltips.appliedenergistics2.EmitWhenCrafting=Stoße Redstone-Signal aus, w
gui.tooltips.appliedenergistics2.ReportInaccessibleItems=Melde unerreichbare Items
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsYes=Ja: Items, die nicht extrahiert werden können, werden sichtbar.
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsNo=Nein: Nur extrahierbare Items werden sichtbar.
gui.tooltips.appliedenergistics2.BlockPlacement=Blockplatzierung
gui.tooltips.appliedenergistics2.BlockPlacementYes=Block wird als Block plaziert.
gui.tooltips.appliedenergistics2.BlockPlacementNo=Block wird als Item plaziert.
gui.tooltips.appliedenergistics2.SchedulingMode=Planungsmodus
gui.tooltips.appliedenergistics2.SchedulingModeDefault=Exportiere das erste Item bis das Netzwerk leer ist, probiere dann das nächste Item.
gui.tooltips.appliedenergistics2.SchedulingModeRoundRobin=Exportiere im Round-Robin-Modus.
gui.tooltips.appliedenergistics2.SchedulingModeRandom=Exportiere im Zufallsmodus.
gui.tooltips.appliedenergistics2.ItemsStored=Items gespeichert: %s
gui.tooltips.appliedenergistics2.ItemsRequestable=Anfragbare Items: %s
// Units
gui.appliedenergistics2.units.appliedenergstics=AE
gui.appliedenergistics2.units.ic2=Energy Units
gui.appliedenergistics2.units.mekanism=Joules
gui.appliedenergistics2.units.rotarycraft=Watt
gui.appliedenergistics2.units.thermalexpansion=Redstone Flux
// Colors
gui.appliedenergistics2.White=Weiß
gui.appliedenergistics2.Orange=Orange
gui.appliedenergistics2.Magenta=Magenta
@@ -302,6 +350,8 @@ gui.appliedenergistics2.Red=Rot
gui.appliedenergistics2.Black=Schwarz
gui.appliedenergistics2.Fluix=Fluix
// Waila
waila.appliedenergistics2.Crafting=Fertigung
waila.appliedenergistics2.DeviceOnline=Gerät Online
waila.appliedenergistics2.DeviceOffline=Gerät Offline
waila.appliedenergistics2.DeviceMissingChannel=Gerät ohne Kanal
@@ -311,6 +361,7 @@ waila.appliedenergistics2.Showing=Zeigt
waila.appliedenergistics2.Contains=Enthält
waila.appliedenergistics2.Channels=%1$d von %2$d Kanälen
// Items
item.appliedenergistics2.ItemBasicStorageCell.1k.name=1k-ME-Speicherzelle
item.appliedenergistics2.ItemBasicStorageCell.4k.name=4k-ME-Speicherzelle
item.appliedenergistics2.ItemBasicStorageCell.16k.name=16k-ME-Speicherzelle
@@ -334,9 +385,9 @@ item.appliedenergistics2.ItemMaterial.CardFuzzy.name=Ungenauigkeitskarte
item.appliedenergistics2.ItemMaterial.CardInverter.name=Umkehrungskarte
item.appliedenergistics2.ItemMaterial.CardRedstone.name=Redstone-Karte
item.appliedenergistics2.ItemMaterial.CardSpeed.name=Beschleunigungskarte
item.appliedenergistics2.ItemMaterial.Cell2SpatialPart.name=2³ Spatial Component
item.appliedenergistics2.ItemMaterial.Cell16SpatialPart.name=16³ Spatial Component
item.appliedenergistics2.ItemMaterial.Cell128SpatialPart.name=128³ Spatial Component
item.appliedenergistics2.ItemMaterial.Cell2SpatialPart.name=2³ Raumkomponente
item.appliedenergistics2.ItemMaterial.Cell16SpatialPart.name=16³ Raumkomponente
item.appliedenergistics2.ItemMaterial.Cell128SpatialPart.name=128³ Raumkomponente
item.appliedenergistics2.ItemMaterial.Cell1kPart.name=1k-ME-Speicherkomponente
item.appliedenergistics2.ItemMaterial.Cell4kPart.name=4k-ME-Speicherkomponente
item.appliedenergistics2.ItemMaterial.Cell16kPart.name=16k-ME-Speicherkomponente
@@ -381,6 +432,7 @@ item.appliedenergistics2.ItemMaterial.SkyDust.name=Himmelssteinstaub
item.appliedenergistics2.ItemMaterial.CardCrafting.name=Fertigungskarte
item.appliedenergistics2.ItemPart.AnnihilationPlane.name=ME-Annihilationsfeld
item.appliedenergistics2.ItemPart.IdentityAnnihilationPlane.name=ME-Identitätsannihilationsfelds
item.appliedenergistics2.ItemPart.CableAnchor.name=Kabelanker
item.appliedenergistics2.ItemPart.CableCovered.name=Verdecktes ME-Kabel
item.appliedenergistics2.ItemPart.CableGlass.name=ME-Glaskabel
@@ -406,6 +458,7 @@ item.appliedenergistics2.ItemPart.InvertedToggleBus.name=Invertierter schaltbare
item.appliedenergistics2.ItemPart.ToggleBus.name=Schaltbarer ME-Bus
item.appliedenergistics2.ItemPart.CraftingMonitor.name=ME-Fertigungsmonitor
item.appliedenergistics2.ItemPart.InterfaceTerminal.name=ME-Schnittstellenkonsole
item.appliedenergistics2.ItemPart.InvalidType.name=Deaktiviertes Item
item.appliedenergistics2.ItemSpatialStorageCell.128Cubed.name=128³-Raumspeicherzelle
item.appliedenergistics2.ItemSpatialStorageCell.16Cubed.name=16³-Raumspeicherzelle
@@ -441,9 +494,67 @@ item.appliedenergistics2.ToolBiometricCard.name=Biometriekarte
item.appliedenergistics2.ToolDebugCard.name=Dev.Debug-Karte
item.appliedenergistics2.ToolReplicatorCard.name=Dev.Replikator-Karte
// Commands
commands.ae2.usage=Befehle verfügbar in Applied Energistics 2 - Verwende '/ae2 list' für eine Liste und '/ae2 help _____' für Hilfe zu einem Befehl.
commands.ae2.permissions=Du hast nicht die erforderlichen Berechtigungen, um diesen Befehl auszuführen.
commands.ae2.ChunkLogger=Schalted das Berichten von Chunk-Loading und Chunk-Unloading im Server-log um. ( OP )
commands.ae2.ChunkLoggerOn=Chunk Logging ist nun aktiviert
commands.ae2.ChunkLoggerOff=Chunk Logging is nun deaktiviert
commands.ae2.ChunkLoggerOn=Chunk Logging ist aktiviert
commands.ae2.ChunkLoggerOff=Chunk Logging ist deaktiviert
commands.ae2.Supporters=Zeigt eine Liste aller AE2-Unterstützer
// Achievements
achievement.ae2.Compass=Meteoritenjäger
achievement.ae2.Compass.desc=Fertige einen Meteoritenkompass
achievement.ae2.Presses=Unbekannte Technologie
achievement.ae2.Presses.desc=Finde eine Prozessorenpresse
achievement.ae2.SpatialIO=Raumkoordinaten
achievement.ae2.SpatialIO.desc=Fertige einen IO-Raumport
achievement.ae2.SpatialIOExplorer=To boldly go
achievement.ae2.SpatialIOExplorer.desc=Werde in einer Raumspeicherzelle gespeichert
achievement.ae2.StorageCell=Besser als Truhen
achievement.ae2.StorageCell.desc=Fertige eine Speicherzelle
achievement.ae2.IOPort=Fertigungszellenshuffle
achievement.ae2.IOPort.desc=Fertige einen ME-IO-Port
achievement.ae2.CraftingTerminal=Eine (viel) größere Bank
achievement.ae2.CraftingTerminal.desc=Fertige eine Fertigungskonsole
achievement.ae2.PatternTerminal=Crafting Maestro
achievement.ae2.PatternTerminal.desc=Fertige eine Schablonenkonsole
achievement.ae2.ChargedQuartz=Schockierend
achievement.ae2.ChargedQuartz.desc=Finde geladenen Certusquartz
achievement.ae2.Fluix=Unnatürlich
achievement.ae2.Fluix.desc=Stelle Fluixkristalle her
achievement.ae2.Charger=Fluixproduktion
achievement.ae2.Charger.desc=Fertige ein Ladegerät
achievement.ae2.CrystalGrowthAccelerator=Beschleuniger ist eine Untertreibung
achievement.ae2.CrystalGrowthAccelerator.desc=Fertige einen Kristallwachstumsbeschleuniger
achievement.ae2.GlassCable=Fluix-Energie-Verbingung
achievement.ae2.GlassCable.desc=Fertige ME-Glaskabel
achievement.ae2.Networking1=Netzwerklehrling
achievement.ae2.Networking1.desc=Erreiche 8 Kanäle mit Geräten in einem Netzwerk
achievement.ae2.Controller=Netzwerkzentrale
achievement.ae2.Controller.desc=Fertige einen ME-Controller
achievement.ae2.Networking2=Netzwerkingeneur
achievement.ae2.Networking2.desc=Erreiche 128 Kanäle mit Geräten in einem Netzwerk
achievement.ae2.Networking3=Netzwerkadministrator
achievement.ae2.Networking3.desc=Erreiche 2048 Kanäle mit Geräten in einem Netzwerk
achievement.ae2.P2P=Punkt-zu-Punkt-Verbindung
achievement.ae2.P2P.desc=Fertige einen P2P-Tunnel
achievement.ae2.Recursive=Rekursives Netzwerken
achievement.ae2.Recursive.desc=Platziere eine ME-Schnittstelle auf einen Speicherbus
achievement.ae2.CraftingCPU=NextGen-Fertigung
achievement.ae2.CraftingCPU.desc=Fertige eine Fertigungs-CPU
achievement.ae2.Facade=Netzwerkästhetik
achievement.ae2.Facade.desc=Fertige eine Kabelfassade
achievement.ae2.NetworkTool=Netzwerkdiagnose
achievement.ae2.NetworkTool.desc=Fertige eine Netzwerksonde
achievement.ae2.PortableCell=Speichernomade
achievement.ae2.PortableCell.desc=Fertige eine Tragbare Zelle
achievement.ae2.StorageBus=Uneingeschränktes Potential
achievement.ae2.StorageBus.desc=Fertige einen Speicherbus
achievement.ae2.QNB=Quantum Tunneling
achievement.ae2.QNB.desc=Fertige einen Quantenlink
// Stats
stat.ae2.ItemsInserted=Items zu ME Speicher hinzugefügt
stat.ae2.ItemsExtracted=Items aus ME Speicher entfernt
stat.ae2.TurnedCranks=Runden gekurbelt
@@ -80,7 +80,7 @@ chat.appliedenergistics2.InvalidMachine=Érvénytelen gép.
chat.appliedenergistics2.LoadedSettings=Beállítások sikeresen beolvasva.
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 nem összekötve.
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.
@@ -139,7 +139,7 @@ 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 Be/Ki Port
gui.appliedenergistics2.IOPort=ME IO Port
gui.appliedenergistics2.Chest=ME Láda
gui.appliedenergistics2.Condenser=Anyag Sűrítő
gui.appliedenergistics2.Config=Konfiguráció
@@ -149,7 +149,7 @@ gui.appliedenergistics2.GrindStone=Daráló
gui.appliedenergistics2.ImportBus=ME Import Busz
gui.appliedenergistics2.Interface=ME Interfész
gui.appliedenergistics2.LevelEmitter=ME Szint Kibocsátó
gui.appliedenergistics2.Of=-ból
gui.appliedenergistics2.Of=-ból/-ből
gui.appliedenergistics2.Patterns=Minták
gui.appliedenergistics2.SpatialIOPort=Tér-IO Port
gui.appliedenergistics2.StoredEnergy=Tárolt Energia
@@ -176,8 +176,8 @@ 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=Készít
gui.appliedenergistics2.With=-val/-vel
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
@@ -201,7 +201,7 @@ gui.appliedenergistics2.Empty=Üres
gui.appliedenergistics2.Stored=Tárolva
gui.appliedenergistics2.Cancel=Mégse
gui.appliedenergistics2.ETAFormat=HH:mm:ss
gui.appliedenergistics2.Crafting=Barkácsolás
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
@@ -229,7 +229,7 @@ gui.appliedenergistics2.Included=Tartalmazott
gui.appliedenergistics2.Excluded=Kihagyott
gui.appliedenergistics2.Partitioned=Particionált
gui.appliedenergistics2.Precise=Precíz
gui.appliedenergistics2.Fuzzy=Homályos
gui.appliedenergistics2.Fuzzy=Megkülönböztető
gui.appliedenergistics2.SmallFontCraft=Barkács
gui.appliedenergistics2.LargeFontCraft=+
gui.appliedenergistics2.Nothing=Semmi
@@ -244,25 +244,25 @@ 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=Homályos összehasonlítás
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 sorrend
gui.tooltips.appliedenergistics2.SortBy=Rendezés ... szerint
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ési irány kapcsolása
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ó
gui.tooltips.appliedenergistics2.View=Megtekintés
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
gui.tooltips.appliedenergistics2.ItemName=Tárgy neve
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
@@ -277,7 +277,7 @@ gui.tooltips.appliedenergistics2.Singularity=Szingularitássá sűrítés \n%s d
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.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
@@ -291,9 +291,9 @@ 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=Mozgassa a kimenetfelé mikor üres.
gui.tooltips.appliedenergistics2.MoveWhenWorkIsDone=Mozgassa a kimenetfelé mikor a feladat kész van.
gui.tooltips.appliedenergistics2.MoveWhenFull=Mozgassa a kimenetfelé mikor teli van.
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.
@@ -304,8 +304,8 @@ gui.tooltips.appliedenergistics2.CraftEither=Használjon tárolt tárgyakat, vag
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
gui.tooltips.appliedenergistics2.Mod=Mod
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
@@ -360,8 +360,8 @@ waila.appliedenergistics2.DeviceOffline=Eszköz Offline
waila.appliedenergistics2.DeviceMissingChannel=Hiányzó Csatorna
waila.appliedenergistics2.Locked=Zárolva
waila.appliedenergistics2.Unlocked=Feloldva
waila.appliedenergistics2.Showing=Mutatni
waila.appliedenergistics2.Contains=Tartalmaz
waila.appliedenergistics2.Showing=Mutatott tárgy
waila.appliedenergistics2.Contains=Energiaszint
waila.appliedenergistics2.Channels=%2$d Csatornából %1$d használatban
// Items
@@ -369,7 +369,7 @@ 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.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
@@ -384,7 +384,7 @@ 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
@@ -422,9 +422,9 @@ item.appliedenergistics2.ItemMaterial.Singularity.name=Szingularitás
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=Vésett Műszaki Nyomat
item.appliedenergistics2.ItemMaterial.CalcProcessorPress.name=Vésett Kalkulációs Nyomat
item.appliedenergistics2.ItemMaterial.LogicProcessorPress.name=Vésett 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