Neige
MC~蛟龙 发表于 2023-7-30 10:48
额,这什么意思,Bukkit的不是和原版的一样吗

低版本有差异,高版本没啥区别

MC~蛟龙
Neige 发表于 2023-7-30 10:57
低版本有差异,高版本没啥区别

版本1.20.1
所以有什么好点的解决办法吗

Neige
MC~蛟龙 发表于 2023-7-30 11:25
版本1.20.1
所以有什么好点的解决办法吗

装一下这个
https://www.mcbbs.net/thread-1364195-1-1.html

然后打开plugins/NeigeItems/Expansions文件夹,新建一个文本文档,改名"物品给予.js"
打开这个文件,输入以下文本:
  1. function enable() {
  2.     const ArrayList = Packages.java.util.ArrayList
  3.     const Comparator = Packages.java.util.Comparator
  4.     const ItemStack = Packages.org.bukkit.inventory.ItemStack
  5.     const Material = Packages.org.bukkit.Material

  6.     const materialIds = new ArrayList()
  7.     const materials = Material.values()
  8.     for (let index = 0; index < materials.length; index++) {
  9.         const material = materials[index]
  10.         try {
  11.             materialIds.add(material.key.toString())
  12.             materialIds.add(material.toString())
  13.         } catch (error) {}
  14.     }
  15.     materialIds.sort(Comparator.naturalOrder())

  16.     new Command("蛟龙给你物品")
  17.         .setPermission("蛟龙给你物品.command")
  18.         .setPermissionMessage("权限不足")
  19.         .setExecutor(function(sender, command, label, args) {
  20.             if (args.length < 2) {
  21.                 sender.sendMessage("/蛟龙给你物品 玩家ID 物品ID 物品数量")
  22.                 return true
  23.             }
  24.             const player = Bukkit.getPlayerExact(args[0])
  25.             if (player == null) {
  26.                 sender.sendMessage("玩家不在线或不存在")
  27.                 return true
  28.             }
  29.             let amount = 1
  30.             if (args.length > 2) {
  31.                 amount = parseInt(args[2])
  32.             }
  33.             if (isNaN(amount)) {
  34.                 sender.sendMessage(`无法解析的数量: ${args[2]}`)
  35.                 return true
  36.             }
  37.             let material
  38.             if (args[1].startsWith("minecraft:")) {
  39.                 material = Material.matchMaterial(args[1].substring(10).toUpperCase())
  40.             } else {
  41.                 material = Material.matchMaterial(args[1].toUpperCase())
  42.             }
  43.             if (material == null) {
  44.                 sender.sendMessage(`无法解析的物品材质: ${args[1]}`)
  45.                 return true
  46.             }
  47.             const itemStack = new ItemStack(material)
  48.             PlayerUtils.giveItems(player, itemStack, amount)
  49.             sender.sendMessage(`成功给予 ${args[0]} ${amount} 个 ${HookerManager.getParsedName(itemStack)}`)
  50.             return true
  51.         })
  52.         .setTabCompleter(function(sender, command, label, args) {
  53.             if (args.length == 1) {
  54.                 const onlinePlayers = new ArrayList()
  55.                 Bukkit.getOnlinePlayers().forEach(function(player) {
  56.                     onlinePlayers.add(player.name)
  57.                 })
  58.                 return onlinePlayers
  59.             } else if (args.length == 2) {
  60.                 return materialIds
  61.             } else if (args.length == 3) {
  62.                 return ["amount"]
  63.             }
  64.             return []
  65.         })
  66.         .register()
  67. }
复制代码
然后输入"/ni reload"重载,或者重启服务器,你就可以通过"/蛟龙给你物品 玩家ID 物品ID 物品数量"给物品了

第一页 上一页