diff --git a/common/buildcraft/transport/IItemTravelingHook.java b/common/buildcraft/transport/IItemTravelingHook.java index dbc400f9..a72b73a5 100644 --- a/common/buildcraft/transport/IItemTravelingHook.java +++ b/common/buildcraft/transport/IItemTravelingHook.java @@ -8,6 +8,14 @@ public interface IItemTravelingHook { public void centerReached(PipeTransportItems transport, TravelingItem item); - public void endReached(PipeTransportItems transport, TravelingItem item, TileEntity tile); + /** + * Overrides default handling of what occurs when an Item reaches the end of the time pipe. + * + * @param transport + * @param item + * @param tile + * @return false if the transport code should handle the item normally, true if its been handled + */ + public boolean endReached(PipeTransportItems transport, TravelingItem item, TileEntity tile); } diff --git a/common/buildcraft/transport/PipeTransportItems.java b/common/buildcraft/transport/PipeTransportItems.java index 185b3be8..d08190c8 100644 --- a/common/buildcraft/transport/PipeTransportItems.java +++ b/common/buildcraft/transport/PipeTransportItems.java @@ -363,12 +363,13 @@ public class PipeTransportItems extends PipeTransport { } else if (!item.toCenter && endReached(item)) { TileEntity tile = container.getTile(item.output); + boolean handleItem = true; if (travelHook != null) { - travelHook.endReached(this, item, tile); + handleItem = !travelHook.endReached(this, item, tile); } // If the item has not been scheduled to removal by the hook - if (items.scheduleRemoval(item)) { + if (handleItem && items.scheduleRemoval(item)) { handleTileReached(item, tile); } diff --git a/common/buildcraft/transport/pipes/PipeItemsLapis.java b/common/buildcraft/transport/pipes/PipeItemsLapis.java index 5e7d282d..10d83ff8 100644 --- a/common/buildcraft/transport/pipes/PipeItemsLapis.java +++ b/common/buildcraft/transport/pipes/PipeItemsLapis.java @@ -91,7 +91,8 @@ public class PipeItemsLapis extends Pipe implements IItemTra } @Override - public void endReached(PipeTransportItems pipe, TravelingItem item, TileEntity tile) { + public boolean endReached(PipeTransportItems pipe, TravelingItem item, TileEntity tile) { + return false; } @Override diff --git a/common/buildcraft/transport/pipes/PipeItemsVoid.java b/common/buildcraft/transport/pipes/PipeItemsVoid.java index 6605fb24..002f1f9c 100644 --- a/common/buildcraft/transport/pipes/PipeItemsVoid.java +++ b/common/buildcraft/transport/pipes/PipeItemsVoid.java @@ -50,6 +50,7 @@ public class PipeItemsVoid extends Pipe implements IItemTrav } @Override - public void endReached(PipeTransportItems pipe, TravelingItem item, TileEntity tile) { + public boolean endReached(PipeTransportItems pipe, TravelingItem item, TileEntity tile) { + return false; } }