Compare commits

...

30 Commits

Author SHA1 Message Date
yueh c483bd17f5 Fixes #4089: Render cable core on straight lines of different types. (#4103) 2019-07-23 21:12:17 +02:00
yueh 92536fceb4 Fixes #4090 Portable cell incorrect empty itemstack handling (#4093) 2019-07-23 20:13:15 +02:00
yueh ded71cb2bd Fixes #4062: Rounding error due to float precision. (#4064) 2019-06-20 10:47:28 +02:00
yueh 41a4518c5b Fixes #4005: Persist cell after cleanup. (#4009) 2019-04-21 22:30:45 +02:00
yueh 87643094c3 Fixes #3925: Incorrect API JavaDoc (#4008)
`IGridBlock#getMachineRepresentation()` must be non null.
2019-04-21 22:30:35 +02:00
yueh 8a4c9b58e6 Fixes #3911: Incorrectly used string format. (#4007) 2019-04-21 22:30:21 +02:00
InterPlay 5436e6bf08 Added support for fluids in pt-BR lang file (#3904) 2019-04-21 13:20:57 +02:00
yueh 078112d97b Disable modmaven due to build issues for now (#4011) 2019-04-21 13:10:02 +02:00
yueh 46355a4e9b Fixes #3899: Put fluid interface into configured mode when needed. (#3903) 2019-01-15 12:52:12 +01:00
yueh eb389971a3 Fixes #3901: Ensure fluid terminal respects reported stacksizes. (#3902) 2019-01-15 12:52:00 +01:00
yueh a38ebf7c4d Fixes #3886: Initialise sleeping import bus in pulse mode. (#3887) 2018-12-26 23:28:17 +01:00
yueh dfcba264f3 Fixes #3880: Incorrect compare with empty itemstack. (#3882) 2018-12-25 21:21:19 +01:00
yueh d343ac47f5 Added CTM as actual soft dependency. (#3881) 2018-12-25 21:21:08 +01:00
yueh 05db930a4e Fixes #3821: Unconfigured level emitter now report all fluids. (#3875) 2018-12-24 14:44:40 +01:00
yueh 33bc0a6a3f Fixes #3776: Fixes dupe bug with cell upgrades. (#3874) 2018-12-24 14:11:45 +01:00
yueh f2f48a8d59 Fixes #3767: Fluid Annihilation plane too strict about leftover (#3872) 2018-12-23 23:33:15 +01:00
yueh 0f0af2349b Fixes #3866: Use blockstates to avoid the missing fluid block. (#3869) 2018-12-23 22:42:25 +01:00
yueh 32a4fcab77 Fixes #3768: Damageable items with nbt and without damage could crash. (#3867) 2018-12-23 22:42:09 +01:00
yueh a847a01d8a Feature #3832: Made onRequestChange() less ambiguous (#3833) 2018-12-23 22:41:52 +01:00
yueh ed643787df Updated gradle scripts (#3871)
Includes #3819
2018-12-23 22:41:11 +01:00
covers1624 524b26d2a2 Implement caching for facade item models. 2018-12-19 12:46:43 +01:00
covers1624 184b1f8efb Guard against models providing quads with null orientations. 2018-12-19 12:46:43 +01:00
E. Kim 06cca13087 Update ko_kr.lang (#3674) 2018-11-17 10:31:29 +01:00
徐晨曦 8e735e72ff Update zh_cn.lang (#3570) 2018-11-17 10:31:01 +01:00
yueh d3dd137570 Fixes #3817: Missing 1k Crafting Storage and Monitor from Network Status (#3818) 2018-11-11 13:11:45 +01:00
yueh 78e1126c38 Fixes #3814: IO Port no longer put to sleep on load when having work. (#3816) 2018-11-11 11:52:13 +01:00
yueh ebe3ff045d Fixes #3811: Display crafting unit as themself in the network monitor. (#3815) 2018-11-11 11:52:03 +01:00
yueh 6291a545c3 Fixes #3793: Limit filling fluid inventories to their max capacity. (#3794) 2018-10-21 11:18:02 +02:00
yueh 99fd5a9d53 Fixes #3790: Correctly handle fluids with NBT data. (#3791) 2018-10-21 11:17:27 +02:00
yueh 416c7d2683 Input P2P tunnels can now be assigned a new frequency. (#3765)
Shift right clicking an existing tunnel only allowed to copied the
stored frequency.

When shift right clicking now and the stored frequency being the same as
already stored one, it will now create a new one and save it to the memory
card. In other words doubling clicking will reset now, otherwise the old
behaviour is still kept.
2018-10-21 11:17:01 +02:00
43 changed files with 1141 additions and 715 deletions
+2 -2
View File
@@ -1,4 +1,4 @@
aeversion=rv5 aeversion=rv6
aechannel=alpha aechannel=alpha
aebuild=0 aebuild=0
aegroup=appeng aegroup=appeng
@@ -26,7 +26,7 @@ top_version=1.12-1.4.23-16
cofhcore_version=1.12.2-4.5.2.19 cofhcore_version=1.12.2-4.5.2.19
crafttweaker_version=4.1.8.9 crafttweaker_version=4.1.8.9
inventorytweaks_version=1.63 inventorytweaks_version=1.63
ctm_version=0.3.0.15 ctm_version=MC1.12.2-0.3.1.16
######################################################### #########################################################
# Deployment # # Deployment #
+24 -16
View File
@@ -24,36 +24,44 @@ allprojects {
} }
javadoc { javadoc {
options.encoding = 'UTF-8' options.encoding = 'UTF-8'
options.charSet = 'UTF-8' options.charSet = 'UTF-8'
} }
task javadocs(type: Javadoc) { task javadocs(type: Javadoc) {
source = sourceSets.api.java source = sourceSets.api.java
include "appeng/api/**" include "appeng/api/**"
// Due to ForgeGradle having to be a special snowflake, // Due to ForgeGradle having to be a special snowflake,
// we have to add some custom configurations to the normal compile configuration and hope it does not break. // we have to add some custom configurations to the normal compile configuration and hope it does not break.
classpath = configurations.compile + configurations.forgeGradleMc + configurations.forgeGradleMcDeps classpath = configurations.compile + configurations.forgeGradleMc + configurations.forgeGradleMcDeps
} }
task javadocJar(type: Jar, dependsOn: javadocs) { task javadocJar(type: Jar, dependsOn: javadocs) {
from javadoc.destinationDir from javadoc.destinationDir
classifier = 'javadoc'
classifier = 'javadoc'
} }
task apiJar(type: Jar) { task apiJar(type: Jar) {
from sourceSets.api.java from sourceSets.api.java
include "appeng/api/**" include "appeng/api/**"
from sourceSets.api.output from sourceSets.api.output
include "appeng/api/**" include "appeng/api/**"
classifier = 'api' classifier = 'api'
}
task sourceJar(type: Jar, overwrite: true) {
from sourceSets.api.allSource
from sourceSets.main.allSource
classifier = 'sources'
} }
artifacts { artifacts {
archives apiJar archives apiJar
archives javadocJar archives javadocJar
archives sourceJar archives sourceJar
} }
+5 -5
View File
@@ -64,10 +64,10 @@ repositories {
url "http://maven.blamejared.com/" url "http://maven.blamejared.com/"
} }
maven { // modmaven, maven proxy //maven { // modmaven, maven proxy
name 'modmaven' // name 'modmaven'
url "https://modmaven.k-4u.nl/" // url "https://modmaven.k-4u.nl/"
} //}
maven { maven {
name = "CurseForge" name = "CurseForge"
@@ -94,7 +94,7 @@ dependencies {
compileOnly "cofh:CoFHCore:${cofhcore_version}:deobf" compileOnly "cofh:CoFHCore:${cofhcore_version}:deobf"
compileOnly "CraftTweaker2:CraftTweaker2-API:${crafttweaker_version}" compileOnly "CraftTweaker2:CraftTweaker2-API:${crafttweaker_version}"
compileOnly "inventory-tweaks:InventoryTweaks:${inventorytweaks_version}:api" compileOnly "inventory-tweaks:InventoryTweaks:${inventorytweaks_version}:api"
compileOnly "team.chisel.ctm:CTM:MC1.12-${ctm_version}" compileOnly "team.chisel.ctm:CTM:${ctm_version}"
// at runtime, use the full JEI jar // at runtime, use the full JEI jar
runtime "mezz.jei:jei_${minecraft_version}:${jei_version}" runtime "mezz.jei:jei_${minecraft_version}:${jei_version}"
@@ -29,5 +29,5 @@ package appeng.api.implementations.items;
*/ */
public enum MemoryCardMessages public enum MemoryCardMessages
{ {
INVALID_MACHINE, SETTINGS_LOADED, SETTINGS_SAVED, SETTINGS_CLEARED INVALID_MACHINE, SETTINGS_LOADED, SETTINGS_SAVED, SETTINGS_RESET, SETTINGS_CLEARED
} }
@@ -28,7 +28,6 @@ import java.util.EnumSet;
import javax.annotation.Nonnegative; import javax.annotation.Nonnegative;
import javax.annotation.Nonnull; import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
@@ -126,6 +125,6 @@ public interface IGridBlock
* *
* @return the render item stack to use to render this node, null is valid, and will not show this node. * @return the render item stack to use to render this node, null is valid, and will not show this node.
*/ */
@Nullable @Nonnull
ItemStack getMachineRepresentation(); ItemStack getMachineRepresentation();
} }
@@ -99,9 +99,18 @@ public interface ICraftingGrid extends IGridCache
/** /**
* is this item being crafted? * is this item being crafted?
* *
* @param aeStackInSlot item being crafted * @param what item being crafted
* *
* @return true if it is being crafting * @return true if it is being crafting
*/ */
boolean isRequesting( IAEItemStack aeStackInSlot ); boolean isRequesting( IAEItemStack what );
/**
* The total amount being requested across all crafting cpus of a grid.
*
* @param what item being requested, ignores stacksize
*
* @return The total amount being requested.
*/
long requesting( IAEItemStack what );
} }
@@ -45,6 +45,7 @@ public class FacadeBakedItemModel extends DelegateBakedModel
private final ItemStack textureStack; private final ItemStack textureStack;
private final FacadeBuilder facadeBuilder; private final FacadeBuilder facadeBuilder;
private List<BakedQuad> quads = null;
protected FacadeBakedItemModel( IBakedModel base, ItemStack textureStack, FacadeBuilder facadeBuilder ) protected FacadeBakedItemModel( IBakedModel base, ItemStack textureStack, FacadeBuilder facadeBuilder )
{ {
@@ -60,9 +61,13 @@ public class FacadeBakedItemModel extends DelegateBakedModel
{ {
return Collections.emptyList(); return Collections.emptyList();
} }
List<BakedQuad> quads = new ArrayList<>(); if( quads == null )
quads.addAll( this.facadeBuilder.buildFacadeItemQuads( this.textureStack, EnumFacing.NORTH ) ); {
quads.addAll( this.getBaseModel().getQuads( state, side, rand ) ); quads = new ArrayList<>();
quads.addAll( this.facadeBuilder.buildFacadeItemQuads( this.textureStack, EnumFacing.NORTH ) );
quads.addAll( this.getBaseModel().getQuads( state, side, rand ) );
quads = Collections.unmodifiableList( quads );
}
return quads; return quads;
} }
@@ -21,9 +21,12 @@ package appeng.client.render;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import java.util.Objects;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import it.unimi.dsi.fastutil.ints.Int2ObjectArrayMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import net.minecraft.block.state.IBlockState; import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel; import net.minecraft.client.renderer.block.model.IBakedModel;
@@ -47,6 +50,7 @@ public class FacadeDispatcherBakedModel extends DelegateBakedModel
{ {
private final VertexFormat format; private final VertexFormat format;
private final FacadeBuilder facadeBuilder; private final FacadeBuilder facadeBuilder;
private final Int2ObjectMap<FacadeBakedItemModel> cache = new Int2ObjectArrayMap<>();
public FacadeDispatcherBakedModel( IBakedModel baseModel, VertexFormat format, FacadeBuilder facadeBuilder ) public FacadeDispatcherBakedModel( IBakedModel baseModel, VertexFormat format, FacadeBuilder facadeBuilder )
{ {
@@ -91,7 +95,15 @@ public class FacadeDispatcherBakedModel extends DelegateBakedModel
ItemStack textureItem = itemFacade.getTextureItem( stack ); ItemStack textureItem = itemFacade.getTextureItem( stack );
return new FacadeBakedItemModel( FacadeDispatcherBakedModel.this.getBaseModel(), textureItem, FacadeDispatcherBakedModel.this.facadeBuilder ); int hash = Objects.hash( textureItem.getItem().getRegistryName(), textureItem.getMetadata(), textureItem.getTagCompound() );
FacadeBakedItemModel model = FacadeDispatcherBakedModel.this.cache.get( hash );
if( model == null )
{
model = new FacadeBakedItemModel(FacadeDispatcherBakedModel.this.getBaseModel(), textureItem, FacadeDispatcherBakedModel.this.facadeBuilder);
FacadeDispatcherBakedModel.this.cache.put(hash, model);
}
return model;
} }
}; };
} }
@@ -493,6 +493,11 @@ class CableBuilder
this.addCoveredConnection( facing, cableColor, connectionType, cableBusAdjacent, quadsOut ); this.addCoveredConnection( facing, cableColor, connectionType, cableBusAdjacent, quadsOut );
return; return;
} }
else if( connectionType == AECableType.DENSE_COVERED )
{
this.addDenseCoveredConnection( facing, cableColor, connectionType, cableBusAdjacent, quadsOut );
return;
}
CubeBuilder cubeBuilder = new CubeBuilder( this.format, quadsOut ); CubeBuilder cubeBuilder = new CubeBuilder( this.format, quadsOut );
@@ -172,7 +172,7 @@ public class CableBusBakedModel implements IBakedModel
final AECableType secondType = sides.get( firstSide.getOpposite() ); final AECableType secondType = sides.get( firstSide.getOpposite() );
return firstType == secondType; return firstType == secondType && cableType == firstType && cableType == secondType;
} }
private void addCableQuads( CableBusRenderState renderState, List<BakedQuad> quadsOut ) private void addCableQuads( CableBusRenderState renderState, List<BakedQuad> quadsOut )
@@ -47,7 +47,7 @@ import appeng.container.slot.SlotRestrictedInput;
import appeng.tile.misc.TileCellWorkbench; import appeng.tile.misc.TileCellWorkbench;
import appeng.util.Platform; import appeng.util.Platform;
import appeng.util.helpers.ItemHandlerUtil; import appeng.util.helpers.ItemHandlerUtil;
import appeng.util.inv.WrapperLazyItemHandler; import appeng.util.inv.WrapperSupplierItemHandler;
import appeng.util.iterators.NullIterator; import appeng.util.iterators.NullIterator;
@@ -97,7 +97,7 @@ public class ContainerCellWorkbench extends ContainerUpgradeable
this.addSlotToContainer( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.WORKBENCH_CELL, cell, 0, 152, 8, this.getPlayerInv() ) ); this.addSlotToContainer( new SlotRestrictedInput( SlotRestrictedInput.PlacableItemType.WORKBENCH_CELL, cell, 0, 152, 8, this.getPlayerInv() ) );
final IItemHandler inv = this.getUpgradeable().getInventoryByName( "config" ); final IItemHandler inv = this.getUpgradeable().getInventoryByName( "config" );
final WrapperLazyItemHandler upgradeInventory = new WrapperLazyItemHandler( this::getCellUpgradeInventory ); final WrapperSupplierItemHandler upgradeInventory = new WrapperSupplierItemHandler( this::getCellUpgradeInventory );
// null, 3 * 8 ); // null, 3 * 8 );
int offset = 0; int offset = 0;
@@ -60,31 +60,21 @@ public class ContainerMEPortableCell extends ContainerMEMonitorable
{ {
final ItemStack currentItem = this.slot < 0 ? this.getPlayerInv().getCurrentItem() : this.getPlayerInv().getStackInSlot( this.slot ); final ItemStack currentItem = this.slot < 0 ? this.getPlayerInv().getCurrentItem() : this.getPlayerInv().getStackInSlot( this.slot );
if( this.civ != null ) if( this.civ == null || currentItem.isEmpty() )
{
if( currentItem != this.civ.getItemStack() )
{
if( !currentItem.isEmpty() )
{
if( ItemStack.areItemsEqual( this.civ.getItemStack(), currentItem ) )
{
this.getPlayerInv().setInventorySlotContents( this.getPlayerInv().currentItem, this.civ.getItemStack() );
}
else
{
this.setValidContainer( false );
}
}
else
{
this.setValidContainer( false );
}
}
}
else
{ {
this.setValidContainer( false ); this.setValidContainer( false );
} }
else if( this.civ != null && !this.civ.getItemStack().isEmpty() && currentItem != this.civ.getItemStack() )
{
if( ItemStack.areItemsEqual( this.civ.getItemStack(), currentItem ) )
{
this.getPlayerInv().setInventorySlotContents( this.getPlayerInv().currentItem, this.civ.getItemStack() );
}
else
{
this.setValidContainer( false );
}
}
// drain 1 ae t // drain 1 ae t
this.ticks++; this.ticks++;
+3 -1
View File
@@ -47,6 +47,8 @@ import net.minecraftforge.fml.common.event.FMLServerStoppedEvent;
import net.minecraftforge.fml.common.event.FMLServerStoppingEvent; import net.minecraftforge.fml.common.event.FMLServerStoppingEvent;
import net.minecraftforge.fml.common.network.NetworkRegistry; import net.minecraftforge.fml.common.network.NetworkRegistry;
import team.chisel.ctm.CTM;
import appeng.api.AEApi; import appeng.api.AEApi;
import appeng.core.crash.CrashInfo; import appeng.core.crash.CrashInfo;
import appeng.core.crash.IntegrationCrashEnhancement; import appeng.core.crash.IntegrationCrashEnhancement;
@@ -81,7 +83,7 @@ public final class AppEng
private static final String FORGE_CURRENT_VERSION = ForgeVersion.majorVersion + "." + ForgeVersion.minorVersion + "." + ForgeVersion.revisionVersion + "." + ForgeVersion.buildVersion; private static final String FORGE_CURRENT_VERSION = ForgeVersion.majorVersion + "." + ForgeVersion.minorVersion + "." + ForgeVersion.revisionVersion + "." + ForgeVersion.buildVersion;
private static final String FORGE_MAX_VERSION = ( ForgeVersion.majorVersion + 1 ) + ".0.0.0"; private static final String FORGE_MAX_VERSION = ( ForgeVersion.majorVersion + 1 ) + ".0.0.0";
public static final String MOD_DEPENDENCIES = "required-after:forge@[" + FORGE_CURRENT_VERSION + "," + FORGE_MAX_VERSION + ")"; public static final String MOD_DEPENDENCIES = "required-after:forge@[" + FORGE_CURRENT_VERSION + "," + FORGE_MAX_VERSION + ");after:ctm@[" + CTM.VERSION + ",);";
@Nonnull @Nonnull
private static final AppEng INSTANCE = new AppEng(); private static final AppEng INSTANCE = new AppEng();
@@ -29,6 +29,7 @@ public enum PlayerMessages
InvalidMachine, InvalidMachine,
LoadedSettings, LoadedSettings,
SavedSettings, SavedSettings,
ResetSettings,
MachineNotPowered, MachineNotPowered,
isNowLocked, isNowLocked,
@@ -128,7 +128,7 @@ public class FluidStackSizeRenderer
format.setDecimalFormatSymbols( symbols ); format.setDecimalFormatSymbols( symbols );
format.setRoundingMode( RoundingMode.DOWN ); format.setRoundingMode( RoundingMode.DOWN );
return format.format( originalSize / 1000f ); return format.format( originalSize / 1000d );
} }
} }
@@ -27,11 +27,8 @@ import javax.annotation.Nonnull;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.init.Items;
import net.minecraft.inventory.IContainerListener; import net.minecraft.inventory.IContainerListener;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraftforge.common.ForgeModContainer;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidUtil; import net.minecraftforge.fluids.FluidUtil;
import net.minecraftforge.fluids.capability.IFluidHandlerItem; import net.minecraftforge.fluids.capability.IFluidHandlerItem;
@@ -353,32 +350,24 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa
super.doAction( player, action, slot, id ); super.doAction( player, action, slot, id );
return; return;
} }
ItemStack held = player.inventory.getItemStack();
final ItemStack held = player.inventory.getItemStack();
if( held.getCount() != 1 ) if( held.getCount() != 1 )
{ {
// only support stacksize 1 for now // only support stacksize 1 for now
return; return;
} }
IFluidHandlerItem fh = FluidUtil.getFluidHandler( held );
final IFluidHandlerItem fh = FluidUtil.getFluidHandler( held );
if( fh == null ) if( fh == null )
{ {
// only fluid handlers items // only fluid handlers items
return; return;
} }
boolean isBucket = held.getItem() == Items.BUCKET || held.getItem() == Items.WATER_BUCKET || held.getItem() == Items.LAVA_BUCKET || held
.getItem() == Items.MILK_BUCKET || held.getItem() == ForgeModContainer.getInstance().universalBucket;
if( action == InventoryAction.FILL_ITEM && this.clientRequestedTargetFluid != null ) if( action == InventoryAction.FILL_ITEM && this.clientRequestedTargetFluid != null )
{ {
AEFluidStack stack = (AEFluidStack) this.clientRequestedTargetFluid.copy(); final IAEFluidStack stack = this.clientRequestedTargetFluid.copy();
AELog.debug( "Filling %s with %s, %s mb", held.getDisplayName(), this.clientRequestedTargetFluid.getFluidStack().getLocalizedName(),
stack.getStackSize() );
if( isBucket && stack.getStackSize() < Fluid.BUCKET_VOLUME )
{ // Although buckets support less than a buckets worth of fluid, it does not display how much it holds
return;
}
// Check how much we can store in the item // Check how much we can store in the item
stack.setStackSize( Integer.MAX_VALUE ); stack.setStackSize( Integer.MAX_VALUE );
@@ -386,16 +375,22 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa
stack.setStackSize( amountAllowed ); stack.setStackSize( amountAllowed );
// Check if we can pull out of the system // Check if we can pull out of the system
IAEFluidStack canPull = Platform.poweredExtraction( this.getPowerSource(), this.monitor, stack, this.getActionSource(), Actionable.SIMULATE ); final IAEFluidStack canPull = Platform.poweredExtraction( this.getPowerSource(), this.monitor, stack, this.getActionSource(), Actionable.SIMULATE );
if( canPull == null || canPull.getStackSize() < 1 || ( isBucket && canPull.getStackSize() != Fluid.BUCKET_VOLUME ) ) if( canPull == null || canPull.getStackSize() < 1 )
{
return;
}
// How much could fit into the container
final int canFill = fh.fill( canPull.getFluidStack(), false );
if( canFill == 0 )
{ {
// Either we couldn't pull out of the system,
// or we are using a bucket and can only pull out less than a buckets worth of fluid
return; return;
} }
// Now actually pull out of the system // Now actually pull out of the system
IAEFluidStack pulled = Platform.poweredExtraction( this.getPowerSource(), this.monitor, stack, this.getActionSource() ); stack.setStackSize( canFill );
final IAEFluidStack pulled = Platform.poweredExtraction( this.getPowerSource(), this.monitor, stack, this.getActionSource() );
if( pulled == null || pulled.getStackSize() < 1 ) if( pulled == null || pulled.getStackSize() < 1 )
{ {
// Something went wrong // Something went wrong
@@ -404,42 +399,55 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa
} }
// Actually fill // Actually fill
fh.fill( pulled.getFluidStack(), true ); final int used = fh.fill( pulled.getFluidStack(), true );
if( used != canFill )
{
AELog.error( "Fluid item [%s] reported a different possible amount than it actually accepted.", held.getDisplayName() );
}
player.inventory.setItemStack( fh.getContainer() ); player.inventory.setItemStack( fh.getContainer() );
this.updateHeld( player ); this.updateHeld( player );
} }
else if( action == InventoryAction.EMPTY_ITEM ) else if( action == InventoryAction.EMPTY_ITEM )
{ {
// Empty held item
AELog.debug( "Emptying %s", held.getDisplayName() );
// See how much we can drain from the item // See how much we can drain from the item
FluidStack extract = fh.drain( Integer.MAX_VALUE, false ); final FluidStack extract = fh.drain( Integer.MAX_VALUE, false );
if( extract == null || extract.amount < 1 ) if( extract == null || extract.amount < 1 )
{ {
return; return;
} }
// Check if we can push into the system // Check if we can push into the system
IAEFluidStack notPushed = Platform.poweredInsert( this.getPowerSource(), this.monitor, AEFluidStack.fromFluidStack( extract ), final IAEFluidStack notStorable = Platform.poweredInsert( this.getPowerSource(), this.monitor, AEFluidStack.fromFluidStack( extract ),
this.getActionSource(), Actionable.SIMULATE ); this.getActionSource(), Actionable.SIMULATE );
if( isBucket && notPushed != null && notPushed.getStackSize() > 0 )
{
// We can't push enough for the bucket
return;
}
IAEFluidStack notInserted = Platform.poweredInsert( this.getPowerSource(), this.monitor, AEFluidStack.fromFluidStack( extract ), if( notStorable != null && notStorable.getStackSize() > 0 )
this.getActionSource() );
if( notInserted != null && notInserted.getStackSize() > 0 )
{ {
// Only try to extract the amount we DID insert final int toStore = (int) ( extract.amount - notStorable.getStackSize() );
extract.amount -= Math.toIntExact( notInserted.getStackSize() ); final FluidStack storable = fh.drain( toStore, false );
if( storable == null || storable.amount == 0 )
{
return;
}
else
{
extract.amount = storable.amount;
}
} }
// Actually drain // Actually drain
fh.drain( extract, true ); final FluidStack drained = fh.drain( extract, true );
extract.amount = drained.amount;
final IAEFluidStack notInserted = Platform.poweredInsert( this.getPowerSource(), this.monitor, AEFluidStack.fromFluidStack( extract ),
this.getActionSource() );
if( notInserted != null && notInserted.getStackSize() > 0 )
{
AELog.error( "Fluid item [%s] reported a different possible amount to drain than it actually provided.", held.getDisplayName() );
}
player.inventory.setItemStack( fh.getContainer() ); player.inventory.setItemStack( fh.getContainer() );
this.updateHeld( player ); this.updateHeld( player );
@@ -255,6 +255,17 @@ public class DualityFluidInterface implements IGridTickable, IStorageMonitorable
private void readConfig() private void readConfig()
{ {
this.hasConfig = false;
for( int i = 0; i < this.config.getSlots(); i++ )
{
if( this.config.getFluidInSlot( i ) != null )
{
this.hasConfig = true;
break;
}
}
final boolean had = this.hasWorkToDo(); final boolean had = this.hasWorkToDo();
for( int x = 0; x < NUMBER_OF_TANKS; x++ ) for( int x = 0; x < NUMBER_OF_TANKS; x++ )
@@ -304,7 +304,8 @@ public class PartFluidAnnihilationPlane extends PartBasicState implements IGridT
{ {
return false; return false;
} }
return inv.injectItems( stack, Actionable.SIMULATE, this.mySrc ) == null; final IAEFluidStack leftOver = inv.injectItems( stack, Actionable.SIMULATE, this.mySrc );
return leftOver == null || leftOver.getStackSize() == 0;
} }
} }
catch( final GridAccessException e ) catch( final GridAccessException e )
@@ -22,11 +22,13 @@ import appeng.api.networking.events.MENetworkChannelsChanged;
import appeng.api.networking.events.MENetworkEventSubscribe; import appeng.api.networking.events.MENetworkEventSubscribe;
import appeng.api.networking.events.MENetworkPowerStatusChange; import appeng.api.networking.events.MENetworkPowerStatusChange;
import appeng.api.networking.security.IActionSource; import appeng.api.networking.security.IActionSource;
import appeng.api.networking.storage.IBaseMonitor;
import appeng.api.networking.storage.IStackWatcher; import appeng.api.networking.storage.IStackWatcher;
import appeng.api.networking.storage.IStackWatcherHost; import appeng.api.networking.storage.IStackWatcherHost;
import appeng.api.parts.IPartCollisionHelper; import appeng.api.parts.IPartCollisionHelper;
import appeng.api.parts.IPartModel; import appeng.api.parts.IPartModel;
import appeng.api.storage.IMEMonitor; import appeng.api.storage.IMEMonitor;
import appeng.api.storage.IMEMonitorHandlerReceiver;
import appeng.api.storage.IStorageChannel; import appeng.api.storage.IStorageChannel;
import appeng.api.storage.channels.IFluidStorageChannel; import appeng.api.storage.channels.IFluidStorageChannel;
import appeng.api.storage.data.IAEFluidStack; import appeng.api.storage.data.IAEFluidStack;
@@ -48,7 +50,7 @@ import appeng.util.IConfigManagerHost;
import appeng.util.Platform; import appeng.util.Platform;
public class PartFluidLevelEmitter extends PartUpgradeable implements IStackWatcherHost, IConfigManagerHost, IAEFluidInventory public class PartFluidLevelEmitter extends PartUpgradeable implements IStackWatcherHost, IConfigManagerHost, IAEFluidInventory, IMEMonitorHandlerReceiver<IAEFluidStack>
{ {
@PartModels @PartModels
public static final ResourceLocation MODEL_BASE_OFF = new ResourceLocation( AppEng.MOD_ID, "part/level_emitter_base_off" ); public static final ResourceLocation MODEL_BASE_OFF = new ResourceLocation( AppEng.MOD_ID, "part/level_emitter_base_off" );
@@ -153,6 +155,41 @@ public class PartFluidLevelEmitter extends PartUpgradeable implements IStackWatc
return cf | ( this.prevState ? FLAG_ON : 0 ); return cf | ( this.prevState ? FLAG_ON : 0 );
} }
@Override
public boolean isValid( final Object effectiveGrid )
{
try
{
return this.getProxy().getGrid() == effectiveGrid;
}
catch( final GridAccessException e )
{
return false;
}
}
@Override
public void postChange( final IBaseMonitor<IAEFluidStack> monitor, final Iterable<IAEFluidStack> change, final IActionSource actionSource )
{
this.updateReportingValue( (IMEMonitor<IAEFluidStack>) monitor );
}
@Override
public void onListUpdate()
{
try
{
final IStorageChannel<IAEFluidStack> channel = AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class );
final IMEMonitor<IAEFluidStack> inventory = this.getProxy().getStorage().getInventory( channel );
this.updateReportingValue( inventory );
}
catch( final GridAccessException e )
{
// ;P
}
}
private void updateState() private void updateState()
{ {
final boolean isOn = this.isLevelEmitterOn(); final boolean isOn = this.isLevelEmitterOn();
@@ -168,31 +205,53 @@ public class PartFluidLevelEmitter extends PartUpgradeable implements IStackWatc
private void configureWatchers() private void configureWatchers()
{ {
final IFluidStorageChannel channel = AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class );
if( this.stackWatcher != null ) if( this.stackWatcher != null )
{ {
this.stackWatcher.reset(); this.stackWatcher.reset();
final IAEFluidStack myStack = this.config.getFluidInSlot( 0 ); final IAEFluidStack myStack = this.config.getFluidInSlot( 0 );
if( myStack != null )
try
{ {
this.stackWatcher.add( myStack ); if( myStack != null )
{
this.getProxy().getStorage().getInventory( channel ).removeListener( this );
this.stackWatcher.add( myStack );
}
else
{
this.getProxy()
.getStorage()
.getInventory( channel )
.addListener( this, this.getProxy().getGrid() );
}
final IMEMonitor<IAEFluidStack> inventory = this.getProxy().getStorage().getInventory( channel );
this.updateReportingValue( inventory );
}
catch( GridAccessException e )
{
// NOP
} }
}
try
{
this.updateReportingValue(
this.getProxy().getStorage().getInventory( AEApi.instance().storage().getStorageChannel( IFluidStorageChannel.class ) ) );
}
catch( GridAccessException e )
{
// x.x
} }
} }
private void updateReportingValue( final IMEMonitor<IAEFluidStack> monitor ) private void updateReportingValue( final IMEMonitor<IAEFluidStack> monitor )
{ {
final IAEFluidStack myStack = this.config.getFluidInSlot( 0 ); final IAEFluidStack myStack = this.config.getFluidInSlot( 0 );
if( myStack != null )
if( myStack == null )
{
this.lastReportedValue = 0;
for( final IAEFluidStack st : monitor.getStorageList() )
{
this.lastReportedValue += st.getStackSize();
}
}
else
{ {
final IAEFluidStack r = monitor.getStorageList().findPrecise( myStack ); final IAEFluidStack r = monitor.getStorageList().findPrecise( myStack );
if( r == null ) if( r == null )
@@ -17,10 +17,10 @@ public class AEFluidInventory implements IAEFluidTank
{ {
private final IAEFluidStack[] fluids; private final IAEFluidStack[] fluids;
private final IAEFluidInventory handler; private final IAEFluidInventory handler;
private final long capacity; private final int capacity;
private IFluidTankProperties[] props = null; private IFluidTankProperties[] props = null;
public AEFluidInventory( final IAEFluidInventory handler, final int slots, final long capcity ) public AEFluidInventory( final IAEFluidInventory handler, final int slots, final int capcity )
{ {
this.fluids = new IAEFluidStack[slots]; this.fluids = new IAEFluidStack[slots];
this.handler = handler; this.handler = handler;
@@ -29,7 +29,7 @@ public class AEFluidInventory implements IAEFluidTank
public AEFluidInventory( final IAEFluidInventory handler, final int slots ) public AEFluidInventory( final IAEFluidInventory handler, final int slots )
{ {
this( handler, slots, Long.MAX_VALUE ); this( handler, slots, Integer.MAX_VALUE );
} }
@Override @Override
@@ -110,45 +110,34 @@ public class AEFluidInventory implements IAEFluidTank
final IAEFluidStack fluid = this.fluids[slot]; final IAEFluidStack fluid = this.fluids[slot];
if( !doFill ) if( fluid != null && !fluid.equals( resource ) )
{
if( fluid == null )
{
return resource.amount;
}
if( !fluid.equals( resource ) )
{
return 0;
}
return (int) Math.min( Math.min( this.capacity - fluid.getStackSize(), resource.amount ), Integer.MAX_VALUE );
}
if( fluid == null )
{
this.setFluidInSlot( slot, AEFluidStack.fromFluidStack( resource ) );
return resource.amount;
}
if( !fluid.equals( resource ) )
{ {
return 0; return 0;
} }
long filled = this.capacity - fluid.getStackSize();
if( resource.amount < filled ) int amountToStore = this.capacity;
if( fluid != null )
{ {
fluid.setStackSize( fluid.getStackSize() + resource.amount ); amountToStore -= fluid.getStackSize();
filled = resource.amount;
}
else
{
fluid.setStackSize( this.capacity );
} }
this.onContentChanged( slot ); amountToStore = Math.min( amountToStore, resource.amount );
return (int) filled;
if( doFill )
{
if( fluid == null )
{
this.setFluidInSlot( slot, AEFluidStack.fromFluidStack( resource ) );
}
else
{
fluid.setStackSize( fluid.getStackSize() + amountToStore );
this.onContentChanged( slot );
}
}
return amountToStore;
} }
public FluidStack drain( final int slot, final FluidStack resource, final boolean doDrain ) public FluidStack drain( final int slot, final FluidStack resource, final boolean doDrain )
@@ -363,7 +352,7 @@ public class AEFluidInventory implements IAEFluidTank
@Override @Override
public int getCapacity() public int getCapacity()
{ {
return (int) Math.min( AEFluidInventory.this.capacity, Integer.MAX_VALUE ); return Math.min( AEFluidInventory.this.capacity, Integer.MAX_VALUE );
} }
@Override @Override
@@ -49,37 +49,41 @@ import appeng.util.item.AEStack;
public final class AEFluidStack extends AEStack<IAEFluidStack> implements IAEFluidStack, Comparable<AEFluidStack> public final class AEFluidStack extends AEStack<IAEFluidStack> implements IAEFluidStack, Comparable<AEFluidStack>
{ {
private final int myHash;
private final Fluid fluid; private final Fluid fluid;
private NBTTagCompound tagCompound; private NBTTagCompound tagCompound;
private AEFluidStack( final AEFluidStack is ) private AEFluidStack( final AEFluidStack fluidStack )
{ {
this.fluid = fluidStack.fluid;
this.fluid = is.fluid; this.setStackSize( fluidStack.getStackSize() );
this.setStackSize( is.getStackSize() );
// priority = is.priority; // priority = is.priority;
this.setCraftable( is.isCraftable() ); this.setCraftable( fluidStack.isCraftable() );
this.setCountRequestable( is.getCountRequestable() ); this.setCountRequestable( fluidStack.getCountRequestable() );
this.myHash = is.myHash; if( fluidStack.hasTagCompound() )
{
this.tagCompound = fluidStack.tagCompound.copy();
}
} }
private AEFluidStack( @Nonnull final FluidStack is ) private AEFluidStack( @Nonnull final FluidStack fluidStack )
{ {
this.fluid = is.getFluid(); this.fluid = fluidStack.getFluid();
if( this.fluid == null ) if( this.fluid == null )
{ {
throw new IllegalArgumentException( "Fluid is null." ); throw new IllegalArgumentException( "Fluid is null." );
} }
this.setStackSize( is.amount ); this.setStackSize( fluidStack.amount );
this.setCraftable( false ); this.setCraftable( false );
this.setCountRequestable( 0 ); this.setCountRequestable( 0 );
this.myHash = this.fluid.hashCode() ^ ( this.tagCompound == null ? 0 : System.identityHashCode( this.tagCompound ) ); if( fluidStack.tag != null )
{
this.tagCompound = fluidStack.tag.copy();
}
} }
public static AEFluidStack fromFluidStack( final FluidStack input ) public static AEFluidStack fromFluidStack( final FluidStack input )
@@ -92,9 +96,9 @@ public final class AEFluidStack extends AEStack<IAEFluidStack> implements IAEFlu
return new AEFluidStack( input ); return new AEFluidStack( input );
} }
public static IAEFluidStack fromNBT( final NBTTagCompound i ) public static IAEFluidStack fromNBT( final NBTTagCompound data )
{ {
final FluidStack fluidStack = FluidStack.loadFluidStackFromNBT( i ); final FluidStack fluidStack = FluidStack.loadFluidStackFromNBT( data );
if( fluidStack == null ) if( fluidStack == null )
{ {
@@ -102,15 +106,21 @@ public final class AEFluidStack extends AEStack<IAEFluidStack> implements IAEFlu
} }
final AEFluidStack fluid = AEFluidStack.fromFluidStack( fluidStack ); final AEFluidStack fluid = AEFluidStack.fromFluidStack( fluidStack );
fluid.setStackSize( i.getLong( "Cnt" ) ); fluid.setStackSize( data.getLong( "Cnt" ) );
fluid.setCountRequestable( i.getLong( "Req" ) ); fluid.setCountRequestable( data.getLong( "Req" ) );
fluid.setCraftable( i.getBoolean( "Craft" ) ); fluid.setCraftable( data.getBoolean( "Craft" ) );
if( fluid.hasTagCompound() )
{
fluid.tagCompound = fluid.tagCompound.copy();
}
return fluid; return fluid;
} }
public static IAEFluidStack fromPacket( final ByteBuf data ) throws IOException public static IAEFluidStack fromPacket( final ByteBuf buffer ) throws IOException
{ {
final byte mask = data.readByte(); final byte mask = buffer.readByte();
final byte stackType = (byte) ( ( mask & 0x0C ) >> 2 ); final byte stackType = (byte) ( ( mask & 0x0C ) >> 2 );
final byte countReqType = (byte) ( ( mask & 0x30 ) >> 4 ); final byte countReqType = (byte) ( ( mask & 0x30 ) >> 4 );
final boolean isCraftable = ( mask & 0x40 ) > 0; final boolean isCraftable = ( mask & 0x40 ) > 0;
@@ -119,26 +129,26 @@ public final class AEFluidStack extends AEStack<IAEFluidStack> implements IAEFlu
// don't send this... // don't send this...
final NBTTagCompound d = new NBTTagCompound(); final NBTTagCompound d = new NBTTagCompound();
final byte len2 = data.readByte(); final byte len2 = buffer.readByte();
final byte[] name = new byte[len2]; final byte[] name = new byte[len2];
data.readBytes( name, 0, len2 ); buffer.readBytes( name, 0, len2 );
d.setString( "FluidName", new String( name, "UTF-8" ) ); d.setString( "FluidName", new String( name, "UTF-8" ) );
d.setByte( "Count", (byte) 0 ); d.setByte( "Count", (byte) 0 );
if( hasTagCompound ) if( hasTagCompound )
{ {
final int len = data.readInt(); final int len = buffer.readInt();
final byte[] bd = new byte[len]; final byte[] bd = new byte[len];
data.readBytes( bd ); buffer.readBytes( bd );
final DataInputStream di = new DataInputStream( new ByteArrayInputStream( bd ) ); final DataInputStream di = new DataInputStream( new ByteArrayInputStream( bd ) );
d.setTag( "tag", CompressedStreamTools.read( di ) ); d.setTag( "Tag", CompressedStreamTools.read( di ) );
} }
final long stackSize = getPacketValue( stackType, data ); final long stackSize = getPacketValue( stackType, buffer );
final long countRequestable = getPacketValue( countReqType, data ); final long countRequestable = getPacketValue( countReqType, buffer );
final FluidStack fluidStack = FluidStack.loadFluidStackFromNBT( d ); final FluidStack fluidStack = FluidStack.loadFluidStackFromNBT( d );
@@ -168,51 +178,21 @@ public final class AEFluidStack extends AEStack<IAEFluidStack> implements IAEFlu
} }
@Override @Override
public void writeToNBT( final NBTTagCompound i ) public void writeToNBT( final NBTTagCompound data )
{ {
/* data.setString( "FluidName", this.fluid.getName() );
* Mojang Fucked this over ; GC Optimization - Ugly Yes, but it saves a lot in the memory department. data.setByte( "Count", (byte) 0 );
*/ data.setLong( "Cnt", this.getStackSize() );
data.setLong( "Req", this.getCountRequestable() );
data.setBoolean( "Craft", this.isCraftable() );
/* if( this.hasTagCompound() )
* NBTBase FluidName = i.getTag( "FluidName" ); NBTBase Count = i.getTag( "Count" ); NBTBase Cnt = i.getTag(
* "Cnt" ); NBTBase Req = i.getTag( "Req" ); NBTBase Craft = i.getTag( "Craft" );
*/
/*
* if ( FluidName != null && FluidName instanceof NBTTagString ) ((NBTTagString) FluidName).data = (String)
* this.fluid.getName(); else
*/
i.setString( "FluidName", this.fluid.getName() );
/*
* if ( Count != null && Count instanceof NBTTagByte ) ((NBTTagByte) Count).data = (byte) 0; else
*/
i.setByte( "Count", (byte) 0 );
/*
* if ( Cnt != null && Cnt instanceof NBTTagLong ) ((NBTTagLong) Cnt).data = this.stackSize; else
*/
i.setLong( "Cnt", this.getStackSize() );
/*
* if ( Req != null && Req instanceof NBTTagLong ) ((NBTTagLong) Req).data = this.stackSize; else
*/
i.setLong( "Req", this.getCountRequestable() );
/*
* if ( Craft != null && Craft instanceof NBTTagByte ) ((NBTTagByte) Craft).data = (byte) (this.isCraftable() ?
* 1 : 0); else
*/
i.setBoolean( "Craft", this.isCraftable() );
if( this.tagCompound != null )
{ {
i.setTag( "tag", this.tagCompound ); data.setTag( "Tag", this.tagCompound );
} }
else else
{ {
i.removeTag( "tag" ); data.removeTag( "Tag" );
} }
} }
@@ -255,29 +235,43 @@ public final class AEFluidStack extends AEStack<IAEFluidStack> implements IAEFlu
} }
@Override @Override
public int compareTo( final AEFluidStack b ) public int compareTo( final AEFluidStack other )
{ {
final int diff = this.hashCode() - b.hashCode(); if( this.fluid != other.fluid )
return diff > 0 ? 1 : ( diff < 0 ? -1 : 0 ); {
return this.fluid.getName().compareTo( other.fluid.getName() );
}
if( Platform.itemComparisons().isNbtTagEqual( this.tagCompound, other.tagCompound ) )
{
return 0;
}
return this.tagCompound.hashCode() - other.tagCompound.hashCode();
} }
@Override @Override
public int hashCode() public int hashCode()
{ {
return this.myHash; final int prime = 31;
int result = 1;
result = prime * result + ( ( this.fluid == null ) ? 0 : this.fluid.hashCode() );
result = prime * result + ( ( this.tagCompound == null ) ? 0 : this.tagCompound.hashCode() );
return result;
} }
@Override @Override
public boolean equals( final Object ia ) public boolean equals( final Object other )
{ {
if( ia instanceof AEFluidStack ) if( other instanceof AEFluidStack )
{ {
final AEFluidStack is = (AEFluidStack) ia; final AEFluidStack is = (AEFluidStack) other;
return is.fluid == this.fluid && Platform.itemComparisons().isNbtTagEqual( this.tagCompound, is.tagCompound ); return is.fluid == this.fluid && Platform.itemComparisons().isNbtTagEqual( this.tagCompound, is.tagCompound );
} }
else if( ia instanceof FluidStack ) else if( other instanceof FluidStack )
{ {
final FluidStack is = (FluidStack) ia; final FluidStack is = (FluidStack) other;
return is.getFluid() == this.fluid && Platform.itemComparisons().isNbtTagEqual( this.tagCompound, is.tag ); return is.getFluid() == this.fluid && Platform.itemComparisons().isNbtTagEqual( this.tagCompound, is.tag );
} }
return false; return false;
@@ -286,7 +280,7 @@ public final class AEFluidStack extends AEStack<IAEFluidStack> implements IAEFlu
@Override @Override
public String toString() public String toString()
{ {
return this.getFluidStack().toString(); return this.getStackSize() + "x" + this.getFluidStack().getFluid().getName() + " " + this.tagCompound;
} }
@Override @Override
@@ -298,11 +292,8 @@ public final class AEFluidStack extends AEStack<IAEFluidStack> implements IAEFlu
@Override @Override
public FluidStack getFluidStack() public FluidStack getFluidStack()
{ {
final FluidStack is = new FluidStack( this.fluid, (int) Math.min( Integer.MAX_VALUE, this.getStackSize() ) ); final int amount = (int) Math.min( Integer.MAX_VALUE, this.getStackSize() );
if( this.tagCompound != null ) final FluidStack is = new FluidStack( this.fluid, amount, this.tagCompound );
{
is.tag = this.tagCompound.copy();
}
return is; return is;
} }
@@ -327,24 +318,24 @@ public final class AEFluidStack extends AEStack<IAEFluidStack> implements IAEFlu
} }
@Override @Override
public void writeToPacket( final ByteBuf i ) throws IOException public void writeToPacket( final ByteBuf buffer ) throws IOException
{ {
final byte mask = (byte) ( ( this.getType( this.getStackSize() ) << 2 ) | ( this final byte mask = (byte) ( ( this.getType( this.getStackSize() ) << 2 ) | ( this
.getType( this.getCountRequestable() ) << 4 ) | ( (byte) ( this.isCraftable() ? 1 : 0 ) << 6 ) | ( this.hasTagCompound() ? 1 : 0 ) << 7 ); .getType( this.getCountRequestable() ) << 4 ) | ( (byte) ( this.isCraftable() ? 1 : 0 ) << 6 ) | ( this.hasTagCompound() ? 1 : 0 ) << 7 );
i.writeByte( mask ); buffer.writeByte( mask );
this.writeToStream( i ); this.writeToStream( buffer );
this.putPacketValue( i, this.getStackSize() ); this.putPacketValue( buffer, this.getStackSize() );
this.putPacketValue( i, this.getCountRequestable() ); this.putPacketValue( buffer, this.getCountRequestable() );
} }
private void writeToStream( final ByteBuf i ) throws IOException private void writeToStream( final ByteBuf buffer ) throws IOException
{ {
final byte[] name = this.fluid.getName().getBytes( "UTF-8" ); final byte[] name = this.fluid.getName().getBytes( "UTF-8" );
i.writeByte( (byte) name.length ); buffer.writeByte( (byte) name.length );
i.writeBytes( name ); buffer.writeBytes( name );
if( this.hasTagCompound() ) if( this.hasTagCompound() )
{ {
final ByteArrayOutputStream bytes = new ByteArrayOutputStream(); final ByteArrayOutputStream bytes = new ByteArrayOutputStream();
@@ -355,8 +346,8 @@ public final class AEFluidStack extends AEStack<IAEFluidStack> implements IAEFlu
final byte[] tagBytes = bytes.toByteArray(); final byte[] tagBytes = bytes.toByteArray();
final int size = tagBytes.length; final int size = tagBytes.length;
i.writeInt( size ); buffer.writeInt( size );
i.writeBytes( tagBytes ); buffer.writeBytes( tagBytes );
} }
} }
} }
@@ -25,6 +25,7 @@ import net.minecraft.client.util.ITooltipFlag;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumActionResult; import net.minecraft.util.EnumActionResult;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraft.util.EnumHand; import net.minecraft.util.EnumHand;
@@ -174,6 +175,9 @@ public class ToolMemoryCard extends AEBaseItem implements IMemoryCard
case SETTINGS_SAVED: case SETTINGS_SAVED:
player.sendMessage( PlayerMessages.SavedSettings.get() ); player.sendMessage( PlayerMessages.SavedSettings.get() );
break; break;
case SETTINGS_RESET:
player.sendMessage( PlayerMessages.ResetSettings.get() );
break;
default: default:
} }
} }
@@ -185,9 +189,7 @@ public class ToolMemoryCard extends AEBaseItem implements IMemoryCard
{ {
if( !w.isRemote ) if( !w.isRemote )
{ {
final IMemoryCard mem = (IMemoryCard) player.getHeldItem( hand ).getItem(); this.clearCard( player, w, hand );
mem.notifyUser( player, MemoryCardMessages.SETTINGS_CLEARED );
player.getHeldItem( hand ).setTagCompound( null );
} }
return EnumActionResult.SUCCESS; return EnumActionResult.SUCCESS;
} }
@@ -197,9 +199,31 @@ public class ToolMemoryCard extends AEBaseItem implements IMemoryCard
} }
} }
@Override
public ActionResult<ItemStack> onItemRightClick( World w, EntityPlayer player, EnumHand hand )
{
if( player.isSneaking() )
{
if( !w.isRemote )
{
this.clearCard( player, w, hand );
}
}
return super.onItemRightClick( w, player, hand );
}
@Override @Override
public boolean doesSneakBypassUse( final ItemStack itemstack, final IBlockAccess world, final BlockPos pos, final EntityPlayer player ) public boolean doesSneakBypassUse( final ItemStack itemstack, final IBlockAccess world, final BlockPos pos, final EntityPlayer player )
{ {
return true; return true;
} }
private void clearCard( final EntityPlayer player, final World w, final EnumHand hand )
{
final IMemoryCard mem = (IMemoryCard) player.getHeldItem( hand ).getItem();
mem.notifyUser( player, MemoryCardMessages.SETTINGS_CLEARED );
player.getHeldItem( hand ).setTagCompound( null );
}
} }
@@ -68,23 +68,24 @@ public class ToolEntropyManipulator extends AEBasePoweredItem implements IBlockT
this.coolDown = new HashMap<>(); this.coolDown = new HashMap<>();
this.coolDown.put( new InWorldToolOperationIngredient( Blocks.STONE.getDefaultState() ), this.coolDown.put( new InWorldToolOperationIngredient( Blocks.STONE.getDefaultState() ),
new InWorldToolOperationResult( new ItemStack( Blocks.COBBLESTONE ) ) ); new InWorldToolOperationResult( Blocks.COBBLESTONE.getDefaultState() ) );
this.coolDown.put( new InWorldToolOperationIngredient( Blocks.STONEBRICK.getDefaultState() ), this.coolDown.put( new InWorldToolOperationIngredient( Blocks.STONEBRICK.getDefaultState() ),
new InWorldToolOperationResult( new ItemStack( Blocks.STONEBRICK, 1, 2 ) ) ); new InWorldToolOperationResult( Blocks.STONEBRICK.getStateFromMeta( 2 ) ) );
this.coolDown.put( new InWorldToolOperationIngredient( Blocks.LAVA, true ), new InWorldToolOperationResult( new ItemStack( Blocks.OBSIDIAN ) ) ); this.coolDown.put( new InWorldToolOperationIngredient( Blocks.LAVA, true ), new InWorldToolOperationResult( Blocks.OBSIDIAN.getDefaultState() ) );
this.coolDown.put( new InWorldToolOperationIngredient( Blocks.FLOWING_LAVA, true ), this.coolDown.put( new InWorldToolOperationIngredient( Blocks.FLOWING_LAVA, true ),
new InWorldToolOperationResult( new ItemStack( Blocks.OBSIDIAN ) ) ); new InWorldToolOperationResult( Blocks.OBSIDIAN.getDefaultState() ) );
this.coolDown.put( new InWorldToolOperationIngredient( Blocks.GRASS, true ), new InWorldToolOperationResult( new ItemStack( Blocks.DIRT ) ) ); this.coolDown.put( new InWorldToolOperationIngredient( Blocks.GRASS, true ), new InWorldToolOperationResult( Blocks.DIRT.getDefaultState() ) );
final List<ItemStack> snowBalls = new ArrayList<>(); final List<ItemStack> snowBalls = new ArrayList<>();
snowBalls.add( new ItemStack( Items.SNOWBALL ) ); snowBalls.add( new ItemStack( Items.SNOWBALL ) );
this.coolDown.put( new InWorldToolOperationIngredient( Blocks.FLOWING_WATER, true ), new InWorldToolOperationResult( ItemStack.EMPTY, snowBalls ) ); this.coolDown.put( new InWorldToolOperationIngredient( Blocks.FLOWING_WATER, true ), new InWorldToolOperationResult( null, snowBalls ) );
this.coolDown.put( new InWorldToolOperationIngredient( Blocks.WATER, true ), new InWorldToolOperationResult( new ItemStack( Blocks.ICE ) ) ); this.coolDown.put( new InWorldToolOperationIngredient( Blocks.WATER, true ), new InWorldToolOperationResult( Blocks.ICE.getDefaultState() ) );
this.heatUp.put( new InWorldToolOperationIngredient( Blocks.ICE.getDefaultState() ), new InWorldToolOperationResult( new ItemStack( Blocks.WATER ) ) ); this.heatUp.put( new InWorldToolOperationIngredient( Blocks.ICE.getDefaultState() ), new InWorldToolOperationResult( Blocks.WATER.getDefaultState() ) );
this.heatUp.put( new InWorldToolOperationIngredient( Blocks.FLOWING_WATER, true ), new InWorldToolOperationResult() ); this.heatUp.put( new InWorldToolOperationIngredient( Blocks.FLOWING_WATER, true ), new InWorldToolOperationResult() );
this.heatUp.put( new InWorldToolOperationIngredient( Blocks.WATER, true ), new InWorldToolOperationResult() ); this.heatUp.put( new InWorldToolOperationIngredient( Blocks.WATER, true ), new InWorldToolOperationResult() );
this.heatUp.put( new InWorldToolOperationIngredient( Blocks.SNOW, true ), new InWorldToolOperationResult( new ItemStack( Blocks.FLOWING_WATER ) ) ); this.heatUp.put( new InWorldToolOperationIngredient( Blocks.SNOW, true ),
new InWorldToolOperationResult( Blocks.FLOWING_WATER.getStateFromMeta( 7 ) ) );
} }
private static class InWorldToolOperationIngredient private static class InWorldToolOperationIngredient
@@ -135,10 +136,9 @@ public class ToolEntropyManipulator extends AEBasePoweredItem implements IBlockT
r = this.heatUp.get( new InWorldToolOperationIngredient( state.getBlock(), true ) ); r = this.heatUp.get( new InWorldToolOperationIngredient( state.getBlock(), true ) );
} }
if( !r.getBlockItem().isEmpty() ) if( r.getBlockState() != null )
{ {
final Block blk = Block.getBlockFromItem( r.getBlockItem().getItem() ); w.setBlockState( pos, r.getBlockState(), 3 );
w.setBlockState( pos, blk.getStateFromMeta( r.getBlockItem().getItemDamage() ), 3 );
} }
else else
{ {
@@ -172,10 +172,9 @@ public class ToolEntropyManipulator extends AEBasePoweredItem implements IBlockT
r = this.coolDown.get( new InWorldToolOperationIngredient( state.getBlock(), true ) ); r = this.coolDown.get( new InWorldToolOperationIngredient( state.getBlock(), true ) );
} }
if( !r.getBlockItem().isEmpty() ) if( r.getBlockState() != null )
{ {
final Block blk = Block.getBlockFromItem( r.getBlockItem().getItem() ); w.setBlockState( pos, r.getBlockState(), 3 );
w.setBlockState( pos, blk.getStateFromMeta( r.getBlockItem().getItemDamage() ), 3 );
} }
else else
{ {
@@ -326,14 +325,13 @@ public class ToolEntropyManipulator extends AEBasePoweredItem implements IBlockT
w.playSound( p, pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D, SoundEvents.ITEM_FLINTANDSTEEL_USE, SoundCategory.PLAYERS, 1.0F, w.playSound( p, pos.getX() + 0.5D, pos.getY() + 0.5D, pos.getZ() + 0.5D, SoundEvents.ITEM_FLINTANDSTEEL_USE, SoundCategory.PLAYERS, 1.0F,
itemRand.nextFloat() * 0.4F + 0.8F ); itemRand.nextFloat() * 0.4F + 0.8F );
if( or.getBlockItem().isEmpty() ) if( or.getBlockState() == null )
{ {
w.setBlockState( pos, Platform.AIR_BLOCK.getDefaultState(), 3 ); w.setBlockState( pos, Platform.AIR_BLOCK.getDefaultState(), 3 );
} }
else else
{ {
final Block blk = Block.getBlockFromItem( or.getBlockItem().getItem() ); w.setBlockState( pos, or.getBlockState(), 3 );
w.setBlockState( pos, blk.getStateFromMeta( or.getBlockItem().getItemDamage() ), 3 );
} }
if( or.getDrops() != null ) if( or.getDrops() != null )
+11 -5
View File
@@ -576,15 +576,21 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper
@Override @Override
public boolean isRequesting( final IAEItemStack what ) public boolean isRequesting( final IAEItemStack what )
{ {
return this.requesting( what ) > 0;
}
@Override
public long requesting( IAEItemStack what )
{
long requested = 0;
for( final CraftingCPUCluster cluster : this.craftingCPUClusters ) for( final CraftingCPUCluster cluster : this.craftingCPUClusters )
{ {
if( cluster.isMaking( what ) ) final IAEItemStack stack = cluster.making( what );
{ requested += stack != null ? stack.getStackSize() : 0;
return true;
}
} }
return false; return requested;
} }
public List<ICraftingMedium> getMediums( final ICraftingPatternDetails key ) public List<ICraftingMedium> getMediums( final ICraftingPatternDetails key )
@@ -28,7 +28,6 @@ import java.util.Map;
import java.util.Map.Entry; import java.util.Map.Entry;
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import net.minecraft.inventory.InventoryCrafting; import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
@@ -300,7 +299,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU
this.updateElapsedTime( what ); this.updateElapsedTime( what );
this.markDirty(); this.markDirty();
this.postCraftingStatusChange( is ); this.postCraftingStatusChange( what.copy().setStackSize( -what.getStackSize() ) );
if( this.finalOutput.equals( what ) ) if( this.finalOutput.equals( what ) )
{ {
@@ -332,6 +331,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU
what.decStackSize( is.getStackSize() ); what.decStackSize( is.getStackSize() );
is.setStackSize( 0 ); is.setStackSize( 0 );
this.postCraftingStatusChange( insert.copy().setStackSize( -insert.getStackSize() ) );
if( this.finalOutput.equals( insert ) ) if( this.finalOutput.equals( insert ) )
{ {
@@ -556,7 +556,9 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU
this.myLastLink = null; this.myLastLink = null;
this.tasks.clear(); this.tasks.clear();
final ImmutableSet<IAEItemStack> items = ImmutableSet.copyOf( this.waitingFor ); // final ImmutableSet<IAEItemStack> items = ImmutableSet.copyOf( this.waitingFor );
final List<IAEItemStack> items = new ArrayList<>( this.waitingFor.size() );
this.waitingFor.forEach( stack -> items.add( stack.copy().setStackSize( -stack.getStackSize() ) ) );
this.waitingFor.resetStatus(); this.waitingFor.resetStatus();
@@ -1304,10 +1306,9 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU
return this.getCore().getWorld(); return this.getCore().getWorld();
} }
public boolean isMaking( final IAEItemStack what ) public IAEItemStack making( final IAEItemStack what )
{ {
final IAEItemStack wat = this.waitingFor.findPrecise( what ); return this.waitingFor.findPrecise( what );
return wat != null && wat.getStackSize() > 0;
} }
public void breakCluster() public void breakCluster()
@@ -192,16 +192,29 @@ public abstract class AbstractCellInventory<T extends IAEStack<T>> implements IC
this.cellItems.resetStatus(); // clears totals and stuff. this.cellItems.resetStatus(); // clears totals and stuff.
final int types = (int) this.getStoredItemTypes(); final int types = (int) this.getStoredItemTypes();
boolean needsUpdate = false;
for( int slot = 0; slot < types; slot++ ) for( int slot = 0; slot < types; slot++ )
{ {
NBTTagCompound compoundTag = this.tagCompound.getCompoundTag( ITEM_SLOT_KEYS[slot] ); NBTTagCompound compoundTag = this.tagCompound.getCompoundTag( ITEM_SLOT_KEYS[slot] );
int stackSize = this.tagCompound.getInteger( ITEM_SLOT_COUNT_KEYS[slot] ); int stackSize = this.tagCompound.getInteger( ITEM_SLOT_COUNT_KEYS[slot] );
this.loadCellItem( compoundTag, stackSize ); needsUpdate |= !this.loadCellItem( compoundTag, stackSize );
}
if( needsUpdate )
{
this.saveChanges();
} }
} }
protected abstract void loadCellItem( NBTTagCompound compoundTag, int stackSize ); /**
* Load a single item.
*
* @param compoundTag
* @param stackSize
* @return true when successfully loaded
*/
protected abstract boolean loadCellItem( NBTTagCompound compoundTag, int stackSize );
@Override @Override
public IItemList<T> getAvailableItems( final IItemList<T> out ) public IItemList<T> getAvailableItems( final IItemList<T> out )
@@ -253,7 +253,7 @@ public class BasicCellInventory<T extends IAEStack<T>> extends AbstractCellInven
} }
@Override @Override
protected void loadCellItem( NBTTagCompound compoundTag, int stackSize ) protected boolean loadCellItem( NBTTagCompound compoundTag, int stackSize )
{ {
// Now load the item stack // Now load the item stack
final T t; final T t;
@@ -263,7 +263,7 @@ public class BasicCellInventory<T extends IAEStack<T>> extends AbstractCellInven
if( t == null ) if( t == null )
{ {
AELog.warn( "Removing item " + compoundTag + " from storage cell because the associated item type couldn't be found." ); AELog.warn( "Removing item " + compoundTag + " from storage cell because the associated item type couldn't be found." );
return; return false;
} }
} }
catch( Throwable ex ) catch( Throwable ex )
@@ -271,7 +271,7 @@ public class BasicCellInventory<T extends IAEStack<T>> extends AbstractCellInven
if( AEConfig.instance().isRemoveCrashingItemsOnLoad() ) if( AEConfig.instance().isRemoveCrashingItemsOnLoad() )
{ {
AELog.warn( ex, "Removing item " + compoundTag + " from storage cell because loading the ItemStack crashed." ); AELog.warn( ex, "Removing item " + compoundTag + " from storage cell because loading the ItemStack crashed." );
return; return false;
} }
throw ex; throw ex;
} }
@@ -282,5 +282,7 @@ public class BasicCellInventory<T extends IAEStack<T>> extends AbstractCellInven
{ {
this.cellItems.add( t ); this.cellItems.add( t );
} }
return true;
} }
} }
@@ -140,7 +140,7 @@ public class PartImportBus extends PartSharedItemBus implements IInventoryDestin
@Override @Override
public TickingRequest getTickingRequest( final IGridNode node ) public TickingRequest getTickingRequest( final IGridNode node )
{ {
return new TickingRequest( TickRates.ImportBus.getMin(), TickRates.ImportBus.getMax(), this.getHandler() == null, false ); return new TickingRequest( TickRates.ImportBus.getMin(), TickRates.ImportBus.getMax(), this.isSleeping(), false );
} }
@Override @Override
@@ -138,8 +138,8 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
{ {
// Something broke. It should never return more than we requested... // Something broke. It should never return more than we requested...
// We're going to silently eat the remainder // We're going to silently eat the remainder
AELog.warn( "Mod that provided item handler %1 is broken. Returned %2 items, even though we requested %3.", AELog.warn( "Mod that provided item handler %s is broken. Returned %s items while only requesting %d.",
this.itemHandler.getClass().getSimpleName(), extracted.getCount(), remainingCurrentSlot ); this.itemHandler.getClass().getName(), extracted.toString(), remainingCurrentSlot );
extracted.setCount( remainingCurrentSlot ); extracted.setCount( remainingCurrentSlot );
} }
@@ -336,15 +336,18 @@ public abstract class PartP2PTunnel<T extends PartP2PTunnel> extends PartBasicSt
} }
final IMemoryCard mc = (IMemoryCard) is.getItem(); final IMemoryCard mc = (IMemoryCard) is.getItem();
final NBTTagCompound data = new NBTTagCompound(); final NBTTagCompound data = mc.getData( is );
final short storedFrequency = data.getShort( "freq" );
short newFreq = this.getFrequency(); short newFreq = this.getFrequency();
final boolean wasOutput = this.isOutput(); final boolean wasOutput = this.isOutput();
this.setOutput( false ); this.setOutput( false );
final boolean needsNewFrequency = wasOutput || this.getFrequency() == 0 || storedFrequency == newFreq;
try try
{ {
if( wasOutput || this.getFrequency() == 0 ) if( needsNewFrequency )
{ {
newFreq = this.getProxy().getP2P().newFrequency(); newFreq = this.getProxy().getP2P().newFrequency();
} }
@@ -373,7 +376,14 @@ public abstract class PartP2PTunnel<T extends PartP2PTunnel> extends PartBasicSt
data.setIntArray( "colorCode", colorCode ); data.setIntArray( "colorCode", colorCode );
mc.setMemoryCardContents( is, type + ".name", data ); mc.setMemoryCardContents( is, type + ".name", data );
mc.notifyUser( player, MemoryCardMessages.SETTINGS_SAVED ); if( needsNewFrequency )
{
mc.notifyUser( player, MemoryCardMessages.SETTINGS_RESET );
}
else
{
mc.notifyUser( player, MemoryCardMessages.SETTINGS_SAVED );
}
return true; return true;
} }
return false; return false;
@@ -46,7 +46,6 @@ public class Quad implements IVertexProducer, ISmartVertexConsumer
public CachedFormat format; public CachedFormat format;
public int tintIndex = -1; public int tintIndex = -1;
// TODO, sometimes this is null because people don't do models properly.
public EnumFacing orientation; public EnumFacing orientation;
public boolean diffuseLighting = true; public boolean diffuseLighting = true;
public TextureAtlasSprite sprite; public TextureAtlasSprite sprite;
@@ -130,6 +129,10 @@ public class Quad implements IVertexProducer, ISmartVertexConsumer
{ {
this.vertexIndex = 0; this.vertexIndex = 0;
this.full = true; this.full = true;
if(orientation == null)
{
calculateOrientation(false);
}
} }
} }
} }
@@ -195,31 +198,41 @@ public class Quad implements IVertexProducer, ISmartVertexConsumer
vec[1] = (float) MathHelper.clamp( vec[1], bb.minY, bb.maxY ); vec[1] = (float) MathHelper.clamp( vec[1], bb.minY, bb.maxY );
vec[2] = (float) MathHelper.clamp( vec[2], bb.minZ, bb.maxZ ); vec[2] = (float) MathHelper.clamp( vec[2], bb.minZ, bb.maxZ );
} }
calculateOrientation(true);
this.v1.set( this.vertices[3].vec );
this.t.set( this.vertices[1].vec );
this.v1.sub( this.t );
this.v2.set( this.vertices[2].vec );
this.t.set( this.vertices[0].vec );
this.v2.sub( this.t );
this.normal.cross( this.v2, this.v1 );
this.normal.normalize();
if( this.format.hasNormal )
{
for( Vertex vertex : this.vertices )
{
vertex.normal[0] = this.normal.x;
vertex.normal[1] = this.normal.y;
vertex.normal[2] = this.normal.z;
vertex.normal[3] = 0;
}
}
this.orientation = EnumFacing.getFacingFromVector( this.normal.x, this.normal.y, this.normal.z );
} }
/**
* Re-calculates the Orientation of this quad,
* optionally the normal vector.
*
* @param setNormal If the normal vector should be updated.
*/
public void calculateOrientation( boolean setNormal )
{
this.v1.set( this.vertices[3].vec );
this.t.set( this.vertices[1].vec );
this.v1.sub( this.t );
this.v2.set( this.vertices[2].vec );
this.t.set( this.vertices[0].vec );
this.v2.sub( this.t );
this.normal.cross( this.v2, this.v1 );
this.normal.normalize();
if( this.format.hasNormal && setNormal)
{
for( Vertex vertex : this.vertices )
{
vertex.normal[0] = this.normal.x;
vertex.normal[1] = this.normal.y;
vertex.normal[2] = this.normal.z;
vertex.normal[3] = 0;
}
}
this.orientation = EnumFacing.getFacingFromVector( this.normal.x, this.normal.y, this.normal.z );
}
/** /**
* Used to create a new quad complete copy of this one. * Used to create a new quad complete copy of this one.
* *
@@ -20,15 +20,18 @@ package appeng.tile.crafting;
import java.io.IOException; import java.io.IOException;
import java.util.Optional;
import io.netty.buffer.ByteBuf; import io.netty.buffer.ByteBuf;
import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound; import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumFacing;
import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly; import net.minecraftforge.fml.relauncher.SideOnly;
import appeng.api.AEApi;
import appeng.api.implementations.tiles.IColorableTile; import appeng.api.implementations.tiles.IColorableTile;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
import appeng.api.util.AEColor; import appeng.api.util.AEColor;
@@ -183,4 +186,12 @@ public class TileCraftingMonitorTile extends TileCraftingTile implements IColora
{ {
this.updateList = updateList; this.updateList = updateList;
} }
@Override
protected ItemStack getItemFromTile( final Object obj )
{
final Optional<ItemStack> is = AEApi.instance().definitions().blocks().craftingMonitor().maybeStack( 1 );
return is.orElseGet( () -> super.getItemFromTile( obj ) );
}
} }
@@ -42,6 +42,9 @@ public class TileCraftingStorageTile extends TileCraftingTile
switch( storage ) switch( storage )
{ {
case 1:
is = blocks.craftingStorage1k().maybeStack( 1 );
break;
case 4: case 4:
is = blocks.craftingStorage4k().maybeStack( 1 ); is = blocks.craftingStorage4k().maybeStack( 1 );
break; break;
@@ -85,6 +85,10 @@ public class TileCraftingTile extends AENetworkTile implements IAEMultiBlock, IP
{ {
is = AEApi.instance().definitions().blocks().craftingAccelerator().maybeStack( 1 ); is = AEApi.instance().definitions().blocks().craftingAccelerator().maybeStack( 1 );
} }
else
{
is = AEApi.instance().definitions().blocks().craftingUnit().maybeStack( 1 );
}
return is.orElseGet( () -> super.getItemFromTile( obj ) ); return is.orElseGet( () -> super.getItemFromTile( obj ) );
} }
@@ -266,7 +266,7 @@ public class TileIOPort extends AENetworkInvTile implements IUpgradeableHost, IC
@Override @Override
public TickingRequest getTickingRequest( final IGridNode node ) public TickingRequest getTickingRequest( final IGridNode node )
{ {
return new TickingRequest( TickRates.IOPort.getMin(), TickRates.IOPort.getMax(), this.hasWork(), false ); return new TickingRequest( TickRates.IOPort.getMin(), TickRates.IOPort.getMax(), !this.hasWork(), false );
} }
@Override @Override
@@ -24,47 +24,48 @@ import java.util.List;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockAir; import net.minecraft.block.BlockAir;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
public class InWorldToolOperationResult public class InWorldToolOperationResult
{ {
private final ItemStack BlockItem; private final IBlockState blockState;
private final List<ItemStack> Drops; private final List<ItemStack> drops;
public InWorldToolOperationResult() public InWorldToolOperationResult()
{ {
this.BlockItem = ItemStack.EMPTY; this.blockState = null;
this.Drops = null; this.drops = null;
} }
public InWorldToolOperationResult( final ItemStack block, final List<ItemStack> drops ) public InWorldToolOperationResult( final IBlockState block, final List<ItemStack> drops )
{ {
this.BlockItem = block; this.blockState = block;
this.Drops = drops; this.drops = drops;
} }
public InWorldToolOperationResult( final ItemStack block ) public InWorldToolOperationResult( final IBlockState block )
{ {
this.BlockItem = block; this.blockState = block;
this.Drops = null; this.drops = null;
} }
public static InWorldToolOperationResult getBlockOperationResult( final ItemStack[] items ) public static InWorldToolOperationResult getBlockOperationResult( final ItemStack[] items )
{ {
final List<ItemStack> temp = new ArrayList<>(); final List<ItemStack> temp = new ArrayList<>();
ItemStack b = ItemStack.EMPTY; IBlockState b = null;
for( final ItemStack l : items ) for( final ItemStack l : items )
{ {
if( b.isEmpty() ) if( b == null )
{ {
final Block bl = Block.getBlockFromItem( l.getItem() ); final Block bl = Block.getBlockFromItem( l.getItem() );
if( bl != null && !( bl instanceof BlockAir ) ) if( bl != null && !( bl instanceof BlockAir ) )
{ {
b = l; b = bl.getDefaultState();
continue; continue;
} }
} }
@@ -75,13 +76,13 @@ public class InWorldToolOperationResult
return new InWorldToolOperationResult( b, temp ); return new InWorldToolOperationResult( b, temp );
} }
public ItemStack getBlockItem() public IBlockState getBlockState()
{ {
return this.BlockItem; return this.blockState;
} }
public List<ItemStack> getDrops() public List<ItemStack> getDrops()
{ {
return this.Drops; return this.drops;
} }
} }
@@ -25,17 +25,16 @@ import net.minecraft.item.ItemStack;
import net.minecraftforge.items.IItemHandler; import net.minecraftforge.items.IItemHandler;
import net.minecraftforge.items.IItemHandlerModifiable; import net.minecraftforge.items.IItemHandlerModifiable;
import appeng.util.Lazy;
import appeng.util.helpers.ItemHandlerUtil; import appeng.util.helpers.ItemHandlerUtil;
public class WrapperLazyItemHandler implements IItemHandlerModifiable public class WrapperSupplierItemHandler implements IItemHandlerModifiable
{ {
private final Lazy<IItemHandler> sourceHandler; private final Supplier<IItemHandler> sourceHandler;
public WrapperLazyItemHandler( Supplier<IItemHandler> source ) public WrapperSupplierItemHandler( Supplier<IItemHandler> source )
{ {
this.sourceHandler = new Lazy<>( source ); this.sourceHandler = source;
} }
@Override @Override
@@ -46,6 +46,11 @@ final class AESharedItemStack implements Comparable<AESharedItemStack>
this.itemDamage = itemStack.getItemDamage(); this.itemDamage = itemStack.getItemDamage();
} }
Bounds getBounds( final FuzzyMode fuzzy, final boolean ignoreMeta )
{
return new Bounds( this.itemStack, fuzzy, ignoreMeta );
}
ItemStack getDefinition() ItemStack getDefinition()
{ {
return this.itemStack; return this.itemStack;
@@ -139,83 +144,122 @@ final class AESharedItemStack implements Comparable<AESharedItemStack>
return System.identityHashCode( this.itemStack.getTagCompound() ) - System.identityHashCode( b.getTagCompound() ); return System.identityHashCode( this.itemStack.getTagCompound() ) - System.identityHashCode( b.getTagCompound() );
} }
public AESharedItemStack getLowerBound( final FuzzyMode fuzzy, final boolean ignoreMeta ) /**
* Creates the lower and upper bounds for a specific shared itemstack.
*/
public static final class Bounds
{ {
Preconditions.checkState( this.itemStack.getCount() == 1, "ItemStack#getCount() has to be 1" ); /**
final ItemStack newDef = this.itemStack.copy(); * Bounds enforced by {@link ItemStack#isEmpty()}
*/
private static final int MIN_DAMAGE_VALUE = 0;
private static final int MAX_DAMAGE_VALUE = 65535;
if( ignoreMeta ) private final AESharedItemStack lower;
private final AESharedItemStack upper;
public Bounds( final ItemStack stack, final FuzzyMode fuzzy, final boolean ignoreMeta )
{ {
newDef.setItemDamage( 0 ); Preconditions.checkState( !stack.isEmpty(), "ItemStack#isEmpty() has to be false" );
Preconditions.checkState( stack.getCount() == 1, "ItemStack#getCount() has to be 1" );
final NBTTagCompound tag = stack.hasTagCompound() ? stack.getTagCompound() : null;
this.lower = this.makeLowerBound( stack, tag, fuzzy, ignoreMeta );
this.upper = this.makeUpperBound( stack, tag, fuzzy, ignoreMeta );
} }
else
public AESharedItemStack lower()
{ {
if( newDef.getItem().isDamageable() ) return this.lower;
}
public AESharedItemStack upper()
{
return this.upper;
}
private AESharedItemStack makeLowerBound( final ItemStack itemStack, final NBTTagCompound tag, final FuzzyMode fuzzy, final boolean ignoreMeta )
{
final ItemStack newDef = itemStack.copy();
if( ignoreMeta )
{ {
if( fuzzy == FuzzyMode.IGNORE_ALL ) newDef.setItemDamage( MIN_DAMAGE_VALUE );
newDef.setTagCompound( tag );
}
else
{
if( newDef.getItem().isDamageable() )
{ {
newDef.setItemDamage( 0 ); if( fuzzy == FuzzyMode.IGNORE_ALL )
}
else if( fuzzy == FuzzyMode.PERCENT_99 )
{
if( this.itemStack.getItemDamage() == 0 )
{ {
newDef.setItemDamage( 0 ); newDef.setItemDamage( MIN_DAMAGE_VALUE );
}
else if( fuzzy == FuzzyMode.PERCENT_99 )
{
if( itemStack.getItemDamage() == MIN_DAMAGE_VALUE )
{
newDef.setItemDamage( MIN_DAMAGE_VALUE );
}
else
{
newDef.setItemDamage( MIN_DAMAGE_VALUE + 1 );
}
} }
else else
{ {
newDef.setItemDamage( 1 ); final int breakpoint = fuzzy.calculateBreakPoint( itemStack.getMaxDamage() );
final int damage = breakpoint <= itemStack.getItemDamage() ? breakpoint : 0;
newDef.setItemDamage( damage );
} }
} }
else newDef.setTagCompound( LOW_TAG );
{
final int breakpoint = fuzzy.calculateBreakPoint( this.itemStack.getMaxDamage() );
newDef.setItemDamage( breakpoint <= this.itemDamage ? breakpoint : 0 );
}
} }
newDef.setTagCompound( LOW_TAG );
return new AESharedItemStack( newDef );
} }
return new AESharedItemStack( newDef ); private AESharedItemStack makeUpperBound( final ItemStack itemStack, final NBTTagCompound tag, final FuzzyMode fuzzy, final boolean ignoreMeta )
}
public AESharedItemStack getUpperBound( final FuzzyMode fuzzy, final boolean ignoreMeta )
{
Preconditions.checkState( this.itemStack.getCount() == 1, "ItemStack#getCount() has to be 1" );
final ItemStack newDef = this.itemStack.copy();
if( ignoreMeta )
{ {
newDef.setItemDamage( Integer.MAX_VALUE ); final ItemStack newDef = itemStack.copy();
}
else if( ignoreMeta )
{
if( newDef.getItem().isDamageable() )
{ {
if( fuzzy == FuzzyMode.IGNORE_ALL ) newDef.setItemDamage( MAX_DAMAGE_VALUE );
newDef.setTagCompound( tag );
}
else
{
if( newDef.getItem().isDamageable() )
{ {
newDef.setItemDamage( this.itemStack.getMaxDamage() + 1 ); if( fuzzy == FuzzyMode.IGNORE_ALL )
}
else if( fuzzy == FuzzyMode.PERCENT_99 )
{
if( this.itemStack.getItemDamage() == 0 )
{ {
newDef.setItemDamage( 0 ); newDef.setItemDamage( itemStack.getMaxDamage() + 1 );
}
else if( fuzzy == FuzzyMode.PERCENT_99 )
{
if( itemStack.getItemDamage() == MIN_DAMAGE_VALUE )
{
newDef.setItemDamage( MIN_DAMAGE_VALUE );
}
else
{
newDef.setItemDamage( itemStack.getMaxDamage() + 1 );
}
} }
else else
{ {
newDef.setItemDamage( this.itemStack.getMaxDamage() + 1 ); final int breakpoint = fuzzy.calculateBreakPoint( itemStack.getMaxDamage() );
final int damage = itemStack.getItemDamage() < breakpoint ? breakpoint - 1 : itemStack.getMaxDamage() + 1;
newDef.setItemDamage( damage );
} }
} }
else newDef.setTagCompound( HIGH_TAG );
{
final int breakpoint = fuzzy.calculateBreakPoint( this.itemStack.getMaxDamage() );
newDef.setItemDamage( this.itemDamage < breakpoint ? breakpoint - 1 : this.itemStack.getMaxDamage() + 1 );
}
} }
newDef.setTagCompound( HIGH_TAG );
return new AESharedItemStack( newDef );
} }
return new AESharedItemStack( newDef );
} }
} }
+4 -5
View File
@@ -31,6 +31,7 @@ import net.minecraftforge.oredict.OreDictionary;
import appeng.api.config.FuzzyMode; import appeng.api.config.FuzzyMode;
import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IAEItemStack;
import appeng.api.storage.data.IItemList; import appeng.api.storage.data.IItemList;
import appeng.util.item.AESharedItemStack.Bounds;
public final class ItemList implements IItemList<IAEItemStack> public final class ItemList implements IItemList<IAEItemStack>
@@ -99,8 +100,7 @@ public final class ItemList implements IItemList<IAEItemStack>
return output; return output;
} }
} ) } ).orElse( this.findFuzzyDamage( ais, fuzzy, false ) );
.orElse( this.findFuzzyDamage( ais, fuzzy, false ) );
} }
@Override @Override
@@ -222,9 +222,8 @@ public final class ItemList implements IItemList<IAEItemStack>
private Collection<IAEItemStack> findFuzzyDamage( final IAEItemStack filter, final FuzzyMode fuzzy, final boolean ignoreMeta ) private Collection<IAEItemStack> findFuzzyDamage( final IAEItemStack filter, final FuzzyMode fuzzy, final boolean ignoreMeta )
{ {
final AEItemStack itemStack = (AEItemStack) filter; final AEItemStack itemStack = (AEItemStack) filter;
final AESharedItemStack low = itemStack.getSharedStack().getLowerBound( fuzzy, ignoreMeta ); final Bounds bounds = itemStack.getSharedStack().getBounds( fuzzy, ignoreMeta );
final AESharedItemStack high = itemStack.getSharedStack().getUpperBound( fuzzy, ignoreMeta );
return this.records.subMap( low, true, high, true ).descendingMap().values(); return this.records.subMap( bounds.lower(), true, bounds.upper(), true ).descendingMap().values();
} }
} }
@@ -84,7 +84,8 @@ chat.appliedenergistics2.DeviceNotLinked=Device is not linked.
chat.appliedenergistics2.StationCanNotBeLocated=Station can not be located. chat.appliedenergistics2.StationCanNotBeLocated=Station can not be located.
chat.appliedenergistics2.MachineNotPowered=Machine is not powered. chat.appliedenergistics2.MachineNotPowered=Machine is not powered.
chat.appliedenergistics2.CommunicationError=Error Communicating with Network. chat.appliedenergistics2.CommunicationError=Error Communicating with Network.
chat.appliedenergistics2.SavedSettings=Copied device configuration to memory card. chat.appliedenergistics2.SavedSettings=Copied current device configuration to memory card.
chat.appliedenergistics2.ResetSettings=New device configuration created and copied to memory card.
chat.appliedenergistics2.AmmoDepleted=Ammo Depleted. chat.appliedenergistics2.AmmoDepleted=Ammo Depleted.
chat.appliedenergistics2.isNowLocked=Monitor is now Locked. chat.appliedenergistics2.isNowLocked=Monitor is now Locked.
chat.appliedenergistics2.isNowUnlocked=Monitor is now Unlocked. chat.appliedenergistics2.isNowUnlocked=Monitor is now Unlocked.
@@ -1,4 +1,5 @@
tile.appliedenergistics2.cable_bus.name=AE2 케이블 and/or 버스 // Blocks
tile.appliedenergistics2.cable_bus.name=AE2 케이블 and/or 버스
tile.appliedenergistics2.cell_workbench.name=셀 작업대 tile.appliedenergistics2.cell_workbench.name=셀 작업대
tile.appliedenergistics2.charger.name=충전기 tile.appliedenergistics2.charger.name=충전기
tile.appliedenergistics2.chest.name=ME 상자 tile.appliedenergistics2.chest.name=ME 상자
@@ -12,34 +13,35 @@ tile.appliedenergistics2.drive.name=ME 드라이브
tile.appliedenergistics2.energy_acceptor.name=에너지 수용기 tile.appliedenergistics2.energy_acceptor.name=에너지 수용기
tile.appliedenergistics2.grindstone.name=석영 맷돌 tile.appliedenergistics2.grindstone.name=석영 맷돌
tile.appliedenergistics2.matrix_frame.name=행렬 프레임 tile.appliedenergistics2.matrix_frame.name=행렬 프레임
tile.appliedenergistics2.io_port.name=ME IO 포트 tile.appliedenergistics2.io_port.name=ME 입출력 포트
tile.appliedenergistics2.inscriber.name=회로 인쇄기 tile.appliedenergistics2.inscriber.name=회로 인쇄기
tile.appliedenergistics2.interface.name=ME 인터페이스 tile.appliedenergistics2.interface.name=ME 인터페이스
tile.appliedenergistics2.fluid_interface.name=ME 유체 인터페이스
tile.appliedenergistics2.quantum_link.name=ME 양자 연결기 tile.appliedenergistics2.quantum_link.name=ME 양자 연결기
tile.appliedenergistics2.quantum_ring.name=ME 양자 고리 tile.appliedenergistics2.quantum_ring.name=ME 양자 고리
tile.appliedenergistics2.fluix_block.name=액정 블럭 tile.appliedenergistics2.fluix_block.name=액정 블럭
tile.appliedenergistics2.quartz_block.name=투스 석영 블 tile.appliedenergistics2.quartz_block.name=투스 석영 블
tile.appliedenergistics2.chiseled_quartz_block.name=조각된 투스 석영 블 tile.appliedenergistics2.chiseled_quartz_block.name=조각된 투스 석영 블
tile.appliedenergistics2.quartz_glass.name=석영 유리 tile.appliedenergistics2.quartz_glass.name=석영 유리
tile.appliedenergistics2.quartz_vibrant_glass.name=공명 석영 유리 tile.appliedenergistics2.quartz_vibrant_glass.name=공명 석영 유리
tile.appliedenergistics2.quartz_pillar.name=투스 석영 기둥 tile.appliedenergistics2.quartz_pillar.name=투스 석영 기둥
tile.appliedenergistics2.quartz_fixture.name=충전된 석영 설비 tile.appliedenergistics2.quartz_fixture.name=충전된 석영 설비
tile.appliedenergistics2.light_detector.name=빛 감지 설비 tile.appliedenergistics2.light_detector.name=빛 감지 설비
tile.appliedenergistics2.spatial_io_port.name=시공 IO 포트 tile.appliedenergistics2.spatial_io_port.name=시공 입출력 포트
tile.appliedenergistics2.spatial_pylon.name=시공 지시탑 tile.appliedenergistics2.spatial_pylon.name=시공 지시탑
tile.appliedenergistics2.tiny_tnt.name=소형 TNT tile.appliedenergistics2.tiny_tnt.name=소형 TNT
tile.appliedenergistics2.vibration_chamber.name=공명 tile.appliedenergistics2.vibration_chamber.name=진동
tile.appliedenergistics2.wireless_access_point.name=ME 무선 액세스 포인트 tile.appliedenergistics2.wireless_access_point.name=ME 무선 액세스 포인트
tile.appliedenergistics2.quartz_ore.name=투스 석영 광석 tile.appliedenergistics2.quartz_ore.name=투스 석영 광석
tile.appliedenergistics2.charged_quartz_ore.name=충전된 투스 석영 광석 tile.appliedenergistics2.charged_quartz_ore.name=충전된 투스 석영 광석
tile.appliedenergistics2.security_station.name=ME 보안 단말기 tile.appliedenergistics2.security_station.name=ME 보안 단말기
tile.appliedenergistics2.quartz_growth_accelerator.name=결정 성장 촉진기 tile.appliedenergistics2.quartz_growth_accelerator.name=결정 성장 촉진기
tile.appliedenergistics2.sky_stone_block.name=천령석 tile.appliedenergistics2.sky_stone_block.name=천령석
tile.appliedenergistics2.smooth_sky_stone_block.name=천령석 블럭 tile.appliedenergistics2.smooth_sky_stone_block.name=부드러운 천령석
tile.appliedenergistics2.sky_stone_brick.name=천령석 벽돌 tile.appliedenergistics2.sky_stone_brick.name=천령석 벽돌
tile.appliedenergistics2.sky_stone_small_brick.name=천령석 작은 벽돌 tile.appliedenergistics2.sky_stone_small_brick.name=천령석 작은 벽돌
tile.appliedenergistics2.sky_stone_chest.name=천령석 창고 tile.appliedenergistics2.sky_stone_chest.name=천령석 상자
tile.appliedenergistics2.smooth_sky_stone_chest.name=천령석 블럭 창고 tile.appliedenergistics2.smooth_sky_stone_chest.name=천령석 블록 상자
tile.appliedenergistics2.sky_compass.name=운석 탐지기 tile.appliedenergistics2.sky_compass.name=운석 탐지기
tile.appliedenergistics2.crafting_monitor.name=조합 모니터 tile.appliedenergistics2.crafting_monitor.name=조합 모니터
tile.appliedenergistics2.crafting_storage_1k.name=1k 조합법 저장고 tile.appliedenergistics2.crafting_storage_1k.name=1k 조합법 저장고
@@ -51,31 +53,47 @@ tile.appliedenergistics2.crafting_unit.name=조합 유닛
tile.appliedenergistics2.molecular_assembler.name=분자 조합기 tile.appliedenergistics2.molecular_assembler.name=분자 조합기
// Stairs // Stairs
tile.appliedenergistics2.ChiseledQuartzStairBlock.name=Chiseled Certus Quartz Stairs tile.appliedenergistics2.fluix_stairs.name=액정 계단
tile.appliedenergistics2.fluix_stairs.name=Fluix Stairs tile.appliedenergistics2.quartz_stairs.name=서투스 석영 계단
tile.appliedenergistics2.QuartzPillarStairBlock.name=Certus Quartz Pillar Stairs tile.appliedenergistics2.chiseled_quartz_stairs.name=조각된 서투스 석영 계단
tile.appliedenergistics2.QuartzStairBlock.name=투스 석영 계단 tile.appliedenergistics2.quartz_pillar_stairs.name=투스 석영 기둥 계단
tile.appliedenergistics2.SkyStoneBlockStairBlock.name=스카이 스톤 블록 계단 tile.appliedenergistics2.smooth_sky_stone_stairs.name=부드러운 천령석 계단
tile.appliedenergistics2.SkyStoneBrickStairBlock.name=스카이 스톤 벽돌 계단 tile.appliedenergistics2.sky_stone_brick_stairs.name=천령석 벽돌 계단
tile.appliedenergistics2.SkyStoneSmallBrickStairBlock.name=Sky Stone Small Brick Stairs tile.appliedenergistics2.sky_stone_small_brick_stairs.name=천령석 작은 벽돌 계단
tile.appliedenergistics2.SkyStoneStairBlock.name=스카이 스톤 계단 tile.appliedenergistics2.sky_stone_stairs.name=천령석 계단
chat.appliedenergistics2.ChestCannotReadStorageCell=ME 창고가 셀을 읽을 수 없습니다. // Slabs
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 Messages
chat.appliedenergistics2.ChestCannotReadStorageCell=ME 상자가 셀을 읽을 수 없습니다.
chat.appliedenergistics2.SettingCleared=설정이 초기화 되었습니다. chat.appliedenergistics2.SettingCleared=설정이 초기화 되었습니다.
chat.appliedenergistics2.OutOfRange=무선 신호 범위 밖입니다. chat.appliedenergistics2.OutOfRange=무선 신호 범위를 이탈했습니다.
chat.appliedenergistics2.InvalidMachine=알 수 없는/잘못된 기계입니다. chat.appliedenergistics2.InvalidMachine=알 수 없는 기계입니다.
chat.appliedenergistics2.LoadedSettings=설정을 성공적으로 복사했습니다. chat.appliedenergistics2.LoadedSettings=설정을 성공적으로 복사했습니다.
chat.appliedenergistics2.DeviceNotPowered=기기의 전력이 부족합니다. chat.appliedenergistics2.DeviceNotPowered=장치의 전력이 부족합니다.
chat.appliedenergistics2.MachineNotPowered=기기가 전력을 받고 있지 않습니다. chat.appliedenergistics2.DeviceNotWirelessTerminal=장치가 무선 단말기가 아닙니다.
chat.appliedenergistics2.DeviceNotLinked=장치가 연결되지 않았습니다.
chat.appliedenergistics2.StationCanNotBeLocated=기지가 없습니다.
chat.appliedenergistics2.MachineNotPowered=장치가 전력을 받고 있지 않습니다.
chat.appliedenergistics2.CommunicationError=네트워크와 소통하는 데 문제가 발생했습니다. chat.appliedenergistics2.CommunicationError=네트워크와 소통하는 데 문제가 발생했습니다.
chat.appliedenergistics2.SavedSettings=설정을 성공적으로 저장했습니다. chat.appliedenergistics2.SavedSettings=설정을 성공적으로 저장했습니다.
chat.appliedenergistics2.AmmoDepleted=Ammo Depleted. chat.appliedenergistics2.AmmoDepleted=암모가 고갈되었습니다.
chat.appliedenergistics2.isNowLocked=Monitor is now Locked. chat.appliedenergistics2.isNowLocked=모니터가 잠금 상태입니다.
chat.appliedenergistics2.isNowUnlocked=Monitor is now Unlocked. chat.appliedenergistics2.isNowUnlocked=모니터가 잠금 해제되었습니다.
itemGroup.appliedenergistics2=응용 에너지학 2 // Creative Tabs
itemGroup.appliedenergistics2.facades=응용 에너지학 2 - 덮개 itemGroup.appliedenergistics2=응용 에너지학
itemGroup.appliedenergistics2.facades=응용 에너지학(덮개)
// GUI
gui.appliedenergistics2.CraftingTerminal=조합 단말기 gui.appliedenergistics2.CraftingTerminal=조합 단말기
gui.appliedenergistics2.METunnel=ME gui.appliedenergistics2.METunnel=ME
gui.appliedenergistics2.ItemTunnel=아이템 gui.appliedenergistics2.ItemTunnel=아이템
@@ -84,20 +102,24 @@ gui.appliedenergistics2.RedstoneTunnel=레드스톤
gui.appliedenergistics2.EUTunnel=EU gui.appliedenergistics2.EUTunnel=EU
gui.appliedenergistics2.FETunnel=FE gui.appliedenergistics2.FETunnel=FE
gui.appliedenergistics2.LightTunnel=빛 gui.appliedenergistics2.LightTunnel=빛
gui.appliedenergistics2.OCTunnel=오픈컴퓨터즈
gui.appliedenergistics2.PressureTunnel=압력
gui.appliedenergistics2.security.extract.name=Withdraw gui.appliedenergistics2.security.extract.name=추출
gui.appliedenergistics2.security.inject.name=Deposit gui.appliedenergistics2.security.inject.name=주입
gui.appliedenergistics2.security.craft.name=Craft gui.appliedenergistics2.security.craft.name=조합
gui.appliedenergistics2.security.build.name=Build gui.appliedenergistics2.security.build.name=건설
gui.appliedenergistics2.security.security.name=Security gui.appliedenergistics2.security.security.name=보안
gui.appliedenergistics2.security.extract.tip=유저는 저장소에서 아이템을 빼갈 수 있습니다. gui.appliedenergistics2.security.extract.tip=유저는 저장소에서 아이템을 빼갈 수 있습니다.
gui.appliedenergistics2.security.inject.tip=유저는 저장소에 아이템을 집어 넣을 수 있습니다. gui.appliedenergistics2.security.inject.tip=유저는 저장소에 아이템을 집어 넣을 수 있습니다.
gui.appliedenergistics2.security.craft.tip=유저는 자동 조합을 명령할 수 있습니다. gui.appliedenergistics2.security.craft.tip=유저는 자동 조합을 명령할 수 있습니다.
gui.appliedenergistics2.security.build.tip=User can modify the physical structure of the network, and make configuration changes. gui.appliedenergistics2.security.build.tip=유저는 네트워크의 물리적 구조를 수정하고 구성을 변경할 수 있습니다.
gui.appliedenergistics2.security.security.tip=User can access and modify the security terminal of the network. gui.appliedenergistics2.security.security.tip=유저는 네트워크의 보안 단말기에 액세스하여 수정할 수 있습니다.
gui.appliedenergistics2.Efficiency=효율 gui.appliedenergistics2.Efficiency=효율
gui.appliedenergistics2.SCSSize=SCS 규모
gui.appliedenergistics2.SCSInvalid=무효
gui.appliedenergistics2.RequiredPower=전력 요구량 gui.appliedenergistics2.RequiredPower=전력 요구량
gui.appliedenergistics2.StoredPower=전력 저장량 gui.appliedenergistics2.StoredPower=전력 저장량
gui.appliedenergistics2.MaxPower=최대 전력량 gui.appliedenergistics2.MaxPower=최대 전력량
@@ -109,8 +131,9 @@ gui.appliedenergistics2.NoPermissions=아무 권한이 선택되지 않음
gui.appliedenergistics2.SecurityCardEditor=바이오메트릭 카드 에디터 gui.appliedenergistics2.SecurityCardEditor=바이오메트릭 카드 에디터
gui.appliedenergistics2.Encoded=기록됨 gui.appliedenergistics2.Encoded=기록됨
gui.appliedenergistics2.Priority=우선 순위 gui.appliedenergistics2.Priority=우선 순위
gui.appliedenergistics2.StorageBus=스토리지 버스 gui.appliedenergistics2.StorageBus=저장 버스
gui.appliedenergistics2.EnergyDrain=Passive Drain gui.appliedenergistics2.StorageBusFluids=액체 저장 버스
gui.appliedenergistics2.EnergyDrain=수동 배수기
gui.appliedenergistics2.Installed=설치됨 gui.appliedenergistics2.Installed=설치됨
gui.appliedenergistics2.NetworkTool=네트워크 도구 gui.appliedenergistics2.NetworkTool=네트워크 도구
gui.appliedenergistics2.PowerUsageRate=에너지 사용량 gui.appliedenergistics2.PowerUsageRate=에너지 사용량
@@ -119,229 +142,293 @@ gui.appliedenergistics2.PortableCell=휴대용 셀
gui.appliedenergistics2.Security=보안 터미널 gui.appliedenergistics2.Security=보안 터미널
gui.appliedenergistics2.CellWorkbench=셀 작업대 gui.appliedenergistics2.CellWorkbench=셀 작업대
gui.appliedenergistics2.QuantumLinkChamber=ME 양자 연결기 gui.appliedenergistics2.QuantumLinkChamber=ME 양자 연결기
gui.appliedenergistics2.IOPort=ME IO 포트 gui.appliedenergistics2.IOPort=ME 입출력 포트
gui.appliedenergistics2.Chest=ME 상자 gui.appliedenergistics2.Chest=ME 상자
gui.appliedenergistics2.Condenser=Matter Condenser gui.appliedenergistics2.Condenser=물질 응축기
gui.appliedenergistics2.Config=설정 gui.appliedenergistics2.Config=설정
gui.appliedenergistics2.Drive=ME 드라이브 gui.appliedenergistics2.Drive=ME 드라이브
gui.appliedenergistics2.ExportBus=ME 반출 버스 gui.appliedenergistics2.ExportBus=ME 반출 버스
gui.appliedenergistics2.GrindStone=그라인더 gui.appliedenergistics2.ExportBusFluids=ME 액체 반출 버스
gui.appliedenergistics2.GrindStone=맷돌
gui.appliedenergistics2.ImportBus=ME 반입 버스 gui.appliedenergistics2.ImportBus=ME 반입 버스
gui.appliedenergistics2.ImportBusFluids=ME 액체 반입 버스
gui.appliedenergistics2.Interface=ME 인터페이스 gui.appliedenergistics2.Interface=ME 인터페이스
gui.appliedenergistics2.FluidInterface=ME 액체 인터페이스
gui.appliedenergistics2.LevelEmitter=ME 레벨 측정기 gui.appliedenergistics2.LevelEmitter=ME 레벨 측정기
gui.appliedenergistics2.Of=Of gui.appliedenergistics2.Of=
gui.appliedenergistics2.Patterns=패턴 gui.appliedenergistics2.Patterns=패턴
gui.appliedenergistics2.SpatialIOPort=시공 IO 포트 gui.appliedenergistics2.SpatialIOPort=시공 입출력 포트
gui.appliedenergistics2.StoredEnergy=저장된 전력량 gui.appliedenergistics2.StoredEnergy=저장된 전력량
gui.appliedenergistics2.StoredItems=저장된 아이템 gui.appliedenergistics2.StoredItems=저장된 아이템
gui.appliedenergistics2.StoredFluids=저장된 액체
gui.appliedenergistics2.Terminal=터미널 gui.appliedenergistics2.Terminal=터미널
gui.appliedenergistics2.InterfaceTerminal=인터페이스 터미널 gui.appliedenergistics2.InterfaceTerminal=인터페이스 터미널
gui.appliedenergistics2.InterfaceTerminalHint=인터페이스 터미널에서 보여주거나 숨깁니다 gui.appliedenergistics2.InterfaceTerminalHint=인터페이스 터미널에서 보여주거나 숨깁니다.
gui.appliedenergistics2.FormationPlane=Formation Plane gui.appliedenergistics2.FormationPlane=생성면
gui.appliedenergistics2.VibrationChamber=진동 발전기 gui.appliedenergistics2.FluidFormationPlane=액체 생성면
gui.appliedenergistics2.NetworkDetails=네트워크 더 보 gui.appliedenergistics2.VibrationChamber=진동
gui.appliedenergistics2.StorageCells=ME 스토리지 셀 gui.appliedenergistics2.NetworkDetails=네트워크 세부 사항
gui.appliedenergistics2.StorageCells=ME 저장 셀
gui.appliedenergistics2.IOBuses=ME 반입/반출 버스 gui.appliedenergistics2.IOBuses=ME 반입/반출 버스
gui.appliedenergistics2.Stores=Stores gui.appliedenergistics2.IOBusesFluids=ME 액체 반입/반출 버스
gui.appliedenergistics2.BytesUsed=바이트 사용 중 gui.appliedenergistics2.Stores=저장
gui.appliedenergistics2.Types=종류들 gui.appliedenergistics2.BytesUsed=사용된 바이트
gui.appliedenergistics2.Blank=Blank gui.appliedenergistics2.Types=유형
gui.appliedenergistics2.Blank=공백
gui.appliedenergistics2.Unlinked=연결되지 않음 gui.appliedenergistics2.Unlinked=연결되지 않음
gui.appliedenergistics2.Linked=연결됨 gui.appliedenergistics2.Linked=연결됨
gui.appliedenergistics2.StoredSize=저장된 사이즈 gui.appliedenergistics2.StoredSize=저장된 규모
gui.appliedenergistics2.SkyChest=천령석 창고 gui.appliedenergistics2.CellId=셀 ID
gui.appliedenergistics2.SkyChest=천령석 상자
gui.appliedenergistics2.PatternTerminal=패턴 터미널 gui.appliedenergistics2.PatternTerminal=패턴 터미널
gui.appliedenergistics2.CraftingPattern=조합 터미널 gui.appliedenergistics2.CraftingPattern=조합 패턴
gui.appliedenergistics2.MolecularAssembler=분자 조합기 gui.appliedenergistics2.MolecularAssembler=분자 조합기
gui.appliedenergistics2.ProcessingPattern=패턴 제작하기 gui.appliedenergistics2.ProcessingPattern=패턴 제작하기
gui.appliedenergistics2.Crafts=다음을 조합: gui.appliedenergistics2.Crafts=다음을 조합:
gui.appliedenergistics2.And=와(과) gui.appliedenergistics2.And=와(과)
gui.appliedenergistics2.Creates=다음으로 조합: gui.appliedenergistics2.Creates=다음으로 조합:
gui.appliedenergistics2.With=와(과) gui.appliedenergistics2.With=와(과)
gui.appliedenergistics2.Substitute=대리 사용:
gui.appliedenergistics2.Yes=예
gui.appliedenergistics2.No=아니오
gui.appliedenergistics2.InWorldCrafting=AE2 월드 내 조합 gui.appliedenergistics2.InWorldCrafting=AE2 월드 내 조합
gui.appliedenergistics2.inWorldFluix=물 웅덩이에다 1개의 충전된 투스 석영 아이템을 드롭하고 지옥 석영과 래드스톤 가루를 놓고 기다리세요. gui.appliedenergistics2.inWorldFluix=물 웅덩이에 충전된 투스 석영 1개를 던지고 지옥 석영과 래드스톤 가루를 놓고 기다리세요.
gui.appliedenergistics2.inWorldPurificationCertus=물 웅덩이에다 1개의 세투스 석영 씨앗을 드롭하고 모래를 놓고 기다리세요.; 만들어지는 속도를 가속하시려면 결정 성장 촉진기를 넣으세요. gui.appliedenergistics2.inWorldPurificationCertus=물 웅덩이에다 서투스 석영 가루로 만든 서투스 석영 씨앗 1개를 던지고 모래를 놓고 기다리세요.; 만들어지는 속도를 가속하시려면 결정 성장 촉진기를 넣으세요.
gui.appliedenergistics2.inWorldPurificationNether=Drop a Nether Quartz Seed made from Nether Quartz Dust and Sand into a puddle of water; to make the process faster add Crystal Growth Accelerators. gui.appliedenergistics2.inWorldPurificationNether=물 웅덩이에다 지옥 석영 가루로 만든 지옥 석영 씨앗 1개를 던지고 모래를 놓고 기다리세요.; 만들어지는 속도를 가속하시려면 결정 성장 촉진기를 넣으세요.
gui.appliedenergistics2.inWorldPurificationFluix=Drop a 액정 씨앗 made from 액정 가루 and Sand into a puddle of water; to make the process faster add Crystal Growth Accelerators. gui.appliedenergistics2.inWorldPurificationFluix=물 웅덩이에다 액정 가루로 만든 액정 씨앗 1개를 던지고 모래를 놓고 기다리세요.; 만들어지는 속도를 가속하시려면 결정 성장 촉진기를 넣으세요.
gui.appliedenergistics2.inWorldSingularity=To create drop 1 Singularity and 1 Ender Dust and cause an explosion within range of the items. gui.appliedenergistics2.inWorldSingularity=특이점 1개와 엔더 가루 1개를 아이템 범위 내에서 던지는 것은 폭발을 발생합니다.
gui.appliedenergistics2.ChargedQuartz=Charged Certus Quartz is crafted by inserting an uncharged Certus Quartz Crystal into the Charger, and powering it. gui.appliedenergistics2.ChargedQuartz=충전된 서투스 석영은 충전이 안된 서투스 석영 수정을 충전기에 삽입하여 만들어지고 전력을 내뿜습니다.
gui.appliedenergistics2.ChargedQuartzFind=Charged Certus Quartz can be found in world semi rarely, it appears similar to normal Certus Quartz, except it sparkles. gui.appliedenergistics2.ChargedQuartzFind=충전된 서투스 석영은 드물게 발견할 수 있으며, 스파크를 일으키는 것을 제외하고는 평범한 서투스 석영과 비슷하게 나타납니다.
gui.appliedenergistics2.OfSecondOutput=%1$d%% Chance for second output. gui.appliedenergistics2.NoSecondOutput=2차 출력 없음
gui.appliedenergistics2.NoSecondOutput=No Secondary Output gui.appliedenergistics2.OfSecondOutput=%1$d%%이 2차 출력을 할 수 있습니다.
gui.appliedenergistics2.SelectAmount=Select Amount gui.appliedenergistics2.MultipleOutputs=%1$d%%이 2차 출력, %2$d%%이 3차 출력을 합니다.
gui.appliedenergistics2.SelectAmount=양 선택
gui.appliedenergistics2.CopyMode=복사 모드 gui.appliedenergistics2.CopyMode=복사 모드
gui.appliedenergistics2.CopyModeDesc=Controls if the contents of the configuration pane are cleared when you remove the cell. gui.appliedenergistics2.CopyModeDesc=셀을 제거할 때 환경설정 창의 내용을 지울지 여부를 제어합니다.
gui.appliedenergistics2.Next=다음 gui.appliedenergistics2.Next=다음
gui.appliedenergistics2.Lumen=Lumen gui.appliedenergistics2.Lumen=루멘
gui.appliedenergistics2.Empty=Empty gui.appliedenergistics2.Empty=비어있음
gui.appliedenergistics2.Stored=저장됨 gui.appliedenergistics2.Stored=저장됨
gui.appliedenergistics2.Cancel=취소 gui.appliedenergistics2.Cancel=취소
gui.appliedenergistics2.ETAFormat=HH:mm:ss
gui.appliedenergistics2.Crafting=제작 gui.appliedenergistics2.Crafting=제작
gui.appliedenergistics2.Scheduled=예정됨 gui.appliedenergistics2.Scheduled=예정됨
gui.appliedenergistics2.CraftingStatus=제작 상황 gui.appliedenergistics2.CraftingStatus=제작 상황
gui.appliedenergistics2.FromStorage=활성화 gui.appliedenergistics2.FromStorage=활성화
gui.appliedenergistics2.ToCraft=제작하기 gui.appliedenergistics2.ToCraft=제작하기
gui.appliedenergistics2.CraftingPlan=Crafting Plan gui.appliedenergistics2.CraftingPlan=제작 계획
gui.appliedenergistics2.Automatic=자동 gui.appliedenergistics2.Automatic=자동
gui.appliedenergistics2.Start=시작 gui.appliedenergistics2.Start=시작
gui.appliedenergistics2.Missing=부족 gui.appliedenergistics2.Missing=부족
gui.appliedenergistics2.Bytes=저장소 gui.appliedenergistics2.Bytes=저장소
gui.appliedenergistics2.Simulation=시뮬레이션 gui.appliedenergistics2.Simulation=시뮬레이션
gui.appliedenergistics2.CoProcessors=Co Processors gui.appliedenergistics2.CoProcessors=프로세서
gui.appliedenergistics2.CraftingCPU=제작용 CPU gui.appliedenergistics2.CraftingCPU=제작용 CPU
gui.appliedenergistics2.NoCraftingCPUs=제작용 CPU를 사용할 수 없습니다. gui.appliedenergistics2.NoCraftingCPUs=제작용 CPU를 사용할 수 없습니다.
gui.appliedenergistics2.CalculatingWait=계산중입니다... gui.appliedenergistics2.CalculatingWait=계산중입니다...
gui.appliedenergistics2.Clean=Clean gui.appliedenergistics2.Clean=청소
gui.appliedenergistics2.InvalidPattern=알 수 없는 패턴 gui.appliedenergistics2.InvalidPattern=알 수 없는 패턴
gui.appliedenergistics2.Range=범위 gui.appliedenergistics2.Range=범위
gui.appliedenergistics2.TransparentFacades=Transparent Facades gui.appliedenergistics2.TransparentFacades=투명 덮개
gui.appliedenergistics2.TransparentFacadesHint=Controls visibility of facades while the network tool is on your toolbar. gui.appliedenergistics2.TransparentFacadesHint=도구 모음에 네트워크 도구가 있는 동안 덮개의 가시성을 제어합니다.
gui.appliedenergistics2.CPUs=CPU gui.appliedenergistics2.CPUs=CPU
gui.appliedenergistics2.NoCraftingJobs=No Crafting Job Active gui.appliedenergistics2.NoCraftingJobs=조합 작업 활성 없음
gui.appliedenergistics2.FacadeCrafting=덮개 제작 gui.appliedenergistics2.FacadeCrafting=덮개 제작
gui.appliedenergistics2.inWorldCraftingPresses=Crafting Presses are found in the center of meteorites which can be found in around the world, they can be located by using a meteorite compass. gui.appliedenergistics2.inWorldCraftingPresses=프레스 조합은 세계 곳곳에서 볼 수 있는 운석 중심에 있으며 운석 탐지기를 이용해 위치를 파악할 수 있습니다.
gui.appliedenergistics2.Included=Included gui.appliedenergistics2.Included=포함됨
gui.appliedenergistics2.Excluded=Excluded gui.appliedenergistics2.Excluded=제외됨
gui.appliedenergistics2.Partitioned=Partitioned gui.appliedenergistics2.Partitioned=분할됨
gui.appliedenergistics2.Precise=Precise gui.appliedenergistics2.Precise=정밀화
gui.appliedenergistics2.Fuzzy=Fuzzy gui.appliedenergistics2.Fuzzy=퍼지
gui.appliedenergistics2.SmallFontCraft=조합
gui.appliedenergistics2.LargeFontCraft=+
gui.appliedenergistics2.Nothing=없음
gui.tooltips.appliedenergistics2.Stash=Store Items // GUI Tooltips
gui.tooltips.appliedenergistics2.StashDesc=Return items on the crafting grid to network storage. gui.tooltips.appliedenergistics2.Stash=아이템 저장
gui.tooltips.appliedenergistics2.Substitutions=Ore-Dict Substitutions gui.tooltips.appliedenergistics2.StashDesc=조합대의 아이템을 네트워크 저장고로 반환합니다.
gui.tooltips.appliedenergistics2.SubstitutionsDesc=Edit substitution options for input components. gui.tooltips.appliedenergistics2.Substitutions=오어딕셔네리 대체
gui.tooltips.appliedenergistics2.SubstitutionsOn=Substitutions Enabled gui.tooltips.appliedenergistics2.SubstitutionsDescEnabled=요소 입력의 대체를 허용합니다.
gui.tooltips.appliedenergistics2.SubstitutionsOff=Substitutions Disabled gui.tooltips.appliedenergistics2.SubstitutionsDescDisabled=요소 입력의 대체를 불허합니다.
gui.tooltips.appliedenergistics2.Encode=Encode Pattern gui.tooltips.appliedenergistics2.SubstitutionsDesc=요소 삽입을 위해 대체 설정을 수정합니다.
gui.tooltips.appliedenergistics2.EncodeDescription=Write the entered pattern to the current encoded pattern, or to available blank pattern. gui.tooltips.appliedenergistics2.SubstitutionsOn=대체 활성화
gui.tooltips.appliedenergistics2.FuzzyMode=Fuzzy Comparison gui.tooltips.appliedenergistics2.SubstitutionsOff=대체 비활성화
gui.tooltips.appliedenergistics2.FZPercent_25=Split Damage at 25% gui.tooltips.appliedenergistics2.Encode=패턴 인코딩
gui.tooltips.appliedenergistics2.FZPercent_50=Split Damage at 50% gui.tooltips.appliedenergistics2.EncodeDescription=입력된 패턴을 현재 인코딩된 패턴 또는 사용 가능한 빈 패턴에 기록합니다.
gui.tooltips.appliedenergistics2.FZPercent_75=Split Damage at 75% gui.tooltips.appliedenergistics2.FuzzyMode=퍼지 비교
gui.tooltips.appliedenergistics2.FZPercent_99=Split Damage at 99% gui.tooltips.appliedenergistics2.FZPercent_25=분할 손상도 25%
gui.tooltips.appliedenergistics2.SortOrder=Sort Order gui.tooltips.appliedenergistics2.FZPercent_50=분할 손상도 50%
gui.tooltips.appliedenergistics2.SortBy=Sort By gui.tooltips.appliedenergistics2.FZPercent_75=분할 손상도 75%
gui.tooltips.appliedenergistics2.FZIgnoreAll=Match Any gui.tooltips.appliedenergistics2.FZPercent_99=분할 손상도 99%
gui.tooltips.appliedenergistics2.TransferDirection=Transfer Direction gui.tooltips.appliedenergistics2.SortOrder=정렬 순서
gui.tooltips.appliedenergistics2.TransferToNetwork=Transfer data to Network gui.tooltips.appliedenergistics2.SortBy=정렬 기준
gui.tooltips.appliedenergistics2.TransferToStorageCell=Transfer data to Storage Cell gui.tooltips.appliedenergistics2.FZIgnoreAll=일치
gui.tooltips.appliedenergistics2.ToggleSortDirection=Toggle sorting direction gui.tooltips.appliedenergistics2.TransferDirection=전송 방향
gui.tooltips.appliedenergistics2.StoredItems=Stored Items gui.tooltips.appliedenergistics2.TransferToNetwork=데이터를 네트워크로 전송
gui.tooltips.appliedenergistics2.StoredCraftable=Stored / Craftable gui.tooltips.appliedenergistics2.TransferToStorageCell=데이터를 저장 셀로 전송
gui.tooltips.appliedenergistics2.View=View gui.tooltips.appliedenergistics2.ToggleSortDirection=방향 정렬을 토글하기
gui.tooltips.appliedenergistics2.RedstoneMode=Redstone Mode gui.tooltips.appliedenergistics2.StoredItems=저장된 아이템
gui.tooltips.appliedenergistics2.OperationMode=Operation Mode gui.tooltips.appliedenergistics2.StoredCraftable=저장 / 조합 가능
gui.tooltips.appliedenergistics2.NumberOfItems=Number of items gui.tooltips.appliedenergistics2.View=보기
gui.tooltips.appliedenergistics2.ItemName=Item name gui.tooltips.appliedenergistics2.RedstoneMode=레드스톤 모드
gui.tooltips.appliedenergistics2.PowerUnits=Power Units gui.tooltips.appliedenergistics2.OperationMode=운용 모드
gui.tooltips.appliedenergistics2.IOMode=Input/Output Mode gui.tooltips.appliedenergistics2.NumberOfItems=아이템 갯수
gui.tooltips.appliedenergistics2.CondenserOutput=ME Condenser - Output gui.tooltips.appliedenergistics2.ItemName=아이템 이름
gui.tooltips.appliedenergistics2.PartitionStorage=Partition Storage gui.tooltips.appliedenergistics2.PowerUnits=파워 유닛
gui.tooltips.appliedenergistics2.Clear=Clear gui.tooltips.appliedenergistics2.IOMode=입출력 모드
gui.tooltips.appliedenergistics2.TrashController=Deletion via Shift / Space Clicking. gui.tooltips.appliedenergistics2.CondenserOutput=ME 콘덴서 - 출력
gui.tooltips.appliedenergistics2.InterfaceBlockingMode=Blocking Mode gui.tooltips.appliedenergistics2.PartitionStorage=부분 저장고
gui.tooltips.appliedenergistics2.InterfaceCraftingMode=Crafting Mode gui.tooltips.appliedenergistics2.Clear=청소
gui.tooltips.appliedenergistics2.Trash=Destroy Items gui.tooltips.appliedenergistics2.TrashController=Shift/Space를 눌러 삭제하세요.
gui.tooltips.appliedenergistics2.MatterBalls=Condense Into Matter Balls\n%s per item gui.tooltips.appliedenergistics2.InterfaceBlockingMode=차단 모드
gui.tooltips.appliedenergistics2.Singularity=Condense Into Singularities\n%s per item gui.tooltips.appliedenergistics2.InterfaceCraftingMode=조합 모드
gui.tooltips.appliedenergistics2.Read=Extract Only gui.tooltips.appliedenergistics2.Trash=아이템 파괴
gui.tooltips.appliedenergistics2.Write=Insert Only gui.tooltips.appliedenergistics2.MatterBalls=재료공에 냉각하기\n아이템 당 %s
gui.tooltips.appliedenergistics2.ReadWrite=Bi-Directional gui.tooltips.appliedenergistics2.Singularity=특이점에 냉각하기\n아이템 당 %s
gui.tooltips.appliedenergistics2.AlwaysActive=Always active gui.tooltips.appliedenergistics2.Read=추출 한정
gui.tooltips.appliedenergistics2.ActiveWithoutSignal=Active without signal gui.tooltips.appliedenergistics2.Write=주입 한정
gui.tooltips.appliedenergistics2.ActiveWithSignal=Active with signal gui.tooltips.appliedenergistics2.ReadWrite=쌍방향
gui.tooltips.appliedenergistics2.ActiveOnPulse=Activate once per pulse gui.tooltips.appliedenergistics2.AlwaysActive=항상 활성화
gui.tooltips.appliedenergistics2.EmitLevelsBelow=Emit when levels are below or equal to limit. gui.tooltips.appliedenergistics2.ActiveWithoutSignal=신호없는 활성화
gui.tooltips.appliedenergistics2.EmitLevelAbove=Emit when levels are above or equal to limit. gui.tooltips.appliedenergistics2.ActiveWithSignal=신호있는 활성화
gui.tooltips.appliedenergistics2.SearchMode_Auto=Auto Search gui.tooltips.appliedenergistics2.ActiveOnPulse=한 파동 당 활성화
gui.tooltips.appliedenergistics2.SearchMode_Standard=Standard Search gui.tooltips.appliedenergistics2.EmitLevelsBelow=레벨이 제한보다 낮거나 같은 경우 수신합니다.
gui.tooltips.appliedenergistics2.SearchMode_JEIAuto=JEI Syncronized Auto gui.tooltips.appliedenergistics2.EmitLevelAbove=레벨이 한계 이상일 때 발생합니다.
gui.tooltips.appliedenergistics2.SearchMode_JEIStandard=JEI Syncronized Standard gui.tooltips.appliedenergistics2.SearchMode_Auto=자동 검색
gui.tooltips.appliedenergistics2.SearchMode=Search Box Mode gui.tooltips.appliedenergistics2.SearchMode_Standard=표준 검색
gui.tooltips.appliedenergistics2.PartitionStorageHint=Configures Partition based on currently stored items. gui.tooltips.appliedenergistics2.SearchMode_JEIAuto=JEI 자동 동기화
gui.tooltips.appliedenergistics2.ClearSettings=Clear Config/Settings gui.tooltips.appliedenergistics2.SearchMode_JEIStandard=JEI 표준 동기화
gui.tooltips.appliedenergistics2.Craftable=Craftable gui.tooltips.appliedenergistics2.SearchMode=검색 상자 모드
gui.tooltips.appliedenergistics2.MoveWhenEmpty=Move to output when empty. gui.tooltips.appliedenergistics2.PartitionStorageHint=현재 저장된 아이템을 기준으로 파티션을 구성합니다.
gui.tooltips.appliedenergistics2.MoveWhenWorkIsDone=Move to output when work is done. gui.tooltips.appliedenergistics2.ClearSettings=설정 지우기
gui.tooltips.appliedenergistics2.MoveWhenFull=Move to output when full. gui.tooltips.appliedenergistics2.Craftable=조합 가능
gui.tooltips.appliedenergistics2.Disabled=Disabled gui.tooltips.appliedenergistics2.MoveWhenEmpty=비어있을 때 출력을 위해 움직입니다.
gui.tooltips.appliedenergistics2.Enable=Enabled gui.tooltips.appliedenergistics2.MoveWhenWorkIsDone=작동할 때 출력을 위해 움직입니다.
gui.tooltips.appliedenergistics2.Blocking=Do not push crafing items if inventory contains items. gui.tooltips.appliedenergistics2.MoveWhenFull=채워질 때 출력을 위해 움직입니다.
gui.tooltips.appliedenergistics2.NonBlocking=Ignore the contents of the target inventory. gui.tooltips.appliedenergistics2.Disabled=비활성화
gui.tooltips.appliedenergistics2.Craft=Crafting Behavior gui.tooltips.appliedenergistics2.Enable=비활성화
gui.tooltips.appliedenergistics2.CraftOnly=Do not use stocked items, only craft items while exporting. gui.tooltips.appliedenergistics2.Blocking=인벤토리에 아이템이 있다면 아이템 조합을 넣지 마세요.
gui.tooltips.appliedenergistics2.CraftEither=Use stocked items, or craft items while exporting. gui.tooltips.appliedenergistics2.NonBlocking=타겟 인벤토리의 내용을 무시하세요.
gui.tooltips.appliedenergistics2.LevelType=Level Type gui.tooltips.appliedenergistics2.Craft=행동 조합
gui.tooltips.appliedenergistics2.LevelType_Energy=Energy gui.tooltips.appliedenergistics2.CraftOnly=유출하는 동안 쌓은 아이템을 사용하지 않고, 오직 아이템만 조합 하세요.
gui.tooltips.appliedenergistics2.LevelType_Item=Item gui.tooltips.appliedenergistics2.CraftEither=유출하는 동안 쌓은 아이템을 사용하거나 아이템을 조합하세요.
gui.tooltips.appliedenergistics2.InventoryTweaks=인벤토리 트윅 gui.tooltips.appliedenergistics2.LevelType=레벨 유형
gui.tooltips.appliedenergistics2.LevelType_Energy=에너지
gui.tooltips.appliedenergistics2.LevelType_Item=아이템
gui.tooltips.appliedenergistics2.InventoryTweaks=인벤토리 트위크
gui.tooltips.appliedenergistics2.Mod=모드 gui.tooltips.appliedenergistics2.Mod=모드
gui.tooltips.appliedenergistics2.TerminalStyle=Terminal Style gui.tooltips.appliedenergistics2.TerminalStyle=터미널 방식
gui.tooltips.appliedenergistics2.TerminalStyle_Full=Full Screen Terminal gui.tooltips.appliedenergistics2.TerminalStyle_Full=풀 스크린 터미널
gui.tooltips.appliedenergistics2.TerminalStyle_Tall=Tall Centered Terminal gui.tooltips.appliedenergistics2.TerminalStyle_Tall=긴 집중 터미널
gui.tooltips.appliedenergistics2.TerminalStyle_Small=Small Centered Terminal gui.tooltips.appliedenergistics2.TerminalStyle_Small=짧은 집중 터미널
gui.tooltips.appliedenergistics2.DoesntDespawn=This item won't de-spawn. gui.tooltips.appliedenergistics2.DoesntDespawn=이 아이템은 디스폰하지 않을 것입니다.
gui.tooltips.appliedenergistics2.EmitterMode=Crafting Emitter Mode gui.tooltips.appliedenergistics2.EmitterMode=처리 조합 모드
gui.tooltips.appliedenergistics2.CraftViaRedstone=Emit Redstone to craft item. gui.tooltips.appliedenergistics2.CraftViaRedstone=레드스톤을 꺼내어 아이템을 조합하세요.
gui.tooltips.appliedenergistics2.EmitWhenCrafting=Emit Redstone while item is crafting. gui.tooltips.appliedenergistics2.EmitWhenCrafting=아이템을 조합하는 동안 레드스톤을 꺼내세요.
gui.tooltips.appliedenergistics2.ReportInaccessibleItems=Report Inaccessible Items gui.tooltips.appliedenergistics2.ReportInaccessibleItems=액세스할 수 없는 아이템 보고
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsYes=Yes: Items that cannot be extracted will be visible. gui.tooltips.appliedenergistics2.ReportInaccessibleItemsYes=예: 추출될 수 없는 아이템은 보일 것입니다.
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsNo=No: Only extractable items will be visible. gui.tooltips.appliedenergistics2.ReportInaccessibleItemsNo=아니오: 추출 가능한 아이템은 보일 것입니다.
gui.tooltips.appliedenergistics2.ReportInaccessibleFluids=엑세스할 수 없는 액체 보고
gui.tooltips.appliedenergistics2.ReportInaccessibleFluidsYes=예: 추출될 수 없는 액체는 보일 것입니다.
gui.tooltips.appliedenergistics2.ReportInaccessibleFluidsNo=아니오: 추출 가능한 아이템은 보일 것입니다.
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.tooltips.appliedenergistics2.P2PFrequency=빈도: %s
// Units
gui.appliedenergistics2.units.appliedenergstics=AE gui.appliedenergistics2.units.appliedenergstics=AE
gui.appliedenergistics2.units.ic2=에너지 단위(EU) gui.appliedenergistics2.units.ic2=EU
gui.appliedenergistics2.units.rf=레드스톤 유율(RF) gui.appliedenergistics2.units.rf=RF
gui.appliedenergistics2.White=하양 // Colors
gui.appliedenergistics2.White=흰색
gui.appliedenergistics2.Orange=주황 gui.appliedenergistics2.Orange=주황
gui.appliedenergistics2.Magenta=자홍색 gui.appliedenergistics2.Magenta=자홍색
gui.appliedenergistics2.LightBlue=밝은 파랑 gui.appliedenergistics2.LightBlue=하늘색
gui.appliedenergistics2.Yellow=노랑 gui.appliedenergistics2.Yellow=노랑
gui.appliedenergistics2.Lime=연두색 gui.appliedenergistics2.Lime=연두색
gui.appliedenergistics2.Pink=분홍색 gui.appliedenergistics2.Pink=분홍색
gui.appliedenergistics2.Gray=회색 gui.appliedenergistics2.Gray=회색
gui.appliedenergistics2.LightGray=회색 gui.appliedenergistics2.LightGray=밝은 회색
gui.appliedenergistics2.Cyan=청록색 gui.appliedenergistics2.Cyan=청록색
gui.appliedenergistics2.Purple=보라 gui.appliedenergistics2.Purple=보라
gui.appliedenergistics2.Blue=파랑 gui.appliedenergistics2.Blue=파랑
gui.appliedenergistics2.Brown=갈색 gui.appliedenergistics2.Brown=갈색
gui.appliedenergistics2.Green=초록색 gui.appliedenergistics2.Green=초록색
gui.appliedenergistics2.Red=빨강 gui.appliedenergistics2.Red=빨강
gui.appliedenergistics2.Black=검정 gui.appliedenergistics2.Black=검정
gui.appliedenergistics2.Fluix=액정 gui.appliedenergistics2.Fluix=액정
// Waila
waila.appliedenergistics2.Crafting=조합
waila.appliedenergistics2.DeviceOnline=장치 켜짐 waila.appliedenergistics2.DeviceOnline=장치 켜짐
waila.appliedenergistics2.DeviceOffline=장치 꺼짐 waila.appliedenergistics2.DeviceOffline=장치 꺼짐
waila.appliedenergistics2.DeviceMissingChannel=Device Missing Channel waila.appliedenergistics2.DeviceMissingChannel=채널을 잃은 장치
waila.appliedenergistics2.Locked=잠겨있음 waila.appliedenergistics2.Locked=잠겨 있음
waila.appliedenergistics2.Unlocked=잠겨있지 않음 waila.appliedenergistics2.Unlocked=잠겨있지 않음
waila.appliedenergistics2.Showing=Showing waila.appliedenergistics2.Showing=공개
waila.appliedenergistics2.Contains=Contains 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.storage_cell_1k.name=1k ME 저장용 셀 // TheOneProbe
item.appliedenergistics2.storage_cell_4k.name=4k ME 저장용 셀 theoneprobe.appliedenergistics2.crafting=조합: %1$s
item.appliedenergistics2.storage_cell_16k.name=16k ME 저장용 셀 theoneprobe.appliedenergistics2.device_online=장치 켜짐
item.appliedenergistics2.storage_cell_64k.name=64k ME 저장용 셀 theoneprobe.appliedenergistics2.device_offline=장치 꺼짐
item.appliedenergistics2.creative_storage_cell.name=크리에이티브 ME 저장용 셀 theoneprobe.appliedenergistics2.device_missing_channel=채널을 잃은 장치
item.appliedenergistics2.encoded_pattern.name=쓰여진 패턴 theoneprobe.appliedenergistics2.locked=잠겨 있음
item.appliedenergistics2.view_cell.name=View Cell 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.p2p_frequency=빈도: %1$s
theoneprobe.appliedenergistics2.stored_energy=%1$d / %2$d
// Items
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.fluid_storage_cell_1k.name=1k ME 액체 저장 셀
item.appliedenergistics2.fluid_storage_cell_4k.name=4k ME 액체 저장 셀
item.appliedenergistics2.fluid_storage_cell_16k.name=16k ME 액체 저장 셀
item.appliedenergistics2.fluid_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.facade.name=케이블 덮개
item.appliedenergistics2.crystal_seed.certus.name=투스 석영 씨앗 item.appliedenergistics2.crystal_seed.certus.name=투스 석영 씨앗
item.appliedenergistics2.crystal_seed.nether.name=지옥 석영 씨앗 item.appliedenergistics2.crystal_seed.nether.name=지옥 석영 씨앗
item.appliedenergistics2.crystal_seed.fluix.name=액정 씨앗 item.appliedenergistics2.crystal_seed.fluix.name=액정 씨앗
item.appliedenergistics2.material.invalid_type.name=이 아이템은 비활성화됨 item.appliedenergistics2.material.invalid_type.name=이 아이템은 비활성화됨
item.appliedenergistics2.material.advanced_card.name=Advanced Card item.appliedenergistics2.material.advanced_card.name=고급 카드
item.appliedenergistics2.material.annihilation_core.name=Annihilation Core item.appliedenergistics2.material.annihilation_core.name=소멸 코어
item.appliedenergistics2.material.basic_card.name=기본 카드 item.appliedenergistics2.material.basic_card.name=기본 카드
item.appliedenergistics2.material.blank_pattern.name=빈 패턴 item.appliedenergistics2.material.blank_pattern.name=빈 패턴
item.appliedenergistics2.material.calculation_processor.name=Calculation Processor item.appliedenergistics2.material.calculation_processor.name=계산 프로세서
item.appliedenergistics2.material.card_capacity.name=Capacity Card item.appliedenergistics2.material.card_capacity.name=용량 카드
item.appliedenergistics2.material.card_fuzzy.name=Fuzzy Card item.appliedenergistics2.material.card_fuzzy.name=퍼지 카드
item.appliedenergistics2.material.card_inverter.name=Inverter Card item.appliedenergistics2.material.card_inverter.name=변환 카드
item.appliedenergistics2.material.card_redstone.name=레드스톤 카드 item.appliedenergistics2.material.card_redstone.name=레드스톤 카드
item.appliedenergistics2.material.card_speed.name=Acceleration Card item.appliedenergistics2.material.card_speed.name=가속 카드
item.appliedenergistics2.material.cell2_spatial_part.name=2³ 시공 요소 item.appliedenergistics2.material.cell2_spatial_part.name=2³ 시공 요소
item.appliedenergistics2.material.cell16_spatial_part.name=16³ 시공 요소 item.appliedenergistics2.material.cell16_spatial_part.name=16³ 시공 요소
item.appliedenergistics2.material.cell128_spatial_part.name=128³ 시공 요소 item.appliedenergistics2.material.cell128_spatial_part.name=128³ 시공 요소
@@ -349,26 +436,30 @@ item.appliedenergistics2.material.cell1k_part.name=1k ME 저장 요소
item.appliedenergistics2.material.cell4k_part.name=4k ME 저장 요소 item.appliedenergistics2.material.cell4k_part.name=4k ME 저장 요소
item.appliedenergistics2.material.cell16k_part.name=16k ME 저장 요소 item.appliedenergistics2.material.cell16k_part.name=16k ME 저장 요소
item.appliedenergistics2.material.cell64k_part.name=64k ME 저장 요소 item.appliedenergistics2.material.cell64k_part.name=64k ME 저장 요소
item.appliedenergistics2.material.certus_quartz_crystal.name=세투스 석영 결정체 item.appliedenergistics2.material.fluid_cell1k_part.name=1k ME 액체 저장 요소
item.appliedenergistics2.material.certus_quartz_crystal_charged.name=충전된 세투스 석영 결정체 item.appliedenergistics2.material.fluid_cell4k_part.name=4k ME 액체 저장 요소
item.appliedenergistics2.material.certus_quartz_dust.name=세투스 석영 가루 item.appliedenergistics2.material.fluid_cell16k_part.name=16k ME 액체 저장 요소
item.appliedenergistics2.material.fluid_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.empty_storage_cell.name=빈 ME 저장 셀
item.appliedenergistics2.material.ender_dust.name=엔더 가루 item.appliedenergistics2.material.ender_dust.name=엔더 가루
item.appliedenergistics2.material.engineering_processor.name=공학 처리기 item.appliedenergistics2.material.engineering_processor.name=공학 프로세서
item.appliedenergistics2.material.flour.name=Flour item.appliedenergistics2.material.flour.name=가루
item.appliedenergistics2.material.fluix_crystal.name=액정 결정체 item.appliedenergistics2.material.fluix_crystal.name=액정 수정
item.appliedenergistics2.material.fluix_dust.name=액정 가루 item.appliedenergistics2.material.fluix_dust.name=액정 가루
item.appliedenergistics2.material.fluix_pearl.name=액정 진주 item.appliedenergistics2.material.fluix_pearl.name=액정 진주
item.appliedenergistics2.material.formation_core.name=형성 코어 item.appliedenergistics2.material.formation_core.name=형성 코어
item.appliedenergistics2.material.gold_dust.name=금 가루 item.appliedenergistics2.material.gold_dust.name=금 가루
item.appliedenergistics2.material.iron_dust.name=철 가루 item.appliedenergistics2.material.iron_dust.name=철 가루
item.appliedenergistics2.material.logic_processor.name=논리 처리기 item.appliedenergistics2.material.logic_processor.name=논리 프로세서
item.appliedenergistics2.material.logic_processor_asm.name=미완성된 논리 처리기 item.appliedenergistics2.material.logic_processor_asm.name=미완성된 논리 프로세서
item.appliedenergistics2.material.matter_ball.name=물질 공 item.appliedenergistics2.material.matter_ball.name=물질 공
item.appliedenergistics2.material.nether_quartz_dust.name=지옥 석영 가루 item.appliedenergistics2.material.nether_quartz_dust.name=지옥 석영 가루
item.appliedenergistics2.material.purified_certus_quartz_crystal.name=순수한 투스 석영 결정체 item.appliedenergistics2.material.purified_certus_quartz_crystal.name=순수한 투스 석영 수정
item.appliedenergistics2.material.purified_fluix_crystal.name=순수한 액정 결정체 item.appliedenergistics2.material.purified_fluix_crystal.name=순수한 액정 수정
item.appliedenergistics2.material.purified_nether_quartz_crystal.name=순수한 지옥 석영 결정체 item.appliedenergistics2.material.purified_nether_quartz_crystal.name=순수한 지옥 석영 수정
item.appliedenergistics2.material.quantum_entangled_singularity.name=양자얽힘 특이점 item.appliedenergistics2.material.quantum_entangled_singularity.name=양자얽힘 특이점
item.appliedenergistics2.material.silicon.name=실리콘 item.appliedenergistics2.material.silicon.name=실리콘
item.appliedenergistics2.material.singularity.name=특이점 item.appliedenergistics2.material.singularity.name=특이점
@@ -388,43 +479,54 @@ 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=ME 소멸 평면 item.appliedenergistics2.multi_part.annihilation_plane.name=ME 소멸 평면
item.appliedenergistics2.multi_part.fluid_annihilation_plane.name=ME 액체 소멸 평면
item.appliedenergistics2.multi_part.identity_annihilation_plane.name=ME 확인 소멸 평면
item.appliedenergistics2.multi_part.cable_anchor.name=케이블 앵커 item.appliedenergistics2.multi_part.cable_anchor.name=케이블 앵커
item.appliedenergistics2.multi_part.cable_covered.name=ME 차폐 케이블 item.appliedenergistics2.multi_part.cable_covered.name=ME 차폐 케이블
item.appliedenergistics2.multi_part.cable_glass.name=ME 유리 케이블 item.appliedenergistics2.multi_part.cable_glass.name=ME 유리 케이블
item.appliedenergistics2.multi_part.cable_smart.name=ME 스마트 케이블 item.appliedenergistics2.multi_part.cable_smart.name=ME 스마트 케이블
item.appliedenergistics2.multi_part.cable_dense_smart.name=ME 조밀 케이블 item.appliedenergistics2.multi_part.cable_dense_smart.name=ME 조밀 케이블
item.appliedenergistics2.multi_part.cable_dense_smart.name=ME 조밀 스마트 케이블
item.appliedenergistics2.multi_part.storage_monitor.name=ME 저장고 모니터 item.appliedenergistics2.multi_part.storage_monitor.name=ME 저장고 모니터
item.appliedenergistics2.multi_part.conversion_monitor.name=ME 변환 모니터 item.appliedenergistics2.multi_part.conversion_monitor.name=ME 변환 모니터
item.appliedenergistics2.multi_part.crafting_terminal.name=ME 조합 단말기 item.appliedenergistics2.multi_part.crafting_terminal.name=ME 조합 터미널
item.appliedenergistics2.multi_part.semi_dark_monitor.name=조명판 item.appliedenergistics2.multi_part.semi_dark_monitor.name=조명판
item.appliedenergistics2.multi_part.monitor.name=밝은 조명판 item.appliedenergistics2.multi_part.monitor.name=밝은 조명판
item.appliedenergistics2.multi_part.dark_monitor.name=어두운 조명판 item.appliedenergistics2.multi_part.dark_monitor.name=어두운 조명판
item.appliedenergistics2.multi_part.export_bus.name=ME Export 버스 item.appliedenergistics2.multi_part.export_bus.name=ME 유출 버스
item.appliedenergistics2.multi_part.formation_plane.name=ME 생성 평면 item.appliedenergistics2.multi_part.fluid_export_bus.name=ME 액체 유출 버스
item.appliedenergistics2.multi_part.import_bus.name=ME 입력 버스 item.appliedenergistics2.multi_part.formation_plane.name=ME 생성면
item.appliedenergistics2.multi_part.fluid_formation_plane.name=ME 액체 생성면
item.appliedenergistics2.multi_part.import_bus.name=ME 유입 버스
item.appliedenergistics2.multi_part.fluid_import_bus.name=ME 액체 유입 버스
item.appliedenergistics2.multi_part.interface.name=ME 인터페이스 item.appliedenergistics2.multi_part.interface.name=ME 인터페이스
item.appliedenergistics2.multi_part.fluid_interface.name=ME 액체 인터페이스
item.appliedenergistics2.multi_part.level_emitter.name=ME 레벨 측정기 item.appliedenergistics2.multi_part.level_emitter.name=ME 레벨 측정기
item.appliedenergistics2.multi_part.fluid_level_emitter.name=ME 액체 레벨 측정기
item.appliedenergistics2.multi_part.p2p_tunnel.name=P2P 터널 item.appliedenergistics2.multi_part.p2p_tunnel.name=P2P 터널
item.appliedenergistics2.multi_part.pattern_terminal.name=ME 패턴 터미널 item.appliedenergistics2.multi_part.pattern_terminal.name=ME 패턴 터미널
item.appliedenergistics2.multi_part.quartz_fiber.name=Quartz Fiber item.appliedenergistics2.multi_part.quartz_fiber.name=석영 섬유
item.appliedenergistics2.multi_part.storage_bus.name=ME 저장 요소 item.appliedenergistics2.multi_part.storage_bus.name=ME 저장 버스
item.appliedenergistics2.multi_part.fluid_storage_bus.name=ME 액체 저장 버스
item.appliedenergistics2.multi_part.terminal.name=ME 터미널 item.appliedenergistics2.multi_part.terminal.name=ME 터미널
item.appliedenergistics2.multi_part.inverted_toggle_bus.name=ME 반전된 토글 버스 item.appliedenergistics2.multi_part.inverted_toggle_bus.name=ME 반전된 토글 버스
item.appliedenergistics2.multi_part.toggle_bus.name=ME 토글 버스 item.appliedenergistics2.multi_part.toggle_bus.name=ME 토글 버스
item.appliedenergistics2.multi_part.crafting_monitor.name=ME 제작 과정 모니터 item.appliedenergistics2.multi_part.crafting_monitor.name=ME 조합 모니터
item.appliedenergistics2.multi_part.interface_terminal.name=ME 인터페이스 터미널 item.appliedenergistics2.multi_part.interface_terminal.name=ME 인터페이스 터미널
item.appliedenergistics2.multi_part.fluid_terminal.name=ME 액체 터미널
item.appliedenergistics2.multi_part.invalid_type.name=비활성화된 아이템
item.appliedenergistics2.spatial_storage_cell_128_cubed.name=128³ 시공 셀 item.appliedenergistics2.spatial_storage_cell_128_cubed.name=128³ 시공 셀
item.appliedenergistics2.spatial_storage_cell_16_cubed.name=16³ 시공 셀 item.appliedenergistics2.spatial_storage_cell_16_cubed.name=16³ 시공 셀
item.appliedenergistics2.spatial_storage_cell_2_cubed.name=2³ 시공 셀 item.appliedenergistics2.spatial_storage_cell_2_cubed.name=2³ 시공 셀
item.appliedenergistics2.certus_quartz_axe.name=투스 석영 도끼 item.appliedenergistics2.certus_quartz_axe.name=투스 석영 도끼
item.appliedenergistics2.certus_quartz_cutting_knife.name=투스 석영 커터칼 item.appliedenergistics2.certus_quartz_cutting_knife.name=투스 석영 커터칼
item.appliedenergistics2.certus_quartz_hoe.name=투스 석영 괭이 item.appliedenergistics2.certus_quartz_hoe.name=투스 석영 괭이
item.appliedenergistics2.certus_quartz_pickaxe.name=투스 석영 곡괭이 item.appliedenergistics2.certus_quartz_pickaxe.name=투스 석영 곡괭이
item.appliedenergistics2.certus_quartz_spade.name=투스 석영 삽 item.appliedenergistics2.certus_quartz_spade.name=투스 석영 삽
item.appliedenergistics2.certus_quartz_sword.name=투스 석영 검 item.appliedenergistics2.certus_quartz_sword.name=투스 석영 검
item.appliedenergistics2.certus_quartz_wrench.name=투스 석영 렌치 item.appliedenergistics2.certus_quartz_wrench.name=투스 석영 렌치
item.appliedenergistics2.nether_quartz_axe.name=지옥 석영 도끼 item.appliedenergistics2.nether_quartz_axe.name=지옥 석영 도끼
item.appliedenergistics2.nether_quartz_cutting_knife.name=지옥 석영 커터칼 item.appliedenergistics2.nether_quartz_cutting_knife.name=지옥 석영 커터칼
@@ -438,74 +540,83 @@ item.appliedenergistics2.paint_ball.name=페인트 공
item.appliedenergistics2.portable_cell.name=휴대용 셀 item.appliedenergistics2.portable_cell.name=휴대용 셀
item.appliedenergistics2.network_tool.name=네트워크 도구 item.appliedenergistics2.network_tool.name=네트워크 도구
item.appliedenergistics2.charged_staff.name=충전된 스태프 item.appliedenergistics2.charged_staff.name=충전된 스태프
item.appliedenergistics2.entropy_manipulator.name=Entropy Manipulator item.appliedenergistics2.entropy_manipulator.name=엔트로피 조종기
item.appliedenergistics2.matter_cannon.name=메터 캐논 item.appliedenergistics2.matter_cannon.name=물질 대포
item.appliedenergistics2.memory_card.name=메모리 카드 item.appliedenergistics2.memory_card.name=메모리 카드
item.appliedenergistics2.color_applicator.name=Color Applicator item.appliedenergistics2.color_applicator.name=색상 적용기
item.appliedenergistics2.wireless_terminal.name무선 터미널 item.appliedenergistics2.wireless_terminal.name무선 터미널
item.appliedenergistics2.biometric_card.name=바이오메트릭 카드 item.appliedenergistics2.biometric_card.name=바이오메트릭 카드
item.appliedenergistics2.debug_card.name=Dev.DebugCard item.appliedenergistics2.debug_card.name=디버그 카드
item.appliedenergistics2.debug_replicator_card.name=Dev.ReplicatorCard item.appliedenergistics2.debug_replicator_card.name=복제 카드
commands.ae2.usage=Commands provided by Applied Energistics 2 - use /ae2 list for a list, and /ae2 help _____ for help with a command. // Commands
commands.ae2.permissions=You do not have adequate permissions to run this command. commands.ae2.usage=응용 에너지학 모드에서 제공되는 명령어는 다음과 같습니다. - 목록은 /ae2 list를 사용하고, 명령어 도움말은 /ae2 help _____를 사용하세요.
commands.ae2.ChunkLogger=Toggles Chunk Loading and unloading to the server log. ( OP ) commands.ae2.permissions=이 명령어를 실행할 수 있는 적절한 권한이 없습니다.
commands.ae2.ChunkLoggerOn=청크 로깅이 켜졌습니다 commands.ae2.ChunkLogger=청크 로드 및 서버 로그 로딩을 전환합니다. (OP)
commands.ae2.ChunkLoggerOff=청크 로깅이 졌습니다 commands.ae2.ChunkLoggerOn=청크 로깅이 졌습니다.
commands.ae2.Supporters=Displays a list of AE2 Supporters commands.ae2.ChunkLoggerOff=청크 로깅이 꺼졌습니다.
commands.ae2.Supporters=응용 에너지학 모드의 지원자 목록을 공개합니다.
achievement.ae2.Compass=Meteorite Hunter // Achievements
achievement.ae2.Compass.desc=Craft a Meteorite Compass achievement.ae2.Root=응용 에너지학
achievement.ae2.Presses=Unknown Technology achievement.ae2.Root.desc=상자가 충분치 않을 때
achievement.ae2.Presses.desc=Find a Processor Press achievement.ae2.Compass=운석 사냥꾼
achievement.ae2.SpatialIO=Spatial Coordination achievement.ae2.Compass.desc=운석 탐지기 조합
achievement.ae2.SpatialIO.desc=Craft a Spatial IO Port achievement.ae2.Presses=알려지지 않은 기술
achievement.ae2.SpatialIOExplorer=To boldly go achievement.ae2.Presses.desc=프로세서 프레스 발견
achievement.ae2.SpatialIOExplorer.desc=Get stored in a spatial storage cell achievement.ae2.SpatialIO=공간 조정
achievement.ae2.StorageCell=Better Then Chests achievement.ae2.SpatialIO.desc=시공 입출력 포트 조합
achievement.ae2.StorageCell.desc=Craft a Storage Cell achievement.ae2.SpatialIOExplorer=대담하게 가다
achievement.ae2.IOPort=Storage Cell Shuffle achievement.ae2.SpatialIOExplorer.desc=시공 저장 셀에 저장
achievement.ae2.IOPort.desc=Craft a IO Port achievement.ae2.StorageCell=상자보다 그뤠잇
achievement.ae2.CraftingTerminal=A (Much) Bigger Table achievement.ae2.StorageCell.desc=저장 셀 조합
achievement.ae2.CraftingTerminal.desc=Craft a Crafting Terminal achievement.ae2.IOPort=저장 셀 순서 섞기
achievement.ae2.PatternTerminal=Crafting Maestro achievement.ae2.IOPort.desc=입출력 포트 조합
achievement.ae2.PatternTerminal.desc=Craft a Pattern Terminal achievement.ae2.CraftingTerminal=더 큰 탁자
achievement.ae2.ChargedQuartz=Shocking achievement.ae2.CraftingTerminal.desc=조합 터미널 조합
achievement.ae2.ChargedQuartz.desc=Find Charged Quartz achievement.ae2.PatternTerminal=마에스트로 조합
achievement.ae2.Fluix=Unnatural achievement.ae2.PatternTerminal.desc=패턴 터미널 조합
achievement.ae2.Fluix.desc=Create Fluix Crystals achievement.ae2.ChargedQuartz=슈퍼그뤠잇!
achievement.ae2.Charger=Fluix Production achievement.ae2.ChargedQuartz.desc=충전된 수정 발견
achievement.ae2.Charger.desc=Craft a Charger achievement.ae2.Fluix=비자연
achievement.ae2.CrystalGrowthAccelerator=Accelerator is an understatement achievement.ae2.Fluix.desc=액정 수정 발견
achievement.ae2.CrystalGrowthAccelerator.desc=Craft a Crystal Growth Accelerator achievement.ae2.Charger=액정 생산
achievement.ae2.Charger.desc=충전기 조합
achievement.ae2.CrystalGrowthAccelerator=가속기는 절제
achievement.ae2.CrystalGrowthAccelerator.desc=결정 성장 촉진기 조합
achievement.ae2.GlassCable=유동 에너지 연결 achievement.ae2.GlassCable=유동 에너지 연결
achievement.ae2.GlassCable.desc=ME 유리 케이블을 제작 achievement.ae2.GlassCable.desc=ME 유리 케이블 조합
achievement.ae2.Networking1=Network Apprentice achievement.ae2.Networking1=네트워크 견습생
achievement.ae2.Networking1.desc=Reach 8 channel using devices on a network. achievement.ae2.Networking1.desc=네트워크에 사용하는 장치를 8채널에 도달
achievement.ae2.Controller=Networking Switchboard achievement.ae2.Controller=네트워크 교환대
achievement.ae2.Controller.desc=제어기를 제작 achievement.ae2.Controller.desc=제어기 조합
achievement.ae2.Networking2=네트워크 엔지니어 achievement.ae2.Networking2=네트워크 엔지니어
achievement.ae2.Networking2.desc=Reach 128 channel using devices on a network. achievement.ae2.Networking2.desc=네트워크에 사용하는 장치를 128채널에 도달
achievement.ae2.Networking3=Network Administrator achievement.ae2.Networking3=네트워크 관리자
achievement.ae2.Networking3.desc=Reach 2048 channel using devices on a network. achievement.ae2.Networking3.desc=네트워크에 사용하는 장치를 2048채널에 도달
achievement.ae2.P2P=Point to Point Networking achievement.ae2.P2P=P2P 네트워크
achievement.ae2.P2P.desc=Craft a P2P Tunnel achievement.ae2.P2P.desc=P2P 터널 조합
achievement.ae2.Recursive=Recursive Networking achievement.ae2.Recursive=재귀적 네트워킹
achievement.ae2.Recursive.desc=Place a Interface on a storage Bus. achievement.ae2.Recursive.desc=저장 버스에 인터페이스 설치
achievement.ae2.CraftingCPU=Next Gen Crafting achievement.ae2.CraftingCPU=차세대 조합
achievement.ae2.CraftingCPU.desc=Craft a Crafting Unit achievement.ae2.CraftingCPU.desc=조합 유닛 조합
achievement.ae2.Facade=Network Aesthetics achievement.ae2.Facade=네트워크 미학
achievement.ae2.Facade.desc=Craft a Cable Facade achievement.ae2.Facade.desc=케이블 덮개 조합
achievement.ae2.NetworkTool=Network Diagnostics achievement.ae2.NetworkTool=네트워크 진단
achievement.ae2.NetworkTool.desc=Craft a Network Tool achievement.ae2.NetworkTool.desc=네트워크 도구 제작
achievement.ae2.PortableCell=Storage Nomad achievement.ae2.PortableCell=저장 유목민
achievement.ae2.PortableCell.desc=Craft a Portable Cell achievement.ae2.PortableCell.desc=휴대용 셀 제작
achievement.ae2.StorageBus=Limitless Potential achievement.ae2.StorageBus=한계없는 잠재력
achievement.ae2.StorageBus.desc=Craft a Storage Bus achievement.ae2.StorageBus.desc=저장 버스 조합
achievement.ae2.QNB=Quantum Tunneling achievement.ae2.QNB=양자 터널링
achievement.ae2.QNB.desc=Craft a Quantum Link achievement.ae2.QNB.desc=양자 링크 조합
stat.ae2.ItemsInserted=Items added to ME Storage // Stats
stat.ae2.ItemsExtracted=Items extracted from ME Storage stat.ae2.ItemsInserted=아이템이 ME 저장고에 추가되었습니다.
stat.ae2.TurnedCranks=Turned Cranks stat.ae2.ItemsExtracted=아이템이 ME 저장고로부터 추출되었습니다.
stat.ae2.TurnedCranks=전환된 크랭크
//Keys
key.appliedenergistics2.category=응용 에너지학
key.toggle_focus.desc=상자를 집중적으로 토글하면서 검색하세요.
@@ -1,8 +1,9 @@
//versão pt-BR atualizada por _InterPlay_ em 31/12/2018
//Blocos //Blocos
tile.appliedenergistics2.cable_bus.name=Cabos e/ou Barramentos do AE2 tile.appliedenergistics2.cable_bus.name=Cabos e/ou Barramentos do AE2
tile.appliedenergistics2.cell_workbench.name=Bancada de Células tile.appliedenergistics2.cell_workbench.name=Bancada de Células
tile.appliedenergistics2.charger.name=Carregador tile.appliedenergistics2.charger.name=Carregador
tile.appliedenergistics2.chest.name=Báu ME tile.appliedenergistics2.chest.name=Báu de Matéria para Energia (ME)
tile.appliedenergistics2.condenser.name=Condensador de Matéria tile.appliedenergistics2.condenser.name=Condensador de Matéria
tile.appliedenergistics2.controller.name=Controlador ME tile.appliedenergistics2.controller.name=Controlador ME
tile.appliedenergistics2.crank.name=Manivela de Madeira tile.appliedenergistics2.crank.name=Manivela de Madeira
@@ -13,9 +14,10 @@ tile.appliedenergistics2.drive.name=Acionador ME
tile.appliedenergistics2.energy_acceptor.name=Aceitador de Energia tile.appliedenergistics2.energy_acceptor.name=Aceitador de Energia
tile.appliedenergistics2.grindstone.name=Rebolo de Quartzo tile.appliedenergistics2.grindstone.name=Rebolo de Quartzo
tile.appliedenergistics2.matrix_frame.name=Armação de Matriz tile.appliedenergistics2.matrix_frame.name=Armação de Matriz
tile.appliedenergistics2.io_port.name=Porta de Entrada-Saída ME tile.appliedenergistics2.io_port.name=Porta de Entrada/Saída ME
tile.appliedenergistics2.inscriber.name=Inscritor tile.appliedenergistics2.inscriber.name=Inscritor
tile.appliedenergistics2.interface.name=Interface ME tile.appliedenergistics2.interface.name=Interface ME
tile.appliedenergistics2.fluid_interface.name=Interface de Fluidos ME
tile.appliedenergistics2.quantum_link.name=Câmara de Ligação Quântica ME tile.appliedenergistics2.quantum_link.name=Câmara de Ligação Quântica ME
tile.appliedenergistics2.quantum_ring.name=Anel Quântico ME tile.appliedenergistics2.quantum_ring.name=Anel Quântico ME
tile.appliedenergistics2.fluix_block.name=Bloco de Fluix tile.appliedenergistics2.fluix_block.name=Bloco de Fluix
@@ -73,18 +75,19 @@ tile.appliedenergistics2.sky_stone_slab.name=Laje de Pedra do Céu
// Chat Messages // Chat Messages
chat.appliedenergistics2.ChestCannotReadStorageCell=Baú ME não consegue ler a célula de armazenamento. chat.appliedenergistics2.ChestCannotReadStorageCell=Baú ME não consegue ler a célula de armazenamento.
chat.appliedenergistics2.SettingCleared=Configuração limpa. chat.appliedenergistics2.SettingCleared=Cartão de Memória limpo.
chat.appliedenergistics2.OutOfRange=Fora de área do sinal chat.appliedenergistics2.OutOfRange=Fora de área do sinal
chat.appliedenergistics2.InvalidMachine=Máquina inválida. chat.appliedenergistics2.InvalidMachine=Máquina inválida.
chat.appliedenergistics2.LoadedSettings=Configurações carregadas com sucesso. chat.appliedenergistics2.LoadedSettings=Configuração de dispositivo carregada a partir do cartão de memória.
chat.appliedenergistics2.DeviceNotPowered=Dispositivo está com baixa energia. chat.appliedenergistics2.DeviceNotPowered=Dispositivo está com baixa energia.
chat.appliedenergistics2.DeviceNotWirelessTerminal=Dispositivo não é um terminal sem fios. chat.appliedenergistics2.DeviceNotWirelessTerminal=Dispositivo não é um terminal sem fios.
chat.appliedenergistics2.DeviceNotLinked=Dispositivo não conectado chat.appliedenergistics2.DeviceNotLinked=Dispositivo não conectado
chat.appliedenergistics2.StationCanNotBeLocated=Estação não pode ser encontrada. chat.appliedenergistics2.StationCanNotBeLocated=Estação não pode ser encontrada.
chat.appliedenergistics2.MachineNotPowered=Máquina não está sendo alimentada. chat.appliedenergistics2.MachineNotPowered=Máquina não está sendo alimentada.
chat.appliedenergistics2.CommunicationError=Erro comunicando com a rede. chat.appliedenergistics2.CommunicationError=Erro ao comunicar com a rede.
chat.appliedenergistics2.SavedSettings=Configurações salvas com sucesso. chat.appliedenergistics2.SavedSettings=Configurações atuais do dispositivo copiadas ao cartão de memória.
chat.appliedenergistics2.AmmoDepleted=Munição depletada. chat.appliedenergistics2.ResetSettings=Criada nova configuração de dispositivo e copiada ao cartão de memória.
chat.appliedenergistics2.AmmoDepleted=Munição esgotada.
chat.appliedenergistics2.isNowLocked=O monitor agora está Bloqueado. chat.appliedenergistics2.isNowLocked=O monitor agora está Bloqueado.
chat.appliedenergistics2.isNowUnlocked=O monitor agora está Desbloqueado. chat.appliedenergistics2.isNowUnlocked=O monitor agora está Desbloqueado.
@@ -117,9 +120,11 @@ gui.appliedenergistics2.security.build.tip=O usuário pode modificar a estutura
gui.appliedenergistics2.security.security.tip=O usuário pode acessar e modificar o terminal de segurança da rede. gui.appliedenergistics2.security.security.tip=O usuário pode acessar e modificar o terminal de segurança da rede.
gui.appliedenergistics2.Efficiency=Eficiência gui.appliedenergistics2.Efficiency=Eficiência
gui.appliedenergistics2.RequiredPower=Poder Requerido gui.appliedenergistics2.SCSSize=Tamanho SCS
gui.appliedenergistics2.StoredPower=Poder Armazenado gui.appliedenergistics2.SCSInvalid=Inválido
gui.appliedenergistics2.MaxPower=Poder Máximo gui.appliedenergistics2.RequiredPower=Energia Requerida
gui.appliedenergistics2.StoredPower=Energia Armazenada
gui.appliedenergistics2.MaxPower=Energia Máxima
gui.appliedenergistics2.QuartzCuttingKnife=Faca de Corte de Quartzo gui.appliedenergistics2.QuartzCuttingKnife=Faca de Corte de Quartzo
gui.appliedenergistics2.Inscriber=Inscritor gui.appliedenergistics2.Inscriber=Inscritor
gui.appliedenergistics2.Wireless=Ponto de Acesso Sem Fio gui.appliedenergistics2.Wireless=Ponto de Acesso Sem Fio
@@ -129,6 +134,7 @@ gui.appliedenergistics2.SecurityCardEditor=Editor de Cartão Biométrico
gui.appliedenergistics2.Encoded=Codificado gui.appliedenergistics2.Encoded=Codificado
gui.appliedenergistics2.Priority=Prioridade gui.appliedenergistics2.Priority=Prioridade
gui.appliedenergistics2.StorageBus=Barramento de Armazenamento gui.appliedenergistics2.StorageBus=Barramento de Armazenamento
gui.appliedenergistics2.StorageBusFluids=Barramento de Armazenamento de Fluido
gui.appliedenergistics2.EnergyDrain=Drenagem Passiva gui.appliedenergistics2.EnergyDrain=Drenagem Passiva
gui.appliedenergistics2.Installed=Instalado gui.appliedenergistics2.Installed=Instalado
gui.appliedenergistics2.NetworkTool=Ferramenta de Rede gui.appliedenergistics2.NetworkTool=Ferramenta de Rede
@@ -138,36 +144,44 @@ gui.appliedenergistics2.PortableCell=Célula Portátil
gui.appliedenergistics2.Security=Term. de Segurança gui.appliedenergistics2.Security=Term. de Segurança
gui.appliedenergistics2.CellWorkbench=Bancada de Células gui.appliedenergistics2.CellWorkbench=Bancada de Células
gui.appliedenergistics2.QuantumLinkChamber=Câmara de Ligação Quântica gui.appliedenergistics2.QuantumLinkChamber=Câmara de Ligação Quântica
gui.appliedenergistics2.IOPort=Porta de ES ME gui.appliedenergistics2.IOPort=Porta de E/S ME
gui.appliedenergistics2.Chest=Baú ME gui.appliedenergistics2.Chest=Baú ME
gui.appliedenergistics2.Condenser=Condensador de Matéria gui.appliedenergistics2.Condenser=Condensador de Matéria
gui.appliedenergistics2.Config=Config. gui.appliedenergistics2.Config=Config.
gui.appliedenergistics2.Drive=Acionador ME gui.appliedenergistics2.Drive=Acionador ME
gui.appliedenergistics2.ExportBus=Barramento de Exportação ME gui.appliedenergistics2.ExportBus=Barramento ME de Exportação
gui.appliedenergistics2.ExportBusFluids=Barramento ME de Exportação de Fluidos
gui.appliedenergistics2.GrindStone=Rebolo gui.appliedenergistics2.GrindStone=Rebolo
gui.appliedenergistics2.ImportBus=Barramento de Importação ME gui.appliedenergistics2.ImportBus=Barramento ME de Importação
gui.appliedenergistics2.ImportBusFluids=Barramento ME de Importação de Fluido
gui.appliedenergistics2.Interface=Interface ME gui.appliedenergistics2.Interface=Interface ME
gui.appliedenergistics2.LevelEmitter=Emissor de Nível ME gui.appliedenergistics2.FluidInterface=Interface ME de Fluido
gui.appliedenergistics2.Of=De gui.appliedenergistics2.LevelEmitter=Emissor ME de Nível
gui.appliedenergistics2.FluidLevelEmitter=Emissor ME de Nível de Fluido
gui.appliedenergistics2.Of=de
gui.appliedenergistics2.Patterns=Padrões gui.appliedenergistics2.Patterns=Padrões
gui.appliedenergistics2.SpatialIOPort=Porta de ES Espacial gui.appliedenergistics2.SpatialIOPort=Porta de E/S Espacial
gui.appliedenergistics2.StoredEnergy=Energia Armazenada gui.appliedenergistics2.StoredEnergy=Energia Armazenada
gui.appliedenergistics2.StoredItems=Itens Armazenados gui.appliedenergistics2.StoredItems=Itens Armazenados
gui.appliedenergistics2.StoredFluids=Fluidos Armazenados
gui.appliedenergistics2.Terminal=Terminal gui.appliedenergistics2.Terminal=Terminal
gui.appliedenergistics2.InterfaceTerminal=Terminal de Interface gui.appliedenergistics2.InterfaceTerminal=Terminal de Interface
gui.appliedenergistics2.InterfaceTerminalHint=Mostrar ou Esconder no Terminal de Interface gui.appliedenergistics2.InterfaceTerminalHint=Mostrar ou Esconder no Terminal de Interface
gui.appliedenergistics2.FormationPlane=Plano de Formação gui.appliedenergistics2.FormationPlane=Plano de Formação
gui.appliedenergistics2.FluidFormationPlane=Plano de Formação de Fluido
gui.appliedenergistics2.VibrationChamber=Câmara de Vibração gui.appliedenergistics2.VibrationChamber=Câmara de Vibração
gui.appliedenergistics2.NetworkDetails=Detalhes de Rede gui.appliedenergistics2.NetworkDetails=Detalhes de Rede
gui.appliedenergistics2.StorageCells=Células de Armazenamento ME gui.appliedenergistics2.StorageCells=Células de Armazenamento ME
gui.appliedenergistics2.IOBuses=Barramento de Ex/Importação ME gui.appliedenergistics2.IOBuses=Barramento ME de Exp/Importação
gui.appliedenergistics2.IOBusesFluids=Barramento ME de Exp/Importação de Fluido
gui.appliedenergistics2.Stores=Guarda gui.appliedenergistics2.Stores=Guarda
gui.appliedenergistics2.BytesUsed=Bytes Usados gui.appliedenergistics2.BytesUsed=Bytes Usados
gui.appliedenergistics2.Types=Tipos gui.appliedenergistics2.Types=Tipos
gui.appliedenergistics2.Blank=Branco gui.appliedenergistics2.Blank=Em Branco
gui.appliedenergistics2.Unlinked=Não Conectado gui.appliedenergistics2.Unlinked=Desconectado
gui.appliedenergistics2.Linked=Conectado gui.appliedenergistics2.Linked=Conectado
gui.appliedenergistics2.StoredSize=Tamanho Armazenado gui.appliedenergistics2.StoredSize=Tamanho Armazenado
gui.appliedenergistics2.CellId=ID da Célula
gui.appliedenergistics2.SkyChest=Baú de Pedra do Céu gui.appliedenergistics2.SkyChest=Baú de Pedra do Céu
gui.appliedenergistics2.PatternTerminal=Terminal de Padrões gui.appliedenergistics2.PatternTerminal=Terminal de Padrões
gui.appliedenergistics2.CraftingPattern=Padrão de Fabricação gui.appliedenergistics2.CraftingPattern=Padrão de Fabricação
@@ -283,9 +297,13 @@ gui.tooltips.appliedenergistics2.ActiveOnPulse=Ativar uma vez por pulso
gui.tooltips.appliedenergistics2.EmitLevelsBelow=Emitir quando níveis são iguais ou estão abaixo do limite gui.tooltips.appliedenergistics2.EmitLevelsBelow=Emitir quando níveis são iguais ou estão abaixo do limite
gui.tooltips.appliedenergistics2.EmitLevelAbove=Emitir quando níveis são iguais ou estão acima do limite. gui.tooltips.appliedenergistics2.EmitLevelAbove=Emitir quando níveis são iguais ou estão acima do limite.
gui.tooltips.appliedenergistics2.SearchMode_Auto=Auto Procura gui.tooltips.appliedenergistics2.SearchMode_Auto=Auto Procura
gui.tooltips.appliedenergistics2.SearchMode_Standard=Procura Normal gui.tooltips.appliedenergistics2.SearchMode_Standard=Procura Padrão
gui.tooltips.appliedenergistics2.SearchMode_JEIAuto=Auto Sincronizado ao JEI gui.tooltips.appliedenergistics2.SearchMode_JEIAuto=Auto Procura, Sincronizado com o JEI
gui.tooltips.appliedenergistics2.SearchMode_JEIStandard=Sincronizado ao JEI Normalmente gui.tooltips.appliedenergistics2.SearchMode_JEIStandard=Procura Padrão, Sincronizado com o JEI
gui.tooltips.appliedenergistics2.SearchMode_AutoKeep=Auto Procura (Manter)
gui.tooltips.appliedenergistics2.SearchMode_StandardKeep=Procura Padrão (Manter)
gui.tooltips.appliedenergistics2.SearchMode_JEIAutoKeep=Auto Procura, Sincronizado com o JEI (Manter)
gui.tooltips.appliedenergistics2.SearchMode_JEIStandardKeep=Procura Padrão, Sincronizado com o JEI (Manter)
gui.tooltips.appliedenergistics2.SearchMode=Modo de Caixa de Procura gui.tooltips.appliedenergistics2.SearchMode=Modo de Caixa de Procura
gui.tooltips.appliedenergistics2.PartitionStorageHint=Configura a Partição baseado em itens atualmente armazenados. gui.tooltips.appliedenergistics2.PartitionStorageHint=Configura a Partição baseado em itens atualmente armazenados.
gui.tooltips.appliedenergistics2.ClearSettings=Limpar Configurações gui.tooltips.appliedenergistics2.ClearSettings=Limpar Configurações
@@ -314,8 +332,11 @@ gui.tooltips.appliedenergistics2.EmitterMode=Modo de Fabricação Emissor
gui.tooltips.appliedenergistics2.CraftViaRedstone=Emite sinal para fazer um item. gui.tooltips.appliedenergistics2.CraftViaRedstone=Emite sinal para fazer um item.
gui.tooltips.appliedenergistics2.EmitWhenCrafting=Emite sinal enquanto o item está sendo fabricado. gui.tooltips.appliedenergistics2.EmitWhenCrafting=Emite sinal enquanto o item está sendo fabricado.
gui.tooltips.appliedenergistics2.ReportInaccessibleItems=Reportar Itens Inacessíveis gui.tooltips.appliedenergistics2.ReportInaccessibleItems=Reportar Itens Inacessíveis
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsYes=Sim: Itens que não podem ser extraídos vão estar visíveis. gui.tooltips.appliedenergistics2.ReportInaccessibleItemsYes=Sim: Itens que não podem ser extraídos estarão visíveis.
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsNo=Não: Apenas itens extraíveis vão estar visíveis. gui.tooltips.appliedenergistics2.ReportInaccessibleItemsNo=Não: Apenas itens extraíveis vão estar visíveis.
gui.tooltips.appliedenergistics2.ReportInaccessibleFluids=Reportar Fluidos Inacessíveis
gui.tooltips.appliedenergistics2.ReportInaccessibleFluidsYes=Sim: Fluidos que não podem ser extraídos estarão visíveis.
gui.tooltips.appliedenergistics2.ReportInaccessibleFluidsNo=Não: Apenas fluidos extraíveis estarão visíveis.
gui.tooltips.appliedenergistics2.BlockPlacement=Colocação de Blocos gui.tooltips.appliedenergistics2.BlockPlacement=Colocação de Blocos
gui.tooltips.appliedenergistics2.BlockPlacementYes=Blocks serão colocados como blocos. gui.tooltips.appliedenergistics2.BlockPlacementYes=Blocks serão colocados como blocos.
gui.tooltips.appliedenergistics2.BlockPlacementNo=Blocos serão jogados como itens. gui.tooltips.appliedenergistics2.BlockPlacementNo=Blocos serão jogados como itens.
@@ -323,12 +344,16 @@ gui.tooltips.appliedenergistics2.SchedulingMode=Modo Planejado
gui.tooltips.appliedenergistics2.SchedulingModeDefault=Exportar o primeiro item até que a rede esteja vazia, e depois tentar o próximo. gui.tooltips.appliedenergistics2.SchedulingModeDefault=Exportar o primeiro item até que a rede esteja vazia, e depois tentar o próximo.
gui.tooltips.appliedenergistics2.SchedulingModeRoundRobin=Exportar usando mode modo de turnos. gui.tooltips.appliedenergistics2.SchedulingModeRoundRobin=Exportar usando mode modo de turnos.
gui.tooltips.appliedenergistics2.SchedulingModeRandom=Exportar items usando modo aleatório. gui.tooltips.appliedenergistics2.SchedulingModeRandom=Exportar items usando modo aleatório.
gui.tooltips.appliedenergistics2.FilterMode=Modo Filtro de Procura
gui.tooltips.appliedenergistics2.FilterModeKeep=Restaura o Filtro de Procura Anterior.
gui.tooltips.appliedenergistics2.FilterModeClear=Limpa em cada abertura.
gui.tooltips.appliedenergistics2.ItemsStored=Items Guardados: %s gui.tooltips.appliedenergistics2.ItemsStored=Items Guardados: %s
gui.tooltips.appliedenergistics2.ItemsRequestable=Items Solicitáveis: %s gui.tooltips.appliedenergistics2.ItemsRequestable=Items Solicitáveis: %s
gui.tooltips.appliedenergistics2.P2PFrequency=Frequência: %s
// Units // Units
gui.appliedenergistics2.units.appliedenergstics=AE gui.appliedenergistics2.units.appliedenergstics=AE
gui.appliedenergistics2.units.ic2=Energy Units gui.appliedenergistics2.units.ic2=Unidades de Energia
gui.appliedenergistics2.units.rf=Redstone Flux gui.appliedenergistics2.units.rf=Redstone Flux
// Cores // Cores
@@ -360,15 +385,23 @@ waila.appliedenergistics2.Unlocked=Destrancado
waila.appliedenergistics2.Showing=Mostrando waila.appliedenergistics2.Showing=Mostrando
waila.appliedenergistics2.Contains=Contém waila.appliedenergistics2.Contains=Contém
waila.appliedenergistics2.Channels=%1$d de %2$d Canais waila.appliedenergistics2.Channels=%1$d de %2$d Canais
waila.appliedenergistics2.P2PUnlinked=Desconectado
waila.appliedenergistics2.P2PInputOneOutput=Conectado (Lado de Entrada)
waila.appliedenergistics2.P2PInputManyOutputs=Conectado (Lado de Entrada) - %d Saídas
waila.appliedenergistics2.P2POutput=Conectado (Lado de Saída)
// Items // Items
item.appliedenergistics2.storage_cell_1k.name=Célula de Armazenamento ME de 1k item.appliedenergistics2.storage_cell_1k.name=Célula de Armazenamento ME de 1k
item.appliedenergistics2.storage_cell_4k.name=Célula de Armazenamento ME de 4k item.appliedenergistics2.storage_cell_4k.name=Célula de Armazenamento ME de 4k
item.appliedenergistics2.storage_cell_16k.name=Célula de Armazenamento ME de 16k item.appliedenergistics2.storage_cell_16k.name=Célula de Armazenamento ME de 16k
item.appliedenergistics2.storage_cell_64k.name=Célula de Armazenamento ME de 64k item.appliedenergistics2.storage_cell_64k.name=Célula de Armazenamento ME de 64k
item.appliedenergistics2.fluid_storage_cell_1k.name=Célula de Armazenamento ME de 1k para Fluidos
item.appliedenergistics2.fluid_storage_cell_4k.name=Célula de Armazenamento ME de 4k para Fluidos
item.appliedenergistics2.fluid_storage_cell_16k.name=Célula de Armazenamento ME de 16k para Fluidos
item.appliedenergistics2.fluid_storage_cell_64k.name=Célula de Armazenamento ME de 64k para Fluidos
item.appliedenergistics2.creative_storage_cell.name=Célula de Armazenamento ME Criativa item.appliedenergistics2.creative_storage_cell.name=Célula de Armazenamento ME Criativa
item.appliedenergistics2.encoded_pattern.name=Padrão Codificado item.appliedenergistics2.encoded_pattern.name=Padrão Codificado
item.appliedenergistics2.view_cell.name=Ver Célula item.appliedenergistics2.view_cell.name=Célula de Visualização
item.appliedenergistics2.facade.name=Fachada de Cabos item.appliedenergistics2.facade.name=Fachada de Cabos
item.appliedenergistics2.crystal_seed.certus.name=Semente de Quartzo Certus item.appliedenergistics2.crystal_seed.certus.name=Semente de Quartzo Certus
@@ -392,11 +425,15 @@ item.appliedenergistics2.material.cell1k_part.name=Componente de Armazenamento M
item.appliedenergistics2.material.cell4k_part.name=Componente de Armazenamento ME de 4k item.appliedenergistics2.material.cell4k_part.name=Componente de Armazenamento ME de 4k
item.appliedenergistics2.material.cell16k_part.name=Componente de Armazenamento ME de 16k item.appliedenergistics2.material.cell16k_part.name=Componente de Armazenamento ME de 16k
item.appliedenergistics2.material.cell64k_part.name=Componente de Armazenamento ME de 64k item.appliedenergistics2.material.cell64k_part.name=Componente de Armazenamento ME de 64k
item.appliedenergistics2.material.fluid_cell1k_part.name=Componente de Armazenamento ME de Fluidos de 1k
item.appliedenergistics2.material.fluid_cell4k_part.name=Componente de Armazenamento ME de Fluidos de 4k
item.appliedenergistics2.material.fluid_cell16k_part.name=Componente de Armazenamento ME de Fluidos de 16k
item.appliedenergistics2.material.fluid_cell64k_part.name=Componente de Armazenamento ME de Fluidos de 64k
item.appliedenergistics2.material.certus_quartz_crystal.name=Cristal de Quartzo Certus item.appliedenergistics2.material.certus_quartz_crystal.name=Cristal de Quartzo Certus
item.appliedenergistics2.material.certus_quartz_crystal_charged.name=Cristal Carregado de Quartzo Certus item.appliedenergistics2.material.certus_quartz_crystal_charged.name=Cristal Carregado de Quartzo Certus
item.appliedenergistics2.material.certus_quartz_dust.name=Pó de Quartzo Certus item.appliedenergistics2.material.certus_quartz_dust.name=Pó de Quartzo Certus
item.appliedenergistics2.material.empty_storage_cell.name=Encaixe de Armazenamento ME item.appliedenergistics2.material.empty_storage_cell.name=Encaixe de Armazenamento ME
item.appliedenergistics2.material.ender_dust.name=Pó do Fim item.appliedenergistics2.material.ender_dust.name=Pó do End
item.appliedenergistics2.material.engineering_processor.name=Processador de Engenharia item.appliedenergistics2.material.engineering_processor.name=Processador de Engenharia
item.appliedenergistics2.material.flour.name=Farinha item.appliedenergistics2.material.flour.name=Farinha
item.appliedenergistics2.material.fluix_crystal.name=Cristal de Fluix item.appliedenergistics2.material.fluix_crystal.name=Cristal de Fluix
@@ -431,32 +468,41 @@ item.appliedenergistics2.material.sky_dust.name=Pó de Pedra do Céu
item.appliedenergistics2.material.card_crafting.name=Cartão de Fabricação item.appliedenergistics2.material.card_crafting.name=Cartão de Fabricação
item.appliedenergistics2.multi_part.annihilation_plane.name=Plano de Aniquilação ME item.appliedenergistics2.multi_part.annihilation_plane.name=Plano de Aniquilação ME
item.appliedenergistics2.multi_part.fluid_annihilation_plane.name=Plano de Aniquilação ME para Fluidos
item.appliedenergistics2.multi_part.identity_annihilation_plane.name=Plano de Aniquilação de identidade ME item.appliedenergistics2.multi_part.identity_annihilation_plane.name=Plano de Aniquilação de identidade ME
item.appliedenergistics2.multi_part.cable_anchor.name=Cabo Âncora item.appliedenergistics2.multi_part.cable_anchor.name=Cabo Âncora
item.appliedenergistics2.multi_part.cable_covered.name=Cabo Coberto ME item.appliedenergistics2.multi_part.cable_covered.name=Cabo Coberto ME
item.appliedenergistics2.multi_part.cable_glass.name=Cabo de Vidro ME item.appliedenergistics2.multi_part.cable_glass.name=Cabo de Vidro ME
item.appliedenergistics2.multi_part.cable_smart.name=Cabo Inteligente ME item.appliedenergistics2.multi_part.cable_smart.name=Cabo Inteligente ME
item.appliedenergistics2.multi_part.cable_dense_smart.name=Cabo Denso ME item.appliedenergistics2.multi_part.cable_dense_smart.name=Cabo Denso Coberto ME
item.appliedenergistics2.multi_part.cable_dense_smart.name=Cabo Denso Coberto Inteligente ME
item.appliedenergistics2.multi_part.storage_monitor.name=Monitor de Armazenamento ME item.appliedenergistics2.multi_part.storage_monitor.name=Monitor de Armazenamento ME
item.appliedenergistics2.multi_part.conversion_monitor.name=Monitor de Conversão ME item.appliedenergistics2.multi_part.conversion_monitor.name=Monitor de Conversão ME
item.appliedenergistics2.multi_part.crafting_terminal.name=Terminal de Fabricação ME item.appliedenergistics2.multi_part.crafting_terminal.name=Terminal de Fabricação ME
item.appliedenergistics2.multi_part.semi_dark_monitor.name=Painel Iluminado item.appliedenergistics2.multi_part.semi_dark_monitor.name=Painel Iluminado
item.appliedenergistics2.multi_part.monitor.name=Painel Brilhante Iluminado item.appliedenergistics2.multi_part.monitor.name=Painel Brilhante Iluminado
item.appliedenergistics2.multi_part.dark_monitor.name=Painel Escuro Iluminado item.appliedenergistics2.multi_part.dark_monitor.name=Painel Escuro Iluminado
item.appliedenergistics2.multi_part.export_bus.name=Barramento de Exportação ME item.appliedenergistics2.multi_part.export_bus.name=Barramento ME de Exportação
item.appliedenergistics2.multi_part.fluid_export_bus.name=Barramento ME de Exportação de Fluidos
item.appliedenergistics2.multi_part.formation_plane.name=Plano de Formação ME item.appliedenergistics2.multi_part.formation_plane.name=Plano de Formação ME
item.appliedenergistics2.multi_part.import_bus.name=Barramento de Importação ME item.appliedenergistics2.multi_part.fluid_formation_plane.name=Plano de Formação ME para Fluidos
item.appliedenergistics2.multi_part.import_bus.name=Barramento ME de Importação
item.appliedenergistics2.multi_part.fluid_import_bus.name=Barramento ME de Importação de Fluidos
item.appliedenergistics2.multi_part.interface.name=Interface ME item.appliedenergistics2.multi_part.interface.name=Interface ME
item.appliedenergistics2.multi_part.fluid_interface.name=Interface ME de Fluidos
item.appliedenergistics2.multi_part.level_emitter.name=Emissor de Nível ME item.appliedenergistics2.multi_part.level_emitter.name=Emissor de Nível ME
item.appliedenergistics2.multi_part.fluid_level_emitter.name=Emissor de Nível ME para Fluidos
item.appliedenergistics2.multi_part.p2p_tunnel.name=Tùnel P2P item.appliedenergistics2.multi_part.p2p_tunnel.name=Tùnel P2P
item.appliedenergistics2.multi_part.pattern_terminal.name=Terminal de Padrões ME item.appliedenergistics2.multi_part.pattern_terminal.name=Terminal de Padrões ME
item.appliedenergistics2.multi_part.quartz_fiber.name=Fibra de Quartzo item.appliedenergistics2.multi_part.quartz_fiber.name=Fibra de Quartzo
item.appliedenergistics2.multi_part.storage_bus.name=Barramento de Armazenamento ME item.appliedenergistics2.multi_part.storage_bus.name=Barramento ME de Armazenamento
item.appliedenergistics2.multi_part.fluid_storage_bus.name=Barramento ME de Armazenamento de Fluidos
item.appliedenergistics2.multi_part.terminal.name=Terminal ME item.appliedenergistics2.multi_part.terminal.name=Terminal ME
item.appliedenergistics2.multi_part.inverted_toggle_bus.name=Barramento de Alternância Invertido ME item.appliedenergistics2.multi_part.inverted_toggle_bus.name=Barramento de Alternância Invertido ME
item.appliedenergistics2.multi_part.toggle_bus.name=Barramento de Alternância ME item.appliedenergistics2.multi_part.toggle_bus.name=Barramento de Alternância ME
item.appliedenergistics2.multi_part.crafting_monitor.name=Monitor de Fabricação ME item.appliedenergistics2.multi_part.crafting_monitor.name=Monitor de Fabricação ME
item.appliedenergistics2.multi_part.interface_terminal.name=Terminal de Interface ME item.appliedenergistics2.multi_part.interface_terminal.name=Terminal de Interface ME
item.appliedenergistics2.multi_part.fluid_terminal.name=Terminal ME de Fluidos
item.appliedenergistics2.multi_part.invalid_type.name=Item Desabilitado item.appliedenergistics2.multi_part.invalid_type.name=Item Desabilitado
item.appliedenergistics2.spatial_storage_cell_128_cubed.name=Célula de Armazenamento Espacial 128³ item.appliedenergistics2.spatial_storage_cell_128_cubed.name=Célula de Armazenamento Espacial 128³
@@ -502,18 +548,20 @@ commands.ae2.ChunkLoggerOff=O registro de agora está desligado.
commands.ae2.Supporters=Mostra uma lista de Apoiadores do AE2 commands.ae2.Supporters=Mostra uma lista de Apoiadores do AE2
// Conquistas // Conquistas
achievement.ae2.Root=Energistica Aplicada
achievement.ae2.Root.desc=Quando baús não são o suficiente.
achievement.ae2.Compass=Caça-Meteoritos achievement.ae2.Compass=Caça-Meteoritos
achievement.ae2.Compass.desc=Faça uma Bússola de Meteoritos achievement.ae2.Compass.desc=Faça uma Bússola de Meteoritos
achievement.ae2.Presses=Tecnologia Desconhecida achievement.ae2.Presses=Tecnologia Desconhecida
achievement.ae2.Presses.desc=Ache uma Prensa de Processador achievement.ae2.Presses.desc=Ache uma Prensa de Processador
achievement.ae2.SpatialIO=Coordenação Espacial achievement.ae2.SpatialIO=Coordenação Espacial
achievement.ae2.SpatialIO.desc=Crie uma Porta de ES Espacial achievement.ae2.SpatialIO.desc=Crie uma Porta de E/S Espacial
achievement.ae2.SpatialIOExplorer=Ir audaciosamente achievement.ae2.SpatialIOExplorer=Ir audaciosamente
achievement.ae2.SpatialIOExplorer.desc=Fique armazenado em uma Célula de Armazenamento Espacial. achievement.ae2.SpatialIOExplorer.desc=Seja armazenado em uma Célula de Armazenamento Espacial.
achievement.ae2.StorageCell=Melhor que Baús achievement.ae2.StorageCell=Melhor que Baús
achievement.ae2.StorageCell.desc=Faça uma Célula de Armazenamento achievement.ae2.StorageCell.desc=Faça uma Célula de Armazenamento de Matéria para Energia
achievement.ae2.IOPort=Embaralhamento de Células de Armazenamentos achievement.ae2.IOPort=Embaralhamento de Células de Armazenamento
achievement.ae2.IOPort.desc=Faça uma Porta de ES achievement.ae2.IOPort.desc=Faça uma Porta de E/S
achievement.ae2.CraftingTerminal=Uma Bancada (Muito) Maior achievement.ae2.CraftingTerminal=Uma Bancada (Muito) Maior
achievement.ae2.CraftingTerminal.desc=Faça um Terminal de Fabricação achievement.ae2.CraftingTerminal.desc=Faça um Terminal de Fabricação
achievement.ae2.PatternTerminal=Maestro da Fabricação achievement.ae2.PatternTerminal=Maestro da Fabricação
@@ -557,3 +605,7 @@ achievement.ae2.QNB.desc=Faça uma Ligação Quântica
stat.ae2.ItemsInserted=Itens adicionados ao Armazenamento ME stat.ae2.ItemsInserted=Itens adicionados ao Armazenamento ME
stat.ae2.ItemsExtracted=Itens extraídos do Armazenamento ME stat.ae2.ItemsExtracted=Itens extraídos do Armazenamento ME
stat.ae2.TurnedCranks=Manivelas Giradas stat.ae2.TurnedCranks=Manivelas Giradas
//Keys
key.appliedenergistics2.category=Applied Energistics 2
key.toggle_focus.desc=Alterar foco da caixa de procura
@@ -1,4 +1,4 @@
// 方块 // Blocks (方块)
tile.appliedenergistics2.cable_bus.name=AE2线缆和(或)总线 tile.appliedenergistics2.cable_bus.name=AE2线缆和(或)总线
tile.appliedenergistics2.cell_workbench.name=元件工作台 tile.appliedenergistics2.cell_workbench.name=元件工作台
tile.appliedenergistics2.charger.name=充能器 tile.appliedenergistics2.charger.name=充能器
@@ -16,6 +16,7 @@ tile.appliedenergistics2.matrix_frame.name=矩阵框架
tile.appliedenergistics2.io_port.name=ME-IO端口 tile.appliedenergistics2.io_port.name=ME-IO端口
tile.appliedenergistics2.inscriber.name=压印器 tile.appliedenergistics2.inscriber.name=压印器
tile.appliedenergistics2.interface.name=ME接口 tile.appliedenergistics2.interface.name=ME接口
tile.appliedenergistics2.fluid_interface.name=ME流体接口
tile.appliedenergistics2.quantum_link.name=ME量子链接仓 tile.appliedenergistics2.quantum_link.name=ME量子链接仓
tile.appliedenergistics2.quantum_ring.name=ME量子环 tile.appliedenergistics2.quantum_ring.name=ME量子环
tile.appliedenergistics2.fluix_block.name=福鲁伊克斯块 tile.appliedenergistics2.fluix_block.name=福鲁伊克斯块
@@ -51,7 +52,7 @@ tile.appliedenergistics2.crafting_accelerator.name=并行处理单元
tile.appliedenergistics2.crafting_unit.name=合成单元 tile.appliedenergistics2.crafting_unit.name=合成单元
tile.appliedenergistics2.molecular_assembler.name=分子装配室 tile.appliedenergistics2.molecular_assembler.name=分子装配室
// 楼梯 // Stairs (楼梯)
tile.appliedenergistics2.fluix_stairs.name=錾制赛特斯石英楼梯 tile.appliedenergistics2.fluix_stairs.name=錾制赛特斯石英楼梯
tile.appliedenergistics2.quartz_stairs.name=福鲁伊克斯楼梯 tile.appliedenergistics2.quartz_stairs.name=福鲁伊克斯楼梯
tile.appliedenergistics2.chiseled_quartz_stairs.name=竖纹赛特斯石英楼梯 tile.appliedenergistics2.chiseled_quartz_stairs.name=竖纹赛特斯石英楼梯
@@ -61,7 +62,7 @@ tile.appliedenergistics2.sky_stone_brick_stairs.name=陨石石砖楼梯
tile.appliedenergistics2.sky_stone_small_brick_stairs.name=陨石砖块楼梯 tile.appliedenergistics2.sky_stone_small_brick_stairs.name=陨石砖块楼梯
tile.appliedenergistics2.sky_stone_stairs.name=陨石楼梯 tile.appliedenergistics2.sky_stone_stairs.name=陨石楼梯
// Slabs // Slabs (台阶)
tile.appliedenergistics2.chiseled_quartz_slab.name=錾制赛特斯石英台阶 tile.appliedenergistics2.chiseled_quartz_slab.name=錾制赛特斯石英台阶
tile.appliedenergistics2.fluix_slab.name=福鲁伊克斯台阶 tile.appliedenergistics2.fluix_slab.name=福鲁伊克斯台阶
tile.appliedenergistics2.quartz_pillar_slab.name=竖纹赛特斯石英台阶 tile.appliedenergistics2.quartz_pillar_slab.name=竖纹赛特斯石英台阶
@@ -71,7 +72,7 @@ tile.appliedenergistics2.sky_stone_brick_slab.name=陨石石砖台阶
tile.appliedenergistics2.sky_stone_small_brick_slab.name=陨石砖块台阶 tile.appliedenergistics2.sky_stone_small_brick_slab.name=陨石砖块台阶
tile.appliedenergistics2.sky_stone_slab.name=陨石台阶 tile.appliedenergistics2.sky_stone_slab.name=陨石台阶
// Chat Messages // Chat Messages (聊天信息)
chat.appliedenergistics2.ChestCannotReadStorageCell=ME箱子无法读取存储元件. chat.appliedenergistics2.ChestCannotReadStorageCell=ME箱子无法读取存储元件.
chat.appliedenergistics2.SettingCleared=设置已清除. chat.appliedenergistics2.SettingCleared=设置已清除.
chat.appliedenergistics2.OutOfRange=超出无线信号范围. chat.appliedenergistics2.OutOfRange=超出无线信号范围.
@@ -83,20 +84,21 @@ chat.appliedenergistics2.DeviceNotLinked=设备未连接.
chat.appliedenergistics2.StationCanNotBeLocated=无法定位安全终端. chat.appliedenergistics2.StationCanNotBeLocated=无法定位安全终端.
chat.appliedenergistics2.MachineNotPowered=机器未供能. chat.appliedenergistics2.MachineNotPowered=机器未供能.
chat.appliedenergistics2.CommunicationError=网络交互错误. chat.appliedenergistics2.CommunicationError=网络交互错误.
chat.appliedenergistics2.SavedSettings=成功保存设定. chat.appliedenergistics2.SavedSettings=已将当前设备的配置保存到内存卡中.
chat.appliedenergistics2.ResetSettings=新的设备配置已被创建并保存到内存卡中.
chat.appliedenergistics2.AmmoDepleted=弹药告罄. chat.appliedenergistics2.AmmoDepleted=弹药告罄.
chat.appliedenergistics2.isNowLocked=监控器已锁定. chat.appliedenergistics2.isNowLocked=监控器已锁定.
chat.appliedenergistics2.isNowUnlocked=监控器已解锁. chat.appliedenergistics2.isNowUnlocked=监控器已解锁.
// Creative Tabs // Creative Tabs (创造模式物品栏)
itemGroup.appliedenergistics2=应用能源2 itemGroup.appliedenergistics2=应用能源2
itemGroup.appliedenergistics2.facades=应用能源2-伪装板 itemGroup.appliedenergistics2.facades=应用能源2-伪装板
// GUI // GUI (图形用户界面相关)
gui.appliedenergistics2.CraftingTerminal=合成终端 gui.appliedenergistics2.CraftingTerminal=合成终端
gui.appliedenergistics2.METunnel=ME gui.appliedenergistics2.METunnel=ME
gui.appliedenergistics2.ItemTunnel=物品 gui.appliedenergistics2.ItemTunnel=物品
gui.appliedenergistics2.FluidTunnel= gui.appliedenergistics2.FluidTunnel=
gui.appliedenergistics2.RedstoneTunnel=红石 gui.appliedenergistics2.RedstoneTunnel=红石
gui.appliedenergistics2.EUTunnel=EU gui.appliedenergistics2.EUTunnel=EU
gui.appliedenergistics2.FETunnel=FE gui.appliedenergistics2.FETunnel=FE
@@ -131,6 +133,7 @@ gui.appliedenergistics2.SecurityCardEditor=身份卡编辑
gui.appliedenergistics2.Encoded=已编码 gui.appliedenergistics2.Encoded=已编码
gui.appliedenergistics2.Priority=优先级 gui.appliedenergistics2.Priority=优先级
gui.appliedenergistics2.StorageBus=存储总线 gui.appliedenergistics2.StorageBus=存储总线
gui.appliedenergistics2.StorageBusFluids=流体储存总线
gui.appliedenergistics2.EnergyDrain=被动流失 gui.appliedenergistics2.EnergyDrain=被动流失
gui.appliedenergistics2.Installed=已安装 gui.appliedenergistics2.Installed=已安装
gui.appliedenergistics2.NetworkTool=网络工具 gui.appliedenergistics2.NetworkTool=网络工具
@@ -146,23 +149,30 @@ gui.appliedenergistics2.Condenser=物质聚合器
gui.appliedenergistics2.Config=配置 gui.appliedenergistics2.Config=配置
gui.appliedenergistics2.Drive=ME驱动器 gui.appliedenergistics2.Drive=ME驱动器
gui.appliedenergistics2.ExportBus=ME输出总线 gui.appliedenergistics2.ExportBus=ME输出总线
gui.appliedenergistics2.ExportBusFluids=ME流体输出总线
gui.appliedenergistics2.GrindStone=磨具 gui.appliedenergistics2.GrindStone=磨具
gui.appliedenergistics2.ImportBus=ME输入总线 gui.appliedenergistics2.ImportBus=ME输入总线
gui.appliedenergistics2.ImportBusFluids=ME流体输入总线
gui.appliedenergistics2.Interface=ME接口 gui.appliedenergistics2.Interface=ME接口
gui.appliedenergistics2.FluidInterface=ME流体接口
gui.appliedenergistics2.LevelEmitter=ME标准发信器 gui.appliedenergistics2.LevelEmitter=ME标准发信器
gui.appliedenergistics2.FluidLevelEmitter=ME流体标准发信器
gui.appliedenergistics2.Of=/ gui.appliedenergistics2.Of=/
gui.appliedenergistics2.Patterns=样板 gui.appliedenergistics2.Patterns=样板
gui.appliedenergistics2.SpatialIOPort=空间IO端口 gui.appliedenergistics2.SpatialIOPort=空间IO端口
gui.appliedenergistics2.StoredEnergy=已存储能源 gui.appliedenergistics2.StoredEnergy=已存储能源
gui.appliedenergistics2.StoredItems=已存储物品 gui.appliedenergistics2.StoredItems=已存储物品
gui.appliedenergistics2.StoredFluids=已存储流体
gui.appliedenergistics2.Terminal=终端 gui.appliedenergistics2.Terminal=终端
gui.appliedenergistics2.InterfaceTerminal=接口终端 gui.appliedenergistics2.InterfaceTerminal=接口终端
gui.appliedenergistics2.InterfaceTerminalHint=在接口终端显示或隐藏. gui.appliedenergistics2.InterfaceTerminalHint=在接口终端显示或隐藏.
gui.appliedenergistics2.FormationPlane=成型面板 gui.appliedenergistics2.FormationPlane=成型面板
gui.appliedenergistics2.FluidFormationPlane=流体成型面板
gui.appliedenergistics2.VibrationChamber=谐振仓 gui.appliedenergistics2.VibrationChamber=谐振仓
gui.appliedenergistics2.NetworkDetails=网络信息 gui.appliedenergistics2.NetworkDetails=网络信息
gui.appliedenergistics2.StorageCells=ME存储元件 gui.appliedenergistics2.StorageCells=ME存储元件
gui.appliedenergistics2.IOBuses=ME输入/输出总线 gui.appliedenergistics2.IOBuses=ME输入/输出总线
gui.appliedenergistics2.IOBusesFluids=ME流体输入/输出总线
gui.appliedenergistics2.Stores=存储 gui.appliedenergistics2.Stores=存储
gui.appliedenergistics2.BytesUsed=字节已使用 gui.appliedenergistics2.BytesUsed=字节已使用
gui.appliedenergistics2.Types=类型 gui.appliedenergistics2.Types=类型
@@ -236,7 +246,7 @@ gui.appliedenergistics2.SmallFontCraft=Craft
gui.appliedenergistics2.LargeFontCraft=+ gui.appliedenergistics2.LargeFontCraft=+
gui.appliedenergistics2.Nothing=无 gui.appliedenergistics2.Nothing=无
// GUI提示 // GUI Tooltips (GUI提示)
gui.tooltips.appliedenergistics2.Stash=存储物品 gui.tooltips.appliedenergistics2.Stash=存储物品
gui.tooltips.appliedenergistics2.StashDesc=将合成槽的物品返回网络 gui.tooltips.appliedenergistics2.StashDesc=将合成槽的物品返回网络
gui.tooltips.appliedenergistics2.Substitutions=矿物词典替换 gui.tooltips.appliedenergistics2.Substitutions=矿物词典替换
@@ -289,6 +299,10 @@ gui.tooltips.appliedenergistics2.SearchMode_Auto=自动搜索
gui.tooltips.appliedenergistics2.SearchMode_Standard=标准搜索 gui.tooltips.appliedenergistics2.SearchMode_Standard=标准搜索
gui.tooltips.appliedenergistics2.SearchMode_JEIAuto=JEI自动同步 gui.tooltips.appliedenergistics2.SearchMode_JEIAuto=JEI自动同步
gui.tooltips.appliedenergistics2.SearchMode_JEIStandard=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.SearchMode=搜索框模式
gui.tooltips.appliedenergistics2.PartitionStorageHint=基于当前已存储物品进行分区编辑. gui.tooltips.appliedenergistics2.PartitionStorageHint=基于当前已存储物品进行分区编辑.
gui.tooltips.appliedenergistics2.ClearSettings=清除配置 gui.tooltips.appliedenergistics2.ClearSettings=清除配置
@@ -316,9 +330,12 @@ gui.tooltips.appliedenergistics2.DoesntDespawn=该物品不会消失.
gui.tooltips.appliedenergistics2.EmitterMode=合成发信模式 gui.tooltips.appliedenergistics2.EmitterMode=合成发信模式
gui.tooltips.appliedenergistics2.CraftViaRedstone=发射红石信号来合成物品. gui.tooltips.appliedenergistics2.CraftViaRedstone=发射红石信号来合成物品.
gui.tooltips.appliedenergistics2.EmitWhenCrafting=在物品合成时发射红石信号. gui.tooltips.appliedenergistics2.EmitWhenCrafting=在物品合成时发射红石信号.
gui.tooltips.appliedenergistics2.ReportInaccessibleItems=报告不可交互的物品 gui.tooltips.appliedenergistics2.ReportInaccessibleItems=显示不可交互的物品
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsYes=是: 显示无法取出的物品. gui.tooltips.appliedenergistics2.ReportInaccessibleItemsYes=是: 显示无法取出的物品.
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsNo=否: 只显示可以取出的物品. gui.tooltips.appliedenergistics2.ReportInaccessibleItemsNo=否: 只显示可以取出的物品.
gui.tooltips.appliedenergistics2.ReportInaccessibleFluids=显示不可交互的流体
gui.tooltips.appliedenergistics2.ReportInaccessibleFluidsYes=是: 显示无法取出的流体.
gui.tooltips.appliedenergistics2.ReportInaccessibleFluidsNo=否: 只显示可以取出的流体.
gui.tooltips.appliedenergistics2.BlockPlacement=方块放置方式 gui.tooltips.appliedenergistics2.BlockPlacement=方块放置方式
gui.tooltips.appliedenergistics2.BlockPlacementYes=方块将被放置. gui.tooltips.appliedenergistics2.BlockPlacementYes=方块将被放置.
gui.tooltips.appliedenergistics2.BlockPlacementNo=方块将以物品形式掉落. gui.tooltips.appliedenergistics2.BlockPlacementNo=方块将以物品形式掉落.
@@ -326,15 +343,19 @@ gui.tooltips.appliedenergistics2.SchedulingMode=调度模式
gui.tooltips.appliedenergistics2.SchedulingModeDefault=输出第一个物品直到系统中没有该物品,再输出下一个. gui.tooltips.appliedenergistics2.SchedulingModeDefault=输出第一个物品直到系统中没有该物品,再输出下一个.
gui.tooltips.appliedenergistics2.SchedulingModeRoundRobin=循环输出模式. gui.tooltips.appliedenergistics2.SchedulingModeRoundRobin=循环输出模式.
gui.tooltips.appliedenergistics2.SchedulingModeRandom=随机输出模式. gui.tooltips.appliedenergistics2.SchedulingModeRandom=随机输出模式.
gui.tooltips.appliedenergistics2.FilterMode=搜索过滤器模式
gui.tooltips.appliedenergistics2.FilterModeKeep=重载上一个搜索过滤器.
gui.tooltips.appliedenergistics2.FilterModeClear=在每次打开时清空.
gui.tooltips.appliedenergistics2.ItemsStored=存储物品: %s gui.tooltips.appliedenergistics2.ItemsStored=存储物品: %s
gui.tooltips.appliedenergistics2.ItemsRequestable=可请求: %s gui.tooltips.appliedenergistics2.ItemsRequestable=可请求: %s
gui.tooltips.appliedenergistics2.P2PFrequency=频率: %s
// 单位 // Units (单位)
gui.appliedenergistics2.units.appliedenergstics=AE gui.appliedenergistics2.units.appliedenergstics=AE
gui.appliedenergistics2.units.ic2=EU gui.appliedenergistics2.units.ic2=EU
gui.appliedenergistics2.units.rf=RF gui.appliedenergistics2.units.rf=RF
// 颜色 // Colors (颜色)
gui.appliedenergistics2.White=白色 gui.appliedenergistics2.White=白色
gui.appliedenergistics2.Orange=橙色 gui.appliedenergistics2.Orange=橙色
gui.appliedenergistics2.Magenta=品红色 gui.appliedenergistics2.Magenta=品红色
@@ -382,13 +403,18 @@ theoneprobe.appliedenergistics2.p2p_unlinked=未连接
theoneprobe.appliedenergistics2.p2p_input_one_output=已连接(输入端) theoneprobe.appliedenergistics2.p2p_input_one_output=已连接(输入端)
theoneprobe.appliedenergistics2.p2p_input_many_outputs=已连接(输入端)- %d 输出 theoneprobe.appliedenergistics2.p2p_input_many_outputs=已连接(输入端)- %d 输出
theoneprobe.appliedenergistics2.p2p_output=已连接(输出端) theoneprobe.appliedenergistics2.p2p_output=已连接(输出端)
theoneprobe.appliedenergistics2.p2p_frequency=频率: %1$s
theoneprobe.appliedenergistics2.stored_energy=%1$d / %2$d theoneprobe.appliedenergistics2.stored_energy=%1$d / %2$d
// 物品 // Items (物品)
item.appliedenergistics2.storage_cell_1k.name=1k-ME存储元件 item.appliedenergistics2.storage_cell_1k.name=1k-ME存储元件
item.appliedenergistics2.storage_cell_4k.name=4k-ME存储元件 item.appliedenergistics2.storage_cell_4k.name=4k-ME存储元件
item.appliedenergistics2.storage_cell_16k.name=16k-ME存储元件 item.appliedenergistics2.storage_cell_16k.name=16k-ME存储元件
item.appliedenergistics2.storage_cell_64k.name=64k-ME存储元件 item.appliedenergistics2.storage_cell_64k.name=64k-ME存储元件
item.appliedenergistics2.fluid_storage_cell_1k.name=1k-ME流体储存元件
item.appliedenergistics2.fluid_storage_cell_4k.name=4k-ME流体储存元件
item.appliedenergistics2.fluid_storage_cell_16k.name=16k-ME流体储存元件
item.appliedenergistics2.fluid_storage_cell_64k.name=64k-ME流体储存元件
item.appliedenergistics2.creative_storage_cell.name=创造型ME存储元件 item.appliedenergistics2.creative_storage_cell.name=创造型ME存储元件
item.appliedenergistics2.encoded_pattern.name=编码样板 item.appliedenergistics2.encoded_pattern.name=编码样板
item.appliedenergistics2.view_cell.name=显示元件 item.appliedenergistics2.view_cell.name=显示元件
@@ -415,6 +441,10 @@ item.appliedenergistics2.material.cell1k_part.name=1k-ME存储组件
item.appliedenergistics2.material.cell4k_part.name=4k-ME存储组件 item.appliedenergistics2.material.cell4k_part.name=4k-ME存储组件
item.appliedenergistics2.material.cell16k_part.name=16k-ME存储组件 item.appliedenergistics2.material.cell16k_part.name=16k-ME存储组件
item.appliedenergistics2.material.cell64k_part.name=64k-ME存储组件 item.appliedenergistics2.material.cell64k_part.name=64k-ME存储组件
item.appliedenergistics2.material.fluid_cell1k_part.name=1k-ME流体存储组件
item.appliedenergistics2.material.fluid_cell4k_part.name=4k-ME流体存储组件
item.appliedenergistics2.material.fluid_cell16k_part.name=16k-ME流体存储组件
item.appliedenergistics2.material.fluid_cell64k_part.name=64k-ME流体存储组件
item.appliedenergistics2.material.certus_quartz_crystal.name=赛特斯石英水晶 item.appliedenergistics2.material.certus_quartz_crystal.name=赛特斯石英水晶
item.appliedenergistics2.material.certus_quartz_crystal_charged.name=充能赛特斯石英水晶 item.appliedenergistics2.material.certus_quartz_crystal_charged.name=充能赛特斯石英水晶
item.appliedenergistics2.material.certus_quartz_dust.name=赛特斯石英粉 item.appliedenergistics2.material.certus_quartz_dust.name=赛特斯石英粉
@@ -454,6 +484,7 @@ 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=ME破坏面板 item.appliedenergistics2.multi_part.annihilation_plane.name=ME破坏面板
item.appliedenergistics2.multi_part.fluid_annihilation_plane.name=ME流体破坏面板
item.appliedenergistics2.multi_part.identity_annihilation_plane.name=ME精准破坏面板 item.appliedenergistics2.multi_part.identity_annihilation_plane.name=ME精准破坏面板
item.appliedenergistics2.multi_part.cable_anchor.name=线缆锚 item.appliedenergistics2.multi_part.cable_anchor.name=线缆锚
item.appliedenergistics2.multi_part.cable_covered.name=ME包层线缆 item.appliedenergistics2.multi_part.cable_covered.name=ME包层线缆
@@ -468,19 +499,26 @@ item.appliedenergistics2.multi_part.semi_dark_monitor.name=照明面板
item.appliedenergistics2.multi_part.monitor.name=亮色照明面板 item.appliedenergistics2.multi_part.monitor.name=亮色照明面板
item.appliedenergistics2.multi_part.dark_monitor.name=暗色照明面板 item.appliedenergistics2.multi_part.dark_monitor.name=暗色照明面板
item.appliedenergistics2.multi_part.export_bus.name=ME输出总线 item.appliedenergistics2.multi_part.export_bus.name=ME输出总线
item.appliedenergistics2.multi_part.fluid_export_bus.name=ME流体输出总线
item.appliedenergistics2.multi_part.formation_plane.name=ME成型面板 item.appliedenergistics2.multi_part.formation_plane.name=ME成型面板
item.appliedenergistics2.multi_part.fluid_formation_plane.name=ME流体成型面板
item.appliedenergistics2.multi_part.import_bus.name=ME输入总线 item.appliedenergistics2.multi_part.import_bus.name=ME输入总线
item.appliedenergistics2.multi_part.fluid_import_bus.name=ME流体输入总线
item.appliedenergistics2.multi_part.interface.name=ME接口 item.appliedenergistics2.multi_part.interface.name=ME接口
item.appliedenergistics2.multi_part.fluid_interface.name=ME流体接口
item.appliedenergistics2.multi_part.level_emitter.name=ME标准发信器 item.appliedenergistics2.multi_part.level_emitter.name=ME标准发信器
item.appliedenergistics2.multi_part.fluid_level_emitter.name=ME流体标准发信器
item.appliedenergistics2.multi_part.p2p_tunnel.name=P2P通道 item.appliedenergistics2.multi_part.p2p_tunnel.name=P2P通道
item.appliedenergistics2.multi_part.pattern_terminal.name=ME样板终端 item.appliedenergistics2.multi_part.pattern_terminal.name=ME样板终端
item.appliedenergistics2.multi_part.quartz_fiber.name=石英纤维 item.appliedenergistics2.multi_part.quartz_fiber.name=石英纤维
item.appliedenergistics2.multi_part.storage_bus.name=ME存储总线 item.appliedenergistics2.multi_part.storage_bus.name=ME存储总线
item.appliedenergistics2.multi_part.fluid_storage_bus.name=ME流体储存总线
item.appliedenergistics2.multi_part.terminal.name=ME终端 item.appliedenergistics2.multi_part.terminal.name=ME终端
item.appliedenergistics2.multi_part.inverted_toggle_bus.name=ME反相触发总线 item.appliedenergistics2.multi_part.inverted_toggle_bus.name=ME反相触发总线
item.appliedenergistics2.multi_part.toggle_bus.name=ME触发总线 item.appliedenergistics2.multi_part.toggle_bus.name=ME触发总线
item.appliedenergistics2.multi_part.crafting_monitor.name=ME合成监控器 item.appliedenergistics2.multi_part.crafting_monitor.name=ME合成监控器
item.appliedenergistics2.multi_part.interface_terminal.name=ME接口终端 item.appliedenergistics2.multi_part.interface_terminal.name=ME接口终端
item.appliedenergistics2.multi_part.fluid_terminal.name=ME流体终端
item.appliedenergistics2.multi_part.invalid_type.name=已禁用 item.appliedenergistics2.multi_part.invalid_type.name=已禁用
item.appliedenergistics2.spatial_storage_cell_128_cubed.name=128³-空间存储元件 item.appliedenergistics2.spatial_storage_cell_128_cubed.name=128³-空间存储元件
@@ -517,7 +555,7 @@ item.appliedenergistics2.biometric_card.name=身份卡
item.appliedenergistics2.debug_card.name=Dev.调试卡 item.appliedenergistics2.debug_card.name=Dev.调试卡
item.appliedenergistics2.debug_replicator_card.name=Dev.复制卡 item.appliedenergistics2.debug_replicator_card.name=Dev.复制卡
// 命令 // Commands (指令)
commands.ae2.usage=ae2提供的指令 - 输入/ae2 list查看指令列表,/ae2 help _____查看指令帮助. commands.ae2.usage=ae2提供的指令 - 输入/ae2 list查看指令列表,/ae2 help _____查看指令帮助.
commands.ae2.permissions=你没有足够的权限来执行该指令. commands.ae2.permissions=你没有足够的权限来执行该指令.
commands.ae2.ChunkLogger=是否向服务器日志打开区块载入与载出信息.(OP) commands.ae2.ChunkLogger=是否向服务器日志打开区块载入与载出信息.(OP)
@@ -525,15 +563,17 @@ commands.ae2.ChunkLoggerOn=区块日志已打开
commands.ae2.ChunkLoggerOff=区块日志已关闭 commands.ae2.ChunkLoggerOff=区块日志已关闭
commands.ae2.Supporters=显示ae2支持者列表 commands.ae2.Supporters=显示ae2支持者列表
// 成就 // Achievements (进度)
achievement.ae2.Root=Applied Energistics
achievement.ae2.Root.desc=当箱子只是不够用的时候.
achievement.ae2.Compass=陨石猎手 achievement.ae2.Compass=陨石猎手
achievement.ae2.Compass.desc=制作一个陨石罗盘 achievement.ae2.Compass.desc=制作一个陨石罗盘
achievement.ae2.Presses=未知科技 achievement.ae2.Presses=未知科技
achievement.ae2.Presses.desc=发现一个处理器模板 achievement.ae2.Presses.desc=发现一个处理器模板
achievement.ae2.SpatialIO=空间协调 achievement.ae2.SpatialIO=空间协调
achievement.ae2.SpatialIO.desc=制作一个空间IO端口 achievement.ae2.SpatialIO.desc=制作一个空间IO端口
achievement.ae2.SpatialIOExplorerer=大胆去 achievement.ae2.SpatialIOExplorer=大胆去
achievement.ae2.SpatialIOExplorerer.desc=被存入空间存储元件 achievement.ae2.SpatialIOExplorer.desc=被存储在一个空间储存元件
achievement.ae2.StorageCell=比箱子更好 achievement.ae2.StorageCell=比箱子更好
achievement.ae2.StorageCell.desc=制作一个存储元件 achievement.ae2.StorageCell.desc=制作一个存储元件
achievement.ae2.IOPort=元件互通 achievement.ae2.IOPort=元件互通
@@ -577,7 +617,11 @@ achievement.ae2.StorageBus.desc=制作一个存储总线
achievement.ae2.QNB=量子隧道 achievement.ae2.QNB=量子隧道
achievement.ae2.QNB.desc=制作一个链接室 achievement.ae2.QNB.desc=制作一个链接室
// 统计 // Stats (统计)
stat.ae2.ItemsInserted=物品已加入ME存储 stat.ae2.ItemsInserted=物品已加入ME存储
stat.ae2.ItemsExtracted=物品已取出ME存储 stat.ae2.ItemsExtracted=物品已取出ME存储
stat.ae2.TurnedCranks=转动曲柄 stat.ae2.TurnedCranks=转动曲柄
// Keys (键盘)
key.appliedenergistics2.category=Applied Energistics 2
key.toggle_focus.desc=打开/关闭搜索框聚焦