Diff
checker
텍스트
텍스트
이미지
문서
Excel
폴더
Legal
Enterprise
데스크톱
요금제
로그인
데스크톱 앱 다운로드
텍스트 비교
두 텍스트 파일의 차이점을 찾아보세요
도구
기록
실시간 편집
변경 없는 행 숨기기
줄바꿈 비활성화
레이아웃
나란히 보기
합쳐 보기
비교 단위
스마트
단어
글자
구문 강조
언어 선택
제외
텍스트 변환
첫 변경으로
수정
Diffchecker Desktop
가장 안전하게 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; } }
비교하기