类org.bukkit.inventory.MerchantRecipe源码实例Demo

下面列出了怎么用org.bukkit.inventory.MerchantRecipe的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: Shopkeepers   文件: NMSHandler.java
@Override
public boolean openTradeWindow(String title, List<ItemStack[]> recipes, Player player) {
	// create empty merchant:
	Merchant merchant = Bukkit.createMerchant(title);

	// create list of merchant recipes:
	List<MerchantRecipe> merchantRecipes = new ArrayList<MerchantRecipe>();
	for (ItemStack[] recipe : recipes) {
		// skip invalid recipes:
		if (recipe == null || recipe.length != 3 || Utils.isEmpty(recipe[0]) || Utils.isEmpty(recipe[2])) {
			continue;
		}

		// create and add merchant recipe:
		merchantRecipes.add(this.createMerchantRecipe(recipe[0], recipe[1], recipe[2]));
	}

	// set merchant's recipes:
	merchant.setRecipes(merchantRecipes);

	// increase 'talked-to-villager' statistic:
	player.incrementStatistic(Statistic.TALKED_TO_VILLAGER);

	// open merchant:
	return player.openMerchant(merchant, true) != null;
}
 
源代码2 项目: Shopkeepers   文件: NMSHandler.java
@Override
public ItemStack[] getUsedTradingRecipe(MerchantInventory merchantInventory) {
	MerchantRecipe merchantRecipe = merchantInventory.getSelectedRecipe();
	List<ItemStack> ingredients = merchantRecipe.getIngredients();
	ItemStack[] recipe = new ItemStack[3];
	recipe[0] = ingredients.get(0);
	recipe[1] = null;
	if (ingredients.size() > 1) {
		ItemStack buyItem2 = ingredients.get(1);
		if (!Utils.isEmpty(buyItem2)) {
			recipe[1] = buyItem2;
		}
	}
	recipe[2] = merchantRecipe.getResult();
	return recipe;
}
 
源代码3 项目: Shopkeepers   文件: NMSHandler.java
@Override
public boolean openTradeWindow(String title, List<ItemStack[]> recipes, Player player) {
	// create empty merchant:
	Merchant merchant = Bukkit.createMerchant(title);

	// create list of merchant recipes:
	List<MerchantRecipe> merchantRecipes = new ArrayList<MerchantRecipe>();
	for (ItemStack[] recipe : recipes) {
		// skip invalid recipes:
		if (recipe == null || recipe.length != 3 || Utils.isEmpty(recipe[0]) || Utils.isEmpty(recipe[2])) {
			continue;
		}

		// create and add merchant recipe:
		merchantRecipes.add(this.createMerchantRecipe(recipe[0], recipe[1], recipe[2]));
	}

	// set merchant's recipes:
	merchant.setRecipes(merchantRecipes);

	// increase 'talked-to-villager' statistic:
	player.incrementStatistic(Statistic.TALKED_TO_VILLAGER);

	// open merchant:
	return player.openMerchant(merchant, true) != null;
}
 
源代码4 项目: Shopkeepers   文件: NMSHandler.java
@Override
public ItemStack[] getUsedTradingRecipe(MerchantInventory merchantInventory) {
	MerchantRecipe merchantRecipe = merchantInventory.getSelectedRecipe();
	List<ItemStack> ingredients = merchantRecipe.getIngredients();
	ItemStack[] recipe = new ItemStack[3];
	recipe[0] = ingredients.get(0);
	recipe[1] = null;
	if (ingredients.size() > 1) {
		ItemStack buyItem2 = ingredients.get(1);
		if (!Utils.isEmpty(buyItem2)) {
			recipe[1] = buyItem2;
		}
	}
	recipe[2] = merchantRecipe.getResult();
	return recipe;
}
 
源代码5 项目: Kettle   文件: CraftMerchant.java
@Override
public List<MerchantRecipe> getRecipes() {
    return Collections.unmodifiableList(Lists.transform(merchant.getRecipes(null), new com.google.common.base.Function<net.minecraft.village.MerchantRecipe, MerchantRecipe>() {
        @Override
        public MerchantRecipe apply(net.minecraft.village.MerchantRecipe recipe) {
            return recipe.asBukkit();
        }
    }));
}
 
