Diff
checker
टेक्स्ट
टेक्स्ट
छवियां
दस्तावेज़
Excel
फ़ोल्डर्स
Legal
Enterprise
डेस्कटॉप
मूल्य
साइन इन करें
Diffchecker डेस्कटॉप डाउनलोड करें
टेक्स्ट की तुलना करें
दो टेक्स्ट फ़ाइलों के बीच अंतर ढूंढें
उपकरण
इतिहास
रियल-टाइम एडिटर
अपरिवर्तित संक्षिप्त करें
लाइन रैप बंद
लेआउट
विभाजित
संयुक्त
परिवर्तन हाइलाइट करें
स्मार्ट
शब्द
अक्षर
सिंटैक्स हाइलाइटिंग
सिंटैक्स चुनें
अनदेखा करें
टेक्स्ट बदलें
पहले अंतर पर जाएँ
इनपुट संपादित करें
Diffchecker Desktop
Diffchecker चलाने का सबसे सुरक्षित तरीका। Diffchecker Desktop ऐप पाएं: आपके diffs कभी आपके कंप्यूटर से बाहर नहीं जाते!
Desktop पाएं
Untitled diff
बनाया गया
11 वर्ष पहले
Diff कभी समाप्त नहीं होता
साफ़
निर्यात करें
शेयर करें
समझाएं
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;
}
}
}
}
सेव किए गए Diffs
ऑरिजनल टेक्स्ट
फ़ाइल खोलें
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; } }
अंतर खोजें