mirror of
https://github.com/Ellpeck/ActuallyAdditions.git
synced 2024-11-22 23:28:35 +01:00
Dropped IInventory support.
This took ages.
This commit is contained in:
parent
e3cb04ea3a
commit
c7697b5665
89 changed files with 851 additions and 1463 deletions
|
@ -163,7 +163,6 @@ public final class ActuallyAdditionsAPI{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Adds a new conversion recipe to the compost.
|
* Adds a new conversion recipe to the compost.
|
||||||
* StackSize is regarded on both input and output and they can be different.
|
|
||||||
*
|
*
|
||||||
* @param input The itemstack to be input into the compost
|
* @param input The itemstack to be input into the compost
|
||||||
* @param inputDisplay The block to display when there is input in the compost
|
* @param inputDisplay The block to display when there is input in the compost
|
||||||
|
|
|
@ -75,10 +75,10 @@ public class BlockAtomicReconstructor extends BlockContainerBase implements IHud
|
||||||
if(reconstructor != null){
|
if(reconstructor != null){
|
||||||
if(StackUtil.isValid(heldItem)){
|
if(StackUtil.isValid(heldItem)){
|
||||||
Item item = heldItem.getItem();
|
Item item = heldItem.getItem();
|
||||||
if(item instanceof ILensItem && !StackUtil.isValid(reconstructor.getStackInSlot(0))){
|
if(item instanceof ILensItem && !StackUtil.isValid(reconstructor.slots.getStackInSlot(0))){
|
||||||
ItemStack toPut = heldItem.copy();
|
ItemStack toPut = heldItem.copy();
|
||||||
toPut = StackUtil.setStackSize(toPut, 1);
|
toPut = StackUtil.setStackSize(toPut, 1);
|
||||||
reconstructor.setInventorySlotContents(0, toPut);
|
reconstructor.slots.setStackInSlot(0, toPut);
|
||||||
player.inventory.decrStackSize(player.inventory.currentItem, 1);
|
player.inventory.decrStackSize(player.inventory.currentItem, 1);
|
||||||
}
|
}
|
||||||
//Shush, don't tell anyone!
|
//Shush, don't tell anyone!
|
||||||
|
@ -88,10 +88,10 @@ public class BlockAtomicReconstructor extends BlockContainerBase implements IHud
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
ItemStack slot = reconstructor.getStackInSlot(0);
|
ItemStack slot = reconstructor.slots.getStackInSlot(0);
|
||||||
if(StackUtil.isValid(slot)){
|
if(StackUtil.isValid(slot)){
|
||||||
player.setHeldItem(hand, slot.copy());
|
player.setHeldItem(hand, slot.copy());
|
||||||
reconstructor.setInventorySlotContents(0, StackUtil.getNull());
|
reconstructor.slots.setStackInSlot(0, StackUtil.getNull());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -110,7 +110,7 @@ public class BlockAtomicReconstructor extends BlockContainerBase implements IHud
|
||||||
public void displayHud(Minecraft minecraft, EntityPlayer player, ItemStack stack, RayTraceResult posHit, ScaledResolution resolution){
|
public void displayHud(Minecraft minecraft, EntityPlayer player, ItemStack stack, RayTraceResult posHit, ScaledResolution resolution){
|
||||||
TileEntity tile = minecraft.world.getTileEntity(posHit.getBlockPos());
|
TileEntity tile = minecraft.world.getTileEntity(posHit.getBlockPos());
|
||||||
if(tile instanceof TileEntityAtomicReconstructor){
|
if(tile instanceof TileEntityAtomicReconstructor){
|
||||||
ItemStack slot = ((TileEntityAtomicReconstructor)tile).getStackInSlot(0);
|
ItemStack slot = ((TileEntityAtomicReconstructor)tile).slots.getStackInSlot(0);
|
||||||
String strg;
|
String strg;
|
||||||
if(!StackUtil.isValid(slot)){
|
if(!StackUtil.isValid(slot)){
|
||||||
strg = StringUtil.localize("info."+ModUtil.MOD_ID+".noLens");
|
strg = StringUtil.localize("info."+ModUtil.MOD_ID+".noLens");
|
||||||
|
|
|
@ -88,27 +88,27 @@ public class BlockCompost extends BlockContainerBase implements IHudDisplay{
|
||||||
TileEntity tile = world.getTileEntity(pos);
|
TileEntity tile = world.getTileEntity(pos);
|
||||||
if(tile instanceof TileEntityCompost){
|
if(tile instanceof TileEntityCompost){
|
||||||
TileEntityCompost compost = (TileEntityCompost)tile;
|
TileEntityCompost compost = (TileEntityCompost)tile;
|
||||||
ItemStack slot = compost.getStackInSlot(0);
|
ItemStack slot = compost.slots.getStackInSlot(0);
|
||||||
CompostRecipe recipeIn = TileEntityCompost.getRecipeForInput(slot);
|
CompostRecipe recipeIn = TileEntityCompost.getRecipeForInput(slot);
|
||||||
if(!StackUtil.isValid(slot) || recipeIn != null){
|
if(!StackUtil.isValid(slot) || recipeIn != null){
|
||||||
if(StackUtil.isValid(stackPlayer)){
|
if(StackUtil.isValid(stackPlayer)){
|
||||||
CompostRecipe recipeHand = TileEntityCompost.getRecipeForInput(stackPlayer);
|
CompostRecipe recipeHand = TileEntityCompost.getRecipeForInput(stackPlayer);
|
||||||
if(recipeHand != null && (recipeIn == null || recipeIn == recipeHand)){
|
if(recipeHand != null && (recipeIn == null || recipeIn == recipeHand)){
|
||||||
int maxAdd = Math.min(StackUtil.getStackSize(recipeHand.input), StackUtil.getStackSize(stackPlayer));
|
int maxAdd = StackUtil.getStackSize(stackPlayer);
|
||||||
|
|
||||||
if(!StackUtil.isValid(slot)){
|
if(!StackUtil.isValid(slot)){
|
||||||
ItemStack stackToAdd = stackPlayer.copy();
|
ItemStack stackToAdd = stackPlayer.copy();
|
||||||
stackToAdd = StackUtil.setStackSize(stackToAdd, maxAdd);
|
stackToAdd = StackUtil.setStackSize(stackToAdd, maxAdd);
|
||||||
compost.setInventorySlotContents(0, stackToAdd);
|
compost.slots.setStackInSlot(0, stackToAdd);
|
||||||
player.inventory.decrStackSize(player.inventory.currentItem, maxAdd);
|
player.inventory.decrStackSize(player.inventory.currentItem, maxAdd);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
ItemStack stackIn = slot.copy();
|
ItemStack stackIn = slot.copy();
|
||||||
if(StackUtil.getStackSize(stackIn) < StackUtil.getStackSize(recipeHand.input)){
|
if(StackUtil.getStackSize(stackIn) < recipeHand.input.getMaxStackSize()){
|
||||||
int sizeAdded = Math.min(maxAdd, StackUtil.getStackSize(recipeHand.input)-StackUtil.getStackSize(stackIn));
|
int sizeAdded = Math.min(maxAdd, recipeHand.input.getMaxStackSize()-StackUtil.getStackSize(stackIn));
|
||||||
stackIn = StackUtil.addStackSize(stackIn, sizeAdded);
|
stackIn = StackUtil.addStackSize(stackIn, sizeAdded);
|
||||||
compost.setInventorySlotContents(0, stackIn);
|
compost.slots.setStackInSlot(0, stackIn);
|
||||||
player.inventory.decrStackSize(player.inventory.currentItem, sizeAdded);
|
player.inventory.decrStackSize(player.inventory.currentItem, sizeAdded);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -119,7 +119,7 @@ public class BlockCompost extends BlockContainerBase implements IHudDisplay{
|
||||||
else{
|
else{
|
||||||
if(!StackUtil.isValid(stackPlayer)){
|
if(!StackUtil.isValid(stackPlayer)){
|
||||||
player.setHeldItem(hand, slot.copy());
|
player.setHeldItem(hand, slot.copy());
|
||||||
compost.setInventorySlotContents(0, StackUtil.getNull());
|
compost.slots.setStackInSlot(0, StackUtil.getNull());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if(ItemUtil.canBeStacked(stackPlayer, slot)){
|
else if(ItemUtil.canBeStacked(stackPlayer, slot)){
|
||||||
|
@ -127,7 +127,7 @@ public class BlockCompost extends BlockContainerBase implements IHudDisplay{
|
||||||
ItemStack stackToAdd = stackPlayer.copy();
|
ItemStack stackToAdd = stackPlayer.copy();
|
||||||
stackToAdd = StackUtil.addStackSize(stackToAdd, addedStackSize);
|
stackToAdd = StackUtil.addStackSize(stackToAdd, addedStackSize);
|
||||||
player.setHeldItem(hand, stackToAdd);
|
player.setHeldItem(hand, stackToAdd);
|
||||||
compost.decrStackSize(0, addedStackSize);
|
compost.slots.decrStackSize(0, addedStackSize);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -156,7 +156,7 @@ public class BlockCompost extends BlockContainerBase implements IHudDisplay{
|
||||||
public void displayHud(Minecraft minecraft, EntityPlayer player, ItemStack stack, RayTraceResult posHit, ScaledResolution resolution){
|
public void displayHud(Minecraft minecraft, EntityPlayer player, ItemStack stack, RayTraceResult posHit, ScaledResolution resolution){
|
||||||
TileEntity tile = minecraft.world.getTileEntity(posHit.getBlockPos());
|
TileEntity tile = minecraft.world.getTileEntity(posHit.getBlockPos());
|
||||||
if(tile instanceof TileEntityCompost){
|
if(tile instanceof TileEntityCompost){
|
||||||
ItemStack slot = ((TileEntityCompost)tile).getStackInSlot(0);
|
ItemStack slot = ((TileEntityCompost)tile).slots.getStackInSlot(0);
|
||||||
String strg;
|
String strg;
|
||||||
if(!StackUtil.isValid(slot)){
|
if(!StackUtil.isValid(slot)){
|
||||||
strg = "Empty";
|
strg = "Empty";
|
||||||
|
|
|
@ -55,12 +55,12 @@ public class BlockDisplayStand extends BlockContainerBase{
|
||||||
if(!world.isRemote){
|
if(!world.isRemote){
|
||||||
TileEntityDisplayStand stand = (TileEntityDisplayStand)world.getTileEntity(pos);
|
TileEntityDisplayStand stand = (TileEntityDisplayStand)world.getTileEntity(pos);
|
||||||
if(stand != null){
|
if(stand != null){
|
||||||
ItemStack display = stand.getStackInSlot(0);
|
ItemStack display = stand.slots.getStackInSlot(0);
|
||||||
if(StackUtil.isValid(heldItem)){
|
if(StackUtil.isValid(heldItem)){
|
||||||
if(!StackUtil.isValid(display)){
|
if(!StackUtil.isValid(display)){
|
||||||
ItemStack toPut = heldItem.copy();
|
ItemStack toPut = heldItem.copy();
|
||||||
toPut = StackUtil.setStackSize(toPut, 1);
|
toPut = StackUtil.setStackSize(toPut, 1);
|
||||||
stand.setInventorySlotContents(0, toPut);
|
stand.slots.setStackInSlot(0, toPut);
|
||||||
player.setHeldItem(hand, StackUtil.addStackSize(heldItem, -1));
|
player.setHeldItem(hand, StackUtil.addStackSize(heldItem, -1));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ public class BlockDisplayStand extends BlockContainerBase{
|
||||||
player.setHeldItem(hand, StackUtil.addStackSize(heldItem, maxTransfer));
|
player.setHeldItem(hand, StackUtil.addStackSize(heldItem, maxTransfer));
|
||||||
ItemStack newDisplay = display.copy();
|
ItemStack newDisplay = display.copy();
|
||||||
newDisplay = StackUtil.addStackSize(newDisplay, -maxTransfer);
|
newDisplay = StackUtil.addStackSize(newDisplay, -maxTransfer);
|
||||||
stand.setInventorySlotContents(0, StackUtil.validateCheck(newDisplay));
|
stand.slots.setStackInSlot(0, StackUtil.validateCheck(newDisplay));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,7 +78,7 @@ public class BlockDisplayStand extends BlockContainerBase{
|
||||||
else{
|
else{
|
||||||
if(StackUtil.isValid(display)){
|
if(StackUtil.isValid(display)){
|
||||||
player.setHeldItem(hand, display.copy());
|
player.setHeldItem(hand, display.copy());
|
||||||
stand.setInventorySlotContents(0, StackUtil.getNull());
|
stand.slots.setStackInSlot(0, StackUtil.getNull());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ public class BlockDistributorItem extends BlockContainerBase implements IHudDisp
|
||||||
TileEntity tile = minecraft.world.getTileEntity(posHit.getBlockPos());
|
TileEntity tile = minecraft.world.getTileEntity(posHit.getBlockPos());
|
||||||
if(tile instanceof TileEntityDistributorItem){
|
if(tile instanceof TileEntityDistributorItem){
|
||||||
TileEntityDistributorItem distributor = (TileEntityDistributorItem)tile;
|
TileEntityDistributorItem distributor = (TileEntityDistributorItem)tile;
|
||||||
ItemStack slot = distributor.getStackInSlot(0);
|
ItemStack slot = distributor.slots.getStackInSlot(0);
|
||||||
|
|
||||||
String strg;
|
String strg;
|
||||||
if(!StackUtil.isValid(slot)){
|
if(!StackUtil.isValid(slot)){
|
||||||
|
|
|
@ -55,12 +55,12 @@ public class BlockEmpowerer extends BlockContainerBase{
|
||||||
if(!world.isRemote){
|
if(!world.isRemote){
|
||||||
TileEntityEmpowerer empowerer = (TileEntityEmpowerer)world.getTileEntity(pos);
|
TileEntityEmpowerer empowerer = (TileEntityEmpowerer)world.getTileEntity(pos);
|
||||||
if(empowerer != null){
|
if(empowerer != null){
|
||||||
ItemStack stackThere = empowerer.getStackInSlot(0);
|
ItemStack stackThere = empowerer.slots.getStackInSlot(0);
|
||||||
if(StackUtil.isValid(heldItem)){
|
if(StackUtil.isValid(heldItem)){
|
||||||
if(!StackUtil.isValid(stackThere) && !TileEntityEmpowerer.getRecipesForInput(heldItem).isEmpty()){
|
if(!StackUtil.isValid(stackThere) && !TileEntityEmpowerer.getRecipesForInput(heldItem).isEmpty()){
|
||||||
ItemStack toPut = heldItem.copy();
|
ItemStack toPut = heldItem.copy();
|
||||||
toPut = StackUtil.setStackSize(toPut, 1);
|
toPut = StackUtil.setStackSize(toPut, 1);
|
||||||
empowerer.setInventorySlotContents(0, toPut);
|
empowerer.slots.setStackInSlot(0, toPut);
|
||||||
player.setHeldItem(hand, StackUtil.addStackSize(heldItem, -1));
|
player.setHeldItem(hand, StackUtil.addStackSize(heldItem, -1));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -70,7 +70,7 @@ public class BlockEmpowerer extends BlockContainerBase{
|
||||||
player.setHeldItem(hand, StackUtil.addStackSize(heldItem, maxTransfer));
|
player.setHeldItem(hand, StackUtil.addStackSize(heldItem, maxTransfer));
|
||||||
ItemStack newStackThere = stackThere.copy();
|
ItemStack newStackThere = stackThere.copy();
|
||||||
newStackThere = StackUtil.addStackSize(newStackThere, -maxTransfer);
|
newStackThere = StackUtil.addStackSize(newStackThere, -maxTransfer);
|
||||||
empowerer.setInventorySlotContents(0, StackUtil.validateCheck(newStackThere));
|
empowerer.slots.setStackInSlot(0, StackUtil.validateCheck(newStackThere));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -78,7 +78,7 @@ public class BlockEmpowerer extends BlockContainerBase{
|
||||||
else{
|
else{
|
||||||
if(StackUtil.isValid(stackThere)){
|
if(StackUtil.isValid(stackThere)){
|
||||||
player.setHeldItem(hand, stackThere.copy());
|
player.setHeldItem(hand, stackThere.copy());
|
||||||
empowerer.setInventorySlotContents(0, StackUtil.getNull());
|
empowerer.slots.setStackInSlot(0, StackUtil.getNull());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ import de.ellpeck.actuallyadditions.mod.items.InitItems;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChest;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChest;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChestLarge;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChestLarge;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChestMedium;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityGiantChestMedium;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerCustom;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
|
import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
|
@ -26,6 +27,7 @@ import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
import net.minecraft.entity.EntityLivingBase;
|
import net.minecraft.entity.EntityLivingBase;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.inventory.InventoryBasic;
|
||||||
import net.minecraft.item.EnumRarity;
|
import net.minecraft.item.EnumRarity;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
@ -103,12 +105,12 @@ public class BlockGiantChest extends BlockContainerBase{
|
||||||
TileEntity tile = world.getTileEntity(pos);
|
TileEntity tile = world.getTileEntity(pos);
|
||||||
if(tile instanceof TileEntityGiantChest){
|
if(tile instanceof TileEntityGiantChest){
|
||||||
NBTTagList list = stack.getTagCompound().getTagList("Items", 10);
|
NBTTagList list = stack.getTagCompound().getTagList("Items", 10);
|
||||||
NonNullList<ItemStack> slots = ((TileEntityGiantChest)tile).slots;
|
ItemStackHandlerCustom slots = ((TileEntityGiantChest)tile).slots;
|
||||||
|
|
||||||
for(int i = 0; i < list.tagCount(); i++){
|
for(int i = 0; i < list.tagCount(); i++){
|
||||||
NBTTagCompound compound = list.getCompoundTagAt(i);
|
NBTTagCompound compound = list.getCompoundTagAt(i);
|
||||||
if(compound != null && compound.hasKey("id")){
|
if(compound != null && compound.hasKey("id")){
|
||||||
slots.set(i, new ItemStack(list.getCompoundTagAt(i)));
|
slots.setStackInSlot(i, new ItemStack(list.getCompoundTagAt(i)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -124,16 +126,16 @@ public class BlockGiantChest extends BlockContainerBase{
|
||||||
|
|
||||||
TileEntity tile = world.getTileEntity(pos);
|
TileEntity tile = world.getTileEntity(pos);
|
||||||
if(tile instanceof TileEntityGiantChest){
|
if(tile instanceof TileEntityGiantChest){
|
||||||
List<ItemStack> slots = ((TileEntityGiantChest)tile).slots;
|
ItemStackHandlerCustom slots = ((TileEntityGiantChest)tile).slots;
|
||||||
int place = ItemUtil.getPlaceAt(slots, new ItemStack(InitItems.itemCrateKeeper), false);
|
int place = ItemUtil.getPlaceAt(slots.getItems(), new ItemStack(InitItems.itemCrateKeeper), false);
|
||||||
if(place >= 0){
|
if(place >= 0){
|
||||||
NBTTagList list = new NBTTagList();
|
NBTTagList list = new NBTTagList();
|
||||||
for(int i = 0; i < slots.size(); i++){
|
for(int i = 0; i < slots.getSlots(); i++){
|
||||||
//Destroy the keeper
|
//Destroy the keeper
|
||||||
if(i != place){
|
if(i != place){
|
||||||
NBTTagCompound compound = new NBTTagCompound();
|
NBTTagCompound compound = new NBTTagCompound();
|
||||||
if(StackUtil.isValid(slots.get(i))){
|
if(StackUtil.isValid(slots.getStackInSlot(i))){
|
||||||
slots.get(i).writeToNBT(compound);
|
slots.getStackInSlot(i).writeToNBT(compound);
|
||||||
}
|
}
|
||||||
list.appendTag(compound);
|
list.appendTag(compound);
|
||||||
}
|
}
|
||||||
|
@ -158,7 +160,7 @@ public class BlockGiantChest extends BlockContainerBase{
|
||||||
public boolean shouldDropInventory(World world, BlockPos pos){
|
public boolean shouldDropInventory(World world, BlockPos pos){
|
||||||
TileEntity tile = world.getTileEntity(pos);
|
TileEntity tile = world.getTileEntity(pos);
|
||||||
if(tile instanceof TileEntityGiantChest){
|
if(tile instanceof TileEntityGiantChest){
|
||||||
if(ItemUtil.contains(((TileEntityGiantChest)tile).slots, new ItemStack(InitItems.itemCrateKeeper), false)){
|
if(ItemUtil.contains(((TileEntityGiantChest)tile).slots.getItems(), new ItemStack(InitItems.itemCrateKeeper), false)){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -85,8 +85,8 @@ public abstract class BlockContainerBase extends BlockContainer implements ItemB
|
||||||
TileEntity aTile = world.getTileEntity(position);
|
TileEntity aTile = world.getTileEntity(position);
|
||||||
if(aTile instanceof TileEntityInventoryBase){
|
if(aTile instanceof TileEntityInventoryBase){
|
||||||
TileEntityInventoryBase tile = (TileEntityInventoryBase)aTile;
|
TileEntityInventoryBase tile = (TileEntityInventoryBase)aTile;
|
||||||
if(tile.getSizeInventory() > 0){
|
if(tile.slots.getSlots() > 0){
|
||||||
for(int i = 0; i < tile.getSizeInventory(); i++){
|
for(int i = 0; i < tile.slots.getSlots(); i++){
|
||||||
this.dropSlotFromInventory(i, tile, world, position);
|
this.dropSlotFromInventory(i, tile, world, position);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -95,7 +95,7 @@ public abstract class BlockContainerBase extends BlockContainer implements ItemB
|
||||||
}
|
}
|
||||||
|
|
||||||
private void dropSlotFromInventory(int i, TileEntityInventoryBase tile, World world, BlockPos pos){
|
private void dropSlotFromInventory(int i, TileEntityInventoryBase tile, World world, BlockPos pos){
|
||||||
ItemStack stack = tile.getStackInSlot(i);
|
ItemStack stack = tile.slots.getStackInSlot(i);
|
||||||
if(StackUtil.isValid(stack)){
|
if(StackUtil.isValid(stack)){
|
||||||
float dX = world.rand.nextFloat()*0.8F+0.1F;
|
float dX = world.rand.nextFloat()*0.8F+0.1F;
|
||||||
float dY = world.rand.nextFloat()*0.8F+0.1F;
|
float dY = world.rand.nextFloat()*0.8F+0.1F;
|
||||||
|
|
|
@ -28,7 +28,7 @@ public class RenderCompost extends TileEntitySpecialRenderer{
|
||||||
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float partialTicks, int destroyStage){
|
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float partialTicks, int destroyStage){
|
||||||
if(te instanceof TileEntityCompost){
|
if(te instanceof TileEntityCompost){
|
||||||
TileEntityCompost compost = (TileEntityCompost)te;
|
TileEntityCompost compost = (TileEntityCompost)te;
|
||||||
ItemStack slot = compost.getStackInSlot(0);
|
ItemStack slot = compost.slots.getStackInSlot(0);
|
||||||
|
|
||||||
if(StackUtil.isValid(slot)){
|
if(StackUtil.isValid(slot)){
|
||||||
Block display = null;
|
Block display = null;
|
||||||
|
@ -36,12 +36,12 @@ public class RenderCompost extends TileEntitySpecialRenderer{
|
||||||
for(CompostRecipe aRecipe : ActuallyAdditionsAPI.COMPOST_RECIPES){
|
for(CompostRecipe aRecipe : ActuallyAdditionsAPI.COMPOST_RECIPES){
|
||||||
if(slot.isItemEqual(aRecipe.input)){
|
if(slot.isItemEqual(aRecipe.input)){
|
||||||
display = aRecipe.inputDisplay;
|
display = aRecipe.inputDisplay;
|
||||||
maxAmount = StackUtil.getStackSize(aRecipe.input);
|
maxAmount = aRecipe.input.getMaxStackSize();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if(slot.isItemEqual(aRecipe.output)){
|
else if(slot.isItemEqual(aRecipe.output)){
|
||||||
display = aRecipe.outputDisplay;
|
display = aRecipe.outputDisplay;
|
||||||
maxAmount = StackUtil.getStackSize(aRecipe.output);
|
maxAmount = aRecipe.output.getMaxStackSize();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,7 +29,7 @@ public class RenderDisplayStand extends TileEntitySpecialRenderer{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack stack = ((TileEntityDisplayStand)tile).getStackInSlot(0);
|
ItemStack stack = ((TileEntityDisplayStand)tile).slots.getStackInSlot(0);
|
||||||
if(StackUtil.isValid(stack)){
|
if(StackUtil.isValid(stack)){
|
||||||
GlStateManager.pushMatrix();
|
GlStateManager.pushMatrix();
|
||||||
GlStateManager.translate((float)x+0.5F, (float)y+1F, (float)z+0.5F);
|
GlStateManager.translate((float)x+0.5F, (float)y+1F, (float)z+0.5F);
|
||||||
|
|
|
@ -29,7 +29,7 @@ public class RenderEmpowerer extends TileEntitySpecialRenderer{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack stack = ((TileEntityEmpowerer)tile).getStackInSlot(0);
|
ItemStack stack = ((TileEntityEmpowerer)tile).slots.getStackInSlot(0);
|
||||||
if(StackUtil.isValid(stack)){
|
if(StackUtil.isValid(stack)){
|
||||||
GlStateManager.pushMatrix();
|
GlStateManager.pushMatrix();
|
||||||
GlStateManager.translate((float)x+0.5F, (float)y+1F, (float)z+0.5F);
|
GlStateManager.translate((float)x+0.5F, (float)y+1F, (float)z+0.5F);
|
||||||
|
|
|
@ -28,7 +28,7 @@ public class RenderReconstructorLens extends TileEntitySpecialRenderer{
|
||||||
if(!(tile instanceof TileEntityAtomicReconstructor)){
|
if(!(tile instanceof TileEntityAtomicReconstructor)){
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ItemStack stack = ((TileEntityAtomicReconstructor)tile).getStackInSlot(0);
|
ItemStack stack = ((TileEntityAtomicReconstructor)tile).slots.getStackInSlot(0);
|
||||||
|
|
||||||
if(StackUtil.isValid(stack) && stack.getItem() instanceof ILensItem){
|
if(StackUtil.isValid(stack) && stack.getItem() instanceof ILensItem){
|
||||||
GlStateManager.pushMatrix();
|
GlStateManager.pushMatrix();
|
||||||
|
|
|
@ -31,8 +31,8 @@ public final class InitCrafting{
|
||||||
FoodCrafting.init();
|
FoodCrafting.init();
|
||||||
ToolCrafting.init();
|
ToolCrafting.init();
|
||||||
|
|
||||||
ActuallyAdditionsAPI.addCompostRecipe(new ItemStack(InitItems.itemMisc, 10, TheMiscItems.MASHED_FOOD.ordinal()), Blocks.LEAVES, new ItemStack(InitItems.itemFertilizer, 10), Blocks.DIRT);
|
ActuallyAdditionsAPI.addCompostRecipe(new ItemStack(InitItems.itemMisc, 1, TheMiscItems.MASHED_FOOD.ordinal()), Blocks.LEAVES, new ItemStack(InitItems.itemFertilizer), Blocks.DIRT);
|
||||||
ActuallyAdditionsAPI.addCompostRecipe(new ItemStack(InitItems.itemCanolaSeed, 20), Blocks.DIRT, new ItemStack(InitItems.itemMisc, 1, TheMiscItems.BIOMASS.ordinal()), Blocks.SOUL_SAND);
|
ActuallyAdditionsAPI.addCompostRecipe(new ItemStack(InitItems.itemCanolaSeed), Blocks.DIRT, new ItemStack(InitItems.itemMisc, 1, TheMiscItems.BIOMASS.ordinal()), Blocks.SOUL_SAND);
|
||||||
|
|
||||||
ActuallyAdditionsAPI.addOilGenRecipe(InitFluids.fluidCanolaOil.getName(), 40, 100);
|
ActuallyAdditionsAPI.addOilGenRecipe(InitFluids.fluidCanolaOil.getName(), 40, 100);
|
||||||
ActuallyAdditionsAPI.addOilGenRecipe(InitFluids.fluidOil.getName(), 60, 150);
|
ActuallyAdditionsAPI.addOilGenRecipe(InitFluids.fluidOil.getName(), 60, 150);
|
||||||
|
|
|
@ -109,7 +109,7 @@ public class VillageComponentEngineerHouse extends StructureVillagePieces.House1
|
||||||
if(compost instanceof TileEntityCompost){
|
if(compost instanceof TileEntityCompost){
|
||||||
TileEntityCompost tile = (TileEntityCompost)compost;
|
TileEntityCompost tile = (TileEntityCompost)compost;
|
||||||
tile.stopFromDropping = true;
|
tile.stopFromDropping = true;
|
||||||
tile.setInventorySlotContents(0, new ItemStack(InitItems.itemFertilizer, 10));
|
tile.slots.setStackInSlot(0, new ItemStack(InitItems.itemFertilizer, 10));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -134,7 +134,7 @@ public class VillageComponentEngineerHouse extends StructureVillagePieces.House1
|
||||||
TileEntityCanolaPress tile = (TileEntityCanolaPress)press;
|
TileEntityCanolaPress tile = (TileEntityCanolaPress)press;
|
||||||
tile.stopFromDropping = true;
|
tile.stopFromDropping = true;
|
||||||
tile.storage.setEnergyStored(world.rand.nextInt(tile.storage.getMaxEnergyStored()/3));
|
tile.storage.setEnergyStored(world.rand.nextInt(tile.storage.getMaxEnergyStored()/3));
|
||||||
tile.setInventorySlotContents(0, new ItemStack(InitItems.itemMisc, world.rand.nextInt(60)+1, TheMiscItems.CANOLA.ordinal()));
|
tile.slots.setStackInSlot(0, new ItemStack(InitItems.itemMisc, world.rand.nextInt(60)+1, TheMiscItems.CANOLA.ordinal()));
|
||||||
}
|
}
|
||||||
|
|
||||||
TileEntity crusher = this.getTileAtPos(world, 2, 1, 6, sbb);
|
TileEntity crusher = this.getTileAtPos(world, 2, 1, 6, sbb);
|
||||||
|
@ -143,7 +143,7 @@ public class VillageComponentEngineerHouse extends StructureVillagePieces.House1
|
||||||
tile.stopFromDropping = true;
|
tile.stopFromDropping = true;
|
||||||
tile.storage.setEnergyStored(world.rand.nextInt(tile.storage.getMaxEnergyStored()/2));
|
tile.storage.setEnergyStored(world.rand.nextInt(tile.storage.getMaxEnergyStored()/2));
|
||||||
if(world.rand.nextFloat() >= 0.25F){
|
if(world.rand.nextFloat() >= 0.25F){
|
||||||
tile.setInventorySlotContents(TileEntityGrinder.SLOT_INPUT_1, new ItemStack(InitBlocks.blockMisc, world.rand.nextInt(10)+1, TheMiscBlocks.ORE_QUARTZ.ordinal()));
|
tile.slots.setStackInSlot(TileEntityGrinder.SLOT_INPUT_1, new ItemStack(InitBlocks.blockMisc, world.rand.nextInt(10)+1, TheMiscBlocks.ORE_QUARTZ.ordinal()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -151,7 +151,7 @@ public class VillageComponentEngineerHouse extends StructureVillagePieces.House1
|
||||||
if(coal instanceof TileEntityCoalGenerator){
|
if(coal instanceof TileEntityCoalGenerator){
|
||||||
TileEntityCoalGenerator tile = (TileEntityCoalGenerator)coal;
|
TileEntityCoalGenerator tile = (TileEntityCoalGenerator)coal;
|
||||||
tile.stopFromDropping = true;
|
tile.stopFromDropping = true;
|
||||||
tile.setInventorySlotContents(0, new ItemStack(Items.COAL, world.rand.nextInt(25)+3, 1));
|
tile.slots.setStackInSlot(0, new ItemStack(Items.COAL, world.rand.nextInt(25)+3, 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
TileEntity reconstructor = this.getTileAtPos(world, 8, 4, 3, sbb);
|
TileEntity reconstructor = this.getTileAtPos(world, 8, 4, 3, sbb);
|
||||||
|
|
|
@ -13,27 +13,25 @@ package de.ellpeck.actuallyadditions.mod.inventory;
|
||||||
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotDeletion;
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotDeletion;
|
||||||
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter;
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter;
|
||||||
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotImmovable;
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotImmovable;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ItemBag;
|
import de.ellpeck.actuallyadditions.mod.items.ItemBag;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
|
import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
|
||||||
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
|
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.FilterSettings;
|
import de.ellpeck.actuallyadditions.mod.tile.FilterSettings;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerCustom;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.*;
|
import net.minecraft.inventory.*;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.NonNullList;
|
|
||||||
import net.minecraft.util.text.ITextComponent;
|
|
||||||
import net.minecraft.util.text.TextComponentTranslation;
|
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerBag extends Container implements IButtonReactor{
|
public class ContainerBag extends Container implements IButtonReactor{
|
||||||
|
|
||||||
public final FilterSettings filter = new FilterSettings(4, false, true, false, false, 0, -1000);
|
public final FilterSettings filter = new FilterSettings(4, false, true, false, false, 0, -1000);
|
||||||
private final InventoryBag bagInventory;
|
private final ItemStackHandlerCustom bagInventory;
|
||||||
private final InventoryPlayer inventory;
|
private final InventoryPlayer inventory;
|
||||||
private final boolean isVoid;
|
private final boolean isVoid;
|
||||||
public boolean autoInsert;
|
public boolean autoInsert;
|
||||||
|
@ -41,7 +39,7 @@ public class ContainerBag extends Container implements IButtonReactor{
|
||||||
|
|
||||||
public ContainerBag(InventoryPlayer inventory, boolean isVoid){
|
public ContainerBag(InventoryPlayer inventory, boolean isVoid){
|
||||||
this.inventory = inventory;
|
this.inventory = inventory;
|
||||||
this.bagInventory = new InventoryBag(isVoid);
|
this.bagInventory = new ItemStackHandlerCustom(getSlotAmount(isVoid));
|
||||||
this.isVoid = isVoid;
|
this.isVoid = isVoid;
|
||||||
|
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
|
@ -59,7 +57,7 @@ public class ContainerBag extends Container implements IButtonReactor{
|
||||||
else{
|
else{
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
for(int j = 0; j < 7; j++){
|
for(int j = 0; j < 7; j++){
|
||||||
this.addSlotToContainer(new Slot(this.bagInventory, j+i*7, 10+j*18, 10+i*18){
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.bagInventory, j+i*7, 10+j*18, 10+i*18){
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValid(ItemStack stack){
|
public boolean isItemValid(ItemStack stack){
|
||||||
return ContainerBag.this.filter.check(stack);
|
return ContainerBag.this.filter.check(stack);
|
||||||
|
@ -141,7 +139,7 @@ public class ContainerBag extends Container implements IButtonReactor{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack transferStackInSlot(EntityPlayer player, int slot){
|
public ItemStack transferStackInSlot(EntityPlayer player, int slot){
|
||||||
int inventoryStart = this.bagInventory.slots.size()+4;
|
int inventoryStart = this.bagInventory.getSlots()+4;
|
||||||
int inventoryEnd = inventoryStart+26;
|
int inventoryEnd = inventoryStart+26;
|
||||||
int hotbarStart = inventoryEnd+1;
|
int hotbarStart = inventoryEnd+1;
|
||||||
int hotbarEnd = hotbarStart+8;
|
int hotbarEnd = hotbarStart+8;
|
||||||
|
@ -216,7 +214,7 @@ public class ContainerBag extends Container implements IButtonReactor{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.bagInventory.isUsableByPlayer(player);
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -228,132 +226,4 @@ public class ContainerBag extends Container implements IButtonReactor{
|
||||||
this.filter.onButtonPressed(buttonID);
|
this.filter.onButtonPressed(buttonID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class InventoryBag implements IInventory{
|
|
||||||
|
|
||||||
public NonNullList<ItemStack> slots;
|
|
||||||
|
|
||||||
public InventoryBag(boolean isVoid){
|
|
||||||
this.slots = StackUtil.createSlots(getSlotAmount(isVoid));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName(){
|
|
||||||
return "bag";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getInventoryStackLimit(){
|
|
||||||
return 64;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void markDirty(){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isUsableByPlayer(EntityPlayer player){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void openInventory(EntityPlayer player){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void closeInventory(EntityPlayer player){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isItemValidForSlot(int index, ItemStack stack){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getField(int id){
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setField(int id, int value){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getFieldCount(){
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void clear(){
|
|
||||||
this.slots.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setInventorySlotContents(int i, ItemStack stack){
|
|
||||||
this.slots.set(i, stack);
|
|
||||||
this.markDirty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSizeInventory(){
|
|
||||||
return this.slots.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isEmpty(){
|
|
||||||
return StackUtil.isIInvEmpty(this.slots);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack getStackInSlot(int i){
|
|
||||||
if(i < this.getSizeInventory()){
|
|
||||||
return this.slots.get(i);
|
|
||||||
}
|
|
||||||
return StackUtil.getNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack decrStackSize(int i, int j){
|
|
||||||
if(StackUtil.isValid(this.slots.get(i))){
|
|
||||||
ItemStack stackAt;
|
|
||||||
if(StackUtil.getStackSize(this.slots.get(i)) <= j){
|
|
||||||
stackAt = this.slots.get(i);
|
|
||||||
this.slots.set(i, StackUtil.getNull());
|
|
||||||
this.markDirty();
|
|
||||||
return stackAt;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
stackAt = this.slots.get(i).splitStack(j);
|
|
||||||
if(StackUtil.getStackSize(this.slots.get(i)) <= 0){
|
|
||||||
this.slots.set(i, StackUtil.getNull());
|
|
||||||
}
|
|
||||||
this.markDirty();
|
|
||||||
return stackAt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return StackUtil.getNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack removeStackFromSlot(int index){
|
|
||||||
ItemStack stack = this.slots.get(index);
|
|
||||||
this.slots.set(index, StackUtil.getNull());
|
|
||||||
return stack;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasCustomName(){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ITextComponent getDisplayName(){
|
|
||||||
return new TextComponentTranslation(this.getName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -10,6 +10,7 @@
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.inventory;
|
package de.ellpeck.actuallyadditions.mod.inventory;
|
||||||
|
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBioReactor;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBioReactor;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
|
@ -28,7 +29,7 @@ public class ContainerBioReactor extends Container{
|
||||||
|
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
for(int j = 0; j < 2; j++){
|
for(int j = 0; j < 2; j++){
|
||||||
this.addSlotToContainer(new Slot(this.tile, j+i*2, 50+j*18, 13+i*18));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.tile.slots, j+i*2, 50+j*18, 13+i*18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -97,6 +98,6 @@ public class ContainerBioReactor extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.tile.isUsableByPlayer(player);
|
return this.tile.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerBreaker extends Container{
|
public class ContainerBreaker extends Container{
|
||||||
|
@ -29,7 +30,7 @@ public class ContainerBreaker extends Container{
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 3; j++){
|
for(int j = 0; j < 3; j++){
|
||||||
this.addSlotToContainer(new Slot(this.breaker, j+i*3, 62+j*18, 21+i*18));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.breaker.slots, j+i*3, 62+j*18, 21+i*18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,6 +95,6 @@ public class ContainerBreaker extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.breaker.isUsableByPlayer(player);
|
return this.breaker.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -20,6 +20,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerCanolaPress extends Container{
|
public class ContainerCanolaPress extends Container{
|
||||||
|
@ -29,7 +30,7 @@ public class ContainerCanolaPress extends Container{
|
||||||
public ContainerCanolaPress(InventoryPlayer inventory, TileEntityBase tile){
|
public ContainerCanolaPress(InventoryPlayer inventory, TileEntityBase tile){
|
||||||
this.press = (TileEntityCanolaPress)tile;
|
this.press = (TileEntityCanolaPress)tile;
|
||||||
|
|
||||||
this.addSlotToContainer(new Slot(this.press, 0, 81, 10));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.press.slots, 0, 81, 10));
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 9; j++){
|
for(int j = 0; j < 9; j++){
|
||||||
|
@ -96,6 +97,6 @@ public class ContainerCanolaPress extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.press.isUsableByPlayer(player);
|
return this.press.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -19,6 +19,7 @@ import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntityFurnace;
|
import net.minecraft.tileentity.TileEntityFurnace;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerCoalGenerator extends Container{
|
public class ContainerCoalGenerator extends Container{
|
||||||
|
@ -28,7 +29,7 @@ public class ContainerCoalGenerator extends Container{
|
||||||
public ContainerCoalGenerator(InventoryPlayer inventory, TileEntityBase tile){
|
public ContainerCoalGenerator(InventoryPlayer inventory, TileEntityBase tile){
|
||||||
this.generator = (TileEntityCoalGenerator)tile;
|
this.generator = (TileEntityCoalGenerator)tile;
|
||||||
|
|
||||||
this.addSlotToContainer(new Slot(this.generator, 0, 87, 43));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.generator.slots, 0, 87, 43));
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 9; j++){
|
for(int j = 0; j < 9; j++){
|
||||||
|
@ -95,6 +96,6 @@ public class ContainerCoalGenerator extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.generator.isUsableByPlayer(player);
|
return this.generator.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -22,6 +22,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerCoffeeMachine extends Container{
|
public class ContainerCoffeeMachine extends Container{
|
||||||
|
@ -31,13 +32,13 @@ public class ContainerCoffeeMachine extends Container{
|
||||||
public ContainerCoffeeMachine(InventoryPlayer inventory, TileEntityBase tile){
|
public ContainerCoffeeMachine(InventoryPlayer inventory, TileEntityBase tile){
|
||||||
this.machine = (TileEntityCoffeeMachine)tile;
|
this.machine = (TileEntityCoffeeMachine)tile;
|
||||||
|
|
||||||
this.addSlotToContainer(new Slot(this.machine, TileEntityCoffeeMachine.SLOT_COFFEE_BEANS, 37, 6));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.machine.slots, TileEntityCoffeeMachine.SLOT_COFFEE_BEANS, 37, 6));
|
||||||
this.addSlotToContainer(new Slot(this.machine, TileEntityCoffeeMachine.SLOT_INPUT, 80, 42));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.machine.slots, TileEntityCoffeeMachine.SLOT_INPUT, 80, 42));
|
||||||
this.addSlotToContainer(new SlotOutput(this.machine, TileEntityCoffeeMachine.SLOT_OUTPUT, 80, 73));
|
this.addSlotToContainer(new SlotOutput(this.machine.slots, TileEntityCoffeeMachine.SLOT_OUTPUT, 80, 73));
|
||||||
|
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
for(int j = 0; j < 2; j++){
|
for(int j = 0; j < 2; j++){
|
||||||
this.addSlotToContainer(new Slot(this.machine, j+i*2+3, 125+j*18, 6+i*18));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.machine.slots, j+i*2+3, 125+j*18, 6+i*18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,6 +124,6 @@ public class ContainerCoffeeMachine extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.machine.isUsableByPlayer(player);
|
return this.machine.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -18,6 +18,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerDirectionalBreaker extends Container{
|
public class ContainerDirectionalBreaker extends Container{
|
||||||
|
@ -29,7 +30,7 @@ public class ContainerDirectionalBreaker extends Container{
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 3; j++){
|
for(int j = 0; j < 3; j++){
|
||||||
this.addSlotToContainer(new Slot(this.breaker, j+i*3, 74+j*18, 21+i*18));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.breaker.slots, j+i*3, 74+j*18, 21+i*18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,6 +95,6 @@ public class ContainerDirectionalBreaker extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.breaker.isUsableByPlayer(player);
|
return this.breaker.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -13,31 +13,30 @@ package de.ellpeck.actuallyadditions.mod.inventory;
|
||||||
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotImmovable;
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotImmovable;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
|
import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ItemDrillUpgrade;
|
import de.ellpeck.actuallyadditions.mod.items.ItemDrillUpgrade;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerCustom;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.ClickType;
|
import net.minecraft.inventory.*;
|
||||||
import net.minecraft.inventory.Container;
|
|
||||||
import net.minecraft.inventory.IInventory;
|
|
||||||
import net.minecraft.inventory.Slot;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.NonNullList;
|
import net.minecraft.util.NonNullList;
|
||||||
import net.minecraft.util.text.ITextComponent;
|
import net.minecraft.util.text.ITextComponent;
|
||||||
import net.minecraft.util.text.TextComponentTranslation;
|
import net.minecraft.util.text.TextComponentTranslation;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerDrill extends Container{
|
public class ContainerDrill extends Container{
|
||||||
|
|
||||||
public static final int SLOT_AMOUNT = 5;
|
public static final int SLOT_AMOUNT = 5;
|
||||||
|
|
||||||
private final InventoryDrill drillInventory = new InventoryDrill();
|
private final ItemStackHandlerCustom drillInventory = new ItemStackHandlerCustom(SLOT_AMOUNT);
|
||||||
private final InventoryPlayer inventory;
|
private final InventoryPlayer inventory;
|
||||||
|
|
||||||
public ContainerDrill(InventoryPlayer inventory){
|
public ContainerDrill(InventoryPlayer inventory){
|
||||||
this.inventory = inventory;
|
this.inventory = inventory;
|
||||||
|
|
||||||
for(int i = 0; i < SLOT_AMOUNT; i++){
|
for(int i = 0; i < SLOT_AMOUNT; i++){
|
||||||
this.addSlotToContainer(new Slot(this.drillInventory, i, 44+i*18, 19){
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.drillInventory, i, 44+i*18, 19){
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValid(ItemStack stack){
|
public boolean isItemValid(ItemStack stack){
|
||||||
return stack.getItem() instanceof ItemDrillUpgrade;
|
return stack.getItem() instanceof ItemDrillUpgrade;
|
||||||
|
@ -139,130 +138,6 @@ public class ContainerDrill extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.drillInventory.isUsableByPlayer(player);
|
return true;
|
||||||
}
|
|
||||||
|
|
||||||
public static class InventoryDrill implements IInventory{
|
|
||||||
|
|
||||||
public NonNullList<ItemStack> slots = StackUtil.createSlots(SLOT_AMOUNT);
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName(){
|
|
||||||
return "drill";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getInventoryStackLimit(){
|
|
||||||
return 64;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void markDirty(){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isUsableByPlayer(EntityPlayer player){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void openInventory(EntityPlayer player){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void closeInventory(EntityPlayer player){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isItemValidForSlot(int index, ItemStack stack){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getField(int id){
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setField(int id, int value){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getFieldCount(){
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void clear(){
|
|
||||||
this.slots.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setInventorySlotContents(int i, ItemStack stack){
|
|
||||||
this.slots.set(i, stack);
|
|
||||||
this.markDirty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSizeInventory(){
|
|
||||||
return this.slots.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isEmpty(){
|
|
||||||
return StackUtil.isIInvEmpty(this.slots);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack getStackInSlot(int i){
|
|
||||||
if(i < this.getSizeInventory()){
|
|
||||||
return this.slots.get(i);
|
|
||||||
}
|
|
||||||
return StackUtil.getNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack decrStackSize(int i, int j){
|
|
||||||
if(StackUtil.isValid(this.slots.get(i))){
|
|
||||||
ItemStack stackAt;
|
|
||||||
if(StackUtil.getStackSize(this.slots.get(i)) <= j){
|
|
||||||
stackAt = this.slots.get(i);
|
|
||||||
this.slots.set(i, StackUtil.getNull());
|
|
||||||
this.markDirty();
|
|
||||||
return stackAt;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
stackAt = this.slots.get(i).splitStack(j);
|
|
||||||
if(StackUtil.getStackSize(this.slots.get(i)) <= 0){
|
|
||||||
this.slots.set(i, StackUtil.getNull());
|
|
||||||
}
|
|
||||||
this.markDirty();
|
|
||||||
return stackAt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return StackUtil.getNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack removeStackFromSlot(int index){
|
|
||||||
ItemStack stack = this.slots.get(index);
|
|
||||||
this.slots.set(index, StackUtil.getNull());
|
|
||||||
return stack;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasCustomName(){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ITextComponent getDisplayName(){
|
|
||||||
return new TextComponentTranslation(this.getName());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -18,6 +18,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerDropper extends Container{
|
public class ContainerDropper extends Container{
|
||||||
|
@ -29,7 +30,7 @@ public class ContainerDropper extends Container{
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 3; j++){
|
for(int j = 0; j < 3; j++){
|
||||||
this.addSlotToContainer(new Slot(this.dropper, j+i*3, 62+j*18, 21+i*18));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.dropper.slots, j+i*3, 62+j*18, 21+i*18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,6 +95,6 @@ public class ContainerDropper extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.dropper.isUsableByPlayer(player);
|
return this.dropper.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -26,6 +26,7 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.energy.CapabilityEnergy;
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerEnergizer extends Container{
|
public class ContainerEnergizer extends Container{
|
||||||
|
@ -37,8 +38,8 @@ public class ContainerEnergizer extends Container{
|
||||||
this.energizer = (TileEntityEnergizer)tile;
|
this.energizer = (TileEntityEnergizer)tile;
|
||||||
InventoryPlayer inventory = player.inventory;
|
InventoryPlayer inventory = player.inventory;
|
||||||
|
|
||||||
this.addSlotToContainer(new Slot(this.energizer, 0, 76, 73));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.energizer.slots, 0, 76, 73));
|
||||||
this.addSlotToContainer(new SlotOutput(this.energizer, 1, 76, 42));
|
this.addSlotToContainer(new SlotOutput(this.energizer.slots, 1, 76, 42));
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 9; j++){
|
for(int j = 0; j < 9; j++){
|
||||||
|
@ -133,6 +134,6 @@ public class ContainerEnergizer extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.energizer.isUsableByPlayer(player);
|
return this.energizer.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -26,6 +26,7 @@ import net.minecraft.item.ItemStack;
|
||||||
import net.minecraftforge.energy.CapabilityEnergy;
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerEnervator extends Container{
|
public class ContainerEnervator extends Container{
|
||||||
|
@ -36,8 +37,8 @@ public class ContainerEnervator extends Container{
|
||||||
this.enervator = (TileEntityEnervator)tile;
|
this.enervator = (TileEntityEnervator)tile;
|
||||||
InventoryPlayer inventory = player.inventory;
|
InventoryPlayer inventory = player.inventory;
|
||||||
|
|
||||||
this.addSlotToContainer(new Slot(this.enervator, 0, 76, 73));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.enervator.slots, 0, 76, 73));
|
||||||
this.addSlotToContainer(new SlotOutput(this.enervator, 1, 76, 42));
|
this.addSlotToContainer(new SlotOutput(this.enervator.slots, 1, 76, 42));
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 9; j++){
|
for(int j = 0; j < 9; j++){
|
||||||
|
@ -132,6 +133,6 @@ public class ContainerEnervator extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.enervator.isUsableByPlayer(player);
|
return this.enervator.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -18,6 +18,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerFarmer extends Container{
|
public class ContainerFarmer extends Container{
|
||||||
|
@ -29,12 +30,12 @@ public class ContainerFarmer extends Container{
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 2; j++){
|
for(int j = 0; j < 2; j++){
|
||||||
this.addSlotToContainer(new Slot(this.farmer, j+i*2, 67+j*18, 21+i*18));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.farmer.slots, j+i*2, 67+j*18, 21+i*18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 2; j++){
|
for(int j = 0; j < 2; j++){
|
||||||
this.addSlotToContainer(new Slot(this.farmer, 6+j+i*2, 105+j*18, 21+i*18));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.farmer.slots, 6+j+i*2, 105+j*18, 21+i*18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -103,6 +104,6 @@ public class ContainerFarmer extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.farmer.isUsableByPlayer(player);
|
return this.farmer.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -18,6 +18,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerFeeder extends Container{
|
public class ContainerFeeder extends Container{
|
||||||
|
@ -26,7 +27,7 @@ public class ContainerFeeder extends Container{
|
||||||
|
|
||||||
public ContainerFeeder(InventoryPlayer inventory, TileEntityBase tile){
|
public ContainerFeeder(InventoryPlayer inventory, TileEntityBase tile){
|
||||||
this.tileFeeder = (TileEntityFeeder)tile;
|
this.tileFeeder = (TileEntityFeeder)tile;
|
||||||
this.addSlotToContainer(new Slot(this.tileFeeder, 0, 80, 45));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.tileFeeder.slots, 0, 80, 45));
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 9; j++){
|
for(int j = 0; j < 9; j++){
|
||||||
|
@ -89,6 +90,6 @@ public class ContainerFeeder extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.tileFeeder.isUsableByPlayer(player);
|
return this.tileFeeder.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -14,24 +14,23 @@ import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter;
|
||||||
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotImmovable;
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotImmovable;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
|
import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ItemFilter;
|
import de.ellpeck.actuallyadditions.mod.items.ItemFilter;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerCustom;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.InventoryPlayer;
|
import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.ClickType;
|
import net.minecraft.inventory.*;
|
||||||
import net.minecraft.inventory.Container;
|
|
||||||
import net.minecraft.inventory.IInventory;
|
|
||||||
import net.minecraft.inventory.Slot;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.NonNullList;
|
import net.minecraft.util.NonNullList;
|
||||||
import net.minecraft.util.text.ITextComponent;
|
import net.minecraft.util.text.ITextComponent;
|
||||||
import net.minecraft.util.text.TextComponentTranslation;
|
import net.minecraft.util.text.TextComponentTranslation;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerFilter extends Container{
|
public class ContainerFilter extends Container{
|
||||||
|
|
||||||
public static final int SLOT_AMOUNT = 24;
|
public static final int SLOT_AMOUNT = 24;
|
||||||
|
|
||||||
private final InventoryFilter filterInventory = new InventoryFilter();
|
private final ItemStackHandlerCustom filterInventory = new ItemStackHandlerCustom(SLOT_AMOUNT);
|
||||||
private final InventoryPlayer inventory;
|
private final InventoryPlayer inventory;
|
||||||
|
|
||||||
public ContainerFilter(InventoryPlayer inventory){
|
public ContainerFilter(InventoryPlayer inventory){
|
||||||
|
@ -134,130 +133,6 @@ public class ContainerFilter extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.filterInventory.isUsableByPlayer(player);
|
return true;
|
||||||
}
|
|
||||||
|
|
||||||
public static class InventoryFilter implements IInventory{
|
|
||||||
|
|
||||||
public NonNullList<ItemStack> slots = StackUtil.createSlots(SLOT_AMOUNT);
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName(){
|
|
||||||
return "filter";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getInventoryStackLimit(){
|
|
||||||
return 64;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void markDirty(){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isUsableByPlayer(EntityPlayer player){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void openInventory(EntityPlayer player){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void closeInventory(EntityPlayer player){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isItemValidForSlot(int index, ItemStack stack){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getField(int id){
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setField(int id, int value){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getFieldCount(){
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void clear(){
|
|
||||||
this.slots.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setInventorySlotContents(int i, ItemStack stack){
|
|
||||||
this.slots.set(i, stack);
|
|
||||||
this.markDirty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSizeInventory(){
|
|
||||||
return this.slots.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isEmpty(){
|
|
||||||
return StackUtil.isIInvEmpty(this.slots);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack getStackInSlot(int i){
|
|
||||||
if(i < this.getSizeInventory()){
|
|
||||||
return this.slots.get(i);
|
|
||||||
}
|
|
||||||
return StackUtil.getNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack decrStackSize(int i, int j){
|
|
||||||
if(StackUtil.isValid(this.slots.get(i))){
|
|
||||||
ItemStack stackAt;
|
|
||||||
if(StackUtil.getStackSize(this.slots.get(i)) <= j){
|
|
||||||
stackAt = this.slots.get(i);
|
|
||||||
this.slots.set(i, StackUtil.getNull());
|
|
||||||
this.markDirty();
|
|
||||||
return stackAt;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
stackAt = this.slots.get(i).splitStack(j);
|
|
||||||
if(StackUtil.getStackSize(this.slots.get(i)) <= 0){
|
|
||||||
this.slots.set(i, StackUtil.getNull());
|
|
||||||
}
|
|
||||||
this.markDirty();
|
|
||||||
return stackAt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return StackUtil.getNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack removeStackFromSlot(int index){
|
|
||||||
ItemStack stack = this.slots.get(index);
|
|
||||||
this.slots.set(index, StackUtil.getNull());
|
|
||||||
return stack;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasCustomName(){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ITextComponent getDisplayName(){
|
|
||||||
return new TextComponentTranslation(this.getName());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -10,6 +10,7 @@
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.inventory;
|
package de.ellpeck.actuallyadditions.mod.inventory;
|
||||||
|
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotOutput;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityBase;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityFurnaceDouble;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityFurnaceDouble;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
|
@ -20,6 +21,7 @@ import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.inventory.SlotFurnaceOutput;
|
import net.minecraft.inventory.SlotFurnaceOutput;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.crafting.FurnaceRecipes;
|
import net.minecraft.item.crafting.FurnaceRecipes;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerFurnaceDouble extends Container{
|
public class ContainerFurnaceDouble extends Container{
|
||||||
|
@ -29,10 +31,10 @@ public class ContainerFurnaceDouble extends Container{
|
||||||
public ContainerFurnaceDouble(InventoryPlayer inventory, TileEntityBase tile){
|
public ContainerFurnaceDouble(InventoryPlayer inventory, TileEntityBase tile){
|
||||||
this.tileFurnace = (TileEntityFurnaceDouble)tile;
|
this.tileFurnace = (TileEntityFurnaceDouble)tile;
|
||||||
|
|
||||||
this.addSlotToContainer(new Slot(this.tileFurnace, TileEntityFurnaceDouble.SLOT_INPUT_1, 51, 21));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.tileFurnace.slots, TileEntityFurnaceDouble.SLOT_INPUT_1, 51, 21));
|
||||||
this.addSlotToContainer(new SlotFurnaceOutput(inventory.player, this.tileFurnace, TileEntityFurnaceDouble.SLOT_OUTPUT_1, 51, 69));
|
this.addSlotToContainer(new SlotOutput(this.tileFurnace.slots, TileEntityFurnaceDouble.SLOT_OUTPUT_1, 51, 69));
|
||||||
this.addSlotToContainer(new Slot(this.tileFurnace, TileEntityFurnaceDouble.SLOT_INPUT_2, 109, 21));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.tileFurnace.slots, TileEntityFurnaceDouble.SLOT_INPUT_2, 109, 21));
|
||||||
this.addSlotToContainer(new SlotFurnaceOutput(inventory.player, this.tileFurnace, TileEntityFurnaceDouble.SLOT_OUTPUT_2, 108, 69));
|
this.addSlotToContainer(new SlotOutput(this.tileFurnace.slots, TileEntityFurnaceDouble.SLOT_OUTPUT_2, 108, 69));
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 9; j++){
|
for(int j = 0; j < 9; j++){
|
||||||
|
@ -108,6 +110,6 @@ public class ContainerFurnaceDouble extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.tileFurnace.isUsableByPlayer(player);
|
return this.tileFurnace.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -19,6 +19,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
@ChestContainer(rowSize = 13, isLargeChest = true)
|
@ChestContainer(rowSize = 13, isLargeChest = true)
|
||||||
public class ContainerGiantChest extends Container{
|
public class ContainerGiantChest extends Container{
|
||||||
|
@ -30,7 +31,7 @@ public class ContainerGiantChest extends Container{
|
||||||
|
|
||||||
for(int i = 0; i < 9; i++){
|
for(int i = 0; i < 9; i++){
|
||||||
for(int j = 0; j < 13; j++){
|
for(int j = 0; j < 13; j++){
|
||||||
this.addSlotToContainer(new Slot(this.tileChest, (9*13*page)+j+(i*13), 5+j*18, 5+i*18));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.tileChest.slots, (9*13*page)+j+(i*13), 5+j*18, 5+i*18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,6 +96,6 @@ public class ContainerGiantChest extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.tileChest.isUsableByPlayer(player);
|
return this.tileChest.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -20,6 +20,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerGrinder extends Container{
|
public class ContainerGrinder extends Container{
|
||||||
|
@ -31,13 +32,13 @@ public class ContainerGrinder extends Container{
|
||||||
this.tileGrinder = (TileEntityGrinder)tile;
|
this.tileGrinder = (TileEntityGrinder)tile;
|
||||||
this.isDouble = isDouble;
|
this.isDouble = isDouble;
|
||||||
|
|
||||||
this.addSlotToContainer(new Slot(this.tileGrinder, TileEntityGrinder.SLOT_INPUT_1, this.isDouble ? 51 : 80, 21));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.tileGrinder.slots, TileEntityGrinder.SLOT_INPUT_1, this.isDouble ? 51 : 80, 21));
|
||||||
this.addSlotToContainer(new SlotOutput(this.tileGrinder, TileEntityGrinder.SLOT_OUTPUT_1_1, this.isDouble ? 37 : 66, 69));
|
this.addSlotToContainer(new SlotOutput(this.tileGrinder.slots, TileEntityGrinder.SLOT_OUTPUT_1_1, this.isDouble ? 37 : 66, 69));
|
||||||
this.addSlotToContainer(new SlotOutput(this.tileGrinder, TileEntityGrinder.SLOT_OUTPUT_1_2, this.isDouble ? 64 : 92, 69));
|
this.addSlotToContainer(new SlotOutput(this.tileGrinder.slots, TileEntityGrinder.SLOT_OUTPUT_1_2, this.isDouble ? 64 : 92, 69));
|
||||||
if(this.isDouble){
|
if(this.isDouble){
|
||||||
this.addSlotToContainer(new Slot(this.tileGrinder, TileEntityGrinder.SLOT_INPUT_2, 109, 21));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.tileGrinder.slots, TileEntityGrinder.SLOT_INPUT_2, 109, 21));
|
||||||
this.addSlotToContainer(new SlotOutput(this.tileGrinder, TileEntityGrinder.SLOT_OUTPUT_2_1, 96, 69));
|
this.addSlotToContainer(new SlotOutput(this.tileGrinder.slots, TileEntityGrinder.SLOT_OUTPUT_2_1, 96, 69));
|
||||||
this.addSlotToContainer(new SlotOutput(this.tileGrinder, TileEntityGrinder.SLOT_OUTPUT_2_2, 121, 69));
|
this.addSlotToContainer(new SlotOutput(this.tileGrinder.slots, TileEntityGrinder.SLOT_OUTPUT_2_2, 121, 69));
|
||||||
}
|
}
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
|
@ -119,6 +120,6 @@ public class ContainerGrinder extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.tileGrinder.isUsableByPlayer(player);
|
return this.tileGrinder.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -21,6 +21,7 @@ import net.minecraft.inventory.ClickType;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerInputter extends Container{
|
public class ContainerInputter extends Container{
|
||||||
|
@ -33,7 +34,7 @@ public class ContainerInputter extends Container{
|
||||||
this.tileInputter = (TileEntityInputter)tile;
|
this.tileInputter = (TileEntityInputter)tile;
|
||||||
this.isAdvanced = isAdvanced;
|
this.isAdvanced = isAdvanced;
|
||||||
|
|
||||||
this.addSlotToContainer(new Slot(this.tileInputter, 0, 80, 21+(isAdvanced ? 12 : 0)));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.tileInputter.slots, 0, 80, 21+(isAdvanced ? 12 : 0)));
|
||||||
|
|
||||||
if(isAdvanced){
|
if(isAdvanced){
|
||||||
for(int i = 0; i < 2; i++){
|
for(int i = 0; i < 2; i++){
|
||||||
|
@ -116,6 +117,6 @@ public class ContainerInputter extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.tileInputter.isUsableByPlayer(player);
|
return this.tileInputter.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -49,7 +49,7 @@ public class ContainerLaserRelayItemWhitelist extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemStack transferStackInSlot(EntityPlayer player, int slot){
|
public ItemStack transferStackInSlot(EntityPlayer player, int slot){
|
||||||
int inventoryStart = 0;
|
int inventoryStart = 24;
|
||||||
int inventoryEnd = inventoryStart+26;
|
int inventoryEnd = inventoryStart+26;
|
||||||
int hotbarStart = inventoryEnd+1;
|
int hotbarStart = inventoryEnd+1;
|
||||||
int hotbarEnd = hotbarStart+8;
|
int hotbarEnd = hotbarStart+8;
|
||||||
|
|
|
@ -18,6 +18,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerMiner extends Container{
|
public class ContainerMiner extends Container{
|
||||||
|
@ -29,7 +30,7 @@ public class ContainerMiner extends Container{
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 3; j++){
|
for(int j = 0; j < 3; j++){
|
||||||
this.addSlotToContainer(new Slot(this.miner, j+i*3, 62+j*18, 21+i*18));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.miner.slots, j+i*3, 62+j*18, 21+i*18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,6 +95,6 @@ public class ContainerMiner extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.miner.isUsableByPlayer(player);
|
return this.miner.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -18,6 +18,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerPhantomPlacer extends Container{
|
public class ContainerPhantomPlacer extends Container{
|
||||||
|
@ -29,7 +30,7 @@ public class ContainerPhantomPlacer extends Container{
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 3; j++){
|
for(int j = 0; j < 3; j++){
|
||||||
this.addSlotToContainer(new Slot(this.placer, j+i*3, 62+j*18, 21+i*18));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.placer.slots, j+i*3, 62+j*18, 21+i*18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,6 +95,6 @@ public class ContainerPhantomPlacer extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.placer.isUsableByPlayer(player);
|
return this.placer.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -20,6 +20,7 @@ import net.minecraft.inventory.ClickType;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerRangedCollector extends Container{
|
public class ContainerRangedCollector extends Container{
|
||||||
|
@ -31,7 +32,7 @@ public class ContainerRangedCollector extends Container{
|
||||||
|
|
||||||
for(int i = 0; i < 2; i++){
|
for(int i = 0; i < 2; i++){
|
||||||
for(int j = 0; j < 3; j++){
|
for(int j = 0; j < 3; j++){
|
||||||
this.addSlotToContainer(new Slot(this.collector, j+i*3, 96+j*18, 24+i*18));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.collector.slots, j+i*3, 96+j*18, 24+i*18));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for(int i = 0; i < 4; i++){
|
for(int i = 0; i < 4; i++){
|
||||||
|
@ -111,6 +112,6 @@ public class ContainerRangedCollector extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.collector.isUsableByPlayer(player);
|
return this.collector.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -19,6 +19,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerRepairer extends Container{
|
public class ContainerRepairer extends Container{
|
||||||
|
@ -28,8 +29,8 @@ public class ContainerRepairer extends Container{
|
||||||
public ContainerRepairer(InventoryPlayer inventory, TileEntityBase tile){
|
public ContainerRepairer(InventoryPlayer inventory, TileEntityBase tile){
|
||||||
this.tileRepairer = (TileEntityItemRepairer)tile;
|
this.tileRepairer = (TileEntityItemRepairer)tile;
|
||||||
|
|
||||||
this.addSlotToContainer(new Slot(this.tileRepairer, TileEntityItemRepairer.SLOT_INPUT, 47, 53));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.tileRepairer.slots, TileEntityItemRepairer.SLOT_INPUT, 47, 53));
|
||||||
this.addSlotToContainer(new SlotOutput(this.tileRepairer, TileEntityItemRepairer.SLOT_OUTPUT, 109, 53));
|
this.addSlotToContainer(new SlotOutput(this.tileRepairer.slots, TileEntityItemRepairer.SLOT_OUTPUT, 109, 53));
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 9; j++){
|
for(int j = 0; j < 9; j++){
|
||||||
|
@ -96,6 +97,6 @@ public class ContainerRepairer extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.tileRepairer.isUsableByPlayer(player);
|
return this.tileRepairer.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -20,6 +20,7 @@ import net.minecraft.entity.player.InventoryPlayer;
|
||||||
import net.minecraft.inventory.Container;
|
import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
|
|
||||||
public class ContainerXPSolidifier extends Container{
|
public class ContainerXPSolidifier extends Container{
|
||||||
|
@ -29,8 +30,8 @@ public class ContainerXPSolidifier extends Container{
|
||||||
public ContainerXPSolidifier(InventoryPlayer inventory, TileEntityBase tile){
|
public ContainerXPSolidifier(InventoryPlayer inventory, TileEntityBase tile){
|
||||||
this.solidifier = (TileEntityXPSolidifier)tile;
|
this.solidifier = (TileEntityXPSolidifier)tile;
|
||||||
|
|
||||||
this.addSlotToContainer(new SlotOutput(this.solidifier, 0, 95, 8));
|
this.addSlotToContainer(new SlotOutput(this.solidifier.slots, 0, 95, 8));
|
||||||
this.addSlotToContainer(new Slot(this.solidifier, 1, 65, 8));
|
this.addSlotToContainer(new SlotItemHandlerUnconditioned(this.solidifier.slots, 1, 65, 8));
|
||||||
|
|
||||||
for(int i = 0; i < 3; i++){
|
for(int i = 0; i < 3; i++){
|
||||||
for(int j = 0; j < 9; j++){
|
for(int j = 0; j < 9; j++){
|
||||||
|
@ -94,6 +95,6 @@ public class ContainerXPSolidifier extends Container{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInteractWith(EntityPlayer player){
|
public boolean canInteractWith(EntityPlayer player){
|
||||||
return this.solidifier.isUsableByPlayer(player);
|
return this.solidifier.canPlayerUse(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -62,7 +62,7 @@ public class GuiRepairer extends GuiContainer{
|
||||||
this.mc.getTextureManager().bindTexture(RES_LOC);
|
this.mc.getTextureManager().bindTexture(RES_LOC);
|
||||||
this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, 176, 93);
|
this.drawTexturedModalRect(this.guiLeft, this.guiTop, 0, 0, 176, 93);
|
||||||
|
|
||||||
if(TileEntityItemRepairer.canBeRepaired(this.tileRepairer.slots.get(TileEntityItemRepairer.SLOT_INPUT))){
|
if(TileEntityItemRepairer.canBeRepaired(this.tileRepairer.slots.getStackInSlot(TileEntityItemRepairer.SLOT_INPUT))){
|
||||||
int i = this.tileRepairer.getItemDamageToScale(22);
|
int i = this.tileRepairer.getItemDamageToScale(22);
|
||||||
this.drawTexturedModalRect(this.guiLeft+73, this.guiTop+52, 176, 28, i, 16);
|
this.drawTexturedModalRect(this.guiLeft+73, this.guiTop+52, 176, 28, i, 16);
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,13 +10,15 @@
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.inventory.slot;
|
package de.ellpeck.actuallyadditions.mod.inventory.slot;
|
||||||
|
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerCustom;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
public class SlotDeletion extends Slot{
|
public class SlotDeletion extends SlotItemHandlerUnconditioned{
|
||||||
|
|
||||||
public SlotDeletion(IInventory inv, int slot, int x, int y){
|
public SlotDeletion(ItemStackHandlerCustom inv, int slot, int x, int y){
|
||||||
super(inv, slot, x, y);
|
super(inv, slot, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -12,6 +12,7 @@ package de.ellpeck.actuallyadditions.mod.inventory.slot;
|
||||||
|
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ItemFilter;
|
import de.ellpeck.actuallyadditions.mod.items.ItemFilter;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.FilterSettings;
|
import de.ellpeck.actuallyadditions.mod.tile.FilterSettings;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerCustom;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.ClickType;
|
import net.minecraft.inventory.ClickType;
|
||||||
|
@ -19,10 +20,11 @@ import net.minecraft.inventory.Container;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.inventory.Slot;
|
import net.minecraft.inventory.Slot;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotItemHandlerUnconditioned;
|
||||||
|
|
||||||
public class SlotFilter extends Slot{
|
public class SlotFilter extends SlotItemHandlerUnconditioned{
|
||||||
|
|
||||||
public SlotFilter(IInventory inv, int slot, int x, int y){
|
public SlotFilter(ItemStackHandlerCustom inv, int slot, int x, int y){
|
||||||
super(inv, slot, x, y);
|
super(inv, slot, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
/*
|
||||||
|
* This file ("SlotItemHandlerUnconditioned.java") is part of the Actually Additions mod for Minecraft.
|
||||||
|
* It is created and owned by Ellpeck and distributed
|
||||||
|
* under the Actually Additions License to be found at
|
||||||
|
* http://ellpeck.de/actaddlicense
|
||||||
|
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
|
||||||
|
*
|
||||||
|
* © 2015-2016 Ellpeck
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.ellpeck.actuallyadditions.mod.inventory.slot;
|
||||||
|
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerCustom;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraftforge.items.SlotItemHandler;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
public class SlotItemHandlerUnconditioned extends SlotItemHandler{
|
||||||
|
|
||||||
|
private final ItemStackHandlerCustom handler;
|
||||||
|
|
||||||
|
public SlotItemHandlerUnconditioned(ItemStackHandlerCustom handler, int index, int xPosition, int yPosition){
|
||||||
|
super(handler, index, xPosition, yPosition);
|
||||||
|
this.handler = handler;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isItemValid(ItemStack stack){
|
||||||
|
if(StackUtil.isValid(stack)){
|
||||||
|
ItemStack currentStack = this.handler.getStackInSlot(this.getSlotIndex());
|
||||||
|
this.handler.setStackInSlot(this.getSlotIndex(), ItemStack.EMPTY);
|
||||||
|
ItemStack remainder = this.handler.insertItemInternal(this.getSlotIndex(), stack, true);
|
||||||
|
this.handler.setStackInSlot(this.getSlotIndex(), currentStack);
|
||||||
|
return remainder == null || remainder.getCount() < stack.getCount();
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Helper fnct to get the stack in the slot.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
@Nonnull
|
||||||
|
public ItemStack getStack(){
|
||||||
|
return this.handler.getStackInSlot(this.getSlotIndex());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void putStack(ItemStack stack){
|
||||||
|
this.handler.setStackInSlot(this.getSlotIndex(), stack);
|
||||||
|
this.onSlotChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getItemStackLimit(ItemStack stack){
|
||||||
|
ItemStack maxAdd = stack.copy();
|
||||||
|
maxAdd.setCount(stack.getMaxStackSize());
|
||||||
|
ItemStack currentStack = this.handler.getStackInSlot(this.getSlotIndex());
|
||||||
|
this.handler.setStackInSlot(this.getSlotIndex(), ItemStack.EMPTY);
|
||||||
|
ItemStack remainder = this.handler.insertItemInternal(this.getSlotIndex(), maxAdd, true);
|
||||||
|
this.handler.setStackInSlot(this.getSlotIndex(), currentStack);
|
||||||
|
return stack.getMaxStackSize()-remainder.getCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canTakeStack(EntityPlayer playerIn){
|
||||||
|
return !this.handler.extractItemInternal(this.getSlotIndex(), 1, true).isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack decrStackSize(int amount){
|
||||||
|
return this.handler.extractItemInternal(this.getSlotIndex(), amount, false);
|
||||||
|
}
|
||||||
|
}
|
|
@ -10,13 +10,12 @@
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.inventory.slot;
|
package de.ellpeck.actuallyadditions.mod.inventory.slot;
|
||||||
|
|
||||||
import net.minecraft.inventory.IInventory;
|
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerCustom;
|
||||||
import net.minecraft.inventory.Slot;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
public class SlotOutput extends Slot{
|
public class SlotOutput extends SlotItemHandlerUnconditioned{
|
||||||
|
|
||||||
public SlotOutput(IInventory inventory, int id, int x, int y){
|
public SlotOutput(ItemStackHandlerCustom inventory, int id, int x, int y){
|
||||||
super(inventory, id, x, y);
|
super(inventory, id, x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ import de.ellpeck.actuallyadditions.mod.inventory.ContainerBag;
|
||||||
import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler.GuiTypes;
|
import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler.GuiTypes;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
|
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.FilterSettings;
|
import de.ellpeck.actuallyadditions.mod.tile.FilterSettings;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerCustom;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
|
import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
import net.minecraft.entity.item.EntityItem;
|
import net.minecraft.entity.item.EntityItem;
|
||||||
|
@ -53,13 +54,13 @@ public class ItemBag extends ItemBase{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> tooltip, boolean advanced){
|
public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> tooltip, boolean advanced){
|
||||||
IInventory inv = new InventoryBasic("Bag", false, ContainerBag.getSlotAmount(this.isVoid));
|
ItemStackHandlerCustom inv = new ItemStackHandlerCustom(ContainerBag.getSlotAmount(this.isVoid));
|
||||||
ItemDrill.loadSlotsFromNBT(inv, stack);
|
ItemDrill.loadSlotsFromNBT(inv, stack);
|
||||||
|
|
||||||
int slotsTotal = inv.getSizeInventory();
|
int slotsTotal = inv.getSlots();
|
||||||
int slotsFilled = 0;
|
int slotsFilled = 0;
|
||||||
|
|
||||||
for(int i = 0; i < inv.getSizeInventory(); i++){
|
for(int i = 0; i < inv.getSlots(); i++){
|
||||||
if(StackUtil.isValid(inv.getStackInSlot(i))){
|
if(StackUtil.isValid(inv.getStackInSlot(i))){
|
||||||
slotsFilled++;
|
slotsFilled++;
|
||||||
}
|
}
|
||||||
|
@ -88,7 +89,7 @@ public class ItemBag extends ItemBase{
|
||||||
boolean changed = false;
|
boolean changed = false;
|
||||||
|
|
||||||
boolean isVoid = ((ItemBag)invStack.getItem()).isVoid;
|
boolean isVoid = ((ItemBag)invStack.getItem()).isVoid;
|
||||||
IInventory inv = new InventoryBasic("Bag", false, ContainerBag.getSlotAmount(isVoid));
|
ItemStackHandlerCustom inv = new ItemStackHandlerCustom(ContainerBag.getSlotAmount(isVoid));
|
||||||
ItemDrill.loadSlotsFromNBT(inv, invStack);
|
ItemDrill.loadSlotsFromNBT(inv, invStack);
|
||||||
|
|
||||||
FilterSettings filter = new FilterSettings(4, false, false, false, false, 0, 0);
|
FilterSettings filter = new FilterSettings(4, false, false, false, false, 0, 0);
|
||||||
|
@ -99,20 +100,20 @@ public class ItemBag extends ItemBase{
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
for(int j = 0; j < inv.getSizeInventory(); j++){
|
for(int j = 0; j < inv.getSlots(); j++){
|
||||||
ItemStack bagStack = inv.getStackInSlot(j);
|
ItemStack bagStack = inv.getStackInSlot(j);
|
||||||
if(StackUtil.isValid(bagStack)){
|
if(StackUtil.isValid(bagStack)){
|
||||||
if(ItemUtil.canBeStacked(bagStack, stack)){
|
if(ItemUtil.canBeStacked(bagStack, stack)){
|
||||||
int maxTransfer = Math.min(StackUtil.getStackSize(stack), stack.getMaxStackSize()-StackUtil.getStackSize(bagStack));
|
int maxTransfer = Math.min(StackUtil.getStackSize(stack), stack.getMaxStackSize()-StackUtil.getStackSize(bagStack));
|
||||||
if(maxTransfer > 0){
|
if(maxTransfer > 0){
|
||||||
inv.setInventorySlotContents(j, StackUtil.addStackSize(bagStack, maxTransfer));
|
inv.setStackInSlot(j, StackUtil.addStackSize(bagStack, maxTransfer));
|
||||||
stack = StackUtil.addStackSize(stack, -maxTransfer);
|
stack = StackUtil.addStackSize(stack, -maxTransfer);
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
inv.setInventorySlotContents(j, stack.copy());
|
inv.setStackInSlot(j, stack.copy());
|
||||||
stack = StackUtil.setStackSize(stack, 0);
|
stack = StackUtil.setStackSize(stack, 0);
|
||||||
changed = true;
|
changed = true;
|
||||||
}
|
}
|
||||||
|
@ -155,16 +156,16 @@ public class ItemBag extends ItemBase{
|
||||||
if(handler != null){
|
if(handler != null){
|
||||||
boolean changed = false;
|
boolean changed = false;
|
||||||
|
|
||||||
IInventory inv = new InventoryBasic("Bag", false, ContainerBag.getSlotAmount(this.isVoid));
|
ItemStackHandlerCustom inv = new ItemStackHandlerCustom(ContainerBag.getSlotAmount(this.isVoid));
|
||||||
ItemDrill.loadSlotsFromNBT(inv, stack);
|
ItemDrill.loadSlotsFromNBT(inv, stack);
|
||||||
|
|
||||||
for(int j = 4; j < inv.getSizeInventory(); j++){
|
for(int j = 4; j < inv.getSlots(); j++){
|
||||||
ItemStack invStack = inv.getStackInSlot(j);
|
ItemStack invStack = inv.getStackInSlot(j);
|
||||||
if(StackUtil.isValid(invStack)){
|
if(StackUtil.isValid(invStack)){
|
||||||
for(int i = 0; i < handler.getSlots(); i++){
|
for(int i = 0; i < handler.getSlots(); i++){
|
||||||
ItemStack remain = handler.insertItem(i, invStack, false);
|
ItemStack remain = handler.insertItem(i, invStack, false);
|
||||||
if(!ItemStack.areItemStacksEqual(remain, invStack)){
|
if(!ItemStack.areItemStacksEqual(remain, invStack)){
|
||||||
inv.setInventorySlotContents(j, StackUtil.validateCopy(remain));
|
inv.setStackInSlot(j, StackUtil.validateCopy(remain));
|
||||||
changed = true;
|
changed = true;
|
||||||
|
|
||||||
if(!StackUtil.isValid(remain)){
|
if(!StackUtil.isValid(remain)){
|
||||||
|
|
|
@ -11,6 +11,7 @@
|
||||||
package de.ellpeck.actuallyadditions.mod.items;
|
package de.ellpeck.actuallyadditions.mod.items;
|
||||||
|
|
||||||
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
|
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityInventoryBase;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
@ -24,13 +25,15 @@ import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||||
|
import net.minecraftforge.items.wrapper.InvWrapper;
|
||||||
|
|
||||||
public class ItemChestToCrateUpgrade extends ItemBase{
|
public class ItemChestToCrateUpgrade extends ItemBase{
|
||||||
|
|
||||||
private final Class<? extends IInventory> start;
|
private final Class start;
|
||||||
private final IBlockState end;
|
private final IBlockState end;
|
||||||
|
|
||||||
public ItemChestToCrateUpgrade(String name, Class<? extends IInventory> start, IBlockState end){
|
public ItemChestToCrateUpgrade(String name, Class start, IBlockState end){
|
||||||
super(name);
|
super(name);
|
||||||
this.start = start;
|
this.start = start;
|
||||||
this.end = end;
|
this.end = end;
|
||||||
|
@ -45,35 +48,45 @@ public class ItemChestToCrateUpgrade extends ItemBase{
|
||||||
if(!world.isRemote){
|
if(!world.isRemote){
|
||||||
|
|
||||||
//Copy Slots
|
//Copy Slots
|
||||||
IInventory chest = (IInventory)tileHit;
|
IItemHandlerModifiable chest = null;
|
||||||
ItemStack[] stacks = new ItemStack[chest.getSizeInventory()];
|
if(tileHit instanceof IInventory){
|
||||||
for(int i = 0; i < stacks.length; i++){
|
chest = new InvWrapper((IInventory)tileHit);
|
||||||
ItemStack aStack = chest.getStackInSlot(i);
|
}
|
||||||
if(StackUtil.isValid(aStack)){
|
else if(tileHit instanceof TileEntityInventoryBase){
|
||||||
stacks[i] = aStack.copy();
|
chest = ((TileEntityInventoryBase)tileHit).slots;
|
||||||
chest.setInventorySlotContents(i, StackUtil.getNull());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Set New Block
|
if(chest != null){
|
||||||
world.playEvent(2001, pos, Block.getStateId(world.getBlockState(pos)));
|
ItemStack[] stacks = new ItemStack[chest.getSlots()];
|
||||||
world.setBlockState(pos, this.end, 2);
|
|
||||||
|
|
||||||
//Copy Items into new Chest
|
|
||||||
TileEntity newTileHit = world.getTileEntity(pos);
|
|
||||||
if(newTileHit instanceof IInventory){
|
|
||||||
IInventory newChest = (IInventory)newTileHit;
|
|
||||||
for(int i = 0; i < stacks.length; i++){
|
for(int i = 0; i < stacks.length; i++){
|
||||||
if(StackUtil.isValid(stacks[i])){
|
ItemStack aStack = chest.getStackInSlot(i);
|
||||||
if(newChest.getSizeInventory() > i){
|
if(StackUtil.isValid(aStack)){
|
||||||
newChest.setInventorySlotContents(i, stacks[i].copy());
|
stacks[i] = aStack.copy();
|
||||||
|
chest.setStackInSlot(i, StackUtil.getNull());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Set New Block
|
||||||
|
world.playEvent(2001, pos, Block.getStateId(world.getBlockState(pos)));
|
||||||
|
world.setBlockState(pos, this.end, 2);
|
||||||
|
|
||||||
|
//Copy Items into new Chest
|
||||||
|
TileEntity newTileHit = world.getTileEntity(pos);
|
||||||
|
if(newTileHit instanceof TileEntityInventoryBase){
|
||||||
|
IItemHandlerModifiable newChest = ((TileEntityInventoryBase)newTileHit).slots;
|
||||||
|
|
||||||
|
for(int i = 0; i < stacks.length; i++){
|
||||||
|
if(StackUtil.isValid(stacks[i])){
|
||||||
|
if(newChest.getSlots() > i){
|
||||||
|
newChest.setStackInSlot(i, stacks[i].copy());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(!player.capabilities.isCreativeMode){
|
if(!player.capabilities.isCreativeMode){
|
||||||
player.setHeldItem(hand, StackUtil.addStackSize(heldStack, -1));
|
player.setHeldItem(hand, StackUtil.addStackSize(heldStack, -1));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return EnumActionResult.SUCCESS;
|
return EnumActionResult.SUCCESS;
|
||||||
|
|
|
@ -18,10 +18,7 @@ import de.ellpeck.actuallyadditions.mod.inventory.ContainerDrill;
|
||||||
import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler;
|
import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy;
|
import de.ellpeck.actuallyadditions.mod.items.base.ItemEnergy;
|
||||||
import de.ellpeck.actuallyadditions.mod.tile.TileEntityInventoryBase;
|
import de.ellpeck.actuallyadditions.mod.tile.TileEntityInventoryBase;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
|
import de.ellpeck.actuallyadditions.mod.util.*;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.ModUtil;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
|
||||||
import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import net.minecraft.block.state.IBlockState;
|
||||||
|
@ -47,6 +44,9 @@ import net.minecraft.world.World;
|
||||||
import net.minecraftforge.common.ForgeHooks;
|
import net.minecraftforge.common.ForgeHooks;
|
||||||
import net.minecraftforge.fml.relauncher.Side;
|
import net.minecraftforge.fml.relauncher.Side;
|
||||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||||
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||||
|
import net.minecraftforge.items.ItemStackHandler;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
@ -77,7 +77,7 @@ public class ItemDrill extends ItemEnergy{
|
||||||
*
|
*
|
||||||
* @param stack The Drill
|
* @param stack The Drill
|
||||||
*/
|
*/
|
||||||
public static void loadSlotsFromNBT(IInventory slots, ItemStack stack){
|
public static void loadSlotsFromNBT(ItemStackHandlerCustom slots, ItemStack stack){
|
||||||
NBTTagCompound compound = stack.getTagCompound();
|
NBTTagCompound compound = stack.getTagCompound();
|
||||||
if(compound != null){
|
if(compound != null){
|
||||||
TileEntityInventoryBase.loadSlots(slots, compound);
|
TileEntityInventoryBase.loadSlots(slots, compound);
|
||||||
|
@ -90,7 +90,7 @@ public class ItemDrill extends ItemEnergy{
|
||||||
* @param slots The Slots
|
* @param slots The Slots
|
||||||
* @param stack The Drill
|
* @param stack The Drill
|
||||||
*/
|
*/
|
||||||
public static void writeSlotsToNBT(IInventory slots, ItemStack stack){
|
public static void writeSlotsToNBT(ItemStackHandlerCustom slots, ItemStack stack){
|
||||||
NBTTagCompound compound = stack.getTagCompound();
|
NBTTagCompound compound = stack.getTagCompound();
|
||||||
if(compound == null){
|
if(compound == null){
|
||||||
compound = new NBTTagCompound();
|
compound = new NBTTagCompound();
|
||||||
|
@ -150,9 +150,9 @@ public class ItemDrill extends ItemEnergy{
|
||||||
return StackUtil.getNull();
|
return StackUtil.getNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
InventoryBasic inv = new InventoryBasic("Drill", false, ContainerDrill.SLOT_AMOUNT);
|
ItemStackHandlerCustom inv = new ItemStackHandlerCustom(ContainerDrill.SLOT_AMOUNT);
|
||||||
loadSlotsFromNBT(inv, stack);
|
loadSlotsFromNBT(inv, stack);
|
||||||
for(int i = 0; i < inv.getSizeInventory(); i++){
|
for(int i = 0; i < inv.getSlots(); i++){
|
||||||
ItemStack slotStack = inv.getStackInSlot(i);
|
ItemStack slotStack = inv.getStackInSlot(i);
|
||||||
if(StackUtil.isValid(slotStack) && slotStack.getItem() instanceof ItemDrillUpgrade){
|
if(StackUtil.isValid(slotStack) && slotStack.getItem() instanceof ItemDrillUpgrade){
|
||||||
if(((ItemDrillUpgrade)slotStack.getItem()).type == upgrade){
|
if(((ItemDrillUpgrade)slotStack.getItem()).type == upgrade){
|
||||||
|
|
|
@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
||||||
import de.ellpeck.actuallyadditions.mod.inventory.ContainerFilter;
|
import de.ellpeck.actuallyadditions.mod.inventory.ContainerFilter;
|
||||||
import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler;
|
import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
|
import de.ellpeck.actuallyadditions.mod.items.base.ItemBase;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerCustom;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
|
@ -49,9 +50,9 @@ public class ItemFilter extends ItemBase{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> tooltip, boolean advanced){
|
public void addInformation(ItemStack stack, EntityPlayer playerIn, List<String> tooltip, boolean advanced){
|
||||||
IInventory inv = new InventoryBasic("Filter", false, ContainerFilter.SLOT_AMOUNT);
|
ItemStackHandlerCustom inv = new ItemStackHandlerCustom(ContainerFilter.SLOT_AMOUNT);
|
||||||
ItemDrill.loadSlotsFromNBT(inv, stack);
|
ItemDrill.loadSlotsFromNBT(inv, stack);
|
||||||
for(int i = 0; i < inv.getSizeInventory(); i++){
|
for(int i = 0; i < inv.getSlots(); i++){
|
||||||
ItemStack slot = inv.getStackInSlot(i);
|
ItemStack slot = inv.getStackInSlot(i);
|
||||||
if(StackUtil.isValid(slot)){
|
if(StackUtil.isValid(slot)){
|
||||||
tooltip.add(slot.getItem().getItemStackDisplayName(slot));
|
tooltip.add(slot.getItem().getItemStackDisplayName(slot));
|
||||||
|
|
|
@ -37,7 +37,7 @@ public class FuelHandler implements IFuelHandler{
|
||||||
addFuel(InitItems.itemMisc, TheMiscItems.TINY_CHAR.ordinal(), 200);
|
addFuel(InitItems.itemMisc, TheMiscItems.TINY_CHAR.ordinal(), 200);
|
||||||
addFuel(InitItems.itemMisc, TheMiscItems.TINY_COAL.ordinal(), 200);
|
addFuel(InitItems.itemMisc, TheMiscItems.TINY_COAL.ordinal(), 200);
|
||||||
addFuel(InitBlocks.blockMisc, TheMiscBlocks.CHARCOAL_BLOCK.ordinal(), 16000);
|
addFuel(InitBlocks.blockMisc, TheMiscBlocks.CHARCOAL_BLOCK.ordinal(), 16000);
|
||||||
addFuel(InitItems.itemMisc, TheMiscItems.BIOCOAL.ordinal(), 1450);
|
addFuel(InitItems.itemMisc, TheMiscItems.BIOCOAL.ordinal(), 80);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void addFuel(Item item, int meta, int value){
|
private static void addFuel(Item item, int meta, int value){
|
||||||
|
|
|
@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.inventory.ContainerFilter;
|
||||||
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter;
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
|
import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ItemFilter;
|
import de.ellpeck.actuallyadditions.mod.items.ItemFilter;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerCustom;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.inventory.InventoryBasic;
|
import net.minecraft.inventory.InventoryBasic;
|
||||||
|
@ -21,6 +22,7 @@ import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.ResourceLocation;
|
import net.minecraft.util.ResourceLocation;
|
||||||
|
import net.minecraftforge.items.ItemStackHandler;
|
||||||
import net.minecraftforge.oredict.OreDictionary;
|
import net.minecraftforge.oredict.OreDictionary;
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
|
|
||||||
|
@ -44,10 +46,10 @@ public class FilterSettings{
|
||||||
private boolean lastRespectMod;
|
private boolean lastRespectMod;
|
||||||
private int lastRecpectOredict;
|
private int lastRecpectOredict;
|
||||||
|
|
||||||
public final IInventory filterInventory;
|
public final ItemStackHandlerCustom filterInventory;
|
||||||
|
|
||||||
public FilterSettings(int slots, boolean defaultWhitelist, boolean defaultRespectMeta, boolean defaultRespectNBT, boolean defaultRespectMod, int defaultRespectOredict, int buttonIdStart){
|
public FilterSettings(int slots, boolean defaultWhitelist, boolean defaultRespectMeta, boolean defaultRespectNBT, boolean defaultRespectMod, int defaultRespectOredict, int buttonIdStart){
|
||||||
this.filterInventory = new InventoryBasic("Filter", false, slots);
|
this.filterInventory = new ItemStackHandlerCustom(slots);
|
||||||
|
|
||||||
this.isWhitelist = defaultWhitelist;
|
this.isWhitelist = defaultWhitelist;
|
||||||
this.respectMeta = defaultRespectMeta;
|
this.respectMeta = defaultRespectMeta;
|
||||||
|
@ -62,9 +64,9 @@ public class FilterSettings{
|
||||||
this.modButtonId = buttonIdStart+4;
|
this.modButtonId = buttonIdStart+4;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean check(ItemStack stack, IInventory filter, boolean whitelist, boolean meta, boolean nbt, boolean mod, int oredict){
|
public static boolean check(ItemStack stack, ItemStackHandlerCustom filter, boolean whitelist, boolean meta, boolean nbt, boolean mod, int oredict){
|
||||||
if(StackUtil.isValid(stack)){
|
if(StackUtil.isValid(stack)){
|
||||||
for(int i = 0; i < filter.getSizeInventory(); i++){
|
for(int i = 0; i < filter.getSlots(); i++){
|
||||||
ItemStack slot = filter.getStackInSlot(i);
|
ItemStack slot = filter.getStackInSlot(i);
|
||||||
|
|
||||||
if(StackUtil.isValid(slot)){
|
if(StackUtil.isValid(slot)){
|
||||||
|
@ -72,9 +74,9 @@ public class FilterSettings{
|
||||||
return whitelist;
|
return whitelist;
|
||||||
}
|
}
|
||||||
else if(SlotFilter.isFilter(slot)){
|
else if(SlotFilter.isFilter(slot)){
|
||||||
IInventory inv = new InventoryBasic("Filter", false, ContainerFilter.SLOT_AMOUNT);
|
ItemStackHandlerCustom inv = new ItemStackHandlerCustom(ContainerFilter.SLOT_AMOUNT);
|
||||||
ItemDrill.loadSlotsFromNBT(inv, slot);
|
ItemDrill.loadSlotsFromNBT(inv, slot);
|
||||||
for(int k = 0; k < inv.getSizeInventory(); k++){
|
for(int k = 0; k < inv.getSlots(); k++){
|
||||||
ItemStack filterSlot = inv.getStackInSlot(k);
|
ItemStack filterSlot = inv.getStackInSlot(k);
|
||||||
if(StackUtil.isValid(filterSlot) && areEqualEnough(filterSlot, stack, meta, nbt, mod, oredict)){
|
if(StackUtil.isValid(filterSlot) && areEqualEnough(filterSlot, stack, meta, nbt, mod, oredict)){
|
||||||
return whitelist;
|
return whitelist;
|
||||||
|
|
|
@ -117,9 +117,9 @@ public class TileEntityAtomicReconstructor extends TileEntityInventoryBase imple
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Lens getLens(){
|
public Lens getLens(){
|
||||||
if(StackUtil.isValid(this.slots.get(0))){
|
if(StackUtil.isValid(this.slots.getStackInSlot(0))){
|
||||||
if(this.slots.get(0).getItem() instanceof ILensItem){
|
if(this.slots.getStackInSlot(0).getItem() instanceof ILensItem){
|
||||||
return ((ILensItem)this.slots.get(0).getItem()).getLens();
|
return ((ILensItem)this.slots.getStackInSlot(0).getItem()).getLens();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return this.counter >= 500 ? ActuallyAdditionsAPI.lensDisruption : ActuallyAdditionsAPI.lensDefaultConversion;
|
return this.counter >= 500 ? ActuallyAdditionsAPI.lensDisruption : ActuallyAdditionsAPI.lensDefaultConversion;
|
||||||
|
@ -168,12 +168,7 @@ public class TileEntityAtomicReconstructor extends TileEntityInventoryBase imple
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -38,6 +38,8 @@ import net.minecraftforge.fluids.capability.CapabilityFluidHandler;
|
||||||
import net.minecraftforge.fluids.capability.IFluidHandler;
|
import net.minecraftforge.fluids.capability.IFluidHandler;
|
||||||
import net.minecraftforge.fml.common.network.NetworkRegistry;
|
import net.minecraftforge.fml.common.network.NetworkRegistry;
|
||||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||||
|
import net.minecraftforge.items.CapabilityItemHandler;
|
||||||
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
|
||||||
public abstract class TileEntityBase extends TileEntity implements ITickable{
|
public abstract class TileEntityBase extends TileEntity implements ITickable{
|
||||||
|
|
||||||
|
@ -175,7 +177,7 @@ public abstract class TileEntityBase extends TileEntity implements ITickable{
|
||||||
data.setInteger("X", this.pos.getX());
|
data.setInteger("X", this.pos.getX());
|
||||||
data.setInteger("Y", this.pos.getY());
|
data.setInteger("Y", this.pos.getY());
|
||||||
data.setInteger("Z", this.pos.getZ());
|
data.setInteger("Z", this.pos.getZ());
|
||||||
PacketHandler.theNetwork.sendToAllAround(new PacketServerToClient(data, PacketHandler.TILE_ENTITY_HANDLER), new NetworkRegistry.TargetPoint(this.world.provider.getDimension(), this.getPos().getX(), this.getPos().getY(), this.getPos().getZ(), 128));
|
PacketHandler.theNetwork.sendToAllAround(new PacketServerToClient(data, PacketHandler.TILE_ENTITY_HANDLER), new NetworkRegistry.TargetPoint(this.world.provider.getDimension(), this.getPos().getX(), this.getPos().getY(), this.getPos().getZ(), 64));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -326,6 +328,12 @@ public abstract class TileEntityBase extends TileEntity implements ITickable{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public <T> T getCapability(Capability<T> capability, EnumFacing facing){
|
public <T> T getCapability(Capability<T> capability, EnumFacing facing){
|
||||||
|
if(capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY){
|
||||||
|
IItemHandler handler = this.getItemHandler(facing);
|
||||||
|
if(handler != null){
|
||||||
|
return (T)handler;
|
||||||
|
}
|
||||||
|
}
|
||||||
if(capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY){
|
if(capability == CapabilityFluidHandler.FLUID_HANDLER_CAPABILITY){
|
||||||
IFluidHandler tank = this.getFluidHandler(facing);
|
IFluidHandler tank = this.getFluidHandler(facing);
|
||||||
if(tank != null){
|
if(tank != null){
|
||||||
|
@ -360,6 +368,10 @@ public abstract class TileEntityBase extends TileEntity implements ITickable{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IItemHandler getItemHandler(EnumFacing facing){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isRedstoneToggle(){
|
public boolean isRedstoneToggle(){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -65,8 +65,8 @@ public class TileEntityBioReactor extends TileEntityInventoryBase implements ISh
|
||||||
List<Item> types = null;
|
List<Item> types = null;
|
||||||
|
|
||||||
if(this.storage.getEnergyStored() < this.storage.getMaxEnergyStored()){
|
if(this.storage.getEnergyStored() < this.storage.getMaxEnergyStored()){
|
||||||
for(int i = 0; i < this.slots.size(); i++){
|
for(int i = 0; i < this.slots.getSlots(); i++){
|
||||||
ItemStack stack = this.slots.get(i);
|
ItemStack stack = this.slots.getStackInSlot(i);
|
||||||
if(StackUtil.isValid(stack)){
|
if(StackUtil.isValid(stack)){
|
||||||
Item item = stack.getItem();
|
Item item = stack.getItem();
|
||||||
if(isValidItem(stack) && (types == null || !types.contains(item))){
|
if(isValidItem(stack) && (types == null || !types.contains(item))){
|
||||||
|
@ -75,7 +75,7 @@ public class TileEntityBioReactor extends TileEntityInventoryBase implements ISh
|
||||||
}
|
}
|
||||||
types.add(item);
|
types.add(item);
|
||||||
|
|
||||||
this.slots.set(i, StackUtil.addStackSize(stack, -1));
|
this.slots.setStackInSlot(i, StackUtil.addStackSize(stack, -1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -128,12 +128,7 @@ public class TileEntityBioReactor extends TileEntityInventoryBase implements ISh
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int index, ItemStack stack, EnumFacing direction){
|
public boolean canExtractItem(int index, ItemStack stack){
|
||||||
return this.isItemValidForSlot(index, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int index, ItemStack stack, EnumFacing direction){
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -90,30 +90,25 @@ public class TileEntityBreaker extends TileEntityInventoryBase{
|
||||||
float chance = ForgeEventFactory.fireBlockHarvesting(drops, this.world, coordsBlock, this.world.getBlockState(coordsBlock), 0, 1, false, null);
|
float chance = ForgeEventFactory.fireBlockHarvesting(drops, this.world, coordsBlock, this.world.getBlockState(coordsBlock), 0, 1, false, null);
|
||||||
|
|
||||||
if(this.world.rand.nextFloat() <= chance){
|
if(this.world.rand.nextFloat() <= chance){
|
||||||
if(WorldUtil.addToInventory(this, drops, false, true)){
|
if(WorldUtil.addToInventory(this.slots, drops, false)){
|
||||||
this.world.playEvent(2001, coordsBlock, Block.getStateId(stateToBreak));
|
this.world.playEvent(2001, coordsBlock, Block.getStateId(stateToBreak));
|
||||||
this.world.setBlockToAir(coordsBlock);
|
this.world.setBlockToAir(coordsBlock);
|
||||||
WorldUtil.addToInventory(this, drops, true, true);
|
WorldUtil.addToInventory(this.slots, drops, true);
|
||||||
this.markDirty();
|
this.markDirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(this.isPlacer){
|
else if(this.isPlacer){
|
||||||
int theSlot = WorldUtil.findFirstFilledSlot(this.slots);
|
int theSlot = WorldUtil.findFirstFilledSlot(this.slots);
|
||||||
this.setInventorySlotContents(theSlot, WorldUtil.useItemAtSide(sideToManipulate, this.world, this.pos, this.slots.get(theSlot)));
|
this.slots.setStackInSlot(theSlot, WorldUtil.useItemAtSide(sideToManipulate, this.world, this.pos, this.slots.getStackInSlot(theSlot)));
|
||||||
if(!StackUtil.isValid(this.slots.get(theSlot))){
|
if(!StackUtil.isValid(this.slots.getStackInSlot(theSlot))){
|
||||||
this.slots.set(theSlot, StackUtil.getNull());
|
this.slots.setStackInSlot(theSlot, StackUtil.getNull());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ public class TileEntityCanolaPress extends TileEntityInventoryBase implements IS
|
||||||
if(this.currentProcessTime >= TIME){
|
if(this.currentProcessTime >= TIME){
|
||||||
this.currentProcessTime = 0;
|
this.currentProcessTime = 0;
|
||||||
|
|
||||||
this.slots.set(0, StackUtil.addStackSize(this.slots.get(0), -1));
|
this.slots.setStackInSlot(0, StackUtil.addStackSize(this.slots.getStackInSlot(0), -1));
|
||||||
|
|
||||||
this.tank.fillInternal(new FluidStack(InitFluids.fluidCanolaOil, PRODUCE), true);
|
this.tank.fillInternal(new FluidStack(InitFluids.fluidCanolaOil, PRODUCE), true);
|
||||||
this.markDirty();
|
this.markDirty();
|
||||||
|
@ -116,16 +116,11 @@ public class TileEntityCanolaPress extends TileEntityInventoryBase implements IS
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isCanola(int slot){
|
public boolean isCanola(int slot){
|
||||||
return StackUtil.isValid(this.slots.get(slot)) && this.slots.get(slot).getItem() == InitItems.itemMisc && this.slots.get(slot).getItemDamage() == TheMiscItems.CANOLA.ordinal();
|
return StackUtil.isValid(this.slots.getStackInSlot(slot)) && this.slots.getStackInSlot(slot).getItem() == InitItems.itemMisc && this.slots.getStackInSlot(slot).getItemDamage() == TheMiscItems.CANOLA.ordinal();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -75,12 +75,12 @@ public class TileEntityCoalGenerator extends TileEntityInventoryBase implements
|
||||||
this.storage.receiveEnergyInternal(PRODUCE, false);
|
this.storage.receiveEnergyInternal(PRODUCE, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!this.isRedstonePowered && this.currentBurnTime <= 0 && StackUtil.isValid(this.slots.get(0)) && TileEntityFurnace.getItemBurnTime(this.slots.get(0)) > 0 && this.storage.getEnergyStored() < this.storage.getMaxEnergyStored()){
|
if(!this.isRedstonePowered && this.currentBurnTime <= 0 && StackUtil.isValid(this.slots.getStackInSlot(0)) && TileEntityFurnace.getItemBurnTime(this.slots.getStackInSlot(0)) > 0 && this.storage.getEnergyStored() < this.storage.getMaxEnergyStored()){
|
||||||
int burnTime = TileEntityFurnace.getItemBurnTime(this.slots.get(0));
|
int burnTime = TileEntityFurnace.getItemBurnTime(this.slots.getStackInSlot(0));
|
||||||
this.maxBurnTime = burnTime;
|
this.maxBurnTime = burnTime;
|
||||||
this.currentBurnTime = burnTime;
|
this.currentBurnTime = burnTime;
|
||||||
|
|
||||||
this.slots.set(0, StackUtil.addStackSize(this.slots.get(0), -1, true));
|
this.slots.setStackInSlot(0, StackUtil.addStackSize(this.slots.getStackInSlot(0), -1, true));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(flag != this.currentBurnTime > 0 || this.lastCompare != this.getComparatorStrength()){
|
if(flag != this.currentBurnTime > 0 || this.lastCompare != this.getComparatorStrength()){
|
||||||
|
@ -109,13 +109,8 @@ public class TileEntityCoalGenerator extends TileEntityInventoryBase implements
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
return TileEntityFurnace.getItemBurnTime(this.slots.getStackInSlot(0)) <= 0;
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return TileEntityFurnace.getItemBurnTime(this.slots.get(0)) <= 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -130,10 +130,10 @@ public class TileEntityCoffeeMachine extends TileEntityInventoryBase implements
|
||||||
}
|
}
|
||||||
|
|
||||||
public void storeCoffee(){
|
public void storeCoffee(){
|
||||||
if(StackUtil.isValid(this.slots.get(SLOT_COFFEE_BEANS)) && this.slots.get(SLOT_COFFEE_BEANS).getItem() == InitItems.itemCoffeeBean){
|
if(StackUtil.isValid(this.slots.getStackInSlot(SLOT_COFFEE_BEANS)) && this.slots.getStackInSlot(SLOT_COFFEE_BEANS).getItem() == InitItems.itemCoffeeBean){
|
||||||
int toAdd = 2;
|
int toAdd = 2;
|
||||||
if(toAdd <= COFFEE_CACHE_MAX_AMOUNT-this.coffeeCacheAmount){
|
if(toAdd <= COFFEE_CACHE_MAX_AMOUNT-this.coffeeCacheAmount){
|
||||||
this.slots.set(SLOT_COFFEE_BEANS, StackUtil.addStackSize(this.slots.get(SLOT_COFFEE_BEANS), -1));
|
this.slots.setStackInSlot(SLOT_COFFEE_BEANS, StackUtil.addStackSize(this.slots.getStackInSlot(SLOT_COFFEE_BEANS), -1));
|
||||||
this.coffeeCacheAmount += toAdd;
|
this.coffeeCacheAmount += toAdd;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -141,7 +141,7 @@ public class TileEntityCoffeeMachine extends TileEntityInventoryBase implements
|
||||||
|
|
||||||
public void brew(){
|
public void brew(){
|
||||||
if(!this.world.isRemote){
|
if(!this.world.isRemote){
|
||||||
if(StackUtil.isValid(this.slots.get(SLOT_INPUT)) && this.slots.get(SLOT_INPUT).getItem() == InitItems.itemMisc && this.slots.get(SLOT_INPUT).getItemDamage() == TheMiscItems.CUP.ordinal() && !StackUtil.isValid(this.slots.get(SLOT_OUTPUT)) && this.coffeeCacheAmount >= CACHE_USE && this.tank.getFluid() != null && this.tank.getFluid().getFluid() == FluidRegistry.WATER && this.tank.getFluidAmount() >= WATER_USE){
|
if(StackUtil.isValid(this.slots.getStackInSlot(SLOT_INPUT)) && this.slots.getStackInSlot(SLOT_INPUT).getItem() == InitItems.itemMisc && this.slots.getStackInSlot(SLOT_INPUT).getItemDamage() == TheMiscItems.CUP.ordinal() && !StackUtil.isValid(this.slots.getStackInSlot(SLOT_OUTPUT)) && this.coffeeCacheAmount >= CACHE_USE && this.tank.getFluid() != null && this.tank.getFluid().getFluid() == FluidRegistry.WATER && this.tank.getFluidAmount() >= WATER_USE){
|
||||||
if(this.storage.getEnergyStored() >= ENERGY_USED){
|
if(this.storage.getEnergyStored() >= ENERGY_USED){
|
||||||
if(this.brewTime%30 == 0){
|
if(this.brewTime%30 == 0){
|
||||||
this.world.playSound(null, this.getPos().getX(), this.getPos().getY(), this.getPos().getZ(), SoundHandler.coffeeMachine, SoundCategory.BLOCKS, 0.35F, 1.0F);
|
this.world.playSound(null, this.getPos().getX(), this.getPos().getY(), this.getPos().getZ(), SoundHandler.coffeeMachine, SoundCategory.BLOCKS, 0.35F, 1.0F);
|
||||||
|
@ -152,18 +152,18 @@ public class TileEntityCoffeeMachine extends TileEntityInventoryBase implements
|
||||||
if(this.brewTime >= TIME_USED){
|
if(this.brewTime >= TIME_USED){
|
||||||
this.brewTime = 0;
|
this.brewTime = 0;
|
||||||
ItemStack output = new ItemStack(InitItems.itemCoffee);
|
ItemStack output = new ItemStack(InitItems.itemCoffee);
|
||||||
for(int i = 3; i < this.slots.size(); i++){
|
for(int i = 3; i < this.slots.getSlots(); i++){
|
||||||
if(StackUtil.isValid(this.slots.get(i))){
|
if(StackUtil.isValid(this.slots.getStackInSlot(i))){
|
||||||
CoffeeIngredient ingredient = ItemCoffee.getIngredientFromStack(this.slots.get(i));
|
CoffeeIngredient ingredient = ItemCoffee.getIngredientFromStack(this.slots.getStackInSlot(i));
|
||||||
if(ingredient != null){
|
if(ingredient != null){
|
||||||
if(ingredient.effect(output)){
|
if(ingredient.effect(output)){
|
||||||
this.slots.set(i, StackUtil.addStackSize(this.slots.get(i), -1, true));
|
this.slots.setStackInSlot(i, StackUtil.addStackSize(this.slots.getStackInSlot(i), -1, true));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.slots.set(SLOT_OUTPUT, output.copy());
|
this.slots.setStackInSlot(SLOT_OUTPUT, output.copy());
|
||||||
this.slots.set(SLOT_INPUT, StackUtil.addStackSize(this.slots.get(SLOT_INPUT), -1));
|
this.slots.setStackInSlot(SLOT_INPUT, StackUtil.addStackSize(this.slots.getStackInSlot(SLOT_INPUT), -1));
|
||||||
this.coffeeCacheAmount -= CACHE_USE;
|
this.coffeeCacheAmount -= CACHE_USE;
|
||||||
this.tank.drainInternal(WATER_USE, true);
|
this.tank.drainInternal(WATER_USE, true);
|
||||||
}
|
}
|
||||||
|
@ -176,13 +176,8 @@ public class TileEntityCoffeeMachine extends TileEntityInventoryBase implements
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
return slot == SLOT_OUTPUT || (slot >= 3 && slot < this.slots.getSlots() && ItemCoffee.getIngredientFromStack(stack) == null);
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return slot == SLOT_OUTPUT || (slot >= 3 && slot < this.slots.size() && ItemCoffee.getIngredientFromStack(stack) == null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -16,6 +16,10 @@ import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
import net.minecraftforge.items.wrapper.SidedInvWrapper;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
public class TileEntityCompost extends TileEntityInventoryBase{
|
public class TileEntityCompost extends TileEntityInventoryBase{
|
||||||
|
|
||||||
|
@ -63,12 +67,13 @@ public class TileEntityCompost extends TileEntityInventoryBase{
|
||||||
if(!this.world.isRemote){
|
if(!this.world.isRemote){
|
||||||
boolean theFlag = this.conversionTime > 0;
|
boolean theFlag = this.conversionTime > 0;
|
||||||
|
|
||||||
if(StackUtil.isValid(this.slots.get(0))){
|
if(StackUtil.isValid(this.slots.getStackInSlot(0))){
|
||||||
CompostRecipe recipe = getRecipeForInput(this.slots.get(0));
|
CompostRecipe recipe = getRecipeForInput(this.slots.getStackInSlot(0));
|
||||||
if(recipe != null && this.slots.get(0).isItemEqual(recipe.input) && StackUtil.getStackSize(this.slots.get(0)) >= StackUtil.getStackSize(recipe.input)){
|
if(recipe != null){
|
||||||
this.conversionTime++;
|
this.conversionTime++;
|
||||||
if(this.conversionTime >= 3000){
|
if(this.conversionTime >= 3000){
|
||||||
this.slots.set(0, recipe.output.copy());
|
ItemStack output = recipe.output.copy();
|
||||||
|
this.slots.setStackInSlot(0, StackUtil.setStackSize(output, StackUtil.getStackSize(this.slots.getStackInSlot(0))));
|
||||||
this.conversionTime = 0;
|
this.conversionTime = 0;
|
||||||
this.markDirty();
|
this.markDirty();
|
||||||
}
|
}
|
||||||
|
@ -96,23 +101,7 @@ public class TileEntityCompost extends TileEntityInventoryBase{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getInventoryStackLimit(){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
if(StackUtil.isValid(this.slots.get(0))){
|
|
||||||
CompostRecipe recipe = getRecipeForInput(this.slots.get(0));
|
|
||||||
if(recipe != null && StackUtil.isValid(recipe.input)){
|
|
||||||
return StackUtil.getStackSize(recipe.input);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return super.getInventoryStackLimit();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return getRecipeForInput(stack) == null;
|
return getRecipeForInput(stack) == null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -89,10 +89,10 @@ public class TileEntityDirectionalBreaker extends TileEntityInventoryBase{
|
||||||
float chance = ForgeEventFactory.fireBlockHarvesting(drops, this.world, coordsBlock, this.world.getBlockState(coordsBlock), 0, 1, false, null);
|
float chance = ForgeEventFactory.fireBlockHarvesting(drops, this.world, coordsBlock, this.world.getBlockState(coordsBlock), 0, 1, false, null);
|
||||||
|
|
||||||
if(this.world.rand.nextFloat() <= chance){
|
if(this.world.rand.nextFloat() <= chance){
|
||||||
if(WorldUtil.addToInventory(this, drops, false, true)){
|
if(WorldUtil.addToInventory(this.slots, drops, false)){
|
||||||
this.world.playEvent(2001, coordsBlock, Block.getStateId(this.world.getBlockState(coordsBlock)));
|
this.world.playEvent(2001, coordsBlock, Block.getStateId(this.world.getBlockState(coordsBlock)));
|
||||||
this.world.setBlockToAir(coordsBlock);
|
this.world.setBlockToAir(coordsBlock);
|
||||||
WorldUtil.addToInventory(this, drops, true, true);
|
WorldUtil.addToInventory(this.slots, drops, true);
|
||||||
this.storage.extractEnergyInternal(ENERGY_USE, false);
|
this.storage.extractEnergyInternal(ENERGY_USE, false);
|
||||||
this.markDirty();
|
this.markDirty();
|
||||||
}
|
}
|
||||||
|
@ -113,12 +113,7 @@ public class TileEntityDirectionalBreaker extends TileEntityInventoryBase{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,12 +34,12 @@ public class TileEntityDisplayStand extends TileEntityInventoryBase implements I
|
||||||
super.updateEntity();
|
super.updateEntity();
|
||||||
|
|
||||||
if(!this.world.isRemote){
|
if(!this.world.isRemote){
|
||||||
if(StackUtil.isValid(this.slots.get(0)) && !this.isRedstonePowered){
|
if(StackUtil.isValid(this.slots.getStackInSlot(0)) && !this.isRedstonePowered){
|
||||||
IDisplayStandItem item = this.convertToDisplayStandItem(this.slots.get(0).getItem());
|
IDisplayStandItem item = this.convertToDisplayStandItem(this.slots.getStackInSlot(0).getItem());
|
||||||
if(item != null){
|
if(item != null){
|
||||||
int energy = item.getUsePerTick(this.slots.get(0), this, this.ticksElapsed);
|
int energy = item.getUsePerTick(this.slots.getStackInSlot(0), this, this.ticksElapsed);
|
||||||
if(this.storage.getEnergyStored() >= energy){
|
if(this.storage.getEnergyStored() >= energy){
|
||||||
if(item.update(this.slots.get(0), this, this.ticksElapsed)){
|
if(item.update(this.slots.getStackInSlot(0), this, this.ticksElapsed)){
|
||||||
this.storage.extractEnergyInternal(energy, false);
|
this.storage.extractEnergyInternal(energy, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,11 +68,6 @@ public class TileEntityDisplayStand extends TileEntityInventoryBase implements I
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canInsertItem(int index, ItemStack stack, EnumFacing direction){
|
|
||||||
return this.isItemValidForSlot(index, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeSyncableNBT(NBTTagCompound compound, NBTType type){
|
public void writeSyncableNBT(NBTTagCompound compound, NBTType type){
|
||||||
super.writeSyncableNBT(compound, type);
|
super.writeSyncableNBT(compound, type);
|
||||||
|
@ -99,7 +94,7 @@ public class TileEntityDisplayStand extends TileEntityInventoryBase implements I
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canExtractItem(int index, ItemStack stack, EnumFacing direction){
|
public boolean canExtractItem(int index, ItemStack stack){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +109,7 @@ public class TileEntityDisplayStand extends TileEntityInventoryBase implements I
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getInventoryStackLimit(){
|
public int getMaxStackSizePerSlot(int slot, ItemStack stack){
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,26 +42,26 @@ public class TileEntityDistributorItem extends TileEntityInventoryBase{
|
||||||
for(int i = 0; i < handlerUp.getSlots(); i++){
|
for(int i = 0; i < handlerUp.getSlots(); i++){
|
||||||
|
|
||||||
ItemStack pullable = handlerUp.extractItem(i, 1, true);
|
ItemStack pullable = handlerUp.extractItem(i, 1, true);
|
||||||
if(StackUtil.isValid(pullable) && (!StackUtil.isValid(this.slots.get(0)) || ItemUtil.canBeStacked(this.slots.get(0), pullable))){
|
if(StackUtil.isValid(pullable) && (!StackUtil.isValid(this.slots.getStackInSlot(0)) || ItemUtil.canBeStacked(this.slots.getStackInSlot(0), pullable))){
|
||||||
ItemStack pulled = handlerUp.extractItem(i, 1, false);
|
ItemStack pulled = handlerUp.extractItem(i, 1, false);
|
||||||
if(StackUtil.isValid(pulled)){
|
if(StackUtil.isValid(pulled)){
|
||||||
if(!StackUtil.isValid(this.slots.get(0))){
|
if(!StackUtil.isValid(this.slots.getStackInSlot(0))){
|
||||||
this.slots.set(0, pulled.copy());
|
this.slots.setStackInSlot(0, pulled.copy());
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
this.slots.set(0, StackUtil.addStackSize(this.slots.get(0), StackUtil.getStackSize(pulled)));
|
this.slots.setStackInSlot(0, StackUtil.addStackSize(this.slots.getStackInSlot(0), StackUtil.getStackSize(pulled)));
|
||||||
}
|
}
|
||||||
shouldMarkDirty = true;
|
shouldMarkDirty = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(StackUtil.isValid(this.slots.get(0)) && StackUtil.getStackSize(this.slots.get(0)) >= this.slots.get(0).getMaxStackSize()){
|
if(StackUtil.isValid(this.slots.getStackInSlot(0)) && StackUtil.getStackSize(this.slots.getStackInSlot(0)) >= this.slots.getStackInSlot(0).getMaxStackSize()){
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!this.handlersAround.isEmpty() && (!this.handlersAround.containsKey(EnumFacing.UP) || this.handlersAround.size() >= 2) && StackUtil.isValid(this.slots.get(0))){
|
if(!this.handlersAround.isEmpty() && (!this.handlersAround.containsKey(EnumFacing.UP) || this.handlersAround.size() >= 2) && StackUtil.isValid(this.slots.getStackInSlot(0))){
|
||||||
EnumFacing[] allFacings = EnumFacing.values();
|
EnumFacing[] allFacings = EnumFacing.values();
|
||||||
do{
|
do{
|
||||||
this.putSide++;
|
this.putSide++;
|
||||||
|
@ -76,33 +76,33 @@ public class TileEntityDistributorItem extends TileEntityInventoryBase{
|
||||||
IItemHandler handler = this.handlersAround.get(putFacing);
|
IItemHandler handler = this.handlersAround.get(putFacing);
|
||||||
if(handler != null){
|
if(handler != null){
|
||||||
int aroundAmount = this.handlersAround.containsKey(EnumFacing.UP) ? this.handlersAround.size()-1 : this.handlersAround.size();
|
int aroundAmount = this.handlersAround.containsKey(EnumFacing.UP) ? this.handlersAround.size()-1 : this.handlersAround.size();
|
||||||
int amount = StackUtil.getStackSize(this.slots.get(0))/aroundAmount;
|
int amount = StackUtil.getStackSize(this.slots.getStackInSlot(0))/aroundAmount;
|
||||||
if(amount <= 0){
|
if(amount <= 0){
|
||||||
amount = StackUtil.getStackSize(this.slots.get(0));
|
amount = StackUtil.getStackSize(this.slots.getStackInSlot(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(amount > 0){
|
if(amount > 0){
|
||||||
ItemStack toInsert = this.slots.get(0).copy();
|
ItemStack toInsert = this.slots.getStackInSlot(0).copy();
|
||||||
toInsert = StackUtil.setStackSize(toInsert, amount);
|
toInsert = StackUtil.setStackSize(toInsert, amount);
|
||||||
|
|
||||||
for(int i = 0; i < handler.getSlots(); i++){
|
for(int i = 0; i < handler.getSlots(); i++){
|
||||||
ItemStack notInserted = handler.insertItem(i, toInsert.copy(), false);
|
ItemStack notInserted = handler.insertItem(i, toInsert.copy(), false);
|
||||||
if(!StackUtil.isValid(notInserted)){
|
if(!StackUtil.isValid(notInserted)){
|
||||||
this.slots.set(0, StackUtil.addStackSize(this.slots.get(0), -amount));
|
this.slots.setStackInSlot(0, StackUtil.addStackSize(this.slots.getStackInSlot(0), -amount));
|
||||||
|
|
||||||
shouldMarkDirty = true;
|
shouldMarkDirty = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if(StackUtil.getStackSize(notInserted) != StackUtil.getStackSize(this.slots.get(0))){
|
else if(StackUtil.getStackSize(notInserted) != StackUtil.getStackSize(this.slots.getStackInSlot(0))){
|
||||||
this.slots.set(0, StackUtil.addStackSize(this.slots.get(0), -StackUtil.getStackSize(notInserted)));
|
this.slots.setStackInSlot(0, StackUtil.addStackSize(this.slots.getStackInSlot(0), -StackUtil.getStackSize(notInserted)));
|
||||||
toInsert = notInserted;
|
toInsert = notInserted;
|
||||||
|
|
||||||
shouldMarkDirty = true;
|
shouldMarkDirty = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!StackUtil.isValid(this.slots.get(0))){
|
if(!StackUtil.isValid(this.slots.getStackInSlot(0))){
|
||||||
this.slots.set(0, StackUtil.getNull());
|
this.slots.setStackInSlot(0, StackUtil.getNull());
|
||||||
shouldMarkDirty = true;
|
shouldMarkDirty = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -147,12 +147,7 @@ public class TileEntityDistributorItem extends TileEntityInventoryBase{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int index, ItemStack stack, EnumFacing direction){
|
public boolean canExtractItem(int index, ItemStack stack){
|
||||||
return direction == EnumFacing.UP && this.isItemValidForSlot(index, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int index, ItemStack stack, EnumFacing direction){
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,11 +74,11 @@ public class TileEntityDropper extends TileEntityInventoryBase{
|
||||||
}
|
}
|
||||||
|
|
||||||
public ItemStack removeFromInventory(boolean actuallyDo){
|
public ItemStack removeFromInventory(boolean actuallyDo){
|
||||||
for(int i = 0; i < this.slots.size(); i++){
|
for(int i = 0; i < this.slots.getSlots(); i++){
|
||||||
if(StackUtil.isValid(this.slots.get(i))){
|
if(StackUtil.isValid(this.slots.getStackInSlot(i))){
|
||||||
ItemStack slot = this.slots.get(i).copy();
|
ItemStack slot = this.slots.getStackInSlot(i).copy();
|
||||||
if(actuallyDo){
|
if(actuallyDo){
|
||||||
this.slots.set(i, StackUtil.addStackSize(this.slots.get(i), -1));
|
this.slots.setStackInSlot(i, StackUtil.addStackSize(this.slots.getStackInSlot(i), -1));
|
||||||
this.markDirty();
|
this.markDirty();
|
||||||
}
|
}
|
||||||
return slot;
|
return slot;
|
||||||
|
@ -88,12 +88,7 @@ public class TileEntityDropper extends TileEntityInventoryBase{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -52,7 +52,7 @@ public class TileEntityEmpowerer extends TileEntityInventoryBase{
|
||||||
super.updateEntity();
|
super.updateEntity();
|
||||||
|
|
||||||
if(!this.world.isRemote){
|
if(!this.world.isRemote){
|
||||||
List<EmpowererRecipe> recipes = getRecipesForInput(this.slots.get(0));
|
List<EmpowererRecipe> recipes = getRecipesForInput(this.slots.getStackInSlot(0));
|
||||||
if(!recipes.isEmpty()){
|
if(!recipes.isEmpty()){
|
||||||
for(EmpowererRecipe recipe : recipes){
|
for(EmpowererRecipe recipe : recipes){
|
||||||
TileEntityDisplayStand[] modifierStands = this.getFittingModifiers(recipe, recipe.time);
|
TileEntityDisplayStand[] modifierStands = this.getFittingModifiers(recipe, recipe.time);
|
||||||
|
@ -65,7 +65,7 @@ public class TileEntityEmpowerer extends TileEntityInventoryBase{
|
||||||
stand.storage.extractEnergyInternal(recipe.energyPerStand/recipe.time, false);
|
stand.storage.extractEnergyInternal(recipe.energyPerStand/recipe.time, false);
|
||||||
|
|
||||||
if(done){
|
if(done){
|
||||||
stand.decrStackSize(0, 1);
|
stand.slots.decrStackSize(0, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
AssetUtil.shootParticles(this.world, stand.getPos().getX(), stand.getPos().getY()+0.45F, stand.getPos().getZ(), this.pos.getX(), this.pos.getY(), this.pos.getZ(), recipe.particleColor, 8, 0.5F, 1F);
|
AssetUtil.shootParticles(this.world, stand.getPos().getX(), stand.getPos().getY()+0.45F, stand.getPos().getZ(), this.pos.getX(), this.pos.getY(), this.pos.getZ(), recipe.particleColor, 8, 0.5F, 1F);
|
||||||
|
@ -78,7 +78,7 @@ public class TileEntityEmpowerer extends TileEntityInventoryBase{
|
||||||
if(done){
|
if(done){
|
||||||
((WorldServer)this.world).spawnParticle(EnumParticleTypes.END_ROD, false, this.pos.getX()+0.5, this.pos.getY()+1.1, this.pos.getZ()+0.5, 300, 0, 0, 0, 0.25D);
|
((WorldServer)this.world).spawnParticle(EnumParticleTypes.END_ROD, false, this.pos.getX()+0.5, this.pos.getY()+1.1, this.pos.getZ()+0.5, 300, 0, 0, 0, 0.25D);
|
||||||
|
|
||||||
this.slots.set(0, recipe.output.copy());
|
this.slots.setStackInSlot(0, recipe.output.copy());
|
||||||
this.markDirty();
|
this.markDirty();
|
||||||
|
|
||||||
this.processTime = 0;
|
this.processTime = 0;
|
||||||
|
@ -103,7 +103,7 @@ public class TileEntityEmpowerer extends TileEntityInventoryBase{
|
||||||
|
|
||||||
if(tile instanceof TileEntityDisplayStand){
|
if(tile instanceof TileEntityDisplayStand){
|
||||||
TileEntityDisplayStand stand = (TileEntityDisplayStand)tile;
|
TileEntityDisplayStand stand = (TileEntityDisplayStand)tile;
|
||||||
ItemStack standItem = stand.getStackInSlot(0);
|
ItemStack standItem = stand.slots.getStackInSlot(0);
|
||||||
int containPlace = ItemUtil.getPlaceAt(itemsStillNeeded, standItem, true);
|
int containPlace = ItemUtil.getPlaceAt(itemsStillNeeded, standItem, true);
|
||||||
if(stand.storage.getEnergyStored() >= recipe.energyPerStand/powerDivider && containPlace != -1){
|
if(stand.storage.getEnergyStored() >= recipe.energyPerStand/powerDivider && containPlace != -1){
|
||||||
modifierStands[i] = stand;
|
modifierStands[i] = stand;
|
||||||
|
@ -154,17 +154,12 @@ public class TileEntityEmpowerer extends TileEntityInventoryBase{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int index, ItemStack stack, EnumFacing direction){
|
public boolean canExtractItem(int index, ItemStack stack){
|
||||||
return this.isItemValidForSlot(index, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int index, ItemStack stack, EnumFacing direction){
|
|
||||||
return getRecipesForInput(stack).isEmpty();
|
return getRecipesForInput(stack).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getInventoryStackLimit(){
|
public int getMaxStackSizePerSlot(int slot, ItemStack stack){
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,27 +48,27 @@ public class TileEntityEnergizer extends TileEntityInventoryBase{
|
||||||
public void updateEntity(){
|
public void updateEntity(){
|
||||||
super.updateEntity();
|
super.updateEntity();
|
||||||
if(!this.world.isRemote){
|
if(!this.world.isRemote){
|
||||||
if(StackUtil.isValid(this.slots.get(0)) && !StackUtil.isValid(this.slots.get(1))){
|
if(StackUtil.isValid(this.slots.getStackInSlot(0)) && !StackUtil.isValid(this.slots.getStackInSlot(1))){
|
||||||
if(this.storage.getEnergyStored() > 0){
|
if(this.storage.getEnergyStored() > 0){
|
||||||
int received = 0;
|
int received = 0;
|
||||||
boolean canTakeUp = false;
|
boolean canTakeUp = false;
|
||||||
|
|
||||||
if(this.slots.get(0).hasCapability(CapabilityEnergy.ENERGY, null)){
|
if(this.slots.getStackInSlot(0).hasCapability(CapabilityEnergy.ENERGY, null)){
|
||||||
IEnergyStorage cap = this.slots.get(0).getCapability(CapabilityEnergy.ENERGY, null);
|
IEnergyStorage cap = this.slots.getStackInSlot(0).getCapability(CapabilityEnergy.ENERGY, null);
|
||||||
if(cap != null){
|
if(cap != null){
|
||||||
received = cap.receiveEnergy(this.storage.getEnergyStored(), false);
|
received = cap.receiveEnergy(this.storage.getEnergyStored(), false);
|
||||||
canTakeUp = cap.getEnergyStored() >= cap.getMaxEnergyStored();
|
canTakeUp = cap.getEnergyStored() >= cap.getMaxEnergyStored();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(ActuallyAdditions.teslaLoaded){
|
else if(ActuallyAdditions.teslaLoaded){
|
||||||
if(this.slots.get(0).hasCapability(TeslaUtil.teslaConsumer, null)){
|
if(this.slots.getStackInSlot(0).hasCapability(TeslaUtil.teslaConsumer, null)){
|
||||||
ITeslaConsumer cap = this.slots.get(0).getCapability(TeslaUtil.teslaConsumer, null);
|
ITeslaConsumer cap = this.slots.getStackInSlot(0).getCapability(TeslaUtil.teslaConsumer, null);
|
||||||
if(cap != null){
|
if(cap != null){
|
||||||
received = (int)cap.givePower(this.storage.getEnergyStored(), false);
|
received = (int)cap.givePower(this.storage.getEnergyStored(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(this.slots.get(0).hasCapability(TeslaUtil.teslaHolder, null)){
|
if(this.slots.getStackInSlot(0).hasCapability(TeslaUtil.teslaHolder, null)){
|
||||||
ITeslaHolder cap = this.slots.get(0).getCapability(TeslaUtil.teslaHolder, null);
|
ITeslaHolder cap = this.slots.getStackInSlot(0).getCapability(TeslaUtil.teslaHolder, null);
|
||||||
if(cap != null){
|
if(cap != null){
|
||||||
canTakeUp = cap.getStoredPower() >= cap.getCapacity();
|
canTakeUp = cap.getStoredPower() >= cap.getCapacity();
|
||||||
}
|
}
|
||||||
|
@ -79,8 +79,8 @@ public class TileEntityEnergizer extends TileEntityInventoryBase{
|
||||||
}
|
}
|
||||||
|
|
||||||
if(canTakeUp){
|
if(canTakeUp){
|
||||||
this.slots.set(1, this.slots.get(0).copy());
|
this.slots.setStackInSlot(1, this.slots.getStackInSlot(0).copy());
|
||||||
this.slots.set(0, StackUtil.addStackSize(this.slots.get(0), -1));
|
this.slots.setStackInSlot(0, StackUtil.addStackSize(this.slots.getStackInSlot(0), -1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -97,12 +97,7 @@ public class TileEntityEnergizer extends TileEntityInventoryBase{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return slot == 1;
|
return slot == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -48,28 +48,28 @@ public class TileEntityEnervator extends TileEntityInventoryBase implements ISha
|
||||||
public void updateEntity(){
|
public void updateEntity(){
|
||||||
super.updateEntity();
|
super.updateEntity();
|
||||||
if(!this.world.isRemote){
|
if(!this.world.isRemote){
|
||||||
if(StackUtil.isValid(this.slots.get(0)) && !StackUtil.isValid(this.slots.get(1))){
|
if(StackUtil.isValid(this.slots.getStackInSlot(0)) && !StackUtil.isValid(this.slots.getStackInSlot(1))){
|
||||||
if(this.storage.getEnergyStored() < this.storage.getMaxEnergyStored()){
|
if(this.storage.getEnergyStored() < this.storage.getMaxEnergyStored()){
|
||||||
int extracted = 0;
|
int extracted = 0;
|
||||||
boolean canTakeUp = false;
|
boolean canTakeUp = false;
|
||||||
|
|
||||||
int maxExtract = this.storage.getMaxEnergyStored()-this.storage.getEnergyStored();
|
int maxExtract = this.storage.getMaxEnergyStored()-this.storage.getEnergyStored();
|
||||||
if(this.slots.get(0).hasCapability(CapabilityEnergy.ENERGY, null)){
|
if(this.slots.getStackInSlot(0).hasCapability(CapabilityEnergy.ENERGY, null)){
|
||||||
IEnergyStorage cap = this.slots.get(0).getCapability(CapabilityEnergy.ENERGY, null);
|
IEnergyStorage cap = this.slots.getStackInSlot(0).getCapability(CapabilityEnergy.ENERGY, null);
|
||||||
if(cap != null){
|
if(cap != null){
|
||||||
extracted = cap.extractEnergy(maxExtract, false);
|
extracted = cap.extractEnergy(maxExtract, false);
|
||||||
canTakeUp = cap.getEnergyStored() <= 0;
|
canTakeUp = cap.getEnergyStored() <= 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if(ActuallyAdditions.teslaLoaded){
|
else if(ActuallyAdditions.teslaLoaded){
|
||||||
if(this.slots.get(0).hasCapability(TeslaUtil.teslaProducer, null)){
|
if(this.slots.getStackInSlot(0).hasCapability(TeslaUtil.teslaProducer, null)){
|
||||||
ITeslaProducer cap = this.slots.get(0).getCapability(TeslaUtil.teslaProducer, null);
|
ITeslaProducer cap = this.slots.getStackInSlot(0).getCapability(TeslaUtil.teslaProducer, null);
|
||||||
if(cap != null){
|
if(cap != null){
|
||||||
extracted = (int)cap.takePower(maxExtract, false);
|
extracted = (int)cap.takePower(maxExtract, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(this.slots.get(0).hasCapability(TeslaUtil.teslaHolder, null)){
|
if(this.slots.getStackInSlot(0).hasCapability(TeslaUtil.teslaHolder, null)){
|
||||||
ITeslaHolder cap = this.slots.get(0).getCapability(TeslaUtil.teslaHolder, null);
|
ITeslaHolder cap = this.slots.getStackInSlot(0).getCapability(TeslaUtil.teslaHolder, null);
|
||||||
if(cap != null){
|
if(cap != null){
|
||||||
canTakeUp = cap.getStoredPower() <= 0;
|
canTakeUp = cap.getStoredPower() <= 0;
|
||||||
}
|
}
|
||||||
|
@ -80,8 +80,8 @@ public class TileEntityEnervator extends TileEntityInventoryBase implements ISha
|
||||||
}
|
}
|
||||||
|
|
||||||
if(canTakeUp){
|
if(canTakeUp){
|
||||||
this.slots.set(1, this.slots.get(0).copy());
|
this.slots.setStackInSlot(1, this.slots.getStackInSlot(0).copy());
|
||||||
this.slots.set(0, StackUtil.addStackSize(this.slots.get(0), -1));
|
this.slots.setStackInSlot(0, StackUtil.addStackSize(this.slots.getStackInSlot(0), -1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -103,12 +103,7 @@ public class TileEntityEnervator extends TileEntityInventoryBase implements ISha
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return slot == 1;
|
return slot == 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -121,16 +121,16 @@ public class TileEntityFarmer extends TileEntityInventoryBase{
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean putSeeds = true;
|
boolean putSeeds = true;
|
||||||
if(!WorldUtil.addToInventory(this, 0, 6, seeds, EnumFacing.UP, false, true)){
|
if(!WorldUtil.addToInventory(this.slots, 0, 6, seeds, false)){
|
||||||
other.addAll(seeds);
|
other.addAll(seeds);
|
||||||
putSeeds = false;
|
putSeeds = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(WorldUtil.addToInventory(this, 6, 12, other, EnumFacing.UP, false, true)){
|
if(WorldUtil.addToInventory(this.slots, 6, 12, other, false)){
|
||||||
WorldUtil.addToInventory(this, 6, 12, other, EnumFacing.UP, true, true);
|
WorldUtil.addToInventory(this.slots, 6, 12, other, true);
|
||||||
|
|
||||||
if(putSeeds){
|
if(putSeeds){
|
||||||
WorldUtil.addToInventory(this, 0, 6, seeds, EnumFacing.UP, true, true);
|
WorldUtil.addToInventory(this.slots, 0, 6, seeds, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.world.playEvent(2001, plant, Block.getStateId(plantState));
|
this.world.playEvent(2001, plant, Block.getStateId(plantState));
|
||||||
|
@ -185,13 +185,13 @@ public class TileEntityFarmer extends TileEntityInventoryBase{
|
||||||
|
|
||||||
private IBlockState getFirstPlantablePlantFromSlots(BlockPos pos){
|
private IBlockState getFirstPlantablePlantFromSlots(BlockPos pos){
|
||||||
for(int i = 0; i < 6; i++){
|
for(int i = 0; i < 6; i++){
|
||||||
ItemStack stack = this.slots.get(i);
|
ItemStack stack = this.slots.getStackInSlot(i);
|
||||||
if(StackUtil.isValid(stack)){
|
if(StackUtil.isValid(stack)){
|
||||||
IPlantable plantable = getPlantableFromStack(stack);
|
IPlantable plantable = getPlantableFromStack(stack);
|
||||||
if(plantable != null){
|
if(plantable != null){
|
||||||
IBlockState state = plantable.getPlant(this.world, pos);
|
IBlockState state = plantable.getPlant(this.world, pos);
|
||||||
if(state != null && state.getBlock() instanceof BlockCrops && state.getBlock().canPlaceBlockAt(this.world, pos)){
|
if(state != null && state.getBlock() instanceof BlockCrops && state.getBlock().canPlaceBlockAt(this.world, pos)){
|
||||||
this.decrStackSize(i, 1);
|
this.slots.decrStackSize(i, 1);
|
||||||
return state;
|
return state;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -206,12 +206,7 @@ public class TileEntityFarmer extends TileEntityInventoryBase{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return slot >= 6;
|
return slot >= 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -74,13 +74,13 @@ public class TileEntityFeeder extends TileEntityInventoryBase{
|
||||||
if(this.currentAnimalAmount < THRESHOLD){
|
if(this.currentAnimalAmount < THRESHOLD){
|
||||||
if(this.currentTimer >= TIME){
|
if(this.currentTimer >= TIME){
|
||||||
this.currentTimer = 0;
|
this.currentTimer = 0;
|
||||||
if(StackUtil.isValid(this.slots.get(0))){
|
if(StackUtil.isValid(this.slots.getStackInSlot(0))){
|
||||||
EntityAnimal randomAnimal = animals.get(this.world.rand.nextInt(this.currentAnimalAmount));
|
EntityAnimal randomAnimal = animals.get(this.world.rand.nextInt(this.currentAnimalAmount));
|
||||||
if(!randomAnimal.isInLove() && randomAnimal.getGrowingAge() == 0 && (randomAnimal.isBreedingItem(this.slots.get(0)) || this.canHorseBeFed(randomAnimal))){
|
if(!randomAnimal.isInLove() && randomAnimal.getGrowingAge() == 0 && (randomAnimal.isBreedingItem(this.slots.getStackInSlot(0)) || this.canHorseBeFed(randomAnimal))){
|
||||||
|
|
||||||
this.feedAnimal(randomAnimal);
|
this.feedAnimal(randomAnimal);
|
||||||
|
|
||||||
this.slots.set(0, StackUtil.addStackSize(this.slots.get(0), -1));
|
this.slots.setStackInSlot(0, StackUtil.addStackSize(this.slots.getStackInSlot(0), -1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -112,7 +112,7 @@ public class TileEntityFeeder extends TileEntityInventoryBase{
|
||||||
if(animal instanceof EntityHorse){
|
if(animal instanceof EntityHorse){
|
||||||
EntityHorse horse = (EntityHorse)animal;
|
EntityHorse horse = (EntityHorse)animal;
|
||||||
if(horse.isTame()){
|
if(horse.isTame()){
|
||||||
Item item = this.slots.get(0).getItem();
|
Item item = this.slots.getStackInSlot(0).getItem();
|
||||||
return item == Items.GOLDEN_APPLE || item == Items.GOLDEN_CARROT;
|
return item == Items.GOLDEN_APPLE || item == Items.GOLDEN_CARROT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -135,12 +135,7 @@ public class TileEntityFeeder extends TileEntityInventoryBase{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,9 +11,11 @@
|
||||||
package de.ellpeck.actuallyadditions.mod.tile;
|
package de.ellpeck.actuallyadditions.mod.tile;
|
||||||
|
|
||||||
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
|
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerCustom;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
|
import de.ellpeck.actuallyadditions.mod.util.ItemUtil;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.item.crafting.FurnaceRecipes;
|
import net.minecraft.item.crafting.FurnaceRecipes;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
@ -44,9 +46,9 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase implements
|
||||||
super(4, "furnaceDouble");
|
super(4, "furnaceDouble");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void autoSplit(NonNullList<ItemStack> slots, int slot1, int slot2){
|
public static void autoSplit(ItemStackHandlerCustom slots, int slot1, int slot2){
|
||||||
ItemStack first = slots.get(slot1);
|
ItemStack first = slots.getStackInSlot(slot1);
|
||||||
ItemStack second = slots.get(slot2);
|
ItemStack second = slots.getStackInSlot(slot2);
|
||||||
|
|
||||||
if(StackUtil.isValid(first) || StackUtil.isValid(second)){
|
if(StackUtil.isValid(first) || StackUtil.isValid(second)){
|
||||||
ItemStack toSplit = StackUtil.getNull();
|
ItemStack toSplit = StackUtil.getNull();
|
||||||
|
@ -68,8 +70,8 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase implements
|
||||||
if(StackUtil.isValid(toSplit)){
|
if(StackUtil.isValid(toSplit)){
|
||||||
ItemStack splitFirst = toSplit.copy();
|
ItemStack splitFirst = toSplit.copy();
|
||||||
ItemStack secondSplit = splitFirst.splitStack(StackUtil.getStackSize(splitFirst)/2);
|
ItemStack secondSplit = splitFirst.splitStack(StackUtil.getStackSize(splitFirst)/2);
|
||||||
slots.set(slot1, StackUtil.validateCheck(splitFirst));
|
slots.setStackInSlot(slot1, StackUtil.validateCheck(splitFirst));
|
||||||
slots.set(slot2, StackUtil.validateCheck(secondSplit));
|
slots.setStackInSlot(slot2, StackUtil.validateCheck(secondSplit));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -152,10 +154,10 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase implements
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canSmeltOn(int theInput, int theOutput){
|
public boolean canSmeltOn(int theInput, int theOutput){
|
||||||
if(StackUtil.isValid(this.slots.get(theInput))){
|
if(StackUtil.isValid(this.slots.getStackInSlot(theInput))){
|
||||||
ItemStack output = FurnaceRecipes.instance().getSmeltingResult(this.slots.get(theInput));
|
ItemStack output = FurnaceRecipes.instance().getSmeltingResult(this.slots.getStackInSlot(theInput));
|
||||||
if(StackUtil.isValid(output)){
|
if(StackUtil.isValid(output)){
|
||||||
if(!StackUtil.isValid(this.slots.get(theOutput)) || (this.slots.get(theOutput).isItemEqual(output) && StackUtil.getStackSize(this.slots.get(theOutput)) <= this.slots.get(theOutput).getMaxStackSize()-StackUtil.getStackSize(output))){
|
if(!StackUtil.isValid(this.slots.getStackInSlot(theOutput)) || (this.slots.getStackInSlot(theOutput).isItemEqual(output) && StackUtil.getStackSize(this.slots.getStackInSlot(theOutput)) <= this.slots.getStackInSlot(theOutput).getMaxStackSize()-StackUtil.getStackSize(output))){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -165,15 +167,15 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase implements
|
||||||
}
|
}
|
||||||
|
|
||||||
public void finishBurning(int theInput, int theOutput){
|
public void finishBurning(int theInput, int theOutput){
|
||||||
ItemStack output = FurnaceRecipes.instance().getSmeltingResult(this.slots.get(theInput));
|
ItemStack output = FurnaceRecipes.instance().getSmeltingResult(this.slots.getStackInSlot(theInput));
|
||||||
if(!StackUtil.isValid(this.slots.get(theOutput))){
|
if(!StackUtil.isValid(this.slots.getStackInSlot(theOutput))){
|
||||||
this.slots.set(theOutput, output.copy());
|
this.slots.setStackInSlot(theOutput, output.copy());
|
||||||
}
|
}
|
||||||
else if(this.slots.get(theOutput).getItem() == output.getItem()){
|
else if(this.slots.getStackInSlot(theOutput).getItem() == output.getItem()){
|
||||||
this.slots.set(theOutput, StackUtil.addStackSize(this.slots.get(theOutput), StackUtil.getStackSize(output)));
|
this.slots.setStackInSlot(theOutput, StackUtil.addStackSize(this.slots.getStackInSlot(theOutput), StackUtil.getStackSize(output)));
|
||||||
}
|
}
|
||||||
|
|
||||||
this.slots.set(theInput, StackUtil.addStackSize(this.slots.get(theInput), -1));
|
this.slots.setStackInSlot(theInput, StackUtil.addStackSize(this.slots.getStackInSlot(theInput), -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
|
@ -187,12 +189,7 @@ public class TileEntityFurnaceDouble extends TileEntityInventoryBase implements
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return slot == SLOT_OUTPUT_1 || slot == SLOT_OUTPUT_2;
|
return slot == SLOT_OUTPUT_1 || slot == SLOT_OUTPUT_2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ package de.ellpeck.actuallyadditions.mod.tile;
|
||||||
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
import de.ellpeck.actuallyadditions.mod.ActuallyAdditions;
|
||||||
import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler;
|
import de.ellpeck.actuallyadditions.mod.inventory.GuiHandler;
|
||||||
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
|
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.AwfulUtil;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
@ -56,18 +57,13 @@ public class TileEntityGiantChest extends TileEntityInventoryBase implements IBu
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValidForSlot(int i, ItemStack stack){
|
public boolean isItemValidForSlot(int i, ItemStack stack){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -104,7 +100,7 @@ public class TileEntityGiantChest extends TileEntityInventoryBase implements IBu
|
||||||
if(player != null){
|
if(player != null){
|
||||||
builder.withLuck(player.getLuck());
|
builder.withLuck(player.getLuck());
|
||||||
}
|
}
|
||||||
table.fillInventory(this, new Random(), builder.build());
|
AwfulUtil.fillInventory(table, this.slots, new Random(), builder.build());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -148,9 +148,9 @@ public class TileEntityGrinder extends TileEntityInventoryBase implements IButto
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean canCrushOn(int theInput, int theFirstOutput, int theSecondOutput){
|
public boolean canCrushOn(int theInput, int theFirstOutput, int theSecondOutput){
|
||||||
if(StackUtil.isValid(this.slots.get(theInput))){
|
if(StackUtil.isValid(this.slots.getStackInSlot(theInput))){
|
||||||
ItemStack outputOne = CrusherRecipeRegistry.getOutputOnes(this.slots.get(theInput));
|
ItemStack outputOne = CrusherRecipeRegistry.getOutputOnes(this.slots.getStackInSlot(theInput));
|
||||||
ItemStack outputTwo = CrusherRecipeRegistry.getOutputTwos(this.slots.get(theInput));
|
ItemStack outputTwo = CrusherRecipeRegistry.getOutputTwos(this.slots.getStackInSlot(theInput));
|
||||||
if(StackUtil.isValid(outputOne)){
|
if(StackUtil.isValid(outputOne)){
|
||||||
if(outputOne.getItemDamage() == Util.WILDCARD){
|
if(outputOne.getItemDamage() == Util.WILDCARD){
|
||||||
outputOne.setItemDamage(0);
|
outputOne.setItemDamage(0);
|
||||||
|
@ -158,7 +158,7 @@ public class TileEntityGrinder extends TileEntityInventoryBase implements IButto
|
||||||
if(StackUtil.isValid(outputTwo) && outputTwo.getItemDamage() == Util.WILDCARD){
|
if(StackUtil.isValid(outputTwo) && outputTwo.getItemDamage() == Util.WILDCARD){
|
||||||
outputTwo.setItemDamage(0);
|
outputTwo.setItemDamage(0);
|
||||||
}
|
}
|
||||||
if((!StackUtil.isValid(this.slots.get(theFirstOutput)) || (this.slots.get(theFirstOutput).isItemEqual(outputOne) && StackUtil.getStackSize(this.slots.get(theFirstOutput)) <= this.slots.get(theFirstOutput).getMaxStackSize()-StackUtil.getStackSize(outputOne))) && (!StackUtil.isValid(outputTwo) || (!StackUtil.isValid(this.slots.get(theSecondOutput)) || (this.slots.get(theSecondOutput).isItemEqual(outputTwo) && StackUtil.getStackSize(this.slots.get(theSecondOutput)) <= this.slots.get(theSecondOutput).getMaxStackSize()-StackUtil.getStackSize(outputTwo))))){
|
if((!StackUtil.isValid(this.slots.getStackInSlot(theFirstOutput)) || (this.slots.getStackInSlot(theFirstOutput).isItemEqual(outputOne) && StackUtil.getStackSize(this.slots.getStackInSlot(theFirstOutput)) <= this.slots.getStackInSlot(theFirstOutput).getMaxStackSize()-StackUtil.getStackSize(outputOne))) && (!StackUtil.isValid(outputTwo) || (!StackUtil.isValid(this.slots.getStackInSlot(theSecondOutput)) || (this.slots.getStackInSlot(theSecondOutput).isItemEqual(outputTwo) && StackUtil.getStackSize(this.slots.getStackInSlot(theSecondOutput)) <= this.slots.getStackInSlot(theSecondOutput).getMaxStackSize()-StackUtil.getStackSize(outputTwo))))){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -171,36 +171,36 @@ public class TileEntityGrinder extends TileEntityInventoryBase implements IButto
|
||||||
}
|
}
|
||||||
|
|
||||||
public void finishCrushing(int theInput, int theFirstOutput, int theSecondOutput){
|
public void finishCrushing(int theInput, int theFirstOutput, int theSecondOutput){
|
||||||
ItemStack outputOne = CrusherRecipeRegistry.getOutputOnes(this.slots.get(theInput));
|
ItemStack outputOne = CrusherRecipeRegistry.getOutputOnes(this.slots.getStackInSlot(theInput));
|
||||||
if(StackUtil.isValid(outputOne)){
|
if(StackUtil.isValid(outputOne)){
|
||||||
if(outputOne.getItemDamage() == Util.WILDCARD){
|
if(outputOne.getItemDamage() == Util.WILDCARD){
|
||||||
outputOne.setItemDamage(0);
|
outputOne.setItemDamage(0);
|
||||||
}
|
}
|
||||||
if(!StackUtil.isValid(this.slots.get(theFirstOutput))){
|
if(!StackUtil.isValid(this.slots.getStackInSlot(theFirstOutput))){
|
||||||
this.slots.set(theFirstOutput, outputOne.copy());
|
this.slots.setStackInSlot(theFirstOutput, outputOne.copy());
|
||||||
}
|
}
|
||||||
else if(this.slots.get(theFirstOutput).getItem() == outputOne.getItem()){
|
else if(this.slots.getStackInSlot(theFirstOutput).getItem() == outputOne.getItem()){
|
||||||
this.slots.set(theFirstOutput, StackUtil.addStackSize(this.slots.get(theFirstOutput), StackUtil.getStackSize(outputOne)));
|
this.slots.setStackInSlot(theFirstOutput, StackUtil.addStackSize(this.slots.getStackInSlot(theFirstOutput), StackUtil.getStackSize(outputOne)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ItemStack outputTwo = CrusherRecipeRegistry.getOutputTwos(this.slots.get(theInput));
|
ItemStack outputTwo = CrusherRecipeRegistry.getOutputTwos(this.slots.getStackInSlot(theInput));
|
||||||
if(StackUtil.isValid(outputTwo)){
|
if(StackUtil.isValid(outputTwo)){
|
||||||
if(outputTwo.getItemDamage() == Util.WILDCARD){
|
if(outputTwo.getItemDamage() == Util.WILDCARD){
|
||||||
outputTwo.setItemDamage(0);
|
outputTwo.setItemDamage(0);
|
||||||
}
|
}
|
||||||
int rand = this.world.rand.nextInt(100)+1;
|
int rand = this.world.rand.nextInt(100)+1;
|
||||||
if(rand <= CrusherRecipeRegistry.getOutputTwoChance(this.slots.get(theInput))){
|
if(rand <= CrusherRecipeRegistry.getOutputTwoChance(this.slots.getStackInSlot(theInput))){
|
||||||
if(!StackUtil.isValid(this.slots.get(theSecondOutput))){
|
if(!StackUtil.isValid(this.slots.getStackInSlot(theSecondOutput))){
|
||||||
this.slots.set(theSecondOutput, outputTwo.copy());
|
this.slots.setStackInSlot(theSecondOutput, outputTwo.copy());
|
||||||
}
|
}
|
||||||
else if(this.slots.get(theSecondOutput).getItem() == outputTwo.getItem()){
|
else if(this.slots.getStackInSlot(theSecondOutput).getItem() == outputTwo.getItem()){
|
||||||
this.slots.set(theSecondOutput, StackUtil.addStackSize(this.slots.get(theSecondOutput), StackUtil.getStackSize(outputTwo)));
|
this.slots.setStackInSlot(theSecondOutput, StackUtil.addStackSize(this.slots.getStackInSlot(theSecondOutput), StackUtil.getStackSize(outputTwo)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.slots.set(theInput, StackUtil.addStackSize(this.slots.get(theInput), -1));
|
this.slots.setStackInSlot(theInput, StackUtil.addStackSize(this.slots.getStackInSlot(theInput), -1));
|
||||||
}
|
}
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
|
@ -219,12 +219,7 @@ public class TileEntityGrinder extends TileEntityInventoryBase implements IButto
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return slot == SLOT_OUTPUT_1_1 || slot == SLOT_OUTPUT_1_2 || slot == SLOT_OUTPUT_2_1 || slot == SLOT_OUTPUT_2_2;
|
return slot == SLOT_OUTPUT_1_1 || slot == SLOT_OUTPUT_1_2 || slot == SLOT_OUTPUT_2_1 || slot == SLOT_OUTPUT_2_2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,6 @@ import de.ellpeck.actuallyadditions.mod.network.gui.INumberReactor;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
|
import de.ellpeck.actuallyadditions.mod.util.WorldUtil;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
@ -97,7 +96,7 @@ public class TileEntityInputter extends TileEntityInventoryBase implements IButt
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean newPutting(){
|
private boolean newPutting(){
|
||||||
if(this.checkBothFilters(this.slots.get(0), true)){
|
if(this.checkBothFilters(this.slots.getStackInSlot(0), true)){
|
||||||
for(EnumFacing side : EnumFacing.values()){
|
for(EnumFacing side : EnumFacing.values()){
|
||||||
if(this.placeToPut.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side)){
|
if(this.placeToPut.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side)){
|
||||||
IItemHandler cap = this.placeToPut.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side);
|
IItemHandler cap = this.placeToPut.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, side);
|
||||||
|
@ -143,15 +142,10 @@ public class TileEntityInputter extends TileEntityInventoryBase implements IButt
|
||||||
this.placeToPull = this.world.getTileEntity(this.pos.offset(side));
|
this.placeToPull = this.world.getTileEntity(this.pos.offset(side));
|
||||||
|
|
||||||
if(this.slotToPullEnd <= 0 && this.placeToPull != null){
|
if(this.slotToPullEnd <= 0 && this.placeToPull != null){
|
||||||
if(this.placeToPull instanceof IInventory){
|
if(this.placeToPull.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)){
|
||||||
this.slotToPullEnd = ((IInventory)this.placeToPull).getSizeInventory();
|
IItemHandler cap = this.placeToPull.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
|
||||||
}
|
if(cap != null){
|
||||||
else{
|
this.slotToPullEnd = cap.getSlots();
|
||||||
if(this.placeToPull.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)){
|
|
||||||
IItemHandler cap = this.placeToPull.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
|
|
||||||
if(cap != null){
|
|
||||||
this.slotToPullEnd = cap.getSlots();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -162,15 +156,10 @@ public class TileEntityInputter extends TileEntityInventoryBase implements IButt
|
||||||
this.placeToPut = this.world.getTileEntity(this.pos.offset(side));
|
this.placeToPut = this.world.getTileEntity(this.pos.offset(side));
|
||||||
|
|
||||||
if(this.slotToPutEnd <= 0 && this.placeToPut != null){
|
if(this.slotToPutEnd <= 0 && this.placeToPut != null){
|
||||||
if(this.placeToPut instanceof IInventory){
|
if(this.placeToPut.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)){
|
||||||
this.slotToPutEnd = ((IInventory)this.placeToPut).getSizeInventory();
|
IItemHandler cap = this.placeToPut.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
|
||||||
}
|
if(cap != null){
|
||||||
else{
|
this.slotToPutEnd = cap.getSlots();
|
||||||
if(this.placeToPut.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null)){
|
|
||||||
IItemHandler cap = this.placeToPut.getCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, null);
|
|
||||||
if(cap != null){
|
|
||||||
this.slotToPutEnd = cap.getSlots();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -267,7 +256,7 @@ public class TileEntityInputter extends TileEntityInventoryBase implements IButt
|
||||||
if(this.sideToPull != -1 && this.placeToPull != null){
|
if(this.sideToPull != -1 && this.placeToPull != null){
|
||||||
this.newPulling();
|
this.newPulling();
|
||||||
}
|
}
|
||||||
if(StackUtil.isValid(this.slots.get(0)) && this.sideToPut != -1 && this.placeToPut != null){
|
if(StackUtil.isValid(this.slots.getStackInSlot(0)) && this.sideToPut != -1 && this.placeToPut != null){
|
||||||
this.newPutting();
|
this.newPutting();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -293,12 +282,7 @@ public class TileEntityInputter extends TileEntityInventoryBase implements IButt
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return slot == 0;
|
return slot == 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -10,39 +10,52 @@
|
||||||
|
|
||||||
package de.ellpeck.actuallyadditions.mod.tile;
|
package de.ellpeck.actuallyadditions.mod.tile;
|
||||||
|
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerCustom;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
import net.minecraft.inventory.Container;
|
|
||||||
import net.minecraft.inventory.IInventory;
|
|
||||||
import net.minecraft.inventory.ISidedInventory;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.nbt.NBTTagList;
|
import net.minecraft.nbt.NBTTagList;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.NonNullList;
|
import net.minecraft.util.math.MathHelper;
|
||||||
import net.minecraftforge.common.capabilities.Capability;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
import net.minecraftforge.items.CapabilityItemHandler;
|
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||||
import net.minecraftforge.items.wrapper.SidedInvWrapper;
|
import net.minecraftforge.items.ItemStackHandler;
|
||||||
|
|
||||||
public abstract class TileEntityInventoryBase extends TileEntityBase implements ISidedInventory{
|
public abstract class TileEntityInventoryBase extends TileEntityBase{
|
||||||
|
|
||||||
private final SidedInvWrapper[] invWrappers = new SidedInvWrapper[6];
|
public final ItemStackHandlerCustom slots;
|
||||||
public NonNullList<ItemStack> slots;
|
|
||||||
|
|
||||||
public TileEntityInventoryBase(int slots, String name){
|
public TileEntityInventoryBase(int slots, String name){
|
||||||
super(name);
|
super(name);
|
||||||
|
|
||||||
this.slots = StackUtil.createSlots(slots);
|
this.slots = new ItemStackHandlerCustom(slots){
|
||||||
|
@Override
|
||||||
|
public boolean canInsert(ItemStack stack, int slot){
|
||||||
|
return TileEntityInventoryBase.this.isItemValidForSlot(slot, stack);
|
||||||
|
}
|
||||||
|
|
||||||
if(this.hasInvWrapperCapabilities()){
|
@Override
|
||||||
this.getInvWrappers(this.invWrappers);
|
public boolean canExtract(ItemStack stack, int slot){
|
||||||
}
|
return TileEntityInventoryBase.this.canExtractItem(slot, stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getStackLimit(int slot, ItemStack stack){
|
||||||
|
return TileEntityInventoryBase.this.getMaxStackSizePerSlot(slot, stack);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onContentsChanged(int slot){
|
||||||
|
super.onContentsChanged(slot);
|
||||||
|
TileEntityInventoryBase.this.markDirty();
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void saveSlots(IInventory slots, NBTTagCompound compound){
|
public static void saveSlots(IItemHandler slots, NBTTagCompound compound){
|
||||||
if(slots != null && slots.getSizeInventory() > 0){
|
if(slots != null && slots.getSlots() > 0){
|
||||||
NBTTagList tagList = new NBTTagList();
|
NBTTagList tagList = new NBTTagList();
|
||||||
for(int i = 0; i < slots.getSizeInventory(); i++){
|
for(int i = 0; i < slots.getSlots(); i++){
|
||||||
ItemStack slot = slots.getStackInSlot(i);
|
ItemStack slot = slots.getStackInSlot(i);
|
||||||
NBTTagCompound tagCompound = new NBTTagCompound();
|
NBTTagCompound tagCompound = new NBTTagCompound();
|
||||||
if(StackUtil.isValid(slot)){
|
if(StackUtil.isValid(slot)){
|
||||||
|
@ -54,177 +67,68 @@ public abstract class TileEntityInventoryBase extends TileEntityBase implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void loadSlots(IInventory slots, NBTTagCompound compound){
|
public static void loadSlots(IItemHandlerModifiable slots, NBTTagCompound compound){
|
||||||
if(slots != null && slots.getSizeInventory() > 0){
|
if(slots != null && slots.getSlots() > 0){
|
||||||
NBTTagList tagList = compound.getTagList("Items", 10);
|
NBTTagList tagList = compound.getTagList("Items", 10);
|
||||||
for(int i = 0; i < slots.getSizeInventory(); i++){
|
for(int i = 0; i < slots.getSlots(); i++){
|
||||||
NBTTagCompound tagCompound = tagList.getCompoundTagAt(i);
|
NBTTagCompound tagCompound = tagList.getCompoundTagAt(i);
|
||||||
slots.setInventorySlotContents(i, tagCompound != null && tagCompound.hasKey("id") ? new ItemStack(tagCompound) : StackUtil.getNull());
|
slots.setStackInSlot(i, tagCompound != null && tagCompound.hasKey("id") ? new ItemStack(tagCompound) : StackUtil.getNull());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void getInvWrappers(SidedInvWrapper[] wrappers){
|
|
||||||
for(int i = 0; i < wrappers.length; i++){
|
|
||||||
wrappers[i] = new SidedInvWrapper(this, EnumFacing.values()[i]);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void writeSyncableNBT(NBTTagCompound compound, NBTType type){
|
public void writeSyncableNBT(NBTTagCompound compound, NBTType type){
|
||||||
super.writeSyncableNBT(compound, type);
|
super.writeSyncableNBT(compound, type);
|
||||||
if(type == NBTType.SAVE_TILE || (type == NBTType.SYNC && this.shouldSyncSlots())){
|
if(type == NBTType.SAVE_TILE || (type == NBTType.SYNC && this.shouldSyncSlots())){
|
||||||
saveSlots(this, compound);
|
saveSlots(this.slots, compound);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IItemHandler getItemHandler(EnumFacing facing){
|
||||||
|
return this.slots;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isItemValidForSlot(int slot, ItemStack stack){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getMaxStackSizePerSlot(int slot, ItemStack stack){
|
||||||
|
return stack.getMaxStackSize();
|
||||||
|
}
|
||||||
|
|
||||||
public boolean shouldSyncSlots(){
|
public boolean shouldSyncSlots(){
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getComparatorStrength(){
|
public int getComparatorStrength(){
|
||||||
return Container.calcRedstoneFromInventory(this);
|
int i = 0;
|
||||||
|
float f = 0;
|
||||||
|
|
||||||
|
for(int j = 0; j < this.slots.getSlots(); ++j){
|
||||||
|
ItemStack stack = this.slots.getStackInSlot(j);
|
||||||
|
|
||||||
|
if(StackUtil.isValid(stack)){
|
||||||
|
f += (float)StackUtil.getStackSize(stack)/(float)Math.min(this.getMaxStackSizePerSlot(j, stack), stack.getMaxStackSize());
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
f = f/(float)this.slots.getSlots();
|
||||||
|
return MathHelper.floor(f*14.0F)+(i > 0 ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void readSyncableNBT(NBTTagCompound compound, NBTType type){
|
public void readSyncableNBT(NBTTagCompound compound, NBTType type){
|
||||||
super.readSyncableNBT(compound, type);
|
super.readSyncableNBT(compound, type);
|
||||||
if(type == NBTType.SAVE_TILE || (type == NBTType.SYNC && this.shouldSyncSlots())){
|
if(type == NBTType.SAVE_TILE || (type == NBTType.SYNC && this.shouldSyncSlots())){
|
||||||
loadSlots(this, compound);
|
loadSlots(this.slots, compound);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getSlotsForFace(EnumFacing side){
|
|
||||||
int invSize = this.getSizeInventory();
|
|
||||||
if(invSize > 0){
|
|
||||||
int[] theInt = new int[invSize];
|
|
||||||
for(int i = 0; i < theInt.length; i++){
|
|
||||||
theInt[i] = i;
|
|
||||||
}
|
|
||||||
return theInt;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
return new int[0];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getInventoryStackLimit(){
|
|
||||||
return 64;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isUsableByPlayer(EntityPlayer player){
|
|
||||||
return this.canPlayerUse(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void openInventory(EntityPlayer player){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void closeInventory(EntityPlayer player){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getField(int id){
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setField(int id, int value){
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getFieldCount(){
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void clear(){
|
|
||||||
this.slots.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setInventorySlotContents(int i, ItemStack stack){
|
|
||||||
this.slots.set(i, stack);
|
|
||||||
this.markDirty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSizeInventory(){
|
|
||||||
return this.slots.size();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack getStackInSlot(int i){
|
|
||||||
if(i < this.getSizeInventory()){
|
|
||||||
return this.slots.get(i);
|
|
||||||
}
|
|
||||||
return StackUtil.getNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack decrStackSize(int i, int j){
|
|
||||||
if(StackUtil.isValid(this.slots.get(i))){
|
|
||||||
ItemStack stackAt;
|
|
||||||
if(StackUtil.getStackSize(this.slots.get(i)) <= j){
|
|
||||||
stackAt = this.slots.get(i);
|
|
||||||
this.slots.set(i, StackUtil.getNull());
|
|
||||||
this.markDirty();
|
|
||||||
return stackAt;
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
stackAt = this.slots.get(i).splitStack(j);
|
|
||||||
if(StackUtil.getStackSize(this.slots.get(i)) <= 0){
|
|
||||||
this.slots.set(i, StackUtil.getNull());
|
|
||||||
}
|
|
||||||
this.markDirty();
|
|
||||||
return stackAt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return StackUtil.getNull();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack removeStackFromSlot(int index){
|
|
||||||
ItemStack stack = this.slots.get(index);
|
|
||||||
this.slots.set(index, StackUtil.getNull());
|
|
||||||
return stack;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName(){
|
|
||||||
return this.getDisplayedName();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasCustomName(){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public <T> T getCapability(Capability<T> capability, EnumFacing facing){
|
|
||||||
if(this.hasInvWrapperCapabilities() && capability == CapabilityItemHandler.ITEM_HANDLER_CAPABILITY){
|
|
||||||
return (T)this.invWrappers[facing == null ? 0 : facing.ordinal()];
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
return super.getCapability(capability, facing);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean hasInvWrapperCapabilities(){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isEmpty(){
|
|
||||||
return StackUtil.isIInvEmpty(this.slots);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -77,11 +77,11 @@ public class TileEntityItemRepairer extends TileEntityInventoryBase{
|
||||||
public void updateEntity(){
|
public void updateEntity(){
|
||||||
super.updateEntity();
|
super.updateEntity();
|
||||||
if(!this.world.isRemote){
|
if(!this.world.isRemote){
|
||||||
ItemStack input = this.slots.get(SLOT_INPUT);
|
ItemStack input = this.slots.getStackInSlot(SLOT_INPUT);
|
||||||
if(!StackUtil.isValid(this.slots.get(SLOT_OUTPUT)) && canBeRepaired(input)){
|
if(!StackUtil.isValid(this.slots.getStackInSlot(SLOT_OUTPUT)) && canBeRepaired(input)){
|
||||||
if(input.getItemDamage() <= 0){
|
if(input.getItemDamage() <= 0){
|
||||||
this.slots.set(SLOT_OUTPUT, input.copy());
|
this.slots.setStackInSlot(SLOT_OUTPUT, input.copy());
|
||||||
this.slots.set(SLOT_INPUT, StackUtil.getNull());
|
this.slots.setStackInSlot(SLOT_INPUT, StackUtil.getNull());
|
||||||
this.nextRepairTick = 0;
|
this.nextRepairTick = 0;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
@ -125,19 +125,14 @@ public class TileEntityItemRepairer extends TileEntityInventoryBase{
|
||||||
|
|
||||||
@SideOnly(Side.CLIENT)
|
@SideOnly(Side.CLIENT)
|
||||||
public int getItemDamageToScale(int i){
|
public int getItemDamageToScale(int i){
|
||||||
if(StackUtil.isValid(this.slots.get(SLOT_INPUT))){
|
if(StackUtil.isValid(this.slots.getStackInSlot(SLOT_INPUT))){
|
||||||
return (this.slots.get(SLOT_INPUT).getMaxDamage()-this.slots.get(SLOT_INPUT).getItemDamage())*i/this.slots.get(SLOT_INPUT).getMaxDamage();
|
return (this.slots.getStackInSlot(SLOT_INPUT).getMaxDamage()-this.slots.getStackInSlot(SLOT_INPUT).getItemDamage())*i/this.slots.getStackInSlot(SLOT_INPUT).getMaxDamage();
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return slot == SLOT_OUTPUT;
|
return slot == SLOT_OUTPUT;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -19,11 +19,11 @@ import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
import net.minecraftforge.items.wrapper.SidedInvWrapper;
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
public class TileEntityItemViewer extends TileEntityInventoryBase{
|
public class TileEntityItemViewer extends TileEntityBase{
|
||||||
|
|
||||||
private final List<GenericItemHandlerInfo> genericInfos = new ArrayList<GenericItemHandlerInfo>();
|
private final List<GenericItemHandlerInfo> genericInfos = new ArrayList<GenericItemHandlerInfo>();
|
||||||
private final Map<Integer, SpecificItemHandlerInfo> specificInfos = new HashMap<Integer, SpecificItemHandlerInfo>();
|
private final Map<Integer, SpecificItemHandlerInfo> specificInfos = new HashMap<Integer, SpecificItemHandlerInfo>();
|
||||||
|
@ -32,49 +32,69 @@ public class TileEntityItemViewer extends TileEntityInventoryBase{
|
||||||
private Network oldNetwork;
|
private Network oldNetwork;
|
||||||
private int lastNetworkChangeAmount = -1;
|
private int lastNetworkChangeAmount = -1;
|
||||||
|
|
||||||
|
private final IItemHandler itemHandler;
|
||||||
|
|
||||||
public TileEntityItemViewer(){
|
public TileEntityItemViewer(){
|
||||||
super(0, "itemViewer");
|
super("itemViewer");
|
||||||
|
|
||||||
|
this.itemHandler = new IItemHandler(){
|
||||||
|
@Override
|
||||||
|
public int getSlots(){
|
||||||
|
int size = 0;
|
||||||
|
List<GenericItemHandlerInfo> infos = TileEntityItemViewer.this.getItemHandlerInfos();
|
||||||
|
if(infos != null){
|
||||||
|
for(GenericItemHandlerInfo info : infos){
|
||||||
|
for(IItemHandler handler : info.handlers){
|
||||||
|
size += handler.getSlots();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return size;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack getStackInSlot(int slot){
|
||||||
|
SpecificItemHandlerInfo handler = TileEntityItemViewer.this.getSwitchedIndexHandler(slot);
|
||||||
|
if(handler != null){
|
||||||
|
return handler.handler.getStackInSlot(handler.switchedIndex);
|
||||||
|
}
|
||||||
|
return StackUtil.getNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack insertItem(int slot, ItemStack stack, boolean simulate){
|
||||||
|
SpecificItemHandlerInfo info = TileEntityItemViewer.this.getSwitchedIndexHandler(slot);
|
||||||
|
if(info != null && TileEntityItemViewer.this.isWhitelisted(info, stack, false)){
|
||||||
|
ItemStack inserted = info.handler.insertItem(info.switchedIndex, stack, simulate);
|
||||||
|
if(!ItemStack.areItemStacksEqual(inserted, stack)){
|
||||||
|
TileEntityItemViewer.this.markDirty();
|
||||||
|
}
|
||||||
|
return inserted;
|
||||||
|
}
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack extractItem(int slot, int amount, boolean simulate){
|
||||||
|
ItemStack stackIn = this.getStackInSlot(slot);
|
||||||
|
if(StackUtil.isValid(stackIn)){
|
||||||
|
SpecificItemHandlerInfo info = TileEntityItemViewer.this.getSwitchedIndexHandler(slot);
|
||||||
|
if(info != null && TileEntityItemViewer.this.isWhitelisted(info, stackIn, true)){
|
||||||
|
ItemStack extracted = info.handler.extractItem(info.switchedIndex, amount, simulate);
|
||||||
|
if(extracted != null){
|
||||||
|
TileEntityItemViewer.this.markDirty();
|
||||||
|
}
|
||||||
|
return extracted;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return StackUtil.getNull();
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void getInvWrappers(SidedInvWrapper[] wrappers){
|
public IItemHandler getItemHandler(EnumFacing facing){
|
||||||
for(int i = 0; i < wrappers.length; i++){
|
return this.itemHandler;
|
||||||
final EnumFacing direction = EnumFacing.values()[i];
|
|
||||||
wrappers[i] = new SidedInvWrapper(this, direction){
|
|
||||||
@Override
|
|
||||||
public ItemStack insertItem(int slot, ItemStack stack, boolean simulate){
|
|
||||||
if(TileEntityItemViewer.this.canInsertItem(slot, stack, direction)){
|
|
||||||
SpecificItemHandlerInfo info = TileEntityItemViewer.this.getSwitchedIndexHandler(slot);
|
|
||||||
if(info != null){
|
|
||||||
ItemStack inserted = info.handler.insertItem(info.switchedIndex, stack, simulate);
|
|
||||||
if(!ItemStack.areItemStacksEqual(inserted, stack)){
|
|
||||||
TileEntityItemViewer.this.markDirty();
|
|
||||||
}
|
|
||||||
return inserted;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return super.insertItem(slot, stack, simulate);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack extractItem(int slot, int amount, boolean simulate){
|
|
||||||
ItemStack stackIn = TileEntityItemViewer.this.getStackInSlot(slot);
|
|
||||||
if(StackUtil.isValid(stackIn)){
|
|
||||||
if(TileEntityItemViewer.this.canExtractItem(slot, stackIn, direction)){
|
|
||||||
SpecificItemHandlerInfo info = TileEntityItemViewer.this.getSwitchedIndexHandler(slot);
|
|
||||||
if(info != null){
|
|
||||||
ItemStack extracted = info.handler.extractItem(info.switchedIndex, amount, simulate);
|
|
||||||
if(extracted != null){
|
|
||||||
TileEntityItemViewer.this.markDirty();
|
|
||||||
}
|
|
||||||
return extracted;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return super.extractItem(slot, amount, simulate);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<GenericItemHandlerInfo> getItemHandlerInfos(){
|
private List<GenericItemHandlerInfo> getItemHandlerInfos(){
|
||||||
|
@ -159,25 +179,6 @@ public class TileEntityItemViewer extends TileEntityInventoryBase{
|
||||||
this.connectedRelay = tileFound;
|
this.connectedRelay = tileFound;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canInsertItem(int index, ItemStack stack, EnumFacing direction){
|
|
||||||
return this.isItemValidForSlot(index, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int index, ItemStack stack, EnumFacing direction){
|
|
||||||
SpecificItemHandlerInfo handler = this.getSwitchedIndexHandler(index);
|
|
||||||
if(handler != null){
|
|
||||||
if(this.isWhitelisted(handler, stack, true)){
|
|
||||||
if(ItemStack.areItemsEqual(handler.handler.getStackInSlot(handler.switchedIndex), stack)){
|
|
||||||
ItemStack gaveBack = handler.handler.extractItem(handler.switchedIndex, StackUtil.getStackSize(stack), true);
|
|
||||||
return StackUtil.isValid(gaveBack);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isWhitelisted(SpecificItemHandlerInfo handler, ItemStack stack, boolean output){
|
private boolean isWhitelisted(SpecificItemHandlerInfo handler, ItemStack stack, boolean output){
|
||||||
boolean whitelisted = handler.relayInQuestion.isWhitelisted(stack, output);
|
boolean whitelisted = handler.relayInQuestion.isWhitelisted(stack, output);
|
||||||
TileEntityLaserRelayItem connected = this.connectedRelay;
|
TileEntityLaserRelayItem connected = this.connectedRelay;
|
||||||
|
@ -189,96 +190,6 @@ public class TileEntityItemViewer extends TileEntityInventoryBase{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isItemValidForSlot(int index, ItemStack stack){
|
|
||||||
SpecificItemHandlerInfo handler = this.getSwitchedIndexHandler(index);
|
|
||||||
if(handler != null){
|
|
||||||
if(this.isWhitelisted(handler, stack, false)){
|
|
||||||
ItemStack gaveBack = handler.handler.insertItem(handler.switchedIndex, stack, true);
|
|
||||||
return !ItemStack.areItemStacksEqual(gaveBack, stack);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void clear(){
|
|
||||||
for(int i = 0; i < this.getSizeInventory(); i++){
|
|
||||||
this.removeStackFromSlot(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setInventorySlotContents(int i, ItemStack stack){
|
|
||||||
if(StackUtil.isValid(stack)){
|
|
||||||
SpecificItemHandlerInfo handler = this.getSwitchedIndexHandler(i);
|
|
||||||
if(handler != null){
|
|
||||||
ItemStack toInsert = stack.copy();
|
|
||||||
ItemStack inSlot = handler.handler.getStackInSlot(handler.switchedIndex);
|
|
||||||
if(StackUtil.isValid(inSlot)){
|
|
||||||
toInsert = StackUtil.addStackSize(toInsert, -StackUtil.getStackSize(inSlot));
|
|
||||||
}
|
|
||||||
handler.handler.insertItem(handler.switchedIndex, toInsert, false);
|
|
||||||
this.markDirty();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
this.removeStackFromSlot(i);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSizeInventory(){
|
|
||||||
int size = 0;
|
|
||||||
List<GenericItemHandlerInfo> infos = this.getItemHandlerInfos();
|
|
||||||
if(infos != null){
|
|
||||||
for(GenericItemHandlerInfo info : infos){
|
|
||||||
for(IItemHandler handler : info.handlers){
|
|
||||||
size += handler.getSlots();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return size;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack getStackInSlot(int i){
|
|
||||||
SpecificItemHandlerInfo handler = this.getSwitchedIndexHandler(i);
|
|
||||||
if(handler != null){
|
|
||||||
return handler.handler.getStackInSlot(handler.switchedIndex);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack decrStackSize(int i, int j){
|
|
||||||
SpecificItemHandlerInfo handler = this.getSwitchedIndexHandler(i);
|
|
||||||
if(handler != null){
|
|
||||||
ItemStack extract = handler.handler.extractItem(handler.switchedIndex, j, false);
|
|
||||||
if(extract != null){
|
|
||||||
this.markDirty();
|
|
||||||
}
|
|
||||||
return extract;
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack removeStackFromSlot(int index){
|
|
||||||
SpecificItemHandlerInfo handler = this.getSwitchedIndexHandler(index);
|
|
||||||
if(handler != null){
|
|
||||||
ItemStack stackInSlot = handler.handler.getStackInSlot(handler.switchedIndex);
|
|
||||||
if(StackUtil.isValid(stackInSlot)){
|
|
||||||
ItemStack extracted = handler.handler.extractItem(handler.switchedIndex, StackUtil.getStackSize(stackInSlot), false);
|
|
||||||
if(extracted != null){
|
|
||||||
this.markDirty();
|
|
||||||
}
|
|
||||||
return extracted;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class SpecificItemHandlerInfo{
|
private static class SpecificItemHandlerInfo{
|
||||||
|
|
||||||
public final IItemHandler handler;
|
public final IItemHandler handler;
|
||||||
|
|
|
@ -124,7 +124,7 @@ public class TileEntityLaserRelayEnergy extends TileEntityLaserRelay{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(change){
|
if(change || old.size() != this.receiversAround.size()){
|
||||||
Network network = ActuallyAdditionsAPI.connectionHandler.getNetworkFor(this.getPos(), this.getWorld());
|
Network network = ActuallyAdditionsAPI.connectionHandler.getNetworkFor(this.getPos(), this.getWorld());
|
||||||
if(network != null){
|
if(network != null){
|
||||||
network.changeAmount++;
|
network.changeAmount++;
|
||||||
|
|
|
@ -89,7 +89,7 @@ public class TileEntityLaserRelayFluids extends TileEntityLaserRelay implements
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(change){
|
if(change || old.size() != this.receiversAround.size()){
|
||||||
Network network = ActuallyAdditionsAPI.connectionHandler.getNetworkFor(this.getPos(), this.getWorld());
|
Network network = ActuallyAdditionsAPI.connectionHandler.getNetworkFor(this.getPos(), this.getWorld());
|
||||||
if(network != null){
|
if(network != null){
|
||||||
network.changeAmount++;
|
network.changeAmount++;
|
||||||
|
|
|
@ -79,7 +79,7 @@ public class TileEntityLaserRelayItem extends TileEntityLaserRelay{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(change){
|
if(change || old.size() != this.handlersAround.size()){
|
||||||
Network network = ActuallyAdditionsAPI.connectionHandler.getNetworkFor(this.getPos(), this.getWorld());
|
Network network = ActuallyAdditionsAPI.connectionHandler.getNetworkFor(this.getPos(), this.getWorld());
|
||||||
if(network != null){
|
if(network != null){
|
||||||
network.changeAmount++;
|
network.changeAmount++;
|
||||||
|
|
|
@ -14,6 +14,7 @@ import de.ellpeck.actuallyadditions.mod.inventory.ContainerFilter;
|
||||||
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter;
|
import de.ellpeck.actuallyadditions.mod.inventory.slot.SlotFilter;
|
||||||
import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
|
import de.ellpeck.actuallyadditions.mod.items.ItemDrill;
|
||||||
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
|
import de.ellpeck.actuallyadditions.mod.network.gui.IButtonReactor;
|
||||||
|
import de.ellpeck.actuallyadditions.mod.util.ItemStackHandlerCustom;
|
||||||
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
import de.ellpeck.actuallyadditions.mod.util.StackUtil;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.inventory.IInventory;
|
import net.minecraft.inventory.IInventory;
|
||||||
|
@ -21,6 +22,7 @@ import net.minecraft.inventory.InventoryBasic;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
import net.minecraftforge.items.ItemStackHandler;
|
||||||
|
|
||||||
public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem implements IButtonReactor{
|
public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem implements IButtonReactor{
|
||||||
|
|
||||||
|
@ -79,17 +81,17 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem
|
||||||
copy = StackUtil.setStackSize(copy, 1);
|
copy = StackUtil.setStackSize(copy, 1);
|
||||||
|
|
||||||
if(!FilterSettings.check(copy, usedSettings.filterInventory, true, usedSettings.respectMeta, usedSettings.respectNBT, usedSettings.respectMod, usedSettings.respectOredict)){
|
if(!FilterSettings.check(copy, usedSettings.filterInventory, true, usedSettings.respectMeta, usedSettings.respectNBT, usedSettings.respectMod, usedSettings.respectOredict)){
|
||||||
for(int k = 0; k < usedSettings.filterInventory.getSizeInventory(); k++){
|
for(int k = 0; k < usedSettings.filterInventory.getSlots(); k++){
|
||||||
ItemStack slot = usedSettings.filterInventory.getStackInSlot(k);
|
ItemStack slot = usedSettings.filterInventory.getStackInSlot(k);
|
||||||
if(StackUtil.isValid(slot)){
|
if(StackUtil.isValid(slot)){
|
||||||
if(SlotFilter.isFilter(slot)){
|
if(SlotFilter.isFilter(slot)){
|
||||||
IInventory inv = new InventoryBasic("Filter", false, ContainerFilter.SLOT_AMOUNT);
|
ItemStackHandlerCustom inv = new ItemStackHandlerCustom(ContainerFilter.SLOT_AMOUNT);
|
||||||
ItemDrill.loadSlotsFromNBT(inv, slot);
|
ItemDrill.loadSlotsFromNBT(inv, slot);
|
||||||
|
|
||||||
boolean did = false;
|
boolean did = false;
|
||||||
for(int j = 0; j < inv.getSizeInventory(); j++){
|
for(int j = 0; j < inv.getSlots(); j++){
|
||||||
if(!StackUtil.isValid(inv.getStackInSlot(j))){
|
if(!StackUtil.isValid(inv.getStackInSlot(j))){
|
||||||
inv.setInventorySlotContents(j, copy);
|
inv.setStackInSlot(j, copy);
|
||||||
did = true;
|
did = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -102,7 +104,7 @@ public class TileEntityLaserRelayItemWhitelist extends TileEntityLaserRelayItem
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
usedSettings.filterInventory.setInventorySlotContents(k, copy);
|
usedSettings.filterInventory.setStackInSlot(k, copy);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -106,11 +106,11 @@ public class TileEntityMiner extends TileEntityInventoryBase implements IButtonR
|
||||||
float chance = ForgeEventFactory.fireBlockHarvesting(drops, this.world, pos, this.world.getBlockState(pos), 0, 1, false, null);
|
float chance = ForgeEventFactory.fireBlockHarvesting(drops, this.world, pos, this.world.getBlockState(pos), 0, 1, false, null);
|
||||||
|
|
||||||
if(this.world.rand.nextFloat() <= chance){
|
if(this.world.rand.nextFloat() <= chance){
|
||||||
if(WorldUtil.addToInventory(this, drops, false, true)){
|
if(WorldUtil.addToInventory(this.slots, drops, false)){
|
||||||
this.world.playEvent(2001, pos, Block.getStateId(this.world.getBlockState(pos)));
|
this.world.playEvent(2001, pos, Block.getStateId(this.world.getBlockState(pos)));
|
||||||
this.world.setBlockToAir(pos);
|
this.world.setBlockToAir(pos);
|
||||||
|
|
||||||
WorldUtil.addToInventory(this, drops, true, true);
|
WorldUtil.addToInventory(this.slots, drops, true);
|
||||||
this.markDirty();
|
this.markDirty();
|
||||||
|
|
||||||
this.storage.extractEnergyInternal(actualUse, false);
|
this.storage.extractEnergyInternal(actualUse, false);
|
||||||
|
@ -184,12 +184,7 @@ public class TileEntityMiner extends TileEntityInventoryBase implements IButtonR
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -11,8 +11,6 @@
|
||||||
package de.ellpeck.actuallyadditions.mod.tile;
|
package de.ellpeck.actuallyadditions.mod.tile;
|
||||||
|
|
||||||
import de.ellpeck.actuallyadditions.mod.blocks.BlockPhantom;
|
import de.ellpeck.actuallyadditions.mod.blocks.BlockPhantom;
|
||||||
import net.minecraft.inventory.IInventory;
|
|
||||||
import net.minecraft.inventory.ISidedInventory;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
@ -25,99 +23,19 @@ public class TileEntityPhantomItemface extends TileEntityPhantomface{
|
||||||
this.type = BlockPhantom.Type.FACE;
|
this.type = BlockPhantom.Type.FACE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getSlotsForFace(EnumFacing side){
|
|
||||||
if(this.isBoundThingInRange()){
|
|
||||||
if(this.getSided() != null){
|
|
||||||
return this.getSided().getSlotsForFace(side);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
int[] theInt = new int[this.getSizeInventory()];
|
|
||||||
for(int i = 0; i < theInt.length; i++){
|
|
||||||
theInt[i] = i;
|
|
||||||
}
|
|
||||||
return theInt;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return new int[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getInventoryStackLimit(){
|
|
||||||
return this.isBoundThingInRange() ? this.getInventory().getInventoryStackLimit() : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void clear(){
|
|
||||||
if(this.isBoundThingInRange()){
|
|
||||||
this.getInventory().clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setInventorySlotContents(int i, ItemStack stack){
|
|
||||||
if(this.isBoundThingInRange()){
|
|
||||||
this.getInventory().setInventorySlotContents(i, stack);
|
|
||||||
}
|
|
||||||
this.markDirty();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSizeInventory(){
|
|
||||||
return this.isBoundThingInRange() ? this.getInventory().getSizeInventory() : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack getStackInSlot(int i){
|
|
||||||
return this.isBoundThingInRange() ? this.getInventory().getStackInSlot(i) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack decrStackSize(int i, int j){
|
|
||||||
return this.isBoundThingInRange() ? this.getInventory().decrStackSize(i, j) : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack removeStackFromSlot(int index){
|
|
||||||
if(this.isBoundThingInRange()){
|
|
||||||
return this.getInventory().removeStackFromSlot(index);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public ISidedInventory getSided(){
|
|
||||||
return this.getInventory() instanceof ISidedInventory ? (ISidedInventory)this.getInventory() : null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public IInventory getInventory(){
|
|
||||||
if(this.boundPosition != null){
|
|
||||||
TileEntity tile = this.world.getTileEntity(this.boundPosition);
|
|
||||||
if(tile instanceof IInventory){
|
|
||||||
return (IInventory)tile;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isItemValidForSlot(int i, ItemStack stack){
|
public boolean isItemValidForSlot(int i, ItemStack stack){
|
||||||
return this.isBoundThingInRange() && this.getInventory().isItemValidForSlot(i, stack);
|
return this.isBoundThingInRange();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isBoundThingInRange(){
|
public boolean isBoundThingInRange(){
|
||||||
if(super.isBoundThingInRange()){
|
if(super.isBoundThingInRange()){
|
||||||
if(this.getInventory() != null){
|
TileEntity tile = this.world.getTileEntity(this.getBoundPosition());
|
||||||
return true;
|
if(tile != null){
|
||||||
}
|
for(EnumFacing facing : EnumFacing.values()){
|
||||||
else{
|
if(tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing)){
|
||||||
TileEntity tile = this.world.getTileEntity(this.getBoundPosition());
|
return true;
|
||||||
if(tile != null){
|
|
||||||
for(EnumFacing facing : EnumFacing.values()){
|
|
||||||
if(tile.hasCapability(CapabilityItemHandler.ITEM_HANDLER_CAPABILITY, facing)){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -126,12 +44,7 @@ public class TileEntityPhantomItemface extends TileEntityPhantomface{
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isBoundThingInRange() && (this.getSided() == null || this.getSided().canInsertItem(slot, stack, side));
|
return this.isBoundThingInRange();
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return this.isBoundThingInRange() && (this.getSided() == null || this.getSided().canExtractItem(slot, stack, side));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -138,19 +138,19 @@ public class TileEntityPhantomPlacer extends TileEntityInventoryBase implements
|
||||||
ArrayList<ItemStack> drops = new ArrayList<ItemStack>();
|
ArrayList<ItemStack> drops = new ArrayList<ItemStack>();
|
||||||
drops.addAll(blockToBreak.getDrops(this.world, this.boundPosition, this.world.getBlockState(this.boundPosition), 0));
|
drops.addAll(blockToBreak.getDrops(this.world, this.boundPosition, this.world.getBlockState(this.boundPosition), 0));
|
||||||
|
|
||||||
if(WorldUtil.addToInventory(this, drops, false, true)){
|
if(WorldUtil.addToInventory(this.slots, drops, false)){
|
||||||
this.world.playEvent(2001, this.boundPosition, Block.getStateId(this.world.getBlockState(this.boundPosition)));
|
this.world.playEvent(2001, this.boundPosition, Block.getStateId(this.world.getBlockState(this.boundPosition)));
|
||||||
this.world.setBlockToAir(this.boundPosition);
|
this.world.setBlockToAir(this.boundPosition);
|
||||||
WorldUtil.addToInventory(this, drops, true, true);
|
WorldUtil.addToInventory(this.slots, drops, true);
|
||||||
this.markDirty();
|
this.markDirty();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
int theSlot = WorldUtil.findFirstFilledSlot(this.slots);
|
int theSlot = WorldUtil.findFirstFilledSlot(this.slots);
|
||||||
this.setInventorySlotContents(theSlot, WorldUtil.useItemAtSide(WorldUtil.getDirectionBySidesInOrder(this.side), this.world, this.boundPosition, this.slots.get(theSlot)));
|
this.slots.setStackInSlot(theSlot, WorldUtil.useItemAtSide(WorldUtil.getDirectionBySidesInOrder(this.side), this.world, this.boundPosition, this.slots.getStackInSlot(theSlot)));
|
||||||
if(!StackUtil.isValid(this.slots.get(theSlot))){
|
if(!StackUtil.isValid(this.slots.getStackInSlot(theSlot))){
|
||||||
this.slots.set(theSlot, StackUtil.getNull());
|
this.slots.setStackInSlot(theSlot, StackUtil.getNull());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -206,12 +206,7 @@ public class TileEntityPhantomPlacer extends TileEntityInventoryBase implements
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return this.isBreaker;
|
return this.isBreaker;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -121,11 +121,6 @@ public class TileEntityPhantomface extends TileEntityInventoryBase implements IP
|
||||||
this.markDirty();
|
this.markDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isItemValidForSlot(int slot, ItemStack stack){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasBoundPosition(){
|
public boolean hasBoundPosition(){
|
||||||
if(this.boundPosition != null){
|
if(this.boundPosition != null){
|
||||||
|
@ -182,21 +177,6 @@ public class TileEntityPhantomface extends TileEntityInventoryBase implements IP
|
||||||
return this.range;
|
return this.range;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean hasInvWrapperCapabilities(){
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean hasCapability(Capability<?> capability, EnumFacing facing){
|
public boolean hasCapability(Capability<?> capability, EnumFacing facing){
|
||||||
if(this.isBoundThingInRange()){
|
if(this.isBoundThingInRange()){
|
||||||
|
|
|
@ -20,20 +20,24 @@ import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraftforge.energy.CapabilityEnergy;
|
import net.minecraftforge.energy.CapabilityEnergy;
|
||||||
import net.minecraftforge.energy.IEnergyStorage;
|
import net.minecraftforge.energy.IEnergyStorage;
|
||||||
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
import net.minecraftforge.items.wrapper.PlayerInvWrapper;
|
||||||
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class TileEntityPlayerInterface extends TileEntityInventoryBase implements IEnergyDisplay{
|
public class TileEntityPlayerInterface extends TileEntityBase implements IEnergyDisplay{
|
||||||
|
|
||||||
public static final int DEFAULT_RANGE = 32;
|
public static final int DEFAULT_RANGE = 32;
|
||||||
private final CustomEnergyStorage storage = new CustomEnergyStorage(30000, 50, 0);
|
private final CustomEnergyStorage storage = new CustomEnergyStorage(30000, 50, 0);
|
||||||
public UUID connectedPlayer;
|
public UUID connectedPlayer;
|
||||||
|
private IItemHandler playerHandler;
|
||||||
|
private EntityPlayer oldPlayer;
|
||||||
public String playerName;
|
public String playerName;
|
||||||
private int oldEnergy;
|
private int oldEnergy;
|
||||||
private int range;
|
private int range;
|
||||||
|
|
||||||
public TileEntityPlayerInterface(){
|
public TileEntityPlayerInterface(){
|
||||||
super(0, "playerInterface");
|
super("playerInterface");
|
||||||
}
|
}
|
||||||
|
|
||||||
private EntityPlayer getPlayer(){
|
private EntityPlayer getPlayer(){
|
||||||
|
@ -48,6 +52,19 @@ public class TileEntityPlayerInterface extends TileEntityInventoryBase implement
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public IItemHandler getItemHandler(EnumFacing facing){
|
||||||
|
EntityPlayer player = this.getPlayer();
|
||||||
|
|
||||||
|
if(this.oldPlayer != player){
|
||||||
|
this.oldPlayer = player;
|
||||||
|
|
||||||
|
this.playerHandler = player == null ? null : new PlayerInvWrapper(player.inventory);
|
||||||
|
}
|
||||||
|
|
||||||
|
return this.playerHandler;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateEntity(){
|
public void updateEntity(){
|
||||||
super.updateEntity();
|
super.updateEntity();
|
||||||
|
@ -121,96 +138,6 @@ public class TileEntityPlayerInterface extends TileEntityInventoryBase implement
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public int[] getSlotsForFace(EnumFacing side){
|
|
||||||
if(this.getPlayer() != null){
|
|
||||||
int[] theInt = new int[this.getSizeInventory()];
|
|
||||||
for(int i = 0; i < theInt.length; i++){
|
|
||||||
theInt[i] = i;
|
|
||||||
}
|
|
||||||
return theInt;
|
|
||||||
}
|
|
||||||
return new int[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getInventoryStackLimit(){
|
|
||||||
EntityPlayer player = this.getPlayer();
|
|
||||||
return player != null ? player.inventory.getInventoryStackLimit() : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void clear(){
|
|
||||||
EntityPlayer player = this.getPlayer();
|
|
||||||
if(player != null){
|
|
||||||
player.inventory.clear();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setInventorySlotContents(int i, ItemStack stack){
|
|
||||||
EntityPlayer player = this.getPlayer();
|
|
||||||
if(player != null){
|
|
||||||
player.inventory.setInventorySlotContents(i, stack);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getSizeInventory(){
|
|
||||||
EntityPlayer player = this.getPlayer();
|
|
||||||
if(player != null){
|
|
||||||
return player.inventory.getSizeInventory();
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack getStackInSlot(int i){
|
|
||||||
EntityPlayer player = this.getPlayer();
|
|
||||||
if(player != null){
|
|
||||||
return player.inventory.getStackInSlot(i);
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack decrStackSize(int i, int j){
|
|
||||||
EntityPlayer player = this.getPlayer();
|
|
||||||
if(player != null){
|
|
||||||
return player.inventory.decrStackSize(i, j);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ItemStack removeStackFromSlot(int index){
|
|
||||||
EntityPlayer player = this.getPlayer();
|
|
||||||
if(player != null){
|
|
||||||
return player.inventory.removeStackFromSlot(index);
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isItemValidForSlot(int i, ItemStack stack){
|
|
||||||
EntityPlayer player = this.getPlayer();
|
|
||||||
return player != null && player.inventory.isItemValidForSlot(i, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CustomEnergyStorage getEnergyStorage(){
|
public CustomEnergyStorage getEnergyStorage(){
|
||||||
return this.storage;
|
return this.storage;
|
||||||
|
|
|
@ -60,8 +60,8 @@ public class TileEntityRangedCollector extends TileEntityInventoryBase implement
|
||||||
if(this.filter.check(toAdd)){
|
if(this.filter.check(toAdd)){
|
||||||
ArrayList<ItemStack> checkList = new ArrayList<ItemStack>();
|
ArrayList<ItemStack> checkList = new ArrayList<ItemStack>();
|
||||||
checkList.add(toAdd);
|
checkList.add(toAdd);
|
||||||
if(WorldUtil.addToInventory(this, checkList, EnumFacing.UP, false, true)){
|
if(WorldUtil.addToInventory(this.slots, checkList, false)){
|
||||||
WorldUtil.addToInventory(this, checkList, EnumFacing.UP, true, true);
|
WorldUtil.addToInventory(this.slots, checkList, true);
|
||||||
|
|
||||||
((WorldServer)this.world).spawnParticle(EnumParticleTypes.CLOUD, false, item.posX, item.posY+0.45F, item.posZ, 5, 0, 0, 0, 0.03D);
|
((WorldServer)this.world).spawnParticle(EnumParticleTypes.CLOUD, false, item.posX, item.posY+0.45F, item.posZ, 5, 0, 0, 0, 0.03D);
|
||||||
|
|
||||||
|
@ -85,12 +85,7 @@ public class TileEntityRangedCollector extends TileEntityInventoryBase implement
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -123,16 +123,16 @@ public class TileEntityXPSolidifier extends TileEntityInventoryBase implements I
|
||||||
super.updateEntity();
|
super.updateEntity();
|
||||||
if(!this.world.isRemote){
|
if(!this.world.isRemote){
|
||||||
if(this.amount > 0){
|
if(this.amount > 0){
|
||||||
if(!StackUtil.isValid(this.slots.get(0))){
|
if(!StackUtil.isValid(this.slots.getStackInSlot(0))){
|
||||||
int toSet = this.amount > 64 ? 64 : this.amount;
|
int toSet = this.amount > 64 ? 64 : this.amount;
|
||||||
this.slots.set(0, new ItemStack(InitItems.itemSolidifiedExperience, toSet));
|
this.slots.setStackInSlot(0, new ItemStack(InitItems.itemSolidifiedExperience, toSet));
|
||||||
this.amount -= toSet;
|
this.amount -= toSet;
|
||||||
this.markDirty();
|
this.markDirty();
|
||||||
}
|
}
|
||||||
else if(StackUtil.getStackSize(this.slots.get(0)) < 64){
|
else if(StackUtil.getStackSize(this.slots.getStackInSlot(0)) < 64){
|
||||||
int needed = 64-StackUtil.getStackSize(this.slots.get(0));
|
int needed = 64-StackUtil.getStackSize(this.slots.getStackInSlot(0));
|
||||||
int toAdd = this.amount > needed ? needed : this.amount;
|
int toAdd = this.amount > needed ? needed : this.amount;
|
||||||
this.slots.set(0, StackUtil.addStackSize(this.slots.get(0), toAdd));
|
this.slots.setStackInSlot(0, StackUtil.addStackSize(this.slots.getStackInSlot(0), toAdd));
|
||||||
this.amount -= toAdd;
|
this.amount -= toAdd;
|
||||||
this.markDirty();
|
this.markDirty();
|
||||||
}
|
}
|
||||||
|
@ -157,9 +157,9 @@ public class TileEntityXPSolidifier extends TileEntityInventoryBase implements I
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(StackUtil.isValid(this.slots.get(1)) && this.slots.get(1).getItem() instanceof ItemSolidifiedExperience){
|
if(StackUtil.isValid(this.slots.getStackInSlot(1)) && this.slots.getStackInSlot(1).getItem() instanceof ItemSolidifiedExperience){
|
||||||
this.amount += StackUtil.getStackSize(this.slots.get(1));
|
this.amount += StackUtil.getStackSize(this.slots.getStackInSlot(1));
|
||||||
this.slots.set(1, StackUtil.getNull());
|
this.slots.setStackInSlot(1, StackUtil.getNull());
|
||||||
this.markDirty();
|
this.markDirty();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -175,12 +175,7 @@ public class TileEntityXPSolidifier extends TileEntityInventoryBase implements I
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canInsertItem(int slot, ItemStack stack, EnumFacing side){
|
public boolean canExtractItem(int slot, ItemStack stack){
|
||||||
return this.isItemValidForSlot(slot, stack);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean canExtractItem(int slot, ItemStack stack, EnumFacing side){
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,98 @@
|
||||||
|
/*
|
||||||
|
* This file ("AwfulUtil.java") is part of the Actually Additions mod for Minecraft.
|
||||||
|
* It is created and owned by Ellpeck and distributed
|
||||||
|
* under the Actually Additions License to be found at
|
||||||
|
* http://ellpeck.de/actaddlicense
|
||||||
|
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
|
||||||
|
*
|
||||||
|
* © 2015-2016 Ellpeck
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.ellpeck.actuallyadditions.mod.util;
|
||||||
|
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.math.MathHelper;
|
||||||
|
import net.minecraft.world.storage.loot.LootContext;
|
||||||
|
import net.minecraft.world.storage.loot.LootTable;
|
||||||
|
import net.minecraftforge.items.IItemHandlerModifiable;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
//This is stuff copied from somewhere in vanilla and changed so that it works properly
|
||||||
|
//It's unpolished and vanilla-y, so don't look at it! O_O
|
||||||
|
public final class AwfulUtil{
|
||||||
|
|
||||||
|
public static void fillInventory(LootTable table, IItemHandlerModifiable inventory, Random rand, LootContext context){
|
||||||
|
List<ItemStack> list = table.generateLootForPools(rand, context);
|
||||||
|
List<Integer> list1 = getEmptySlotsRandomized(inventory, rand);
|
||||||
|
shuffleItems(list, list1.size(), rand);
|
||||||
|
|
||||||
|
for(ItemStack itemstack : list){
|
||||||
|
if(itemstack.isEmpty()){
|
||||||
|
inventory.setStackInSlot(list1.remove(list1.size()-1), ItemStack.EMPTY);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
inventory.setStackInSlot(list1.remove(list1.size()-1), itemstack);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void shuffleItems(List<ItemStack> stacks, int someInt, Random rand){
|
||||||
|
List<ItemStack> list = Lists.newArrayList();
|
||||||
|
Iterator<ItemStack> iterator = stacks.iterator();
|
||||||
|
|
||||||
|
while(iterator.hasNext()){
|
||||||
|
ItemStack itemstack = iterator.next();
|
||||||
|
|
||||||
|
if(itemstack.isEmpty()){
|
||||||
|
iterator.remove();
|
||||||
|
}
|
||||||
|
else if(itemstack.getCount() > 1){
|
||||||
|
list.add(itemstack);
|
||||||
|
iterator.remove();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
someInt = someInt-stacks.size();
|
||||||
|
|
||||||
|
while(someInt > 0 && ((List)list).size() > 0){
|
||||||
|
ItemStack itemstack2 = list.remove(MathHelper.getInt(rand, 0, list.size()-1));
|
||||||
|
int i = MathHelper.getInt(rand, 1, itemstack2.getCount()/2);
|
||||||
|
ItemStack itemstack1 = itemstack2.splitStack(i);
|
||||||
|
|
||||||
|
if(itemstack2.getCount() > 1 && rand.nextBoolean()){
|
||||||
|
list.add(itemstack2);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
stacks.add(itemstack2);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(itemstack1.getCount() > 1 && rand.nextBoolean()){
|
||||||
|
list.add(itemstack1);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
stacks.add(itemstack1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
stacks.addAll(list);
|
||||||
|
Collections.shuffle(stacks, rand);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static List<Integer> getEmptySlotsRandomized(IItemHandlerModifiable inventory, Random rand){
|
||||||
|
List<Integer> list = Lists.newArrayList();
|
||||||
|
|
||||||
|
for(int i = 0; i < inventory.getSlots(); ++i){
|
||||||
|
if(inventory.getStackInSlot(i).isEmpty()){
|
||||||
|
list.add(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Collections.shuffle(list, rand);
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,72 @@
|
||||||
|
/*
|
||||||
|
* This file ("CheckingItemStackHandler.java") is part of the Actually Additions mod for Minecraft.
|
||||||
|
* It is created and owned by Ellpeck and distributed
|
||||||
|
* under the Actually Additions License to be found at
|
||||||
|
* http://ellpeck.de/actaddlicense
|
||||||
|
* View the source code at https://github.com/Ellpeck/ActuallyAdditions
|
||||||
|
*
|
||||||
|
* © 2015-2016 Ellpeck
|
||||||
|
*/
|
||||||
|
|
||||||
|
package de.ellpeck.actuallyadditions.mod.util;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.NonNullList;
|
||||||
|
import net.minecraftforge.items.ItemStackHandler;
|
||||||
|
|
||||||
|
public class ItemStackHandlerCustom extends ItemStackHandler{
|
||||||
|
|
||||||
|
private boolean tempIgnoreConditions;
|
||||||
|
|
||||||
|
public ItemStackHandlerCustom(int slots){
|
||||||
|
super(slots);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void decrStackSize(int slot, int amount){
|
||||||
|
this.setStackInSlot(slot, StackUtil.addStackSize(this.getStackInSlot(slot), -amount));
|
||||||
|
}
|
||||||
|
|
||||||
|
public NonNullList<ItemStack> getItems(){
|
||||||
|
return this.stacks;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack insertItem(int slot, ItemStack stack, boolean simulate){
|
||||||
|
if(!this.tempIgnoreConditions && !this.canInsert(stack, slot)){
|
||||||
|
return stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.insertItem(slot, stack, simulate);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack insertItemInternal(int slot, ItemStack stack, boolean simulate){
|
||||||
|
this.tempIgnoreConditions = true;
|
||||||
|
ItemStack result = this.insertItem(slot, stack, simulate);
|
||||||
|
this.tempIgnoreConditions = false;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemStack extractItem(int slot, int amount, boolean simulate){
|
||||||
|
if(!this.tempIgnoreConditions && !this.canExtract(this.getStackInSlot(slot), slot)){
|
||||||
|
return StackUtil.getNull();
|
||||||
|
}
|
||||||
|
|
||||||
|
return super.extractItem(slot, amount, simulate);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ItemStack extractItemInternal(int slot, int amount, boolean simulate){
|
||||||
|
this.tempIgnoreConditions = true;
|
||||||
|
ItemStack result = this.extractItem(slot, amount, simulate);
|
||||||
|
this.tempIgnoreConditions = false;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean canInsert(ItemStack stack, int slot){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean canExtract(ItemStack stack, int slot){
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
|
@ -16,6 +16,7 @@ import de.ellpeck.actuallyadditions.mod.creative.CreativeTab;
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.enchantment.Enchantment;
|
import net.minecraft.enchantment.Enchantment;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.inventory.IInventory;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
@ -97,9 +98,6 @@ public final class ItemUtil{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if array contains stack or if both contain null
|
|
||||||
*/
|
|
||||||
public static boolean contains(ItemStack[] array, ItemStack stack, boolean checkWildcard){
|
public static boolean contains(ItemStack[] array, ItemStack stack, boolean checkWildcard){
|
||||||
return getPlaceAt(array, stack, checkWildcard) != -1;
|
return getPlaceAt(array, stack, checkWildcard) != -1;
|
||||||
}
|
}
|
||||||
|
@ -108,9 +106,6 @@ public final class ItemUtil{
|
||||||
return getPlaceAt(Arrays.asList(array), stack, checkWildcard);
|
return getPlaceAt(Arrays.asList(array), stack, checkWildcard);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the place of stack in array, -1 if not present
|
|
||||||
*/
|
|
||||||
public static int getPlaceAt(List<ItemStack> list, ItemStack stack, boolean checkWildcard){
|
public static int getPlaceAt(List<ItemStack> list, ItemStack stack, boolean checkWildcard){
|
||||||
if(list != null && list.size() > 0){
|
if(list != null && list.size() > 0){
|
||||||
for(int i = 0; i < list.size(); i++){
|
for(int i = 0; i < list.size(); i++){
|
||||||
|
|
|
@ -23,15 +23,12 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||||
import net.minecraft.entity.player.EntityPlayerMP;
|
import net.minecraft.entity.player.EntityPlayerMP;
|
||||||
import net.minecraft.init.Blocks;
|
import net.minecraft.init.Blocks;
|
||||||
import net.minecraft.init.Items;
|
import net.minecraft.init.Items;
|
||||||
import net.minecraft.inventory.IInventory;
|
|
||||||
import net.minecraft.inventory.ISidedInventory;
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.network.play.client.CPacketPlayerDigging;
|
import net.minecraft.network.play.client.CPacketPlayerDigging;
|
||||||
import net.minecraft.network.play.server.SPacketBlockChange;
|
import net.minecraft.network.play.server.SPacketBlockChange;
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
import net.minecraft.util.EnumHand;
|
import net.minecraft.util.EnumHand;
|
||||||
import net.minecraft.util.NonNullList;
|
|
||||||
import net.minecraft.util.math.BlockPos;
|
import net.minecraft.util.math.BlockPos;
|
||||||
import net.minecraft.util.math.MathHelper;
|
import net.minecraft.util.math.MathHelper;
|
||||||
import net.minecraft.util.math.RayTraceResult;
|
import net.minecraft.util.math.RayTraceResult;
|
||||||
|
@ -216,30 +213,15 @@ public final class WorldUtil{
|
||||||
return blocks;
|
return blocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean addToInventory(IInventory inventory, List<ItemStack> stacks, boolean actuallyDo, boolean shouldAlwaysWork){
|
public static boolean addToInventory(ItemStackHandlerCustom inventory, List<ItemStack> stacks, boolean actuallyDo){
|
||||||
return addToInventory(inventory, stacks, EnumFacing.UP, actuallyDo, shouldAlwaysWork);
|
return addToInventory(inventory, 0, inventory.getSlots(), stacks, actuallyDo);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean addToInventory(IInventory inventory, List<ItemStack> stacks, EnumFacing side, boolean actuallyDo, boolean shouldAlwaysWork){
|
public static boolean addToInventory(ItemStackHandlerCustom inventory, int start, int end, List<ItemStack> stacks, boolean actuallyDo){
|
||||||
return addToInventory(inventory, 0, inventory.getSizeInventory(), stacks, side, actuallyDo, shouldAlwaysWork);
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO This is disgusting and has to be updated to the capability system
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Add an ArrayList of ItemStacks to an Array of slots
|
|
||||||
*
|
|
||||||
* @param inventory The inventory to try to put the items into
|
|
||||||
* @param stacks The stacks to be put into the slots (Items don't actually get removed from there!)
|
|
||||||
* @param side The side to input from
|
|
||||||
* @param actuallyDo Do it or just test if it works?
|
|
||||||
* @return Does it work?
|
|
||||||
*/
|
|
||||||
public static boolean addToInventory(IInventory inventory, int start, int end, List<ItemStack> stacks, EnumFacing side, boolean actuallyDo, boolean shouldAlwaysWork){
|
|
||||||
//Copy the slots if just testing to later load them again
|
//Copy the slots if just testing to later load them again
|
||||||
ItemStack[] backupSlots = null;
|
ItemStack[] backupSlots = null;
|
||||||
if(!actuallyDo){
|
if(!actuallyDo){
|
||||||
backupSlots = new ItemStack[inventory.getSizeInventory()];
|
backupSlots = new ItemStack[inventory.getSlots()];
|
||||||
for(int i = 0; i < backupSlots.length; i++){
|
for(int i = 0; i < backupSlots.length; i++){
|
||||||
ItemStack stack = inventory.getStackInSlot(i);
|
ItemStack stack = inventory.getStackInSlot(i);
|
||||||
backupSlots[i] = StackUtil.validateCopy(stack);
|
backupSlots[i] = StackUtil.validateCopy(stack);
|
||||||
|
@ -247,21 +229,13 @@ public final class WorldUtil{
|
||||||
}
|
}
|
||||||
|
|
||||||
int working = 0;
|
int working = 0;
|
||||||
for(ItemStack stackToPutIn : stacks){
|
for(ItemStack stack : stacks){
|
||||||
for(int i = start; i < end; i++){
|
for(int i = start; i < end; i++){
|
||||||
if(shouldAlwaysWork || ((!(inventory instanceof ISidedInventory) || ((ISidedInventory)inventory).canInsertItem(i, stackToPutIn, side)) && inventory.isItemValidForSlot(i, stackToPutIn))){
|
stack = inventory.insertItemInternal(i, stack, false);
|
||||||
ItemStack stackInQuestion = inventory.getStackInSlot(i);
|
|
||||||
if(StackUtil.isValid(stackToPutIn) && (!StackUtil.isValid(stackInQuestion) || (ItemUtil.canBeStacked(stackInQuestion, stackToPutIn) && stackInQuestion.getMaxStackSize() >= StackUtil.getStackSize(stackInQuestion)+StackUtil.getStackSize(stackToPutIn)))){
|
|
||||||
if(!StackUtil.isValid(stackInQuestion)){
|
|
||||||
inventory.setInventorySlotContents(i, stackToPutIn.copy());
|
|
||||||
}
|
|
||||||
else{
|
|
||||||
inventory.setInventorySlotContents(i, StackUtil.addStackSize(stackInQuestion, StackUtil.getStackSize(stackToPutIn)));
|
|
||||||
}
|
|
||||||
working++;
|
|
||||||
|
|
||||||
break;
|
if(!StackUtil.isValid(stack)){
|
||||||
}
|
working++;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -269,16 +243,16 @@ public final class WorldUtil{
|
||||||
//Load the slots again
|
//Load the slots again
|
||||||
if(!actuallyDo){
|
if(!actuallyDo){
|
||||||
for(int i = 0; i < backupSlots.length; i++){
|
for(int i = 0; i < backupSlots.length; i++){
|
||||||
inventory.setInventorySlotContents(i, backupSlots[i]);
|
inventory.setStackInSlot(i, backupSlots[i]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return working >= stacks.size();
|
return working >= stacks.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int findFirstFilledSlot(NonNullList<ItemStack> slots){
|
public static int findFirstFilledSlot(ItemStackHandlerCustom slots){
|
||||||
for(int i = 0; i < slots.size(); i++){
|
for(int i = 0; i < slots.getSlots(); i++){
|
||||||
if(StackUtil.isValid(slots.get(i))){
|
if(StackUtil.isValid(slots.getStackInSlot(i))){
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -836,7 +836,7 @@ booklet.actuallyadditions.chapter.feeder.name=Feeder
|
||||||
booklet.actuallyadditions.chapter.feeder.text.1=The <item>Feeder<r> is a good alternative to a manual animal farm. Place it in the middle of an animal pen and supply it with some wheat, seeds or carrots, depending on the animal you want to feed, and just wait. It will <imp>automatically feed the animals<r> and if there is enough animals near it, it will <imp>shut off on its own<r> to prevent lag or animal overflow. <n><n><i>Greenpeace approves
|
booklet.actuallyadditions.chapter.feeder.text.1=The <item>Feeder<r> is a good alternative to a manual animal farm. Place it in the middle of an animal pen and supply it with some wheat, seeds or carrots, depending on the animal you want to feed, and just wait. It will <imp>automatically feed the animals<r> and if there is enough animals near it, it will <imp>shut off on its own<r> to prevent lag or animal overflow. <n><n><i>Greenpeace approves
|
||||||
|
|
||||||
booklet.actuallyadditions.chapter.compost.name=Compost and Fertilizer
|
booklet.actuallyadditions.chapter.compost.name=Compost and Fertilizer
|
||||||
booklet.actuallyadditions.chapter.compost.text.1=The <item>Compost<r> is used to make <item>Fertilizer<r> from <item>Bio-Mash<r>. <item>Fertilizer<r> acts just like Bone Meal, but can be crafted in a much simpler manner just by crafting <item>Bio-Mash<r> and then putting 10 of those inside of a <item>Compost<r> and waiting for a bit. When the mash is composted, just take it out by right-clicking again. <n><n>This, however, also works for some other items, which will be explained when needed.
|
booklet.actuallyadditions.chapter.compost.text.1=The <item>Compost<r> is used to make <item>Fertilizer<r> from <item>Bio-Mash<r>. <item>Fertilizer<r> acts just like Bone Meal, but can be crafted in a much simpler manner just by crafting <item>Bio-Mash<r> and then putting those inside of a <item>Compost<r> and waiting for a bit. When the mash is composted, just take it out by right-clicking again. <n><n>This, however, also works for some other items, which will be explained when needed.
|
||||||
booklet.actuallyadditions.chapter.compost.text.3=<item>Bio-Mash<r> can be crafted from <imp>any type of food or plantable item<r>.
|
booklet.actuallyadditions.chapter.compost.text.3=<item>Bio-Mash<r> can be crafted from <imp>any type of food or plantable item<r>.
|
||||||
|
|
||||||
booklet.actuallyadditions.chapter.crate.name=Storage Crates
|
booklet.actuallyadditions.chapter.crate.name=Storage Crates
|
||||||
|
|
Loading…
Reference in a new issue