心血来潮用scala写插件
好像是一用和数组有关的东西就会报错
报错内容:
复制代码
代码:
复制代码
电脑已安装scala运行库:
之前试过用TabooLib的前置下载功能(@Dependency 注解),也这样报错
就把去掉对TabooLib的依赖了
试过把scala运行库解压了塞插件里,一样报错
好像是一用和数组有关的东西就会报错
报错内容:
- [10:23:16] [Server thread/INFO]: Freeze_Dolphin issued server command: /plainshop opn flower
- [10:23:18] [Server thread/WARN]: java.lang.reflect.InvocationTargetException
- [10:23:18] [Server thread/WARN]: at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
- [10:23:18] [Server thread/WARN]: at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
- [10:23:18] [Server thread/WARN]: at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
- [10:23:18] [Server thread/WARN]: at java.base/java.lang.reflect.Method.invoke(Method.java:567)
- [10:23:18] [Server thread/WARN]: at redempt.redlib.commandmanager.Command.execute(Command.java:817)
- [10:23:18] [Server thread/WARN]: at redempt.redlib.commandmanager.Command.execute(Command.java:843)
- [10:23:18] [Server thread/WARN]: at redempt.redlib.commandmanager.Command$1.execute(Command.java:502)
- [10:23:18] [Server thread/WARN]: at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159)
- [10:23:18] [Server thread/WARN]: at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:826)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.PlayerConnection.handleCommand(PlayerConnection.java:2185)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.PlayerConnection.c(PlayerConnection.java:2000)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1953)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:49)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:7)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$ensureMainThread$1(PlayerConnectionUtils.java:35)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:136)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:109)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1266)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1259)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:119)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:1220)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1134)
- [10:23:18] [Server thread/WARN]: at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:291)
- [10:23:18] [Server thread/WARN]: at java.base/java.lang.Thread.run(Thread.java:831)
- [10:23:18] [Server thread/WARN]: Caused by: java.lang.NoSuchMethodError: 'java.lang.Object scala.Predef$.refArrayOps(java.lang.Object[])'
- [10:23:18] [Server thread/WARN]: at io.freeze_dolphin.plain_shop.guis.UIUtl$.create(UIUtl.scala:39)
- [10:23:18] [Server thread/WARN]: at io.freeze_dolphin.plain_shop.commands.threads.OpenThread.start(OpenThread.scala:19)
- [10:23:18] [Server thread/WARN]: at io.freeze_dolphin.plain_shop.commands.CommandBus.opn(CommandBus.scala:38)
- [10:23:18] [Server thread/WARN]: ... 26 more
代码:
- package io.freeze_dolphin.plain_shop.guis
- import io.freeze_dolphin.plain_shop.PlugGividado
- import io.freeze_dolphin.plain_shop.configs.StorageUtl
- import java.io.{File, FilenameFilter}
- import org.bukkit.ChatColor
- import org.bukkit.configuration.file.YamlConfiguration
- import redempt.redlib.inventorygui.{InventoryGUI, ItemButton}
- import redempt.redlib.itemutils.ItemBuilder
- object UIUtl {
- private val eco = PlugGividado.ec
- def create(yml: YamlConfiguration): InventoryGUI = {
- import org.bukkit.Bukkit
- import redempt.redlib.inventorygui.InventoryGUI
- val id = yml.getString("id")
- val title = yml.getString("title")
- val icon = yml.getItemStack("icon")
- val border = yml.getItemStack("border")
- val gui = new InventoryGUI(Bukkit.createInventory(null, 54, color(title)))
- gui.addButton(ItemButton.create(icon, evt => {
- evt.setCancelled(true)
- }), 0, 0)
- gui.fill(1, 0, 8, 0, border)
- gui.fill(0, 1, 5, 1, border)
- gui.fill(8, 1, 8, 5, border)
- gui.fill(1, 5, 7, 5, border)
- gui.update()
- val detect = StorageUtl.isCategoryExisted(id)
- if (detect._1) {
- for (f <- new File(PlugGividado.pg.getDataFolder.getPath + File.separator + "storage" + File.separator + id).listFiles(new FilenameFilter {
- override def accept(dir: File, name: String): Boolean = {
- name.endsWith(".yml")
- }
- })
- ) {
- val yml = YamlConfiguration.loadConfiguration(f)
- val item = yml.getItemStack("item")
- val prize = yml.getDouble("prize").floatValue()
- val itm = new ItemBuilder(yml.getItemStack("item"))
- .addLore(color("&f"))
- .addLore(color(s"&7[&6>&7] &e&l价格&e: &f$prize"))
- .addLore(color("&7[&a+&7] &e左键 &f购买 1 个&f"))
- .addLore(color("&7[&a&l+&7] &eShift &7+ &e左键 &f购买 10 个&f"))
- gui.addButton(ItemButton.create(itm, evt => {
- if (evt.isCancelled) ()
- if (evt.isLeftClick) {
- if (!evt.isShiftClick) {
- val plr = Bukkit.getPlayer(evt.getWhoClicked.getUniqueId)
- val r = eco.withdrawPlayer(plr, prize)
- if (r.transactionSuccess()) {
- plr.sendMessage(color(PlugGividado.cg.getConfig.getString("msg_shop_success")))
- if (plr.getInventory.firstEmpty() == -1) {
- plr.sendMessage(color(PlugGividado.cg.getConfig.getString("msg_shop_full_inv")))
- plr.getWorld.dropItem(plr.getLocation, item)
- } else plr.getInventory.addItem(item)
- } else plr.sendMessage(color(PlugGividado.cg.getConfig.getString("msg_shop_failure")))
- } else {
- val plr = Bukkit.getPlayer(evt.getWhoClicked.getUniqueId)
- val r = eco.withdrawPlayer(plr, prize * 10)
- if (r.transactionSuccess()) {
- plr.sendMessage(color(PlugGividado.cg.getConfig.getString("msg_shop_success")))
- var invWarn = false
- for (_ <- 1 to 10) {
- if (plr.getInventory.firstEmpty() == -1) {
- invWarn = true
- plr.getWorld.dropItem(plr.getLocation, item)
- } else plr.getInventory.addItem(item)
- }
- if (invWarn) plr.sendMessage(color(PlugGividado.cg.getConfig.getString("msg_shop_full_inv")))
- } else plr.sendMessage(color(PlugGividado.cg.getConfig.getString("msg_shop_failure")))
- }
- }
- ()
- }), gui.getInventory.firstEmpty())
- gui.update()
- }
- gui.update()
- return gui
- }
- throw new IllegalArgumentException("Invalid yaml configuration!")
- }
- def color(str: String): String = {
- ChatColor.translateAlternateColorCodes('&', str)
- }
- }
电脑已安装scala运行库:
之前试过用TabooLib的前置下载功能(@Dependency 注解),也这样报错
就把去掉对TabooLib的依赖了
试过把scala运行库解压了塞插件里,一样报错