Diff
checker
文本
文本
圖像
文檔
Excel
文件夾
Legal
Enterprise
桌面版
定價
登入
下載 Diffchecker 桌面版
比較文本
尋找兩個文字檔案之間的差異
工具
歷史
即時編輯器
摺疊未變更行
關閉換行
檢視
拆分
統一
比對精度
智能
單詞
字符
語法突出顯示
選擇語法
忽略
文字轉換
前往第一個差異
編輯輸入
Diffchecker Desktop
執行Diffchecker最安全的方式。取得Diffchecker桌面應用程式:您的差異永遠不會離開您的電腦!
取得桌面版
Untitled diff
建立於
11 年前
差異永不過期
清除
匯出
分享
解釋
5 刪除
行
總計
刪除
字符
總計
刪除
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
220 行
全部複製
5 新增
行
總計
新增
字符
總計
新增
要繼續使用此功能,請升級到
Diff
checker
Pro
查看價格
220 行
全部複製
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;
複製
已複製
複製
已複製
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;
}
}
複製
已複製
複製
已複製
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;
複製
已複製
複製
已複製
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;
}
}
}
}
已保存差異
原始文本
開啟檔案
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; } }
更改後文本
開啟檔案
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; } }
尋找差異