Unified inventory interaction actions
This commit is contained in:
parent
3a04133f96
commit
f18837cb9f
4 changed files with 42 additions and 73 deletions
|
@ -2,14 +2,14 @@ package resonantinduction.archaic;
|
||||||
|
|
||||||
import net.minecraft.block.Block;
|
import net.minecraft.block.Block;
|
||||||
import net.minecraft.item.Item;
|
import net.minecraft.item.Item;
|
||||||
import resonantinduction.archaic.blocks.BlockFirebox;
|
|
||||||
import resonantinduction.archaic.blocks.BlockTurntable;
|
import resonantinduction.archaic.blocks.BlockTurntable;
|
||||||
import resonantinduction.archaic.blocks.TileFirebox;
|
|
||||||
import resonantinduction.archaic.crate.BlockCrate;
|
import resonantinduction.archaic.crate.BlockCrate;
|
||||||
import resonantinduction.archaic.crate.ItemBlockCrate;
|
import resonantinduction.archaic.crate.ItemBlockCrate;
|
||||||
import resonantinduction.archaic.crate.TileCrate;
|
import resonantinduction.archaic.crate.TileCrate;
|
||||||
import resonantinduction.archaic.engineering.BlockEngineeringTable;
|
import resonantinduction.archaic.engineering.BlockEngineeringTable;
|
||||||
import resonantinduction.archaic.engineering.TileEngineeringTable;
|
import resonantinduction.archaic.engineering.TileEngineeringTable;
|
||||||
|
import resonantinduction.archaic.firebox.BlockFirebox;
|
||||||
|
import resonantinduction.archaic.firebox.TileFirebox;
|
||||||
import resonantinduction.archaic.imprint.BlockImprinter;
|
import resonantinduction.archaic.imprint.BlockImprinter;
|
||||||
import resonantinduction.archaic.imprint.ItemBlockImprint;
|
import resonantinduction.archaic.imprint.ItemBlockImprint;
|
||||||
import resonantinduction.archaic.imprint.TileImprinter;
|
import resonantinduction.archaic.imprint.TileImprinter;
|
||||||
|
|
|
@ -132,55 +132,7 @@ public class BlockEngineeringTable extends BlockRI
|
||||||
if (check.distance(hitVector) < regionLength)
|
if (check.distance(hitVector) < regionLength)
|
||||||
{
|
{
|
||||||
int slotID = j * 3 + k;
|
int slotID = j * 3 + k;
|
||||||
boolean didInsert = false;
|
interactCurrentItem(tile, slotID, player);
|
||||||
ItemStack checkStack = tile.craftingMatrix[slotID];
|
|
||||||
|
|
||||||
if (current != null)
|
|
||||||
{
|
|
||||||
if (checkStack == null || checkStack.isItemEqual(current))
|
|
||||||
{
|
|
||||||
if (ControlKeyModifer.isControlDown(player))
|
|
||||||
{
|
|
||||||
if (checkStack == null)
|
|
||||||
{
|
|
||||||
tile.craftingMatrix[slotID] = current;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tile.craftingMatrix[slotID].stackSize += current.stackSize;
|
|
||||||
current.stackSize = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
current = null;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if (checkStack == null)
|
|
||||||
{
|
|
||||||
tile.craftingMatrix[slotID] = current.splitStack(1);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
tile.craftingMatrix[slotID].stackSize++;
|
|
||||||
current.stackSize--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (current == null || current.stackSize <= 0)
|
|
||||||
{
|
|
||||||
player.inventory.setInventorySlotContents(player.inventory.currentItem, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
didInsert = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!didInsert && checkStack != null)
|
|
||||||
{
|
|
||||||
InventoryUtility.dropItemStack(world, new Vector3(player), checkStack, 0);
|
|
||||||
tile.craftingMatrix[slotID] = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
break matrix;
|
break matrix;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -252,6 +204,12 @@ public class BlockEngineeringTable extends BlockRI
|
||||||
this.iconFront = par1IconRegister.registerIcon(this.getTextureName() + "_front");
|
this.iconFront = par1IconRegister.registerIcon(this.getTextureName() + "_front");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isControlDown(EntityPlayer player)
|
||||||
|
{
|
||||||
|
return ControlKeyModifer.isControlDown(player);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileEntity createNewTileEntity(World world)
|
public TileEntity createNewTileEntity(World world)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,7 +1,8 @@
|
||||||
package resonantinduction.archaic.blocks;
|
package resonantinduction.archaic.firebox;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
|
import codechicken.multipart.ControlKeyModifer;
|
||||||
import net.minecraft.block.material.Material;
|
import net.minecraft.block.material.Material;
|
||||||
import net.minecraft.client.renderer.texture.IconRegister;
|
import net.minecraft.client.renderer.texture.IconRegister;
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
@ -37,29 +38,26 @@ public class BlockFirebox extends BlockRI
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float hitX, float hitY, float hitZ)
|
public void onBlockClicked(World world, int x, int y, int z, EntityPlayer player)
|
||||||
{
|
{
|
||||||
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||||
|
|
||||||
if (tileEntity instanceof TileFirebox)
|
if (tileEntity instanceof TileFirebox)
|
||||||
{
|
{
|
||||||
TileFirebox tile = (TileFirebox) tileEntity;
|
TileFirebox tile = (TileFirebox) tileEntity;
|
||||||
|
extractItem(tile, 0, player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (tile.getStackInSlot(0) == null)
|
@Override
|
||||||
{
|
public boolean onMachineActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ)
|
||||||
if (tile.canBurn(entityPlayer.inventory.getCurrentItem()))
|
{
|
||||||
{
|
TileEntity tileEntity = world.getBlockTileEntity(x, y, z);
|
||||||
tile.setInventorySlotContents(0, entityPlayer.inventory.getCurrentItem());
|
|
||||||
entityPlayer.inventory.setInventorySlotContents(entityPlayer.inventory.currentItem, null);
|
if (tileEntity instanceof TileFirebox)
|
||||||
return true;
|
{
|
||||||
}
|
TileFirebox tile = (TileFirebox) tileEntity;
|
||||||
}
|
return interactCurrentItem(tile, 0, player);
|
||||||
else
|
|
||||||
{
|
|
||||||
InventoryUtility.dropItemStack(world, new Vector3(entityPlayer), tile.getStackInSlot(0));
|
|
||||||
tile.setInventorySlotContents(0, null);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -128,6 +126,12 @@ public class BlockFirebox extends BlockRI
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isControlDown(EntityPlayer player)
|
||||||
|
{
|
||||||
|
return ControlKeyModifer.isControlDown(player);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TileEntity createNewTileEntity(World world)
|
public TileEntity createNewTileEntity(World world)
|
||||||
{
|
{
|
|
@ -1,4 +1,4 @@
|
||||||
package resonantinduction.archaic.blocks;
|
package resonantinduction.archaic.firebox;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
@ -51,13 +51,14 @@ public class TileFirebox extends TileExternalInventory implements IPacketSender,
|
||||||
|
|
||||||
if (burnTime-- == 0)
|
if (burnTime-- == 0)
|
||||||
{
|
{
|
||||||
|
if (blockID == Block.fire.blockID)
|
||||||
|
{
|
||||||
|
worldObj.setBlock(xCoord, yCoord + 1, zCoord, 0);
|
||||||
|
}
|
||||||
|
|
||||||
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
|
worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (blockID == Block.fire.blockID)
|
|
||||||
{
|
|
||||||
worldObj.setBlock(xCoord, yCoord + 1, zCoord, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (canBurn(this.getStackInSlot(0)))
|
if (canBurn(this.getStackInSlot(0)))
|
||||||
{
|
{
|
||||||
|
@ -81,6 +82,12 @@ public class TileFirebox extends TileExternalInventory implements IPacketSender,
|
||||||
return burnTime > 0;
|
return burnTime > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isItemValidForSlot(int i, ItemStack itemStack)
|
||||||
|
{
|
||||||
|
return i == 0 && canBurn(itemStack);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Packet getDescriptionPacket()
|
public Packet getDescriptionPacket()
|
||||||
{
|
{
|
Loading…
Reference in a new issue