caseif / TTT

Bukkit minigame which emulates the "Trouble In Terrorist Town" gamemode from Garry's Mod.
http://dev.bukkit.org/bukkit-plugins/ttt
MIT License
3 stars 4 forks source link

NoClassDefFoundError on Cauldron #37

Closed Cody-Wolf closed 8 years ago

Cody-Wolf commented 8 years ago

@Daniel1102

My server is cauldron(1.7.10-1.1388.1.0). Here‘s my logs(Only run TTT-0.9.3 and Steel).

[09:27:59] [Server thread/INFO] [net.caseif.ttt.TTTBootstrap/]: [TTT] Enabling TTT v0.9.3
[09:27:59] [Server thread/ERROR] [Minecraft/]: Error occurred while enabling TTT v0.9.3 (Is it up to date?)
java.lang.NoClassDefFoundError: guava10/com/google/common/eventbus/SubscriberExceptionHandler
    at net.caseif.flint.common.minigame.CommonMinigame.<init>(CommonMinigame.java:73) ~[?:?]
    at net.caseif.flint.steel.minigame.SteelMinigame.<init>(SteelMinigame.java:69) ~[?:?]
    at net.caseif.flint.steel.SteelCore.registerPlugin0(SteelCore.java:78) ~[?:?]
    at net.caseif.flint.FlintCore.registerPlugin(FlintCore.java:82) ~[?:?]
    at net.caseif.ttt.TTTCore.initialize(TTTCore.java:110) ~[?:?]
    at net.caseif.ttt.TTTBootstrap.onEnable(TTTBootstrap.java:64) ~[?:?]
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:316) ~[JavaPlugin.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0]
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:368) [JavaPluginLoader.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0]
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:410) [SimplePluginManager.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0]
    at org.bukkit.craftbukkit.v1_7_R4.CraftServer.loadPlugin(CraftServer.java:415) [CraftServer.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0]
    at org.bukkit.craftbukkit.v1_7_R4.CraftServer.enablePlugins(CraftServer.java:349) [CraftServer.class:git-Cauldron-Reloaded-1.7.10-1.1388.1.0]
    at net.minecraft.server.MinecraftServer.func_71243_i(MinecraftServer.java:500) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer.func_71222_d(MinecraftServer.java:474) [MinecraftServer.class:?]
    at net.minecraft.server.MinecraftServer.func_71247_a(MinecraftServer.java:434) [MinecraftServer.class:?]
    at net.minecraft.server.dedicated.DedicatedServer.func_71197_b(DedicatedServer.java:335) [lt.class:?]
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:620) [MinecraftServer.class:?]
    at java.lang.Thread.run(Unknown Source) [?:1.8.0_71]
[09:27:59] [Server thread/INFO] [Minecraft/]: Server permissions file permissions.yml is empty, ignoring it
[09:28:03] [Server thread/INFO] [/]: /ttt [subcommand]
[09:28:26] [Server thread/INFO] [/]: CONSOLE: Stopping the server..
[09:28:26] [Server thread/INFO] [net.caseif.ttt.TTTBootstrap/]: [TTT] Disabling TTT v0.9.3
[09:28:26] [Server thread/INFO] [net.caseif.ttt.TTTBootstrap/]: [TTT] TTT v0.9.3 has been disabled!
caseif commented 8 years ago

It appears Cauldron does some weird renaming when it shades libraries. I'll look into writing a fix, but no promises. This is a very difficult issue to circumvent without creating a build especially for Cauldron.

Cody-Wolf commented 8 years ago

But pass my test ,TTT-0.6 can run on Cauldron.

[11:49:58 INFO]: This server is running TTT version 0.6.0 by Maxim Roncacé.
[11:49:58 INFO]: Type "/ttt help" for help.
ttt help
[11:50:00 INFO]: Commands available to you:
[11:50:00 INFO]: /ttt join, j Enters you into a given game
[11:50:00 INFO]: /ttt quit, q Removes you from your current game
[11:50:00 INFO]: /ttt import, i Imports a world from a given folder into the plugin
[11:50:00 INFO]: /ttt carena, ca Creates an arena by the specified name. Three coordinates and optionally a world may be provided. If no extra arguments are provided, the sender's location will be used.
[11:50:00 INFO]: /ttt addspawn, ad Adds a spawn to the specified arena. Three coordinates and optionally a world may be provided. If no extra arguments are provided, the sender's location will be used.
[11:50:00 INFO]: /ttt removespawn, rs Removes a spawn from the specified arena. Three coordinates and optionally a world may be provided. If no extra arguments are provided, the sender's location will be used. A single index may also be used.
[11:50:00 INFO]: /ttt setexit, se Sets the exit point upon round exit to your current location
[11:50:00 INFO]: /ttt help, ? Displays this help menu
caseif commented 8 years ago

Yes, but version 0.6 did not rely on Guava whereas Steel (the new backend as of 0.8) does.

Cody-Wolf commented 8 years ago

You can try imitating TTT0.6 to fix the bug. I think may be the problem of Steel.(In version 0.7, you change Guava to Steel.And after version 0.6,it can't run on Cauldron)

caseif commented 8 years ago

That's not quite how it works. Steel is a minigame engine which TTT uses as of version 0.8.x, whereas Guava is a utility library that Steel happens to use. However, because of the way Minecraft Forge is built, Guava doesn't always seem to be accessible, hence why you're having this issue.

Cody-Wolf commented 8 years ago

Can you develop new versions of TTT for Cauldron?

Cody-Wolf commented 8 years ago

Because version 0.6 is too old. And it doesn't have the new version of the many functions.

caseif commented 8 years ago

As I've said, I'll look into resolving this issue, but a fix could potentially be complex so I can't guarantee that it will see a fix in the near future.

caseif commented 8 years ago

Have you tried recompiling Cauldron and testing to see if the issue still occurs?

caseif commented 8 years ago

Support for Minecraft 1.7.x will be dropped in TTT v0.11, so I'm marking this issue as wontfix.