Freeze_Dolphin
心血来潮用scala写插件

好像是一用和数组有关的东西就会报错

报错内容:
  1. [10:23:16] [Server thread/INFO]: Freeze_Dolphin issued server command: /plainshop opn flower
  2. [10:23:18] [Server thread/WARN]: java.lang.reflect.InvocationTargetException
  3. [10:23:18] [Server thread/WARN]:         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  4. [10:23:18] [Server thread/WARN]:         at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
  5. [10:23:18] [Server thread/WARN]:         at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  6. [10:23:18] [Server thread/WARN]:         at java.base/java.lang.reflect.Method.invoke(Method.java:567)
  7. [10:23:18] [Server thread/WARN]:         at redempt.redlib.commandmanager.Command.execute(Command.java:817)
  8. [10:23:18] [Server thread/WARN]:         at redempt.redlib.commandmanager.Command.execute(Command.java:843)
  9. [10:23:18] [Server thread/WARN]:         at redempt.redlib.commandmanager.Command$1.execute(Command.java:502)
  10. [10:23:18] [Server thread/WARN]:         at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159)
  11. [10:23:18] [Server thread/WARN]:         at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:826)
  12. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.PlayerConnection.handleCommand(PlayerConnection.java:2185)
  13. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.PlayerConnection.c(PlayerConnection.java:2000)
  14. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1953)
  15. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:49)
  16. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:7)
  17. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$ensureMainThread$1(PlayerConnectionUtils.java:35)
  18. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18)
  19. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136)
  20. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23)
  21. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109)
  22. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1266)
  23. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1259)
  24. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119)
  25. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:1220)
  26. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1134)
  27. [10:23:18] [Server thread/WARN]:         at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291)
  28. [10:23:18] [Server thread/WARN]:         at java.base/java.lang.Thread.run(Thread.java:831)
  29. [10:23:18] [Server thread/WARN]: Caused by: java.lang.NoSuchMethodError: 'java.lang.Object scala.Predef$.refArrayOps(java.lang.Object[])'
  30. [10:23:18] [Server thread/WARN]:         at io.freeze_dolphin.plain_shop.guis.UIUtl$.create(UIUtl.scala:39)
  31. [10:23:18] [Server thread/WARN]:         at io.freeze_dolphin.plain_shop.commands.threads.OpenThread.start(OpenThread.scala:19)
  32. [10:23:18] [Server thread/WARN]:         at io.freeze_dolphin.plain_shop.commands.CommandBus.opn(CommandBus.scala:38)
  33. [10:23:18] [Server thread/WARN]:         ... 26 more
复制代码


