0
[19:44:33 ERROR]: Could not pass event InventoryClickEvent to LuckyWars v1.0.0
org.bukkit.event.EventException: null
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:78) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:564) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:549) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at net.minecraft.server.v1_8_R3.PlayerConnection.a(PlayerConnection.java:1681) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(PacketPlayInWindowClick.java:17) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at net.minecraft.server.v1_8_R3.PacketPlayInWindowClick.a(PacketPlayInWindowClick.java:5) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at net.minecraft.server.v1_8_R3.PlayerConnectionUtils$1.run(PlayerConnectionUtils.java:9) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:539) ~[?:?]
        at java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[?:?]
        at net.minecraft.server.v1_8_R3.SystemUtils.a(SystemUtils.java:11) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:880) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:412) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:814) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:647) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at net.minecraft.server.v1_8_R3.MinecraftServer.lambda$spin$0(MinecraftServer.java:133) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at java.lang.Thread.run(Thread.java:833) [?:?]
Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.util.TaskQueue java.util.Timer.queue accessible: module java.base does not "opens java.util" to unnamed module @6cf0e0ba
        at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354) ~[?:?]
        at java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297) ~[?:?]
        at java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) ~[?:?]
        at java.lang.reflect.Field.setAccessible(Field.java:172) ~[?:?]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:140) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:83) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.Gson.getAdapter(Gson.java:359) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getFieldAdapter(ReflectiveTypeAdapterFactory.java:122) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.access$100(ReflectiveTypeAdapterFactory.java:46) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:92) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:91) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:142) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:83) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.Gson.getAdapter(Gson.java:359) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getFieldAdapter(ReflectiveTypeAdapterFactory.java:122) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.access$100(ReflectiveTypeAdapterFactory.java:46) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:92) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:91) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:142) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:83) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.Gson.getAdapter(Gson.java:359) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getFieldAdapter(ReflectiveTypeAdapterFactory.java:122) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.access$100(ReflectiveTypeAdapterFactory.java:46) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:92) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:91) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:142) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:83) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.Gson.getAdapter(Gson.java:359) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getFieldAdapter(ReflectiveTypeAdapterFactory.java:122) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.access$100(ReflectiveTypeAdapterFactory.java:46) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.<init>(ReflectiveTypeAdapterFactory.java:92) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:91) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:142) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:83) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.Gson.getAdapter(Gson.java:359) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:55) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:99) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:219) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:99) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:219) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:96) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.write(CollectionTypeAdapterFactory.java:60) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.TypeAdapterRuntimeTypeWrapper.write(TypeAdapterRuntimeTypeWrapper.java:68) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.write(ReflectiveTypeAdapterFactory.java:99) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.write(ReflectiveTypeAdapterFactory.java:219) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.Gson.toJson(Gson.java:600) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.Gson.toJson(Gson.java:579) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.Gson.toJson(Gson.java:534) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.google.gson.Gson.toJson(Gson.java:514) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        at com.luckywars.game.utils.MapDataSerializer.serialize(MapDataSerializer.java:12) ~[?:?]
        at com.luckywars.game.database.dbs.MapDB.saveMapData(MapDB.java:40) ~[?:?]
        at com.luckywars.game.setupwizard.Session.delete(Session.java:117) ~[?:?]
        at com.luckywars.game.setupwizard.WizardManager.endSession(WizardManager.java:22) ~[?:?]
        at com.luckywars.game.setupwizard.gui.ConfirmExitGui.handleClick(ConfirmExitGui.java:31) ~[?:?]
        at com.luckywars.game.setupwizard.WizardListeners.onClick(WizardListeners.java:35) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
        at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
        at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
        at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:300) ~[patched_1.8.8.jar:git-PandaSpigot-82]
        ... 17 more

I tried printing the cuboid before the error happened and it printed fine.

I was expecting the cuboid to be null but it wasn't.

My MapData class:

`public class MapData {

public String name;
public List<String> authors;

public long lastEdit;

public List<Pos> luckyBlocks;

public List<Pos> spawnPoints;
public List<Cuboid> cages;
public Pos spectatorSpawn;

public MapData(String name, List<String> authors, long lastEdit, List<Pos> luckyBlocks, List<Pos> spawnPoints, List<Cuboid> cages, Pos spectatorSpawn) {
    this.name = name;
    this.authors = authors;
    this.lastEdit = lastEdit;
    this.luckyBlocks = luckyBlocks;
    this.spawnPoints = spawnPoints;
    this.cages = cages;
    this.spectatorSpawn = spectatorSpawn;
}

public String getName() {
    return name;
}

public List<Pos> getSpawnPoints() {
    return spawnPoints;
}

public List<Cuboid> getCages() {
    return cages;
}

public List<Pos> getLuckyBlocks() {
    return luckyBlocks;
}

public List<String> getAuthors() {
    return authors;
}

public long getLastEdit() {
    return lastEdit;
}

public void setLastEdit(long lastEdit) {
    this.lastEdit = lastEdit;
}

public Pos getSpectatorSpawn() {
    return spectatorSpawn;
}

public void setSpectatorSpawn(Pos spectatorSpawn) {
    this.spectatorSpawn = spectatorSpawn;
}

}

My Session class:

addCage method:

public void addCage() { SelectionManager selectionManager = LuckyWars.getInstance().getSelectionManager(); Selection selection = selectionManager.getSelection(player.getUniqueId());

    if (selection == null) {
        player.sendMessage(MessageUtils.format("&cYou have not even made any selections at all! make one by using the loc wand!"));
        return;
    }

    Location location1 = selection.getFirstPos();
    Location location2 = selection.getSecondPos();

    if (location1 == null) {
        player.sendMessage(MessageUtils.format("&cYour first pos selection is null!"));
        return;
    }
    if (location2 == null){
        player.sendMessage(MessageUtils.format("&cYour second pos selection is null!"));
        return;
    }

    if (data.cages.size() == GameMode.SOLO.getMaxPlayers()) {
        player.sendMessage(MessageUtils.format("&cYou cant add more than " + GameMode.SOLO.getMaxPlayers() + " cages!"));
        return;
    }

    Cuboid cuboid = new Cuboid(location1, location2, false);
    this.data.getCages().add(cuboid);
    player.sendMessage(MessageUtils.format("&aSuccessfully added a cage!"));
    if (LuckyWars.getInstance().isDebugMessages()) {
        System.out.println(cuboid);
    }
}`

session line from error:

if(save){ data.setLastEdit(System.currentTimeMillis()); LuckyWars.getInstance().getMapDB().saveMapData(data.getName(), data); }

pkp0
  • 1

1 Answers1

1

The important line here is:

java.lang.reflect.InaccessibleObjectException: Unable to make field private final java.util.TaskQueue java.util.Timer.queue accessible: module java.base does not "opens java.util" to unnamed module

Probably one of your classes (maybe Cuboid) has transitively a java.util.Timer value which you are (accidentally?) trying to serialize with Gson. Because Gson has no built-in adapter for Timer it tries to use reflection which fails for JDK classes in the latest JDK versions. In general you should avoid relying on the reflection-based Gson adapter for third-party classes because it makes you dependent on the implementation details of those classes, which could change at any time.

To solve this, you either have to write a custom Gson TypeAdapter which serializes the Timer value, or exclude it from serialization (e.g. making the field transient). See the troubleshooting guide for more information.

Marcono1234
  • 5,856
  • 1
  • 25
  • 43