コード例 #1
0
  /** Called when the block is clicked by a player. Args: x, y, z, entityPlayer */
  @Override
  public boolean blockActivated(World world, int x, int y, int z, EntityPlayer entityplayer) {
    boolean hasHammer = false;
    for (int i = 0; i < 9; i++) {
      if (entityplayer.inventory.mainInventory[i] != null
          && entityplayer.inventory.mainInventory[i].getItem() instanceof ItemHammer)
        hasHammer = true;
    }
    if (entityplayer.getCurrentEquippedItem() != null
        && entityplayer.getCurrentEquippedItem().getItem() instanceof ItemChisel
        && hasHammer) {
      MovingObjectPosition objectMouseOver = Helper.getMouseOverObject(entityplayer, world);
      if (objectMouseOver == null) {
        return false;
      }
      int side = objectMouseOver.sideHit;

      int id = world.getBlockId(x, y, z);
      byte meta = (byte) world.getBlockMetadata(x, y, z);

      byte newMeta = 0;
      if (side == 0) {
        newMeta = (byte) (newMeta | 4);
      }

      int rot =
          MathHelper.floor_double((double) (entityplayer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
      byte flip = (byte) (newMeta & 4);
      byte m = 0;

      if (rot == 0) {
        m = (byte) (2 | flip);
      } else if (rot == 1) {
        m = (byte) (1 | flip);
      } else if (rot == 2) {
        m = (byte) (3 | flip);
      } else if (rot == 3) {
        m = (byte) (0 | flip);
      }

      int mode = 0;
      if (!TFC_Core.isClient()) {
        PlayerInfo pi = PlayerManagerTFC.getInstance().getPlayerInfoFromPlayer(entityplayer);

        if (pi != null) mode = pi.ChiselMode;
      } else mode = ItemChisel.mode;

      if (mode == 1) {
        ItemChisel.CreateStairs(world, x, y, z, id, meta, m);
        return true;
      } else if (mode == 2) {
        ItemChisel.CreateSlab(world, x, y, z, id, meta, side);
        return true;
      }
    }
    return false;
  }