代码:
  1. package io.freeze_dolphin.plain_shop.guis

  2. import io.freeze_dolphin.plain_shop.PlugGividado
  3. import io.freeze_dolphin.plain_shop.configs.StorageUtl
  4. import java.io.{File, FilenameFilter}
  5. import org.bukkit.ChatColor
  6. import org.bukkit.configuration.file.YamlConfiguration
  7. import redempt.redlib.inventorygui.{InventoryGUI, ItemButton}
  8. import redempt.redlib.itemutils.ItemBuilder

  9. object UIUtl {

  10.     private val eco = PlugGividado.ec

  11.     def create(yml: YamlConfiguration): InventoryGUI = {
  12.         import org.bukkit.Bukkit
  13.         import redempt.redlib.inventorygui.InventoryGUI

  14.         val id = yml.getString("id")
  15.         val title = yml.getString("title")
  16.         val icon = yml.getItemStack("icon")
  17.         val border = yml.getItemStack("border")

  18.         val gui = new InventoryGUI(Bukkit.createInventory(null, 54, color(title)))

  19.         gui.addButton(ItemButton.create(icon, evt => {
  20.             evt.setCancelled(true)
  21.         }), 0, 0)

  22.         gui.fill(1, 0, 8, 0, border)
  23.         gui.fill(0, 1, 5, 1, border)
  24.         gui.fill(8, 1, 8, 5, border)
  25.         gui.fill(1, 5, 7, 5, border)

  26.         gui.update()

  27.         val detect = StorageUtl.isCategoryExisted(id)
  28.         if (detect._1) {
  29.             for (f <- new File(PlugGividado.pg.getDataFolder.getPath + File.separator + "storage" + File.separator + id).listFiles(new FilenameFilter {
  30.                 override def accept(dir: File, name: String): Boolean = {
  31.                     name.endsWith(".yml")
  32.                 }
  33.             })
  34.                  ) {
  35.                 val yml = YamlConfiguration.loadConfiguration(f)
  36.                 val item = yml.getItemStack("item")
  37.                 val prize = yml.getDouble("prize").floatValue()
  38.                 val itm = new ItemBuilder(yml.getItemStack("item"))
  39.                         .addLore(color("&f"))
  40.                         .addLore(color(s"&7[&6>&7] &e&l价格&e: &f$prize"))
  41.                         .addLore(color("&7[&a+&7] &e左键 &f购买 1 个&f"))
  42.                         .addLore(color("&7[&a&l+&7] &eShift &7+ &e左键 &f购买 10 个&f"))
  43.                 gui.addButton(ItemButton.create(itm, evt => {
  44.                     if (evt.isCancelled) ()
  45.                     if (evt.isLeftClick) {
  46.                         if (!evt.isShiftClick) {
  47.                             val plr = Bukkit.getPlayer(evt.getWhoClicked.getUniqueId)
  48.                             val r = eco.withdrawPlayer(plr, prize)
  49.                             if (r.transactionSuccess()) {
  50.                                 plr.sendMessage(color(PlugGividado.cg.getConfig.getString("msg_shop_success")))
  51.                                 if (plr.getInventory.firstEmpty() == -1) {
  52.                                     plr.sendMessage(color(PlugGividado.cg.getConfig.getString("msg_shop_full_inv")))
  53.                                     plr.getWorld.dropItem(plr.getLocation, item)
  54.                                 } else plr.getInventory.addItem(item)
  55.                             } else plr.sendMessage(color(PlugGividado.cg.getConfig.getString("msg_shop_failure")))
  56.                         } else {
  57.                             val plr = Bukkit.getPlayer(evt.getWhoClicked.getUniqueId)
  58.                             val r = eco.withdrawPlayer(plr, prize * 10)
  59.                             if (r.transactionSuccess()) {
  60.                                 plr.sendMessage(color(PlugGividado.cg.getConfig.getString("msg_shop_success")))

  61.                                 var invWarn = false
  62.                                 for (_ <- 1 to 10) {
  63.                                     if (plr.getInventory.firstEmpty() == -1) {
  64.                                         invWarn = true
  65.                                         plr.getWorld.dropItem(plr.getLocation, item)
  66.                                     } else plr.getInventory.addItem(item)
  67.                                 }
  68.                                 if (invWarn) plr.sendMessage(color(PlugGividado.cg.getConfig.getString("msg_shop_full_inv")))
  69.                             } else plr.sendMessage(color(PlugGividado.cg.getConfig.getString("msg_shop_failure")))
  70.                         }
  71.                     }
  72.                     ()
  73.                 }), gui.getInventory.firstEmpty())
  74.                 gui.update()
  75.             }
  76.             gui.update()
  77.             return gui
  78.         }
  79.         throw new IllegalArgumentException("Invalid yaml configuration!")
  80.     }

  81.     def color(str: String): String = {
  82.         ChatColor.translateAlternateColorCodes('&', str)
  83.     }

  84. }
复制代码

电脑已安装scala运行库:


之前试过用TabooLib的前置下载功能(@Dependency 注解),也这样报错
就把去掉对TabooLib的依赖了

试过把scala运行库解压了塞插件里,一样报错

名副其实
https://www.spigotmc.org/resources/scalaloader.59568/
这个或许对你有参考性作用

第一页 上一页 下一页 最后一页