本帖最后由 颅内开灯 于 2021-6-1 23:44 编辑
想要把设置好的物品,替换到CraftItemEvent,也就是想让合成出来的物品自带Lore。请问有大佬能指教一下吗
想要把设置好的物品,替换到CraftItemEvent,也就是想让合成出来的物品自带Lore。请问有大佬能指教一下吗
| @EventHandler public void Crafts(CraftItemEvent event){ //获取事件物品 ItemStack itemStack = event.getRecipe().getResult(); if (itemStack != null && !itemStack.getType().equals(Material.AIR)){ Iterator keys = Config.getCraftItemLore().keySet().iterator(); while (keys.hasNext()){ String key = (String)keys.next(); //判断是否存在 if (itemStack.getType().toString().equalsIgnoreCase(key)){ System.out.println("执行"); //到这里都是可允许并且达到预期的,问题就是下面 ItemMeta itemMeta = itemStack.getItemMeta(); String ConfigLore = Config.getCraftItemLore().get(key); List<String> lores = new ArrayList<>(); lores.add(ConfigLore); itemMeta.setLore(lores); itemStack.setItemMeta(itemMeta); //如何把这里的itemStack设置为合成出来的物品呢? return; } } } } } |
@EventHandler
public void playerCraftItem(PrepareItemCraftEvent event) {
ItemStack itemStack; //准备你的物品
event.getInventory().setResult(itemStack); //设置合成结果
event.getViewers().forEach(human->((Player)human).updateInventory()); //更新客户端显示
}
public void playerCraftItem(PrepareItemCraftEvent event) {
ItemStack itemStack; //准备你的物品
event.getInventory().setResult(itemStack); //设置合成结果
event.getViewers().forEach(human->((Player)human).updateInventory()); //更新客户端显示
}