VillagerItemShop.java 文件源码

java
阅读 26 收藏 0 点赞 0 评论 0

项目:BedwarsRel 作者:
public void openTrading() {
  // As task because of inventory issues
  new BukkitRunnable() {

    @SuppressWarnings("deprecation")
    @Override
    public void run() {
      try {
        EntityVillager entityVillager = VillagerItemShop.this.createVillager();
        CraftVillager craftVillager = (CraftVillager) entityVillager.getBukkitEntity();
        EntityHuman entityHuman = VillagerItemShop.this.getEntityHuman();

        // set location
        List<MerchantRecipe> recipeList = new ArrayList<MerchantRecipe>();

        for (VillagerTrade trade : VillagerItemShop.this.category
            .getFilteredOffers()) {
          ItemStack reward = trade.getRewardItem();
          Method colorable = Utils.getColorableMethod(reward.getType());

          if (Utils.isColorable(reward)) {
            reward
                .setDurability(game.getPlayerTeam(player).getColor().getDyeColor().getWoolData());
          } else if (colorable != null) {
            ItemMeta meta = reward.getItemMeta();
            colorable.setAccessible(true);
            colorable.invoke(meta, new Object[]{VillagerItemShop.this.game
                .getPlayerTeam(VillagerItemShop.this.player).getColor().getColor()});
            reward.setItemMeta(meta);
          }

          if (!(trade.getHandle()
              .getInstance() instanceof net.minecraft.server.v1_9_R1.MerchantRecipe)) {
            continue;
          }

          MerchantRecipe recipe = new MerchantRecipe(trade.getRewardItem(), 1024);
          recipe.addIngredient(trade.getItem1());

          if (trade.getItem2() != null) {
            recipe.addIngredient(trade.getItem2());
          }

          recipeList.add(recipe);
        }

        craftVillager.setRecipes(recipeList);
        craftVillager.setRiches(0);
        entityVillager.setTradingPlayer(entityHuman);

        ((CraftPlayer) player).getHandle().openTrade(entityVillager);
        ((CraftPlayer) player).getHandle().b(StatisticList.F);
      } catch (Exception ex) {
        BedwarsRel.getInstance().getBugsnag().notify(ex);
        ex.printStackTrace();
      }
    }
  }.runTask(BedwarsRel.getInstance());
}
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号