Fixed #427 - Engineering table consume twice and glitched drops

This commit is contained in:
Calclavia 2014-03-12 21:35:05 +08:00
parent 10bce50044
commit 0a228514b7
4 changed files with 44 additions and 55 deletions

View file

@ -145,7 +145,7 @@ public class Archaic
GameRegistry.addRecipe(new ShapedOreRecipe(blockImprinter, "SSS", "W W", "PPP", 'S', Block.stone, 'P', Block.pistonBase, 'W', "logWood"));
GameRegistry.addRecipe(new ShapedOreRecipe(blockTurntable, "SSS", "PGP", "WWW", 'S', Block.stone, 'G', UniversalRecipe.MOTOR.get(), 'P', Block.pistonBase, 'W', "logWood"));
GameRegistry.addRecipe(new ShapedOreRecipe(blockTurntable, "SSS", "PGP", "WWW", 'S', Block.stone, 'G', Item.redstone, 'P', Block.pistonBase, 'W', "logWood"));
GameRegistry.addRecipe(new ShapedOreRecipe(blockCast, "I I", "IBI", "III", 'S', Item.ingotIron, 'B', Block.fenceIron));
GameRegistry.addRecipe(new ShapedOreRecipe(blockGutter, "S S", "I I", "III", 'S', Item.stick, 'I', Block.cobblestone));
GameRegistry.addRecipe(new ShapedOreRecipe(blockGrate, "WBW", "B B", "WBW", 'B', Block.fenceIron, 'W', "plankWood"));

View file

@ -122,11 +122,7 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
if (dropStack != null)
{
int var11 = dropStack.stackSize;
dropStack.stackSize -= var11;
InventoryUtility.dropItemStack(world(), center(), dropStack);
if (dropStack.stackSize <= 0)
InventoryUtility.dropItemStack(world(), new Vector3(player), dropStack);
inventory.setInventorySlotContents(i, null);
}
}
@ -238,15 +234,14 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
@Override
public ArrayList<ItemStack> getDrops(int metadata, int fortune)
{
ArrayList<ItemStack> list = new ArrayList<ItemStack>();
ItemStack stack = ItemBlockSaved.getItemStackWithNBT(this.getBlockType(), world(), x(), y(), z());
list.add(stack);
return list;
return new ArrayList<ItemStack>();
}
@Override
public void dropEntireInventory(int par5, int par6)
public void onRemove(int par5, int par6)
{
ItemStack stack = ItemBlockSaved.getItemStackWithNBT(this.getBlockType(), world(), x(), y(), z());
InventoryUtility.dropItemStack(world(), center(), stack);
}
/** Creates a "fake inventory" and hook the player up to the crafter to use the player's items. */
@ -392,10 +387,6 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
}
else if (slot < CRAFTING_OUTPUT_END)
{
/** An external inventory is attempting to craft the item from the engineering table. */
if (itemStack == null)
onPickUpFromSlot(null, slot, this.outputInventory[slot - CRAFTING_MATRIX_END]);
outputInventory[slot - CRAFTING_MATRIX_END] = itemStack;
}
else if (slot < PLAYER_OUTPUT_END && this.invPlayer != null)
@ -552,11 +543,11 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
{
if (itemStack != null)
{
Pair<ItemStack, ItemStack[]> idealRecipeItem = this.getCraftingManager().getIdealRecipe(itemStack);
Pair<ItemStack, ItemStack[]> idealRecipeItem = getCraftingManager().getIdealRecipe(itemStack);
if (idealRecipeItem != null)
{
this.getCraftingManager().consumeItems(idealRecipeItem.right().clone());
getCraftingManager().consumeItems(idealRecipeItem.right().clone());
}
else
{
@ -648,12 +639,6 @@ public class TileEngineeringTable extends TileInventory implements IPacketReceiv
@Override
public int[] getAccessibleSlotsFromSide(int side)
{
if (Settings.ALLOW_ENGINEERING_AUTOCRAFT)
{
if (side != 0)
return new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
}
return new int[0];
}

View file

@ -21,6 +21,9 @@ public class RenderManipulator extends RenderImprintable
public void renderTileEntityAt(TileEntity tileEntity, double x, double y, double z, float var8)
{
TileManipulator tile = (TileManipulator) tileEntity;
if (tile.worldObj != null)
{
int face = tile.getDirection().ordinal();
GL11.glPushMatrix();
@ -57,5 +60,6 @@ public class RenderManipulator extends RenderImprintable
GL11.glPopMatrix();
}
}
}

@ -1 +1 @@
Subproject commit 2e44e1e10066c5e30f5e707fffbf70f159c50cca
Subproject commit 1614b4d84a023bfac276ced7e0654035e8ecd0b3