隔壁老吕
本帖最后由 隔壁老吕 于 2018-5-20 17:52 编辑
  1. import java.util.List;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import org.bukkit.Material;
  5. import org.bukkit.entity.Player;
  6. import org.bukkit.event.EventHandler;
  7. import org.bukkit.event.Listener;
  8. import org.bukkit.inventory.ItemStack;
  9. import org.bukkit.inventory.meta.ItemMeta;
  10. import org.bukkit.event.inventory.InventoryClickEvent;
  11. import org.bukkit.event.inventory.InventoryType;
  12. import org.bukkit.plugin.java.JavaPlugin;

  13. public class Baoshi extends JavaPlugin implements Listener{
  14.     HashMap<String, ItemMeta> usingMap = new HashMap<>();
  15.     HashMap<String, ItemStack> firstItemMap = new HashMap<>();
  16.     public ItemMeta baoshi(){
  17.         ItemStack item = new ItemStack(276);
  18.         ItemMeta meta = item.getItemMeta();
  19.         List<String> lore = new ArrayList<>();
  20.         lore.add("xx宝石");
  21.         meta.setDisplayName("xx宝石");
  22.         meta.setLore(lore);
  23.         return meta;
  24.     }
  25.     @EventHandler
  26.     public void InventoryClickEvent(InventoryClickEvent e){
  27.         Player p = (Player)e.getWhoClicked();
  28.         if (e.getRawSlot() < 0) {
  29.             return;
  30.         }
  31.         ItemStack item = e.getCurrentItem();
  32.         ItemMeta meta = item.getItemMeta();
  33.         if (usingMap.containsKey(p.getName()))
  34.         {
  35.             if(e.isRightClick()){
  36.                 if (e.getInventory().getType() != InventoryType.CRAFTING) {
  37.                     p.sendMessage("§c请在背包内右键");
  38.                     return;
  39.                 }

  40.                 if ((item == null) || (item.getType().equals(Material.AIR))) {
  41.                     e.setCancelled(true);
  42.                     p.closeInventory();
  43.                     p.sendMessage("镶嵌取消");
  44.                     usingMap.remove(p.getName());
  45.                     return;
  46.                 }
  47.                 ItemStack fitem = firstItemMap.get(p.getName());
  48.                 boolean state = false;
  49.                 if(item.getTypeId() == 0/*镶嵌物品id*/){
  50.                     state = true;
  51.                 }

  52.                 if (state == false){
  53.                     e.setCancelled(true);
  54.                     p.sendMessage("不能镶嵌");
  55.                     return;
  56.                 }
  57.                 //code..........
  58.                 p.sendMessage("镶嵌成功");  
  59.                 usingMap.remove(p.getName());
  60.                 firstItemMap.remove(p.getName());
  61.                 int sl = fitem.getAmount() -1;
  62.                 p.getInventory().remove(fitem);
  63.                 ItemStack add = fitem;
  64.                 add.setAmount(sl);
  65.                 p.getInventory().addItem(add);
  66.                 e.setCancelled(true);
  67.                 p.closeInventory();
  68.             }
  69.         } else {
  70.             if (e.isRightClick()){
  71.                 if (meta == baoshi()){
  72.                     usingMap.put(p.getName(), meta);
  73.                     firstItemMap.put(p.getName(), item);
  74.                     p.sendMessage("正在镶嵌");
  75.                     e.setCancelled(true);
  76.                     p.closeInventory();
  77.                 }
  78.             }
  79.         }
  80.     }
  81. }
复制代码



2021.12 数据,可能有更多内容 本帖最后由 隔壁老吕 于 2018-5-20 17:52 编辑

代码:

  1. import java.util.List;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import org.bukkit.Material;
  5. import org.bukkit.entity.Player;
  6. import org.bukkit.event.EventHandler;
  7. import org.bukkit.event.Listener;
  8. import org.bukkit.inventory.ItemStack;
  9. import org.bukkit.inventory.meta.ItemMeta;
  10. import org.bukkit.event.inventory.InventoryClickEvent;
  11. import org.bukkit.event.inventory.InventoryType;
  12. import org.bukkit.plugin.java.JavaPlugin;

  13. public class Baoshi extends JavaPlugin implements Listener{
  14.     HashMap<String, ItemMeta> usingMap = new HashMap<>();
  15.     HashMap<String, ItemStack> firstItemMap = new HashMap<>();
  16.     public ItemMeta baoshi(){
  17.   ItemStack item = new ItemStack(276);
  18.   ItemMeta meta = item.getItemMeta();
  19.   List<String> lore = new ArrayList<>();
  20.   lore.add("xx宝石");
  21.   meta.setDisplayName("xx宝石");
  22.   meta.setLore(lore);
  23.   return meta;
  24.     }
  25.     @EventHandler
  26.     public void InventoryClickEvent(InventoryClickEvent e){
  27.   Player p = (Player)e.getWhoClicked();
  28.   if (e.getRawSlot() < 0) {
  29.    return;
  30.   }
  31.   ItemStack item = e.getCurrentItem();
  32.   ItemMeta meta = item.getItemMeta();
  33.   if (usingMap.containsKey(p.getName()))
  34.   {
  35.    if(e.isRightClick()){
  36.     if (e.getInventory().getType() != InventoryType.CRAFTING) {
  37.   p.sendMessage("§c请在背包内右键");
  38.   return;
  39.     }

  40.     if ((item == null) || (item.getType().equals(Material.AIR))) {
  41.   e.setCancelled(true);
  42.   p.closeInventory();
  43.   p.sendMessage("镶嵌取消");
  44.   usingMap.remove(p.getName());
  45.   return;
  46.     }
  47.     ItemStack fitem = firstItemMap.get(p.getName());
  48.     boolean state = false;
  49.     if(item.getTypeId() == 0/*镶嵌物品id*/){
  50.   state = true;
  51.     }

  52.     if (state == false){
  53.   e.setCancelled(true);
  54.   p.sendMessage("不能镶嵌");
  55.   return;
  56.     }
  57.     //code..........
  58.     p.sendMessage("镶嵌成功");
  59.     usingMap.remove(p.getName());
  60.     firstItemMap.remove(p.getName());
  61.     int sl = fitem.getAmount() -1;
  62.     p.getInventory().remove(fitem);
  63.     ItemStack add = fitem;
  64.     add.setAmount(sl);
  65.     p.getInventory().addItem(add);
  66.     e.setCancelled(true);
  67.     p.closeInventory();
  68.    }
  69.   } else {
  70.    if (e.isRightClick()){
  71.     if (meta == baoshi()){
  72.   usingMap.put(p.getName(), meta);
  73.   firstItemMap.put(p.getName(), item);
  74.   p.sendMessage("正在镶嵌");
  75.   e.setCancelled(true);
  76.   p.closeInventory();
  77.     }
  78.    }
  79.   }
  80.     }
  81. }