Compare commits
31 Commits
rv6.stable.6
...
rv6-1.12
| Author | SHA1 | Date | |
|---|---|---|---|
| 2e0250de37 | |||
| d730503378 | |||
| f3349b0a2d | |||
| f667e9a5f0 | |||
| 2c0a2975de | |||
| 2e3d6b721a | |||
| 94e294f4e9 | |||
| 91620a0042 | |||
| ffc79b5494 | |||
| ce7c29d0ac | |||
| 6ece190ac4 | |||
| 00a596ea8f | |||
| 1fc1d5517d | |||
| d5fc7a5b21 | |||
| 1f85d0f607 | |||
| 34c490f92b | |||
| 5efa6d6251 | |||
| 4269a66a4b | |||
| 401f1ebb3e | |||
| df2a7c1858 | |||
| c483bd17f5 | |||
| 92536fceb4 | |||
| ded71cb2bd | |||
| 41a4518c5b | |||
| 87643094c3 | |||
| 8a4c9b58e6 | |||
| 5436e6bf08 | |||
| 078112d97b | |||
| 46355a4e9b | |||
| eb389971a3 | |||
| a38ebf7c4d |
@@ -0,0 +1,15 @@
|
||||
name: 'Lock threads'
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '0 0 * * *'
|
||||
|
||||
jobs:
|
||||
lock:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: dessant/lock-threads@v2
|
||||
with:
|
||||
github-token: ${{ github.token }}
|
||||
issue-lock-inactive-days: '180'
|
||||
pr-lock-inactive-days: '180'
|
||||
@@ -128,7 +128,7 @@ Here are a few things to keep in mind that will help get your PR approved.
|
||||
* HTTPS `git clone https://github.com/<your username>/Applied-Energistics-2.git`
|
||||
3. Change code base
|
||||
4. Add changes to git `git add -A`
|
||||
5. Commit changes to your clone `git commit -m "<summery of made changes>"`
|
||||
5. Commit changes to your clone `git commit -m "<summary of made changes>"`
|
||||
6. Push to your fork `git push`
|
||||
7. Create a Pull-Request on GitHub
|
||||
8. Wait for review
|
||||
|
||||
@@ -64,10 +64,10 @@ repositories {
|
||||
url "http://maven.blamejared.com/"
|
||||
}
|
||||
|
||||
maven { // modmaven, maven proxy
|
||||
name 'modmaven'
|
||||
url "https://modmaven.k-4u.nl/"
|
||||
}
|
||||
//maven { // modmaven, maven proxy
|
||||
// name 'modmaven'
|
||||
// url "https://modmaven.k-4u.nl/"
|
||||
//}
|
||||
|
||||
maven {
|
||||
name = "CurseForge"
|
||||
|
||||
@@ -28,7 +28,6 @@ import java.util.EnumSet;
|
||||
|
||||
import javax.annotation.Nonnegative;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
@@ -124,8 +123,8 @@ public interface IGridBlock
|
||||
/**
|
||||
* Determines what item stack is used to render this node in the GUI.
|
||||
*
|
||||
* @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. Returning an empty ItemStack will not show this node.
|
||||
*/
|
||||
@Nullable
|
||||
@Nonnull
|
||||
ItemStack getMachineRepresentation();
|
||||
}
|
||||
|
||||
@@ -291,6 +291,9 @@ public interface IPart extends IBoxProvider, ICustomCableConnection
|
||||
|
||||
/**
|
||||
* Used to determine which parts can be placed on what cables.
|
||||
*
|
||||
* Dense cables are not allowed for functional (getGridNode returns a node) parts.
|
||||
* Doing so will result in crashes.
|
||||
*
|
||||
* @param what placed part
|
||||
*
|
||||
@@ -365,4 +368,4 @@ public interface IPart extends IBoxProvider, ICustomCableConnection
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -493,6 +493,11 @@ class CableBuilder
|
||||
this.addCoveredConnection( facing, cableColor, connectionType, cableBusAdjacent, quadsOut );
|
||||
return;
|
||||
}
|
||||
else if( connectionType == AECableType.DENSE_COVERED )
|
||||
{
|
||||
this.addDenseCoveredConnection( facing, cableColor, connectionType, cableBusAdjacent, quadsOut );
|
||||
return;
|
||||
}
|
||||
|
||||
CubeBuilder cubeBuilder = new CubeBuilder( this.format, quadsOut );
|
||||
|
||||
|
||||
@@ -172,7 +172,7 @@ public class CableBusBakedModel implements IBakedModel
|
||||
|
||||
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 )
|
||||
|
||||
@@ -60,31 +60,21 @@ public class ContainerMEPortableCell extends ContainerMEMonitorable
|
||||
{
|
||||
final ItemStack currentItem = this.slot < 0 ? this.getPlayerInv().getCurrentItem() : this.getPlayerInv().getStackInSlot( this.slot );
|
||||
|
||||
if( this.civ != null )
|
||||
{
|
||||
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
|
||||
if( this.civ == null || currentItem.isEmpty() )
|
||||
{
|
||||
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
|
||||
this.ticks++;
|
||||
|
||||
@@ -147,7 +147,7 @@ public class CraftingTreeNode
|
||||
|
||||
for( IAEItemStack fuzz : itemList )
|
||||
{
|
||||
if( this.parent.details.isValidItemForSlot( this.getSlot(), fuzz.createItemStack(), this.world ) )
|
||||
if( this.parent.details.isValidItemForSlot( this.getSlot(), fuzz.copy().setStackSize( 1 ).createItemStack(), this.world ) )
|
||||
{
|
||||
fuzz = fuzz.copy();
|
||||
fuzz.setStackSize( l );
|
||||
|
||||
@@ -105,7 +105,7 @@ public class BlockQuartzGlass extends AEBaseBlock
|
||||
}
|
||||
}
|
||||
|
||||
return w.getBlockState( pos ).shouldSideBeRendered( w, adjacentPos, side );
|
||||
return super.shouldSideBeRendered( state, w, pos, side );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -128,7 +128,7 @@ public class FluidStackSizeRenderer
|
||||
format.setDecimalFormatSymbols( symbols );
|
||||
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.EntityPlayerMP;
|
||||
import net.minecraft.entity.player.InventoryPlayer;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.inventory.IContainerListener;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.common.ForgeModContainer;
|
||||
import net.minecraftforge.fluids.Fluid;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
import net.minecraftforge.fluids.FluidUtil;
|
||||
import net.minecraftforge.fluids.capability.IFluidHandlerItem;
|
||||
@@ -353,32 +350,24 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa
|
||||
super.doAction( player, action, slot, id );
|
||||
return;
|
||||
}
|
||||
ItemStack held = player.inventory.getItemStack();
|
||||
|
||||
final ItemStack held = player.inventory.getItemStack();
|
||||
if( held.getCount() != 1 )
|
||||
{
|
||||
// only support stacksize 1 for now
|
||||
return;
|
||||
}
|
||||
IFluidHandlerItem fh = FluidUtil.getFluidHandler( held );
|
||||
|
||||
final IFluidHandlerItem fh = FluidUtil.getFluidHandler( held );
|
||||
if( fh == null )
|
||||
{
|
||||
// only fluid handlers items
|
||||
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 )
|
||||
{
|
||||
AEFluidStack stack = (AEFluidStack) 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;
|
||||
}
|
||||
final IAEFluidStack stack = this.clientRequestedTargetFluid.copy();
|
||||
|
||||
// Check how much we can store in the item
|
||||
stack.setStackSize( Integer.MAX_VALUE );
|
||||
@@ -386,16 +375,22 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa
|
||||
stack.setStackSize( amountAllowed );
|
||||
|
||||
// Check if we can pull out of the system
|
||||
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 ) )
|
||||
final IAEFluidStack canPull = Platform.poweredExtraction( this.getPowerSource(), this.monitor, stack, this.getActionSource(), Actionable.SIMULATE );
|
||||
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;
|
||||
}
|
||||
|
||||
// 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 )
|
||||
{
|
||||
// Something went wrong
|
||||
@@ -404,42 +399,55 @@ public class ContainerFluidTerminal extends AEBaseContainer implements IConfigMa
|
||||
}
|
||||
|
||||
// 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() );
|
||||
this.updateHeld( player );
|
||||
}
|
||||
else if( action == InventoryAction.EMPTY_ITEM )
|
||||
{
|
||||
// Empty held item
|
||||
AELog.debug( "Emptying %s", held.getDisplayName() );
|
||||
|
||||
// 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 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// 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 );
|
||||
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 ),
|
||||
this.getActionSource() );
|
||||
if( notInserted != null && notInserted.getStackSize() > 0 )
|
||||
if( notStorable != null && notStorable.getStackSize() > 0 )
|
||||
{
|
||||
// Only try to extract the amount we DID insert
|
||||
extract.amount -= Math.toIntExact( notInserted.getStackSize() );
|
||||
final int toStore = (int) ( extract.amount - notStorable.getStackSize() );
|
||||
final FluidStack storable = fh.drain( toStore, false );
|
||||
|
||||
if( storable == null || storable.amount == 0 )
|
||||
{
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
extract.amount = storable.amount;
|
||||
}
|
||||
}
|
||||
|
||||
// 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() );
|
||||
this.updateHeld( player );
|
||||
|
||||
@@ -255,6 +255,17 @@ public class DualityFluidInterface implements IGridTickable, IStorageMonitorable
|
||||
|
||||
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();
|
||||
|
||||
for( int x = 0; x < NUMBER_OF_TANKS; x++ )
|
||||
|
||||
@@ -62,7 +62,7 @@ public class GrinderRecipes
|
||||
final ItemStack s2 = CTModule.toStack( secondary2Output );
|
||||
if( !s2.isEmpty() )
|
||||
{
|
||||
builder.withFirstOptional( s2, secondary2Chance == null ? 1.0f : secondary2Chance );
|
||||
builder.withSecondOptional( s2, secondary2Chance == null ? 1.0f : secondary2Chance );
|
||||
}
|
||||
CTModule.MODIFICATIONS.add( new Add( builder.build() ) );
|
||||
}
|
||||
|
||||
@@ -48,7 +48,7 @@ class GrinderRecipeCategory implements IRecipeCategory<GrinderRecipeWrapper>, IR
|
||||
this.localizedName = I18n.format( "tile.appliedenergistics2.grindstone.name" );
|
||||
|
||||
ResourceLocation location = new ResourceLocation( AppEng.MOD_ID, "textures/guis/grinder.png" );
|
||||
this.background = guiHelper.createDrawable( location, 11, 16, 154, 64 );
|
||||
this.background = guiHelper.createDrawable( location, 11, 16, 154, 70 );
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -203,7 +203,7 @@ public class JEIPlugin implements IModPlugin
|
||||
{
|
||||
Optional<Item> itemFacade = definitions.items().facade().maybeItem();
|
||||
Optional<ItemStack> cableAnchor = definitions.parts().cableAnchor().maybeStack( 1 );
|
||||
if( itemFacade.isPresent() && cableAnchor.isPresent() )
|
||||
if( itemFacade.isPresent() && cableAnchor.isPresent() && AEConfig.instance().isFeatureEnabled( AEFeature.ENABLE_FACADE_CRAFTING ) )
|
||||
{
|
||||
registry.addRecipeRegistryPlugin( new FacadeRegistryPlugin( (ItemFacade) itemFacade.get(), cableAnchor.get() ) );
|
||||
}
|
||||
|
||||
@@ -39,6 +39,7 @@ import appeng.api.util.IReadOnlyCollection;
|
||||
import appeng.core.worlddata.WorldData;
|
||||
import appeng.hooks.TickHandler;
|
||||
import appeng.util.ReadOnlyCollection;
|
||||
import appeng.me.cache.CraftingGridCache;
|
||||
|
||||
|
||||
public class Grid implements IGrid
|
||||
@@ -219,7 +220,10 @@ public class Grid implements IGrid
|
||||
@Override
|
||||
public MENetworkEvent postEvent( final MENetworkEvent ev )
|
||||
{
|
||||
return this.eventBus.postEvent( this, ev );
|
||||
CraftingGridCache.pauseRebuilds();
|
||||
final MENetworkEvent ret = this.eventBus.postEvent( this, ev );
|
||||
CraftingGridCache.unpauseRebuilds();
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -55,6 +55,7 @@ import appeng.api.util.IReadOnlyCollection;
|
||||
import appeng.core.AELog;
|
||||
import appeng.core.worlddata.WorldData;
|
||||
import appeng.hooks.TickHandler;
|
||||
import appeng.me.cache.CraftingGridCache;
|
||||
import appeng.me.pathfinding.IPathItem;
|
||||
import appeng.util.IWorldCallable;
|
||||
import appeng.util.ReadOnlyCollection;
|
||||
@@ -164,6 +165,8 @@ public class GridNode implements IGridNode, IPathItem
|
||||
{
|
||||
final Object tracker = new Object();
|
||||
|
||||
CraftingGridCache.pauseRebuilds();
|
||||
|
||||
Deque<GridNode> nextRun = new ArrayDeque<>();
|
||||
nextRun.add( this );
|
||||
|
||||
@@ -203,6 +206,7 @@ public class GridNode implements IGridNode, IPathItem
|
||||
}
|
||||
}
|
||||
}
|
||||
CraftingGridCache.unpauseRebuilds();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -114,6 +114,8 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper
|
||||
private IStorageGrid storageGrid;
|
||||
private IEnergyGrid energyGrid;
|
||||
private boolean updateList = false;
|
||||
private static int pauseRebuilds = 0;
|
||||
private static Set<CraftingGridCache> rebuildNeeded = new HashSet<>();
|
||||
|
||||
public CraftingGridCache( final IGrid grid )
|
||||
{
|
||||
@@ -240,8 +242,34 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper
|
||||
// nothing!
|
||||
}
|
||||
|
||||
public static void pauseRebuilds()
|
||||
{
|
||||
pauseRebuilds++;
|
||||
}
|
||||
|
||||
public static void unpauseRebuilds()
|
||||
{
|
||||
pauseRebuilds--;
|
||||
if (pauseRebuilds == 0 && rebuildNeeded.size() > 0)
|
||||
{
|
||||
ImmutableSet<CraftingGridCache> needed = ImmutableSet.copyOf(rebuildNeeded);
|
||||
rebuildNeeded.clear();
|
||||
for ( CraftingGridCache cache: needed )
|
||||
{
|
||||
cache.updatePatterns();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void updatePatterns()
|
||||
{
|
||||
// coalesce change events during a grid traversal to a single rebuild
|
||||
if (pauseRebuilds != 0)
|
||||
{
|
||||
rebuildNeeded.add(this);
|
||||
return;
|
||||
}
|
||||
|
||||
final Map<IAEItemStack, ImmutableList<ICraftingPatternDetails>> oldItems = this.craftableItems;
|
||||
|
||||
// erase list.
|
||||
|
||||
+39
-35
@@ -47,6 +47,7 @@ public class TickManagerCache implements ITickManager
|
||||
private final HashMap<IGridNode, TickTracker> sleeping = new HashMap<>();
|
||||
private final HashMap<IGridNode, TickTracker> awake = new HashMap<>();
|
||||
private final PriorityQueue<TickTracker> upcomingTicks = new PriorityQueue<>();
|
||||
|
||||
private long currentTick = 0;
|
||||
|
||||
public TickManagerCache( final IGrid g )
|
||||
@@ -80,50 +81,52 @@ public class TickManagerCache implements ITickManager
|
||||
public void onUpdateTick()
|
||||
{
|
||||
TickTracker tt = null;
|
||||
|
||||
try
|
||||
{
|
||||
this.currentTick++;
|
||||
|
||||
while( !this.upcomingTicks.isEmpty() )
|
||||
{
|
||||
tt = this.upcomingTicks.peek();
|
||||
final int diff = (int) ( this.currentTick - tt.getLastTick() );
|
||||
if( diff >= tt.getCurrentRate() )
|
||||
|
||||
// Stop once it reaches a TickTracker running at a later tick
|
||||
if( tt.getNextTick() > this.currentTick )
|
||||
{
|
||||
// remove tt..
|
||||
this.upcomingTicks.poll();
|
||||
final TickRateModulation mod = tt.getGridTickable().tickingRequest( tt.getNode(), diff );
|
||||
|
||||
switch( mod )
|
||||
{
|
||||
case FASTER:
|
||||
tt.setRate( tt.getCurrentRate() - 2 );
|
||||
break;
|
||||
case IDLE:
|
||||
tt.setRate( tt.getRequest().maxTickRate );
|
||||
break;
|
||||
case SAME:
|
||||
break;
|
||||
case SLEEP:
|
||||
this.sleepDevice( tt.getNode() );
|
||||
break;
|
||||
case SLOWER:
|
||||
tt.setRate( tt.getCurrentRate() + 1 );
|
||||
break;
|
||||
case URGENT:
|
||||
tt.setRate( 0 );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if( this.awake.containsKey( tt.getNode() ) )
|
||||
{
|
||||
this.addToQueue( tt );
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
|
||||
this.upcomingTicks.poll();
|
||||
|
||||
final int diff = (int) ( this.currentTick - tt.getLastTick() );
|
||||
final TickRateModulation mod = tt.getGridTickable().tickingRequest( tt.getNode(), diff );
|
||||
|
||||
switch( mod )
|
||||
{
|
||||
return; // done!
|
||||
case FASTER:
|
||||
tt.setCurrentRate( tt.getCurrentRate() - 2 );
|
||||
break;
|
||||
case IDLE:
|
||||
tt.setCurrentRate( tt.getRequest().maxTickRate );
|
||||
break;
|
||||
case SAME:
|
||||
break;
|
||||
case SLEEP:
|
||||
this.sleepDevice( tt.getNode() );
|
||||
break;
|
||||
case SLOWER:
|
||||
tt.setCurrentRate( tt.getCurrentRate() + 1 );
|
||||
break;
|
||||
case URGENT:
|
||||
tt.setCurrentRate( 0 );
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if( this.awake.containsKey( tt.getNode() ) )
|
||||
{
|
||||
this.addToQueue( tt );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -255,6 +258,7 @@ public class TickManagerCache implements ITickManager
|
||||
final TickTracker gt = this.sleeping.get( node );
|
||||
this.sleeping.remove( node );
|
||||
this.awake.put( node, gt );
|
||||
this.upcomingTicks.remove( gt );
|
||||
this.addToQueue( gt );
|
||||
|
||||
return true;
|
||||
|
||||
+22
-21
@@ -37,7 +37,6 @@ public class TickTracker implements Comparable<TickTracker>
|
||||
private final TickingRequest request;
|
||||
private final IGridTickable gt;
|
||||
private final IGridNode node;
|
||||
private final TickManagerCache host;
|
||||
|
||||
private final long LastFiveTicksTime = 0;
|
||||
|
||||
@@ -51,7 +50,6 @@ public class TickTracker implements Comparable<TickTracker>
|
||||
this.node = node;
|
||||
this.setCurrentRate( ( req.minTickRate + req.maxTickRate ) / 2 );
|
||||
this.setLastTick( currentTick );
|
||||
this.host = tickManagerCache;
|
||||
}
|
||||
|
||||
public long getAvgNanos()
|
||||
@@ -59,27 +57,25 @@ public class TickTracker implements Comparable<TickTracker>
|
||||
return( this.LastFiveTicksTime / 5 );
|
||||
}
|
||||
|
||||
public void setRate( final int rate )
|
||||
{
|
||||
this.setCurrentRate( rate );
|
||||
|
||||
if( this.getCurrentRate() < this.getRequest().minTickRate )
|
||||
{
|
||||
this.setCurrentRate( this.getRequest().minTickRate );
|
||||
}
|
||||
|
||||
if( this.getCurrentRate() > this.getRequest().maxTickRate )
|
||||
{
|
||||
this.setCurrentRate( this.getRequest().maxTickRate );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo( @Nonnull final TickTracker t )
|
||||
{
|
||||
final int nextTick = (int) ( ( this.getLastTick() - this.host.getCurrentTick() ) + this.getCurrentRate() );
|
||||
final int ts_nextTick = (int) ( ( t.getLastTick() - this.host.getCurrentTick() ) + t.getCurrentRate() );
|
||||
return nextTick - ts_nextTick;
|
||||
int next = Long.compare( this.getNextTick(), t.getNextTick() );
|
||||
|
||||
if( next != 0 )
|
||||
{
|
||||
return next;
|
||||
}
|
||||
|
||||
int last = Long.compare( this.getLastTick(), t.getLastTick() );
|
||||
|
||||
if( last != 0 )
|
||||
{
|
||||
return last;
|
||||
}
|
||||
|
||||
return Integer.compare( this.getCurrentRate(), t.getCurrentRate() );
|
||||
|
||||
}
|
||||
|
||||
public void addEntityCrashInfo( final CrashReportCategory crashreportcategory )
|
||||
@@ -111,7 +107,12 @@ public class TickTracker implements Comparable<TickTracker>
|
||||
|
||||
public void setCurrentRate( final int currentRate )
|
||||
{
|
||||
this.currentRate = currentRate;
|
||||
this.currentRate = Math.min( this.getRequest().maxTickRate, Math.max( this.getRequest().minTickRate, currentRate ) );
|
||||
}
|
||||
|
||||
public long getNextTick()
|
||||
{
|
||||
return this.lastTick + this.currentRate;
|
||||
}
|
||||
|
||||
public long getLastTick()
|
||||
|
||||
@@ -192,16 +192,29 @@ public abstract class AbstractCellInventory<T extends IAEStack<T>> implements IC
|
||||
this.cellItems.resetStatus(); // clears totals and stuff.
|
||||
|
||||
final int types = (int) this.getStoredItemTypes();
|
||||
boolean needsUpdate = false;
|
||||
|
||||
for( int slot = 0; slot < types; slot++ )
|
||||
{
|
||||
NBTTagCompound compoundTag = this.tagCompound.getCompoundTag( ITEM_SLOT_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
|
||||
public IItemList<T> getAvailableItems( final IItemList<T> out )
|
||||
|
||||
@@ -253,7 +253,7 @@ public class BasicCellInventory<T extends IAEStack<T>> extends AbstractCellInven
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadCellItem( NBTTagCompound compoundTag, int stackSize )
|
||||
protected boolean loadCellItem( NBTTagCompound compoundTag, int stackSize )
|
||||
{
|
||||
// Now load the item stack
|
||||
final T t;
|
||||
@@ -263,7 +263,7 @@ public class BasicCellInventory<T extends IAEStack<T>> extends AbstractCellInven
|
||||
if( t == null )
|
||||
{
|
||||
AELog.warn( "Removing item " + compoundTag + " from storage cell because the associated item type couldn't be found." );
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
}
|
||||
catch( Throwable ex )
|
||||
@@ -271,7 +271,7 @@ public class BasicCellInventory<T extends IAEStack<T>> extends AbstractCellInven
|
||||
if( AEConfig.instance().isRemoveCrashingItemsOnLoad() )
|
||||
{
|
||||
AELog.warn( ex, "Removing item " + compoundTag + " from storage cell because loading the ItemStack crashed." );
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
throw ex;
|
||||
}
|
||||
@@ -282,5 +282,7 @@ public class BasicCellInventory<T extends IAEStack<T>> extends AbstractCellInven
|
||||
{
|
||||
this.cellItems.add( t );
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -140,7 +140,7 @@ public class PartImportBus extends PartSharedItemBus implements IInventoryDestin
|
||||
@Override
|
||||
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
|
||||
|
||||
@@ -138,8 +138,8 @@ class ItemHandlerAdapter implements IMEInventory<IAEItemStack>, IBaseMonitor<IAE
|
||||
{
|
||||
// Something broke. It should never return more than we requested...
|
||||
// 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.",
|
||||
this.itemHandler.getClass().getSimpleName(), extracted.getCount(), remainingCurrentSlot );
|
||||
AELog.warn( "Mod that provided item handler %s is broken. Returned %s items while only requesting %d.",
|
||||
this.itemHandler.getClass().getName(), extracted.toString(), remainingCurrentSlot );
|
||||
extracted.setCount( remainingCurrentSlot );
|
||||
}
|
||||
|
||||
|
||||
@@ -179,25 +179,29 @@ public class PartConversionMonitor extends AbstractPartMonitor
|
||||
final IEnergySource energy = this.getProxy().getEnergy();
|
||||
final IMEMonitor<IAEItemStack> cell = this.getProxy()
|
||||
.getStorage()
|
||||
.getInventory(
|
||||
AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) );
|
||||
.getInventory( AEApi.instance().storage().getStorageChannel( IItemStorageChannel.class ) );
|
||||
|
||||
if( allItems )
|
||||
{
|
||||
final IAEItemStack input = this.getDisplayed().copy();
|
||||
IItemHandler inv = new PlayerMainInvWrapper( player.inventory );
|
||||
|
||||
for( int x = 0; x < inv.getSlots(); x++ )
|
||||
if( this.getDisplayed() != null )
|
||||
{
|
||||
final ItemStack targetStack = inv.getStackInSlot( x );
|
||||
if( input.equals( targetStack ) )
|
||||
final IAEItemStack input = this.getDisplayed().copy();
|
||||
IItemHandler inv = new PlayerMainInvWrapper( player.inventory );
|
||||
|
||||
for( int x = 0; x < inv.getSlots(); x++ )
|
||||
{
|
||||
final ItemStack canExtract = inv.extractItem( x, targetStack.getCount(), true );
|
||||
if( !canExtract.isEmpty() )
|
||||
final ItemStack targetStack = inv.getStackInSlot( x );
|
||||
if( input.equals( targetStack ) )
|
||||
{
|
||||
input.setStackSize( canExtract.getCount() );
|
||||
final IAEItemStack failedToInsert = Platform.poweredInsert( energy, cell, input, new PlayerSource( player, this ) );
|
||||
inv.extractItem( x, failedToInsert == null ? canExtract.getCount() : canExtract.getCount() - (int) failedToInsert.getStackSize(),
|
||||
false );
|
||||
final ItemStack canExtract = inv.extractItem( x, targetStack.getCount(), true );
|
||||
if( !canExtract.isEmpty() )
|
||||
{
|
||||
input.setStackSize( canExtract.getCount() );
|
||||
final IAEItemStack failedToInsert = Platform.poweredInsert( energy, cell, input, new PlayerSource( player, this ) );
|
||||
inv.extractItem( x,
|
||||
failedToInsert == null ? canExtract.getCount() : canExtract.getCount() - (int) failedToInsert.getStackSize(),
|
||||
false );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,12 +38,14 @@ final class AESharedItemStack implements Comparable<AESharedItemStack>
|
||||
private final ItemStack itemStack;
|
||||
private final int itemId;
|
||||
private final int itemDamage;
|
||||
private final int hashCode;
|
||||
|
||||
public AESharedItemStack( final ItemStack itemStack )
|
||||
{
|
||||
this.itemStack = itemStack;
|
||||
this.itemId = Item.getIdFromItem( itemStack.getItem() );
|
||||
this.itemDamage = itemStack.getItemDamage();
|
||||
this.hashCode = this.makeHashCode();
|
||||
}
|
||||
|
||||
Bounds getBounds( final FuzzyMode fuzzy, final boolean ignoreMeta )
|
||||
@@ -69,7 +71,7 @@ final class AESharedItemStack implements Comparable<AESharedItemStack>
|
||||
@Override
|
||||
public int hashCode()
|
||||
{
|
||||
return Objects.hash( this.itemId, this.itemDamage, this.itemStack.hasTagCompound() ? this.itemStack.getTagCompound() : 0 );
|
||||
return this.hashCode;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -144,6 +146,11 @@ final class AESharedItemStack implements Comparable<AESharedItemStack>
|
||||
return System.identityHashCode( this.itemStack.getTagCompound() ) - System.identityHashCode( b.getTagCompound() );
|
||||
}
|
||||
|
||||
private int makeHashCode()
|
||||
{
|
||||
return Objects.hash( this.itemId, this.itemDamage, this.itemStack.hasTagCompound() ? this.itemStack.getTagCompound() : 0 );
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates the lower and upper bounds for a specific shared itemstack.
|
||||
*/
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
//versão pt-BR atualizada por _InterPlay_ em 31/12/2018
|
||||
//Blocos
|
||||
tile.appliedenergistics2.cable_bus.name=Cabos e/ou Barramentos do AE2
|
||||
tile.appliedenergistics2.cell_workbench.name=Bancada de Células
|
||||
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.controller.name=Controlador ME
|
||||
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.grindstone.name=Rebolo de Quartzo
|
||||
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.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_ring.name=Anel Quântico ME
|
||||
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.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.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.DeviceNotWirelessTerminal=Dispositivo não é um terminal sem fios.
|
||||
chat.appliedenergistics2.DeviceNotLinked=Dispositivo não conectado
|
||||
chat.appliedenergistics2.StationCanNotBeLocated=Estação não pode ser encontrada.
|
||||
chat.appliedenergistics2.MachineNotPowered=Máquina não está sendo alimentada.
|
||||
chat.appliedenergistics2.CommunicationError=Erro comunicando com a rede.
|
||||
chat.appliedenergistics2.SavedSettings=Configurações salvas com sucesso.
|
||||
chat.appliedenergistics2.AmmoDepleted=Munição depletada.
|
||||
chat.appliedenergistics2.CommunicationError=Erro ao comunicar com a rede.
|
||||
chat.appliedenergistics2.SavedSettings=Configurações atuais do dispositivo copiadas ao cartão de memória.
|
||||
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.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.Efficiency=Eficiência
|
||||
gui.appliedenergistics2.RequiredPower=Poder Requerido
|
||||
gui.appliedenergistics2.StoredPower=Poder Armazenado
|
||||
gui.appliedenergistics2.MaxPower=Poder Máximo
|
||||
gui.appliedenergistics2.SCSSize=Tamanho SCS
|
||||
gui.appliedenergistics2.SCSInvalid=Inválido
|
||||
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.Inscriber=Inscritor
|
||||
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.Priority=Prioridade
|
||||
gui.appliedenergistics2.StorageBus=Barramento de Armazenamento
|
||||
gui.appliedenergistics2.StorageBusFluids=Barramento de Armazenamento de Fluido
|
||||
gui.appliedenergistics2.EnergyDrain=Drenagem Passiva
|
||||
gui.appliedenergistics2.Installed=Instalado
|
||||
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.CellWorkbench=Bancada de Células
|
||||
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.Condenser=Condensador de Matéria
|
||||
gui.appliedenergistics2.Config=Config.
|
||||
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.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.LevelEmitter=Emissor de Nível ME
|
||||
gui.appliedenergistics2.Of=De
|
||||
gui.appliedenergistics2.FluidInterface=Interface ME de Fluido
|
||||
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.SpatialIOPort=Porta de ES Espacial
|
||||
gui.appliedenergistics2.SpatialIOPort=Porta de E/S Espacial
|
||||
gui.appliedenergistics2.StoredEnergy=Energia Armazenada
|
||||
gui.appliedenergistics2.StoredItems=Itens Armazenados
|
||||
gui.appliedenergistics2.StoredFluids=Fluidos Armazenados
|
||||
gui.appliedenergistics2.Terminal=Terminal
|
||||
gui.appliedenergistics2.InterfaceTerminal=Terminal de Interface
|
||||
gui.appliedenergistics2.InterfaceTerminalHint=Mostrar ou Esconder no Terminal de Interface
|
||||
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.NetworkDetails=Detalhes de Rede
|
||||
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.BytesUsed=Bytes Usados
|
||||
gui.appliedenergistics2.Types=Tipos
|
||||
gui.appliedenergistics2.Blank=Branco
|
||||
gui.appliedenergistics2.Unlinked=Não Conectado
|
||||
gui.appliedenergistics2.Blank=Em Branco
|
||||
gui.appliedenergistics2.Unlinked=Desconectado
|
||||
gui.appliedenergistics2.Linked=Conectado
|
||||
gui.appliedenergistics2.StoredSize=Tamanho Armazenado
|
||||
gui.appliedenergistics2.CellId=ID da Célula
|
||||
gui.appliedenergistics2.SkyChest=Baú de Pedra do Céu
|
||||
gui.appliedenergistics2.PatternTerminal=Terminal de Padrões
|
||||
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.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_Standard=Procura Normal
|
||||
gui.tooltips.appliedenergistics2.SearchMode_JEIAuto=Auto Sincronizado ao JEI
|
||||
gui.tooltips.appliedenergistics2.SearchMode_JEIStandard=Sincronizado ao JEI Normalmente
|
||||
gui.tooltips.appliedenergistics2.SearchMode_Standard=Procura Padrão
|
||||
gui.tooltips.appliedenergistics2.SearchMode_JEIAuto=Auto Procura, Sincronizado com o JEI
|
||||
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.PartitionStorageHint=Configura a Partição baseado em itens atualmente armazenados.
|
||||
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.EmitWhenCrafting=Emite sinal enquanto o item está sendo fabricado.
|
||||
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.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.BlockPlacementYes=Blocks serão colocados como blocos.
|
||||
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.SchedulingModeRoundRobin=Exportar usando mode modo de turnos.
|
||||
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.ItemsRequestable=Items Solicitáveis: %s
|
||||
gui.tooltips.appliedenergistics2.P2PFrequency=Frequência: %s
|
||||
|
||||
// Units
|
||||
gui.appliedenergistics2.units.appliedenergstics=AE
|
||||
gui.appliedenergistics2.units.ic2=Energy Units
|
||||
gui.appliedenergistics2.units.ic2=Unidades de Energia
|
||||
gui.appliedenergistics2.units.rf=Redstone Flux
|
||||
|
||||
// Cores
|
||||
@@ -360,15 +385,23 @@ waila.appliedenergistics2.Unlocked=Destrancado
|
||||
waila.appliedenergistics2.Showing=Mostrando
|
||||
waila.appliedenergistics2.Contains=Contém
|
||||
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
|
||||
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_16k.name=Célula de Armazenamento ME de 16k
|
||||
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.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.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.cell16k_part.name=Componente de Armazenamento ME de 16k
|
||||
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_charged.name=Cristal Carregado 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.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.flour.name=Farinha
|
||||
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.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.cable_anchor.name=Cabo Âncora
|
||||
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_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.conversion_monitor.name=Monitor de Conversã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.monitor.name=Painel Brilhante 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.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.fluid_interface.name=Interface ME de Fluidos
|
||||
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.pattern_terminal.name=Terminal de Padrões ME
|
||||
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.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.crafting_monitor.name=Monitor de Fabricação 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.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
|
||||
|
||||
// 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.desc=Faça uma Bússola de Meteoritos
|
||||
achievement.ae2.Presses=Tecnologia Desconhecida
|
||||
achievement.ae2.Presses.desc=Ache uma Prensa de Processador
|
||||
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.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.desc=Faça uma Célula de Armazenamento
|
||||
achievement.ae2.IOPort=Embaralhamento de Células de Armazenamentos
|
||||
achievement.ae2.IOPort.desc=Faça uma Porta de ES
|
||||
achievement.ae2.StorageCell.desc=Faça uma Célula de Armazenamento de Matéria para Energia
|
||||
achievement.ae2.IOPort=Embaralhamento de Células de Armazenamento
|
||||
achievement.ae2.IOPort.desc=Faça uma Porta de E/S
|
||||
achievement.ae2.CraftingTerminal=Uma Bancada (Muito) Maior
|
||||
achievement.ae2.CraftingTerminal.desc=Faça um Terminal de 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.ItemsExtracted=Itens extraídos do Armazenamento ME
|
||||
stat.ae2.TurnedCranks=Manivelas Giradas
|
||||
|
||||
//Keys
|
||||
key.appliedenergistics2.category=Applied Energistics 2
|
||||
key.toggle_focus.desc=Alterar foco da caixa de procura
|
||||
|
||||
@@ -10,22 +10,22 @@
|
||||
{
|
||||
"faces": {
|
||||
"down": {
|
||||
"texture": "#block"
|
||||
"texture": "#block", "cullface": "down"
|
||||
},
|
||||
"east": {
|
||||
"texture": "#block"
|
||||
"texture": "#block", "cullface": "east"
|
||||
},
|
||||
"north": {
|
||||
"texture": "#block"
|
||||
"texture": "#block", "cullface": "north"
|
||||
},
|
||||
"south": {
|
||||
"texture": "#block"
|
||||
"texture": "#block", "cullface": "south"
|
||||
},
|
||||
"up": {
|
||||
"texture": "#block"
|
||||
"texture": "#block", "cullface": "up"
|
||||
},
|
||||
"west": {
|
||||
"texture": "#block"
|
||||
"texture": "#block", "cullface": "west"
|
||||
}
|
||||
},
|
||||
"from": [
|
||||
@@ -43,6 +43,7 @@
|
||||
"faces": {
|
||||
"down": {
|
||||
"texture": "#quartz",
|
||||
"cullface": "down",
|
||||
"uvlightmap": {
|
||||
"block": 0.007,
|
||||
"sky": 0.007
|
||||
@@ -50,6 +51,7 @@
|
||||
},
|
||||
"east": {
|
||||
"texture": "#quartz",
|
||||
"cullface": "east",
|
||||
"uvlightmap": {
|
||||
"block": 0.007,
|
||||
"sky": 0.007
|
||||
@@ -57,6 +59,7 @@
|
||||
},
|
||||
"north": {
|
||||
"texture": "#quartz",
|
||||
"cullface": "north",
|
||||
"uvlightmap": {
|
||||
"block": 0.007,
|
||||
"sky": 0.007
|
||||
@@ -64,6 +67,7 @@
|
||||
},
|
||||
"south": {
|
||||
"texture": "#quartz",
|
||||
"cullface": "south",
|
||||
"uvlightmap": {
|
||||
"block": 0.007,
|
||||
"sky": 0.007
|
||||
@@ -71,6 +75,7 @@
|
||||
},
|
||||
"up": {
|
||||
"texture": "#quartz",
|
||||
"cullface": "up",
|
||||
"uvlightmap": {
|
||||
"block": 0.007,
|
||||
"sky": 0.007
|
||||
@@ -78,6 +83,7 @@
|
||||
},
|
||||
"west": {
|
||||
"texture": "#quartz",
|
||||
"cullface": "west",
|
||||
"uvlightmap": {
|
||||
"block": 0.007,
|
||||
"sky": 0.007
|
||||
|
||||
Reference in New Issue
Block a user