Ejemplo n.º 1
0
  @Override
  public void a(Packet108ButtonClick packet) {
    if (this.player.activeContainer instanceof ContainerEnchantTable)
      if (this.player.activeContainer.windowId == packet.a
          && this.player.activeContainer.c(this.player)) {
        // Store our pre-event values
        CraftPlayer player = (CraftPlayer) this.player.getBukkitEntity();
        Inventory inventory = getActiveInventory();
        ContainerEnchantTable table = (ContainerEnchantTable) this.player.activeContainer;
        ItemStack initial = table.a.getItem(0).cloneItemStack();
        int level = this.player.expLevel;

        if (table.a(this.player, packet.b)) {
          ItemStack after = ((ContainerEnchantTable) this.player.activeContainer).a.getItem(0);
          int afterLevel = this.player.expLevel;

          SpoutCraftItemStack before = SpoutCraftItemStack.fromItemStack(initial);
          SpoutCraftItemStack result = SpoutCraftItemStack.fromItemStack(after);
          InventoryEnchantEvent event =
              new InventoryEnchantEvent(player, inventory, before, result, level, afterLevel);
          Bukkit.getServer().getPluginManager().callEvent(event);

          if (event.isCancelled()) {
            player.setLevel(level);
            table.a.setItem(0, initial);
          } else {
            player.setLevel(event.getLevelAfter());
            table.a.setItem(0, SpoutCraftItemStack.createNMSItemStack(event.getResult()));
          }
        }
        this.player.activeContainer.a();
      } else super.a(packet);
  }