源代码6 项目: Kettle   文件: CraftMerchant.java
@Override
public void setRecipes(List<MerchantRecipe> recipes) {
    MerchantRecipeList recipesList = merchant.getRecipes(null);
    recipesList.clear();
    for (MerchantRecipe recipe : recipes) {
        recipesList.add(CraftMerchantRecipe.fromBukkit(recipe).toMinecraft());
    }
}
 
源代码7 项目: Kettle   文件: CraftMerchantRecipe.java
public CraftMerchantRecipe(ItemStack result, int uses, int maxUses, boolean experienceReward) {
    super(result, uses, maxUses, experienceReward);
    this.handle = new net.minecraft.village.MerchantRecipe(
            net.minecraft.item.ItemStack.EMPTY,
            net.minecraft.item.ItemStack.EMPTY,
            CraftItemStack.asNMSCopy(result),
            uses,
            maxUses,
            this
    );
}
 
源代码8 项目: Kettle   文件: CraftMerchantRecipe.java
public net.minecraft.village.MerchantRecipe toMinecraft() {
    List<ItemStack> ingredients = getIngredients();
    Preconditions.checkState(!ingredients.isEmpty(), "No offered ingredients");
    handle.itemToBuy = CraftItemStack.asNMSCopy(ingredients.get(0));
    if (ingredients.size() > 1) {
        handle.secondItemToBuy = CraftItemStack.asNMSCopy(ingredients.get(1));
    }
    return handle;
}
 
源代码9 项目: Kettle   文件: CraftMerchantRecipe.java
public static CraftMerchantRecipe fromBukkit(MerchantRecipe recipe) {
    if (recipe instanceof CraftMerchantRecipe) {
        return (CraftMerchantRecipe) recipe;
    } else {
        CraftMerchantRecipe craft = new CraftMerchantRecipe(recipe.getResult(), recipe.getUses(), recipe.getMaxUses(), recipe.hasExperienceReward());
        craft.setIngredients(recipe.getIngredients());

        return craft;
    }
}
 
源代码10 项目: Shopkeepers   文件: NMSHandler.java
private MerchantRecipe createMerchantRecipe(ItemStack buyItem1, ItemStack buyItem2, ItemStack sellingItem) {
	assert !Utils.isEmpty(sellingItem) && !Utils.isEmpty(buyItem1);
	MerchantRecipe recipe = new MerchantRecipe(sellingItem, 10000); // no max-uses limit
	recipe.setExperienceReward(false); // no experience rewards
	recipe.addIngredient(buyItem1);
	if (!Utils.isEmpty(buyItem2)) {
		recipe.addIngredient(buyItem2);
	}
	return recipe;
}
 
源代码11 项目: Shopkeepers   文件: NMSHandler.java
private MerchantRecipe createMerchantRecipe(ItemStack buyItem1, ItemStack buyItem2, ItemStack sellingItem) {
	assert !Utils.isEmpty(sellingItem) && !Utils.isEmpty(buyItem1);
	MerchantRecipe recipe = new MerchantRecipe(sellingItem, 10000); // no max-uses limit
	recipe.setExperienceReward(false); // no experience rewards
	recipe.addIngredient(buyItem1);
	if (!Utils.isEmpty(buyItem2)) {
		recipe.addIngredient(buyItem2);
	}
	return recipe;
}
 
源代码12 项目: Kettle   文件: VillagerAcquireTradeEvent.java
public VillagerAcquireTradeEvent(Villager what, MerchantRecipe recipe) {
    super(what);
    this.recipe = recipe;
}
 
源代码13 项目: Kettle   文件: VillagerReplenishTradeEvent.java
public VillagerReplenishTradeEvent(Villager what, MerchantRecipe recipe, int bonus) {
    super(what);
    this.recipe = recipe;
    this.bonus = bonus;
}
 
源代码14 项目: Kettle   文件: CraftVillager.java
@Override
public List<MerchantRecipe> getRecipes() {
    return getMerchant().getRecipes();
}
 
源代码15 项目: Kettle   文件: CraftVillager.java
@Override
public void setRecipes(List<MerchantRecipe> recipes) {
    this.getMerchant().setRecipes(recipes);
}
 
源代码16 项目: Kettle   文件: CraftVillager.java
@Override
public MerchantRecipe getRecipe(int i) {
    return getMerchant().getRecipe(i);
}
 
