Attempt to make pickBlock supports Gate/Plugs

Whether a Gate is an Autoarchic Gate or not is not sync to the client unfortunately.
This commit is contained in:
CovertJaguar 2013-10-15 16:38:30 -07:00
parent 6fdbd8c525
commit 4a9eb69b91
4 changed files with 31 additions and 6 deletions

View file

@ -576,6 +576,23 @@ public class BlockGenericPipe extends BlockContainer {
return pipe.itemID;
}
@SideOnly(Side.CLIENT)
@Override
public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) {
RaytraceResult rayTraceResult = doRayTrace(world, x, y, z, Minecraft.getMinecraft().thePlayer);
if (rayTraceResult != null && rayTraceResult.boundingBox != null) {
switch (rayTraceResult.hitPart) {
case Gate:
Pipe pipe = getPipe(world, x, y, z);
return pipe.gate.getGateItem();
case Plug:
return new ItemStack(BuildCraftTransport.plugItem);
}
}
return super.getPickBlock(target, world, x, y, z);
}
/* Wrappers ************************************************************ */
@Override
public void onNeighborBlockChange(World world, int x, int y, int z, int id) {

View file

@ -153,7 +153,11 @@ public abstract class Gate {
// / UPDATING
public abstract void update();
public abstract void dropGate();
public abstract ItemStack getGateItem();
public void dropGate() {
pipe.dropItem(getGateItem());
}
public void resetGate() {
if (broadcastRedstone) {

View file

@ -140,7 +140,7 @@ public class GateVanilla extends Gate {
* @param k
*/
@Override
public void dropGate() {
public ItemStack getGateItem() {
int gateDamage;
switch (kind) {
@ -175,7 +175,7 @@ public class GateVanilla extends Gate {
gateItem = BuildCraftTransport.pipeGate;
}
pipe.dropItem(new ItemStack(gateItem, 1, gateDamage));
return new ItemStack(gateItem, 1, gateDamage);
}

View file

@ -216,13 +216,13 @@ public class ItemFacade extends ItemBuildCraft {
Block bl = Block.blocksList[blockId];
// No Meta
if (bl != null && bl.getRenderType() == 31 && (blockMeta & 0xC) == 0)
return getStack(blockId, (blockMeta & 0x3) | 4);
return getStack(bl, (blockMeta & 0x3) | 4);
// Meta | 4 = true
if (bl != null && bl.getRenderType() == 31 && (blockMeta & 0x8) == 0)
return getStack(blockId, (blockMeta & 0x3) | 8);
return getStack(bl, (blockMeta & 0x3) | 8);
// Meta | 8 = true
if (bl != null && bl.getRenderType() == 31 && (blockMeta & 0x4) == 0)
return getStack(blockId, (blockMeta & 0x3));
return getStack(bl, (blockMeta & 0x3));
}
return null;
}
@ -250,6 +250,10 @@ public class ItemFacade extends ItemBuildCraft {
return 0;
}
public static ItemStack getStack(Block block, int metadata) {
return getStack(block.blockID, metadata);
}
public static ItemStack getStack(int blockID, int metadata) {
ItemStack stack = new ItemStack(BuildCraftTransport.facadeItem, 1, 0);
NBTTagCompound nbt = new NBTTagCompound("tag");