Diff
checker
Text
Text
Images
Documents
Excel
Folders
Legal
Enterprise
Desktop
Pricing
Sign in
Download Diffchecker Desktop
Compare text
Find the difference between two text files
Tools
History
Real-time editor
Hide unchanged lines
Disable line wrap
Layout
Split
Unified
Diff precision
Smart
Word
Char
Syntax highlighting
Choose syntax
Ignore
Transform text
Go to first change
Edit input
Diffchecker Desktop
The most secure way to run Diffchecker. Get the Diffchecker Desktop app: your diffs never leave your computer!
Get Desktop
Untitled diff
Created
11 years ago
Diff never expires
Clear
Export
Share
Explain
5 removals
Lines
Total
Removed
Characters
Total
Removed
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
220 lines
Copy
5 additions
Lines
Total
Added
Characters
Total
Added
To continue using this feature, upgrade to
Diff
checker
Pro
View Pricing
220 lines
Copy
package buildcraft.krapht.pipes;
package buildcraft.krapht.pipes;
import aan;
import aan;
import buildcraft.api.EntityPassiveItem;
import buildcraft.api.EntityPassiveItem;
import buildcraft.api.Orientations;
import buildcraft.api.Orientations;
import buildcraft.api.Position;
import buildcraft.api.Position;
import buildcraft.core.Utils;
import buildcraft.core.Utils;
Copy
Copied
Copy
Copied
import buildcraft.
factory.TileAutoWorkbench
;
import buildcraft.
api.ISpecialInventory
;
import buildcraft.krapht.CraftingTemplate;
import buildcraft.krapht.CraftingTemplate;
import buildcraft.krapht.IBuildCraftProxy;
import buildcraft.krapht.IBuildCraftProxy;
import buildcraft.krapht.ICraftItems;
import buildcraft.krapht.ICraftItems;
import buildcraft.krapht.IRequestItems;
import buildcraft.krapht.IRequestItems;
import buildcraft.krapht.LogisticsOrderManager;
import buildcraft.krapht.LogisticsOrderManager;
import buildcraft.krapht.LogisticsPromise;
import buildcraft.krapht.LogisticsPromise;
import buildcraft.krapht.LogisticsRequest;
import buildcraft.krapht.LogisticsRequest;
import buildcraft.krapht.LogisticsTransaction;
import buildcraft.krapht.LogisticsTransaction;
import buildcraft.krapht.RoutedPipe;
import buildcraft.krapht.RoutedPipe;
import buildcraft.krapht.SimpleServiceLocator;
import buildcraft.krapht.SimpleServiceLocator;
import buildcraft.krapht.logic.LogicCrafting;
import buildcraft.krapht.logic.LogicCrafting;
import buildcraft.krapht.routing.IRouter;
import buildcraft.krapht.routing.IRouter;
import buildcraft.logisticspipes.IRoutedItem;
import buildcraft.logisticspipes.IRoutedItem;
import buildcraft.logisticspipes.IRoutedItem.TransportMode;
import buildcraft.logisticspipes.IRoutedItem.TransportMode;
import buildcraft.logisticspipes.modules.ILogisticsModule;
import buildcraft.logisticspipes.modules.ILogisticsModule;
import buildcraft.transport.PipeTransportItems;
import buildcraft.transport.PipeTransportItems;
import buildcraft.transport.TileGenericPipe;
import buildcraft.transport.TileGenericPipe;
import core_LogisticsPipes;
import core_LogisticsPipes;
import io;
import io;
import java.io.PrintStream;
import java.io.PrintStream;
import java.util.HashMap;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.LinkedList;
import krapht.AdjacentTile;
import krapht.AdjacentTile;
import krapht.InventoryUtil;
import krapht.InventoryUtil;
import krapht.ItemIdentifier;
import krapht.ItemIdentifier;
import krapht.ItemIdentifierStack;
import krapht.ItemIdentifierStack;
import krapht.WorldUtil;
import krapht.WorldUtil;
import kw;
import kw;
import xd;
import xd;
public class PipeItemsCraftingLogistics extends RoutedPipe
public class PipeItemsCraftingLogistics extends RoutedPipe
implements ICraftItems
implements ICraftItems
{
{
private LogisticsOrderManager _orderManager = new LogisticsOrderManager();
private LogisticsOrderManager _orderManager = new LogisticsOrderManager();
private int _extras;
private int _extras;
public PipeItemsCraftingLogistics(int itemID)
public PipeItemsCraftingLogistics(int itemID)
{
{
super(new LogicCrafting(), itemID);
super(new LogicCrafting(), itemID);
}
}
private LinkedList locateCrafters() {
private LinkedList locateCrafters() {
WorldUtil worldUtil = new WorldUtil(this.worldObj, this.xCoord, this.yCoord, this.zCoord);
WorldUtil worldUtil = new WorldUtil(this.worldObj, this.xCoord, this.yCoord, this.zCoord);
LinkedList crafters = new LinkedList();
LinkedList crafters = new LinkedList();
for (AdjacentTile tile : worldUtil.getAdjacentTileEntities()) {
for (AdjacentTile tile : worldUtil.getAdjacentTileEntities()) {
if (((tile.tile instanceof TileGenericPipe)) ||
if (((tile.tile instanceof TileGenericPipe)) ||
(!(tile.tile instanceof io))) continue;
(!(tile.tile instanceof io))) continue;
crafters.add(tile);
crafters.add(tile);
}
}
return crafters;
return crafters;
}
}
Copy
Copied
Copy
Copied
private aan
extractFromAutoWorkbench(TileAutoWorkbench workbench) {
private aan
extractFromISpecialInventory(ISpecialInventory inv) {
return
workbench
.extractItem(true, Orientations.Unknown);
return
inv
.extractItem(true, Orientations.Unknown);
}
}
private aan extractFromIInventory(io inv)
private aan extractFromIInventory(io inv)
{
{
InventoryUtil invUtil = new InventoryUtil(inv, false);
InventoryUtil invUtil = new InventoryUtil(inv, false);
LogicCrafting craftingLogic = (LogicCrafting)this.logic;
LogicCrafting craftingLogic = (LogicCrafting)this.logic;
aan itemstack = craftingLogic.getCraftedItem();
aan itemstack = craftingLogic.getCraftedItem();
if (itemstack == null) return null;
if (itemstack == null) return null;
ItemIdentifierStack targetItemStack = ItemIdentifierStack.GetFromStack(itemstack);
ItemIdentifierStack targetItemStack = ItemIdentifierStack.GetFromStack(itemstack);
return invUtil.getSingleItem(targetItemStack.getItem());
return invUtil.getSingleItem(targetItemStack.getItem());
}
}
public void updateEntity()
public void updateEntity()
{
{
super.updateEntity();
super.updateEntity();
if (((!this._orderManager.hasOrders()) && (this._extras < 1)) || (this.worldObj.w() % 6L != 0L)) return;
if (((!this._orderManager.hasOrders()) && (this._extras < 1)) || (this.worldObj.w() % 6L != 0L)) return;
LinkedList crafters = locateCrafters();
LinkedList crafters = locateCrafters();
if (crafters.size() < 1) {
if (crafters.size() < 1) {
this._orderManager.sendFailed();
this._orderManager.sendFailed();
return;
return;
}
}
for (AdjacentTile tile : locateCrafters()) {
for (AdjacentTile tile : locateCrafters()) {
aan extracted = null;
aan extracted = null;
Copy
Copied
Copy
Copied
if ((tile.tile instanceof
TileAutoWorkbench
))
if ((tile.tile instanceof
ISpecialInventory
))
extracted =
extractFromAutoWorkbench((TileAutoWorkbench
)tile.tile);
extracted =
extractFromISpecialInventory((ISpecialInventory
)tile.tile);
else if ((tile.tile instanceof io)) {
else if ((tile.tile instanceof io)) {
extracted = extractFromIInventory((io)tile.tile);
extracted = extractFromIInventory((io)tile.tile);
}
}
if (extracted != null)
if (extracted != null)
while (extracted.a > 0) {
while (extracted.a > 0) {
aan stackToSend = extracted.a(1);
aan stackToSend = extracted.a(1);
Position p = new Position(tile.tile.j, tile.tile.k, tile.tile.l, tile.orientation);
Position p = new Position(tile.tile.j, tile.tile.k, tile.tile.l, tile.orientation);
if (this._orderManager.hasOrders()) {
if (this._orderManager.hasOrders()) {
LogisticsRequest order = this._orderManager.getNextRequest();
LogisticsRequest order = this._orderManager.getNextRequest();
IRoutedItem item = SimpleServiceLocator.buildCraftProxy.CreateRoutedItem(stackToSend, this.worldObj);
IRoutedItem item = SimpleServiceLocator.buildCraftProxy.CreateRoutedItem(stackToSend, this.worldObj);
item.setSource(getRouter().getId());
item.setSource(getRouter().getId());
item.setDestination(order.getDestination().getRouter().getId());
item.setDestination(order.getDestination().getRouter().getId());
item.setTransportMode(IRoutedItem.TransportMode.Active);
item.setTransportMode(IRoutedItem.TransportMode.Active);
super.queueRoutedItem(item, tile.orientation);
super.queueRoutedItem(item, tile.orientation);
this._orderManager.sendSuccessfull(1);
this._orderManager.sendSuccessfull(1);
} else {
} else {
this._extras -= 1;
this._extras -= 1;
System.out.println("Extra dropped, " + this._extras + " remaining");
System.out.println("Extra dropped, " + this._extras + " remaining");
Position entityPos = new Position(p.x + 0.5D, p.y + Utils.getPipeFloorOf(stackToSend), p.z + 0.5D, p.orientation.reverse());
Position entityPos = new Position(p.x + 0.5D, p.y + Utils.getPipeFloorOf(stackToSend), p.z + 0.5D, p.orientation.reverse());
entityPos.moveForwards(0.5D);
entityPos.moveForwards(0.5D);
EntityPassiveItem entityItem = new EntityPassiveItem(this.worldObj, entityPos.x, entityPos.y, entityPos.z, stackToSend);
EntityPassiveItem entityItem = new EntityPassiveItem(this.worldObj, entityPos.x, entityPos.y, entityPos.z, stackToSend);
entityItem.speed = (Utils.pipeNormalSpeed * 10.0F);
entityItem.speed = (Utils.pipeNormalSpeed * 10.0F);
((PipeTransportItems)this.transport).entityEntering(entityItem, entityPos.orientation);
((PipeTransportItems)this.transport).entityEntering(entityItem, entityPos.orientation);
}
}
}
}
}
}
}
}
private ItemIdentifier providedItem() {
private ItemIdentifier providedItem() {
LogicCrafting craftingLogic = (LogicCrafting)this.logic;
LogicCrafting craftingLogic = (LogicCrafting)this.logic;
aan stack = craftingLogic.getCraftedItem();
aan stack = craftingLogic.getCraftedItem();
if (stack == null) return null;
if (stack == null) return null;
return ItemIdentifier.get(stack);
return ItemIdentifier.get(stack);
}
}
public int getCenterTexture()
public int getCenterTexture()
{
{
return core_LogisticsPipes.LOGISTICSPIPE_CRAFTER_TEXTURE;
return core_LogisticsPipes.LOGISTICSPIPE_CRAFTER_TEXTURE;
}
}
public void canProvide(LogisticsTransaction transaction)
public void canProvide(LogisticsTransaction transaction)
{
{
if (!isEnabled()) {
if (!isEnabled()) {
return;
return;
}
}
if (this._extras < 1) return;
if (this._extras < 1) return;
for (LogisticsRequest request : transaction.getRemainingRequests()) {
for (LogisticsRequest request : transaction.getRemainingRequests()) {
ItemIdentifier providedItem = providedItem();
ItemIdentifier providedItem = providedItem();
if (request.getItem() == providedItem) {
if (request.getItem() == providedItem) {
HashMap promised = transaction.getTotalPromised(this);
HashMap promised = transaction.getTotalPromised(this);
int alreadyPromised = promised.containsKey(providedItem) ? ((Integer)promised.get(providedItem)).intValue() : 0;
int alreadyPromised = promised.containsKey(providedItem) ? ((Integer)promised.get(providedItem)).intValue() : 0;
if (alreadyPromised < this._extras) {
if (alreadyPromised < this._extras) {
int remaining = this._extras - alreadyPromised;
int remaining = this._extras - alreadyPromised;
LogisticsPromise promise = new LogisticsPromise();
LogisticsPromise promise = new LogisticsPromise();
promise.item = providedItem;
promise.item = providedItem;
promise.numberOfItems = Math.min(remaining, request.notYetAllocated());
promise.numberOfItems = Math.min(remaining, request.notYetAllocated());
promise.sender = this;
promise.sender = this;
promise.extra = true;
promise.extra = true;
request.addPromise(promise);
request.addPromise(promise);
}
}
}
}
}
}
}
}
public void canCraft(LogisticsTransaction transaction) {
public void canCraft(LogisticsTransaction transaction) {
if (!isEnabled()) {
if (!isEnabled()) {
return;
return;
}
}
LogicCrafting craftingLogic = (LogicCrafting)this.logic;
LogicCrafting craftingLogic = (LogicCrafting)this.logic;
aan stack = craftingLogic.getCraftedItem();
aan stack = craftingLogic.getCraftedItem();
if (stack == null) return;
if (stack == null) return;
CraftingTemplate template = new CraftingTemplate(ItemIdentifierStack.GetFromStack(stack), this);
CraftingTemplate template = new CraftingTemplate(ItemIdentifierStack.GetFromStack(stack), this);
boolean hasSatellite = craftingLogic.isSatelliteConnected();
boolean hasSatellite = craftingLogic.isSatelliteConnected();
for (int i = 0; i < 9; i++) {
for (int i = 0; i < 9; i++) {
aan resourceStack = craftingLogic.getMaterials(i);
aan resourceStack = craftingLogic.getMaterials(i);
if ((resourceStack != null) && (resourceStack.a != 0)) {
if ((resourceStack != null) && (resourceStack.a != 0)) {
if ((i < 6) || (!hasSatellite)) {
if ((i < 6) || (!hasSatellite)) {
template.addRequirement(ItemIdentifierStack.GetFromStack(resourceStack), this);
template.addRequirement(ItemIdentifierStack.GetFromStack(resourceStack), this);
}
}
else {
else {
template.addRequirement(ItemIdentifierStack.GetFromStack(resourceStack), craftingLogic.getSatelliteRouter().getPipe());
template.addRequirement(ItemIdentifierStack.GetFromStack(resourceStack), craftingLogic.getSatelliteRouter().getPipe());
}
}
}
}
}
}
transaction.addCraftingTemplate(template);
transaction.addCraftingTemplate(template);
}
}
public void fullFill(LogisticsPromise promise, IRequestItems destination)
public void fullFill(LogisticsPromise promise, IRequestItems destination)
{
{
if (promise.extra) {
if (promise.extra) {
this._extras -= promise.numberOfItems;
this._extras -= promise.numberOfItems;
}
}
this._orderManager.addOrder(new LogisticsRequest(promise.item, promise.numberOfItems, destination));
this._orderManager.addOrder(new LogisticsRequest(promise.item, promise.numberOfItems, destination));
}
}
public int getAvailableItemCount(ItemIdentifier item)
public int getAvailableItemCount(ItemIdentifier item)
{
{
return 0;
return 0;
}
}
public void registerExtras(int count)
public void registerExtras(int count)
{
{
this._extras += count;
this._extras += count;
System.out.println(count + " extras registered");
System.out.println(count + " extras registered");
}
}
public HashMap getAllItems()
public HashMap getAllItems()
{
{
return new HashMap();
return new HashMap();
}
}
public ItemIdentifier getCraftedItem()
public ItemIdentifier getCraftedItem()
{
{
if (!isEnabled()) {
if (!isEnabled()) {
return null;
return null;
}
}
return providedItem();
return providedItem();
}
}
public ILogisticsModule getLogisticsModule()
public ILogisticsModule getLogisticsModule()
{
{
return null;
return null;
}
}
}
}
Saved diffs
Original text
Open file
package buildcraft.krapht.pipes; import aan; import buildcraft.api.EntityPassiveItem; import buildcraft.api.Orientations; import buildcraft.api.Position; import buildcraft.core.Utils; import buildcraft.factory.TileAutoWorkbench; import buildcraft.krapht.CraftingTemplate; import buildcraft.krapht.IBuildCraftProxy; import buildcraft.krapht.ICraftItems; import buildcraft.krapht.IRequestItems; import buildcraft.krapht.LogisticsOrderManager; import buildcraft.krapht.LogisticsPromise; import buildcraft.krapht.LogisticsRequest; import buildcraft.krapht.LogisticsTransaction; import buildcraft.krapht.RoutedPipe; import buildcraft.krapht.SimpleServiceLocator; import buildcraft.krapht.logic.LogicCrafting; import buildcraft.krapht.routing.IRouter; import buildcraft.logisticspipes.IRoutedItem; import buildcraft.logisticspipes.IRoutedItem.TransportMode; import buildcraft.logisticspipes.modules.ILogisticsModule; import buildcraft.transport.PipeTransportItems; import buildcraft.transport.TileGenericPipe; import core_LogisticsPipes; import io; import java.io.PrintStream; import java.util.HashMap; import java.util.LinkedList; import krapht.AdjacentTile; import krapht.InventoryUtil; import krapht.ItemIdentifier; import krapht.ItemIdentifierStack; import krapht.WorldUtil; import kw; import xd; public class PipeItemsCraftingLogistics extends RoutedPipe implements ICraftItems { private LogisticsOrderManager _orderManager = new LogisticsOrderManager(); private int _extras; public PipeItemsCraftingLogistics(int itemID) { super(new LogicCrafting(), itemID); } private LinkedList locateCrafters() { WorldUtil worldUtil = new WorldUtil(this.worldObj, this.xCoord, this.yCoord, this.zCoord); LinkedList crafters = new LinkedList(); for (AdjacentTile tile : worldUtil.getAdjacentTileEntities()) { if (((tile.tile instanceof TileGenericPipe)) || (!(tile.tile instanceof io))) continue; crafters.add(tile); } return crafters; } private aan extractFromAutoWorkbench(TileAutoWorkbench workbench) { return workbench.extractItem(true, Orientations.Unknown); } private aan extractFromIInventory(io inv) { InventoryUtil invUtil = new InventoryUtil(inv, false); LogicCrafting craftingLogic = (LogicCrafting)this.logic; aan itemstack = craftingLogic.getCraftedItem(); if (itemstack == null) return null; ItemIdentifierStack targetItemStack = ItemIdentifierStack.GetFromStack(itemstack); return invUtil.getSingleItem(targetItemStack.getItem()); } public void updateEntity() { super.updateEntity(); if (((!this._orderManager.hasOrders()) && (this._extras < 1)) || (this.worldObj.w() % 6L != 0L)) return; LinkedList crafters = locateCrafters(); if (crafters.size() < 1) { this._orderManager.sendFailed(); return; } for (AdjacentTile tile : locateCrafters()) { aan extracted = null; if ((tile.tile instanceof TileAutoWorkbench)) extracted = extractFromAutoWorkbench((TileAutoWorkbench)tile.tile); else if ((tile.tile instanceof io)) { extracted = extractFromIInventory((io)tile.tile); } if (extracted != null) while (extracted.a > 0) { aan stackToSend = extracted.a(1); Position p = new Position(tile.tile.j, tile.tile.k, tile.tile.l, tile.orientation); if (this._orderManager.hasOrders()) { LogisticsRequest order = this._orderManager.getNextRequest(); IRoutedItem item = SimpleServiceLocator.buildCraftProxy.CreateRoutedItem(stackToSend, this.worldObj); item.setSource(getRouter().getId()); item.setDestination(order.getDestination().getRouter().getId()); item.setTransportMode(IRoutedItem.TransportMode.Active); super.queueRoutedItem(item, tile.orientation); this._orderManager.sendSuccessfull(1); } else { this._extras -= 1; System.out.println("Extra dropped, " + this._extras + " remaining"); Position entityPos = new Position(p.x + 0.5D, p.y + Utils.getPipeFloorOf(stackToSend), p.z + 0.5D, p.orientation.reverse()); entityPos.moveForwards(0.5D); EntityPassiveItem entityItem = new EntityPassiveItem(this.worldObj, entityPos.x, entityPos.y, entityPos.z, stackToSend); entityItem.speed = (Utils.pipeNormalSpeed * 10.0F); ((PipeTransportItems)this.transport).entityEntering(entityItem, entityPos.orientation); } } } } private ItemIdentifier providedItem() { LogicCrafting craftingLogic = (LogicCrafting)this.logic; aan stack = craftingLogic.getCraftedItem(); if (stack == null) return null; return ItemIdentifier.get(stack); } public int getCenterTexture() { return core_LogisticsPipes.LOGISTICSPIPE_CRAFTER_TEXTURE; } public void canProvide(LogisticsTransaction transaction) { if (!isEnabled()) { return; } if (this._extras < 1) return; for (LogisticsRequest request : transaction.getRemainingRequests()) { ItemIdentifier providedItem = providedItem(); if (request.getItem() == providedItem) { HashMap promised = transaction.getTotalPromised(this); int alreadyPromised = promised.containsKey(providedItem) ? ((Integer)promised.get(providedItem)).intValue() : 0; if (alreadyPromised < this._extras) { int remaining = this._extras - alreadyPromised; LogisticsPromise promise = new LogisticsPromise(); promise.item = providedItem; promise.numberOfItems = Math.min(remaining, request.notYetAllocated()); promise.sender = this; promise.extra = true; request.addPromise(promise); } } } } public void canCraft(LogisticsTransaction transaction) { if (!isEnabled()) { return; } LogicCrafting craftingLogic = (LogicCrafting)this.logic; aan stack = craftingLogic.getCraftedItem(); if (stack == null) return; CraftingTemplate template = new CraftingTemplate(ItemIdentifierStack.GetFromStack(stack), this); boolean hasSatellite = craftingLogic.isSatelliteConnected(); for (int i = 0; i < 9; i++) { aan resourceStack = craftingLogic.getMaterials(i); if ((resourceStack != null) && (resourceStack.a != 0)) { if ((i < 6) || (!hasSatellite)) { template.addRequirement(ItemIdentifierStack.GetFromStack(resourceStack), this); } else { template.addRequirement(ItemIdentifierStack.GetFromStack(resourceStack), craftingLogic.getSatelliteRouter().getPipe()); } } } transaction.addCraftingTemplate(template); } public void fullFill(LogisticsPromise promise, IRequestItems destination) { if (promise.extra) { this._extras -= promise.numberOfItems; } this._orderManager.addOrder(new LogisticsRequest(promise.item, promise.numberOfItems, destination)); } public int getAvailableItemCount(ItemIdentifier item) { return 0; } public void registerExtras(int count) { this._extras += count; System.out.println(count + " extras registered"); } public HashMap getAllItems() { return new HashMap(); } public ItemIdentifier getCraftedItem() { if (!isEnabled()) { return null; } return providedItem(); } public ILogisticsModule getLogisticsModule() { return null; } }
Changed text
Open file
package buildcraft.krapht.pipes; import aan; import buildcraft.api.EntityPassiveItem; import buildcraft.api.Orientations; import buildcraft.api.Position; import buildcraft.core.Utils; import buildcraft.api.ISpecialInventory; import buildcraft.krapht.CraftingTemplate; import buildcraft.krapht.IBuildCraftProxy; import buildcraft.krapht.ICraftItems; import buildcraft.krapht.IRequestItems; import buildcraft.krapht.LogisticsOrderManager; import buildcraft.krapht.LogisticsPromise; import buildcraft.krapht.LogisticsRequest; import buildcraft.krapht.LogisticsTransaction; import buildcraft.krapht.RoutedPipe; import buildcraft.krapht.SimpleServiceLocator; import buildcraft.krapht.logic.LogicCrafting; import buildcraft.krapht.routing.IRouter; import buildcraft.logisticspipes.IRoutedItem; import buildcraft.logisticspipes.IRoutedItem.TransportMode; import buildcraft.logisticspipes.modules.ILogisticsModule; import buildcraft.transport.PipeTransportItems; import buildcraft.transport.TileGenericPipe; import core_LogisticsPipes; import io; import java.io.PrintStream; import java.util.HashMap; import java.util.LinkedList; import krapht.AdjacentTile; import krapht.InventoryUtil; import krapht.ItemIdentifier; import krapht.ItemIdentifierStack; import krapht.WorldUtil; import kw; import xd; public class PipeItemsCraftingLogistics extends RoutedPipe implements ICraftItems { private LogisticsOrderManager _orderManager = new LogisticsOrderManager(); private int _extras; public PipeItemsCraftingLogistics(int itemID) { super(new LogicCrafting(), itemID); } private LinkedList locateCrafters() { WorldUtil worldUtil = new WorldUtil(this.worldObj, this.xCoord, this.yCoord, this.zCoord); LinkedList crafters = new LinkedList(); for (AdjacentTile tile : worldUtil.getAdjacentTileEntities()) { if (((tile.tile instanceof TileGenericPipe)) || (!(tile.tile instanceof io))) continue; crafters.add(tile); } return crafters; } private aan extractFromISpecialInventory(ISpecialInventory inv) { return inv.extractItem(true, Orientations.Unknown); } private aan extractFromIInventory(io inv) { InventoryUtil invUtil = new InventoryUtil(inv, false); LogicCrafting craftingLogic = (LogicCrafting)this.logic; aan itemstack = craftingLogic.getCraftedItem(); if (itemstack == null) return null; ItemIdentifierStack targetItemStack = ItemIdentifierStack.GetFromStack(itemstack); return invUtil.getSingleItem(targetItemStack.getItem()); } public void updateEntity() { super.updateEntity(); if (((!this._orderManager.hasOrders()) && (this._extras < 1)) || (this.worldObj.w() % 6L != 0L)) return; LinkedList crafters = locateCrafters(); if (crafters.size() < 1) { this._orderManager.sendFailed(); return; } for (AdjacentTile tile : locateCrafters()) { aan extracted = null; if ((tile.tile instanceof ISpecialInventory)) extracted = extractFromISpecialInventory((ISpecialInventory)tile.tile); else if ((tile.tile instanceof io)) { extracted = extractFromIInventory((io)tile.tile); } if (extracted != null) while (extracted.a > 0) { aan stackToSend = extracted.a(1); Position p = new Position(tile.tile.j, tile.tile.k, tile.tile.l, tile.orientation); if (this._orderManager.hasOrders()) { LogisticsRequest order = this._orderManager.getNextRequest(); IRoutedItem item = SimpleServiceLocator.buildCraftProxy.CreateRoutedItem(stackToSend, this.worldObj); item.setSource(getRouter().getId()); item.setDestination(order.getDestination().getRouter().getId()); item.setTransportMode(IRoutedItem.TransportMode.Active); super.queueRoutedItem(item, tile.orientation); this._orderManager.sendSuccessfull(1); } else { this._extras -= 1; System.out.println("Extra dropped, " + this._extras + " remaining"); Position entityPos = new Position(p.x + 0.5D, p.y + Utils.getPipeFloorOf(stackToSend), p.z + 0.5D, p.orientation.reverse()); entityPos.moveForwards(0.5D); EntityPassiveItem entityItem = new EntityPassiveItem(this.worldObj, entityPos.x, entityPos.y, entityPos.z, stackToSend); entityItem.speed = (Utils.pipeNormalSpeed * 10.0F); ((PipeTransportItems)this.transport).entityEntering(entityItem, entityPos.orientation); } } } } private ItemIdentifier providedItem() { LogicCrafting craftingLogic = (LogicCrafting)this.logic; aan stack = craftingLogic.getCraftedItem(); if (stack == null) return null; return ItemIdentifier.get(stack); } public int getCenterTexture() { return core_LogisticsPipes.LOGISTICSPIPE_CRAFTER_TEXTURE; } public void canProvide(LogisticsTransaction transaction) { if (!isEnabled()) { return; } if (this._extras < 1) return; for (LogisticsRequest request : transaction.getRemainingRequests()) { ItemIdentifier providedItem = providedItem(); if (request.getItem() == providedItem) { HashMap promised = transaction.getTotalPromised(this); int alreadyPromised = promised.containsKey(providedItem) ? ((Integer)promised.get(providedItem)).intValue() : 0; if (alreadyPromised < this._extras) { int remaining = this._extras - alreadyPromised; LogisticsPromise promise = new LogisticsPromise(); promise.item = providedItem; promise.numberOfItems = Math.min(remaining, request.notYetAllocated()); promise.sender = this; promise.extra = true; request.addPromise(promise); } } } } public void canCraft(LogisticsTransaction transaction) { if (!isEnabled()) { return; } LogicCrafting craftingLogic = (LogicCrafting)this.logic; aan stack = craftingLogic.getCraftedItem(); if (stack == null) return; CraftingTemplate template = new CraftingTemplate(ItemIdentifierStack.GetFromStack(stack), this); boolean hasSatellite = craftingLogic.isSatelliteConnected(); for (int i = 0; i < 9; i++) { aan resourceStack = craftingLogic.getMaterials(i); if ((resourceStack != null) && (resourceStack.a != 0)) { if ((i < 6) || (!hasSatellite)) { template.addRequirement(ItemIdentifierStack.GetFromStack(resourceStack), this); } else { template.addRequirement(ItemIdentifierStack.GetFromStack(resourceStack), craftingLogic.getSatelliteRouter().getPipe()); } } } transaction.addCraftingTemplate(template); } public void fullFill(LogisticsPromise promise, IRequestItems destination) { if (promise.extra) { this._extras -= promise.numberOfItems; } this._orderManager.addOrder(new LogisticsRequest(promise.item, promise.numberOfItems, destination)); } public int getAvailableItemCount(ItemIdentifier item) { return 0; } public void registerExtras(int count) { this._extras += count; System.out.println(count + " extras registered"); } public HashMap getAllItems() { return new HashMap(); } public ItemIdentifier getCraftedItem() { if (!isEnabled()) { return null; } return providedItem(); } public ILogisticsModule getLogisticsModule() { return null; } }
Find difference