源代码17 项目: Kettle   文件: CraftVillager.java
@Override
public void setRecipe(int i, MerchantRecipe merchantRecipe) {
    getMerchant().setRecipe(i, merchantRecipe);
}
 
源代码18 项目: Kettle   文件: CraftInventoryMerchant.java
@Override
public MerchantRecipe getSelectedRecipe() {
    return getInventory().getCurrentRecipe().asBukkit();
}
 
源代码19 项目: Kettle   文件: CraftMerchant.java
@Override
public MerchantRecipe getRecipe(int i) {
    return merchant.getRecipes(null).get(i).asBukkit();
}
 
源代码20 项目: Kettle   文件: CraftMerchant.java
@Override
public void setRecipe(int i, MerchantRecipe merchantRecipe) {
    merchant.getRecipes(null).set(i, CraftMerchantRecipe.fromBukkit(merchantRecipe).toMinecraft());
}
 
源代码21 项目: Kettle   文件: CraftMerchantRecipe.java
public CraftMerchantRecipe(net.minecraft.village.MerchantRecipe merchantRecipe) {
    super(CraftItemStack.asBukkitCopy(merchantRecipe.itemToSell), 0);
    this.handle = merchantRecipe;
    addIngredient(CraftItemStack.asBukkitCopy(merchantRecipe.itemToBuy));
    addIngredient(CraftItemStack.asBukkitCopy(merchantRecipe.secondItemToBuy));
}
 
源代码22 项目: BedwarsRel   文件: VillagerItemShop.java
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_R2.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());
}
 
源代码23 项目: BedwarsRel   文件: VillagerItemShop.java
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());
}
 
源代码24 项目: BedwarsRel   文件: VillagerItemShop.java
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_11_R1.MerchantRecipe)) {
            continue;
          }

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

          if (trade.getItem2() != null) {
            recipe.addIngredient(trade.getItem2());
          } else {
            recipe.addIngredient(new ItemStack(Material.AIR));
          }

          recipe.setUses(0);
          recipe.setExperienceReward(false);
          recipeList.add(recipe);
        }

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

        ((CraftPlayer) player).getHandle().openTrade(entityVillager);
      } catch (Exception ex) {
        BedwarsRel.getInstance().getBugsnag().notify(ex);
        ex.printStackTrace();
      }
    }
  }.runTask(BedwarsRel.getInstance());
}
 
源代码25 项目: BedwarsRel   文件: VillagerItemShop.java
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_12_R1.MerchantRecipe)) {
            continue;
          }

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

          if (trade.getItem2() != null) {
            recipe.addIngredient(trade.getItem2());
          } else {
            recipe.addIngredient(new ItemStack(Material.AIR));
          }

          recipe.setUses(0);
          recipe.setExperienceReward(false);
          recipeList.add(recipe);
        }

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

        ((CraftPlayer) player).getHandle().openTrade(entityVillager);
      } catch (Exception ex) {
        BedwarsRel.getInstance().getBugsnag().notify(ex);
        ex.printStackTrace();
      }
    }
  }.runTask(BedwarsRel.getInstance());
}
 
源代码26 项目: BedwarsRel   文件: VillagerItemShop.java
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_10_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());
}
 
源代码27 项目: Kettle   文件: VillagerAcquireTradeEvent.java
/**
 * Get the recipe to be acquired.
 *
 * @return the new recipe
 */
public MerchantRecipe getRecipe() {
    return recipe;
}
 
源代码28 项目: Kettle   文件: VillagerAcquireTradeEvent.java
/**
 * Set the recipe to be acquired.
 *
 * @param recipe the new recipe
 */
public void setRecipe(MerchantRecipe recipe) {
    this.recipe = recipe;
}
 
源代码29 项目: Kettle   文件: VillagerReplenishTradeEvent.java
/**
 * Get the recipe to replenish.
 *
 * @return the replenished recipe
 */
public MerchantRecipe getRecipe() {
    return recipe;
}
 
源代码30 项目: Kettle   文件: VillagerReplenishTradeEvent.java
/**
 * Set the recipe to replenish.
 *
 * @param recipe the replenished recipe
 */
public void setRecipe(MerchantRecipe recipe) {
    this.recipe = recipe;
}
 
 类所在包
 类方法
 同包方法