Compare commits

...

27 Commits

Author SHA1 Message Date
yueh 84c065ff28 Fixes #3394: Use cache to avoid using removed IItemHandler (#3395) 2018-03-04 14:33:45 +01:00
yueh c9b92a81a3 Fixes #3405: Use cached tooltip for search, then copy craftable as zero. (#3406) 2018-03-04 14:33:23 +01:00
yueh eed4776c6f Fixes #3389: Prevent inventory cache from becoming unmatched. (#3390)
Use slightly faster ArrayDeqeue instead of LinkedList.
Check boolean fields before more complex datatypes
2018-02-17 19:10:09 +01:00
yueh 22807bc619 Updated maven repos. (#3391) 2018-02-16 18:43:09 +01:00
Florian Scandella ae352c093e fix typo in AEItemStack#fuzzyComparison 2018-02-10 19:02:32 +01:00
yueh 36d6681eac Rework fuzzy comparison for 99 percent threshold (#3367)
* Rework fuzzy comparison for 99 percent threshold

The current implementation is quite convoluted and can handle 99%
incorrectly when items exceed a certain damage range.

* Use metadata explicitly for comparison

Some item could use metadata to pack damageable and undamageable items
into the same id. Thus could lead to get ItemStack#getItemDamage() to
return bogus values for undamageable items.
2018-02-05 15:20:02 +01:00
yueh 6cffe93970 Fixes #3370: Avoid caching the model for facades locally. (#3371) 2018-02-05 15:19:20 +01:00
yueh b1472c58d0 Fixes #3363: Energy providers/requesters incorrectly removed on simulate (#3364) 2018-01-29 15:30:56 +01:00
yueh 96450a76c7 Fixes #3239: Torches should not be placeable on cranks. (#3359) 2018-01-28 13:47:49 +01:00
yueh ac209053b9 Fixes #3345: Added missing sky stone brick recipes. (#3357) 2018-01-28 13:31:07 +01:00
Foxgreat dce1aa37eb Update ru_RU.lang (#3336) 2018-01-28 12:52:53 +01:00
sfs131010 0b6831e4d7 Update zh_TW.lang (#3337) 2018-01-28 12:52:25 +01:00
yueh da6d8ba9a8 Fixes #3338: Upgrade inventory dupe bug due to ignoring player hand. (#3340) 2018-01-28 12:50:20 +01:00
yueh f0e45c7a3c Fixes #3288: Fixes various item rotations when held in 3rd person. (#3330) 2018-01-14 14:36:04 +01:00
fscan cbfc88c87f Fix light sync (#3304)
* Sync light opacity changes to client
* While at it, also fix Light P2P
* Use int for opacity, dont store it in NBT
2018-01-14 13:44:12 +01:00
yueh 8c5842aca9 Fixes #3315: Slightly more permissive checks for autocrafting (#3319)
* Fixes #3315: Slightly more permissive checks for autocrafting

Also fixes a bug in the fallback for looking up patterns to only use
ItemStack.EMPTY.
2018-01-14 13:43:31 +01:00
yueh 483049f555 Fixes #3293: Only update light level if the panel-facing block changes. (#3302) 2017-12-31 13:11:26 +01:00
yueh a7a65ae39d Fixes #3296: Prevent invalid TileEntites from updating their block. (#3301)
Updating the blockstate of invalid TEs will cause Forge to restore the
block including the TE leading to invalid TEs sticking around after
being moved.
2017-12-31 13:06:18 +01:00
yueh 45878df17d Fixes #3286: Incorrectly inverted hasSkyLight causes crashes on spatial transfer. (#3299) 2017-12-31 13:06:08 +01:00
yueh 98142d8ade Fixes CraftTweaker deploying incomplete releases. (#3300)
Due to CraftTweaker not deploying necessary dependencies, we cannot
rely on building against the most recent compatible version. Instead we
have to build against a specific known release to avoid it but have to
risk incompatibilities should there be changes on later versions.
2017-12-30 11:12:04 +01:00
yueh 7956872d1d Reworked IO Port to handle StorageChannels better. (#3284)
* Reworked IO Port to handle custom StorageChannels in a better way.
* Added a transferFactor to `IStorageChannel` to allow addons to speedup the IO Port to transfer faster. E.g. 1000 mB fluid as fast as transfering 1 bucket (item) per operation, not just 1 mB. 
* Also some changes to avoid moving fluids being 1000x as energy expensive as items.
2017-12-21 19:12:45 +01:00
yueh e243c8e9a2 Adds a debug generator for ForgeEnergy. (#3259)
* Adds a debug generator for ForgeEnergy.

This adds a simple debug block to test external energy injection via
ForgeEnergy and not rely solely on creative cells.

The energy has two functions. The first is acting as an infinite
ForgEnergy battery, this is unused by AE2 itself as nothing pulls
energy.
The second one is injecting energy every tick into any adjacent block
accepting ForgeEnergy.
The base generation is 8 per tick, but this is increased by the power of
adjacent TileEnergyGenerators.
2017-12-21 17:29:39 +01:00
yueh 641d0d40cc Fixes #3265: Do not strip special chars when extracting recipes. (#3266) 2017-12-21 17:28:31 +01:00
yueh 50fad685b6 Fixes #3282: Stacksizes > 64 prevent applicator from cycling. (#3287) 2017-12-21 17:28:16 +01:00
yueh 1ad49edd76 Fixes #3260: Only match damaged items when selected and set to 99%. (#3261) 2017-12-01 21:14:29 +01:00
yueh 7ceaa4cc3e Fixes #3217: Allow caps to be used as P2P attunements. (#3257)
Adds a more abstract approach to map a cap to a certain type instead of
the hardcoded ForgeEnergy case.
Reorders the check from exact ItemStack > ModId > ForgeEnergy to
ItemStack > Cap > ModId. Thus the mod wildcard will be used last.
Support for ForgeEnergy and FluidHandlerItems by default.
Result for items supporting multiple capabilities is not defined.
2017-12-01 21:14:11 +01:00
yueh b70c86542b Fixes #3255: Cache invalid patterns instead computing them every frame. (#3256) 2017-12-01 21:13:23 +01:00
59 changed files with 1119 additions and 779 deletions
+1
View File
@@ -24,6 +24,7 @@ tesla_version=1.0.61
ic2_version=2.8.19-ex112
top_version=1.12-1.4.18-10
cofhcore_version=1.12-4.+
crafttweaker_version=4.0.10.310
#########################################################
# Deployment #
+9 -4
View File
@@ -31,7 +31,7 @@ repositories {
maven {
name = "Tesla repo"
url "http://maven.epoxide.xyz"
url "http://maven.mcmoddev.com"
}
maven {
@@ -48,7 +48,7 @@ repositories {
name 'tterrag maven'
url "http://maven.tterrag.com/"
}
maven { // McJtyLib
name 'mcjty'
url "http://maven.k-4u.nl/"
@@ -58,11 +58,16 @@ repositories {
name 'tehnut'
url "http://tehnut.info/maven"
}
maven { // CraftTweaker
name 'jared maven'
url "http://maven.blamejared.com/"
}
maven { // modmaven, maven proxy
name 'modmaven'
url "https://modmaven.k-4u.nl/"
}
}
configurations {
@@ -82,7 +87,7 @@ dependencies {
compileOnly "net.industrial-craft:industrialcraft-2:${ic2_version}:api"
compileOnly "mcjty.theoneprobe:TheOneProbe-1.12:${top_version}:api"
compileOnly "cofh:CoFHCore:${cofhcore_version}:deobf"
compileOnly "CraftTweaker2:CraftTweaker2-API:4.+"
compileOnly "CraftTweaker2:CraftTweaker2-API:${crafttweaker_version}"
// at runtime, use the full JEI jar
runtime "mezz.jei:jei_${minecraft_version}:${jei_version}"
@@ -28,6 +28,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.capabilities.Capability;
import appeng.api.config.TunnelType;
@@ -47,6 +48,7 @@ public interface IP2PTunnelRegistry
*/
void addNewAttunement( @Nonnull ItemStack trigger, @Nullable TunnelType type );
void addNewAttunement( @Nonnull String ModId, @Nullable TunnelType type );
void addNewAttunement( @Nonnull Capability<?> cap, @Nullable TunnelType type );
/**
* returns null if no attunement can be found.
@@ -43,6 +43,19 @@ import appeng.api.storage.data.IItemList;
public interface IStorageChannel<T extends IAEStack<T>>
{
/**
* Can be used as factor for transferring stacks of a channel.
*
* E.g. used by IO Ports to transfer 1000 mB, not 1 mB to match the
* item channel transferring a full bucket per operation.
*
* @return
*/
default int transferFactor()
{
return 1;
}
/**
* Create a new {@link IItemList} of the specific type.
*
@@ -23,6 +23,7 @@ import javax.annotation.Nullable;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.BlockFaceShape;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
@@ -32,6 +33,7 @@ import net.minecraft.util.EnumBlockRenderType;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.common.util.FakePlayer;
@@ -164,4 +166,16 @@ public class BlockCrank extends AEBaseTileBlock
return false;
}
@Override
public boolean canPlaceTorchOnTop( IBlockState state, IBlockAccess world, BlockPos pos )
{
return false;
}
@Override
public BlockFaceShape getBlockFaceShape( IBlockAccess worldIn, IBlockState state, BlockPos pos, EnumFacing face )
{
return BlockFaceShape.UNDEFINED;
}
}
+20 -14
View File
@@ -21,6 +21,7 @@ package appeng.client.me;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.regex.Pattern;
import javax.annotation.Nonnull;
@@ -112,6 +113,8 @@ public class ItemRepo
final Enum viewMode = this.sortSrc.getSortDisplay();
final Enum searchMode = AEConfig.instance().getConfigManager().getSetting( Settings.SEARCH_MODE );
final boolean needsZeroCopy = viewMode == ViewItems.CRAFTABLE;
if( searchMode == SearchBoxMode.JEI_AUTOSEARCH || searchMode == SearchBoxMode.JEI_MANUAL_SEARCH || searchMode == SearchBoxMode.JEI_AUTOSEARCH_KEEP || searchMode == SearchBoxMode.JEI_MANUAL_SEARCH_KEEP )
{
this.updateJEI( this.searchString );
@@ -160,43 +163,46 @@ public class ItemRepo
continue;
}
if( viewMode == ViewItems.CRAFTABLE )
{
is = is.copy();
is.setStackSize( 0 );
}
if( viewMode == ViewItems.STORED && is.getStackSize() == 0 )
{
continue;
}
final String dspName = searchMod ? Platform.getModId( is ) : Platform.getItemDisplayName( is );
boolean foundMatchingItemStack = false;
notDone = true;
if( m.matcher( dspName.toLowerCase() ).find() )
{
this.view.add( is );
notDone = false;
foundMatchingItemStack = true;
}
if( terminalSearchToolTips && notDone && !searchMod )
{
for( final Object lp : Platform.getTooltip( is ) )
final List<String> tooltip = Platform.getTooltip( is );
for( final String line : tooltip )
{
if( lp instanceof String && m.matcher( (CharSequence) lp ).find() )
if( m.matcher( line ).find() )
{
this.view.add( is );
foundMatchingItemStack = true;
notDone = false;
break;
}
}
}
/*
* if ( terminalSearchMods && notDone ) { if ( m.matcher( Platform.getMod( is.getItemStack() ) ).find() ) {
* view.add( is ); notDone = false; } }
*/
if( foundMatchingItemStack )
{
if( needsZeroCopy )
{
is = is.copy();
is.setStackSize( 0 );
}
this.view.add( is );
}
}
final Enum SortBy = this.sortSrc.getSortBy();
@@ -43,22 +43,16 @@ public class FacadeItemModel implements IModel
// We use this to get the default item transforms and make our lives easier
private static final ResourceLocation MODEL_BASE = new ResourceLocation( AppEng.MOD_ID, "item/facade_base" );
private IModel baseModel = null;
private IModel getBaseModel()
{
if( this.baseModel == null )
try
{
try
{
baseModel = ModelLoaderRegistry.getModel( MODEL_BASE );
}
catch( Exception e )
{
throw new RuntimeException( e );
}
return ModelLoaderRegistry.getModel( MODEL_BASE );
}
catch( Exception e )
{
throw new RuntimeException( e );
}
return this.baseModel;
}
@Override
@@ -84,6 +78,6 @@ public class FacadeItemModel implements IModel
@Override
public IModelState getDefaultState()
{
return getBaseModel().getDefaultState();
return this.getBaseModel().getDefaultState();
}
}
@@ -160,6 +160,12 @@ public class ApiStorage implements IStorageHelper
private static final class FluidStorageChannel implements IFluidStorageChannel
{
@Override
public int transferFactor()
{
return 1000;
}
@Override
public IItemList<IAEFluidStack> createList()
{
@@ -195,7 +201,7 @@ public class ApiStorage implements IStorageHelper
Preconditions.checkNotNull( request );
Preconditions.checkNotNull( src );
return null;
return Platform.poweredExtraction( energy, cell, request, src );
}
@Override
@@ -206,7 +212,7 @@ public class ApiStorage implements IStorageHelper
Preconditions.checkNotNull( input );
Preconditions.checkNotNull( src );
return input;
return Platform.poweredInsert( energy, cell, input, src );
}
}
@@ -106,10 +106,12 @@ import appeng.core.features.BlockDefinition;
import appeng.core.features.registries.PartModels;
import appeng.debug.BlockChunkloader;
import appeng.debug.BlockCubeGenerator;
import appeng.debug.BlockEnergyGenerator;
import appeng.debug.BlockItemGen;
import appeng.debug.BlockPhantomNode;
import appeng.debug.TileChunkLoader;
import appeng.debug.TileCubeGenerator;
import appeng.debug.TileEnergyGenerator;
import appeng.debug.TileItemGen;
import appeng.debug.TilePhantomNode;
import appeng.decorative.slab.BlockSlabCommon;
@@ -236,6 +238,7 @@ public final class ApiBlocks implements IBlocks
private final IBlockDefinition chunkLoader;
private final IBlockDefinition phantomNode;
private final IBlockDefinition cubeGenerator;
private final IBlockDefinition energyGenerator;
public ApiBlocks( FeatureFactory registry, PartModels partModels )
{
@@ -526,6 +529,11 @@ public final class ApiBlocks implements IBlocks
.tileEntity( new TileEntityDefinition( TileCubeGenerator.class ) )
.useCustomItemModel()
.build();
this.energyGenerator = registry.block( "debug_energy_gen", BlockEnergyGenerator::new )
.features( AEFeature.UNSUPPORTED_DEVELOPER_TOOLS, AEFeature.CREATIVE )
.tileEntity( new TileEntityDefinition( TileEnergyGenerator.class ) )
.useCustomItemModel()
.build();
}
private static IBlockDefinition makeSlab( String slabId, String doubleSlabId, FeatureFactory registry, IBlockDefinition blockDef )
@@ -1014,4 +1022,9 @@ public final class ApiBlocks implements IBlocks
{
return this.cubeGenerator;
}
public IBlockDefinition energyGenerator()
{
return energyGenerator;
}
}
@@ -21,6 +21,7 @@ package appeng.core.features.registries;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
@@ -30,6 +31,8 @@ import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
import net.minecraftforge.oredict.OreDictionary;
import appeng.api.AEApi;
@@ -49,6 +52,7 @@ public final class P2PTunnelRegistry implements IP2PTunnelRegistry
private final Map<ItemStack, TunnelType> tunnels = new HashMap<>( INITIAL_CAPACITY );
private final Map<String, TunnelType> modIdTunnels = new HashMap<>( INITIAL_CAPACITY );
private final Map<Capability<?>, TunnelType> capTunnels = new HashMap<>( INITIAL_CAPACITY );
public void configure()
{
@@ -159,6 +163,12 @@ public final class P2PTunnelRegistry implements IP2PTunnelRegistry
this.addNewAttunement( parts.cableDenseSmart().stack( c, 1 ), TunnelType.ME );
}
/**
* attune based caps
*/
this.addNewAttunement( Capabilities.FORGE_ENERGY, TunnelType.FE_POWER );
this.addNewAttunement( CapabilityFluidHandler.FLUID_HANDLER_ITEM_CAPABILITY, TunnelType.FLUID );
/**
* attune based on the ItemStack's modId
*/
@@ -186,6 +196,16 @@ public final class P2PTunnelRegistry implements IP2PTunnelRegistry
this.modIdTunnels.put( modId, type );
}
@Override
public void addNewAttunement( @Nonnull final Capability<?> cap, @Nullable final TunnelType type )
{
if( type == null || cap == null )
{
return;
}
this.capTunnels.put( cap, type );
}
@Override
public void addNewAttunement( @Nonnull final ItemStack trigger, @Nullable final TunnelType type )
{
@@ -203,39 +223,40 @@ public final class P2PTunnelRegistry implements IP2PTunnelRegistry
{
if( !trigger.isEmpty() )
{
// if( FluidRegistry.isContainer( trigger ) )
// {
// return TunnelType.FLUID;
// }
for( final ItemStack is : this.tunnels.keySet() )
// First match exact items
for( final Entry<ItemStack, TunnelType> entry : this.tunnels.entrySet() )
{
final ItemStack is = entry.getKey();
if( is.getItem() == trigger.getItem() && is.getItemDamage() == OreDictionary.WILDCARD_VALUE )
{
return this.tunnels.get( is );
return entry.getValue();
}
if( ItemStack.areItemsEqual( is, trigger ) )
{
return this.tunnels.get( is );
return entry.getValue();
}
}
// Try by ModId next
for( final String modId : this.modIdTunnels.keySet() )
{
if( trigger.getItem().getRegistryName() != null && trigger.getItem().getRegistryName().getResourceDomain().equals( modId ) )
{
return this.modIdTunnels.get( modId );
}
}
// Next, check if the Item you're holding supports Forge Energy
// Next, check if the Item you're holding supports any registered capability
for( EnumFacing face : EnumFacing.VALUES )
{
if( trigger.hasCapability( Capabilities.FORGE_ENERGY, face ) )
for( Entry<Capability<?>, TunnelType> entry : this.capTunnels.entrySet() )
{
return TunnelType.FE_POWER;
if( trigger.hasCapability( entry.getKey(), face ) )
{
return entry.getValue();
}
}
}
// Use the mod id as last option.
for( final Entry<String, TunnelType> entry : this.modIdTunnels.entrySet() )
{
if( trigger.getItem().getRegistryName() != null && trigger.getItem().getRegistryName().getResourceDomain().equals( entry.getKey() ) )
{
return entry.getValue();
}
}
}
@@ -47,7 +47,7 @@ public enum TickRates
ItemTunnel( 5, 60 ),
LightTunnel( 5, 120 ),
LightTunnel( 5, 60 ),
OpenComputersTunnel( 1, 5 ),
@@ -0,0 +1,35 @@
/*
* This file is part of Applied Energistics 2.
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
*
* Applied Energistics 2 is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Applied Energistics 2 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
*/
package appeng.debug;
import net.minecraft.block.material.Material;
import appeng.block.AEBaseTileBlock;
public class BlockEnergyGenerator extends AEBaseTileBlock
{
public BlockEnergyGenerator()
{
super( Material.IRON );
}
}
@@ -0,0 +1,139 @@
/*
* This file is part of Applied Energistics 2.
* Copyright (c) 2013 - 2015, AlgorithmX2, All rights reserved.
*
* Applied Energistics 2 is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Applied Energistics 2 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
*/
package appeng.debug;
import java.util.EnumSet;
import javax.annotation.Nullable;
import com.google.common.math.IntMath;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ITickable;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.energy.CapabilityEnergy;
import net.minecraftforge.energy.IEnergyStorage;
import appeng.tile.AEBaseTile;
public class TileEnergyGenerator extends AEBaseTile implements ITickable, IEnergyStorage
{
/**
* The base energy injected each tick.
* Adjacent TileEnergyGenerators will increase it to pow(base, #generators).
*/
private static final int BASE_ENERGY = 8;
@Override
public void update()
{
int tier = 1;
final EnumSet<EnumFacing> validEnergyReceivers = EnumSet.noneOf( EnumFacing.class );
for( EnumFacing facing : EnumFacing.values() )
{
final TileEntity te = this.getWorld().getTileEntity( this.getPos().offset( facing ) );
if( te instanceof TileEnergyGenerator )
{
tier++;
}
if( te != null && te.hasCapability( CapabilityEnergy.ENERGY, facing.getOpposite() ) )
{
validEnergyReceivers.add( facing );
}
}
final int energyToInsert = IntMath.pow( BASE_ENERGY, tier );
for( EnumFacing facing : validEnergyReceivers )
{
final TileEntity te = this.getWorld().getTileEntity( this.getPos().offset( facing ) );
final IEnergyStorage cap = te.getCapability( CapabilityEnergy.ENERGY, facing.getOpposite() );
if( cap.canReceive() )
{
cap.receiveEnergy( energyToInsert, false );
}
}
}
@Override
public boolean hasCapability( Capability<?> capability, @Nullable EnumFacing facing )
{
if( capability == CapabilityEnergy.ENERGY )
{
return true;
}
return super.hasCapability( capability, facing );
}
@Override
@Nullable
public <T> T getCapability( Capability<T> capability, @Nullable EnumFacing facing )
{
if( capability == CapabilityEnergy.ENERGY )
{
return (T) this;
}
return super.getCapability( capability, facing );
}
@Override
public int receiveEnergy( int maxReceive, boolean simulate )
{
return 0;
}
@Override
public int extractEnergy( int maxExtract, boolean simulate )
{
return maxExtract;
}
@Override
public int getEnergyStored()
{
return Integer.MAX_VALUE;
}
@Override
public int getMaxEnergyStored()
{
return Integer.MAX_VALUE;
}
@Override
public boolean canExtract()
{
return true;
}
@Override
public boolean canReceive()
{
return false;
}
}
@@ -318,7 +318,7 @@ public final class ItemMaterial extends AEBaseItem implements IStorageComponent,
}
final InventoryAdaptor ad = new AdaptorItemHandler( upgrades );
player.inventory.setInventorySlotContents( player.inventory.currentItem, ad.addItems( player.getHeldItem( hand ) ) );
player.setHeldItem( hand, ad.addItems( player.getHeldItem( hand ) ) );
return EnumActionResult.SUCCESS;
}
}
@@ -211,6 +211,7 @@ public class ItemEncodedPattern extends AEBaseItem implements ICraftingPatternIt
public ItemStack getOutput( final ItemStack item )
{
ItemStack out = SIMPLE_CACHE.get( item );
if( out != null )
{
return out;
@@ -224,12 +225,9 @@ public class ItemEncodedPattern extends AEBaseItem implements ICraftingPatternIt
final ICraftingPatternDetails details = this.getPatternForItem( item, w );
if( details == null )
{
return ItemStack.EMPTY;
}
out = details != null ? details.getOutputs()[0].createItemStack() : ItemStack.EMPTY;
SIMPLE_CACHE.put( item, out = details.getCondensedOutputs()[0].createItemStack() );
SIMPLE_CACHE.put( item, out );
return out;
}
}
@@ -277,7 +277,7 @@ public class ToolColorApplicator extends AEBasePoweredItem implements IStorageCe
final IAEItemStack firstItem = itemList.getFirstItem();
if( firstItem != null )
{
newColor = firstItem.createItemStack();
newColor = firstItem.asItemStackRepresentation();
}
}
else
@@ -324,7 +324,7 @@ public class ToolColorApplicator extends AEBasePoweredItem implements IStorageCe
list.addFirst( list.removeLast() );
}
return list.get( 0 ).createItemStack();
return list.get( 0 ).asItemStackRepresentation();
}
}
+1 -1
View File
@@ -320,7 +320,7 @@ public class GridNode implements IGridNode, IPathItem
{
final IPathingGrid pg = g.getCache( IPathingGrid.class );
final IEnergyGrid eg = g.getCache( IEnergyGrid.class );
return this.meetsChannelRequirements() && eg.isNetworkPowered() && !pg.isNetworkBooting();
return eg.isNetworkPowered() && !pg.isNetworkBooting() && this.meetsChannelRequirements();
}
return false;
}
+2 -1
View File
@@ -489,7 +489,8 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper
if( ais.getItem() == whatToCraft.getItem() && ( !ais.getItem().getHasSubtypes() || ais.getItemDamage() == whatToCraft.getItemDamage() ) )
{
// TODO: check if OK
if( details.isValidItemForSlot( slotIndex, ais.createItemStack(), world ) )
// TODO: this is slightly hacky, but fine as long as we only deal with itemstacks
if( details.isValidItemForSlot( slotIndex, ais.asItemStackRepresentation(), world ) )
{
return this.craftableItems.get( ais );
}
+22 -18
View File
@@ -311,35 +311,32 @@ public class EnergyGridCache implements IEnergyGrid
final double newPower = node.extractAEPower( req, mode, PowerMultiplier.ONE );
extractedPower += newPower;
if( newPower < req )
if( newPower < req && mode == Actionable.MODULATE )
{
it.remove();
}
}
// got more then we wanted?
if( extractedPower > amt )
{
this.localStorage.addCurrentAEPower( extractedPower - amt );
this.globalAvailablePower -= amt;
final double result = Math.min( extractedPower, amt );
this.tickDrainPerTick += amt;
return amt;
if( mode == Actionable.MODULATE )
{
if( extractedPower > amt )
{
this.localStorage.addCurrentAEPower( extractedPower - amt );
}
this.globalAvailablePower -= result;
this.tickDrainPerTick += result;
}
// go less or the correct amount?
this.globalAvailablePower -= extractedPower;
this.tickDrainPerTick += extractedPower;
return extractedPower;
return result;
}
@Override
public double injectProviderPower( double amt, final Actionable mode )
{
if( mode == Actionable.MODULATE )
{
this.tickInjectionPerTick += amt;
}
final double originalAmount = amt;
final Iterator<IAEPowerStorage> it = this.requesters.iterator();
@@ -348,13 +345,20 @@ public class EnergyGridCache implements IEnergyGrid
final IAEPowerStorage node = it.next();
amt = node.injectAEPower( amt, mode );
if( amt > 0 )
if( amt > 0 && mode == Actionable.MODULATE )
{
it.remove();
}
}
return Math.max( 0.0, amt );
final double overflow = Math.max( 0.0, amt );
if( mode == Actionable.MODULATE )
{
this.tickInjectionPerTick += originalAmount - overflow;
}
return overflow;
}
@Override
+2 -2
View File
@@ -31,7 +31,7 @@ import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Lists;
import com.google.common.collect.Queues;
import appeng.api.config.AccessRestriction;
import appeng.api.config.Actionable;
@@ -49,7 +49,7 @@ import appeng.me.storage.ItemWatcher;
public class NetworkMonitor<T extends IAEStack<T>> implements IMEMonitor<T>
{
@Nonnull
private static final Deque<NetworkMonitor<?>> GLOBAL_DEPTH = Lists.newLinkedList();
private static final Deque<NetworkMonitor<?>> GLOBAL_DEPTH = Queues.newArrayDeque();
@Nonnull
private final GridStorageCache myGridCache;
+1 -1
View File
@@ -402,7 +402,7 @@ public class PathGridCache implements IPathingGrid
@Override
public boolean isNetworkBooting()
{
return !this.active.isEmpty() && !this.booting;
return !this.booting && !this.active.isEmpty();
}
@Override
@@ -19,9 +19,10 @@
package appeng.me.storage;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map.Entry;
import java.util.NavigableMap;
import java.util.concurrent.ConcurrentSkipListMap;
@@ -144,7 +145,7 @@ public class MEMonitorIInventory implements IMEMonitor<IAEItemStack>, ITickingMo
public TickRateModulation onTick()
{
final LinkedList<IAEItemStack> changes = new LinkedList<>();
final List<IAEItemStack> changes = new ArrayList<>();
this.list.resetStatus();
int high = 0;
@@ -212,13 +212,7 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
@Override
public IItemList<IAEItemStack> getAvailableItems( IItemList<IAEItemStack> out )
{
for( int i = 0; i < this.itemHandler.getSlots(); i++ )
{
out.addStorage( AEItemStack.fromItemStack( this.itemHandler.getStackInSlot( i ) ) );
}
return out;
return this.cache.getAvailableItems( out );
}
@Override
@@ -259,7 +253,6 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
private static class InventoryCache
{
private ItemStack[] cachedStacks = new ItemStack[0];
private IAEItemStack[] cachedAeStacks = new IAEItemStack[0];
private final IItemHandler itemHandler;
@@ -268,70 +261,76 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
this.itemHandler = itemHandler;
}
public IItemList<IAEItemStack> getAvailableItems( IItemList<IAEItemStack> out )
{
Arrays.stream( this.cachedAeStacks ).forEach( out::add );
return out;
}
public List<IAEItemStack> update()
{
List<IAEItemStack> changes = new ArrayList<>();
int slots = this.itemHandler.getSlots();
final List<IAEItemStack> changes = new ArrayList<>();
final int slots = this.itemHandler.getSlots();
// Make room for new slots
if( slots > this.cachedStacks.length )
if( slots > this.cachedAeStacks.length )
{
this.cachedStacks = Arrays.copyOf( this.cachedStacks, slots );
this.cachedAeStacks = Arrays.copyOf( this.cachedAeStacks, slots );
}
for( int slot = 0; slot < slots; slot++ )
{
// Save the old stuff
ItemStack oldIS = this.getItemStackInCachedSlot( slot );
IAEItemStack oldAeIS = this.cachedAeStacks[slot];
final IAEItemStack oldAeIS = this.cachedAeStacks[slot];
final ItemStack newIS = this.itemHandler.getStackInSlot( slot );
ItemStack newIS = this.itemHandler.getStackInSlot( slot );
if( isDifferent( newIS, oldIS ) )
{
this.addItemChange( slot, oldAeIS, newIS, changes );
}
else if( !newIS.isEmpty() && !oldIS.isEmpty() )
{
this.addPossibleStackSizeChange( slot, oldAeIS, newIS, changes );
}
this.handlePossibleSlotChanges( slot, oldAeIS, newIS, changes );
}
// Handle cases where the number of slots actually is lower now than before
if( slots < this.cachedStacks.length )
if( slots < this.cachedAeStacks.length )
{
for( int slot = slots; slot < this.cachedStacks.length; slot++ )
for( int slot = slots; slot < this.cachedAeStacks.length; slot++ )
{
IAEItemStack aeStack = this.cachedAeStacks[slot];
final IAEItemStack aeStack = this.cachedAeStacks[slot];
if( aeStack != null )
{
IAEItemStack a = aeStack.copy();
final IAEItemStack a = aeStack.copy();
a.setStackSize( -a.getStackSize() );
changes.add( a );
}
}
// Reduce the cache size
this.cachedStacks = Arrays.copyOf( this.cachedStacks, slots );
this.cachedAeStacks = Arrays.copyOf( this.cachedAeStacks, slots );
}
return changes;
}
private void addPossibleStackSizeChange( int slot, IAEItemStack oldAeIS, ItemStack newIS, List<IAEItemStack> changes )
private void handlePossibleSlotChanges( int slot, IAEItemStack oldAeIS, ItemStack newIS, List<IAEItemStack> changes )
{
if( oldAeIS != null && oldAeIS.isSameType( newIS ) )
{
this.handleStackSizeChanged( slot, oldAeIS, newIS, changes );
}
else
{
this.handleItemChanged( slot, oldAeIS, newIS, changes );
}
}
private void handleStackSizeChanged( int slot, IAEItemStack oldAeIS, ItemStack newIS, List<IAEItemStack> changes )
{
// Still the same item, but amount might have changed
long diff = newIS.getCount() - oldAeIS.getStackSize();
final long diff = newIS.getCount() - oldAeIS.getStackSize();
if( diff != 0 )
{
IAEItemStack stack = oldAeIS.copy();
final IAEItemStack stack = oldAeIS.copy();
stack.setStackSize( newIS.getCount() );
this.cachedStacks[slot] = newIS;
this.cachedAeStacks[slot] = stack;
final IAEItemStack a = stack.copy();
@@ -340,28 +339,12 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
}
}
private ItemStack getItemStackInCachedSlot( int pos )
{
if( pos > this.cachedStacks.length )
{
return ItemStack.EMPTY;
}
if( this.cachedStacks[pos] == null )
{
return ItemStack.EMPTY;
}
return this.cachedStacks[pos];
}
private void addItemChange( int slot, IAEItemStack oldAeIS, ItemStack newIS, List<IAEItemStack> changes )
private void handleItemChanged( int slot, IAEItemStack oldAeIS, ItemStack newIS, List<IAEItemStack> changes )
{
// Completely different item
this.cachedStacks[slot] = newIS;
this.cachedAeStacks[slot] = AEItemStack.fromItemStack( newIS );
// If we had a stack previously in this slot, notify the newtork about its disappearance
// If we had a stack previously in this slot, notify the network about its disappearance
if( oldAeIS != null )
{
oldAeIS.setStackSize( -oldAeIS.getStackSize() );
@@ -374,16 +357,6 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
changes.add( this.cachedAeStacks[slot] );
}
}
private static boolean isDifferent( final ItemStack a, final ItemStack b )
{
if( a == b && b.isEmpty() )
{
return false;
}
return a.isEmpty() || b.isEmpty() || !Platform.itemComparisons().isSameItem( a, b );
}
}
}
@@ -55,7 +55,7 @@ public class PartP2PLight extends PartP2PTunnel<PartP2PLight> implements IGridTi
}
private int lastValue = 0;
private float opacity = -1;
private int opacity = -1;
public PartP2PLight( final ItemStack is )
{
@@ -81,15 +81,21 @@ public class PartP2PLight extends PartP2PTunnel<PartP2PLight> implements IGridTi
{
super.writeToStream( data );
data.writeInt( this.isOutput() ? this.lastValue : 0 );
data.writeInt( this.opacity );
}
@Override
public boolean readFromStream( final ByteBuf data ) throws IOException
{
super.readFromStream( data );
final int oldValue = this.lastValue;
final int oldOpacity = this.opacity;
this.lastValue = data.readInt();
this.opacity = data.readInt();
this.setOutput( this.lastValue > 0 );
return false;
return lastValue != oldValue || oldOpacity != this.opacity;
}
private boolean doWork()
@@ -126,14 +132,15 @@ public class PartP2PLight extends PartP2PTunnel<PartP2PLight> implements IGridTi
@Override
public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{
this.opacity = -1;
this.doWork();
if( this.isOutput() )
if( this.isOutput() && pos.offset( this.getSide().getFacing() ).equals( neighbor ) )
{
this.opacity = -1;
this.getHost().markForUpdate();
}
else
{
this.doWork();
}
}
@Override
@@ -168,10 +175,6 @@ public class PartP2PLight extends PartP2PTunnel<PartP2PLight> implements IGridTi
public void readFromNBT( final NBTTagCompound tag )
{
super.readFromNBT( tag );
if( tag.hasKey( "opacity" ) )
{
this.opacity = tag.getFloat( "opacity" );
}
this.lastValue = tag.getInteger( "lastValue" );
}
@@ -179,7 +182,6 @@ public class PartP2PLight extends PartP2PTunnel<PartP2PLight> implements IGridTi
public void writeToNBT( final NBTTagCompound tag )
{
super.writeToNBT( tag );
tag.setFloat( "opacity", this.opacity );
tag.setInteger( "lastValue", this.lastValue );
}
@@ -219,7 +221,7 @@ public class PartP2PLight extends PartP2PTunnel<PartP2PLight> implements IGridTi
@Override
public TickRateModulation tickingRequest( final IGridNode node, final int ticksSinceLastCall )
{
return this.doWork() ? TickRateModulation.FASTER : TickRateModulation.SLOWER;
return this.doWork() ? TickRateModulation.URGENT : TickRateModulation.SLOWER;
}
public float getPowerDrainPerTick()
@@ -70,7 +70,7 @@ public abstract class AbstractPartReporting extends AEBasePart implements IPartM
private byte spin = 0; // 0-3
private int clientFlags = 0; // sent as byte.
private float opacity = -1;
private int opacity = -1;
public AbstractPartReporting( final ItemStack is )
{
@@ -117,18 +117,17 @@ public abstract class AbstractPartReporting extends AEBasePart implements IPartM
@Override
public void onNeighborChanged( IBlockAccess w, BlockPos pos, BlockPos neighbor )
{
this.opacity = -1;
this.getHost().markForUpdate();
if( pos.offset( this.getSide().getFacing() ).equals( neighbor ) )
{
this.opacity = -1;
this.getHost().markForUpdate();
}
}
@Override
public void readFromNBT( final NBTTagCompound data )
{
super.readFromNBT( data );
if( data.hasKey( "opacity" ) )
{
this.opacity = data.getFloat( "opacity" );
}
this.spin = data.getByte( "spin" );
}
@@ -136,7 +135,6 @@ public abstract class AbstractPartReporting extends AEBasePart implements IPartM
public void writeToNBT( final NBTTagCompound data )
{
super.writeToNBT( data );
data.setFloat( "opacity", this.opacity );
data.setByte( "spin", this.getSpin() );
}
@@ -169,6 +167,7 @@ public abstract class AbstractPartReporting extends AEBasePart implements IPartM
}
data.writeByte( (byte) this.getClientFlags() );
data.writeInt( this.opacity );
}
@Override
@@ -176,9 +175,13 @@ public abstract class AbstractPartReporting extends AEBasePart implements IPartM
{
super.readFromStream( data );
final int oldFlags = this.getClientFlags();
final int oldOpacity = this.opacity;
this.clientFlags = data.readByte();
this.opacity = data.readInt();
this.spin = (byte) ( this.getClientFlags() & 3 );
if( this.getClientFlags() == oldFlags )
if( this.getClientFlags() == oldFlags && this.opacity == oldOpacity )
{
return false;
}
@@ -25,7 +25,6 @@ import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import java.net.URLDecoder;
import java.util.Collection;
import java.util.Enumeration;
import java.util.HashSet;
@@ -58,7 +57,6 @@ public class RecipeResourceCopier
private static final String FILE_PROTOCOL = "file";
private static final String CLASS_EXTENSION = ".class";
private static final String JAR_PROTOCOL = "jar";
private static final String UTF_8_ENCODING = "UTF-8";
/**
* copy source in the jar
@@ -225,9 +223,9 @@ public class RecipeResourceCopier
{
/* A JAR path */
final String dirPath = dirURL.getPath();
final String jarPath = dirPath.substring( 5, dirPath.indexOf( '!' ) ); // strip out only
final String jarPath = dirPath.substring( 0, dirPath.indexOf( '!' ) ); // strip out only
// the JAR file
final JarFile jar = new JarFile( URLDecoder.decode( jarPath, UTF_8_ENCODING ) );
final JarFile jar = new JarFile( new File( new URI( jarPath ) ) );
try
{
final Enumeration<JarEntry> entries = jar.entries(); // gives ALL entries in jar
@@ -418,7 +418,7 @@ public class CachedPlane
ExtendedBlockStorage extendedblockstorage = storage[by];
if( extendedblockstorage == null )
{
extendedblockstorage = storage[by] = new ExtendedBlockStorage( by << 4, !this.c.getWorld().provider.hasSkyLight() );
extendedblockstorage = storage[by] = new ExtendedBlockStorage( by << 4, this.c.getWorld().provider.hasSkyLight() );
}
}
}
@@ -74,7 +74,7 @@ public class TileCraftingStorageTile extends TileCraftingTile
@Override
public int getStorageBytes()
{
if( this.world == null || this.notLoaded() )
if( this.world == null || this.notLoaded() || this.isInvalid() )
{
return 0;
}
@@ -143,7 +143,7 @@ public class TileCraftingTile extends AENetworkTile implements IAEMultiBlock, IP
public void updateMeta( final boolean updateFormed )
{
if( this.world == null || this.notLoaded() )
if( this.world == null || this.notLoaded() || this.isInvalid() )
{
return;
}
@@ -83,13 +83,14 @@ public class TileCableBus extends AEBaseTile implements AEMultiTile, ICustomColl
protected boolean readFromStream( final ByteBuf data ) throws IOException
{
final boolean c = super.readFromStream( data );
final boolean ret = this.getCableBus().readFromStream( data );
boolean ret = this.getCableBus().readFromStream( data );
final int newLV = this.getCableBus().getLightValue();
if( newLV != this.oldLV )
{
this.oldLV = newLV;
this.world.checkLight( this.pos );
ret = true;
}
this.updateTileSetting();
@@ -189,7 +190,6 @@ public class TileCableBus extends AEBaseTile implements AEMultiTile, ICustomColl
{
this.oldLV = newLV;
this.world.checkLight( this.pos );
// world.updateAllLightTypes( xCoord, yCoord, zCoord );
}
super.markForUpdate();
@@ -84,7 +84,7 @@ public class TileEnergyCell extends AENetworkTile implements IAEPowerStorage
private void changePowerLevel()
{
if( this.notLoaded() )
if( this.notLoaded() || this.isInvalid() )
{
return;
}
@@ -19,7 +19,9 @@
package appeng.tile.storage;
import java.util.IdentityHashMap;
import java.util.List;
import java.util.Map;
import net.minecraft.block.Block;
import net.minecraft.item.ItemStack;
@@ -48,10 +50,6 @@ import appeng.api.networking.ticking.TickingRequest;
import appeng.api.storage.IMEInventory;
import appeng.api.storage.IMEMonitor;
import appeng.api.storage.IStorageChannel;
import appeng.api.storage.channels.IFluidStorageChannel;
import appeng.api.storage.channels.IItemStorageChannel;
import appeng.api.storage.data.IAEFluidStack;
import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IAEStack;
import appeng.api.storage.data.IItemList;
import appeng.api.util.AECableType;
@@ -68,7 +66,6 @@ import appeng.tile.inventory.AppEngInternalInventory;
import appeng.util.ConfigManager;
import appeng.util.IConfigManagerHost;
import appeng.util.InventoryAdaptor;
import appeng.util.Platform;
import appeng.util.helpers.ItemHandlerUtil;
import appeng.util.inv.AdaptorItemHandler;
import appeng.util.inv.InvOperation;
@@ -79,10 +76,13 @@ import appeng.util.inv.filter.AEItemFilters;
public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IConfigManagerHost, IGridTickable
{
private static final int NUMBER_OF_CELL_SLOTS = 6;
private static final int NUMBER_OF_UPGRADE_SLOTS = 3;
private final ConfigManager manager;
private final AppEngInternalInventory inputCells = new AppEngInternalInventory( this, 6 );
private final AppEngInternalInventory outputCells = new AppEngInternalInventory( this, 6 );
private final AppEngInternalInventory inputCells = new AppEngInternalInventory( this, NUMBER_OF_CELL_SLOTS );
private final AppEngInternalInventory outputCells = new AppEngInternalInventory( this, NUMBER_OF_CELL_SLOTS );
private final IItemHandler combinedInventory = new WrapperChainedItemHandler( this.inputCells, this.outputCells );
private final IItemHandler inputCellsExt = new WrapperFilteredItemHandler( this.inputCells, AEItemFilters.INSERT_ONLY );
@@ -92,8 +92,7 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
private final IActionSource mySrc;
private YesNo lastRedstoneState;
private ItemStack currentCell;
private IMEInventory<IAEFluidStack> cachedFluid;
private IMEInventory<IAEItemStack> cachedItem;
private Map<IStorageChannel<?>, IMEInventory<?>> cachedInventories;
public TileIOPort()
{
@@ -106,7 +105,7 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
this.lastRedstoneState = YesNo.UNDECIDED;
final Block ioPortBlock = AEApi.instance().definitions().blocks().iOPort().maybeBlock().get();
this.upgrades = new BlockUpgradeInventory( ioPortBlock, this, 3 );
this.upgrades = new BlockUpgradeInventory( ioPortBlock, this, NUMBER_OF_UPGRADE_SLOTS );
}
@Override
@@ -277,87 +276,84 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
return TickRateModulation.IDLE;
}
long ItemsToMove = 256;
TickRateModulation ret = TickRateModulation.SLEEP;
long itemsToMove = 256;
switch( this.getInstalledUpgrades( Upgrades.SPEED ) )
{
case 1:
ItemsToMove *= 2;
itemsToMove *= 2;
break;
case 2:
ItemsToMove *= 4;
itemsToMove *= 4;
break;
case 3:
ItemsToMove *= 8;
itemsToMove *= 8;
break;
}
try
{
final IMEInventory<IAEItemStack> itemNet = this.getProxy().getStorage().getInventory(
AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) );
final IMEInventory<IAEFluidStack> fluidNet = this.getProxy().getStorage().getInventory(
AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) );
final IEnergySource energy = this.getProxy().getEnergy();
for( int x = 0; x < 6; x++ )
for( int x = 0; x < NUMBER_OF_CELL_SLOTS; x++ )
{
final ItemStack is = this.inputCells.getStackInSlot( x );
if( !is.isEmpty() )
{
if( ItemsToMove > 0 )
boolean shouldMove = true;
for( IStorageChannel<? extends IAEStack<?>> c : AEApi.instance().storage().storageChannels() )
{
final IMEInventory<IAEItemStack> itemInv = this.getInv( is, AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) );
final IMEInventory<IAEFluidStack> fluidInv = this.getInv( is,
AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) );
if( this.manager.getSetting( Settings.OPERATION_MODE ) == OperationMode.EMPTY )
if( itemsToMove > 0 )
{
if( itemInv != null )
final IMEMonitor<? extends IAEStack<?>> network = this.getProxy().getStorage().getInventory( c );
final IMEInventory<?> inv = this.getInv( is, c );
if( inv == null )
{
ItemsToMove = this.transferContents( energy, itemInv, itemNet, ItemsToMove,
AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) );
continue;
}
if( fluidInv != null )
if( this.manager.getSetting( Settings.OPERATION_MODE ) == OperationMode.EMPTY )
{
ItemsToMove = this.transferContents( energy, fluidInv, fluidNet, ItemsToMove,
AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) );
}
}
else
{
if( itemInv != null )
{
ItemsToMove = this.transferContents( energy, itemNet, itemInv, ItemsToMove,
AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) );
}
if( fluidInv != null )
{
ItemsToMove = this.transferContents( energy, fluidNet, fluidInv, ItemsToMove,
AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) );
itemsToMove = this.transferContents( energy, inv, network, itemsToMove, c );
}
else
{
itemsToMove = this.transferContents( energy, network, inv, itemsToMove, c );
}
shouldMove &= this.shouldMove( inv );
if( itemsToMove > 0 )
{
ret = TickRateModulation.IDLE;
}
else
{
ret = TickRateModulation.URGENT;
}
}
}
if( ItemsToMove > 0 && this.shouldMove( itemInv, fluidInv ) && !this.moveSlot( x ) )
{
return TickRateModulation.IDLE;
}
return TickRateModulation.URGENT;
if( itemsToMove > 0 && shouldMove && this.moveSlot( x ) )
{
ret = TickRateModulation.URGENT;
}
else
{
return TickRateModulation.URGENT;
ret = TickRateModulation.URGENT;
}
}
}
}
catch( final GridAccessException e )
{
return TickRateModulation.IDLE;
ret = TickRateModulation.IDLE;
}
// nothing left to do...
return TickRateModulation.SLEEP;
return ret;
}
@Override
@@ -366,23 +362,20 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
return this.upgrades.getInstalledUpgrades( u );
}
private IMEInventory getInv( final ItemStack is, final IStorageChannel chan )
private IMEInventory<?> getInv( final ItemStack is, final IStorageChannel<?> chan )
{
if( this.currentCell != is )
{
this.currentCell = is;
this.cachedFluid = AEApi.instance().registries().cell().getCellInventory( is, null,
AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) );
this.cachedItem = AEApi.instance().registries().cell().getCellInventory( is, null,
AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) );
this.cachedInventories = new IdentityHashMap<>();
for( IStorageChannel<? extends IAEStack<?>> c : AEApi.instance().storage().storageChannels() )
{
this.cachedInventories.put( c, AEApi.instance().registries().cell().getCellInventory( is, null, c ) );
}
}
if( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) == chan )
{
return this.cachedItem;
}
return this.cachedFluid;
return this.cachedInventories.get( chan );
}
private long transferContents( final IEnergySource energy, final IMEInventory src, final IMEInventory destination, long itemsToMove, final IStorageChannel chan )
@@ -397,6 +390,8 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
myList = src.getAvailableItems( src.getChannel().createList() );
}
itemsToMove *= chan.transferFactor();
boolean didStuff;
do
@@ -429,7 +424,7 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
if( extracted != null )
{
possible = extracted.getStackSize();
final IAEStack failed = Platform.poweredInsert( energy, destination, extracted, this.mySrc );
final IAEStack failed = chan.poweredInsert( energy, destination, extracted, this.mySrc );
if( failed != null )
{
@@ -451,24 +446,16 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
}
while( itemsToMove > 0 && didStuff );
return itemsToMove;
return itemsToMove / chan.transferFactor();
}
private boolean shouldMove( final IMEInventory<IAEItemStack> itemInv, final IMEInventory<IAEFluidStack> fluidInv )
private boolean shouldMove( final IMEInventory<?> inv )
{
final FullnessMode fm = (FullnessMode) this.manager.getSetting( Settings.FULLNESS_MODE );
if( itemInv != null && fluidInv != null )
if( inv != null )
{
return this.matches( fm, itemInv ) && this.matches( fm, fluidInv );
}
else if( itemInv != null )
{
return this.matches( fm, itemInv );
}
else if( fluidInv != null )
{
return this.matches( fm, fluidInv );
return this.matches( fm, inv );
}
return true;
+3 -3
View File
@@ -1174,13 +1174,13 @@ public class Platform
stored -= possible.getStackSize();
}
final double availablePower = energy.extractAEPower( stored, Actionable.SIMULATE, PowerMultiplier.CONFIG );
final int energyFactor = Math.min( 1, input.getChannel().transferFactor() );
final double availablePower = energy.extractAEPower( stored / energyFactor, Actionable.SIMULATE, PowerMultiplier.CONFIG );
final long itemToAdd = Math.min( (long) ( availablePower + 0.9 ), stored );
if( itemToAdd > 0 )
{
energy.extractAEPower( stored, Actionable.MODULATE, PowerMultiplier.CONFIG );
energy.extractAEPower( stored / energyFactor, Actionable.MODULATE, PowerMultiplier.CONFIG );
if( itemToAdd < input.getStackSize() )
{
@@ -21,7 +21,6 @@ package appeng.util.helpers;
import javax.annotation.Nonnull;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTBase;
@@ -95,55 +94,23 @@ public class ItemComparisonHelper
return false;
}
/*
* if ( a.itemID != 0 && b.itemID != 0 && a.isItemStackDamageable() && ! a.getHasSubtypes() && a.itemID ==
* b.itemID ) { return (a.getItemDamage() > 0) == (b.getItemDamage() > 0); }
*/
// test damageable items..
if( a.getItem() != Items.AIR && b.getItem() != Items.AIR && a.getItem().isDamageable() && a.getItem() == b.getItem() )
if( a.getItem() == b.getItem() && a.getItem().isDamageable() )
{
try
if( mode == FuzzyMode.IGNORE_ALL )
{
if( mode == FuzzyMode.IGNORE_ALL )
{
return true;
}
else if( mode == FuzzyMode.PERCENT_99 )
{
final Item ai = a.getItem();
final Item bi = b.getItem();
return ( ai.getDurabilityForDisplay( a ) > 1 ) == ( bi.getDurabilityForDisplay( b ) > 1 );
}
else
{
final Item ai = a.getItem();
final Item bi = b.getItem();
final float percentDamagedOfA = 1.0f - (float) ai.getDurabilityForDisplay( a );
final float percentDamagedOfB = 1.0f - (float) bi.getDurabilityForDisplay( b );
return ( percentDamagedOfA > mode.breakPoint ) == ( percentDamagedOfB > mode.breakPoint );
}
return true;
}
catch( final Throwable e )
else if( mode == FuzzyMode.PERCENT_99 )
{
if( mode == FuzzyMode.IGNORE_ALL )
{
return true;
}
else if( mode == FuzzyMode.PERCENT_99 )
{
return ( a.getItemDamage() > 1 ) == ( b.getItemDamage() > 1 );
}
else
{
final float percentDamagedOfA = (float) a.getItemDamage() / (float) a.getMaxDamage();
final float percentDamagedOfB = (float) b.getItemDamage() / (float) b.getMaxDamage();
return ( a.getItemDamage() > 1 ) == ( b.getItemDamage() > 1 );
}
else
{
final float percentDamagedOfA = (float) a.getItemDamage() / (float) a.getMaxDamage();
final float percentDamagedOfB = (float) b.getItemDamage() / (float) b.getMaxDamage();
return ( percentDamagedOfA > mode.breakPoint ) == ( percentDamagedOfB > mode.breakPoint );
}
return ( percentDamagedOfA > mode.breakPoint ) == ( percentDamagedOfB > mode.breakPoint );
}
}
@@ -155,17 +122,6 @@ public class ItemComparisonHelper
return true;
}
/*
* // test ore dictionary.. int OreID = getOreID( a ); if ( OreID != -1 ) return OreID == getOreID( b );
* if ( Mode != FuzzyMode.IGNORE_ALL ) { if ( a.hasTagCompound() && !isShared( a.getTagCompound() ) ) { a =
* Platform.getSharedItemStack( AEItemStack.create( a ) ); }
* if ( b.hasTagCompound() && !isShared( b.getTagCompound() ) ) { b = Platform.getSharedItemStack(
* AEItemStack.create( b ) ); }
* // test regular items with damage values and what not... if ( isShared( a.getTagCompound() ) && isShared(
* b.getTagCompound() ) && a.itemID == b.itemID ) { return ((AppEngSharedNBTTagCompound)
* a.getTagCompound()).compareFuzzyWithRegistry( (AppEngSharedNBTTagCompound) b.getTagCompound() ); } }
*/
return a.isItemEqual( b );
}
@@ -180,10 +136,25 @@ public class ItemComparisonHelper
{
return true;
}
final boolean isLeftEmpty = left == null || left.hasNoTags();
final boolean isRightEmpty = right == null || right.hasNoTags();
if( isLeftEmpty && isRightEmpty )
{
return true;
}
if( isLeftEmpty != isRightEmpty )
{
return false;
}
if( left != null )
{
return left.equals( right );
}
return false;
}
}
+42 -109
View File
@@ -167,126 +167,30 @@ public final class AEItemStack extends AEStack<IAEItemStack> implements IAEItemS
{
if( st instanceof IAEItemStack )
{
final IAEItemStack o = (IAEItemStack) st;
final IAEItemStack other = (IAEItemStack) st;
if( this.sameOre( o ) )
if( OreHelper.INSTANCE.sameOre( this, other ) )
{
return true;
}
if( o.getItem() == this.getItem() )
{
if( this.getDefinition().getItem().isDamageable() )
{
final ItemStack a = this.getDefinition();
final ItemStack b = o.getDefinition();
final ItemStack itemStack = this.getDefinition();
final ItemStack otherStack = other.getDefinition();
try
{
if( mode == FuzzyMode.IGNORE_ALL )
{
return true;
}
else if( mode == FuzzyMode.PERCENT_99 )
{
final Item ai = a.getItem();
final Item bi = b.getItem();
return ( ai.getDurabilityForDisplay( a ) < 0.001f ) == ( bi.getDurabilityForDisplay( b ) < 0.001f );
}
else
{
final Item ai = a.getItem();
final Item bi = b.getItem();
final float percentDamageOfA = 1.0f - (float) ai.getDurabilityForDisplay( a );
final float percentDamageOfB = 1.0f - (float) bi.getDurabilityForDisplay( b );
return ( percentDamageOfA > mode.breakPoint ) == ( percentDamageOfB > mode.breakPoint );
}
}
catch( final Throwable e )
{
if( mode == FuzzyMode.IGNORE_ALL )
{
return true;
}
else if( mode == FuzzyMode.PERCENT_99 )
{
return ( a.getItemDamage() > 1 ) == ( b.getItemDamage() > 1 );
}
else
{
final float percentDamageOfA = (float) a.getItemDamage() / (float) a.getMaxDamage();
final float percentDamageOfB = (float) b.getItemDamage() / (float) b.getMaxDamage();
return ( percentDamageOfA > mode.breakPoint ) == ( percentDamageOfB > mode.breakPoint );
}
}
}
return this.getItemDamage() == o.getItemDamage();
}
return this.fuzzyItemStackComparison( itemStack, otherStack, mode );
}
if( st instanceof ItemStack )
{
final ItemStack o = (ItemStack) st;
final ItemStack otherStack = (ItemStack) st;
OreHelper.INSTANCE.sameOre( this, o );
if( o.getItem() == this.getItem() )
if( OreHelper.INSTANCE.sameOre( this, otherStack ) )
{
if( this.getDefinition().getItem().isDamageable() )
{
final ItemStack a = this.getDefinition();
try
{
if( mode == FuzzyMode.IGNORE_ALL )
{
return true;
}
else if( mode == FuzzyMode.PERCENT_99 )
{
final Item ai = a.getItem();
final Item bi = o.getItem();
return ( ai.getDurabilityForDisplay( a ) < 0.001f ) == ( bi.getDurabilityForDisplay( o ) < 0.001f );
}
else
{
final Item ai = a.getItem();
final Item bi = o.getItem();
final float percentDamageOfA = 1.0f - (float) ai.getDurabilityForDisplay( a );
final float percentDamageOfB = 1.0f - (float) bi.getDurabilityForDisplay( o );
return ( percentDamageOfA > mode.breakPoint ) == ( percentDamageOfB > mode.breakPoint );
}
}
catch( final Throwable e )
{
if( mode == FuzzyMode.IGNORE_ALL )
{
return true;
}
else if( mode == FuzzyMode.PERCENT_99 )
{
return ( a.getItemDamage() > 1 ) == ( o.getItemDamage() > 1 );
}
else
{
final float percentDamageOfA = (float) a.getItemDamage() / (float) a.getMaxDamage();
final float percentDamageOfB = (float) o.getItemDamage() / (float) o.getMaxDamage();
return ( percentDamageOfA > mode.breakPoint ) == ( percentDamageOfB > mode.breakPoint );
}
}
}
return this.getItemDamage() == o.getItemDamage();
return true;
}
final ItemStack itemStack = this.getDefinition();
return this.fuzzyItemStackComparison( itemStack, otherStack, mode );
}
return false;
@@ -390,7 +294,7 @@ public final class AEItemStack extends AEStack<IAEItemStack> implements IAEItemS
@Override
public String toString()
{
return this.getDefinition().toString();
return this.getStackSize() + "x" + this.getDefinition().getItem().getUnlocalizedName() + "@" + this.getDefinition().getItemDamage();
}
@SideOnly( Side.CLIENT )
@@ -443,7 +347,7 @@ public final class AEItemStack extends AEStack<IAEItemStack> implements IAEItemS
@Override
public ItemStack asItemStackRepresentation()
{
return getDefinition().copy();
return this.getDefinition().copy();
}
@Override
@@ -457,4 +361,33 @@ public final class AEItemStack extends AEStack<IAEItemStack> implements IAEItemS
return this.sharedStack;
}
private boolean fuzzyItemStackComparison( ItemStack a, ItemStack b, FuzzyMode mode )
{
if( a.getItem() == b.getItem() )
{
if( a.getItem().isDamageable() )
{
if( mode == FuzzyMode.IGNORE_ALL )
{
return true;
}
else if( mode == FuzzyMode.PERCENT_99 )
{
return ( a.getItemDamage() > 1 ) == ( b.getItemDamage() > 1 );
}
else
{
final float percentDamageOfA = (float) a.getItemDamage() / (float) a.getMaxDamage();
final float percentDamageOfB = (float) b.getItemDamage() / (float) b.getMaxDamage();
return ( percentDamageOfA > mode.breakPoint ) == ( percentDamageOfB > mode.breakPoint );
}
}
return a.getMetadata() == b.getMetadata();
}
return false;
}
}
@@ -164,7 +164,7 @@ final class AESharedItemStack implements Comparable<AESharedItemStack>
}
else
{
newDef.setItemDamage( 0 );
newDef.setItemDamage( 1 );
}
}
else
@@ -0,0 +1,7 @@
{
"variants": {
"normal": {
"model": "appliedenergistics2:debug/energy_gen"
}
}
}
@@ -42,20 +42,20 @@ tile.appliedenergistics2.sky_stone_small_brick.name=Малый кирпич не
tile.appliedenergistics2.sky_stone_chest.name=Сундук из небесного камня
tile.appliedenergistics2.smooth_sky_stone_chest.name=Сундук из блока небесного камня
tile.appliedenergistics2.sky_compass.name=Метеоритный компас
tile.appliedenergistics2.crafting_monitor.name=Монитор создания
tile.appliedenergistics2.crafting_storage_1k.name=1К хранилище создания
tile.appliedenergistics2.crafting_storage_4k.name=4К хранилище создания
tile.appliedenergistics2.crafting_storage_16k.name=16К хранилище создания
tile.appliedenergistics2.crafting_storage_64k.name=64К хранилище создания
tile.appliedenergistics2.crafting_accelerator.name=Блок обработки создания
tile.appliedenergistics2.crafting_unit.name=Блок создания
tile.appliedenergistics2.crafting_monitor.name=Монитор крафта
tile.appliedenergistics2.crafting_storage_1k.name=1К хранилище крафта
tile.appliedenergistics2.crafting_storage_4k.name=4К хранилище крафта
tile.appliedenergistics2.crafting_storage_16k.name=16К хранилище крафта
tile.appliedenergistics2.crafting_storage_64k.name=64К хранилище крафта
tile.appliedenergistics2.crafting_accelerator.name=Блок обработки крафта
tile.appliedenergistics2.crafting_unit.name=Блок крафта
tile.appliedenergistics2.molecular_assembler.name=Молекулярный сборщик
// Stairs
tile.appliedenergistics2.fluix_stairs.name=Изменчивые ступеньки
tile.appliedenergistics2.quartz_stairs.name=Ступеньки из резного истинного кварца
tile.appliedenergistics2.chiseled_quartz_stairs.name=Ступеньки из колонны истинного кварца
tile.appliedenergistics2.quartz_pillar_stairs.name=Ступеньки из истинного кварца
tile.appliedenergistics2.quartz_stairs.name=Ступеньки из истинного кварца
tile.appliedenergistics2.chiseled_quartz_stairs.name=Ступеньки из резного истинного кварца
tile.appliedenergistics2.quartz_pillar_stairs.name=Ступеньки из колонны истинного кварца
tile.appliedenergistics2.smooth_sky_stone_stairs.name=Ступеньки из блока небесного камня
tile.appliedenergistics2.sky_stone_brick_stairs.name=Ступеньки из кирпича небесного камня
tile.appliedenergistics2.sky_stone_small_brick_stairs.name=Ступеньки из малого кирпича небесного камня
@@ -73,14 +73,14 @@ tile.appliedenergistics2.sky_stone_slab.name=Плита из небесного
// Chat Messages
chat.appliedenergistics2.ChestCannotReadStorageCell=МЭ сундук не может прочитать ячейку хранения.
chat.appliedenergistics2.SettingCleared=Настройки сброшены.
chat.appliedenergistics2.SettingCleared=Карта памяти очищена.
chat.appliedenergistics2.OutOfRange=Беспроводная сеть вне зоны действия.
chat.appliedenergistics2.InvalidMachine=Неподходящий механизм.
chat.appliedenergistics2.LoadedSettings=Настройки успешно загружены.
chat.appliedenergistics2.DeviceNotPowered=Устройству недостаточно энергии.
chat.appliedenergistics2.DeviceNotWirelessTerminal=Устройство не беспроводной терминал.
chat.appliedenergistics2.DeviceNotWirelessTerminal=Это не беспроводной терминал.
chat.appliedenergistics2.DeviceNotLinked=Устройство не соединено.
chat.appliedenergistics2.StationCanNotBeLocated=Станция не может быть найдена.
chat.appliedenergistics2.StationCanNotBeLocated=Станция не найдена.
chat.appliedenergistics2.MachineNotPowered=Устройство без питания.
chat.appliedenergistics2.CommunicationError=Ошибка связи с сетью.
chat.appliedenergistics2.SavedSettings=Настройки успешно сохранены.
@@ -93,7 +93,7 @@ itemGroup.appliedenergistics2=Applied Energistics 2
itemGroup.appliedenergistics2.facades=Applied Energistics 2: Фасады
// GUI
gui.appliedenergistics2.CraftingTerminal=Терминал создания
gui.appliedenergistics2.CraftingTerminal=Терминал крафта
gui.appliedenergistics2.METunnel=МЭ
gui.appliedenergistics2.ItemTunnel=Предмет
gui.appliedenergistics2.FluidTunnel=Жидкость
@@ -106,17 +106,19 @@ gui.appliedenergistics2.PressureTunnel=Давление
gui.appliedenergistics2.security.extract.name=Забирать
gui.appliedenergistics2.security.inject.name=Класть
gui.appliedenergistics2.security.craft.name=Создавать
gui.appliedenergistics2.security.craft.name=Крафтить
gui.appliedenergistics2.security.build.name=Строить
gui.appliedenergistics2.security.security.name=Безопасность
gui.appliedenergistics2.security.extract.tip=Пользователю разрешено забирать предметы из хранилища.
gui.appliedenergistics2.security.inject.tip=Пользователю разрешено класть предметы в хранилище.
gui.appliedenergistics2.security.craft.tip=Пользователь может инициировать новое создание.
gui.appliedenergistics2.security.craft.tip=Пользователь может инициировать новый крафт.
gui.appliedenergistics2.security.build.tip=Пользователь может изменять физическую конфигурацию сети и менять настройки.
gui.appliedenergistics2.security.security.tip=Пользователь может работать с терминалом безопасности и настраивать его в сети.
gui.appliedenergistics2.Efficiency=Эффективность
gui.appliedenergistics2.SCSSize=SCS размер
gui.appliedenergistics2.SCSInvalid=SCS неправльный
gui.appliedenergistics2.RequiredPower=Требуется энергии
gui.appliedenergistics2.StoredPower=Накопленная энергия
gui.appliedenergistics2.MaxPower=Макс. энергия
@@ -168,81 +170,82 @@ gui.appliedenergistics2.Blank=Чистый
gui.appliedenergistics2.Unlinked=Не связанный
gui.appliedenergistics2.Linked=Связанный
gui.appliedenergistics2.StoredSize=Хранящиеся количество
gui.appliedenergistics2.CellId=id ячейки
gui.appliedenergistics2.SkyChest=Сундук из небесного камня
gui.appliedenergistics2.PatternTerminal=Терминал шаблонов
gui.appliedenergistics2.CraftingPattern=Создание шаблонов
gui.appliedenergistics2.CraftingPattern=Шаблон крафта
gui.appliedenergistics2.MolecularAssembler=Молекулярный сборщик
gui.appliedenergistics2.ProcessingPattern=Обработка шаблона
gui.appliedenergistics2.Crafts=Создаёт
gui.appliedenergistics2.And=и
gui.appliedenergistics2.Creates=Делает
gui.appliedenergistics2.With=из
gui.appliedenergistics2.Substitute=Использовать замену:
gui.appliedenergistics2.Substitute=Использовать замещение:
gui.appliedenergistics2.Yes=Да
gui.appliedenergistics2.No=Нет
gui.appliedenergistics2.InWorldCrafting=AE2 в мировом создании
gui.appliedenergistics2.inWorldFluix=Бросьте 1 заряженный истинный кварц + 1 кварц Нижнего мира + пыль красного камня в воду рядом друг с другом и немного подождите, чтобы получить 2 изменчивых кристалла.
gui.appliedenergistics2.inWorldPurification=Бросьте любое семя кристалла, сделанное из пыли кристалла и песок в лужу воды,; чтобы ускорить процесс добавьте ускорители роста кристаллов.
gui.appliedenergistics2.inWorldPurificationNether=Бросьте семя кварца Нижнего мира, которое делается из пыли кварца Нижнего мира, вместе с песком в лужу; чтобы ускорить процесс добавьте ускорители роста кристаллов.
gui.appliedenergistics2.inWorldPurificationFluix=Бросьте изменчивое семя, сделанное из изменчивой пыли, и песок в лужу; чтобы ускорить процесс добавьте ускорители роста кристаллов.
gui.appliedenergistics2.inWorldSingularity=Чтобы сделать, бросьте 1 сингулярность и 1 пыль Края и сделайте взрыв рядом с предметами.
gui.appliedenergistics2.ChargedQuartz=Заряженный истинный кварц создаётся с помощью установки не заряженного истинного кварца в зарядник, который подключен к питанию.
gui.appliedenergistics2.ChargedQuartzFind=Заряженный истинный кварц может быть найден в мире реже, чем истинный кварц, он выглядит как обычный истинный кварц, за исключением того, что он сверкает.
gui.appliedenergistics2.InWorldCrafting=AE2 в Мировом Крафте
gui.appliedenergistics2.inWorldFluix=Бросьте 1 заряженный истинный кварц + 1 кварц Нижнего мира + 1 пыль красного камня в воду и немного подождите, чтобы получить 2 изменчивых кристалла.
gui.appliedenergistics2.inWorldPurificationCertus=Бросьте любое семя кристалла, сделанное из пыли кристалла и песка в воду. Чтобы ускорить процесс, добавьте ускорители роста кристаллов.
gui.appliedenergistics2.inWorldPurificationNether=Бросьте семя кварца Нижнего мира, которое делается из пыли кварца Нижнего мира и песка в воду. Чтобы ускорить процесс, добавьте ускорители роста кристаллов.
gui.appliedenergistics2.inWorldPurificationFluix=Бросьте изменчивое семя, сделанное из изменчивой пыли и песка в воду. Чтобы ускорить процесс, добавьте ускорители роста кристаллов.
gui.appliedenergistics2.inWorldSingularity=Чтобы сделать запутанную сингулярность, бросьте 1 сингулярность и 1 пыль Края, а затем взорвите рядом с предметами что-нибудь.
gui.appliedenergistics2.ChargedQuartz=Заряженный истинный кварц создаётся при установке обычного истинного кварца в зарядник, подключенный к питанию.
gui.appliedenergistics2.ChargedQuartzFind=Заряженный истинный кварц встречается мире реже, чем истинный кварц. Выглядит как обычный истинный кварц, за исключением того, что он сверкает.
gui.appliedenergistics2.NoSecondOutput=Нет вторичного выхода
gui.appliedenergistics2.OfSecondOutput=Шанс вторичного выхода: %1$d%%
gui.appliedenergistics2.MultipleOutputs=%1$d%% вторичного, %2$d%% третичного выхода.
gui.appliedenergistics2.SelectAmount=Выбрать количество
gui.appliedenergistics2.CopyMode=Режим копирования
gui.appliedenergistics2.CopyModeDesc=Контролирует очищено ли содержимое панели конфигурации, когда ячейка была убрана.
gui.appliedenergistics2.CopyModeDesc=Контролирует, очищено ли содержимое панели конфигурации, если ячейка была убрана.
gui.appliedenergistics2.Next=Далее
gui.appliedenergistics2.Lumen=Люмен
gui.appliedenergistics2.Empty=Пустой
gui.appliedenergistics2.Stored=Хранится
gui.appliedenergistics2.Cancel=Отмена
gui.appliedenergistics2.ETAFormat=HH:mm:ss
gui.appliedenergistics2.Crafting=Создание
gui.appliedenergistics2.Crafting=Крафт
gui.appliedenergistics2.Scheduled=Запланировано
gui.appliedenergistics2.CraftingStatus=Статус создания
gui.appliedenergistics2.CraftingStatus=Статус крафта
gui.appliedenergistics2.FromStorage=Доступно
gui.appliedenergistics2.ToCraft=Необходимо создать
gui.appliedenergistics2.CraftingPlan=План создания
gui.appliedenergistics2.Automatic=Любой
gui.appliedenergistics2.ToCraft=Необходимо скрафтить
gui.appliedenergistics2.CraftingPlan=План крафта
gui.appliedenergistics2.Automatic=Автоматически
gui.appliedenergistics2.Start=Старт
gui.appliedenergistics2.Missing=Не хватает
gui.appliedenergistics2.Bytes=Хранилище
gui.appliedenergistics2.Simulation=Моделирование
gui.appliedenergistics2.CoProcessors=Сопроцессоры
gui.appliedenergistics2.CraftingCPU=ЦП создания
gui.appliedenergistics2.NoCraftingCPUs=Нет доступных ЦП создания
gui.appliedenergistics2.CalculatingWait=Вычисление, пожалуйста подождите...
gui.appliedenergistics2.CraftingCPU=ЦП крафта
gui.appliedenergistics2.NoCraftingCPUs=Нет доступных ЦП крафта
gui.appliedenergistics2.CalculatingWait=Вычисление. Пожалуйста, подождите...
gui.appliedenergistics2.Clean=Очистка
gui.appliedenergistics2.InvalidPattern=Неверный шаблон
gui.appliedenergistics2.InvalidPattern=Неправильный шаблон
gui.appliedenergistics2.Range=Дальность
gui.appliedenergistics2.TransparentFacades=Прозрачные фасады
gui.appliedenergistics2.TransparentFacadesHint=Контролирует видимость фасадов, когда сетевой инструмент находится на панели инструментов.
gui.appliedenergistics2.CPUs=ЦП
gui.appliedenergistics2.NoCraftingJobs=Нет активных заданий создания
gui.appliedenergistics2.NoCraftingJobs=Нет активных задач крафта
gui.appliedenergistics2.FacadeCrafting=Создание фасадов
gui.appliedenergistics2.inWorldCraftingPresses=С помощью метеоритного компаса можно отыскать метеориты, внутри которых можно найти прессы для высекателя
gui.appliedenergistics2.Included=Принимать,
gui.appliedenergistics2.Excluded=Не принимать,
gui.appliedenergistics2.inWorldCraftingPresses=С помощью метеоритного компаса можно отыскать метеориты, внутри которых можно найти прессы для высекателя.
gui.appliedenergistics2.Included=Принимать
gui.appliedenergistics2.Excluded=Не принимать
gui.appliedenergistics2.Partitioned=Размечена
gui.appliedenergistics2.Precise=точная
gui.appliedenergistics2.Fuzzy=нечёткая
gui.appliedenergistics2.Precise=Точная
gui.appliedenergistics2.Fuzzy=Неточная
gui.appliedenergistics2.SmallFontCraft=Сделать
gui.appliedenergistics2.LargeFontCraft=+
gui.appliedenergistics2.Nothing=Ничего
// GUI Tooltips
gui.tooltips.appliedenergistics2.Stash=Хранить предметы
gui.tooltips.appliedenergistics2.StashDesc=Возвращает предметы на сетку создания, в сетевое хранилище.
gui.tooltips.appliedenergistics2.StashDesc=Возвращает предметы на сетку крафта, в сетевое хранилище.
gui.tooltips.appliedenergistics2.Substitutions=Ore-Dict замещения
gui.tooltips.appliedenergistics2.SubstitutionsDescEnabled=Позволяет заменить вводимые компоненты.
gui.tooltips.appliedenergistics2.SubstitutionsDescDisabled=Запрещает заменить вводимые компоненты.
gui.tooltips.appliedenergistics2.SubstitutionsDescEnabled=Позволяет замещать вводимые компоненты.
gui.tooltips.appliedenergistics2.SubstitutionsDescDisabled=Запрещает замещать вводимые компоненты.
gui.tooltips.appliedenergistics2.SubstitutionsOn=Замещения включены
gui.tooltips.appliedenergistics2.SubstitutionsOff=Замещения выключены
gui.tooltips.appliedenergistics2.Encode=Закодировать шаблон
gui.tooltips.appliedenergistics2.EncodeDescription=Напишите введённый шаблон к текущему закодированному шаблону, или к доступному чистому шаблону.
gui.tooltips.appliedenergistics2.EncodeDescription=Запишите введённый шаблон на текущий закодированный шаблон, или на доступный чистый шаблон.
gui.tooltips.appliedenergistics2.FuzzyMode=Нечёткое сравнение
gui.tooltips.appliedenergistics2.FZPercent_25=Разделять урон с 25%
gui.tooltips.appliedenergistics2.FZPercent_50=Разделять урон с 50%
@@ -262,14 +265,14 @@ gui.tooltips.appliedenergistics2.RedstoneMode=Режим красного кам
gui.tooltips.appliedenergistics2.OperationMode=Режим работы
gui.tooltips.appliedenergistics2.NumberOfItems=Количество предметов
gui.tooltips.appliedenergistics2.ItemName=Имя предмета
gui.tooltips.appliedenergistics2.PowerUnits=Энергетические единицы
gui.tooltips.appliedenergistics2.PowerUnits=Единицы энергии
gui.tooltips.appliedenergistics2.IOMode=Режим ввода\вывода
gui.tooltips.appliedenergistics2.CondenserOutput=МЭ конденсатор - Выход
gui.tooltips.appliedenergistics2.PartitionStorage=Раздел хранения
gui.tooltips.appliedenergistics2.Clear=Очистить
gui.tooltips.appliedenergistics2.TrashController=Удаление по нажатию Shift/Пробел.
gui.tooltips.appliedenergistics2.InterfaceBlockingMode=Блокирующий режим
gui.tooltips.appliedenergistics2.InterfaceCraftingMode=Режим создания
gui.tooltips.appliedenergistics2.InterfaceCraftingMode=Режим крафта
gui.tooltips.appliedenergistics2.Trash=Уничтожить предметы
gui.tooltips.appliedenergistics2.MatterBalls=Конденсировать в шары материи\n%s за предмет
gui.tooltips.appliedenergistics2.Singularity=Конденсировать в сингулярности\n%s за предмет
@@ -286,6 +289,10 @@ gui.tooltips.appliedenergistics2.SearchMode_Auto=Автоматический п
gui.tooltips.appliedenergistics2.SearchMode_Standard=Обычный поиск
gui.tooltips.appliedenergistics2.SearchMode_JEIAuto=Автоматический JEI-синхронизированный поиск
gui.tooltips.appliedenergistics2.SearchMode_JEIStandard=Стандартный JEI-синхронизированный поиск
gui.tooltips.appliedenergistics2.SearchMode_AutoKeep=Авто поиск
gui.tooltips.appliedenergistics2.SearchMode_StandardKeep=Стандартный поиск
gui.tooltips.appliedenergistics2.SearchMode_JEIAutoKeep=JEI синхронизированный авто поиск
gui.tooltips.appliedenergistics2.SearchMode_JEIStandardKeep=JEI синхронизированный стандартный поиск
gui.tooltips.appliedenergistics2.SearchMode=Режим поля поиска
gui.tooltips.appliedenergistics2.PartitionStorageHint=Настраивает раздел на основе текущих хранящихся предметах.
gui.tooltips.appliedenergistics2.ClearSettings=Очистить настройки
@@ -295,9 +302,9 @@ gui.tooltips.appliedenergistics2.MoveWhenWorkIsDone=Сдвигать к выхо
gui.tooltips.appliedenergistics2.MoveWhenFull=Сдвигать к выходу, когда полный.
gui.tooltips.appliedenergistics2.Disabled=Отключено
gui.tooltips.appliedenergistics2.Enable=Включено
gui.tooltips.appliedenergistics2.Blocking=Не проталкивать предметы создания, если инвентарь содержит предметы.
gui.tooltips.appliedenergistics2.Blocking=Не проталкивать предметы крафта, если инвентарь содержит предметы.
gui.tooltips.appliedenergistics2.NonBlocking=Игнорировать содержимое целевого инвентаря.
gui.tooltips.appliedenergistics2.Craft=Режим создания
gui.tooltips.appliedenergistics2.Craft=Режим крафта
gui.tooltips.appliedenergistics2.CraftOnly=Не использовать хранящиеся предметы, только создавать предметы во время экспорта.
gui.tooltips.appliedenergistics2.CraftEither=Использовать хранящиеся предметы или создавать предметы во время экспорта.
gui.tooltips.appliedenergistics2.LevelType=Тип уровня
@@ -310,9 +317,9 @@ gui.tooltips.appliedenergistics2.TerminalStyle_Full=Полноэкранный
gui.tooltips.appliedenergistics2.TerminalStyle_Tall=Высокий отцентрированный терминал
gui.tooltips.appliedenergistics2.TerminalStyle_Small=Маленький отцентрированный терминал
gui.tooltips.appliedenergistics2.DoesntDespawn=Этот предмет не будет исчезать.
gui.tooltips.appliedenergistics2.EmitterMode=Режим излучатель создания
gui.tooltips.appliedenergistics2.CraftViaRedstone=Излучать сигнал красного камня для создания вещи.
gui.tooltips.appliedenergistics2.EmitWhenCrafting=Излучать сигнал красного камня при создании вещи.
gui.tooltips.appliedenergistics2.EmitterMode=Режим излучателя крафта
gui.tooltips.appliedenergistics2.CraftViaRedstone=Излучать сигнал красного камня для крафта вещи.
gui.tooltips.appliedenergistics2.EmitWhenCrafting=Излучать сигнал красного камня при крафте вещи.
gui.tooltips.appliedenergistics2.ReportInaccessibleItems=Сообщать о недоступных вещах
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsYes=Да: Предметы, которые не могут быть извлечены, будут видны.
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsNo=Нет: Только извлекаемые предметы будут видны.
@@ -321,8 +328,11 @@ gui.tooltips.appliedenergistics2.BlockPlacementYes=Блоки будут раз
gui.tooltips.appliedenergistics2.BlockPlacementNo=Блоки будут выпадать в виде предметов.
gui.tooltips.appliedenergistics2.SchedulingMode=Режим планирования
gui.tooltips.appliedenergistics2.SchedulingModeDefault=Экспорт первого предмета, пока сеть не пуста, затем других.
gui.tooltips.appliedenergistics2.SchedulingModeRoundRobin=Экспорт с использованием кругового режима.
gui.tooltips.appliedenergistics2.SchedulingModeRoundRobin=Экспорт с использованием повторяющегося по кругу режима.
gui.tooltips.appliedenergistics2.SchedulingModeRandom=Экспорт предметов в случайном порядке.
gui.tooltips.appliedenergistics2.FilterMode=Режим фильтрованого поиска
gui.tooltips.appliedenergistics2.FilterModeKeep=Восстановить предыдущий фильтр поиска.
gui.tooltips.appliedenergistics2.FilterModeClear=Очищать при каждом открытии.
gui.tooltips.appliedenergistics2.ItemsStored=Хранящиеся предметы: %s
gui.tooltips.appliedenergistics2.ItemsRequestable=Запрашиваемые предметы: %s
@@ -351,7 +361,7 @@ gui.appliedenergistics2.Black=Чёрный
gui.appliedenergistics2.Fluix=Изменчивый
// Waila
waila.appliedenergistics2.Crafting=Создание
waila.appliedenergistics2.Crafting=Крафт
waila.appliedenergistics2.DeviceOnline=Устройство включено
waila.appliedenergistics2.DeviceOffline=Устройство выключено
waila.appliedenergistics2.DeviceMissingChannel=У устройства отсутствует канал
@@ -365,6 +375,22 @@ waila.appliedenergistics2.P2PInputOneOutput=Связанный (Сторона
waila.appliedenergistics2.P2PInputManyOutputs=Связанный (Сторона ввода) - %d выводов
waila.appliedenergistics2.P2POutput=Связанный (Сторона вывода)
// TheOneProbe
theoneprobe.appliedenergistics2.crafting=Создается: %1$s
theoneprobe.appliedenergistics2.device_online=Устройство включено
theoneprobe.appliedenergistics2.device_offline=Устройство выключено
theoneprobe.appliedenergistics2.device_missing_channel=У устройства нет канала.
theoneprobe.appliedenergistics2.locked=Заблокировано
theoneprobe.appliedenergistics2.unlocked=Разблокировано
theoneprobe.appliedenergistics2.showing=Показывает
theoneprobe.appliedenergistics2.contains=Содержит
theoneprobe.appliedenergistics2.channels=Каналы: %1$d из %2$d
theoneprobe.appliedenergistics2.p2p_unlinked=Не связанный
theoneprobe.appliedenergistics2.p2p_input_one_output=Связанный (сторона ввода)
theoneprobe.appliedenergistics2.p2p_input_many_outputs=Связанный (сторона ввода) - %d выводов
theoneprobe.appliedenergistics2.p2p_output=Связанный (Сторона вывода)
theoneprobe.appliedenergistics2.stored_energy=%1$d / %2$d
// Items
item.appliedenergistics2.storage_cell_1k.name=1К МЭ ячейка хранения
item.appliedenergistics2.storage_cell_4k.name=4К МЭ ячейка хранения
@@ -432,18 +458,19 @@ item.appliedenergistics2.material.silicon_press.name=Кремниевый пре
item.appliedenergistics2.material.silicon_print.name=Отпечатанный кремний
item.appliedenergistics2.material.name_press.name=Именующий пресс для высекателя
item.appliedenergistics2.material.sky_dust.name=Пыль небесного камня
item.appliedenergistics2.material.card_crafting.name=Карта создания
item.appliedenergistics2.material.card_crafting.name=Карта крафта
item.appliedenergistics2.multi_part.annihilation_plane.name=МЭ плоскость истребления
item.appliedenergistics2.multi_part.identity_annihilation_plane.name=МЭ личная плоскость истребления
item.appliedenergistics2.multi_part.identity_annihilation_plane.name=МЭ id плоскость истребления
item.appliedenergistics2.multi_part.cable_anchor.name=Кабельный якорь
item.appliedenergistics2.multi_part.cable_covered.name=МЭ закрытый кабель
item.appliedenergistics2.multi_part.cable_glass.name=МЭ стеклянный кабель
item.appliedenergistics2.multi_part.cable_smart.name=МЭ умный кабель
item.appliedenergistics2.multi_part.cable_dense_smart.name=МЭ плотный кабель
item.appliedenergistics2.multi_part.cable_dense_covered.name=МЭ плотный закрытый кабель
item.appliedenergistics2.multi_part.cable_dense_smart.name=МЭ плотный умный кабель
item.appliedenergistics2.multi_part.storage_monitor.name=МЭ монитор хранения
item.appliedenergistics2.multi_part.conversion_monitor.name=МЭ монитор преобразования
item.appliedenergistics2.multi_part.crafting_terminal.name=МЭ терминал создания
item.appliedenergistics2.multi_part.crafting_terminal.name=МЭ терминал крафта
item.appliedenergistics2.multi_part.semi_dark_monitor.name=Осветительная панель
item.appliedenergistics2.multi_part.monitor.name=Яркая осветительная панель
item.appliedenergistics2.multi_part.dark_monitor.name=Тёмная осветительная панель
@@ -459,7 +486,7 @@ item.appliedenergistics2.multi_part.storage_bus.name=МЭ шина хранен
item.appliedenergistics2.multi_part.terminal.name=МЭ терминал
item.appliedenergistics2.multi_part.inverted_toggle_bus.name=МЭ инвертированная шина переключения
item.appliedenergistics2.multi_part.toggle_bus.name=МЭ шина переключения
item.appliedenergistics2.multi_part.crafting_monitor.name=МЭ монитор создания
item.appliedenergistics2.multi_part.crafting_monitor.name=МЭ монитор крафта
item.appliedenergistics2.multi_part.interface_terminal.name=МЭ терминал интерфейсов
item.appliedenergistics2.multi_part.invalid_type.name=Отключенный предмет
@@ -487,75 +514,77 @@ item.appliedenergistics2.paint_ball.name=Шар с краской
item.appliedenergistics2.portable_cell.name=Переносная ячейка
item.appliedenergistics2.network_tool.name=Сетевой инструмент
item.appliedenergistics2.charged_staff.name=Заряженный посох
item.appliedenergistics2.entropy_manipulator.name=Манипулятор энтропии
item.appliedenergistics2.entropy_manipulator.name=Манипулятор энтропией
item.appliedenergistics2.matter_cannon.name=Материальная пушка
item.appliedenergistics2.memory_card.name=Карта памяти
item.appliedenergistics2.color_applicator.name=Аппликатор цвета
item.appliedenergistics2.wireless_terminal.name=Беспроводной терминал
item.appliedenergistics2.biometric_card.name=Биометрическая карта
item.appliedenergistics2.debug_card.name=Разраб.отладочная карта
item.appliedenergistics2.debug_replicator_card.name=Разраб.карта-репликатор
item.appliedenergistics2.debug_card.name=Отладочная карта разработчика
item.appliedenergistics2.debug_replicator_card.name=Карта-репликатор разработчика
// Commands
commands.ae2.usage=Команды предоставляемые Applied Energistics 2 - используйте /ae2 list для списка и /ae2 help _____ для помощи с командой.
commands.ae2.permissions=Вы не имеете соответствующих прав для запуска этой команды.
commands.ae2.ChunkLogger=Переключает загрузку и разгрузку чанков в журнал сервера. ( Оператор )
commands.ae2.ChunkLoggerOn=Chunk Logging теперь включён
commands.ae2.ChunkLoggerOff=Chunk Logging теперь выключен
commands.ae2.Supporters=Отображает список жертвователей AE2
commands.ae2.ChunkLogger=Переключает загрузку и разгрузку чанков в журнал сервера. (OP)
commands.ae2.ChunkLoggerOn=Логирование чанков включено
commands.ae2.ChunkLoggerOff=Логирование чанков выключено
commands.ae2.Supporters=Отображает список поддержавших AE2
// Achievements
achievement.ae2.Compass=Охотник на метеориты
achievement.ae2.Compass.desc=Сделайте метеоритный компас
achievement.ae2.Presses=Неизвестная технология
achievement.ae2.Presses.desc=Найдите вычислительный пресс
achievement.ae2.SpatialIO=Пространственное координирование
achievement.ae2.SpatialIO.desc=Сделайте пространственный порт ввода\вывода
achievement.ae2.SpatialIOExplorer=Чтобы смело идти
achievement.ae2.SpatialIOExplorer.desc=Храните вещи в пространственной ячейки хранения
achievement.ae2.StorageCell=Лучше, чем сундуки
achievement.ae2.StorageCell.desc=Сделайте ячейку хранения
achievement.ae2.IOPort=Перемешка ячеек хранения
achievement.ae2.IOPort.desc=Сделайте порт ввода\вывода
achievement.ae2.CraftingTerminal=Большой верстак
achievement.ae2.CraftingTerminal.desc=Сделайте терминал создания
achievement.ae2.PatternTerminal=Маэстро создания
achievement.ae2.PatternTerminal.desc=Сделайте терминал шаблонов
achievement.ae2.ChargedQuartz=Шок
achievement.ae2.ChargedQuartz.desc=Найдите заряженный кварц
achievement.ae2.Fluix=Неестественные
achievement.ae2.Fluix.desc=Сделайте изменчивые кристаллы
achievement.ae2.Charger=Изменчивое производство
achievement.ae2.Charger.desc=Сделайте зарядник
achievement.ae2.CrystalGrowthAccelerator=Ускоритель - ещё мягко сказано
achievement.ae2.CrystalGrowthAccelerator.desc=Сделайте ускоритель роста кристаллов
achievement.ae2.GlassCable=Изменчивое энергетическое соединение
achievement.ae2.GlassCable.desc=Сделайте МЭ стеклянный кабель
achievement.ae2.Networking1=Сетевое подмастерье
achievement.ae2.Networking1.desc=Достигните 8 каналов, подключая устройства к сети.
achievement.ae2.Controller=Коммутатор сети
achievement.ae2.Controller.desc=Сделайте контроллер
achievement.ae2.Networking2=Сетевой инженер
achievement.ae2.Networking2.desc=Достигните 128 каналов, подключая устройства к сети.
achievement.ae2.Networking3=Сетевой администратор
achievement.ae2.Networking3.desc=Достигните 2048 каналов, подключая устройства к сети.
achievement.ae2.P2P=Сеть точка-точка
achievement.ae2.P2P.desc=Сделайте туннель точка-точка
achievement.ae2.Recursive=Рекурсивная сеть
achievement.ae2.Recursive.desc=Поставьте интерфейс на шину хранения.
achievement.ae2.CraftingCPU=Создание следующего поколения
achievement.ae2.CraftingCPU.desc=Сделайте блок создания
achievement.ae2.Facade=Сетевая эстетика
achievement.ae2.Facade.desc=Сделайте кабельный фасад
achievement.ae2.NetworkTool=Диагностика сети
achievement.ae2.NetworkTool.desc=Сделайте сетевой инструмент
achievement.ae2.PortableCell=Кочевник с хранилищем
achievement.ae2.PortableCell.desc=Сделайте переносную ячейку
achievement.ae2.StorageBus=Безграничный потенциал
achievement.ae2.StorageBus.desc=Сделайте шину хранения
achievement.ae2.QNB=Квантовое туннелирование
achievement.ae2.QNB.desc=Сделайте квантовое соединение
achievement.ae2.Root=Applied Energistics! Падите ниц!
achievement.ae2.Root.desc=Когда сундука уже не хватает...
achievement.ae2.Compass=Охотник за метеоритами!
achievement.ae2.Compass.desc=Сделайте метеоритный компас!
achievement.ae2.Presses=Неведомая технология!
achievement.ae2.Presses.desc=Найдите вычислительный пресс!
achievement.ae2.SpatialIO=Пространственное координирование!
achievement.ae2.SpatialIO.desc=Сделайте пространственный порт ввода\вывода!
achievement.ae2.SpatialIOExplorer=Чтобы смело идти...
achievement.ae2.SpatialIOExplorer.desc=Храните вещи в пространственной ячейке хранения!
achievement.ae2.StorageCell=Лучше, чем сундуки!
achievement.ae2.StorageCell.desc=Сделайте ячейку хранения!
achievement.ae2.IOPort=Перемешка ячеек хранения!
achievement.ae2.IOPort.desc=Сделайте порт ввода\вывода!
achievement.ae2.CraftingTerminal=(Очень) Большой верстак!
achievement.ae2.CraftingTerminal.desc=Сделайте терминал крафта!
achievement.ae2.PatternTerminal=Маэстро крафта!
achievement.ae2.PatternTerminal.desc=Сделайте терминал шаблонов!
achievement.ae2.ChargedQuartz=Шок! Сенсация!
achievement.ae2.ChargedQuartz.desc=Найдите заряженный кварц!
achievement.ae2.Fluix=Неестественно!
achievement.ae2.Fluix.desc=Сделайте изменчивые кристаллы!
achievement.ae2.Charger=Изменчивое производство!
achievement.ae2.Charger.desc=Сделайте зарядник!
achievement.ae2.CrystalGrowthAccelerator=Ускоритель - ещё мягко сказано!
achievement.ae2.CrystalGrowthAccelerator.desc=Сделайте ускоритель роста кристаллов!
achievement.ae2.GlassCable=Изменчивое энергетическое соединение!
achievement.ae2.GlassCable.desc=Сделайте МЭ стеклянный кабель!
achievement.ae2.Networking1=Сетевое подмастерье!
achievement.ae2.Networking1.desc=Достигните 8 каналов, подключая устройства к сети!
achievement.ae2.Controller=Коммутатор сети!
achievement.ae2.Controller.desc=Сделайте контроллер!
achievement.ae2.Networking2=Сетевой инженер!
achievement.ae2.Networking2.desc=Достигните 128 каналов, подключая устройства к сети!
achievement.ae2.Networking3=Сетевой администратор!
achievement.ae2.Networking3.desc=Достигните 2048 каналов, подключая устройства к сети!
achievement.ae2.P2P=Сеть Р2Р!
achievement.ae2.P2P.desc=Сделайте туннель Р2Р!
achievement.ae2.Recursive=Рекурсивная сеть!
achievement.ae2.Recursive.desc=Поставьте интерфейс на шину хранения!
achievement.ae2.CraftingCPU=Некст-ген крафтинг!
achievement.ae2.CraftingCPU.desc=Сделайте блок крафта!
achievement.ae2.Facade=Сетевая эстетика!
achievement.ae2.Facade.desc=Сделайте кабельный фасад!
achievement.ae2.NetworkTool=Диагностика сети!
achievement.ae2.NetworkTool.desc=Сделайте сетевой инструмент!
achievement.ae2.PortableCell=Кочевник с хранилищем!
achievement.ae2.PortableCell.desc=Сделайте переносную ячейку!
achievement.ae2.StorageBus=Безграничный потенциал!
achievement.ae2.StorageBus.desc=Сделайте шину хранения!
achievement.ae2.QNB=Квантовое туннелирование!
achievement.ae2.QNB.desc=Сделайте квантовое соединение!
// Stats
stat.ae2.ItemsInserted=Предметов добавлено в МЭ хранилище
@@ -1,79 +1,108 @@
tile.appliedenergistics2.BlockCableBus.name=AE2線纜和(或)總線
tile.appliedenergistics2.BlockCellWorkbench.name=元件工作臺
tile.appliedenergistics2.BlockCharger.name=充能器
tile.appliedenergistics2.BlockChest.name=ME箱子
tile.appliedenergistics2.BlockCondenser.name=物質聚合器
tile.appliedenergistics2.BlockController.name=ME控制
// 方塊
tile.appliedenergistics2.cable_bus.name=ae2線纜和/或總線
tile.appliedenergistics2.cell_workbench.name=元件工作臺
tile.appliedenergistics2.charger.name=充能器
tile.appliedenergistics2.chest.name=me箱子
tile.appliedenergistics2.condenser.name=物質聚合
tile.appliedenergistics2.controller.name=ME控制器
tile.appliedenergistics2.crank.name=木質曲柄
tile.appliedenergistics2.BlockCreativeEnergyCell.name=創造型能源元件
tile.appliedenergistics2.BlockDenseEnergyCell.name=致密型能源元件
tile.appliedenergistics2.BlockEnergyCell.name=能源元件
tile.appliedenergistics2.BlockDrive.name=ME驅動器
tile.appliedenergistics2.BlockEnergyAcceptor.name=能源接收器
tile.appliedenergistics2.creative_energy_cell.name=創造型能源元件
tile.appliedenergistics2.dense_energy_cell.name=致密型能源元件
tile.appliedenergistics2.energy_cell.name=能源元件
tile.appliedenergistics2.drive.name=me驅動器
tile.appliedenergistics2.energy_acceptor.name=能源接收器
tile.appliedenergistics2.grindstone.name=石英磨具
tile.appliedenergistics2.BlockMatrixFrame.name=矩陣框架
tile.appliedenergistics2.BlockIOPort.name=ME-IO端口
tile.appliedenergistics2.BlockInscriber.name=壓印器
tile.appliedenergistics2.BlockInterface.name=ME接口
tile.appliedenergistics2.BlockQuantumLinkChamber.name=ME量子鏈接倉
tile.appliedenergistics2.BlockQuantumRing.name=ME量子環
tile.appliedenergistics2.fluix_block.name=福魯伊克斯
tile.appliedenergistics2.quartz_block.name=賽特斯石英
tile.appliedenergistics2.chiseled_quartz_block.name=鏨制賽特斯石英
tile.appliedenergistics2.matrix_frame.name=矩陣框架
tile.appliedenergistics2.io_port.name=ME-IO端口
tile.appliedenergistics2.inscriber.name=壓印器
tile.appliedenergistics2.interface.name=me接口
tile.appliedenergistics2.quantum_link_chamber.name=ME量子鏈接倉
tile.appliedenergistics2.quantum_ring.name=me量子環
tile.appliedenergistics2.fluix_block.name=福魯伊克斯
tile.appliedenergistics2.quartz_block.name=賽特斯石英
tile.appliedenergistics2.chiseled_quartz_block.name=鏨制賽特斯石英
tile.appliedenergistics2.quartz_glass.name=石英玻璃
tile.appliedenergistics2.quartz_vibrant_glass.name=聚能石英玻璃
tile.appliedenergistics2.quartz_pillar.name=賽特斯豎紋石英塊
tile.appliedenergistics2.quartz_fixture.name=充能石英火把
tile.appliedenergistics2.light_detector.name=光亮感應器
tile.appliedenergistics2.BlockSpatialIOPort.name=空間IO端口
tile.appliedenergistics2.BlockSpatialPylon.name=空間塔
tile.appliedenergistics2.BlockTinyTNT.name=迷你TNT
tile.appliedenergistics2.BlockVibrationChamber.name=諧振倉
tile.appliedenergistics2.BlockWireless.name=ME無線訪問點
tile.appliedenergistics2.quartz_ore.name=賽特斯石英礦
tile.appliedenergistics2.charged_quartz_ore.name=充能賽特斯石英礦
tile.appliedenergistics2.BlockSecurity.name=ME安全終端
tile.appliedenergistics2.BlockQuartzGrowthAccelerator.name=晶體催生器
tile.appliedenergistics2.sky_stone_block.name=隕石
tile.appliedenergistics2.smooth_sky_stone_block.name=隕石塊
tile.appliedenergistics2.sky_stone_brick.name=隕石
tile.appliedenergistics2.sky_stone_small_brick.name=隕石磚
tile.appliedenergistics2.sky_stone_chest.name=隕石箱子
tile.appliedenergistics2.smooth_sky_stone_chest.name=隕石塊箱子
tile.appliedenergistics2.spatial_io_port.name=空間IO端口
tile.appliedenergistics2.spatial_pylon.name=空間塔
tile.appliedenergistics2.tiny_tnt.name=迷你TNT
tile.appliedenergistics2.vibration_chamber.name=諧振倉
tile.appliedenergistics2.wireless_access_point.name=ME無線訪問點
tile.appliedenergistics2.quartz_ore.name=賽特斯石英礦
tile.appliedenergistics2.charged_quartz_ore.name=充能賽特斯石英礦
tile.appliedenergistics2.security_station.name=me安全終端
tile.appliedenergistics2.quartz_growth_accelerator.name=晶體催生器
tile.appliedenergistics2.sky_stone_block.name=隕石
tile.appliedenergistics2.smooth_sky_stone_block.name=平滑隕石塊
tile.appliedenergistics2.sky_stone_brick.name=隕石磚
tile.appliedenergistics2.sky_stone_small_brick.name=隕石
tile.appliedenergistics2.sky_stone_chest.name=隕石箱子
tile.appliedenergistics2.smooth_sky_stone_chest.name=平滑隕石塊箱子
tile.appliedenergistics2.sky_compass.name=隕石羅盤
tile.appliedenergistics2.BlockCraftingMonitor.name=合成監控器
tile.appliedenergistics2.BlockCraftingStorage.name=1k合成存儲器
tile.appliedenergistics2.BlockCraftingStorage4k.name=4k合成存儲器
tile.appliedenergistics2.BlockCraftingStorage16k.name=16k合成存儲器
tile.appliedenergistics2.BlockCraftingStorage64k.name=64k合成存儲器
tile.appliedenergistics2.BlockCraftingAccelerator.name=合成并行處理器
tile.appliedenergistics2.BlockCraftingUnit.name=合成處理器
tile.appliedenergistics2.BlockMolecularAssembler.name=分子集成室
tile.appliedenergistics2.crafting_monitor.name=合成監控器
tile.appliedenergistics2.crafting_storage.name=1k合成存儲器
tile.appliedenergistics2.crafting_storage_4k.name=4k合成存儲器
tile.appliedenergistics2.crafting_storage_16k.name=16k合成存儲器
tile.appliedenergistics2.crafting_storage_64k.name=64k合成存儲器
tile.appliedenergistics2.crafting_accelerator.name=合成并行處理器
tile.appliedenergistics2.crafting_unit.name=合成處理器
tile.appliedenergistics2.molecular_assembler.name=分子集成室
chat.appliedenergistics2.ChestCannotReadStorageCell=ME箱子無法讀取存儲元件.
chat.appliedenergistics2.SettingCleared=設置已清除.
chat.appliedenergistics2.OutOfRange=超出無線信號范圍.
chat.appliedenergistics2.InvalidMachine=無效機器.
chat.appliedenergistics2.LoadedSettings=成功載入設定.
chat.appliedenergistics2.DeviceNotPowered=設備供能不足.
chat.appliedenergistics2.MachineNotPowered=機器未供能.
chat.appliedenergistics2.CommunicationError=網絡交互錯誤.
chat.appliedenergistics2.SavedSettings=成功保存設定.
chat.appliedenergistics2.AmmoDepleted=彈藥告罄.
chat.appliedenergistics2.isNowLocked=監控器已鎖定.
chat.appliedenergistics2.isNowUnlocked=監控器已解鎖.
// 階梯
tile.appliedenergistics2.fluix_stairs.name=福魯伊克斯階梯
tile.appliedenergistics2.quartz_stairs.name=賽特斯石英階梯
tile.appliedenergistics2.chiseled_quartz_stairs.name=鏨制賽特斯石英階梯
tile.appliedenergistics2.quartz_pillar_stairs.name=賽特斯豎紋石英階梯
tile.appliedenergistics2.smooth_sky_stone_stairs.name=平滑隕石塊階梯
tile.appliedenergistics2.sky_stone_brick_stairs.name=隕石磚階梯
tile.appliedenergistics2.sky_stone_small_brick_stairs.name=隕石細磚階梯
tile.appliedenergistics2.sky_stone_stairs.name=隕石磚階梯
// 半磚
tile.appliedenergistics2.chiseled_quartz_slab.name=鏨制賽特斯石英半磚
tile.appliedenergistics2.fluix_slab.name=魯伊克斯半磚
tile.appliedenergistics2.quartz_pillar_slab.name=賽特斯豎紋石英半磚
tile.appliedenergistics2.quartz_slab.name=賽特斯石英半磚
tile.appliedenergistics2.smooth_sky_stone_slab.name=平滑隕石塊半磚
tile.appliedenergistics2.sky_stone_brick_slab.name=隕石磚半磚
tile.appliedenergistics2.sky_stone_small_brick_slab.name=隕石細磚半磚
tile.appliedenergistics2.sky_stone_slab.name=隕石磚半磚
// 聊天欄信息
chat.appliedenergistics2.ChestCannotReadStorageCell=ME箱子無法讀取存儲元件。
chat.appliedenergistics2.SettingCleared=設置已清除。
chat.appliedenergistics2.OutOfRange=超出無線信號範圍。
chat.appliedenergistics2.InvalidMachine=無效機器。
chat.appliedenergistics2.LoadedSettings=成功載入設定。
chat.appliedenergistics2.DeviceNotPowered=設備供能不足。
chat.appliedenergistics2.DeviceNotWirelessTerminal=設備不是無線終端。
chat.appliedenergistics2.DeviceNotLinked=設備未鏈接。
chat.appliedenergistics2.StationCanNotBelocated=終端無法定位。
chat.appliedenergistics2.MachineNotPowered=機器未供能。
chat.appliedenergistics2.CommunicationError=網絡交互錯誤。
chat.appliedenergistics2.SavedSettings=成功保存設定。
chat.appliedenergistics2.AmmoDepleted=彈藥耗盡。
chat.appliedenergistics2.isNowLocked=監控器已鎖定。
chat.appliedenergistics2.isNowUnlocked=監控器已解鎖。
// 創造模式標籤
itemGroup.appliedenergistics2=應用能源2
itemGroup.appliedenergistics2.facades=應用能源2-偽裝板
// GUI
gui.appliedenergistics2.CraftingTerminal=合成終端
gui.appliedenergistics2.METunnel=ME
gui.appliedenergistics2.ItemTunnel=物品
gui.appliedenergistics2.FluidTunnel=
gui.appliedenergistics2.FluidTunnel=
gui.appliedenergistics2.RedstoneTunnel=紅石
gui.appliedenergistics2.EUTunnel=EU
gui.appliedenergistics2.FETunnel=FE
gui.appliedenergistics2.LightTunnel=光
gui.appliedenergistics2.OCTunnel=開放式電腦
gui.appliedenergistics2.PressureTunnel=壓力
gui.appliedenergistics2.security.extract.name=取出
gui.appliedenergistics2.security.inject.name=存入
@@ -81,13 +110,15 @@ gui.appliedenergistics2.security.craft.name=合成
gui.appliedenergistics2.security.build.name=構建
gui.appliedenergistics2.security.security.name=安全
gui.appliedenergistics2.security.extract.tip=允許用戶從存儲空間中移除物品.
gui.appliedenergistics2.security.inject.tip=允許用戶向存儲空間中存入新物品.
gui.appliedenergistics2.security.craft.tip=用戶可以初始化新的合成.
gui.appliedenergistics2.security.build.tip=用戶可以修改網絡的物理結構,并調整配置.
gui.appliedenergistics2.security.security.tip=用戶可以訪問修改網絡的安全終端.
gui.appliedenergistics2.security.extract.tip=允許用戶從存儲空間中移除物品
gui.appliedenergistics2.security.inject.tip=允許用戶向存儲空間中存入新物品
gui.appliedenergistics2.security.craft.tip=用戶可以初始化新的合成
gui.appliedenergistics2.security.build.tip=用戶可以修改網絡的物理結構并調整配置
gui.appliedenergistics2.security.security.tip=用戶可以訪問修改網絡的安全終端
gui.appliedenergistics2.Efficiency=效率
gui.appliedenergistics2.SCSSize=SCS大小
gui.appliedenergistics2.SCSInvalid=無效
gui.appliedenergistics2.RequiredPower=所需能源
gui.appliedenergistics2.StoredPower=現存能源
gui.appliedenergistics2.MaxPower=最大能源
@@ -126,18 +157,20 @@ gui.appliedenergistics2.StoredEnergy=已存儲能源
gui.appliedenergistics2.StoredItems=已存儲物品
gui.appliedenergistics2.Terminal=終端
gui.appliedenergistics2.InterfaceTerminal=接口終端
gui.appliedenergistics2.InterfaceTerminalHint=在接口終端上顯示或隱藏。
gui.appliedenergistics2.FormationPlane=輸出面板
gui.appliedenergistics2.VibrationChamber=諧振倉
gui.appliedenergistics2.NetworkDetails=網絡信息
gui.appliedenergistics2.StorageCells=ME存儲元件
gui.appliedenergistics2.IOBuses=ME輸入/輸出總線
gui.appliedenergistics2.Stores=Stores
gui.appliedenergistics2.Stores=儲藏
gui.appliedenergistics2.BytesUsed=字節已使用
gui.appliedenergistics2.Types=類型
gui.appliedenergistics2.Blank=空白
gui.appliedenergistics2.Unlinked=未鏈接
gui.appliedenergistics2.Linked=已鏈接
gui.appliedenergistics2.StoredSize=存儲空間大小
gui.appliedenergistics2.CellId=元件ID
gui.appliedenergistics2.SkyChest=隕石箱子
gui.appliedenergistics2.PatternTerminal=樣板終端
gui.appliedenergistics2.CraftingPattern=合成樣板
@@ -147,23 +180,29 @@ gui.appliedenergistics2.Crafts=合成
gui.appliedenergistics2.And=與
gui.appliedenergistics2.Creates=創造
gui.appliedenergistics2.With=使用
gui.appliedenergistics2.Substitute=使用替代:
gui.appliedenergistics2.Yes=是
gui.appliedenergistics2.No=否
gui.appliedenergistics2.InWorldCrafting=AE2在世界中的合成
gui.appliedenergistics2.inWorldFluix=將1個充能賽特斯石英水晶,1個下界石英和1個紅石,相繼扔進同一格水里,并等待一會兒.
gui.appliedenergistics2.inWorldPurificationCertus=用賽特斯石英粉和沙子制作賽特斯石英種子,并扔進水里;使用晶體催生器可以讓這個過程變得更快.
gui.appliedenergistics2.inWorldPurificationNether=用下界石英粉和沙子制作下界石英種子,并扔進水里;使用晶體催生器可以讓這個過程變得更快.
gui.appliedenergistics2.inWorldPurificationFluix=用福魯伊克斯粉和沙子制作福魯伊克斯種子,并扔進水里;使用晶體催生器可以讓這個過程變得更快.
gui.appliedenergistics2.inWorldSingularity=將1個奇點和一個末影珍珠粉仍在地上,并用爆炸性物品引爆.
gui.appliedenergistics2.ChargedQuartz=將未充能賽特斯石英插入充能器充能后,可以得到充能賽特斯石英.
gui.appliedenergistics2.OfSecondOutput=%1$d%% 的幾率得到副產物.
gui.appliedenergistics2.NoSecondOutput=無副產物.
gui.appliedenergistics2.inWorldFluix=將1個充能賽特斯石英水晶,1個地獄石英和1個紅石,相繼扔進同一格水里,并等待一會兒
gui.appliedenergistics2.inWorldPurificationCertus=用賽特斯石英粉和沙子制作賽特斯石英種子,并扔進水里;使用晶體催生器可以讓這個過程變得更快
gui.appliedenergistics2.inWorldPurificationNether=用地獄石英粉和沙子制作地獄石英種子,并扔進水里;使用晶體催生器可以讓這個過程變得更快
gui.appliedenergistics2.inWorldPurificationFluix=用福魯伊克斯粉和沙子制作福魯伊克斯種子,并扔進水里;使用晶體催生器可以讓這個過程變得更快
gui.appliedenergistics2.inWorldSingularity=將1個奇點和一個終界珍珠粉仍在地上,并用爆炸性物品引爆
gui.appliedenergistics2.ChargedQuartz=將未充能賽特斯石英插入充能器充能后,可以得到充能賽特斯石英
gui.appliedenergistics2.ChargedQuartzFind=充能賽特斯石英在世界上很少能找到,它看起來類似於正常的賽特斯石英,除了閃閃發光。
gui.appliedenergistics2.NoSecondOutput=無副產物
gui.appliedenergistics2.OfSecondOutput=%1$d%%的幾率得到副產物。
gui.appliedenergistics2.MultipleOutputs=%1$d%%的幾率得到第一副產物,%2$d%%的幾率得到第二副產物。
gui.appliedenergistics2.SelectAmount=選擇數量
gui.appliedenergistics2.CopyMode=復制模式
gui.appliedenergistics2.CopyModeDesc=控制當取出存儲元件時,是否清空配置格.
gui.appliedenergistics2.CopyMode=複製模式
gui.appliedenergistics2.CopyModeDesc=控制當取出存儲元件時,是否清空配置格
gui.appliedenergistics2.Next=下一頁
gui.appliedenergistics2.Lumen=光通
gui.appliedenergistics2.Empty=空
gui.appliedenergistics2.Stored=現存
gui.appliedenergistics2.Cancel=取消
gui.appliedenergistics2.ETAFormat=小時:分鐘:秒
gui.appliedenergistics2.Crafting=正在合成
gui.appliedenergistics2.Scheduled=計劃合成
gui.appliedenergistics2.CraftingStatus=合成狀態
@@ -177,15 +216,32 @@ gui.appliedenergistics2.Bytes=可存儲
gui.appliedenergistics2.Simulation=Simulation
gui.appliedenergistics2.CoProcessors=并行處理器
gui.appliedenergistics2.CraftingCPU=合成CPU
gui.appliedenergistics2.NoCraftingCPUs=沒有可用的合成CPU...
gui.appliedenergistics2.CalculatingWait=正在計算,請等待...
gui.appliedenergistics2.NoCraftingCPUs=沒有可用的合成CPU……
gui.appliedenergistics2.CalculatingWait=正在計算請等待……
gui.appliedenergistics2.Clean=清空
gui.appliedenergistics2.InvalidPattern=無效樣板
gui.appliedenergistics2.Range=範圍
gui.appliedenergistics2.TransparentFacades=透明的外牆
gui.appliedenergistics2.TransparentFacadesHint=在網絡工具位於工具欄上時控制外觀的可見性。
gui.appliedenergistics2.CPUs=中央處理器
gui.appliedenergistics2.NoCraftingJobs=沒有合成工作啟動
gui.appliedenergistics2.FacadeCrafting=門面製作
gui.appliedenergistics2.inWorldCraftingPresses=在世界各地可以找到的隕石的中心找到壓印模板,他們可以通過使用隕石羅盤找到。
gui.appliedenergistics2.Included=包括
gui.appliedenergistics2.Excluded=排除
gui.appliedenergistics2.Partitioned=分區
gui.appliedenergistics2.Precise=精確
gui.appliedenergistics2.Fuzzy=模糊
gui.appliedenergistics2.SmallFontCraft=合成
gui.appliedenergistics2.LargeFontCraft=+
gui.appliedenergistics2.Nothing=沒有
// GUI Tooltips
gui.tooltips.appliedenergistics2.Stash=存儲物品
gui.tooltips.appliedenergistics2.StashDesc=將合成槽的物品返回網絡
gui.tooltips.appliedenergistics2.StashDesc=將合成槽的物品返回網絡
gui.tooltips.appliedenergistics2.Substitutions=礦物詞典替換
gui.tooltips.appliedenergistics2.SubstitutionsDesc=為輸入組件編輯替換選項
gui.tooltips.appliedenergistics2.SubstitutionsDesc=允許為輸入組件編輯替換選項
gui.tooltips.appliedenergistics2.SubstitutionsDescDisabled=避免為輸入組件編輯替換選項。
gui.tooltips.appliedenergistics2.SubstitutionsOn=啟用替換
gui.tooltips.appliedenergistics2.SubstitutionsOff=禁用替換
gui.tooltips.appliedenergistics2.Encode=編碼樣板
@@ -214,7 +270,7 @@ gui.tooltips.appliedenergistics2.IOMode=輸入/輸出模式
gui.tooltips.appliedenergistics2.CondenserOutput=ME聚合器-輸出
gui.tooltips.appliedenergistics2.PartitionStorage=分區存儲
gui.tooltips.appliedenergistics2.Clear=清除
gui.tooltips.appliedenergistics2.TrashController=通過按下shift或空格點擊刪除.
gui.tooltips.appliedenergistics2.TrashController=通過按下shift或空格點擊刪除
gui.tooltips.appliedenergistics2.InterfaceBlockingMode=阻擋模式
gui.tooltips.appliedenergistics2.InterfaceCraftingMode=合成模式
gui.tooltips.appliedenergistics2.Trash=銷毀物品
@@ -227,41 +283,65 @@ gui.tooltips.appliedenergistics2.AlwaysActive=總是激活
gui.tooltips.appliedenergistics2.ActiveWithoutSignal=無信號時激活
gui.tooltips.appliedenergistics2.ActiveWithSignal=有信號時激活
gui.tooltips.appliedenergistics2.ActiveOnPulse=有脈沖信號時激活
gui.tooltips.appliedenergistics2.EmitLevelsBelow=當容量標準小于等于設定限制時發出信號.
gui.tooltips.appliedenergistics2.EmitLevelAbove=當容量標準大于等于設定限制時發出信號.
gui.tooltips.appliedenergistics2.EmitLevelsBelow=當容量標準小于等于設定限制時發出信號
gui.tooltips.appliedenergistics2.EmitLevelAbove=當容量標準大于等于設定限制時發出信號
gui.tooltips.appliedenergistics2.SearchMode_Auto=自動搜索
gui.tooltips.appliedenergistics2.SearchMode_Standard=標準搜索
gui.tooltips.appliedenergistics2.SearchMode_NEIAuto=NEI自動同步
gui.tooltips.appliedenergistics2.SearchMode_NEIStandard=NEI標準同步
gui.tooltips.appliedenergistics2.SearchMode_JEIAuto=JEI自動同步
gui.tooltips.appliedenergistics2.SearchMode_JEIStandard=JEI標準同步
gui.tooltips.appliedenergistics2.SearchMode_AutoKeep=自動搜索保持
gui.tooltips.appliedenergistics2.SearchMode_StandardKeep=標準搜索保持
gui.tooltips.appliedenergistics2.SearchMode_JEIAutoKeep=JEI同步自動保持
gui.tooltips.appliedenergistics2.SearchMode_JEIStandardKeep=JEI同步標准保持
gui.tooltips.appliedenergistics2.SearchMode=搜索框模式
gui.tooltips.appliedenergistics2.PartitionStorageHint=基于當前已存儲物品進行分區編輯.
gui.tooltips.appliedenergistics2.PartitionStorageHint=基于當前已存儲物品進行分區編輯
gui.tooltips.appliedenergistics2.ClearSettings=清除配置
gui.tooltips.appliedenergistics2.Craftable=可合成
gui.tooltips.appliedenergistics2.MoveWhenEmpty=當元件為空時移動至輸出口.
gui.tooltips.appliedenergistics2.MoveWhenWorkIsDone=當工序完成移動至輸出口.
gui.tooltips.appliedenergistics2.MoveWhenFull=當元件裝滿時移動至輸出口.
gui.tooltips.appliedenergistics2.MoveWhenEmpty=當元件為空時移動至輸出口
gui.tooltips.appliedenergistics2.MoveWhenWorkIsDone=當工序完成移動至輸出口
gui.tooltips.appliedenergistics2.MoveWhenFull=當元件裝滿時移動至輸出口
gui.tooltips.appliedenergistics2.Disabled=禁用
gui.tooltips.appliedenergistics2.Enable=啟用
gui.tooltips.appliedenergistics2.Blocking=當物品欄內有物品時不推送合成物品.
gui.tooltips.appliedenergistics2.NonBlocking=忽略目標物品欄的內容.
gui.tooltips.appliedenergistics2.Craft=輸出時若有需要則合成物品.
gui.tooltips.appliedenergistics2.CraftOnly=不使用已存儲物品,只輸出合成物品.
gui.tooltips.appliedenergistics2.CraftEither=輸出時使用已存儲物品或合成物品.
gui.tooltips.appliedenergistics2.Blocking=當物品欄內有物品時不推送合成物品
gui.tooltips.appliedenergistics2.NonBlocking=忽略目標物品欄的內容
gui.tooltips.appliedenergistics2.Craft=輸出時若有需要則合成物品
gui.tooltips.appliedenergistics2.CraftOnly=不使用已存儲物品只輸出合成物品
gui.tooltips.appliedenergistics2.CraftEither=輸出時使用已存儲物品或合成物品
gui.tooltips.appliedenergistics2.LevelType=檢測類型
gui.tooltips.appliedenergistics2.LevelType_Energy=能源(ae)
gui.tooltips.appliedenergistics2.LevelType_Energy=能源AE
gui.tooltips.appliedenergistics2.LevelType_Item=物品
gui.tooltips.appliedenergistics2.InventoryTweaks=容器整理
gui.tooltips.appliedenergistics2.Mod=模組
gui.tooltips.appliedenergistics2.TerminalStyle=終端風格
gui.tooltips.appliedenergistics2.TerminalStyle_Full=全屏
gui.tooltips.appliedenergistics2.TerminalStyle_Tall=長
gui.tooltips.appliedenergistics2.TerminalStyle_Small=短
gui.tooltips.appliedenergistics2.DoesntDespawn=該物品不會消亡。
gui.tooltips.appliedenergistics2.EmitterMode=合成發出器模式
gui.tooltips.appliedenergistics2.CraftViaRedstone=發出紅石來合成物品。
gui.tooltips.appliedenergistics2.EmitWhenCrafting=物品正在合成時發出紅石。
gui.tooltips.appliedenergistics2.ReportInaccessibleItems=報告無法訪問的物品
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsYes=是:無法提取的項目將會顯示。
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsNo=否:只有可提取的項目才會顯示。
gui.tooltips.appliedenergistics2.BlockPlacement=方塊放置方式
gui.tooltips.appliedenergistics2.BlockPlacementYes=方塊將被放置為方塊。
gui.tooltips.appliedenergistics2.BlockPlacementNo=方塊將作為物品掉落。
gui.tooltips.appliedenergistics2.SchedulingMode=調度模式
gui.tooltips.appliedenergistics2.SchedulingModeDefault=導出第一個項目,直到網絡為空,然後嘗試下一個項目。
gui.tooltips.appliedenergistics2.SchedulingModeRoundRobin=使用循環模式導出。
gui.tooltips.appliedenergistics2.SchedulingModeRandom=以隨機模式導出物品。
gui.tooltips.appliedenergistics2.FilterMode=搜索過濾器模式
gui.tooltips.appliedenergistics2.FilterModeKeep=恢復以前的搜索過濾器
gui.tooltips.appliedenergistics2.FilterModeClear=清除每個開放。
gui.tooltips.appliedenergistics2.ItemsStored=存儲的物品:%s
gui.tooltips.appliedenergistics2.ItemsRequestable=可請求的物品:%s
// 單元
gui.appliedenergistics2.units.appliedenergstics=AE
gui.appliedenergistics2.units.ic2=EU
gui.appliedenergistics2.units.universalelectricity=KJ
gui.appliedenergistics2.units.rotarycraft=Watts
gui.appliedenergistics2.units.thermalexpansion=RF
gui.appliedenergistics2.units.rf=RF
// 顏色
gui.appliedenergistics2.White=白色
gui.appliedenergistics2.Orange=橙色
gui.appliedenergistics2.Magenta=品紅色
@@ -280,6 +360,8 @@ gui.appliedenergistics2.Red=紅色
gui.appliedenergistics2.Black=黑色
gui.appliedenergistics2.Fluix=Fluix默認色
// Waila
waila.appliedenergistics2.Crafting=合成中
waila.appliedenergistics2.DeviceOnline=設備開啟
waila.appliedenergistics2.DeviceOffline=設備關閉
waila.appliedenergistics2.DeviceMissingChannel=設備缺少頻道
@@ -287,155 +369,191 @@ waila.appliedenergistics2.Locked=鎖定
waila.appliedenergistics2.Unlocked=未鎖定
waila.appliedenergistics2.Showing=顯示
waila.appliedenergistics2.Contains=容納
waila.appliedenergistics2.Channels=%1$d of %2$d 頻道
waila.appliedenergistics2.Channels=%1$d/%2$d頻道
waila.appliedenergistics2.P2PUnlinked=未連接
waila.appliedenergistics2.P2PInputOneOutput=已連接(輸入端)
waila.appliedenergistics2.P2PInputManyOutputs=已連接(輸入端)-%d輸出
waila.appliedenergistics2.P2POutput=已連接(輸口端)
item.appliedenergistics2.ItemBasicStorageCell.1k.name=1k-ME存儲元件
item.appliedenergistics2.ItemBasicStorageCell.4k.name=4k-ME存儲元件
item.appliedenergistics2.ItemBasicStorageCell.16k.name=16k-ME存儲元件
item.appliedenergistics2.ItemBasicStorageCell.64k.name=64k-ME存儲元件
item.appliedenergistics2.ItemCreativeStorageCell.name=創造型ME存儲元件
item.appliedenergistics2.ItemEncodedPattern.name=已編碼樣板
item.appliedenergistics2.ItemViewCell.name=顯示元件
item.appliedenergistics2.ItemFacade.name=線纜偽裝板
// TheOneProbe
theoneprobe.appliedenergistics2.crafting=合成中:%1$s
theoneprobe.appliedenergistics2.device_online=設備開啟
theoneprobe.appliedenergistics2.device_offline=設備關閉
theoneprobe.appliedenergistics2.device_missing_channel=設備缺少頻道
theoneprobe.appliedenergistics2.locked=鎖定
theoneprobe.appliedenergistics2.unlocked=未鎖定
theoneprobe.appliedenergistics2.showing=顯示
theoneprobe.appliedenergistics2.contains=容納
theoneprobe.appliedenergistics2.channels=%1$d/%2$d頻道
theoneprobe.appliedenergistics2.p2p_unlinked=未連接
theoneprobe.appliedenergistics2.p2p_input_one_output=已連接(輸入端)
theoneprobe.appliedenergistics2.p2p_input_many_outputs=已連接(輸入端)-%d輸出
theoneprobe.appliedenergistics2.p2p_output=已連接(輸口端)
theoneprobe.appliedenergistics2.stored_energy=%1$d/%2$d
item.appliedenergistics2.ItemCrystalSeed.Certus.name=賽特斯石英種子
item.appliedenergistics2.ItemCrystalSeed.Nether.name=下界石英鐘子
item.appliedenergistics2.ItemCrystalSeed.Fluix.name=福魯伊克斯種子
item.appliedenergistics2.ItemMaterial.AdvCard.name=高級卡
item.appliedenergistics2.ItemMaterial.AnnihilationCore.name=破壞核心
item.appliedenergistics2.ItemMaterial.BasicCard.name=基礎卡
item.appliedenergistics2.ItemMaterial.BlankPattern.name=空白樣板
item.appliedenergistics2.ItemMaterial.CalcProcessor.name=運算處理器
item.appliedenergistics2.ItemMaterial.CardCapacity.name=容量卡
item.appliedenergistics2.ItemMaterial.CardFuzzy.name=模糊卡
item.appliedenergistics2.ItemMaterial.CardInverter.name=反相卡
item.appliedenergistics2.ItemMaterial.CardRedstone.name=紅石卡
item.appliedenergistics2.ItemMaterial.CardSpeed.name=加速卡
item.appliedenergistics2.ItemMaterial.Cell2SpatialPart.name=2³-空間組件
item.appliedenergistics2.ItemMaterial.Cell16SpatialPart.name=16³-空間組件
item.appliedenergistics2.ItemMaterial.Cell128SpatialPart.name=128³-空間組件
item.appliedenergistics2.ItemMaterial.Cell1kPart.name=1k-ME存儲組件
item.appliedenergistics2.ItemMaterial.Cell4kPart.name=4k-ME存儲組件
item.appliedenergistics2.ItemMaterial.Cell16kPart.name=16k-ME存儲組件
item.appliedenergistics2.ItemMaterial.Cell64kPart.name=64k-ME存儲組件
item.appliedenergistics2.ItemMaterial.CertusQuartzCrystal.name=賽特斯石英水晶
item.appliedenergistics2.ItemMaterial.CertusQuartzCrystalCharged.name=充能賽特斯石英水晶
item.appliedenergistics2.ItemMaterial.CertusQuartzDust.name=賽特斯石英粉
item.appliedenergistics2.ItemMaterial.EmptyStorageCell.name=ME存儲外殼
item.appliedenergistics2.ItemMaterial.EnderDust.name=末影粉
item.appliedenergistics2.ItemMaterial.EngProcessor.name=工程處理器
item.appliedenergistics2.ItemMaterial.Flour.name=面粉
item.appliedenergistics2.ItemMaterial.FluixCrystal.name=福魯伊克斯水晶
item.appliedenergistics2.ItemMaterial.FluixDust.name=福魯伊克斯粉
item.appliedenergistics2.ItemMaterial.FluixPearl.name=福魯伊克斯珍珠
item.appliedenergistics2.ItemMaterial.FormationCore.name=成型核心
item.appliedenergistics2.ItemMaterial.GoldDust.name=金粉
item.appliedenergistics2.ItemMaterial.IronDust.name=鐵粉
item.appliedenergistics2.ItemMaterial.LogicProcessor.name=邏輯處理器
item.appliedenergistics2.ItemMaterial.LogicProcessorAsm.name=半成品-邏輯處理器
item.appliedenergistics2.ItemMaterial.MatterBall.name=物質球
item.appliedenergistics2.ItemMaterial.NetherQuartzDust.name=下界石英粉
item.appliedenergistics2.ItemMaterial.PurifiedCertusQuartzCrystal.name=高純賽特斯石英水晶
item.appliedenergistics2.ItemMaterial.PurifiedFluixCrystal.name=高純福魯伊克斯水晶
item.appliedenergistics2.ItemMaterial.PurifiedNetherQuartzCrystal.name=高純下界石英水晶
item.appliedenergistics2.ItemMaterial.QESingularity.name=量子糾纏態奇點
item.appliedenergistics2.ItemMaterial.Silicon.name=硅
item.appliedenergistics2.ItemMaterial.Singularity.name=奇點
item.appliedenergistics2.ItemMaterial.Wireless.name=無線接收器
item.appliedenergistics2.ItemMaterial.WirelessBooster.name=無線信號增幅器
item.appliedenergistics2.ItemMaterial.WoodenGear.name=木齒輪
item.appliedenergistics2.ItemMaterial.EngProcessorPress.name=工程壓印模板
item.appliedenergistics2.ItemMaterial.CalcProcessorPress.name=運算壓印模板
item.appliedenergistics2.ItemMaterial.LogicProcessorPress.name=邏輯壓印模板
item.appliedenergistics2.ItemMaterial.EngProcessorPrint.name=工程電路板
item.appliedenergistics2.ItemMaterial.CalcProcessorPrint.name=運算電路板
item.appliedenergistics2.ItemMaterial.LogicProcessorPrint.name=邏輯電路板
item.appliedenergistics2.ItemMaterial.SiliconPress.name=硅壓印模板
item.appliedenergistics2.ItemMaterial.SiliconPrint.name=硅板
item.appliedenergistics2.ItemMaterial.NamePress.name=名稱壓印模板
item.appliedenergistics2.ItemMaterial.SkyDust.name=隕石粉
item.appliedenergistics2.ItemMaterial.CardCrafting.name=合成卡
// 物品
item.appliedenergistics2.storage_cell_1k.name=1k-ME存儲元件
item.appliedenergistics2.storage_cell_4k.name=4k-ME存儲元件
item.appliedenergistics2.storage_cell_16k.name=16k-ME存儲元件
item.appliedenergistics2.storage_cell_64k.name=64k-ME存儲元件
item.appliedenergistics2.creative_storage_cell.name=創造型ME存儲元件
item.appliedenergistics2.encoded_pattern.name=已編碼樣板
item.appliedenergistics2.view_cell.name=顯示元件
item.appliedenergistics2.facade.name=線纜偽裝板
item.appliedenergistics2.ItemPart.AnnihilationPlane.name=破壞面板
item.appliedenergistics2.ItemPart.CableAnchor.name=線纜錨
item.appliedenergistics2.ItemPart.CableCovered.name=ME包層線纜
item.appliedenergistics2.ItemPart.CableGlass.name=ME玻璃線纜
item.appliedenergistics2.ItemPart.CableSmart.name=ME智能線纜
item.appliedenergistics2.ItemPart.CableDense.name=ME致密線纜
item.appliedenergistics2.ItemPart.StorageMonitor.name=ME儲存監控器
item.appliedenergistics2.ItemPart.ConversionMonitor.name=ME交換監控器
item.appliedenergistics2.ItemPart.CraftingTerminal.name=ME合成終端
item.appliedenergistics2.ItemPart.SemiDarkMonitor.name=照明面板
item.appliedenergistics2.ItemPart.Monitor.name=亮色照明面板
item.appliedenergistics2.ItemPart.DarkMonitor.name=暗色照明面板
item.appliedenergistics2.ItemPart.ExportBus.name=ME輸出總線
item.appliedenergistics2.ItemPart.FormationPlane.name=ME成型面板
item.appliedenergistics2.ItemPart.ImportBus.name=ME輸入總線
item.appliedenergistics2.ItemPart.Interface.name=ME接口
item.appliedenergistics2.ItemPart.LevelEmitter.name=ME標準發信器
item.appliedenergistics2.ItemPart.P2PTunnel.name=P2P通道
item.appliedenergistics2.ItemPart.PatternTerminal.name=ME樣板終端
item.appliedenergistics2.ItemPart.QuartzFiber.name=石英纖維
item.appliedenergistics2.ItemPart.StorageBus.name=ME存儲總線
item.appliedenergistics2.ItemPart.Terminal.name=ME終端
item.appliedenergistics2.ItemPart.InvertedToggleBus.name=ME反相觸發總線
item.appliedenergistics2.ItemPart.ToggleBus.name=ME觸發總線
item.appliedenergistics2.ItemPart.CraftingMonitor.name=ME合成監控器
item.appliedenergistics2.ItemPart.InterfaceTerminal.name=ME接口終端
item.appliedenergistics2.crystal_seed.certus.name=賽特斯石英種子
item.appliedenergistics2.crystal_seed.nether.name=地獄石英鐘子
item.appliedenergistics2.crystal_seed.fluix.name=福魯伊克斯種子
item.appliedenergistics2.material.invalid_type.name=這個物品被禁用。
item.appliedenergistics2.material.advanced_card.name=高級卡
item.appliedenergistics2.material.annihilation_core.name=破壞核心
item.appliedenergistics2.material.basic_card.name=基礎卡
item.appliedenergistics2.material.blank_pattern.name=空白樣板
item.appliedenergistics2.material.calculation_processor.name=運算處理器
item.appliedenergistics2.material.card_capacity.name=容量卡
item.appliedenergistics2.material.card_fuzzy.name=模糊卡
item.appliedenergistics2.material.card_inverter.name=反相卡
item.appliedenergistics2.material.card_redstone.name=紅石卡
item.appliedenergistics2.material.card_speed.name=加速卡
item.appliedenergistics2.material.cell2_spatial_part.name=2³-空間組件
item.appliedenergistics2.material.cell16_spatial_part.name=16³-空間組件
item.appliedenergistics2.material.cell128_spatial_part.name=128³-空間組件
item.appliedenergistics2.material.cell1k_part.name=1k-ME存儲組件
item.appliedenergistics2.material.cell4k_part.name=4k-ME存儲組件
item.appliedenergistics2.material.cell16k_part.name=16k-ME存儲組件
item.appliedenergistics2.material.cell64k_part.name=64k-ME存儲組件
item.appliedenergistics2.material.certus_quartz_crystal.name=賽特斯石英水晶
item.appliedenergistics2.material.certus_quartz_crystal_charged.name=充能賽特斯石英水晶
item.appliedenergistics2.material.certus_quartz_dust.name=賽特斯石英粉
item.appliedenergistics2.material.empty_storage_cell.name=ME存儲外殼
item.appliedenergistics2.material.ender_dust.name=終界珍珠粉
item.appliedenergistics2.material.engineering_processor.name=工程處理器
item.appliedenergistics2.material.flour.name=麵粉
item.appliedenergistics2.material.fluix_crystal.name=福魯伊克斯水晶
item.appliedenergistics2.material.fluix_dust.name=福魯伊克斯粉
item.appliedenergistics2.material.fluix_pearl.name=福魯伊克斯珍珠
item.appliedenergistics2.material.formation_core.name=成型核心
item.appliedenergistics2.material.gold_dust.name=金粉
item.appliedenergistics2.material.iron_dust.name=鐵粉
item.appliedenergistics2.material.logic_processor.name=邏輯處理器
item.appliedenergistics2.material.logic_processor_asm.name=半成品-邏輯處理器
item.appliedenergistics2.material.matter_ball.name=物質球
item.appliedenergistics2.material.nether_quartz_dust.name=地獄石英粉
item.appliedenergistics2.material.purified_certus_quartz_crystal.name=高純賽特斯石英水晶
item.appliedenergistics2.material.purified_fluix_crystal.name=高純福魯伊克斯水晶
item.appliedenergistics2.material.purified_nether_quartz_crystal.name=高純地獄石英水晶
item.appliedenergistics2.material.quantum_entangled_singularity.name=量子糾纏態奇點
item.appliedenergistics2.material.silicon.name=矽
item.appliedenergistics2.material.singularity.name=奇點
item.appliedenergistics2.material.wireless.name=無線接收器
item.appliedenergistics2.material.wireless_booster.name=無線信號增幅器
item.appliedenergistics2.material.wooden_gear.name=木齒輪
item.appliedenergistics2.material.engineering_processor_press.name=工程壓印模板
item.appliedenergistics2.material.calculation_processor_press.name=運算壓印模板
item.appliedenergistics2.material.logic_processor_press.name=邏輯壓印模板
item.appliedenergistics2.material.engineering_processor_print.name=工程電路板
item.appliedenergistics2.material.calculation_processor_print.name=運算電路板
item.appliedenergistics2.material.logic_processor_print.name=邏輯電路板
item.appliedenergistics2.material.silicon_press.name=矽壓印模板
item.appliedenergistics2.material.silicon_print.name=矽板
item.appliedenergistics2.material.name_press.name=名稱壓印模板
item.appliedenergistics2.material.sky_dust.name=隕石粉
item.appliedenergistics2.material.card_crafting.name=合成卡
item.appliedenergistics2.ItemSpatialStorageCell.128Cubed.name=128³-空間存儲元件
item.appliedenergistics2.ItemSpatialStorageCell.16Cubed.name=16³-空間存儲元件
item.appliedenergistics2.ItemSpatialStorageCell.2Cubed.name=2³-空間存儲元件
item.appliedenergistics2.multi_part.annihilation_plane.name=破壞面板
item.appliedenergistics2.multi_part.identity_annihilation_plane.name=ME身分破壞面板
item.appliedenergistics2.multi_part.cable_anchor.name=線纜錨
item.appliedenergistics2.multi_part.cable_covered.name=ME包層線纜
item.appliedenergistics2.multi_part.cable_glass.name=ME玻璃線纜
item.appliedenergistics2.multi_part.cable_smart.name=ME智能線纜
item.appliedenergistics2.multi_part.cable_dense_covered.name=ME緻密包層線纜
item.appliedenergistics2.multi_part.cable_dense_smart.name=ME緻密智能線纜
item.appliedenergistics2.multi_part.storage_monitor.name=ME儲存監控器
item.appliedenergistics2.multi_part.conversion_monitor.name=ME交換監控器
item.appliedenergistics2.multi_part.crafting_terminal.name=ME合成終端
item.appliedenergistics2.multi_part.semi_dark_monitor.name=照明面板
item.appliedenergistics2.multi_part.monitor.name=亮色照明面板
item.appliedenergistics2.multi_part.dark_monitor.name=暗色照明面板
item.appliedenergistics2.multi_part.export_bus.name=ME輸出總線
item.appliedenergistics2.multi_part.formation_plane.name=ME成型面板
item.appliedenergistics2.multi_part.import_bus.name=ME輸入總線
item.appliedenergistics2.multi_part.interface.name=ME接口
item.appliedenergistics2.multi_part.level_emitter.name=ME標準發信器
item.appliedenergistics2.multi_part.p2p_tunnel.name=p2p通道
item.appliedenergistics2.multi_part.pattern_terminal.name=ME樣板終端
item.appliedenergistics2.multi_part.quartz_fiber.name=石英纖維
item.appliedenergistics2.multi_part.storage_bus.name=ME存儲總線
item.appliedenergistics2.multi_part.terminal.name=ME終端
item.appliedenergistics2.multi_part.inverted_toggle_bus.name=ME反相觸發總線
item.appliedenergistics2.multi_part.toggle_bus.name=ME觸發總線
item.appliedenergistics2.multi_part.crafting_monitor.name=ME合成監控器
item.appliedenergistics2.multi_part.interface_terminal.name=ME接口終端
item.appliedenergistics2.multi_part.invalid_type.name=已禁用物品
item.appliedenergistics2.ToolCertusQuartzAxe.name=賽特斯石英斧
item.appliedenergistics2.ToolCertusQuartzCuttingKnife.name=賽特斯石英切割刀
item.appliedenergistics2.ToolCertusQuartzHoe.name=賽特斯石英鋤
item.appliedenergistics2.ToolCertusQuartzPickaxe.name=賽特斯石英鎬
item.appliedenergistics2.ToolCertusQuartzSpade.name=賽特斯石英鍬
item.appliedenergistics2.ToolCertusQuartzSword.name=賽特斯石英劍
item.appliedenergistics2.ToolCertusQuartzWrench.name=賽特斯石英扳手
item.appliedenergistics2.spatial_storage_cell_128_cubed.name=128³-空間存儲元件
item.appliedenergistics2.spatial_storage_cell_16_cubed.name=16³-空間存儲元件
item.appliedenergistics2.spatial_storage_cell_2_cubed.name=2³-空間存儲元件
item.appliedenergistics2.ToolNetherQuartzAxe.name=下界石英斧
item.appliedenergistics2.ToolNetherQuartzCuttingKnife.name=下界石英切割刀
item.appliedenergistics2.ToolNetherQuartzHoe.name=下界石英鋤
item.appliedenergistics2.ToolNetherQuartzPickaxe.name=下界石英鎬
item.appliedenergistics2.ToolNetherQuartzSpade.name=下界石英
item.appliedenergistics2.ToolNetherQuartzSword.name=下界石英劍
item.appliedenergistics2.ToolNetherQuartzWrench.name=下界石英扳手
item.appliedenergistics2.certus_quartz_axe.name=賽特斯石英斧
item.appliedenergistics2.certus_quartz_cutting_knife.name=賽特斯石英切割刀
item.appliedenergistics2.certus_quartz_hoe.name=賽特斯石英鋤
item.appliedenergistics2.certus_quartz_pickaxe.name=賽特斯石英鎬
item.appliedenergistics2.certus_quartz_spade.name=賽特斯石英
item.appliedenergistics2.certus_quartz_sword.name=賽特斯石英劍
item.appliedenergistics2.certus_quartz_wrench.name=賽特斯石英扳手
item.appliedenergistics2.ItemPaintBall.name=染色球
item.appliedenergistics2.ToolPortableCell.name=便攜元件
item.appliedenergistics2.ToolNetworkTool.name=網絡工具
item.appliedenergistics2.ToolChargedStaff.name=充能手杖
item.appliedenergistics2.ToolEntropyManipulator.name=熵變機械臂
item.appliedenergistics2.ToolMassCannon.name=物質炮
item.appliedenergistics2.ToolMemoryCard.name=內存卡
item.appliedenergistics2.ToolColorApplicator.name=染色器
item.appliedenergistics2.ToolWirelessTerminal.name=無線終端
item.appliedenergistics2.ToolBiometricCard.name=身份卡
item.appliedenergistics2.nether_quartz_axe.name=地獄石英斧
item.appliedenergistics2.nether_quartz_cutting_knife.name=地獄石英切割刀
item.appliedenergistics2.nether_quartz_hoe.name=地獄石英鋤
item.appliedenergistics2.nether_quartz_pickaxe.name=地獄石英鎬
item.appliedenergistics2.nether_quartz_spade.name=地獄石英鏟
item.appliedenergistics2.nether_quartz_sword.name=地獄石英劍
item.appliedenergistics2.nether_quartz_wrench.name=地獄石英扳手
item.appliedenergistics2.ToolDebugCard.name=Dev.調試卡
item.appliedenergistics2.ToolReplicatorCard.name=Dev.復制卡
item.appliedenergistics2.paint_ball.name=染色球
item.appliedenergistics2.portable_cell.name=便攜元件
item.appliedenergistics2.network_tool.name=網絡工具
item.appliedenergistics2.charged_staff.name=充能手杖
item.appliedenergistics2.entropy_manipulator.name=熵變機械臂
item.appliedenergistics2.matter_cannon.name=物質炮
item.appliedenergistics2.memory_card.name=內存卡
item.appliedenergistics2.color_applicator.name=染色器
item.appliedenergistics2.wireless_terminal.name=無線終端
item.appliedenergistics2.biometric_card.name=身份卡
item.appliedenergistics2.debug_card.name=Dev.調試卡
item.appliedenergistics2.debug_replicator_card.name=Dev.複製卡
// 指令
commands.ae2.usage=由應用能源2提供的指令——使用/ae2 list 以獲得列表,和/ae2 help _____ 以獲取指令幫助。
commands.ae2.permissions=您沒有足夠的權限來運行此命令。
commands.ae2.ChunkLogger=切換區塊加載和卸載到伺服器日誌。(管理員)
commands.ae2.ChunkLoggerOn=區塊記錄現在開啟
commands.ae2.ChunkLoggerOff=區塊記錄現在關閉
commands.ae2.Supporters=顯示AE2支持者的列表
// 成就
achievement.ae2.Root=應用能源
achievement.ae2.Root.desc=當一個箱子是不夠的。
achievement.ae2.Compass=隕石追跡者
achievement.ae2.Compass.desc=合成一個隕石羅盤
achievement.ae2.Presses=這是什麼東西啊!?
achievement.ae2.Presses=這是什麼東西啊?
achievement.ae2.Presses.desc=找到一塊壓印模板
achievement.ae2.SpatialIO=空間操弄者
achievement.ae2.SpatialIO.desc=合成一個空間IO端口
achievement.ae2.SpatialIOExplorer=大膽地去吧!
achievement.ae2.SpatialIOExplorer=大膽地去吧
achievement.ae2.SpatialIOExplorer.desc=被儲存在空間硬碟裡
achievement.ae2.StorageCell=勝過箱子
achievement.ae2.StorageCell.desc=合成一個存儲元件
achievement.ae2.IOPort=物品操弄者
achievement.ae2.IOPort.desc=合成一個ME-IO端口
achievement.ae2.CraftingTerminal=好一個"大"桌子
achievement.ae2.CraftingTerminal=好一個「大」桌子
achievement.ae2.CraftingTerminal.desc=合成一個ME合成終端
achievement.ae2.PatternTerminal=合成大師
achievement.ae2.PatternTerminal.desc=合成一個ME樣板終端
achievement.ae2.ChargedQuartz=哇!閃耀!!
achievement.ae2.ChargedQuartz=哇閃耀!!
achievement.ae2.ChargedQuartz.desc=找到充能賽特斯石英水晶
achievement.ae2.Fluix=這不是天然的!
achievement.ae2.Fluix=這不是天然的
achievement.ae2.Fluix.desc=製作福魯伊克斯水晶
achievement.ae2.Charger=水晶量產者
achievement.ae2.Charger.desc=合成一個充能器
@@ -449,7 +567,7 @@ achievement.ae2.Controller=交通樞紐
achievement.ae2.Controller.desc=合成一個控制器
achievement.ae2.Networking2=工程師
achievement.ae2.Networking2.desc=在你的網路中連接128台可互聯機器
achievement.ae2.Networking3=萬里長"程"
achievement.ae2.Networking3=萬里長「程」
achievement.ae2.Networking3.desc=在你的網路中連接2048台可互聯機器
achievement.ae2.P2P=雙向溝通
achievement.ae2.P2P.desc=合成一個P2P通道
@@ -465,5 +583,10 @@ achievement.ae2.PortableCell=百寶袋
achievement.ae2.PortableCell.desc=合成一個便攜元件
achievement.ae2.StorageBus=無窮潛力
achievement.ae2.StorageBus.desc=合成一個存儲總線
achievement.ae2.QNB=看!牛郎和織女牽手了!
achievement.ae2.QNB=看牛郎和織女牽手了
achievement.ae2.QNB.desc=合成一個量子環
// 統計
stat.ae2.ItemsInserted=添加到ME存儲的物品
stat.ae2.ItemsExtracted=從ME存儲中提取的物品
stat.ae2.TurnedCranks=轉動曲柄
@@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "appliedenergistics2:blocks/debug/energy_gen"
}
}
@@ -1,5 +1,5 @@
{
"parent": "item/generated",
"parent": "item/handheld",
"textures": {
"layer0": "appliedenergistics2:items/certus_quartz_axe"
}
@@ -1,5 +1,5 @@
{
"parent": "item/generated",
"parent": "item/handheld",
"textures": {
"layer0": "appliedenergistics2:items/certus_quartz_hoe"
}
@@ -1,5 +1,5 @@
{
"parent": "item/generated",
"parent": "item/handheld",
"textures": {
"layer0": "appliedenergistics2:items/certus_quartz_pickaxe"
}
@@ -1,5 +1,5 @@
{
"parent": "item/generated",
"parent": "item/handheld",
"textures": {
"layer0": "appliedenergistics2:items/certus_quartz_spade"
}
@@ -1,5 +1,5 @@
{
"parent": "item/generated",
"parent": "item/handheld",
"textures": {
"layer0": "appliedenergistics2:items/certus_quartz_sword"
}
@@ -1,5 +1,5 @@
{
"parent": "item/generated",
"parent": "item/handheld",
"textures": {
"layer0": "appliedenergistics2:items/charged_staff"
}
@@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "appliedenergistics2:items/debug/energy_gen"
}
}
@@ -1,5 +1,5 @@
{
"parent": "item/generated",
"parent": "item/handheld",
"textures": {
"layer0": "appliedenergistics2:items/entropy_manipulator"
}
@@ -1,6 +1,22 @@
{
"parent": "item/generated",
"parent": "item/handheld",
"textures": {
"layer0": "appliedenergistics2:items/matter_cannon"
},
"display": {
"thirdperson_righthand": {
"rotation": [
0,
-90,
0
]
},
"thirdperson_lefthand": {
"rotation": [
0,
90,
0
]
}
}
}
@@ -1,5 +1,5 @@
{
"parent": "item/generated",
"parent": "item/handheld",
"textures": {
"layer0": "appliedenergistics2:items/nether_quartz_axe"
}
@@ -1,5 +1,5 @@
{
"parent": "item/generated",
"parent": "item/handheld",
"textures": {
"layer0": "appliedenergistics2:items/nether_quartz_hoe"
}
@@ -1,5 +1,5 @@
{
"parent": "item/generated",
"parent": "item/handheld",
"textures": {
"layer0": "appliedenergistics2:items/nether_quartz_pickaxe"
}
@@ -1,5 +1,5 @@
{
"parent": "item/generated",
"parent": "item/handheld",
"textures": {
"layer0": "appliedenergistics2:items/nether_quartz_spade"
}
@@ -1,5 +1,5 @@
{
"parent": "item/generated",
"parent": "item/handheld",
"textures": {
"layer0": "appliedenergistics2:items/nether_quartz_sword"
}
@@ -0,0 +1,11 @@
{
"result": {
"item": "appliedenergistics2:sky_stone_brick"
},
"type": "forge:ore_shapeless",
"ingredients": [
{
"item": "appliedenergistics2:smooth_sky_stone_block"
}
]
}
@@ -0,0 +1,11 @@
{
"result": {
"item": "appliedenergistics2:sky_stone_small_brick"
},
"type": "forge:ore_shapeless",
"ingredients": [
{
"item": "appliedenergistics2:sky_stone_brick"
}
]
}
@@ -0,0 +1,11 @@
{
"result": {
"item": "appliedenergistics2:smooth_sky_stone_block"
},
"type": "forge:ore_shapeless",
"ingredients": [
{
"item": "appliedenergistics2:sky_stone_small_brick"
}
]
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 791 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 246 B