Fix interface bugs
This commit is contained in:
@@ -52,10 +52,12 @@ public class TileInterface extends TileMachine implements ICompareConfig {
|
|||||||
} else if (ticks % RefinedStorageUtils.getSpeed(upgrades) == 0) {
|
} else if (ticks % RefinedStorageUtils.getSpeed(upgrades) == 0) {
|
||||||
int size = RefinedStorageUtils.hasUpgrade(upgrades, ItemUpgrade.TYPE_STACK) ? 64 : 1;
|
int size = RefinedStorageUtils.hasUpgrade(upgrades, ItemUpgrade.TYPE_STACK) ? 64 : 1;
|
||||||
|
|
||||||
if (controller.push(slot, size, true) == null) {
|
ItemStack remainder = controller.push(slot, size, false);
|
||||||
controller.push(slot, size, false);
|
|
||||||
|
|
||||||
|
if (remainder == null) {
|
||||||
importItems.extractItem(currentSlot, size, false);
|
importItems.extractItem(currentSlot, size, false);
|
||||||
|
} else {
|
||||||
|
importItems.extractItem(currentSlot, size - remainder.stackSize, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import net.minecraft.nbt.NBTTagList;
|
|||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraftforge.common.util.Constants;
|
import net.minecraftforge.common.util.Constants;
|
||||||
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
import net.minecraftforge.fml.common.network.ByteBufUtils;
|
||||||
|
import net.minecraftforge.items.ItemHandlerHelper;
|
||||||
import refinedstorage.RefinedStorage;
|
import refinedstorage.RefinedStorage;
|
||||||
import refinedstorage.RefinedStorageBlocks;
|
import refinedstorage.RefinedStorageBlocks;
|
||||||
import refinedstorage.RefinedStorageUtils;
|
import refinedstorage.RefinedStorageUtils;
|
||||||
@@ -411,6 +412,15 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// We copy here because push can not modify the stack
|
||||||
|
// if we return the remainder (that will not be copied if there are no storages)
|
||||||
|
// user code can do something with the uncopied remainder.
|
||||||
|
if (storages.isEmpty()) {
|
||||||
|
return ItemHandlerHelper.copyStackWithSize(stack, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
int orginalSize = size;
|
||||||
|
|
||||||
ItemStack remainder = stack;
|
ItemStack remainder = stack;
|
||||||
|
|
||||||
for (IStorage storage : storages) {
|
for (IStorage storage : storages) {
|
||||||
@@ -427,11 +437,7 @@ public class TileController extends TileBase implements IEnergyReceiver, ISynchr
|
|||||||
syncItems();
|
syncItems();
|
||||||
syncItemsWithClients();
|
syncItemsWithClients();
|
||||||
|
|
||||||
int sizePushed = stack.stackSize;
|
int sizePushed = remainder != null ? (orginalSize - remainder.stackSize) : orginalSize;
|
||||||
|
|
||||||
if (remainder != null) {
|
|
||||||
sizePushed = stack.stackSize - remainder.stackSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (int i = 0; i < sizePushed; ++i) {
|
for (int i = 0; i < sizePushed; ++i) {
|
||||||
if (!craftingTasks.empty()) {
|
if (!craftingTasks.empty()) {
|
||||||
|
|||||||
Reference in New Issue
Block a user