Program: 31505
Project: 31505
Buggy source:
@Inject(method="String_Node_Str",at=@At(value="String_Node_Str",target="String_Node_Str"),cancellable=true) public void onActivateBlockOrUseItem(EntityPlayer player,World worldIn,ItemStack stack,BlockPos pos,EnumFacing side,float hitx,float hity,float hitz,CallbackInfoReturnable<Boolean> ci){
  boolean cancelled=Sponge.getGame().getEventManager().post(SpongeEventFactory.createPlayerInteractBlock(Sponge.getGame(),new Cause(null,player,null),(Player)player,new Location(((Player)player).getWorld(),VecHelper.toVector(pos)),EntityInteractionTypes.USE,new Vector3d(hitx,hity,hitz)));
  if (cancelled) {
    final IBlockState state=worldIn.getBlockState(pos);
    boolean isBottom=false;
    if (state.getProperties().containsKey(BlockDoor.HALF)) {
      if (state.getValue(BlockDoor.HALF) != BlockDoor.EnumDoorHalf.UPPER) {
        ((EntityPlayerMP)player).playerNetServerHandler.sendPacket(new S23PacketBlockChange(theWorld,pos));
        isBottom=true;
      }
    }
 else {
      if (stack.getItem() instanceof ItemDoor || stack.getItem() instanceof ItemDoublePlant) {
        ((EntityPlayerMP)player).playerNetServerHandler.sendPacket(new S23PacketBlockChange(theWorld,pos.add(0,2,0)));
      }
    }
    if (isBottom) {
      ((EntityPlayerMP)player).playerNetServerHandler.sendPacket(new S23PacketBlockChange(theWorld,pos.add(0,1,0)));
    }
 else {
      ((EntityPlayerMP)player).playerNetServerHandler.sendPacket(new S23PacketBlockChange(theWorld,pos.add(0,-1,0)));
    }
    ci.setReturnValue(false);
  }
}

Fixed version (ground truth):
@Inject(method="String_Node_Str",at=@At(value="String_Node_Str",target="String_Node_Str"),cancellable=true) public void onActivateBlockOrUseItem(EntityPlayer player,World worldIn,ItemStack stack,BlockPos pos,EnumFacing side,float hitx,float hity,float hitz,CallbackInfoReturnable<Boolean> ci){
  boolean cancelled=Sponge.getGame().getEventManager().post(SpongeEventFactory.createPlayerInteractBlock(Sponge.getGame(),new Cause(null,player,null),(Player)player,new Location(((Player)player).getWorld(),VecHelper.toVector(pos)),SpongeGameRegistry.directionMap.inverse().get(side),EntityInteractionTypes.USE,new Vector3d(hitx,hity,hitz)));
  if (cancelled) {
    ci.setReturnValue(false);
    final IBlockState state=worldIn.getBlockState(pos);
    if (state.getBlock() == Blocks.command_block) {
      ((EntityPlayerMP)player).playerNetServerHandler.sendPacket(new S2EPacketCloseWindow(0));
      return;
    }
    if (state.getBlock() instanceof BlockButton) {
      ((EntityPlayerMP)player).playerNetServerHandler.sendPacket(new S23PacketBlockChange(theWorld,pos));
      return;
    }
    if (stack.getItem() instanceof ItemDoor || stack.getItem() instanceof ItemDoublePlant) {
      ((EntityPlayerMP)player).playerNetServerHandler.sendPacket(new S23PacketBlockChange(theWorld,pos.up(2)));
      return;
    }
    if (state.getProperties().containsKey(BlockDoor.HALF)) {
      boolean isLower=false;
      if (state.getValue(BlockDoor.HALF) == BlockDoor.EnumDoorHalf.LOWER) {
        isLower=true;
        ((EntityPlayerMP)player).playerNetServerHandler.sendPacket(new S23PacketBlockChange(theWorld,pos));
      }
      if (isLower) {
        ((EntityPlayerMP)player).playerNetServerHandler.sendPacket(new S23PacketBlockChange(theWorld,pos.up()));
      }
 else {
        ((EntityPlayerMP)player).playerNetServerHandler.sendPacket(new S23PacketBlockChange(theWorld,pos.down()));
      }
    }
  }
}