-
Notifications
You must be signed in to change notification settings - Fork 497
/
Transactor.java
39 lines (29 loc) · 1.26 KB
/
Transactor.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package buildcraft.core.inventory;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntityFurnace;
import net.minecraftforge.common.ForgeDirection;
import net.minecraftforge.common.ISidedInventory;
import buildcraft.api.inventory.ISpecialInventory;
import buildcraft.core.utils.Utils;
public abstract class Transactor implements ITransactor {
@Override
public ItemStack add(ItemStack stack, ForgeDirection orientation, boolean doAdd) {
ItemStack added = stack.copy();
added.stackSize = inject(stack, orientation, doAdd);
return added;
}
public abstract int inject(ItemStack stack, ForgeDirection orientation, boolean doAdd);
public static ITransactor getTransactorFor(Object object) {
if (object instanceof ISpecialInventory)
return new TransactorSpecial((ISpecialInventory) object);
// Furnaces need to be special cased to prevent vanilla XP exploits.
else if (object instanceof TileEntityFurnace)
return new TransactorFurnace((ISidedInventory) object);
else if (object instanceof ISidedInventory)
return new TransactorSided((ISidedInventory) object);
else if (object instanceof IInventory)
return new TransactorSimple(Utils.getInventory((IInventory) object));
return null;
}
}