Compare commits
16 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 8c817b2f85 | |||
| 3ab6758e6c | |||
| 3dd948e4a4 | |||
| 3bb9e4df97 | |||
| d17f045339 | |||
| 5817cde56b | |||
| 45d94d4c2c | |||
| d893e52eb0 | |||
| 464a56ffc5 | |||
| 40dcf711f6 | |||
| 5dfca5eb93 | |||
| 26daaf2232 | |||
| c2022a7208 | |||
| 74c2e1fab9 | |||
| 0de7a2d83a | |||
| 517a832ac1 |
+1
-2
@@ -98,9 +98,8 @@ sourceSets {
|
||||
|
||||
resources {
|
||||
srcDir "src/main/resources/"
|
||||
include "assets/appliedenergistics2/recipes/*.recipe",
|
||||
include "assets/appliedenergistics2/recipes/**/*.recipe",
|
||||
"assets/appliedenergistics2/recipes/README.html",
|
||||
"assets/appliedenergistics2/oredict/*.oredict",
|
||||
"assets/appliedenergistics2/lang/*.lang",
|
||||
"assets/appliedenergistics2/textures/blocks/*",
|
||||
"assets/appliedenergistics2/textures/guis/*",
|
||||
|
||||
+2
-2
@@ -1,6 +1,6 @@
|
||||
#Sat May 16 13:19:14 CEST 2015
|
||||
#Mon Aug 31 16:41:19 CEST 2015
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.4-all.zip
|
||||
|
||||
@@ -22,6 +22,7 @@ package appeng.core;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import com.google.common.base.Preconditions;
|
||||
@@ -29,7 +30,6 @@ import com.google.common.base.Preconditions;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
|
||||
import appeng.api.recipes.IRecipeHandler;
|
||||
import appeng.api.recipes.IRecipeLoader;
|
||||
import appeng.recipes.loader.ConfigLoader;
|
||||
import appeng.recipes.loader.JarLoader;
|
||||
import appeng.recipes.loader.RecipeResourceCopier;
|
||||
@@ -69,11 +69,7 @@ public class RecipeLoader implements Runnable
|
||||
final File readmeGenDest = new File( generatedRecipesDir, "README.html" );
|
||||
final File readmeUserDest = new File( userRecipesDir, "README.html" );
|
||||
|
||||
final IRecipeLoader oreDictLoader = new JarLoader( "/assets/appliedenergistics2/oredict/" );
|
||||
this.handler.parseRecipes( oreDictLoader, "vanilla.oredict" );
|
||||
this.handler.parseRecipes( oreDictLoader, "ae2.oredict" );
|
||||
|
||||
// generates generated and user recipes dir
|
||||
// generates generated and user recipes dir
|
||||
// will clean the generated every time to keep it up to date
|
||||
// copies over the recipes in the jar over to the generated folder
|
||||
// copies over the readmes
|
||||
|
||||
@@ -118,7 +118,7 @@ public final class GrinderRecipeManager implements IGrinderRegistry, IOreListene
|
||||
}
|
||||
|
||||
this.log( "Allow Grinding of " + Platform.getItemDisplayName( in ) + " to " + Platform.getItemDisplayName( out ) + " with optional " + Platform.getItemDisplayName( optional ) + " for " + cost );
|
||||
this.injectRecipe( new AppEngGrinderRecipe( this.copy( in ), this.copy( out ), this.copy( optional ), chance, cost ) );
|
||||
this.injectRecipe( new AppEngGrinderRecipe( this.copy( in ), this.copy( out ), this.copy( optional ), this.copy( optional2 ), chance, chance2, cost ) );
|
||||
}
|
||||
|
||||
private void injectRecipe( AppEngGrinderRecipe appEngGrinderRecipe )
|
||||
|
||||
@@ -55,9 +55,13 @@ public enum GuiText
|
||||
|
||||
inWorldFluix, inWorldPurificationCertus, inWorldPurificationNether,
|
||||
|
||||
inWorldPurificationFluix, inWorldSingularity, ChargedQuartz, OfSecondOutput,
|
||||
inWorldPurificationFluix, inWorldSingularity, ChargedQuartz,
|
||||
|
||||
NoSecondOutput, Stores, Next, SelectAmount, Lumen, Empty,
|
||||
NoSecondOutput,
|
||||
OfSecondOutput,
|
||||
MultipleOutputs,
|
||||
|
||||
Stores, Next, SelectAmount, Lumen, Empty,
|
||||
|
||||
ConfirmCrafting, Stored, Crafting, Scheduled, CraftingStatus, Cancel, ETA, ETAFormat,
|
||||
|
||||
|
||||
@@ -25,7 +25,6 @@ import java.util.Iterator;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
import java.util.WeakHashMap;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import com.google.common.base.Stopwatch;
|
||||
@@ -55,6 +54,7 @@ import appeng.entity.EntityFloatingItem;
|
||||
import appeng.me.Grid;
|
||||
import appeng.me.NetworkList;
|
||||
import appeng.tile.AEBaseTile;
|
||||
import appeng.util.IWorldCallable;
|
||||
import appeng.util.Platform;
|
||||
|
||||
|
||||
@@ -62,9 +62,9 @@ public class TickHandler
|
||||
{
|
||||
|
||||
public static final TickHandler INSTANCE = new TickHandler();
|
||||
final Queue<Callable> serverQueue = new LinkedList<Callable>();
|
||||
final Queue<IWorldCallable<?>> serverQueue = new LinkedList<IWorldCallable<?>>();
|
||||
final Multimap<World, CraftingJob> craftingJobs = LinkedListMultimap.create();
|
||||
private final WeakHashMap<World, Queue<Callable>> callQueue = new WeakHashMap<World, Queue<Callable>>();
|
||||
private final WeakHashMap<World, Queue<IWorldCallable<?>>> callQueue = new WeakHashMap<World, Queue<IWorldCallable<?>>>();
|
||||
private final HandlerRep server = new HandlerRep();
|
||||
private final HandlerRep client = new HandlerRep();
|
||||
private final HashMap<Integer, PlayerColor> cliPlayerColors = new HashMap<Integer, PlayerColor>();
|
||||
@@ -80,7 +80,7 @@ public class TickHandler
|
||||
return this.cliPlayerColors;
|
||||
}
|
||||
|
||||
public void addCallable( World w, Callable c )
|
||||
public void addCallable( World w, IWorldCallable<?> c )
|
||||
{
|
||||
if( w == null )
|
||||
{
|
||||
@@ -88,11 +88,12 @@ public class TickHandler
|
||||
}
|
||||
else
|
||||
{
|
||||
Queue<Callable> queue = this.callQueue.get( w );
|
||||
Queue<IWorldCallable<?>> queue = this.callQueue.get( w );
|
||||
|
||||
if( queue == null )
|
||||
{
|
||||
this.callQueue.put( w, queue = new LinkedList<Callable>() );
|
||||
queue = new LinkedList<IWorldCallable<?>>();
|
||||
this.callQueue.put( w, queue );
|
||||
}
|
||||
|
||||
queue.add( c );
|
||||
@@ -239,13 +240,15 @@ public class TickHandler
|
||||
}
|
||||
|
||||
// cross world queue.
|
||||
this.processQueue( this.serverQueue );
|
||||
this.processQueue( this.serverQueue, null );
|
||||
}
|
||||
|
||||
// world synced queue(s)
|
||||
if( ev.type == Type.WORLD && ev.phase == Phase.START )
|
||||
{
|
||||
this.processQueue( this.callQueue.get( ( (WorldTickEvent) ev ).world ) );
|
||||
final World world = ( (WorldTickEvent) ev ).world;
|
||||
final Queue<IWorldCallable<?>> queue = this.callQueue.get( world );
|
||||
this.processQueue( queue, world );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -263,7 +266,7 @@ public class TickHandler
|
||||
}
|
||||
}
|
||||
|
||||
private void processQueue( Queue<Callable> queue )
|
||||
private void processQueue( Queue<IWorldCallable<?>> queue, World world )
|
||||
{
|
||||
if( queue == null )
|
||||
{
|
||||
@@ -272,12 +275,12 @@ public class TickHandler
|
||||
|
||||
Stopwatch sw = Stopwatch.createStarted();
|
||||
|
||||
Callable c = null;
|
||||
IWorldCallable<?> c = null;
|
||||
while( ( c = queue.poll() ) != null )
|
||||
{
|
||||
try
|
||||
{
|
||||
c.call();
|
||||
c.call( world );
|
||||
|
||||
if( sw.elapsed( TimeUnit.MILLISECONDS ) > 50 )
|
||||
{
|
||||
|
||||
@@ -109,6 +109,7 @@ public class NEIGrinderRecipeHandler extends TemplateRecipeHandler
|
||||
public String getGuiTexture()
|
||||
{
|
||||
ResourceLocation loc = new ResourceLocation( "appliedenergistics2", "textures/guis/grinder.png" );
|
||||
|
||||
return loc.toString();
|
||||
}
|
||||
|
||||
@@ -194,13 +195,22 @@ public class NEIGrinderRecipeHandler extends TemplateRecipeHandler
|
||||
this.result = new PositionedStack( recipe.getOutput(), -30 + 107, 47 );
|
||||
this.ingredients = new ArrayList<PositionedStack>();
|
||||
|
||||
if( recipe.getOptionalOutput() != null )
|
||||
final ItemStack optionalOutput = recipe.getOptionalOutput();
|
||||
final int optionalChancePercent = (int) ( recipe.getOptionalChance() * 100 );
|
||||
if( optionalOutput != null )
|
||||
{
|
||||
final int chancePercent = (int) ( recipe.getOptionalChance() * 100 );
|
||||
|
||||
this.hasOptional = true;
|
||||
this.displayChance = String.format( GuiText.OfSecondOutput.getLocal(), chancePercent );
|
||||
this.ingredients.add( new PositionedStack( recipe.getOptionalOutput(), -30 + 107 + 18, 47 ) );
|
||||
this.displayChance = String.format( GuiText.OfSecondOutput.getLocal(), optionalChancePercent );
|
||||
this.ingredients.add( new PositionedStack( optionalOutput, -30 + 107 + 18, 47 ) );
|
||||
}
|
||||
|
||||
final ItemStack secondOptionalOutput = recipe.getSecondOptionalOutput();
|
||||
final int secondOptionalChancePercent = (int) ( recipe.getSecondOptionalChance() * 100 );
|
||||
if( secondOptionalOutput != null )
|
||||
{
|
||||
this.hasOptional = true;
|
||||
this.displayChance = String.format( GuiText.MultipleOutputs.getLocal(), optionalChancePercent, secondOptionalChancePercent );
|
||||
this.ingredients.add( new PositionedStack( secondOptionalOutput, -30 + 107 + 18 + 18, 47 ) );
|
||||
}
|
||||
|
||||
if( recipe.getInput() != null )
|
||||
|
||||
@@ -25,7 +25,6 @@ import java.util.Deque;
|
||||
import java.util.EnumSet;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
@@ -52,6 +51,7 @@ import appeng.api.util.IReadOnlyCollection;
|
||||
import appeng.core.worlddata.WorldData;
|
||||
import appeng.hooks.TickHandler;
|
||||
import appeng.me.pathfinding.IPathItem;
|
||||
import appeng.util.IWorldCallable;
|
||||
import appeng.util.ReadOnlyCollection;
|
||||
|
||||
|
||||
@@ -669,7 +669,7 @@ public class GridNode implements IGridNode, IPathItem
|
||||
return this.lastUsedChannels;
|
||||
}
|
||||
|
||||
private static class MachineSecurityBreak implements Callable<Void>
|
||||
private static class MachineSecurityBreak implements IWorldCallable<Void>
|
||||
{
|
||||
private final GridNode node;
|
||||
|
||||
@@ -679,7 +679,7 @@ public class GridNode implements IGridNode, IPathItem
|
||||
}
|
||||
|
||||
@Override
|
||||
public Void call() throws Exception
|
||||
public Void call(World world) throws Exception
|
||||
{
|
||||
this.node.getMachine().securityBreak();
|
||||
|
||||
|
||||
+3
-3
@@ -314,9 +314,9 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper
|
||||
{
|
||||
this.craftingCPUClusters.add( cluster );
|
||||
|
||||
if( cluster.myLastLink != null )
|
||||
if( cluster.getLastCraftingLink() != null )
|
||||
{
|
||||
this.addLink( (CraftingLink) cluster.myLastLink );
|
||||
this.addLink( (CraftingLink) cluster.getLastCraftingLink() );
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -641,7 +641,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper
|
||||
while( this.iterator.hasNext() && this.cpuCluster == null )
|
||||
{
|
||||
this.cpuCluster = this.iterator.next();
|
||||
if( !this.cpuCluster.isActive() || this.cpuCluster.isDestroyed )
|
||||
if( !this.cpuCluster.isActive() || this.cpuCluster.isDestroyed() )
|
||||
{
|
||||
this.cpuCluster = null;
|
||||
}
|
||||
|
||||
+5
-3
@@ -20,13 +20,15 @@ package appeng.me.cache.helpers;
|
||||
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import appeng.api.networking.IGridNode;
|
||||
import appeng.parts.p2p.PartP2PTunnelME;
|
||||
import appeng.util.IWorldCallable;
|
||||
|
||||
|
||||
public class Connections implements Callable
|
||||
public class Connections implements IWorldCallable<Void>
|
||||
{
|
||||
|
||||
public final HashMap<IGridNode, TunnelConnection> connections = new HashMap<IGridNode, TunnelConnection>();
|
||||
@@ -40,7 +42,7 @@ public class Connections implements Callable
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object call() throws Exception
|
||||
public Void call( World world ) throws Exception
|
||||
{
|
||||
this.me.updateConnections( this );
|
||||
|
||||
|
||||
@@ -80,31 +80,31 @@ import appeng.util.Platform;
|
||||
import appeng.util.item.AEItemStack;
|
||||
|
||||
|
||||
public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
public final class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
{
|
||||
|
||||
public final WorldCoord min;
|
||||
public final WorldCoord max;
|
||||
final int[] usedOps = new int[3];
|
||||
final Map<ICraftingPatternDetails, TaskProgress> tasks = new HashMap<ICraftingPatternDetails, TaskProgress>();
|
||||
private final WorldCoord min;
|
||||
private final WorldCoord max;
|
||||
private final int[] usedOps = new int[3];
|
||||
private final Map<ICraftingPatternDetails, TaskProgress> tasks = new HashMap<ICraftingPatternDetails, TaskProgress>();
|
||||
// INSTANCE sate
|
||||
private final LinkedList<TileCraftingTile> tiles = new LinkedList<TileCraftingTile>();
|
||||
private final LinkedList<TileCraftingTile> storage = new LinkedList<TileCraftingTile>();
|
||||
private final LinkedList<TileCraftingMonitorTile> status = new LinkedList<TileCraftingMonitorTile>();
|
||||
private final HashMap<IMEMonitorHandlerReceiver<IAEItemStack>, Object> listeners = new HashMap<IMEMonitorHandlerReceiver<IAEItemStack>, Object>();
|
||||
public ICraftingLink myLastLink;
|
||||
public String myName = "";
|
||||
public boolean isDestroyed = false;
|
||||
private ICraftingLink myLastLink;
|
||||
private String myName = "";
|
||||
private boolean isDestroyed = false;
|
||||
/**
|
||||
* crafting job info
|
||||
*/
|
||||
MECraftingInventory inventory = new MECraftingInventory();
|
||||
IAEItemStack finalOutput;
|
||||
boolean waiting = false;
|
||||
IItemList<IAEItemStack> waitingFor = AEApi.instance().storage().createItemList();
|
||||
long availableStorage = 0;
|
||||
MachineSource machineSrc = null;
|
||||
int accelerator = 0;
|
||||
private MECraftingInventory inventory = new MECraftingInventory();
|
||||
private IAEItemStack finalOutput;
|
||||
private boolean waiting = false;
|
||||
private IItemList<IAEItemStack> waitingFor = AEApi.instance().storage().createItemList();
|
||||
private long availableStorage = 0;
|
||||
private MachineSource machineSrc = null;
|
||||
private int accelerator = 0;
|
||||
private boolean isComplete = true;
|
||||
private int remainingOperations;
|
||||
private boolean somethingChanged;
|
||||
@@ -120,6 +120,16 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
this.max = max;
|
||||
}
|
||||
|
||||
public boolean isDestroyed()
|
||||
{
|
||||
return this.isDestroyed;
|
||||
}
|
||||
|
||||
public ICraftingLink getLastCraftingLink()
|
||||
{
|
||||
return this.myLastLink;
|
||||
}
|
||||
|
||||
/**
|
||||
* add a new Listener to the monitor, be sure to properly remove yourself when your done.
|
||||
*/
|
||||
@@ -165,10 +175,10 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
for( TileCraftingTile r : this.tiles )
|
||||
{
|
||||
IGridNode n = r.getActionableNode();
|
||||
final IGridNode n = r.getActionableNode();
|
||||
if( n != null && !posted )
|
||||
{
|
||||
IGrid g = n.getGrid();
|
||||
final IGrid g = n.getGrid();
|
||||
if( g != null )
|
||||
{
|
||||
g.postEvent( new MENetworkCraftingCpuChange( n ) );
|
||||
@@ -216,7 +226,7 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
{
|
||||
if( input instanceof IAEItemStack )
|
||||
{
|
||||
IAEItemStack is = this.waitingFor.findPrecise( (IAEItemStack) input );
|
||||
final IAEItemStack is = this.waitingFor.findPrecise( (IAEItemStack) input );
|
||||
if( is != null && is.getStackSize() > 0 )
|
||||
{
|
||||
return true;
|
||||
@@ -227,11 +237,16 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
public IAEStack injectItems( IAEStack input, Actionable type, BaseActionSource src )
|
||||
{
|
||||
if( input instanceof IAEItemStack && type == Actionable.SIMULATE )// causes crafting to lock up?
|
||||
if( !( input instanceof IAEItemStack ) )
|
||||
{
|
||||
IAEItemStack what = (IAEItemStack) input.copy();
|
||||
IAEItemStack is = this.waitingFor.findPrecise( what );
|
||||
return input;
|
||||
}
|
||||
|
||||
final IAEItemStack what = (IAEItemStack) input.copy();
|
||||
final IAEItemStack is = this.waitingFor.findPrecise( what );
|
||||
|
||||
if( type == Actionable.SIMULATE )// causes crafting to lock up?
|
||||
{
|
||||
if( is != null && is.getStackSize() > 0 )
|
||||
{
|
||||
if( is.getStackSize() >= what.getStackSize() )
|
||||
@@ -249,10 +264,10 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
return null;
|
||||
}
|
||||
|
||||
IAEItemStack leftOver = what.copy();
|
||||
final IAEItemStack leftOver = what.copy();
|
||||
leftOver.decStackSize( is.getStackSize() );
|
||||
|
||||
IAEItemStack used = what.copy();
|
||||
final IAEItemStack used = what.copy();
|
||||
used.setStackSize( is.getStackSize() );
|
||||
|
||||
if( this.finalOutput.equals( what ) )
|
||||
@@ -269,27 +284,33 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
return leftOver;
|
||||
}
|
||||
}
|
||||
else if( input instanceof IAEItemStack && type == Actionable.MODULATE )
|
||||
else if( type == Actionable.MODULATE )
|
||||
{
|
||||
IAEItemStack what = (IAEItemStack) input;
|
||||
IAEItemStack is = this.waitingFor.findPrecise( what );
|
||||
|
||||
if( is != null && is.getStackSize() > 0 )
|
||||
{
|
||||
this.waiting = false;
|
||||
|
||||
this.postChange( (IAEItemStack) input, src );
|
||||
this.postChange( what, src );
|
||||
|
||||
if( is.getStackSize() >= input.getStackSize() )
|
||||
if( is.getStackSize() >= what.getStackSize() )
|
||||
{
|
||||
is.decStackSize( input.getStackSize() );
|
||||
this.updateElapsedTime( (IAEItemStack) input );
|
||||
is.decStackSize( what.getStackSize() );
|
||||
|
||||
this.updateElapsedTime( what );
|
||||
this.markDirty();
|
||||
this.postCraftingStatusChange( is );
|
||||
|
||||
if( this.finalOutput.equals( input ) )
|
||||
if( this.finalOutput.equals( what ) )
|
||||
{
|
||||
this.finalOutput.decStackSize( input.getStackSize() );
|
||||
IAEStack leftover = what;
|
||||
|
||||
this.finalOutput.decStackSize( what.getStackSize() );
|
||||
|
||||
if( this.myLastLink != null )
|
||||
{
|
||||
leftover = ( (CraftingLink) this.myLastLink ).injectItems( what, type );
|
||||
}
|
||||
|
||||
if( this.finalOutput.getStackSize() <= 0 )
|
||||
{
|
||||
this.completeJob();
|
||||
@@ -297,19 +318,14 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
this.updateCPU();
|
||||
|
||||
if( this.myLastLink != null )
|
||||
{
|
||||
return ( (CraftingLink) this.myLastLink ).injectItems( (IAEItemStack) input, type );
|
||||
}
|
||||
|
||||
return input; // ignore it.
|
||||
return leftover; // ignore it.
|
||||
}
|
||||
|
||||
// 2000
|
||||
return this.inventory.injectItems( what, type, src );
|
||||
}
|
||||
|
||||
IAEItemStack insert = what.copy();
|
||||
final IAEItemStack insert = what.copy();
|
||||
insert.setStackSize( is.getStackSize() );
|
||||
what.decStackSize( is.getStackSize() );
|
||||
|
||||
@@ -317,26 +333,25 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
if( this.finalOutput.equals( insert ) )
|
||||
{
|
||||
IAEStack leftover = input;
|
||||
|
||||
this.finalOutput.decStackSize( insert.getStackSize() );
|
||||
|
||||
if( this.myLastLink != null )
|
||||
{
|
||||
what.add( ( (CraftingLink) this.myLastLink ).injectItems( insert.copy(), type ) );
|
||||
leftover = what;
|
||||
}
|
||||
|
||||
if( this.finalOutput.getStackSize() <= 0 )
|
||||
{
|
||||
this.completeJob();
|
||||
}
|
||||
|
||||
this.updateCPU();
|
||||
this.markDirty();
|
||||
|
||||
if( this.myLastLink != null )
|
||||
{
|
||||
what.add( ( (CraftingLink) this.myLastLink ).injectItems( insert.copy(), type ) );
|
||||
return what;
|
||||
}
|
||||
|
||||
if( this.myLastLink != null )
|
||||
{
|
||||
return ( (CraftingLink) this.myLastLink ).injectItems( (IAEItemStack) input, type );
|
||||
}
|
||||
|
||||
return input; // ignore it.
|
||||
return leftover; // ignore it.
|
||||
}
|
||||
|
||||
this.inventory.injectItems( insert, type, src );
|
||||
@@ -351,29 +366,29 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
protected void postChange( IAEItemStack diff, BaseActionSource src )
|
||||
{
|
||||
Iterator<Entry<IMEMonitorHandlerReceiver<IAEItemStack>, Object>> i = this.getListeners();
|
||||
|
||||
ImmutableList<IAEItemStack> single = null;
|
||||
final Iterator<Entry<IMEMonitorHandlerReceiver<IAEItemStack>, Object>> i = this.getListeners();
|
||||
|
||||
// protect integrity
|
||||
if( i.hasNext() )
|
||||
{
|
||||
single = ImmutableList.of( diff.copy() );
|
||||
final ImmutableList<IAEItemStack> single = ImmutableList.of( diff.copy() );
|
||||
|
||||
while( i.hasNext() )
|
||||
{
|
||||
final Entry<IMEMonitorHandlerReceiver<IAEItemStack>, Object> o = i.next();
|
||||
final IMEMonitorHandlerReceiver<IAEItemStack> receiver = o.getKey();
|
||||
|
||||
if( receiver.isValid( o.getValue() ) )
|
||||
{
|
||||
receiver.postChange( null, single, src );
|
||||
}
|
||||
else
|
||||
{
|
||||
i.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
while( i.hasNext() )
|
||||
{
|
||||
Entry<IMEMonitorHandlerReceiver<IAEItemStack>, Object> o = i.next();
|
||||
IMEMonitorHandlerReceiver<IAEItemStack> receiver = o.getKey();
|
||||
if( receiver.isValid( o.getValue() ) )
|
||||
{
|
||||
receiver.postChange( null, single, src );
|
||||
}
|
||||
else
|
||||
{
|
||||
i.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void markDirty()
|
||||
@@ -388,11 +403,11 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
return;
|
||||
}
|
||||
|
||||
CraftingGridCache sg = this.getGrid().getCache( ICraftingGrid.class );
|
||||
final CraftingGridCache sg = this.getGrid().getCache( ICraftingGrid.class );
|
||||
|
||||
if( sg.interestManager.containsKey( diff ) )
|
||||
{
|
||||
Collection<CraftingWatcher> list = sg.interestManager.get( diff );
|
||||
final Collection<CraftingWatcher> list = sg.interestManager.get( diff );
|
||||
|
||||
if( !list.isEmpty() )
|
||||
{
|
||||
@@ -449,10 +464,10 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
{
|
||||
for( TileCraftingTile r : this.tiles )
|
||||
{
|
||||
IGridNode gn = r.getActionableNode();
|
||||
final IGridNode gn = r.getActionableNode();
|
||||
if( gn != null )
|
||||
{
|
||||
IGrid g = gn.getGrid();
|
||||
final IGrid g = gn.getGrid();
|
||||
if( g != null )
|
||||
{
|
||||
return r.getActionableNode().getGrid();
|
||||
@@ -476,8 +491,8 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
{
|
||||
fuzz = fuzz.copy();
|
||||
fuzz.setStackSize( g.getStackSize() );
|
||||
IAEItemStack ais = this.inventory.extractItems( fuzz, Actionable.SIMULATE, this.machineSrc );
|
||||
ItemStack is = ais == null ? null : ais.getItemStack();
|
||||
final IAEItemStack ais = this.inventory.extractItems( fuzz, Actionable.SIMULATE, this.machineSrc );
|
||||
final ItemStack is = ais == null ? null : ais.getItemStack();
|
||||
|
||||
if( is != null && is.stackSize == g.getStackSize() )
|
||||
{
|
||||
@@ -498,8 +513,8 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
}
|
||||
else
|
||||
{
|
||||
IAEItemStack ais = this.inventory.extractItems( g.copy(), Actionable.SIMULATE, this.machineSrc );
|
||||
ItemStack is = ais == null ? null : ais.getItemStack();
|
||||
final IAEItemStack ais = this.inventory.extractItems( g.copy(), Actionable.SIMULATE, this.machineSrc );
|
||||
final ItemStack is = ais == null ? null : ais.getItemStack();
|
||||
|
||||
if( is == null || is.stackSize < g.getStackSize() )
|
||||
{
|
||||
@@ -529,7 +544,7 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
this.myLastLink = null;
|
||||
this.tasks.clear();
|
||||
|
||||
ImmutableSet<IAEItemStack> items = ImmutableSet.copyOf( this.waitingFor );
|
||||
final ImmutableSet<IAEItemStack> items = ImmutableSet.copyOf( this.waitingFor );
|
||||
|
||||
this.waitingFor.resetStatus();
|
||||
|
||||
@@ -578,7 +593,7 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
}
|
||||
|
||||
this.remainingOperations = this.accelerator + 1 - ( this.usedOps[0] + this.usedOps[1] + this.usedOps[2] );
|
||||
int started = this.remainingOperations;
|
||||
final int started = this.remainingOperations;
|
||||
|
||||
if( this.remainingOperations > 0 )
|
||||
{
|
||||
@@ -601,17 +616,20 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
private void executeCrafting( IEnergyGrid eg, CraftingGridCache cc )
|
||||
{
|
||||
Iterator<Entry<ICraftingPatternDetails, TaskProgress>> i = this.tasks.entrySet().iterator();
|
||||
final Iterator<Entry<ICraftingPatternDetails, TaskProgress>> i = this.tasks.entrySet().iterator();
|
||||
|
||||
while( i.hasNext() )
|
||||
{
|
||||
Entry<ICraftingPatternDetails, TaskProgress> e = i.next();
|
||||
final Entry<ICraftingPatternDetails, TaskProgress> e = i.next();
|
||||
|
||||
if( e.getValue().value <= 0 )
|
||||
{
|
||||
i.remove();
|
||||
continue;
|
||||
}
|
||||
|
||||
ICraftingPatternDetails details = e.getKey();
|
||||
final ICraftingPatternDetails details = e.getKey();
|
||||
|
||||
if( this.canCraft( details, details.getCondensedInputs() ) )
|
||||
{
|
||||
InventoryCrafting ic = null;
|
||||
@@ -627,9 +645,9 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
{
|
||||
if( ic == null )
|
||||
{
|
||||
IAEItemStack[] input = details.getInputs();
|
||||
|
||||
final IAEItemStack[] input = details.getInputs();
|
||||
double sum = 0;
|
||||
|
||||
for( IAEItemStack anInput : input )
|
||||
{
|
||||
if( anInput != null )
|
||||
@@ -649,10 +667,10 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
for( int x = 0; x < input.length; x++ )
|
||||
{
|
||||
|
||||
if( input[x] != null )
|
||||
{
|
||||
found = false;
|
||||
|
||||
if( details.isCraftable() )
|
||||
{
|
||||
for( IAEItemStack fuzz : this.inventory.getItemList().findFuzzy( input[x], FuzzyMode.IGNORE_ALL ) )
|
||||
@@ -662,8 +680,8 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
if( details.isValidItemForSlot( x, fuzz.getItemStack(), this.getWorld() ) )
|
||||
{
|
||||
IAEItemStack ais = this.inventory.extractItems( fuzz, Actionable.MODULATE, this.machineSrc );
|
||||
ItemStack is = ais == null ? null : ais.getItemStack();
|
||||
final IAEItemStack ais = this.inventory.extractItems( fuzz, Actionable.MODULATE, this.machineSrc );
|
||||
final ItemStack is = ais == null ? null : ais.getItemStack();
|
||||
|
||||
if( is != null )
|
||||
{
|
||||
@@ -677,8 +695,8 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
}
|
||||
else
|
||||
{
|
||||
IAEItemStack ais = this.inventory.extractItems( input[x].copy(), Actionable.MODULATE, this.machineSrc );
|
||||
ItemStack is = ais == null ? null : ais.getItemStack();
|
||||
final IAEItemStack ais = this.inventory.extractItems( input[x].copy(), Actionable.MODULATE, this.machineSrc );
|
||||
final ItemStack is = ais == null ? null : ais.getItemStack();
|
||||
|
||||
if( is != null )
|
||||
{
|
||||
@@ -704,7 +722,7 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
// put stuff back..
|
||||
for( int x = 0; x < ic.getSizeInventory(); x++ )
|
||||
{
|
||||
ItemStack is = ic.getStackInSlot( x );
|
||||
final ItemStack is = ic.getStackInSlot( x );
|
||||
if( is != null )
|
||||
{
|
||||
this.inventory.injectItems( AEItemStack.create( is ), Actionable.MODULATE, this.machineSrc );
|
||||
@@ -733,10 +751,10 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
for( int x = 0; x < ic.getSizeInventory(); x++ )
|
||||
{
|
||||
ItemStack output = Platform.getContainerItem( ic.getStackInSlot( x ) );
|
||||
final ItemStack output = Platform.getContainerItem( ic.getStackInSlot( x ) );
|
||||
if( output != null )
|
||||
{
|
||||
IAEItemStack cItem = AEItemStack.create( output );
|
||||
final IAEItemStack cItem = AEItemStack.create( output );
|
||||
this.postChange( cItem, this.machineSrc );
|
||||
this.waitingFor.add( cItem );
|
||||
this.postCraftingStatusChange( cItem );
|
||||
@@ -766,7 +784,7 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
// put stuff back..
|
||||
for( int x = 0; x < ic.getSizeInventory(); x++ )
|
||||
{
|
||||
ItemStack is = ic.getStackInSlot( x );
|
||||
final ItemStack is = ic.getStackInSlot( x );
|
||||
if( is != null )
|
||||
{
|
||||
this.inventory.injectItems( AEItemStack.create( is ), Actionable.MODULATE, this.machineSrc );
|
||||
@@ -779,14 +797,15 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
private void storeItems()
|
||||
{
|
||||
IGrid g = this.getGrid();
|
||||
final IGrid g = this.getGrid();
|
||||
|
||||
if( g == null )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
IStorageGrid sg = g.getCache( IStorageGrid.class );
|
||||
IMEInventory<IAEItemStack> ii = sg.getItemInventory();
|
||||
final IStorageGrid sg = g.getCache( IStorageGrid.class );
|
||||
final IMEInventory<IAEItemStack> ii = sg.getItemInventory();
|
||||
|
||||
for( IAEItemStack is : this.inventory.getItemList() )
|
||||
{
|
||||
@@ -829,9 +848,9 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
return null;
|
||||
}
|
||||
|
||||
IStorageGrid sg = g.getCache( IStorageGrid.class );
|
||||
IMEInventory<IAEItemStack> storage = sg.getItemInventory();
|
||||
MECraftingInventory ci = new MECraftingInventory( storage, true, false, false );
|
||||
final IStorageGrid sg = g.getCache( IStorageGrid.class );
|
||||
final IMEInventory<IAEItemStack> storage = sg.getItemInventory();
|
||||
final MECraftingInventory ci = new MECraftingInventory( storage, true, false, false );
|
||||
|
||||
try
|
||||
{
|
||||
@@ -845,7 +864,7 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
this.markDirty();
|
||||
|
||||
this.updateCPU();
|
||||
String craftID = this.generateCraftingID();
|
||||
final String craftID = this.generateCraftingID();
|
||||
|
||||
this.myLastLink = new CraftingLink( this.generateLinkData( craftID, requestingMachine == null, false ), this );
|
||||
|
||||
@@ -856,12 +875,12 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
return this.myLastLink;
|
||||
}
|
||||
|
||||
ICraftingLink whatLink = new CraftingLink( this.generateLinkData( craftID, false, true ), requestingMachine );
|
||||
final ICraftingLink whatLink = new CraftingLink( this.generateLinkData( craftID, false, true ), requestingMachine );
|
||||
|
||||
this.submitLink( this.myLastLink );
|
||||
this.submitLink( whatLink );
|
||||
|
||||
IItemList<IAEItemStack> list = AEApi.instance().storage().createItemList();
|
||||
final IItemList<IAEItemStack> list = AEApi.instance().storage().createItemList();
|
||||
this.getListOfItem( list, CraftingItemList.ALL );
|
||||
for( IAEItemStack ge : list )
|
||||
{
|
||||
@@ -889,7 +908,8 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
@Override
|
||||
public boolean isBusy()
|
||||
{
|
||||
Iterator<Entry<ICraftingPatternDetails, TaskProgress>> i = this.tasks.entrySet().iterator();
|
||||
final Iterator<Entry<ICraftingPatternDetails, TaskProgress>> i = this.tasks.entrySet().iterator();
|
||||
|
||||
while( i.hasNext() )
|
||||
{
|
||||
if( i.next().getValue().value <= 0 )
|
||||
@@ -927,13 +947,14 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
public boolean isActive()
|
||||
{
|
||||
TileCraftingTile core = this.getCore();
|
||||
final TileCraftingTile core = this.getCore();
|
||||
|
||||
if( core == null )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
IGridNode node = core.getActionableNode();
|
||||
final IGridNode node = core.getActionableNode();
|
||||
if( node == null )
|
||||
{
|
||||
return false;
|
||||
@@ -944,16 +965,16 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
private String generateCraftingID()
|
||||
{
|
||||
long now = System.currentTimeMillis();
|
||||
int hash = System.identityHashCode( this );
|
||||
int hmm = this.finalOutput == null ? 0 : this.finalOutput.hashCode();
|
||||
final long now = System.currentTimeMillis();
|
||||
final int hash = System.identityHashCode( this );
|
||||
final int hmm = this.finalOutput == null ? 0 : this.finalOutput.hashCode();
|
||||
|
||||
return Long.toString( now, Character.MAX_RADIX ) + '-' + Integer.toString( hash, Character.MAX_RADIX ) + '-' + Integer.toString( hmm, Character.MAX_RADIX );
|
||||
}
|
||||
|
||||
private NBTTagCompound generateLinkData( String craftingID, boolean standalone, boolean req )
|
||||
{
|
||||
NBTTagCompound tag = new NBTTagCompound();
|
||||
final NBTTagCompound tag = new NBTTagCompound();
|
||||
|
||||
tag.setString( "CraftID", craftingID );
|
||||
tag.setBoolean( "canceled", false );
|
||||
@@ -968,7 +989,7 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
{
|
||||
if( this.getGrid() != null )
|
||||
{
|
||||
CraftingGridCache cc = this.getGrid().getCache( ICraftingGrid.class );
|
||||
final CraftingGridCache cc = this.getGrid().getCache( ICraftingGrid.class );
|
||||
cc.addLink( (CraftingLink) myLastLink2 );
|
||||
}
|
||||
}
|
||||
@@ -1045,6 +1066,7 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
public IAEItemStack getItemStack( IAEItemStack what, CraftingItemList storage2 )
|
||||
{
|
||||
IAEItemStack is;
|
||||
|
||||
switch( storage2 )
|
||||
{
|
||||
case STORAGE:
|
||||
@@ -1094,15 +1116,15 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
if( this.myLastLink != null )
|
||||
{
|
||||
NBTTagCompound link = new NBTTagCompound();
|
||||
final NBTTagCompound link = new NBTTagCompound();
|
||||
this.myLastLink.writeToNBT( link );
|
||||
data.setTag( "link", link );
|
||||
}
|
||||
|
||||
NBTTagList list = new NBTTagList();
|
||||
final NBTTagList list = new NBTTagList();
|
||||
for( Entry<ICraftingPatternDetails, TaskProgress> e : this.tasks.entrySet() )
|
||||
{
|
||||
NBTTagCompound item = this.writeItem( AEItemStack.create( e.getKey().getPattern() ) );
|
||||
final NBTTagCompound item = this.writeItem( AEItemStack.create( e.getKey().getPattern() ) );
|
||||
item.setLong( "craftingProgress", e.getValue().value );
|
||||
list.appendTag( item );
|
||||
}
|
||||
@@ -1117,7 +1139,7 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
private NBTTagCompound writeItem( IAEItemStack finalOutput2 )
|
||||
{
|
||||
NBTTagCompound out = new NBTTagCompound();
|
||||
final NBTTagCompound out = new NBTTagCompound();
|
||||
|
||||
if( finalOutput2 != null )
|
||||
{
|
||||
@@ -1129,7 +1151,7 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
private NBTTagList writeList( IItemList<IAEItemStack> myList )
|
||||
{
|
||||
NBTTagList out = new NBTTagList();
|
||||
final NBTTagList out = new NBTTagList();
|
||||
|
||||
for( IAEItemStack ais : myList )
|
||||
{
|
||||
@@ -1141,7 +1163,7 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
public void done()
|
||||
{
|
||||
TileCraftingTile core = this.getCore();
|
||||
final TileCraftingTile core = this.getCore();
|
||||
|
||||
core.isCoreBlock = true;
|
||||
|
||||
@@ -1168,23 +1190,23 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
if( data.hasKey( "link" ) )
|
||||
{
|
||||
NBTTagCompound link = data.getCompoundTag( "link" );
|
||||
final NBTTagCompound link = data.getCompoundTag( "link" );
|
||||
this.myLastLink = new CraftingLink( link, this );
|
||||
this.submitLink( this.myLastLink );
|
||||
}
|
||||
|
||||
NBTTagList list = data.getTagList( "tasks", 10 );
|
||||
final NBTTagList list = data.getTagList( "tasks", 10 );
|
||||
for( int x = 0; x < list.tagCount(); x++ )
|
||||
{
|
||||
NBTTagCompound item = list.getCompoundTagAt( x );
|
||||
IAEItemStack pattern = AEItemStack.loadItemStackFromNBT( item );
|
||||
final NBTTagCompound item = list.getCompoundTagAt( x );
|
||||
final IAEItemStack pattern = AEItemStack.loadItemStackFromNBT( item );
|
||||
if( pattern != null && pattern.getItem() instanceof ICraftingPatternItem )
|
||||
{
|
||||
ICraftingPatternItem cpi = (ICraftingPatternItem) pattern.getItem();
|
||||
ICraftingPatternDetails details = cpi.getPatternForItem( pattern.getItemStack(), this.getWorld() );
|
||||
final ICraftingPatternItem cpi = (ICraftingPatternItem) pattern.getItem();
|
||||
final ICraftingPatternDetails details = cpi.getPatternForItem( pattern.getItemStack(), this.getWorld() );
|
||||
if( details != null )
|
||||
{
|
||||
TaskProgress tp = new TaskProgress();
|
||||
final TaskProgress tp = new TaskProgress();
|
||||
tp.value = item.getLong( "craftingProgress" );
|
||||
this.tasks.put( details, tp );
|
||||
}
|
||||
@@ -1225,7 +1247,8 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
private IItemList<IAEItemStack> readList( NBTTagList tag )
|
||||
{
|
||||
IItemList<IAEItemStack> out = AEApi.instance().storage().createItemList();
|
||||
final IItemList<IAEItemStack> out = AEApi.instance().storage().createItemList();
|
||||
|
||||
if( tag == null )
|
||||
{
|
||||
return out;
|
||||
@@ -1233,7 +1256,7 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
for( int x = 0; x < tag.tagCount(); x++ )
|
||||
{
|
||||
IAEItemStack ais = AEItemStack.loadItemStackFromNBT( tag.getCompoundTagAt( x ) );
|
||||
final IAEItemStack ais = AEItemStack.loadItemStackFromNBT( tag.getCompoundTagAt( x ) );
|
||||
if( ais != null )
|
||||
{
|
||||
out.add( ais );
|
||||
@@ -1250,13 +1273,14 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
public boolean isMaking( IAEItemStack what )
|
||||
{
|
||||
IAEItemStack wat = this.waitingFor.findPrecise( what );
|
||||
final IAEItemStack wat = this.waitingFor.findPrecise( what );
|
||||
return wat != null && wat.getStackSize() > 0;
|
||||
}
|
||||
|
||||
public void breakCluster()
|
||||
{
|
||||
TileCraftingTile t = this.getCore();
|
||||
final TileCraftingTile t = this.getCore();
|
||||
|
||||
if( t != null )
|
||||
{
|
||||
t.breakCluster();
|
||||
@@ -1267,9 +1291,10 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
{
|
||||
this.lastTime = System.nanoTime();
|
||||
this.elapsedTime = 0;
|
||||
int itemCount = 0;
|
||||
|
||||
IItemList<IAEItemStack> list = AEApi.instance().storage().createItemList();
|
||||
int itemCount = 0;
|
||||
final IItemList<IAEItemStack> list = AEApi.instance().storage().createItemList();
|
||||
|
||||
this.getListOfItem( list, CraftingItemList.ACTIVE );
|
||||
this.getListOfItem( list, CraftingItemList.PENDING );
|
||||
|
||||
@@ -1307,7 +1332,6 @@ public class CraftingCPUCluster implements IAECluster, ICraftingCPU
|
||||
|
||||
static class TaskProgress
|
||||
{
|
||||
|
||||
long value;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,7 +20,6 @@ package appeng.parts.automation;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
|
||||
@@ -34,6 +33,7 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.AxisAlignedBB;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.WorldServer;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
@@ -65,11 +65,12 @@ import appeng.hooks.TickHandler;
|
||||
import appeng.me.GridAccessException;
|
||||
import appeng.parts.PartBasicState;
|
||||
import appeng.server.ServerHelper;
|
||||
import appeng.util.IWorldCallable;
|
||||
import appeng.util.Platform;
|
||||
import appeng.util.item.AEItemStack;
|
||||
|
||||
|
||||
public class PartAnnihilationPlane extends PartBasicState implements IGridTickable, Callable<TickRateModulation>
|
||||
public class PartAnnihilationPlane extends PartBasicState implements IGridTickable, IWorldCallable<TickRateModulation>
|
||||
{
|
||||
private final static IIcon SIDE_ICON = CableBusTextures.PartPlaneSides.getIcon();
|
||||
private final static IIcon BACK_ICON = CableBusTextures.PartTransitionPlaneBack.getIcon();
|
||||
@@ -86,7 +87,7 @@ public class PartAnnihilationPlane extends PartBasicState implements IGridTickab
|
||||
}
|
||||
|
||||
@Override
|
||||
public TickRateModulation call() throws Exception
|
||||
public TickRateModulation call(World world) throws Exception
|
||||
{
|
||||
this.breaking = false;
|
||||
return this.breakBlock( true );
|
||||
|
||||
@@ -19,13 +19,12 @@
|
||||
package appeng.parts.p2p;
|
||||
|
||||
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.util.IIcon;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import cpw.mods.fml.relauncher.Side;
|
||||
@@ -52,6 +51,7 @@ import appeng.integration.IntegrationType;
|
||||
import appeng.me.GridAccessException;
|
||||
import appeng.transformer.annotations.Integration.Interface;
|
||||
import appeng.transformer.annotations.Integration.InterfaceList;
|
||||
import appeng.util.IWorldCallable;
|
||||
|
||||
|
||||
@InterfaceList( value = { @Interface( iface = "li.cil.oc.api.network.Environment", iname = "OpenComputers" ), @Interface( iface = "li.cil.oc.api.network.SidedEnvironment", iname = "OpenComputers" ) } )
|
||||
@@ -60,7 +60,7 @@ public final class PartP2POpenComputers extends PartP2PTunnel<PartP2POpenCompute
|
||||
@Nullable
|
||||
private final Node node;
|
||||
|
||||
private final Callable<Void> updateCallback;
|
||||
private final IWorldCallable<Void> updateCallback;
|
||||
|
||||
public PartP2POpenComputers( ItemStack is )
|
||||
{
|
||||
@@ -239,11 +239,11 @@ public final class PartP2POpenComputers extends PartP2PTunnel<PartP2POpenCompute
|
||||
return side == this.side;
|
||||
}
|
||||
|
||||
private final class UpdateCallback implements Callable<Void>
|
||||
private final class UpdateCallback implements IWorldCallable<Void>
|
||||
{
|
||||
@Nullable
|
||||
@Override
|
||||
public Void call() throws Exception
|
||||
public Void call( World world ) throws Exception
|
||||
{
|
||||
PartP2POpenComputers.this.updateConnections();
|
||||
|
||||
|
||||
@@ -88,22 +88,60 @@ public class RecipeResourceCopier
|
||||
Preconditions.checkNotNull( destination );
|
||||
Preconditions.checkArgument( destination.isDirectory() );
|
||||
|
||||
final String[] listing = this.getResourceListing( this.getClass(), this.root );
|
||||
this.copyTo( destination, this.root );
|
||||
}
|
||||
|
||||
/**
|
||||
* @see {RecipeResourceCopier#copyTo(File)}
|
||||
*
|
||||
* @param destination destination folder to which the recipes are copied to
|
||||
* @param directory the folder to copy.
|
||||
*
|
||||
* @throws URISyntaxException {@see #getResourceListing}
|
||||
* @throws IOException {@see #getResourceListing} and if copying the detected resource to file is not possible
|
||||
*/
|
||||
private void copyTo( File destination, String directory ) throws URISyntaxException, IOException
|
||||
{
|
||||
assert destination != null;
|
||||
assert directory != null;
|
||||
|
||||
final String[] listing = this.getResourceListing( this.getClass(), directory );
|
||||
for( String list : listing )
|
||||
{
|
||||
if( list.endsWith( ".recipe" ) || list.endsWith( ".html" ) )
|
||||
{
|
||||
final InputStream inStream = this.getClass().getResourceAsStream( '/' + this.root + list );
|
||||
final File outFile = new File( destination, list );
|
||||
if( !outFile.exists() )
|
||||
{
|
||||
if( inStream != null )
|
||||
{
|
||||
FileUtils.copyInputStreamToFile( inStream, outFile );
|
||||
inStream.close();
|
||||
}
|
||||
}
|
||||
this.copyFile( destination, directory, list );
|
||||
}
|
||||
else if( !list.contains( "." ) )
|
||||
{
|
||||
final File subDirectory = new File( destination, list );
|
||||
FileUtils.forceMkdir( subDirectory );
|
||||
this.copyTo( subDirectory, directory + list + "/" );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Copies a single file inside a folder to the destination.
|
||||
*
|
||||
* @param destination folder to which the file is copied to
|
||||
* @param directory the directory containing the file
|
||||
* @param fileName the fily to copy
|
||||
*
|
||||
* @throws IOException if copying the file is not possible
|
||||
*/
|
||||
private void copyFile( File destination, String directory, String fileName ) throws IOException
|
||||
{
|
||||
assert destination != null;
|
||||
assert fileName != null;
|
||||
|
||||
final InputStream inStream = this.getClass().getResourceAsStream( '/' + directory + fileName );
|
||||
final File outFile = new File( destination, fileName );
|
||||
|
||||
if( !outFile.exists() && inStream != null )
|
||||
{
|
||||
FileUtils.copyInputStreamToFile( inStream, outFile );
|
||||
inStream.close();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -35,11 +35,15 @@ import com.google.common.base.Preconditions;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.chunk.Chunk;
|
||||
import net.minecraftforge.event.world.WorldEvent;
|
||||
|
||||
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
|
||||
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.util.DimensionalCoord;
|
||||
import appeng.services.compass.CompassReader;
|
||||
import appeng.services.compass.ICompassCallback;
|
||||
import appeng.util.Platform;
|
||||
|
||||
|
||||
public final class CompassService
|
||||
@@ -71,6 +75,22 @@ public final class CompassService
|
||||
return this.executor.submit( new CMDirectionRequest( coord, maxRange, cc ) );
|
||||
}
|
||||
|
||||
/**
|
||||
* Ensure the a compass service is removed once a world gets unloaded by forge.
|
||||
*
|
||||
* @param event the event containing the unloaded world.
|
||||
*/
|
||||
@SubscribeEvent
|
||||
public void unloadWorld( WorldEvent.Unload event )
|
||||
{
|
||||
if( Platform.isServer() && this.worldSet.containsKey( event.world ) )
|
||||
{
|
||||
final CompassReader compassReader = this.worldSet.remove( event.world );
|
||||
|
||||
compassReader.close();
|
||||
}
|
||||
}
|
||||
|
||||
public int jobSize()
|
||||
{
|
||||
return this.jobSize;
|
||||
@@ -78,7 +98,7 @@ public final class CompassService
|
||||
|
||||
public void cleanUp()
|
||||
{
|
||||
for( CompassReader cr : this.worldSet.values() )
|
||||
for( final CompassReader cr : this.worldSet.values() )
|
||||
{
|
||||
cr.close();
|
||||
}
|
||||
@@ -86,8 +106,8 @@ public final class CompassService
|
||||
|
||||
public void updateArea( World w, int chunkX, int chunkZ )
|
||||
{
|
||||
int x = chunkX << 4;
|
||||
int z = chunkZ << 4;
|
||||
final int x = chunkX << 4;
|
||||
final int z = chunkZ << 4;
|
||||
|
||||
this.updateArea( w, x, CHUNK_SIZE, z );
|
||||
this.updateArea( w, x, CHUNK_SIZE + 32, z );
|
||||
@@ -104,17 +124,17 @@ public final class CompassService
|
||||
{
|
||||
this.jobSize++;
|
||||
|
||||
int cx = x >> 4;
|
||||
int cdy = y >> 5;
|
||||
int cz = z >> 4;
|
||||
final int cx = x >> 4;
|
||||
final int cdy = y >> 5;
|
||||
final int cz = z >> 4;
|
||||
|
||||
int low_y = cdy << 5;
|
||||
int hi_y = low_y + 32;
|
||||
final int low_y = cdy << 5;
|
||||
final int hi_y = low_y + 32;
|
||||
|
||||
// lower level...
|
||||
Chunk c = w.getChunkFromBlockCoords( x, z );
|
||||
final Chunk c = w.getChunkFromBlockCoords( x, z );
|
||||
|
||||
for( Block skyStoneBlock : AEApi.instance().definitions().blocks().skyStone().maybeBlock().asSet() )
|
||||
for( final Block skyStoneBlock : AEApi.instance().definitions().blocks().skyStone().maybeBlock().asSet() )
|
||||
{
|
||||
for( int i = 0; i < CHUNK_SIZE; i++ )
|
||||
{
|
||||
@@ -122,7 +142,7 @@ public final class CompassService
|
||||
{
|
||||
for( int k = low_y; k < hi_y; k++ )
|
||||
{
|
||||
Block blk = c.getBlock( i, k, j );
|
||||
final Block blk = c.getBlock( i, k, j );
|
||||
if( blk == skyStoneBlock && c.getBlockMetadata( i, k, j ) == 0 )
|
||||
{
|
||||
return this.executor.submit( new CMUpdatePost( w, cx, cz, cdy, true ) );
|
||||
@@ -135,6 +155,28 @@ public final class CompassService
|
||||
return this.executor.submit( new CMUpdatePost( w, cx, cz, cdy, false ) );
|
||||
}
|
||||
|
||||
public void kill()
|
||||
{
|
||||
this.executor.shutdown();
|
||||
|
||||
try
|
||||
{
|
||||
this.executor.awaitTermination( 6, TimeUnit.MINUTES );
|
||||
this.jobSize = 0;
|
||||
|
||||
for( final CompassReader cr : this.worldSet.values() )
|
||||
{
|
||||
cr.close();
|
||||
}
|
||||
|
||||
this.worldSet.clear();
|
||||
}
|
||||
catch( final InterruptedException e )
|
||||
{
|
||||
// wrap this up..
|
||||
}
|
||||
}
|
||||
|
||||
private CompassReader getReader( World w )
|
||||
{
|
||||
CompassReader cr = this.worldSet.get( w );
|
||||
@@ -150,42 +192,20 @@ public final class CompassService
|
||||
|
||||
private int dist( int ax, int az, int bx, int bz )
|
||||
{
|
||||
int up = ( bz - az ) * CHUNK_SIZE;
|
||||
int side = ( bx - ax ) * CHUNK_SIZE;
|
||||
final int up = ( bz - az ) * CHUNK_SIZE;
|
||||
final int side = ( bx - ax ) * CHUNK_SIZE;
|
||||
|
||||
return up * up + side * side;
|
||||
}
|
||||
|
||||
private double rad( int ax, int az, int bx, int bz )
|
||||
{
|
||||
int up = bz - az;
|
||||
int side = bx - ax;
|
||||
final int up = bz - az;
|
||||
final int side = bx - ax;
|
||||
|
||||
return Math.atan2( -up, side ) - Math.PI / 2.0;
|
||||
}
|
||||
|
||||
public void kill()
|
||||
{
|
||||
this.executor.shutdown();
|
||||
|
||||
try
|
||||
{
|
||||
this.executor.awaitTermination( 6, TimeUnit.MINUTES );
|
||||
this.jobSize = 0;
|
||||
|
||||
for( CompassReader cr : this.worldSet.values() )
|
||||
{
|
||||
cr.close();
|
||||
}
|
||||
|
||||
this.worldSet.clear();
|
||||
}
|
||||
catch( InterruptedException e )
|
||||
{
|
||||
// wrap this up..
|
||||
}
|
||||
}
|
||||
|
||||
private class CMUpdatePost implements Runnable
|
||||
{
|
||||
|
||||
@@ -210,7 +230,7 @@ public final class CompassService
|
||||
{
|
||||
CompassService.this.jobSize--;
|
||||
|
||||
CompassReader cr = CompassService.this.getReader( this.world );
|
||||
final CompassReader cr = CompassService.this.getReader( this.world );
|
||||
cr.setHasBeacon( this.chunkX, this.chunkZ, this.doubleChunkY, this.value );
|
||||
|
||||
if( CompassService.this.jobSize() < 2 )
|
||||
@@ -239,10 +259,10 @@ public final class CompassService
|
||||
{
|
||||
CompassService.this.jobSize--;
|
||||
|
||||
int cx = this.coord.x >> 4;
|
||||
int cz = this.coord.z >> 4;
|
||||
final int cx = this.coord.x >> 4;
|
||||
final int cz = this.coord.z >> 4;
|
||||
|
||||
CompassReader cr = CompassService.this.getReader( this.coord.getWorld() );
|
||||
final CompassReader cr = CompassService.this.getReader( this.coord.getWorld() );
|
||||
|
||||
// Am I standing on it?
|
||||
if( cr.hasBeacon( cx, cz ) )
|
||||
@@ -260,10 +280,10 @@ public final class CompassService
|
||||
// spiral outward...
|
||||
for( int offset = 1; offset < this.maxRange; offset++ )
|
||||
{
|
||||
int minX = cx - offset;
|
||||
int minZ = cz - offset;
|
||||
int maxX = cx + offset;
|
||||
int maxZ = cz + offset;
|
||||
final int minX = cx - offset;
|
||||
final int minZ = cz - offset;
|
||||
final int maxX = cx + offset;
|
||||
final int maxZ = cz + offset;
|
||||
|
||||
int closest = Integer.MAX_VALUE;
|
||||
int chosen_x = cx;
|
||||
@@ -273,7 +293,7 @@ public final class CompassService
|
||||
{
|
||||
if( cr.hasBeacon( minX, z ) )
|
||||
{
|
||||
int closeness = CompassService.this.dist( cx, cz, minX, z );
|
||||
final int closeness = CompassService.this.dist( cx, cz, minX, z );
|
||||
if( closeness < closest )
|
||||
{
|
||||
closest = closeness;
|
||||
@@ -284,7 +304,7 @@ public final class CompassService
|
||||
|
||||
if( cr.hasBeacon( maxX, z ) )
|
||||
{
|
||||
int closeness = CompassService.this.dist( cx, cz, maxX, z );
|
||||
final int closeness = CompassService.this.dist( cx, cz, maxX, z );
|
||||
if( closeness < closest )
|
||||
{
|
||||
closest = closeness;
|
||||
@@ -298,7 +318,7 @@ public final class CompassService
|
||||
{
|
||||
if( cr.hasBeacon( x, minZ ) )
|
||||
{
|
||||
int closeness = CompassService.this.dist( cx, cz, x, minZ );
|
||||
final int closeness = CompassService.this.dist( cx, cz, x, minZ );
|
||||
if( closeness < closest )
|
||||
{
|
||||
closest = closeness;
|
||||
@@ -309,7 +329,7 @@ public final class CompassService
|
||||
|
||||
if( cr.hasBeacon( x, maxZ ) )
|
||||
{
|
||||
int closeness = CompassService.this.dist( cx, cz, x, maxZ );
|
||||
final int closeness = CompassService.this.dist( cx, cz, x, maxZ );
|
||||
if( closeness < closest )
|
||||
{
|
||||
closest = closeness;
|
||||
|
||||
@@ -55,10 +55,18 @@ public final class CompassReader
|
||||
|
||||
public void setHasBeacon( int cx, int cz, int cdy, boolean hasBeacon )
|
||||
{
|
||||
CompassRegion r = this.getRegion( cx, cz );
|
||||
final CompassRegion r = this.getRegion( cx, cz );
|
||||
|
||||
r.setHasBeacon( cx, cz, cdy, hasBeacon );
|
||||
}
|
||||
|
||||
public boolean hasBeacon( int cx, int cz )
|
||||
{
|
||||
final CompassRegion r = this.getRegion( cx, cz );
|
||||
|
||||
return r.hasBeacon( cx, cz );
|
||||
}
|
||||
|
||||
private CompassRegion getRegion( int cx, int cz )
|
||||
{
|
||||
long pos = cx >> 10;
|
||||
@@ -66,6 +74,7 @@ public final class CompassReader
|
||||
pos |= ( cz >> 10 );
|
||||
|
||||
CompassRegion cr = this.regions.get( pos );
|
||||
|
||||
if( cr == null )
|
||||
{
|
||||
cr = new CompassRegion( cx, cz, this.dimensionId, this.worldCompassFolder );
|
||||
@@ -74,10 +83,4 @@ public final class CompassReader
|
||||
|
||||
return cr;
|
||||
}
|
||||
|
||||
public boolean hasBeacon( int cx, int cz )
|
||||
{
|
||||
CompassRegion r = this.getRegion( cx, cz );
|
||||
return r.hasBeacon( cx, cz );
|
||||
}
|
||||
}
|
||||
|
||||
@@ -52,8 +52,8 @@ public final class CompassRegion
|
||||
this.worldCompassFolder = worldCompassFolder;
|
||||
this.encoder = new MeteorDataNameEncoder( 0 );
|
||||
|
||||
int region_x = cx >> 10;
|
||||
int region_z = cz >> 10;
|
||||
final int region_x = cx >> 10;
|
||||
final int region_z = cz >> 10;
|
||||
|
||||
this.lowX = region_x << 10;
|
||||
this.lowZ = region_z << 10;
|
||||
@@ -61,42 +61,6 @@ public final class CompassRegion
|
||||
this.openFile( false );
|
||||
}
|
||||
|
||||
private void openFile( boolean create )
|
||||
{
|
||||
if( this.hasFile )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final File file = this.getFile();
|
||||
if( create || this.isFileExistent( file ) )
|
||||
{
|
||||
try
|
||||
{
|
||||
this.raf = new RandomAccessFile( file, "rw" );
|
||||
FileChannel fc = this.raf.getChannel();
|
||||
this.buffer = fc.map( FileChannel.MapMode.READ_WRITE, 0, 0x400 * 0x400 );// fc.size() );
|
||||
this.hasFile = true;
|
||||
}
|
||||
catch( Throwable t )
|
||||
{
|
||||
throw new CompassException( t );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private File getFile()
|
||||
{
|
||||
final String fileName = this.encoder.encode( this.world, this.lowX, this.lowZ );
|
||||
|
||||
return new File( this.worldCompassFolder, fileName );
|
||||
}
|
||||
|
||||
private boolean isFileExistent( File file )
|
||||
{
|
||||
return file.exists() && file.isFile();
|
||||
}
|
||||
|
||||
public void close()
|
||||
{
|
||||
try
|
||||
@@ -122,7 +86,7 @@ public final class CompassRegion
|
||||
cx &= 0x3FF;
|
||||
cz &= 0x3FF;
|
||||
|
||||
int val = this.read( cx, cz );
|
||||
final int val = this.read( cx, cz );
|
||||
if( val != 0 )
|
||||
{
|
||||
return true;
|
||||
@@ -132,6 +96,87 @@ public final class CompassRegion
|
||||
return false;
|
||||
}
|
||||
|
||||
public void setHasBeacon( int cx, int cz, int cdy, boolean hasBeacon )
|
||||
{
|
||||
cx &= 0x3FF;
|
||||
cz &= 0x3FF;
|
||||
|
||||
this.openFile( hasBeacon );
|
||||
|
||||
if( this.hasFile )
|
||||
{
|
||||
int val = this.read( cx, cz );
|
||||
final int originalVal = val;
|
||||
|
||||
if( hasBeacon )
|
||||
{
|
||||
val |= 1 << cdy;
|
||||
}
|
||||
else
|
||||
{
|
||||
val &= ~( 1 << cdy );
|
||||
}
|
||||
|
||||
if( originalVal != val )
|
||||
{
|
||||
this.write( cx, cz, val );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void finalize() throws Throwable
|
||||
{
|
||||
try
|
||||
{
|
||||
if( this.raf != null )
|
||||
{
|
||||
this.raf.close();
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
super.finalize();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void openFile( boolean create )
|
||||
{
|
||||
if( this.hasFile )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
final File file = this.getFile();
|
||||
if( create || this.isFileExistent( file ) )
|
||||
{
|
||||
try
|
||||
{
|
||||
this.raf = new RandomAccessFile( file, "rw" );
|
||||
final FileChannel fc = this.raf.getChannel();
|
||||
this.buffer = fc.map( FileChannel.MapMode.READ_WRITE, 0, 0x400 * 0x400 );// fc.size() );
|
||||
this.hasFile = true;
|
||||
}
|
||||
catch( final Throwable t )
|
||||
{
|
||||
throw new CompassException( t );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private File getFile()
|
||||
{
|
||||
final String fileName = this.encoder.encode( this.world, this.lowX, this.lowZ );
|
||||
|
||||
return new File( this.worldCompassFolder, fileName );
|
||||
}
|
||||
|
||||
private boolean isFileExistent( File file )
|
||||
{
|
||||
return file.exists() && file.isFile();
|
||||
}
|
||||
|
||||
private int read( int cx, int cz )
|
||||
{
|
||||
try
|
||||
@@ -150,34 +195,6 @@ public final class CompassRegion
|
||||
}
|
||||
}
|
||||
|
||||
public void setHasBeacon( int cx, int cz, int cdy, boolean hasBeacon )
|
||||
{
|
||||
cx &= 0x3FF;
|
||||
cz &= 0x3FF;
|
||||
|
||||
this.openFile( hasBeacon );
|
||||
|
||||
if( this.hasFile )
|
||||
{
|
||||
int val = this.read( cx, cz );
|
||||
int originalVal = val;
|
||||
|
||||
if( hasBeacon )
|
||||
{
|
||||
val |= 1 << cdy;
|
||||
}
|
||||
else
|
||||
{
|
||||
val &= ~( 1 << cdy );
|
||||
}
|
||||
|
||||
if( originalVal != val )
|
||||
{
|
||||
this.write( cx, cz, val );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void write( int cx, int cz, int val )
|
||||
{
|
||||
try
|
||||
|
||||
@@ -19,11 +19,10 @@
|
||||
package appeng.tile.spatial;
|
||||
|
||||
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import net.minecraft.inventory.IInventory;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraftforge.common.util.ForgeDirection;
|
||||
|
||||
import appeng.api.config.Actionable;
|
||||
@@ -46,10 +45,11 @@ import appeng.tile.events.TileEventType;
|
||||
import appeng.tile.grid.AENetworkInvTile;
|
||||
import appeng.tile.inventory.AppEngInternalInventory;
|
||||
import appeng.tile.inventory.InvOperation;
|
||||
import appeng.util.IWorldCallable;
|
||||
import appeng.util.Platform;
|
||||
|
||||
|
||||
public class TileSpatialIOPort extends AENetworkInvTile implements Callable
|
||||
public class TileSpatialIOPort extends AENetworkInvTile implements IWorldCallable<Void>
|
||||
{
|
||||
|
||||
final int[] sides = { 0, 1 };
|
||||
@@ -122,9 +122,8 @@ public class TileSpatialIOPort extends AENetworkInvTile implements Callable
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object call() throws Exception
|
||||
public Void call( World world ) throws Exception
|
||||
{
|
||||
|
||||
ItemStack cell = this.getStackInSlot( 0 );
|
||||
if( this.isSpatialCell( cell ) && this.getStackInSlot( 1 ) == null )
|
||||
{
|
||||
|
||||
@@ -19,33 +19,29 @@
|
||||
package appeng.util;
|
||||
|
||||
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
|
||||
|
||||
public class BlockUpdate implements Callable
|
||||
public class BlockUpdate implements IWorldCallable<Boolean>
|
||||
{
|
||||
|
||||
final World w;
|
||||
final int x;
|
||||
final int y;
|
||||
final int z;
|
||||
|
||||
public BlockUpdate( World w, int x, int y, int z )
|
||||
public BlockUpdate( int x, int y, int z )
|
||||
{
|
||||
this.w = w;
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.z = z;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object call() throws Exception
|
||||
public Boolean call( World world ) throws Exception
|
||||
{
|
||||
if( this.w.blockExists( this.x, this.y, this.z ) )
|
||||
if( world.blockExists( this.x, this.y, this.z ) )
|
||||
{
|
||||
this.w.notifyBlocksOfNeighborChange( this.x, this.y, this.z, Platform.AIR_BLOCK );
|
||||
world.notifyBlocksOfNeighborChange( this.x, this.y, this.z, Platform.AIR_BLOCK );
|
||||
}
|
||||
|
||||
return true;
|
||||
|
||||
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2015, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
||||
*/
|
||||
|
||||
package appeng.util;
|
||||
|
||||
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import net.minecraft.world.World;
|
||||
|
||||
|
||||
/**
|
||||
* An interface similar to {@link Callable}, but allowing to pass the {@link World} when calling.
|
||||
*
|
||||
* @see Callable
|
||||
* @author yueh
|
||||
* @version rv3
|
||||
* @since rv3
|
||||
*/
|
||||
public interface IWorldCallable<T>
|
||||
{
|
||||
/**
|
||||
* Similar to {@link Callable#call()}
|
||||
*
|
||||
* @see Callable#call()
|
||||
* @param world
|
||||
* @return
|
||||
* @throws Exception
|
||||
*/
|
||||
@Nullable
|
||||
T call( @Nullable World world ) throws Exception;
|
||||
}
|
||||
@@ -1911,7 +1911,7 @@ public class Platform
|
||||
{
|
||||
if( !worldObj.isRemote )
|
||||
{
|
||||
TickHandler.INSTANCE.addCallable( worldObj, new BlockUpdate( worldObj, xCoord, yCoord, zCoord ) );
|
||||
TickHandler.INSTANCE.addCallable( worldObj, new BlockUpdate( xCoord, yCoord, zCoord ) );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -20,7 +20,6 @@ package appeng.worldgen;
|
||||
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.Callable;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
@@ -33,6 +32,7 @@ import appeng.core.AEConfig;
|
||||
import appeng.core.features.registries.WorldGenRegistry;
|
||||
import appeng.core.worlddata.WorldData;
|
||||
import appeng.hooks.TickHandler;
|
||||
import appeng.util.IWorldCallable;
|
||||
import appeng.util.Platform;
|
||||
import appeng.worldgen.meteorite.ChunkOnly;
|
||||
|
||||
@@ -51,11 +51,11 @@ public final class MeteoriteWorldGen implements IWorldGenerator
|
||||
int z = r.nextInt( 16 ) + ( chunkZ << 4 );
|
||||
|
||||
int depth = 180 + r.nextInt( 20 );
|
||||
TickHandler.INSTANCE.addCallable( w, new MeteoriteSpawn( x, depth, z, w ) );
|
||||
TickHandler.INSTANCE.addCallable( w, new MeteoriteSpawn( x, depth, z ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
TickHandler.INSTANCE.addCallable( w, new MeteoriteSpawn( chunkX << 4, 128, chunkZ << 4, w ) );
|
||||
TickHandler.INSTANCE.addCallable( w, new MeteoriteSpawn( chunkX << 4, 128, chunkZ << 4 ) );
|
||||
}
|
||||
}
|
||||
else
|
||||
@@ -113,24 +113,22 @@ public final class MeteoriteWorldGen implements IWorldGenerator
|
||||
return WorldData.instance().spawnData().getNearByMeteorites( w.provider.dimensionId, chunkX, chunkZ );
|
||||
}
|
||||
|
||||
class MeteoriteSpawn implements Callable
|
||||
class MeteoriteSpawn implements IWorldCallable<Object>
|
||||
{
|
||||
|
||||
final int x;
|
||||
final int z;
|
||||
final World w;
|
||||
final int depth;
|
||||
|
||||
public MeteoriteSpawn( int x, int depth, int z, World w )
|
||||
public MeteoriteSpawn( int x, int depth, int z )
|
||||
{
|
||||
this.x = x;
|
||||
this.z = z;
|
||||
this.w = w;
|
||||
this.depth = depth;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object call() throws Exception
|
||||
public Object call( World world ) throws Exception
|
||||
{
|
||||
int chunkX = this.x >> 4;
|
||||
int chunkZ = this.z >> 4;
|
||||
@@ -138,10 +136,10 @@ public final class MeteoriteWorldGen implements IWorldGenerator
|
||||
double minSqDist = Double.MAX_VALUE;
|
||||
|
||||
// near by meteorites!
|
||||
for( NBTTagCompound data : MeteoriteWorldGen.this.getNearByMeteorites( this.w, chunkX, chunkZ ) )
|
||||
for( NBTTagCompound data : MeteoriteWorldGen.this.getNearByMeteorites( world, chunkX, chunkZ ) )
|
||||
{
|
||||
MeteoritePlacer mp = new MeteoritePlacer();
|
||||
mp.spawnMeteorite( new ChunkOnly( this.w, chunkX, chunkZ ), data );
|
||||
mp.spawnMeteorite( new ChunkOnly( world, chunkX, chunkZ ), data );
|
||||
|
||||
minSqDist = Math.min( minSqDist, mp.getSqDistance( this.x, this.z ) );
|
||||
}
|
||||
@@ -150,11 +148,11 @@ public final class MeteoriteWorldGen implements IWorldGenerator
|
||||
|
||||
if( minSqDist > AEConfig.instance.minMeteoriteDistanceSq || isCluster )
|
||||
{
|
||||
MeteoriteWorldGen.this.tryMeteorite( this.w, this.depth, this.x, this.z );
|
||||
MeteoriteWorldGen.this.tryMeteorite( world, this.depth, this.x, this.z );
|
||||
}
|
||||
|
||||
WorldData.instance().spawnData().setGenerated( this.w.provider.dimensionId, chunkX, chunkZ );
|
||||
WorldData.instance().compassData().service().updateArea( this.w, chunkX, chunkZ );
|
||||
WorldData.instance().spawnData().setGenerated( world.provider.dimensionId, chunkX, chunkZ );
|
||||
WorldData.instance().compassData().service().updateArea( world, chunkX, chunkZ );
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -185,8 +185,9 @@ gui.appliedenergistics2.inWorldPurificationFluix=Drop a Fluix Seed made from Flu
|
||||
gui.appliedenergistics2.inWorldSingularity=To create drop 1 Singularity and 1 Ender Dust and cause an explosion within range of the items.
|
||||
gui.appliedenergistics2.ChargedQuartz=Charged Certus Quartz is crafted by inserting an uncharged Certus Quartz Crystal into the Charger, and powering it.
|
||||
gui.appliedenergistics2.ChargedQuartzFind=Charged Certus Quartz can be found in world semi rarely, it appears similar to normal Certus Quartz, except it sparkles.
|
||||
gui.appliedenergistics2.OfSecondOutput=%1$d%% Chance for second output.
|
||||
gui.appliedenergistics2.NoSecondOutput=No Secondary Output
|
||||
gui.appliedenergistics2.OfSecondOutput=%1$d%% Chance for second output.
|
||||
gui.appliedenergistics2.MultipleOutputs=%1$d%% second, %2$d%% third output.
|
||||
gui.appliedenergistics2.SelectAmount=Select Amount
|
||||
gui.appliedenergistics2.CopyMode=Copy Mode
|
||||
gui.appliedenergistics2.CopyModeDesc=Controls if the contents of the configuration pane are cleared when you remove the cell.
|
||||
|
||||
@@ -42,13 +42,13 @@ tile.appliedenergistics2.BlockSkyStone.SmallBrick.name=Briquettes de pierre de c
|
||||
tile.appliedenergistics2.BlockSkyChest.name=Coffre de pierre de ciel
|
||||
tile.appliedenergistics2.BlockSkyChest.Block.name=Coffre de bloc de pierre de ciel
|
||||
tile.appliedenergistics2.BlockSkyCompass.name=Boussole à météorite
|
||||
tile.appliedenergistics2.BlockCraftingMonitor.name=Moniteur de craft
|
||||
tile.appliedenergistics2.BlockCraftingStorage.name=Disque 1k pour le craft
|
||||
tile.appliedenergistics2.BlockCraftingStorage4k.name=Disque 4k pour le craft
|
||||
tile.appliedenergistics2.BlockCraftingStorage16k.name=Disque 16k pour le craft
|
||||
tile.appliedenergistics2.BlockCraftingStorage64k.name=Disque 64k pour le craft
|
||||
tile.appliedenergistics2.BlockCraftingMonitor.name=Moniteur de fabrication
|
||||
tile.appliedenergistics2.BlockCraftingStorage.name=Disque 1k pour la fabrication
|
||||
tile.appliedenergistics2.BlockCraftingStorage4k.name=Disque 4k pour la fabrication
|
||||
tile.appliedenergistics2.BlockCraftingStorage16k.name=Disque 16k pour la fabrication
|
||||
tile.appliedenergistics2.BlockCraftingStorage64k.name=Disque 64k pour la fabrication
|
||||
tile.appliedenergistics2.BlockCraftingAccelerator.name=Unité de co-traitement
|
||||
tile.appliedenergistics2.BlockCraftingUnit.name=Unité de craft
|
||||
tile.appliedenergistics2.BlockCraftingUnit.name=Unité de fabrication
|
||||
tile.appliedenergistics2.BlockMolecularAssembler.name=Assembleur moléculaire
|
||||
|
||||
// Stairs
|
||||
@@ -61,6 +61,16 @@ tile.appliedenergistics2.SkyStoneBrickStairBlock.name=Escaliers de briques de pi
|
||||
tile.appliedenergistics2.SkyStoneSmallBrickStairBlock.name=Escaliers de petites briques de pierre de ciel
|
||||
tile.appliedenergistics2.SkyStoneStairBlock.name=Escaliers de pierre de ciel
|
||||
|
||||
// Slabs
|
||||
tile.appliedenergistics2.ChiseledQuartzSlabBlock.name=Dalle de Quartz Certus ciselé
|
||||
tile.appliedenergistics2.FluixSlabBlock.name=Dalle de Fluix
|
||||
tile.appliedenergistics2.QuartzPillarSlabBlock.name=Dalle de pilier de Quartz Certus
|
||||
tile.appliedenergistics2.QuartzSlabBlock.name=Dalle de Quartz Certus
|
||||
tile.appliedenergistics2.SkyStoneBlockSlabBlock.name=Dalle de bloc de pierre de ciel
|
||||
tile.appliedenergistics2.SkyStoneBrickSlabBlock.name=Dalle de briques de pierre de ciel
|
||||
tile.appliedenergistics2.SkyStoneSmallBrickSlabBlock.name=Dalle de petites briques de pierre de ciel
|
||||
tile.appliedenergistics2.SkyStoneSlabBlock.name=Dalle de pierre de ciel
|
||||
|
||||
// Chat Messages
|
||||
chat.appliedenergistics2.ChestCannotReadStorageCell=Le coffre ME Chest ne peut pas lire la cellule de stockage.
|
||||
chat.appliedenergistics2.SettingCleared=Paramètres effacés.
|
||||
@@ -83,7 +93,7 @@ itemGroup.appliedenergistics2=Applied Energistics 2
|
||||
itemGroup.appliedenergistics2.facades=Façades Applied Energistics 2
|
||||
|
||||
// GUI
|
||||
gui.appliedenergistics2.CraftingTerminal=Terminal de craft
|
||||
gui.appliedenergistics2.CraftingTerminal=Terminal de fabrication
|
||||
gui.appliedenergistics2.METunnel=ME
|
||||
gui.appliedenergistics2.ItemTunnel=Objet
|
||||
gui.appliedenergistics2.FluidTunnel=Fluide
|
||||
@@ -91,16 +101,18 @@ gui.appliedenergistics2.RedstoneTunnel=Redstone
|
||||
gui.appliedenergistics2.EUTunnel=EU
|
||||
gui.appliedenergistics2.RFTunnel=RF
|
||||
gui.appliedenergistics2.LightTunnel=Lumière
|
||||
gui.appliedenergistics2.OCTunnel=OpenComputers
|
||||
gui.appliedenergistics2.PressureTunnel=Pression
|
||||
|
||||
gui.appliedenergistics2.security.extract.name=Retrait
|
||||
gui.appliedenergistics2.security.inject.name=Dépôt
|
||||
gui.appliedenergistics2.security.craft.name=Craft
|
||||
gui.appliedenergistics2.security.craft.name=Fabrication
|
||||
gui.appliedenergistics2.security.build.name=Construction
|
||||
gui.appliedenergistics2.security.security.name=Sécurité
|
||||
|
||||
gui.appliedenergistics2.security.extract.tip=L'utilisateur est autorisé à retirer un élément du stockage.
|
||||
gui.appliedenergistics2.security.inject.tip=L'utilisateur est autorisé à déposer un élément dans le stockage.
|
||||
gui.appliedenergistics2.security.craft.tip=L'utilisateur peut lancer de nouveaux crafts.
|
||||
gui.appliedenergistics2.security.craft.tip=L'utilisateur peut lancer de nouvelles fabrications.
|
||||
gui.appliedenergistics2.security.build.tip=L'utilisateur peut modifier la structure physique du réseau et faire des changement de configuration.
|
||||
gui.appliedenergistics2.security.security.tip=L'utilisateur peut accéder et modifier le terminal de sécurité du réseau.
|
||||
|
||||
@@ -149,7 +161,7 @@ gui.appliedenergistics2.VibrationChamber=Chambre de vibration
|
||||
gui.appliedenergistics2.NetworkDetails=Détails du réseau
|
||||
gui.appliedenergistics2.StorageCells=Cellules de stockage ME
|
||||
gui.appliedenergistics2.IOBuses=Bus d'import/export ME
|
||||
gui.appliedenergistics2.Stores=Stocke
|
||||
gui.appliedenergistics2.Stores=Stocks
|
||||
gui.appliedenergistics2.BytesUsed=Octets utilisés
|
||||
gui.appliedenergistics2.Types=Types
|
||||
gui.appliedenergistics2.Blank=Vide
|
||||
@@ -158,10 +170,10 @@ gui.appliedenergistics2.Linked=Lié
|
||||
gui.appliedenergistics2.StoredSize=Quantité stockée
|
||||
gui.appliedenergistics2.SkyChest=Coffre de pierre du ciel
|
||||
gui.appliedenergistics2.PatternTerminal=Terminal des modèles
|
||||
gui.appliedenergistics2.CraftingPattern=Modèle de craft
|
||||
gui.appliedenergistics2.CraftingPattern=Modèle de fabrication
|
||||
gui.appliedenergistics2.MolecularAssembler=Assembleur moléculaire
|
||||
gui.appliedenergistics2.ProcessingPattern=Modèle de traitement
|
||||
gui.appliedenergistics2.Crafts=Crafts
|
||||
gui.appliedenergistics2.Crafts=Fabrications
|
||||
gui.appliedenergistics2.And=et
|
||||
gui.appliedenergistics2.Creates=Crée
|
||||
gui.appliedenergistics2.With=avec
|
||||
@@ -183,20 +195,21 @@ gui.appliedenergistics2.Lumen=Lumen
|
||||
gui.appliedenergistics2.Empty=Vide
|
||||
gui.appliedenergistics2.Stored=Stocké
|
||||
gui.appliedenergistics2.Cancel=Annuler
|
||||
gui.appliedenergistics2.Crafting=Craft
|
||||
gui.appliedenergistics2.ETAFormat=HH:mm:ss
|
||||
gui.appliedenergistics2.Crafting=Fabrication
|
||||
gui.appliedenergistics2.Scheduled=Prévu
|
||||
gui.appliedenergistics2.CraftingStatus=Etat du craft
|
||||
gui.appliedenergistics2.CraftingStatus=Etat de fabrication
|
||||
gui.appliedenergistics2.FromStorage=Disponible
|
||||
gui.appliedenergistics2.ToCraft=A crafter
|
||||
gui.appliedenergistics2.CraftingPlan=Plan de craft
|
||||
gui.appliedenergistics2.ToCraft=A fabriquer
|
||||
gui.appliedenergistics2.CraftingPlan=Plan de fabrication
|
||||
gui.appliedenergistics2.Automatic=Automatique
|
||||
gui.appliedenergistics2.Start=Départ
|
||||
gui.appliedenergistics2.Missing=Manquant
|
||||
gui.appliedenergistics2.Bytes=Stockage
|
||||
gui.appliedenergistics2.Simulation=Simulation
|
||||
gui.appliedenergistics2.CoProcessors=Co-traitements
|
||||
gui.appliedenergistics2.CraftingCPU=Unité de craft
|
||||
gui.appliedenergistics2.NoCraftingCPUs=Aucune unité de craft n'est disponible
|
||||
gui.appliedenergistics2.CraftingCPU=Unité de fabrication
|
||||
gui.appliedenergistics2.NoCraftingCPUs=Aucune unité de fabrication n'est disponible
|
||||
gui.appliedenergistics2.CalculatingWait=En cours de calcul, veuillez patienter...
|
||||
gui.appliedenergistics2.Clean=Effacer
|
||||
gui.appliedenergistics2.InvalidPattern=Modèle non valide
|
||||
@@ -204,21 +217,21 @@ gui.appliedenergistics2.Range=Portée
|
||||
gui.appliedenergistics2.TransparentFacades=Façades transparentes
|
||||
gui.appliedenergistics2.TransparentFacadesHint=Contrôle la visibilité des façades avec l'outil réseau dans votre main.
|
||||
gui.appliedenergistics2.CPUs=Unités
|
||||
gui.appliedenergistics2.NoCraftingJobs=Aucun craft actif
|
||||
gui.appliedenergistics2.FacadeCrafting=Craft de façade
|
||||
gui.appliedenergistics2.NoCraftingJobs=Aucune fabrication d'active
|
||||
gui.appliedenergistics2.FacadeCrafting=Fabrication de façade
|
||||
gui.appliedenergistics2.inWorldCraftingPresses=Les plaques de gravure se trouvent au centre des météorites qui peuvent être trouvées dans le monde, elles peuvent être localisées en utilisant une boussole à météorite.
|
||||
gui.appliedenergistics2.Included=Inclus
|
||||
gui.appliedenergistics2.Excluded=Exclus
|
||||
gui.appliedenergistics2.Partitioned=Partitionné
|
||||
gui.appliedenergistics2.Precise=Précis
|
||||
gui.appliedenergistics2.Fuzzy=Brouillon
|
||||
gui.appliedenergistics2.SmallFontCraft=Craft
|
||||
gui.appliedenergistics2.SmallFontCraft=Fabrication
|
||||
gui.appliedenergistics2.LargeFontCraft=+
|
||||
gui.appliedenergistics2.Nothing=Rien
|
||||
|
||||
// GUI Tooltips
|
||||
gui.tooltips.appliedenergistics2.Stash=Stocke des objets
|
||||
gui.tooltips.appliedenergistics2.StashDesc=Renvoie les objets de la grille de craft dans le réseau.
|
||||
gui.tooltips.appliedenergistics2.StashDesc=Renvoie les objets de la grille de fabrication dans le réseau.
|
||||
gui.tooltips.appliedenergistics2.Substitutions=Remplacements du Ore-Dictionnary
|
||||
gui.tooltips.appliedenergistics2.SubstitutionsDesc=Editez les options de remplacement pour les composants en entrée.
|
||||
gui.tooltips.appliedenergistics2.SubstitutionsOn=Remplacements activés
|
||||
@@ -238,7 +251,7 @@ gui.tooltips.appliedenergistics2.TransferToNetwork=Transférer les données au r
|
||||
gui.tooltips.appliedenergistics2.TransferToStorageCell=Transférer les données à la cellule de stockage
|
||||
gui.tooltips.appliedenergistics2.ToggleSortDirection=Basculer la direction de tri
|
||||
gui.tooltips.appliedenergistics2.StoredItems=Objets stockés
|
||||
gui.tooltips.appliedenergistics2.StoredCraftable=Stock / Craft
|
||||
gui.tooltips.appliedenergistics2.StoredCraftable=Stock / Fabriquer
|
||||
gui.tooltips.appliedenergistics2.View=Vue
|
||||
gui.tooltips.appliedenergistics2.RedstoneMode=Mode redstone
|
||||
gui.tooltips.appliedenergistics2.OperationMode=Mode opération
|
||||
@@ -251,7 +264,7 @@ gui.tooltips.appliedenergistics2.PartitionStorage=Partionner le stockage
|
||||
gui.tooltips.appliedenergistics2.Clear=Effacer
|
||||
gui.tooltips.appliedenergistics2.TrashController=Effacement par Maj. / Espace-Clic.
|
||||
gui.tooltips.appliedenergistics2.InterfaceBlockingMode=Mode bloquant
|
||||
gui.tooltips.appliedenergistics2.InterfaceCraftingMode=Mode craft
|
||||
gui.tooltips.appliedenergistics2.InterfaceCraftingMode=Mode fabrication
|
||||
gui.tooltips.appliedenergistics2.Trash=Détruire les éléments
|
||||
gui.tooltips.appliedenergistics2.MatterBalls=Condenser en billes de matière\n%s par élément
|
||||
gui.tooltips.appliedenergistics2.Singularity=Condenser en singularités\n%s par élément
|
||||
@@ -271,17 +284,17 @@ gui.tooltips.appliedenergistics2.SearchMode_NEIStandard=Synchronisation NEI stan
|
||||
gui.tooltips.appliedenergistics2.SearchMode=Mode de la boite de recherche
|
||||
gui.tooltips.appliedenergistics2.PartitionStorageHint=Configure la partition par rapport aux objets actuellement stockés.
|
||||
gui.tooltips.appliedenergistics2.ClearSettings=Efface les paramètres
|
||||
gui.tooltips.appliedenergistics2.Craftable=Craftable
|
||||
gui.tooltips.appliedenergistics2.Craftable=Fabricable
|
||||
gui.tooltips.appliedenergistics2.MoveWhenEmpty=Déplace vers la sortie dès que c'est vide.
|
||||
gui.tooltips.appliedenergistics2.MoveWhenWorkIsDone=Déplace vers la sortie quand le travail est fini.
|
||||
gui.tooltips.appliedenergistics2.MoveWhenFull=Déplace vers la sortie quand c'est plein.
|
||||
gui.tooltips.appliedenergistics2.Disabled=Désactivé
|
||||
gui.tooltips.appliedenergistics2.Enable=Activé
|
||||
gui.tooltips.appliedenergistics2.Blocking=Ne pas insérer d'objets de craft si l'inventaire contient des objets.
|
||||
gui.tooltips.appliedenergistics2.Blocking=Ne pas fabriquer d'objets si l'inventaire contient ces objets.
|
||||
gui.tooltips.appliedenergistics2.NonBlocking=Ignorer le contenu de l'inventaire cible.
|
||||
gui.tooltips.appliedenergistics2.Craft=Comportement de craft
|
||||
gui.tooltips.appliedenergistics2.CraftOnly=Ne pas utiliser les objets stockés; préférer le craft pour l'export.
|
||||
gui.tooltips.appliedenergistics2.CraftEither=Utiliser les éléments stockés, ou les crafter lors de l'export.
|
||||
gui.tooltips.appliedenergistics2.Craft=Comportement de fabrication
|
||||
gui.tooltips.appliedenergistics2.CraftOnly=Ne pas utiliser les objets stockés; préférer les fabriquer pour l'export.
|
||||
gui.tooltips.appliedenergistics2.CraftEither=Utiliser les éléments stockés, ou les fabriquer lors de l'export.
|
||||
gui.tooltips.appliedenergistics2.LevelType=Type de niveau
|
||||
gui.tooltips.appliedenergistics2.LevelType_Energy=Energie
|
||||
gui.tooltips.appliedenergistics2.LevelType_Item=Objet
|
||||
@@ -292,15 +305,19 @@ gui.tooltips.appliedenergistics2.TerminalStyle_Full=Terminal plein écran
|
||||
gui.tooltips.appliedenergistics2.TerminalStyle_Tall=Grand terminal centré
|
||||
gui.tooltips.appliedenergistics2.TerminalStyle_Small=Petit terminal centré
|
||||
gui.tooltips.appliedenergistics2.DoesntDespawn=Cet élément ne disparaitra pas.
|
||||
gui.tooltips.appliedenergistics2.EmitterMode=Mode d'émission du craft
|
||||
gui.tooltips.appliedenergistics2.CraftViaRedstone=Emettre un signal Redstone pour crafter l'objet.
|
||||
gui.tooltips.appliedenergistics2.EmitWhenCrafting=Emettre un signal Redstone quand l'objet est en cours de craft.
|
||||
gui.tooltips.appliedenergistics2.EmitterMode=Mode d'émission de la fabrication
|
||||
gui.tooltips.appliedenergistics2.CraftViaRedstone=Emettre un signal Redstone pour fabriquer l'objet.
|
||||
gui.tooltips.appliedenergistics2.EmitWhenCrafting=Emettre un signal Redstone quand l'objet est en cours de fabrication.
|
||||
gui.tooltips.appliedenergistics2.ReportInaccessibleItems=Rapport d'éléments inaccessibles
|
||||
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsYes=Oui: Les éléments ne pouvant pas être extraits seront visibles.
|
||||
gui.tooltips.appliedenergistics2.ReportInaccessibleItemsNo=Non: Seuls les éléments extractibles seront visibles.
|
||||
gui.tooltips.appliedenergistics2.BlockPlacement=Placement de bloc
|
||||
gui.tooltips.appliedenergistics2.BlockPlacementYes=Les blocs seront placés comme un bloc.
|
||||
gui.tooltips.appliedenergistics2.BlockPlacementNo=Les blocs seront jettés comme un élément.
|
||||
gui.tooltips.appliedenergistics2.SchedulingMode=Mode de planification
|
||||
gui.tooltips.appliedenergistics2.SchedulingModeDefault=Exporte le premier élément jusqu'à ce que le réseau soit vide, puis essaye les suivants.
|
||||
gui.tooltips.appliedenergistics2.SchedulingModeRoundRobin=Exporte les éléments l'un après l'autre.
|
||||
gui.tooltips.appliedenergistics2.SchedulingModeRandom=Exporte les éléments aléatoirement.
|
||||
gui.tooltips.appliedenergistics2.ItemsStored=Eléments stockés: %s
|
||||
gui.tooltips.appliedenergistics2.ItemsRequestable=Eléments recherchable: %s
|
||||
|
||||
@@ -412,6 +429,7 @@ item.appliedenergistics2.ItemMaterial.SkyDust.name=Poussière de pierre du ciel
|
||||
item.appliedenergistics2.ItemMaterial.CardCrafting.name=Carte de fabrication
|
||||
|
||||
item.appliedenergistics2.ItemPart.AnnihilationPlane.name=Plan de dématérialisation ME
|
||||
item.appliedenergistics2.ItemPart.IdentityAnnihilationPlane.name=Plan de dématérialisation d'identité ME
|
||||
item.appliedenergistics2.ItemPart.CableAnchor.name=Ancre de câble
|
||||
item.appliedenergistics2.ItemPart.CableCovered.name=Câble couvert ME
|
||||
item.appliedenergistics2.ItemPart.CableGlass.name=Câble de verre ME
|
||||
@@ -419,7 +437,7 @@ item.appliedenergistics2.ItemPart.CableSmart.name=Câble intelligent ME
|
||||
item.appliedenergistics2.ItemPart.CableDense.name=Câble dense ME
|
||||
item.appliedenergistics2.ItemPart.StorageMonitor.name=Moniteur de stockage ME
|
||||
item.appliedenergistics2.ItemPart.ConversionMonitor.name=Moniteur de conversion ME
|
||||
item.appliedenergistics2.ItemPart.CraftingTerminal.name=Terminal de craft ME
|
||||
item.appliedenergistics2.ItemPart.CraftingTerminal.name=Terminal de fabrication ME
|
||||
item.appliedenergistics2.ItemPart.SemiDarkMonitor.name=Panneau illuminé
|
||||
item.appliedenergistics2.ItemPart.Monitor.name=Panneau illuminé éclairé
|
||||
item.appliedenergistics2.ItemPart.DarkMonitor.name=Panneau illuminé sombre
|
||||
@@ -435,8 +453,9 @@ item.appliedenergistics2.ItemPart.StorageBus.name=Bus de stockage ME
|
||||
item.appliedenergistics2.ItemPart.Terminal.name=Terminal ME
|
||||
item.appliedenergistics2.ItemPart.InvertedToggleBus.name=Bus levier inversé ME
|
||||
item.appliedenergistics2.ItemPart.ToggleBus.name=Bus levier ME
|
||||
item.appliedenergistics2.ItemPart.CraftingMonitor.name=Moniteur des crafts ME
|
||||
item.appliedenergistics2.ItemPart.CraftingMonitor.name=Moniteur des fabrications ME
|
||||
item.appliedenergistics2.ItemPart.InterfaceTerminal.name=Terminal d'interface ME
|
||||
item.appliedenergistics2.ItemPart.InvalidType.name=Éléments désactivés
|
||||
|
||||
item.appliedenergistics2.ItemSpatialStorageCell.128Cubed.name=Disque spatiale de 128³
|
||||
item.appliedenergistics2.ItemSpatialStorageCell.16Cubed.name=Disque spatiale de 16³
|
||||
@@ -482,55 +501,55 @@ commands.ae2.Supporters=Affiche une liste des supporters de AE2
|
||||
|
||||
// Achievements
|
||||
achievement.ae2.Compass=Chasseur de météorites
|
||||
achievement.ae2.Compass.desc=Crafter une boussole à météorite.
|
||||
achievement.ae2.Compass.desc=Fabriquer une boussole à météorite.
|
||||
achievement.ae2.Presses=Technologie inconnue
|
||||
achievement.ae2.Presses.desc=Trouver une matrice de presse à processeur.
|
||||
achievement.ae2.SpatialIO=Coordination spatiale
|
||||
achievement.ae2.SpatialIO.desc=Crafter un port d'E/S spatial.
|
||||
achievement.ae2.SpatialIO.desc=Fabriquer un port d'E/S spatial.
|
||||
achievement.ae2.SpatialIOExplorer=A coeur vaillant...
|
||||
achievement.ae2.SpatialIOExplorer.desc=Etre stocké dans un disque spatial.
|
||||
achievement.ae2.StorageCell=Mieux que des coffres
|
||||
achievement.ae2.StorageCell.desc=Crafter une cellule de stockage.
|
||||
achievement.ae2.StorageCell.desc=Fabriquer une cellule de stockage.
|
||||
achievement.ae2.IOPort=Mélange de disque
|
||||
achievement.ae2.IOPort.desc=Crafter un port d'E/S.
|
||||
achievement.ae2.IOPort.desc=Fabriquer un port d'E/S.
|
||||
achievement.ae2.CraftingTerminal=Une table (bien) plus grande
|
||||
achievement.ae2.CraftingTerminal.desc=Crafter un terminal de craft.
|
||||
achievement.ae2.PatternTerminal=Maitre crafteur
|
||||
achievement.ae2.PatternTerminal.desc=Crafter un terminal de modèles.
|
||||
achievement.ae2.CraftingTerminal.desc=Fabriquer un terminal de fabrication.
|
||||
achievement.ae2.PatternTerminal=Maitre fabricateur
|
||||
achievement.ae2.PatternTerminal.desc=Fabriquer un terminal de modèles.
|
||||
achievement.ae2.ChargedQuartz=Electrifiant
|
||||
achievement.ae2.ChargedQuartz.desc=Trouver du Quartz chargé.
|
||||
achievement.ae2.Fluix=Artificiel
|
||||
achievement.ae2.Fluix.desc=Créer des critaux de Fluix.
|
||||
achievement.ae2.Charger=Production de Fluix
|
||||
achievement.ae2.Charger.desc=Crafter un chargeur.
|
||||
achievement.ae2.Charger.desc=Fabriquer un chargeur.
|
||||
achievement.ae2.CrystalGrowthAccelerator=Accélérateur est un euphémisme
|
||||
achievement.ae2.CrystalGrowthAccelerator.desc=Crafter un accélérateur de croissance de cristal.
|
||||
achievement.ae2.CrystalGrowthAccelerator.desc=Fabriquer un accélérateur de croissance de cristal.
|
||||
achievement.ae2.GlassCable=Connexion d'énergie Fluix
|
||||
achievement.ae2.GlassCable.desc=Crafter un câble de verre ME.
|
||||
achievement.ae2.GlassCable.desc=Fabriquer un câble de verre ME.
|
||||
achievement.ae2.Networking1=Apprenti réseau
|
||||
achievement.ae2.Networking1.desc=Atteindre 8 canaux en utilisant des dispositifs sur un réseau.
|
||||
achievement.ae2.Controller=Tableau de distribution du réseau
|
||||
achievement.ae2.Controller.desc=Crafter un contrôleur.
|
||||
achievement.ae2.Controller.desc=Fabriquer un contrôleur.
|
||||
achievement.ae2.Networking2=Ingénieur réseau
|
||||
achievement.ae2.Networking2.desc=Atteindre 128 canaux en utilisant des dispositifs sur un réseau.
|
||||
achievement.ae2.Networking3=Administrateur réseau
|
||||
achievement.ae2.Networking3.desc=Atteindre 2048 canaux en utilisant des dispositifs sur un réseau.
|
||||
achievement.ae2.P2P=Réseau point à point
|
||||
achievement.ae2.P2P.desc=Crafter un tunnel P2P.
|
||||
achievement.ae2.P2P.desc=Fabriquer un tunnel P2P.
|
||||
achievement.ae2.Recursive=Réseau récursif
|
||||
achievement.ae2.Recursive.desc=Placer une interface sur un bus de stockage.
|
||||
achievement.ae2.CraftingCPU=Crafting nouvelle génération
|
||||
achievement.ae2.CraftingCPU.desc=Crafter une unité de craft.
|
||||
achievement.ae2.CraftingCPU=Fabrication de nouvelle génération
|
||||
achievement.ae2.CraftingCPU.desc=Fabriquer une unité de fabrication.
|
||||
achievement.ae2.Facade=Esthétique du réseau
|
||||
achievement.ae2.Facade.desc=Crafter des façades de câbles.
|
||||
achievement.ae2.Facade.desc=Fabriquer des façades de câbles.
|
||||
achievement.ae2.NetworkTool=Diagnostics réseau
|
||||
achievement.ae2.NetworkTool.desc=Crafter un outil réseau.
|
||||
achievement.ae2.NetworkTool.desc=Fabriquer un outil réseau.
|
||||
achievement.ae2.PortableCell=Stockage nomade
|
||||
achievement.ae2.PortableCell.desc=Crafter un disque portable.
|
||||
achievement.ae2.PortableCell.desc=Fabriquer un disque portable.
|
||||
achievement.ae2.StorageBus=Potentiel illimité
|
||||
achievement.ae2.StorageBus.desc=Crafter un bus de stockage.
|
||||
achievement.ae2.StorageBus.desc=Fabriquer un bus de stockage.
|
||||
achievement.ae2.QNB=Ouvrir un tunnel quantique
|
||||
achievement.ae2.QNB.desc=Crafter un lien quantique.
|
||||
achievement.ae2.QNB.desc=Fabriquer un lien quantique.
|
||||
|
||||
// Stats
|
||||
stat.ae2.ItemsInserted=Eléments ajoutés aux disques ME
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
# AE2 Ore Dictionary
|
||||
# Materials for processing in other machines
|
||||
ore=ae2:ItemMaterial.CertusQuartzCrystal -> crystalCertusQuartz
|
||||
ore=ae2:ItemMaterial.FluixCrystal -> crystalFluix
|
||||
ore=ae2:ItemMaterial.PurifiedFluixCrystal -> crystalPureFluix
|
||||
ore=ae2:ItemMaterial.NetherQuartzDust -> dustNetherQuartz
|
||||
ore=ae2:ItemMaterial.CertusQuartzDust -> dustCertusQuartz
|
||||
ore=ae2:ItemMaterial.FluixDust -> dustFluix
|
||||
|
||||
# Ores of AE2
|
||||
ore=ae2:tile.OreQuartz -> oreCertusQuartz
|
||||
ore=ae2:tile.OreQuartzCharged -> oreCertusQuartz
|
||||
|
||||
# Parts to be used
|
||||
ore= ae2:ItemPart.SemiDarkMonitor -> itemIlluminatedPanel
|
||||
ore= ae2:ItemPart.Monitor -> itemIlluminatedPanel
|
||||
ore= ae2:ItemPart.DarkMonitor -> itemIlluminatedPanel
|
||||
@@ -1,11 +0,0 @@
|
||||
# Forge Ore Dictionary
|
||||
# logWood, slabWood, stairWood, treeSapling, treeLeaves,
|
||||
# oreGold, oreIron, oreLapis, oreDiamond, oreRedstone, oreEmerald, oreQuartz, oreCoal,
|
||||
# stone, cobblestone, record, stickWood, plankWood,
|
||||
# dyeBlack, dyeRed, dyeGreen, dyeBrown, dyeBlue, dyePurple, dyeCyan, dyeLightGray, dyeGray, dyePink, dyeLime, dyeYellow, dyeLightBlue, dyeMagenta, dyeOrange, dyeWhite
|
||||
|
||||
# Minecraft Ore Dict Entries
|
||||
# Renamed for less clashing
|
||||
ore=mc:quartz -> crystalNetherQuartz
|
||||
ore=mc:wool:* -> blockWool
|
||||
ore=mc:stained_hardened_clay:* -> blockStainedHardenedClay
|
||||
@@ -328,6 +328,7 @@
|
||||
<h4 id="import">Import</h4>
|
||||
<ul>
|
||||
<li>lets you load an additional recipe file</li>
|
||||
<li>this works with subdirectories, but the path needs to be always a relative path to the root recipe directory</li>
|
||||
<li>
|
||||
AE2: import all recipes for stairs<br />
|
||||
<code>import = stairs.recipe</code>
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
alias=mc -> minecraft
|
||||
alias=ae2 -> appliedenergistics2
|
||||
@@ -1,69 +0,0 @@
|
||||
|
||||
shaped=
|
||||
ae2:BlockQuartzGlass mc:glowstone_dust ae2:BlockQuartzGlass,
|
||||
mc:glowstone_dust certusCrystal mc:glowstone_dust,
|
||||
mc:iron_ingot mc:iron_ingot mc:iron_ingot
|
||||
-> ae2:ItemMaterial.BlankPattern
|
||||
|
||||
shapeless=
|
||||
ae2:ItemMaterial.BasicCard mc:crafting_table
|
||||
-> ae2:ItemMaterial.CardCrafting
|
||||
|
||||
shaped=
|
||||
ae2:ItemMaterial.FormationCore mc:iron_ingot _,
|
||||
mc:iron_ingot ae2:ItemMaterial.Cell4kPart _,
|
||||
_ _ ae2:BlockEnergyCell
|
||||
-> ae2:ToolColorApplicator
|
||||
|
||||
shapeless=
|
||||
monitor interface ae2:ItemMaterial.EngProcessor
|
||||
-> ae2:ItemPart.InterfaceTerminal
|
||||
|
||||
shapeless=
|
||||
ae2:ItemPart.CraftingTerminal ae2:ItemMaterial.EngProcessor
|
||||
-> ae2:ItemPart.PatternTerminal
|
||||
|
||||
shaped=
|
||||
mc:iron_ingot ae2:BlockQuartzGlass mc:iron_ingot,
|
||||
ae2:ItemMaterial.AnnihilationCore mc:crafting_table ae2:ItemMaterial.FormationCore,
|
||||
mc:iron_ingot ae2:BlockQuartzGlass mc:iron_ingot
|
||||
-> ae2:BlockMolecularAssembler
|
||||
|
||||
shaped=
|
||||
mc:iron_ingot ae2:ItemMaterial.CalcProcessor mc:iron_ingot,
|
||||
cable ae2:ItemMaterial.LogicProcessor cable,
|
||||
mc:iron_ingot ae2:ItemMaterial.CalcProcessor mc:iron_ingot
|
||||
-> ae2:BlockCraftingUnit:0
|
||||
|
||||
# co processor
|
||||
shapeless=
|
||||
ae2:BlockCraftingUnit:0
|
||||
ae2:ItemMaterial.EngProcessor
|
||||
-> ae2:BlockCraftingUnit:1
|
||||
|
||||
shapeless=
|
||||
ae2:BlockCraftingUnit:0
|
||||
ae2:ItemPart.StorageMonitor
|
||||
-> ae2:BlockCraftingMonitor
|
||||
|
||||
# various storage sizes
|
||||
|
||||
shapeless=
|
||||
ae2:BlockCraftingUnit:0
|
||||
ae2:ItemMaterial.Cell1kPart
|
||||
-> ae2:BlockCraftingStorage:0
|
||||
|
||||
shapeless=
|
||||
ae2:BlockCraftingUnit:0
|
||||
ae2:ItemMaterial.Cell4kPart
|
||||
-> ae2:BlockCraftingStorage:1
|
||||
|
||||
shapeless=
|
||||
ae2:BlockCraftingUnit:0
|
||||
ae2:ItemMaterial.Cell16kPart
|
||||
-> ae2:BlockCraftingStorage:2
|
||||
|
||||
shapeless=
|
||||
ae2:BlockCraftingUnit:0
|
||||
ae2:ItemMaterial.Cell64kPart
|
||||
-> ae2:BlockCraftingStorage:3
|
||||
@@ -0,0 +1,8 @@
|
||||
shaped=
|
||||
ae2:BlockQuartz,
|
||||
ae2:BlockQuartz
|
||||
-> 2 ae2:BlockQuartzPillar
|
||||
|
||||
shaped=
|
||||
ae2:BlockQuartz ae2:BlockQuartz
|
||||
-> 2 ae2:BlockQuartzChiseled
|
||||
@@ -0,0 +1,30 @@
|
||||
# Raw Storage Blocks
|
||||
shaped=
|
||||
oredictionary:crystalCertusQuartz oredictionary:crystalCertusQuartz,
|
||||
oredictionary:crystalCertusQuartz oredictionary:crystalCertusQuartz
|
||||
-> ae2:BlockQuartz
|
||||
|
||||
shaped=
|
||||
oredictionary:crystalFluix oredictionary:crystalFluix,
|
||||
oredictionary:crystalFluix oredictionary:crystalFluix
|
||||
-> ae2:BlockFluix
|
||||
|
||||
|
||||
# Pure Storage Blocks
|
||||
shaped=
|
||||
ae2:ItemMaterial.PurifiedNetherQuartzCrystal ae2:ItemMaterial.PurifiedNetherQuartzCrystal ae2:ItemMaterial.PurifiedNetherQuartzCrystal,
|
||||
ae2:ItemMaterial.PurifiedNetherQuartzCrystal _ ae2:ItemMaterial.PurifiedNetherQuartzCrystal,
|
||||
ae2:ItemMaterial.PurifiedNetherQuartzCrystal ae2:ItemMaterial.PurifiedNetherQuartzCrystal ae2:ItemMaterial.PurifiedNetherQuartzCrystal
|
||||
-> mc:quartz_block
|
||||
|
||||
shaped=
|
||||
ae2:ItemMaterial.PurifiedCertusQuartzCrystal ae2:ItemMaterial.PurifiedCertusQuartzCrystal ae2:ItemMaterial.PurifiedCertusQuartzCrystal,
|
||||
ae2:ItemMaterial.PurifiedCertusQuartzCrystal _ ae2:ItemMaterial.PurifiedCertusQuartzCrystal,
|
||||
ae2:ItemMaterial.PurifiedCertusQuartzCrystal ae2:ItemMaterial.PurifiedCertusQuartzCrystal ae2:ItemMaterial.PurifiedCertusQuartzCrystal
|
||||
-> ae2:BlockQuartz
|
||||
|
||||
shaped=
|
||||
ae2:ItemMaterial.PurifiedFluixCrystal ae2:ItemMaterial.PurifiedFluixCrystal ae2:ItemMaterial.PurifiedFluixCrystal,
|
||||
ae2:ItemMaterial.PurifiedFluixCrystal _ ae2:ItemMaterial.PurifiedFluixCrystal,
|
||||
ae2:ItemMaterial.PurifiedFluixCrystal ae2:ItemMaterial.PurifiedFluixCrystal ae2:ItemMaterial.PurifiedFluixCrystal
|
||||
-> ae2:BlockFluix
|
||||
@@ -0,0 +1,7 @@
|
||||
shaped=
|
||||
ae2:ItemMaterial.CertusQuartzCrystalCharged mc:iron_ingot
|
||||
-> 2 ae2:BlockQuartzTorch
|
||||
|
||||
shaped=
|
||||
netherCrystal mc:iron_ingot
|
||||
-> ae2:BlockLightDetector
|
||||
@@ -0,0 +1,7 @@
|
||||
import=decorative/certus.recipe
|
||||
import=decorative/crystals.recipe
|
||||
import=decorative/fixtures.recipe
|
||||
import=decorative/quartzglass.recipe
|
||||
import=decorative/skystone.recipe
|
||||
import=decorative/slabs.recipe
|
||||
import=decorative/stairs.recipe
|
||||
@@ -0,0 +1,9 @@
|
||||
shaped=
|
||||
dustQuartz glass dustQuartz,
|
||||
glass dustQuartz glass,
|
||||
dustQuartz glass dustQuartz
|
||||
-> 4 ae2:BlockQuartzGlass
|
||||
|
||||
shaped=
|
||||
mc:glowstone_dust ae2:BlockQuartzGlass mc:glowstone_dust
|
||||
-> ae2:BlockQuartzLamp
|
||||
@@ -0,0 +1,11 @@
|
||||
smelt=
|
||||
ae2:BlockSkyStone -> ae2:BlockSkyStone:1
|
||||
|
||||
shapeless=
|
||||
ae2:BlockSkyStone:1 -> ae2:BlockSkyStone:2
|
||||
|
||||
shapeless=
|
||||
ae2:BlockSkyStone:2 -> ae2:BlockSkyStone:3
|
||||
|
||||
shapeless=
|
||||
ae2:BlockSkyStone:3 -> ae2:BlockSkyStone:1
|
||||
+8
-8
@@ -1,47 +1,47 @@
|
||||
shaped=
|
||||
ae2:BlockQuartzChiseled _ _,
|
||||
ae2:BlockQuartzChiseled _ _,
|
||||
ae2:BlockQuartzChiseled ae2:BlockQuartzChiseled _,
|
||||
ae2:BlockQuartzChiseled ae2:BlockQuartzChiseled ae2:BlockQuartzChiseled
|
||||
-> 4 ae2:ChiseledQuartzStairBlock
|
||||
|
||||
shaped=
|
||||
ae2:BlockFluix _ _,
|
||||
ae2:BlockFluix _ _,
|
||||
ae2:BlockFluix ae2:BlockFluix _,
|
||||
ae2:BlockFluix ae2:BlockFluix ae2:BlockFluix
|
||||
-> 4 ae2:FluixStairBlock
|
||||
|
||||
shaped=
|
||||
ae2:BlockQuartzPillar _ _,
|
||||
ae2:BlockQuartzPillar _ _,
|
||||
ae2:BlockQuartzPillar ae2:BlockQuartzPillar _,
|
||||
ae2:BlockQuartzPillar ae2:BlockQuartzPillar ae2:BlockQuartzPillar
|
||||
-> 4 ae2:QuartzPillarStairBlock
|
||||
|
||||
shaped=
|
||||
ae2:BlockQuartz _ _,
|
||||
ae2:BlockQuartz _ _,
|
||||
ae2:BlockQuartz ae2:BlockQuartz _,
|
||||
ae2:BlockQuartz ae2:BlockQuartz ae2:BlockQuartz
|
||||
-> 4 ae2:QuartzStairBlock
|
||||
|
||||
shaped=
|
||||
ae2:BlockSkyStone _ _,
|
||||
ae2:BlockSkyStone _ _,
|
||||
ae2:BlockSkyStone ae2:BlockSkyStone _,
|
||||
ae2:BlockSkyStone ae2:BlockSkyStone ae2:BlockSkyStone
|
||||
-> 4 ae2:SkyStoneStairBlock
|
||||
|
||||
shaped=
|
||||
ae2:BlockSkyStone:1 _ _,
|
||||
ae2:BlockSkyStone:1 _ _,
|
||||
ae2:BlockSkyStone:1 ae2:BlockSkyStone:1 _,
|
||||
ae2:BlockSkyStone:1 ae2:BlockSkyStone:1 ae2:BlockSkyStone:1
|
||||
-> 4 ae2:SkyStoneBlockStairBlock
|
||||
|
||||
shaped=
|
||||
ae2:BlockSkyStone:2 _ _,
|
||||
ae2:BlockSkyStone:2 _ _,
|
||||
ae2:BlockSkyStone:2 ae2:BlockSkyStone:2 _,
|
||||
ae2:BlockSkyStone:2 ae2:BlockSkyStone:2 ae2:BlockSkyStone:2
|
||||
-> 4 ae2:SkyStoneBrickStairBlock
|
||||
|
||||
shaped=
|
||||
ae2:BlockSkyStone:3 _ _,
|
||||
ae2:BlockSkyStone:3 _ _,
|
||||
ae2:BlockSkyStone:3 ae2:BlockSkyStone:3 _,
|
||||
ae2:BlockSkyStone:3 ae2:BlockSkyStone:3 ae2:BlockSkyStone:3
|
||||
-> 4 ae2:SkyStoneSmallBrickStairBlock
|
||||
@@ -1,96 +0,0 @@
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeWhite ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.White
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeBlack ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Black
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeRed ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Red
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeGreen ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Green
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeBrown ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Brown
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeBlue ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Blue
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyePurple ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Purple
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeCyan ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Cyan
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeLightGray ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.LightGray
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeGray ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Gray
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyePink ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Pink
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeLime ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Lime
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeYellow ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Yellow
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeLightBlue ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.LightBlue
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeMagenta ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Magenta
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeOrange ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Orange
|
||||
@@ -1,96 +0,0 @@
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeWhite ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.White
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeBlack ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Black
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeRed ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Red
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeGreen ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Green
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeBrown ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Brown
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeBlue ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Blue
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyePurple ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Purple
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeCyan ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Cyan
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeLightGray ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.LightGray
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeGray ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Gray
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyePink ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Pink
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeLime ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Lime
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeYellow ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Yellow
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeLightBlue ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.LightBlue
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeMagenta ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Magenta
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeOrange ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Orange
|
||||
@@ -1,96 +0,0 @@
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeWhite ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.White
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeBlack ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Black
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeRed ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Red
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeGreen ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Green
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeBrown ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Brown
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeBlue ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Blue
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyePurple ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Purple
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeCyan ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Cyan
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeLightGray ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.LightGray
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeGray ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Gray
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyePink ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Pink
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeLime ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Lime
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeYellow ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Yellow
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeLightBlue ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.LightBlue
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeMagenta ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Magenta
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeOrange ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Orange
|
||||
@@ -1,96 +0,0 @@
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeWhite ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.White
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeBlack ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Black
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeRed ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Red
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeGreen ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Green
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeBrown ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Brown
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeBlue ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Blue
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyePurple ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Purple
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeCyan ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Cyan
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeLightGray ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.LightGray
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeGray ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Gray
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyePink ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Pink
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeLime ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Lime
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeYellow ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Yellow
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeLightBlue ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.LightBlue
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeMagenta ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Magenta
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeOrange ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Orange
|
||||
@@ -0,0 +1,21 @@
|
||||
group= oredictionary:itemIlluminatedPanel -> monitor
|
||||
group= ae2:BlockInterface ae2:ItemPart.Interface -> interface
|
||||
|
||||
group= ae2:ToolCertusQuartzCuttingKnife:* ae2:ToolNetherQuartzCuttingKnife:* -> knife
|
||||
group= ae2:ToolCertusQuartzWrench ae2:ToolNetherQuartzWrench -> wrench
|
||||
|
||||
group= ae2:CableGlass ae2:CableCovered ae2:CableSmart -> cable
|
||||
group= ae2:CableDense -> densecable
|
||||
|
||||
group= mc:iron_ingot oredictionary:ingotCopper oredictionary:ingotTin oredictionary:ingotSilver oredictionary:ingotLead oredictionary:ingotBronze oredictionary:ingotBrass oredictionary:ingotNickel oredictionary:ingotInvar oredictionary:ingotAluminium -> metalIngots
|
||||
group= oredictionary:dustEnder oredictionary:dustEnderPearl -> dustEnder
|
||||
|
||||
group=oredictionary:blockGlass oredictionary:glass mc:glass -> glass
|
||||
group=oredictionary:wool mc:wool:* -> wool
|
||||
|
||||
group=oredictionary:crystalCertusQuartz oredictionary:crystalNetherQuartz ae2:ItemMaterial.CertusQuartzCrystalCharged -> crystalQuartz
|
||||
group=oredictionary:dustCertusQuartz oredictionary:dustNetherQuartz -> dustQuartz
|
||||
|
||||
group=oredictionary:crystalCertusQuartz ae2:ItemMaterial.CertusQuartzCrystalCharged ae2:ItemMaterial.PurifiedCertusQuartzCrystal -> certusCrystal
|
||||
group=oredictionary:crystalNetherQuartz ae2:ItemMaterial.PurifiedNetherQuartzCrystal -> netherCrystal
|
||||
group=oredictionary:crystalFluix ae2:ItemMaterial.PurifiedFluixCrystal -> fluixCrystal
|
||||
@@ -1,14 +0,0 @@
|
||||
|
||||
# Quantum Link Chamber
|
||||
shaped=
|
||||
ae2:BlockQuartzGlass ae2:ItemMaterial.FluixPearl ae2:BlockQuartzGlass,
|
||||
ae2:ItemMaterial.FluixPearl _ ae2:ItemMaterial.FluixPearl,
|
||||
ae2:BlockQuartzGlass ae2:ItemMaterial.FluixPearl ae2:BlockQuartzGlass,
|
||||
-> ae2:BlockQuantumLinkChamber
|
||||
|
||||
# Quantum Ring
|
||||
shaped=
|
||||
mc:iron_ingot ae2:ItemMaterial.LogicProcessor mc:iron_ingot,
|
||||
ae2:ItemMaterial.EngProcessor ae2:BlockEnergyCell densecable,
|
||||
mc:iron_ingot ae2:ItemMaterial.LogicProcessor mc:iron_ingot,
|
||||
-> ae2:BlockQuantumRing
|
||||
@@ -1,20 +1,3 @@
|
||||
|
||||
alias=mc -> minecraft
|
||||
alias=ae2 -> appliedenergistics2
|
||||
|
||||
group= mc:iron_ingot oredictionary:ingotCopper oredictionary:ingotTin oredictionary:ingotSilver oredictionary:ingotLead oredictionary:ingotBronze oredictionary:ingotBrass oredictionary:ingotNickel oredictionary:ingotInvar oredictionary:ingotAluminium -> metalIngots
|
||||
group= oredictionary:dustEnder oredictionary:dustEnderPearl -> dustEnder
|
||||
|
||||
group=oredictionary:blockGlass oredictionary:glass mc:glass -> glass
|
||||
group=oredictionary:wool mc:wool:* -> wool
|
||||
|
||||
group=oredictionary:crystalCertusQuartz oredictionary:crystalNetherQuartz ae2:ItemMaterial.CertusQuartzCrystalCharged -> crystalQuartz
|
||||
group=oredictionary:dustCertusQuartz oredictionary:dustNetherQuartz -> dustQuartz
|
||||
|
||||
group=oredictionary:crystalCertusQuartz ae2:ItemMaterial.CertusQuartzCrystalCharged ae2:ItemMaterial.PurifiedCertusQuartzCrystal -> certusCrystal
|
||||
group=oredictionary:crystalNetherQuartz ae2:ItemMaterial.PurifiedNetherQuartzCrystal -> netherCrystal
|
||||
group=oredictionary:crystalFluix ae2:ItemMaterial.PurifiedFluixCrystal -> fluixCrystal
|
||||
|
||||
# Crash on Issues
|
||||
crash=false
|
||||
|
||||
@@ -24,26 +7,15 @@ exceptions=false
|
||||
# Error on Missing Items ( default is no because AE2 allows you to enable/disable items without modifying recipes. )
|
||||
erroronmissing=true
|
||||
|
||||
group= oredictionary:itemIlluminatedPanel -> monitor
|
||||
group= ae2:BlockInterface ae2:ItemPart.Interface -> interface
|
||||
# Important, keep in this order
|
||||
import=aliases.recipe
|
||||
import=oredict.recipe
|
||||
import=groups.recipe
|
||||
|
||||
group= ae2:ToolCertusQuartzCuttingKnife:* ae2:ToolNetherQuartzCuttingKnife:* -> knife
|
||||
group= ae2:ToolCertusQuartzWrench ae2:ToolNetherQuartzWrench -> wrench
|
||||
|
||||
group= ae2:CableGlass ae2:CableCovered ae2:CableSmart -> cable
|
||||
group= ae2:CableDense -> densecable
|
||||
|
||||
import=tools.recipe
|
||||
import=process.recipe
|
||||
import=storagecells.recipe
|
||||
import=port.recipe
|
||||
import=new.recipe
|
||||
import=dyes_glass.recipe
|
||||
import=dyes_covered.recipe
|
||||
import=dyes_smart.recipe
|
||||
import=dyes_dense.recipe
|
||||
import=paint_balls.recipe
|
||||
import=crafting.recipe
|
||||
import=vanilla_enhance.recipe
|
||||
import=stairs.recipe
|
||||
import=slabs.recipe
|
||||
# All actual recipes
|
||||
import=decorative/index.recipe
|
||||
import=materials/index.recipe
|
||||
import=misc/index.recipe
|
||||
import=network/index.recipe
|
||||
import=processing/index.recipe
|
||||
import=tools/index.recipe
|
||||
@@ -0,0 +1,35 @@
|
||||
shaped=
|
||||
mc:gold_ingot mc:iron_ingot _,
|
||||
mc:redstone ae2:ItemMaterial.CalcProcessor mc:iron_ingot,
|
||||
mc:gold_ingot mc:iron_ingot _
|
||||
-> 2 ae2:ItemMaterial.BasicCard
|
||||
|
||||
shaped=
|
||||
oredictionary:gemDiamond mc:iron_ingot _,
|
||||
mc:redstone ae2:ItemMaterial.CalcProcessor mc:iron_ingot,
|
||||
oredictionary:gemDiamond mc:iron_ingot _
|
||||
-> 2 ae2:ItemMaterial.AdvCard
|
||||
|
||||
shapeless=
|
||||
ae2:ItemMaterial.BasicCard certusCrystal
|
||||
-> ae2:ItemMaterial.CardCapacity
|
||||
|
||||
shapeless=
|
||||
ae2:ItemMaterial.BasicCard mc:redstone_torch
|
||||
-> ae2:ItemMaterial.CardRedstone
|
||||
|
||||
shapeless=
|
||||
ae2:ItemMaterial.AdvCard wool
|
||||
-> ae2:ItemMaterial.CardFuzzy
|
||||
|
||||
shapeless=
|
||||
ae2:ItemMaterial.AdvCard mc:redstone_torch
|
||||
-> ae2:ItemMaterial.CardInverter
|
||||
|
||||
shapeless=
|
||||
ae2:ItemMaterial.AdvCard fluixCrystal
|
||||
-> ae2:ItemMaterial.CardSpeed
|
||||
|
||||
shapeless=
|
||||
ae2:ItemMaterial.BasicCard mc:crafting_table
|
||||
-> ae2:ItemMaterial.CardCrafting
|
||||
@@ -0,0 +1,15 @@
|
||||
inscribe=
|
||||
mc:gold_ingot ae2:ItemMaterial.LogicProcessorPress
|
||||
-> ae2:ItemMaterial.LogicProcessorPrint
|
||||
|
||||
inscribe=
|
||||
ae2:ItemMaterial.PurifiedCertusQuartzCrystal ae2:ItemMaterial.CalcProcessorPress
|
||||
-> ae2:ItemMaterial.CalcProcessorPrint
|
||||
|
||||
inscribe=
|
||||
oredictionary:gemDiamond ae2:ItemMaterial.EngProcessorPress
|
||||
-> ae2:ItemMaterial.EngProcessorPrint
|
||||
|
||||
inscribe=
|
||||
oredictionary:itemSilicon ae2:ItemMaterial.SiliconPress
|
||||
-> ae2:ItemMaterial.SiliconPrint
|
||||
@@ -0,0 +1,7 @@
|
||||
shaped=
|
||||
netherCrystal oreDictionary:dustFluix ae2:ItemMaterial.LogicProcessor
|
||||
-> 2 ae2:ItemMaterial.AnnihilationCore
|
||||
|
||||
shaped=
|
||||
certusCrystal oreDictionary:dustFluix ae2:ItemMaterial.LogicProcessor
|
||||
-> 2 ae2:ItemMaterial.FormationCore
|
||||
@@ -0,0 +1,5 @@
|
||||
import=materials/cards.recipe
|
||||
import=materials/circuits.recipe
|
||||
import=materials/cores.recipe
|
||||
import=materials/presses.recipe
|
||||
import=materials/processors.recipe
|
||||
@@ -0,0 +1,15 @@
|
||||
inscribe=
|
||||
mc:iron_block ae2:ItemMaterial.LogicProcessorPress
|
||||
-> ae2:ItemMaterial.LogicProcessorPress
|
||||
|
||||
inscribe=
|
||||
mc:iron_block ae2:ItemMaterial.CalcProcessorPress
|
||||
-> ae2:ItemMaterial.CalcProcessorPress
|
||||
|
||||
inscribe=
|
||||
mc:iron_block ae2:ItemMaterial.EngProcessorPress
|
||||
-> ae2:ItemMaterial.EngProcessorPress
|
||||
|
||||
inscribe=
|
||||
mc:iron_block ae2:ItemMaterial.SiliconPress
|
||||
-> ae2:ItemMaterial.SiliconPress
|
||||
@@ -0,0 +1,11 @@
|
||||
press=
|
||||
mc:redstone ae2:ItemMaterial.LogicProcessorPrint ae2:ItemMaterial.SiliconPrint
|
||||
-> ae2:ItemMaterial.LogicProcessor
|
||||
|
||||
press=
|
||||
mc:redstone ae2:ItemMaterial.CalcProcessorPrint ae2:ItemMaterial.SiliconPrint
|
||||
-> ae2:ItemMaterial.CalcProcessor
|
||||
|
||||
press=
|
||||
mc:redstone ae2:ItemMaterial.EngProcessorPrint ae2:ItemMaterial.SiliconPrint
|
||||
-> ae2:ItemMaterial.EngProcessor
|
||||
@@ -0,0 +1,11 @@
|
||||
shaped=
|
||||
ae2:BlockSkyStone ae2:BlockSkyStone ae2:BlockSkyStone,
|
||||
ae2:BlockSkyStone _ ae2:BlockSkyStone,
|
||||
ae2:BlockSkyStone ae2:BlockSkyStone ae2:BlockSkyStone
|
||||
-> ae2:BlockSkyChest
|
||||
|
||||
shaped=
|
||||
ae2:BlockSkyStone:1 ae2:BlockSkyStone:1 ae2:BlockSkyStone:1,
|
||||
ae2:BlockSkyStone:1 _ ae2:BlockSkyStone:1,
|
||||
ae2:BlockSkyStone:1 ae2:BlockSkyStone:1 ae2:BlockSkyStone:1
|
||||
-> ae2:BlockSkyChest:1
|
||||
@@ -0,0 +1,15 @@
|
||||
shapeless=
|
||||
ae2:BlockQuartz
|
||||
-> 4 ae2:ItemMaterial.CertusQuartzCrystal
|
||||
|
||||
shapeless=
|
||||
ae2:BlockQuartzPillar
|
||||
-> 4 ae2:ItemMaterial.CertusQuartzCrystal
|
||||
|
||||
shapeless=
|
||||
ae2:BlockQuartzChiseled
|
||||
-> 4 ae2:ItemMaterial.CertusQuartzCrystal
|
||||
|
||||
shapeless=
|
||||
ae2:BlockFluix
|
||||
-> 4 ae2:ItemMaterial.FluixCrystal
|
||||
@@ -0,0 +1,5 @@
|
||||
shaped=
|
||||
oredictionary:dustFluix fluixCrystal oredictionary:dustFluix,
|
||||
fluixCrystal mc:ender_pearl fluixCrystal,
|
||||
oredictionary:dustFluix fluixCrystal oredictionary:dustFluix
|
||||
-> ae2:ItemMaterial.FluixPearl
|
||||
@@ -0,0 +1,17 @@
|
||||
shaped=
|
||||
_ oredictionary:stickWood _,
|
||||
oredictionary:stickWood _ oredictionary:stickWood,
|
||||
_ oredictionary:stickWood _
|
||||
-> ae2:ItemMaterial.WoodenGear
|
||||
|
||||
shaped=
|
||||
oredictionary:stickWood oredictionary:stickWood oredictionary:stickWood,
|
||||
_ _ oredictionary:stickWood,
|
||||
_ _ oredictionary:stickWood
|
||||
-> ae2:BlockCrank
|
||||
|
||||
shaped=
|
||||
oredictionary:stone oredictionary:gearWood oredictionary:stone,
|
||||
crystalQuartz oredictionary:stone crystalQuartz,
|
||||
oredictionary:cobblestone crystalQuartz oredictionary:cobblestone
|
||||
-> ae2:BlockGrinder
|
||||
@@ -0,0 +1,8 @@
|
||||
import=misc/chests.recipe
|
||||
import=misc/deconstruction.recipe
|
||||
import=misc/fluixpearl.recipe
|
||||
import=misc/grindstone.recipe
|
||||
import=misc/meteors.recipe
|
||||
import=misc/tinytnt.recipe
|
||||
import=misc/seeds.recipe
|
||||
import=misc/vanilla.recipe
|
||||
@@ -0,0 +1,5 @@
|
||||
shaped=
|
||||
_ mc:iron_ingot _,
|
||||
mc:iron_ingot ae2:ItemMaterial.CertusQuartzCrystalCharged mc:iron_ingot,
|
||||
_ mc:iron_ingot _
|
||||
-> ae2:BlockSkyCompass
|
||||
@@ -0,0 +1,3 @@
|
||||
shapeless= mc:sand oredictionary:dustNetherQuartz -> 2 ae2:ItemCrystalSeed.Nether
|
||||
shapeless= mc:sand oredictionary:dustCertusQuartz -> 2 ae2:ItemCrystalSeed.Certus
|
||||
shapeless= mc:sand oredictionary:dustFluix -> 2 ae2:ItemCrystalSeed.Fluix
|
||||
@@ -0,0 +1,4 @@
|
||||
shaped=
|
||||
dustQuartz mc:gunpowder,
|
||||
mc:gunpowder dustQuartz
|
||||
-> ae2:BlockTinyTNT
|
||||
@@ -0,0 +1,21 @@
|
||||
shaped=
|
||||
glass glass glass,
|
||||
netherCrystal netherCrystal netherCrystal,
|
||||
mc:wooden_slab:* mc:wooden_slab:* mc:wooden_slab:*
|
||||
-> mc:daylight_detector
|
||||
|
||||
shaped=
|
||||
_ mc:redstone_torch _,
|
||||
mc:redstone_torch netherCrystal mc:redstone_torch,
|
||||
oredictionary:stone oredictionary:stone oredictionary:stone
|
||||
-> mc:comparator
|
||||
|
||||
shaped=
|
||||
ae2:ItemMaterial.IronNugget ae2:ItemMaterial.IronNugget ae2:ItemMaterial.IronNugget,
|
||||
ae2:ItemMaterial.IronNugget ae2:ItemMaterial.IronNugget ae2:ItemMaterial.IronNugget,
|
||||
ae2:ItemMaterial.IronNugget ae2:ItemMaterial.IronNugget ae2:ItemMaterial.IronNugget
|
||||
-> mc:iron_ingot
|
||||
|
||||
shapeless=
|
||||
mc:iron_ingot
|
||||
-> 9 ae2:ItemMaterial.IronNugget
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
shaped=
|
||||
wool ae2:ItemMaterial.CalcProcessor wool,
|
||||
mc:iron_ingot mc:chest mc:iron_ingot,
|
||||
mc:iron_ingot mc:iron_ingot mc:iron_ingot
|
||||
-> ae2:BlockCellWorkbench
|
||||
@@ -0,0 +1,5 @@
|
||||
shaped=
|
||||
ae2:BlockSkyStone:1 ae2:ItemMaterial.PurifiedFluixCrystal ae2:BlockSkyStone:1,
|
||||
ae2:ItemMaterial.PurifiedFluixCrystal ae2:ItemMaterial.EngProcessor ae2:ItemMaterial.PurifiedFluixCrystal,
|
||||
ae2:BlockSkyStone:1 ae2:ItemMaterial.PurifiedFluixCrystal ae2:BlockSkyStone:1
|
||||
-> ae2:BlockController
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
shaped=
|
||||
mc:iron_ingot cable mc:iron_ingot,
|
||||
ae2:BlockQuartzGlass ae2:BlockFluix ae2:BlockQuartzGlass,
|
||||
mc:iron_ingot cable mc:iron_ingot
|
||||
-> ae2:BlockQuartzGrowthAccelerator
|
||||
|
||||
shaped=
|
||||
mc:iron_ingot fluixCrystal mc:iron_ingot,
|
||||
mc:iron_ingot _ _,
|
||||
mc:iron_ingot fluixCrystal mc:iron_ingot
|
||||
-> ae2:BlockCharger
|
||||
@@ -0,0 +1,23 @@
|
||||
shaped=
|
||||
mc:iron_ingot mc:iron_ingot mc:iron_ingot,
|
||||
mc:iron_ingot mc:furnace mc:iron_ingot,
|
||||
mc:iron_ingot ae2:BlockEnergyAcceptor mc:iron_ingot
|
||||
-> ae2:BlockVibrationChamber
|
||||
|
||||
shaped=
|
||||
mc:iron_ingot ae2:BlockQuartzGlass mc:iron_ingot,
|
||||
ae2:BlockQuartzGlass fluixCrystal ae2:BlockQuartzGlass,
|
||||
mc:iron_ingot ae2:BlockQuartzGlass mc:iron_ingot
|
||||
-> ae2:BlockEnergyAcceptor
|
||||
|
||||
shaped=
|
||||
certusCrystal oredictionary:dustFluix certusCrystal,
|
||||
oredictionary:dustFluix ae2:BlockQuartzGlass oredictionary:dustFluix,
|
||||
certusCrystal oredictionary:dustFluix certusCrystal
|
||||
-> ae2:BlockEnergyCell
|
||||
|
||||
shaped=
|
||||
ae2:BlockEnergyCell ae2:BlockEnergyCell ae2:BlockEnergyCell,
|
||||
ae2:BlockEnergyCell ae2:ItemMaterial.CalcProcessor ae2:BlockEnergyCell,
|
||||
ae2:BlockEnergyCell ae2:BlockEnergyCell ae2:BlockEnergyCell
|
||||
-> ae2:BlockDenseEnergyCell
|
||||
@@ -0,0 +1,11 @@
|
||||
import=network/blocks/cellworkbench.recipe
|
||||
import=network/blocks/controller.recipe
|
||||
import=network/blocks/crystal-processing.recipe
|
||||
import=network/blocks/energy.recipe
|
||||
import=network/blocks/inscribers.recipe
|
||||
import=network/blocks/interfaces.recipe
|
||||
import=network/blocks/io.recipe
|
||||
import=network/blocks/quantum.recipe
|
||||
import=network/blocks/security.recipe
|
||||
import=network/blocks/spatial-io.recipe
|
||||
import=network/blocks/storage.recipe
|
||||
@@ -0,0 +1,5 @@
|
||||
shaped=
|
||||
mc:iron_ingot mc:sticky_piston mc:iron_ingot,
|
||||
fluixCrystal _ mc:iron_ingot,
|
||||
mc:iron_ingot mc:sticky_piston mc:iron_ingot
|
||||
-> ae2:BlockInscriber
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
shapeless=
|
||||
ae2:ItemPart.Interface
|
||||
-> ae2:BlockInterface
|
||||
|
||||
shapeless=
|
||||
ae2:BlockInterface
|
||||
-> ae2:ItemPart.Interface
|
||||
|
||||
shaped=
|
||||
mc:iron_ingot glass mc:iron_ingot,
|
||||
ae2:ItemMaterial.AnnihilationCore _ ae2:ItemMaterial.FormationCore,
|
||||
mc:iron_ingot glass mc:iron_ingot
|
||||
-> ae2:BlockInterface
|
||||
@@ -0,0 +1,11 @@
|
||||
shaped=
|
||||
mc:iron_ingot glass mc:iron_ingot,
|
||||
glass oredictionary:dustFluix glass,
|
||||
mc:iron_ingot glass mc:iron_ingot
|
||||
-> ae2:BlockCondenser
|
||||
|
||||
shaped=
|
||||
glass glass glass,
|
||||
ae2:BlockDrive cable ae2:BlockDrive,
|
||||
mc:iron_ingot ae2:ItemMaterial.LogicProcessor mc:iron_ingot
|
||||
-> ae2:BlockIOPort
|
||||
@@ -0,0 +1,13 @@
|
||||
# Quantum Link Chamber
|
||||
shaped=
|
||||
ae2:BlockQuartzGlass ae2:ItemMaterial.FluixPearl ae2:BlockQuartzGlass,
|
||||
ae2:ItemMaterial.FluixPearl _ ae2:ItemMaterial.FluixPearl,
|
||||
ae2:BlockQuartzGlass ae2:ItemMaterial.FluixPearl ae2:BlockQuartzGlass,
|
||||
-> ae2:BlockQuantumLinkChamber
|
||||
|
||||
# Quantum Ring
|
||||
shaped=
|
||||
mc:iron_ingot ae2:ItemMaterial.LogicProcessor mc:iron_ingot,
|
||||
ae2:ItemMaterial.EngProcessor ae2:BlockEnergyCell densecable,
|
||||
mc:iron_ingot ae2:ItemMaterial.LogicProcessor mc:iron_ingot,
|
||||
-> ae2:BlockQuantumRing
|
||||
@@ -0,0 +1,5 @@
|
||||
shaped=
|
||||
mc:iron_ingot ae2:BlockChest mc:iron_ingot,
|
||||
cable ae2:ItemMaterial.Cell16kPart cable,
|
||||
mc:iron_ingot ae2:ItemMaterial.EngProcessor mc:iron_ingot
|
||||
-> ae2:BlockSecurity
|
||||
+11
@@ -0,0 +1,11 @@
|
||||
shaped=
|
||||
glass glass glass,
|
||||
cable ae2:BlockIOPort cable,
|
||||
mc:iron_ingot ae2:ItemMaterial.EngProcessor mc:iron_ingot
|
||||
-> ae2:BlockSpatialIOPort
|
||||
|
||||
shaped=
|
||||
ae2:BlockQuartzGlass cable ae2:BlockQuartzGlass,
|
||||
oredictionary:dustFluix fluixCrystal oredictionary:dustFluix,
|
||||
ae2:BlockQuartzGlass cable ae2:BlockQuartzGlass
|
||||
-> ae2:BlockSpatialPylon
|
||||
@@ -0,0 +1,11 @@
|
||||
shaped=
|
||||
glass ae2:ItemPart.Terminal glass,
|
||||
cable _ cable,
|
||||
mc:iron_ingot fluixCrystal mc:iron_ingot,
|
||||
-> ae2:BlockChest
|
||||
|
||||
shaped=
|
||||
mc:iron_ingot ae2:ItemMaterial.EngProcessor mc:iron_ingot,
|
||||
cable _ cable,
|
||||
mc:iron_ingot ae2:ItemMaterial.EngProcessor mc:iron_ingot
|
||||
-> ae2:BlockDrive
|
||||
@@ -0,0 +1,104 @@
|
||||
shapeless=
|
||||
ae2:CableGlass
|
||||
wool
|
||||
-> ae2:CableCovered.Fluix
|
||||
|
||||
shapeless=
|
||||
ae2:CableCovered mc:water_bucket
|
||||
-> ae2:CableCovered.Fluix
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeWhite ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.White
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeBlack ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Black
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeRed ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Red
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeGreen ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Green
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeBrown ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Brown
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeBlue ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Blue
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyePurple ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Purple
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeCyan ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Cyan
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeLightGray ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.LightGray
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeGray ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Gray
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyePink ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Pink
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeLime ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Lime
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeYellow ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Yellow
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeLightBlue ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.LightBlue
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeMagenta ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Magenta
|
||||
|
||||
shaped=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered,
|
||||
ae2:CableCovered oredictionary:dyeOrange ae2:CableCovered,
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
-> 8 ae2:CableCovered.Orange
|
||||
@@ -0,0 +1,104 @@
|
||||
shapeless=
|
||||
ae2:CableCovered ae2:CableCovered ae2:CableCovered ae2:CableCovered
|
||||
mc:redstone mc:glowstone_dust
|
||||
-> ae2:CableDense.Fluix
|
||||
|
||||
shapeless=
|
||||
ae2:CableDense mc:water_bucket
|
||||
-> ae2:CableDense.Fluix
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeWhite ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.White
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeBlack ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Black
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeRed ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Red
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeGreen ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Green
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeBrown ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Brown
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeBlue ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Blue
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyePurple ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Purple
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeCyan ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Cyan
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeLightGray ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.LightGray
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeGray ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Gray
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyePink ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Pink
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeLime ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Lime
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeYellow ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Yellow
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeLightBlue ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.LightBlue
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeMagenta ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Magenta
|
||||
|
||||
shaped=
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense,
|
||||
ae2:CableDense oredictionary:dyeOrange ae2:CableDense,
|
||||
ae2:CableDense ae2:CableDense ae2:CableDense
|
||||
-> 8 ae2:CableDense.Orange
|
||||
@@ -0,0 +1,103 @@
|
||||
shapeless=
|
||||
ae2:ItemPart.QuartzFiber fluixCrystal fluixCrystal
|
||||
-> 4 ae2:CableGlass.Fluix
|
||||
|
||||
shapeless=
|
||||
ae2:CableGlass mc:water_bucket
|
||||
-> ae2:CableGlass.Fluix
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeWhite ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.White
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeBlack ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Black
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeRed ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Red
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeGreen ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Green
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeBrown ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Brown
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeBlue ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Blue
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyePurple ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Purple
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeCyan ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Cyan
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeLightGray ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.LightGray
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeGray ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Gray
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyePink ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Pink
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeLime ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Lime
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeYellow ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Yellow
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeLightBlue ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.LightBlue
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeMagenta ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Magenta
|
||||
|
||||
shaped=
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass,
|
||||
ae2:CableGlass oredictionary:dyeOrange ae2:CableGlass,
|
||||
ae2:CableGlass ae2:CableGlass ae2:CableGlass
|
||||
-> 8 ae2:CableGlass.Orange
|
||||
@@ -0,0 +1,4 @@
|
||||
import=network/cables/covered.recipe
|
||||
import=network/cables/dense.recipe
|
||||
import=network/cables/glass.recipe
|
||||
import=network/cables/smart.recipe
|
||||
@@ -0,0 +1,104 @@
|
||||
shapeless=
|
||||
ae2:CableCovered
|
||||
mc:redstone mc:glowstone_dust
|
||||
-> ae2:CableSmart.Fluix
|
||||
|
||||
shapeless=
|
||||
ae2:CableSmart mc:water_bucket
|
||||
-> ae2:CableSmart.Fluix
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeWhite ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.White
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeBlack ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Black
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeRed ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Red
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeGreen ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Green
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeBrown ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Brown
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeBlue ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Blue
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyePurple ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Purple
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeCyan ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Cyan
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeLightGray ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.LightGray
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeGray ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Gray
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyePink ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Pink
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeLime ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Lime
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeYellow ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Yellow
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeLightBlue ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.LightBlue
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeMagenta ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Magenta
|
||||
|
||||
shaped=
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart,
|
||||
ae2:CableSmart oredictionary:dyeOrange ae2:CableSmart,
|
||||
ae2:CableSmart ae2:CableSmart ae2:CableSmart
|
||||
-> 8 ae2:CableSmart.Orange
|
||||
@@ -0,0 +1,5 @@
|
||||
shaped=
|
||||
ae2:BlockQuartzGlass mc:redstone ae2:BlockQuartzGlass,
|
||||
mc:redstone _ mc:redstone,
|
||||
mc:iron_ingot mc:iron_ingot mc:iron_ingot
|
||||
-> ae2:ItemMaterial.EmptyStorageCell
|
||||
@@ -0,0 +1,6 @@
|
||||
import=network/cells/empty.recipe
|
||||
import=network/cells/spatial-components.recipe
|
||||
import=network/cells/spatial.recipe
|
||||
import=network/cells/storage-components.recipe
|
||||
import=network/cells/storage.recipe
|
||||
import=network/cells/view.recipe
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
shaped=
|
||||
mc:glowstone_dust ae2:ItemMaterial.FluixPearl mc:glowstone_dust,
|
||||
ae2:ItemMaterial.FluixPearl ae2:ItemMaterial.EngProcessor ae2:ItemMaterial.FluixPearl,
|
||||
mc:glowstone_dust ae2:ItemMaterial.FluixPearl mc:glowstone_dust
|
||||
-> ae2:ItemMaterial.Cell2SpatialPart
|
||||
|
||||
shaped=
|
||||
mc:glowstone_dust ae2:ItemMaterial.Cell2SpatialPart mc:glowstone_dust,
|
||||
ae2:ItemMaterial.Cell2SpatialPart ae2:ItemMaterial.EngProcessor ae2:ItemMaterial.Cell2SpatialPart,
|
||||
mc:glowstone_dust ae2:ItemMaterial.Cell2SpatialPart mc:glowstone_dust
|
||||
-> ae2:ItemMaterial.Cell16SpatialPart
|
||||
|
||||
shaped=
|
||||
mc:glowstone_dust ae2:ItemMaterial.Cell16SpatialPart mc:glowstone_dust,
|
||||
ae2:ItemMaterial.Cell16SpatialPart ae2:ItemMaterial.EngProcessor ae2:ItemMaterial.Cell16SpatialPart,
|
||||
mc:glowstone_dust ae2:ItemMaterial.Cell16SpatialPart mc:glowstone_dust
|
||||
-> ae2:ItemMaterial.Cell128SpatialPart
|
||||
@@ -0,0 +1,26 @@
|
||||
shapeless=
|
||||
ae2:ItemMaterial.Cell2SpatialPart ae2:ItemMaterial.EmptyStorageCell -> ae2:ItemSpatialStorageCell.2Cubed
|
||||
|
||||
shapeless=
|
||||
ae2:ItemMaterial.Cell16SpatialPart ae2:ItemMaterial.EmptyStorageCell -> ae2:ItemSpatialStorageCell.16Cubed
|
||||
|
||||
shapeless=
|
||||
ae2:ItemMaterial.Cell128SpatialPart ae2:ItemMaterial.EmptyStorageCell -> ae2:ItemSpatialStorageCell.128Cubed
|
||||
|
||||
shaped=
|
||||
ae2:BlockQuartzGlass mc:redstone ae2:BlockQuartzGlass,
|
||||
mc:redstone ae2:ItemMaterial.Cell2SpatialPart mc:redstone,
|
||||
mc:iron_ingot mc:iron_ingot mc:iron_ingot
|
||||
-> ae2:ItemSpatialStorageCell.2Cubed
|
||||
|
||||
shaped=
|
||||
ae2:BlockQuartzGlass mc:redstone ae2:BlockQuartzGlass,
|
||||
mc:redstone ae2:ItemMaterial.Cell16SpatialPart mc:redstone,
|
||||
mc:iron_ingot mc:iron_ingot mc:iron_ingot
|
||||
-> ae2:ItemSpatialStorageCell.16Cubed
|
||||
|
||||
shaped=
|
||||
ae2:BlockQuartzGlass mc:redstone ae2:BlockQuartzGlass,
|
||||
mc:redstone ae2:ItemMaterial.Cell128SpatialPart mc:redstone,
|
||||
mc:iron_ingot mc:iron_ingot mc:iron_ingot
|
||||
-> ae2:ItemSpatialStorageCell.128Cubed
|
||||
+23
@@ -0,0 +1,23 @@
|
||||
shaped=
|
||||
mc:redstone certusCrystal mc:redstone,
|
||||
certusCrystal ae2:ItemMaterial.LogicProcessor certusCrystal,
|
||||
mc:redstone certusCrystal mc:redstone
|
||||
-> ae2:ItemMaterial.Cell1kPart
|
||||
|
||||
shaped=
|
||||
mc:redstone ae2:ItemMaterial.CalcProcessor mc:redstone,
|
||||
ae2:ItemMaterial.Cell1kPart ae2:BlockQuartzGlass ae2:ItemMaterial.Cell1kPart,
|
||||
mc:redstone ae2:ItemMaterial.Cell1kPart mc:redstone
|
||||
-> ae2:ItemMaterial.Cell4kPart
|
||||
|
||||
shaped=
|
||||
mc:glowstone_dust ae2:ItemMaterial.EngProcessor mc:glowstone_dust,
|
||||
ae2:ItemMaterial.Cell4kPart ae2:BlockQuartzGlass ae2:ItemMaterial.Cell4kPart,
|
||||
mc:glowstone_dust ae2:ItemMaterial.Cell4kPart mc:glowstone_dust
|
||||
-> ae2:ItemMaterial.Cell16kPart
|
||||
|
||||
shaped=
|
||||
mc:glowstone_dust ae2:ItemMaterial.EngProcessor mc:glowstone_dust,
|
||||
ae2:ItemMaterial.Cell16kPart ae2:BlockQuartzGlass ae2:ItemMaterial.Cell16kPart,
|
||||
mc:glowstone_dust ae2:ItemMaterial.Cell16kPart mc:glowstone_dust
|
||||
-> ae2:ItemMaterial.Cell64kPart
|
||||
@@ -0,0 +1,35 @@
|
||||
shapeless=
|
||||
ae2:ItemMaterial.Cell1kPart ae2:ItemMaterial.EmptyStorageCell -> ae2:ItemBasicStorageCell.1k
|
||||
|
||||
shapeless=
|
||||
ae2:ItemMaterial.Cell4kPart ae2:ItemMaterial.EmptyStorageCell -> ae2:ItemBasicStorageCell.4k
|
||||
|
||||
shapeless=
|
||||
ae2:ItemMaterial.Cell16kPart ae2:ItemMaterial.EmptyStorageCell -> ae2:ItemBasicStorageCell.16k
|
||||
|
||||
shapeless=
|
||||
ae2:ItemMaterial.Cell64kPart ae2:ItemMaterial.EmptyStorageCell -> ae2:ItemBasicStorageCell.64k
|
||||
|
||||
shaped=
|
||||
ae2:BlockQuartzGlass mc:redstone ae2:BlockQuartzGlass,
|
||||
mc:redstone ae2:ItemMaterial.Cell1kPart mc:redstone,
|
||||
mc:iron_ingot mc:iron_ingot mc:iron_ingot
|
||||
-> ae2:ItemBasicStorageCell.1k
|
||||
|
||||
shaped=
|
||||
ae2:BlockQuartzGlass mc:redstone ae2:BlockQuartzGlass,
|
||||
mc:redstone ae2:ItemMaterial.Cell4kPart mc:redstone,
|
||||
mc:iron_ingot mc:iron_ingot mc:iron_ingot
|
||||
-> ae2:ItemBasicStorageCell.4k
|
||||
|
||||
shaped=
|
||||
ae2:BlockQuartzGlass mc:redstone ae2:BlockQuartzGlass,
|
||||
mc:redstone ae2:ItemMaterial.Cell16kPart mc:redstone,
|
||||
mc:iron_ingot mc:iron_ingot mc:iron_ingot
|
||||
-> ae2:ItemBasicStorageCell.16k
|
||||
|
||||
shaped=
|
||||
ae2:BlockQuartzGlass mc:redstone ae2:BlockQuartzGlass,
|
||||
mc:redstone ae2:ItemMaterial.Cell64kPart mc:redstone,
|
||||
mc:iron_ingot mc:iron_ingot mc:iron_ingot
|
||||
-> ae2:ItemBasicStorageCell.64k
|
||||
@@ -0,0 +1,8 @@
|
||||
shapeless=
|
||||
certusCrystal ae2:ItemMaterial.EmptyStorageCell -> ae2:ItemViewCell
|
||||
|
||||
shaped=
|
||||
ae2:BlockQuartzGlass mc:redstone ae2:BlockQuartzGlass,
|
||||
mc:redstone certusCrystal mc:redstone,
|
||||
mc:iron_ingot mc:iron_ingot mc:iron_ingot
|
||||
-> ae2:ItemViewCell
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
shaped=
|
||||
mc:iron_ingot ae2:BlockQuartzGlass mc:iron_ingot,
|
||||
ae2:ItemMaterial.AnnihilationCore mc:crafting_table ae2:ItemMaterial.FormationCore,
|
||||
mc:iron_ingot ae2:BlockQuartzGlass mc:iron_ingot
|
||||
-> ae2:BlockMolecularAssembler
|
||||
@@ -0,0 +1,37 @@
|
||||
shaped=
|
||||
mc:iron_ingot ae2:ItemMaterial.CalcProcessor mc:iron_ingot,
|
||||
cable ae2:ItemMaterial.LogicProcessor cable,
|
||||
mc:iron_ingot ae2:ItemMaterial.CalcProcessor mc:iron_ingot
|
||||
-> ae2:BlockCraftingUnit:0
|
||||
|
||||
# co processor
|
||||
shapeless=
|
||||
ae2:BlockCraftingUnit:0
|
||||
ae2:ItemMaterial.EngProcessor
|
||||
-> ae2:BlockCraftingUnit:1
|
||||
|
||||
shapeless=
|
||||
ae2:BlockCraftingUnit:0
|
||||
ae2:ItemPart.StorageMonitor
|
||||
-> ae2:BlockCraftingMonitor
|
||||
|
||||
# various storage sizes
|
||||
shapeless=
|
||||
ae2:BlockCraftingUnit:0
|
||||
ae2:ItemMaterial.Cell1kPart
|
||||
-> ae2:BlockCraftingStorage:0
|
||||
|
||||
shapeless=
|
||||
ae2:BlockCraftingUnit:0
|
||||
ae2:ItemMaterial.Cell4kPart
|
||||
-> ae2:BlockCraftingStorage:1
|
||||
|
||||
shapeless=
|
||||
ae2:BlockCraftingUnit:0
|
||||
ae2:ItemMaterial.Cell16kPart
|
||||
-> ae2:BlockCraftingStorage:2
|
||||
|
||||
shapeless=
|
||||
ae2:BlockCraftingUnit:0
|
||||
ae2:ItemMaterial.Cell64kPart
|
||||
-> ae2:BlockCraftingStorage:3
|
||||
@@ -0,0 +1,3 @@
|
||||
import=network/crafting/assembler.recipe
|
||||
import=network/crafting/cpu.recipe
|
||||
import=network/crafting/patterns.recipe
|
||||
@@ -0,0 +1,5 @@
|
||||
shaped=
|
||||
ae2:BlockQuartzGlass mc:glowstone_dust ae2:BlockQuartzGlass,
|
||||
mc:glowstone_dust certusCrystal mc:glowstone_dust,
|
||||
mc:iron_ingot mc:iron_ingot mc:iron_ingot
|
||||
-> ae2:ItemMaterial.BlankPattern
|
||||
@@ -0,0 +1,6 @@
|
||||
import=network/blocks/index.recipe
|
||||
import=network/cables/index.recipe
|
||||
import=network/cells/index.recipe
|
||||
import=network/crafting/index.recipe
|
||||
import=network/parts/index.recipe
|
||||
import=network/wireless.recipe
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
shapeless=
|
||||
metalIngots knife
|
||||
-> 3 ae2:ItemPart.CableAnchor
|
||||
@@ -0,0 +1,3 @@
|
||||
shapeless=
|
||||
ae2:ItemMaterial.CalcProcessor mc:redstone_torch
|
||||
-> ae2:ItemPart.LevelEmitter
|
||||
@@ -0,0 +1,10 @@
|
||||
import=network/parts/cable-anchor.recipe
|
||||
import=network/parts/emitters.recipe
|
||||
import=network/parts/io-buses.recipe
|
||||
import=network/parts/monitors.recipe
|
||||
import=network/parts/panels.recipe
|
||||
import=network/parts/planes.recipe
|
||||
import=network/parts/quartz-fiber.recipe
|
||||
import=network/parts/terminals.recipe
|
||||
import=network/parts/toggle-buses.recipe
|
||||
import=network/parts/tunnels.recipe
|
||||
@@ -0,0 +1,13 @@
|
||||
shaped=
|
||||
mc:iron_ingot ae2:ItemMaterial.FormationCore mc:iron_ingot,
|
||||
_ mc:piston _
|
||||
-> ae2:ItemPart.ExportBus
|
||||
|
||||
shaped=
|
||||
_ ae2:ItemMaterial.AnnihilationCore _,
|
||||
mc:iron_ingot mc:sticky_piston mc:iron_ingot
|
||||
-> ae2:ItemPart.ImportBus
|
||||
|
||||
shapeless=
|
||||
interface mc:sticky_piston mc:piston
|
||||
-> ae2:ItemPart.StorageBus
|
||||
@@ -0,0 +1,7 @@
|
||||
shapeless=
|
||||
ae2:ItemPart.LevelEmitter monitor
|
||||
-> ae2:ItemPart.StorageMonitor
|
||||
|
||||
shapeless=
|
||||
ae2:ItemMaterial.AnnihilationCore ae2:ItemPart.StorageMonitor ae2:ItemMaterial.FormationCore
|
||||
-> ae2:ItemPart.ConversionMonitor
|
||||
@@ -0,0 +1,17 @@
|
||||
shaped=
|
||||
_ mc:glowstone_dust ae2:BlockQuartzGlass,
|
||||
mc:iron_ingot mc:redstone ae2:BlockQuartzGlass,
|
||||
_ mc:glowstone_dust ae2:BlockQuartzGlass
|
||||
-> 3 ae2:ItemPart.SemiDarkMonitor
|
||||
|
||||
shapeless=
|
||||
ae2:ItemPart.DarkMonitor
|
||||
-> ae2:ItemPart.SemiDarkMonitor
|
||||
|
||||
shapeless=
|
||||
ae2:ItemPart.SemiDarkMonitor
|
||||
-> ae2:ItemPart.Monitor
|
||||
|
||||
shapeless=
|
||||
ae2:ItemPart.Monitor
|
||||
-> ae2:ItemPart.DarkMonitor
|
||||
@@ -0,0 +1,25 @@
|
||||
shaped=
|
||||
fluixCrystal fluixCrystal fluixCrystal,
|
||||
mc:iron_ingot ae2:ItemMaterial.FormationCore mc:iron_ingot
|
||||
-> ae2:ItemPart.FormationPlane
|
||||
|
||||
shaped=
|
||||
fluixCrystal fluixCrystal fluixCrystal,
|
||||
mc:iron_ingot ae2:ItemMaterial.AnnihilationCore mc:iron_ingot
|
||||
-> ae2:ItemPart.AnnihilationPlane
|
||||
|
||||
shaped=
|
||||
mc:iron_ingot fluixCrystal,
|
||||
ae2:ItemMaterial.AnnihilationCore fluixCrystal,
|
||||
mc:iron_ingot fluixCrystal
|
||||
-> ae2:ItemPart.AnnihilationPlane
|
||||
|
||||
shaped=
|
||||
mc:iron_ingot fluixCrystal,
|
||||
ae2:ItemMaterial.FormationCore fluixCrystal,
|
||||
mc:iron_ingot fluixCrystal
|
||||
-> ae2:ItemPart.FormationPlane
|
||||
|
||||
shapeless=
|
||||
ae2:ItemPart.AnnihilationPlane ae2:ItemMaterial.FluixPearl
|
||||
-> ae2:ItemPart.IdentityAnnihilationPlane
|
||||
+5
@@ -0,0 +1,5 @@
|
||||
shaped=
|
||||
glass glass glass,
|
||||
dustQuartz dustQuartz dustQuartz,
|
||||
glass glass glass
|
||||
-> 3 ae2:ItemPart.QuartzFiber
|
||||
@@ -0,0 +1,15 @@
|
||||
shapeless=
|
||||
monitor ae2:ItemMaterial.FormationCore ae2:ItemMaterial.AnnihilationCore ae2:ItemMaterial.LogicProcessor
|
||||
-> ae2:ItemPart.Terminal
|
||||
|
||||
shapeless=
|
||||
ae2:ItemPart.Terminal mc:crafting_table ae2:ItemMaterial.CalcProcessor
|
||||
-> ae2:ItemPart.CraftingTerminal
|
||||
|
||||
shapeless=
|
||||
monitor interface ae2:ItemMaterial.EngProcessor
|
||||
-> ae2:ItemPart.InterfaceTerminal
|
||||
|
||||
shapeless=
|
||||
ae2:ItemPart.CraftingTerminal ae2:ItemMaterial.EngProcessor
|
||||
-> ae2:ItemPart.PatternTerminal
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
shaped=
|
||||
_ mc:redstone _,
|
||||
cable mc:lever cable,
|
||||
_ mc:redstone _
|
||||
-> ae2:ItemPart.ToggleBus
|
||||
|
||||
shapeless=
|
||||
ae2:ItemPart.ToggleBus
|
||||
-> ae2:ItemPart.InvertedToggleBus
|
||||
|
||||
shapeless=
|
||||
ae2:ItemPart.InvertedToggleBus
|
||||
-> ae2:ItemPart.ToggleBus
|
||||
@@ -0,0 +1,5 @@
|
||||
shaped=
|
||||
_ mc:iron_ingot _,
|
||||
mc:iron_ingot ae2:ItemMaterial.EngProcessor mc:iron_ingot,
|
||||
fluixCrystal fluixCrystal fluixCrystal
|
||||
-> ae2:ItemPart.P2PTunnelME
|
||||
@@ -0,0 +1,22 @@
|
||||
shaped=
|
||||
_ ae2:ItemMaterial.FluixPearl _,
|
||||
mc:iron_ingot ae2:ItemPart.QuartzFiber mc:iron_ingot,
|
||||
_ mc:iron_ingot _
|
||||
-> ae2:ItemMaterial.Wireless
|
||||
|
||||
shaped=
|
||||
ae2:ItemMaterial.Wireless,
|
||||
ae2:ItemMaterial.CalcProcessor,
|
||||
cable
|
||||
-> ae2:BlockWireless
|
||||
|
||||
shaped=
|
||||
ae2:ItemMaterial.Wireless,
|
||||
ae2:ItemPart.Terminal,
|
||||
ae2:BlockDenseEnergyCell
|
||||
-> ae2:ToolWirelessTerminal
|
||||
|
||||
shaped=
|
||||
oredictionary:dustFluix certusCrystal dustEnder,
|
||||
mc:iron_ingot mc:iron_ingot mc:iron_ingot,
|
||||
-> 2 ae2:ItemMaterial.WirelessBooster
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user