OASIS-learn-study / minecraft-storeys-maker

Minecraft extension to make your own stories in, with and for Minecraft - it's like being a movie director!
https://www.learn.study
GNU Affero General Public License v3.0
15 stars 10 forks source link

Commands are not always correctly unregistered, because Blockly UI saves the "same project" under different IDs? Or error handling bug? #377

Closed vorburger closed 2 years ago

vorburger commented 2 years ago

I was testing #369 and #376 and somehow managed to hit the problem shown below.

I'm not entirely sure what exactly I did, but I think I first tried to use the say block, noticed that it wasn't implemented in the API yet (fair enough, shit happens) and threw a JS error. Then I replaced that with a title block in Blocky, and click upload code again. That then caused an error because a command of that name was already registered.

Does the Blockly UI (currently as-is) "re-use" that ID? I noticed it's different (16787d5c-3ddf-4156-a6dd-e513ca1ee1a9 VS /cd6a4345-bfa7-44a9-872f-1b907ecf2c95). Or had I perhaps restarted the server between these two tests? (I don't think so.)

@edewit thought this may interest you, and perhaps something you can think of or we can discuss how to fix.

[16:18:48 INFO] [ch.vorburger.minecraft.storeys.ScriptsLoader]: (Re-)loaded /data/config/storeys-web/new-scripts/16787d5c-3ddf-4156-a6dd-e513ca1ee1a9
[16:19:05 ERROR] [ch.vorburger.minecraft.storeys.japi.util.CommandExceptions]: doOrThrow()
jdk.nashorn.internal.runtime.ECMAException: TypeError: m.say is not a function
        at jdk.nashorn.internal.runtime.ECMAErrors.error(ECMAErrors.java:57) ~[nashorn.jar:?]
        at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:213) ~[nashorn.jar:?]
        at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:185) ~[nashorn.jar:?]
        at jdk.nashorn.internal.runtime.ECMAErrors.typeError(ECMAErrors.java:172) ~[nashorn.jar:?]
        at jdk.nashorn.internal.runtime.Undefined.lookup(Undefined.java:102) ~[nashorn.jar:?]
        at jdk.nashorn.internal.runtime.linker.NashornLinker.getGuardedInvocation(NashornLinker.java:106) ~[nashorn.jar:?]
        at jdk.nashorn.internal.runtime.linker.NashornLinker.getGuardedInvocation(NashornLinker.java:98) ~[nashorn.jar:?]
        at jdk.internal.dynalink.support.CompositeTypeBasedGuardingDynamicLinker.getGuardedInvocation(CompositeTypeBasedGuardingDynamicLinker.java:176) ~[nashorn.jar:?]
        at jdk.internal.dynalink.support.CompositeGuardingDynamicLinker.getGuardedInvocation(CompositeGuardingDynamicLinker.java:124) ~[nashorn.jar:?]
        at jdk.internal.dynalink.support.LinkerServicesImpl.getGuardedInvocation(LinkerServicesImpl.java:154) ~[nashorn.jar:?]
        at jdk.internal.dynalink.DynamicLinker.relink(DynamicLinker.java:253) ~[nashorn.jar:?]
        at jdk.nashorn.internal.scripts.Script$Recompilation$5$1018A$\^eval\_.init#L:24(<eval>:25) ~[?:?]
        at ch.vorburger.minecraft.storeys.japi.Callback$$NashornJavaAdapter.invoke(Unknown Source) ~[?:?]
        at ch.vorburger.minecraft.storeys.japi.impl.EventsImpl.lambda$whenCommand$0(EventsImpl.java:61) ~[EventsImpl.class:?]
        at ch.vorburger.minecraft.storeys.japi.util.CommandExceptions.doOrThrow(CommandExceptions.java:61) ~[CommandExceptions.class:?]
        at ch.vorburger.minecraft.storeys.japi.impl.EventsImpl.lambda$whenCommand$1(EventsImpl.java:61) ~[EventsImpl.class:?]
        at org.spongepowered.api.command.spec.CommandSpec.process(CommandSpec.java:388) ~[CommandSpec.class:1.12.2-7.3.1-RC391]
        at org.spongepowered.common.command.SpongeCommandDispatcher.process(SpongeCommandDispatcher.java:355) ~[SpongeCommandDispatcher.class:1.12.2-7.3.1-RC391]
        at org.spongepowered.common.command.SpongeCommandManager.process(SpongeCommandManager.java:360) ~[SpongeCommandManager.class:1.12.2-7.3.1-RC391]
        at net.minecraft.command.ServerCommandManager.func_71556_a(SourceFile:665) ~[dh.class:?]
        at net.minecraft.network.NetHandlerPlayServer.func_147361_d(SourceFile:855) ~[pa.class:?]
        at net.minecraft.network.NetHandlerPlayServer.func_147354_a(SourceFile:842) ~[pa.class:?]
        at net.minecraft.network.play.client.CPacketChatMessage.func_148833_a(SourceFile:37) ~[la.class:?]
        at net.minecraft.network.play.client.CPacketChatMessage.func_148833_a(SourceFile:9) ~[la.class:?]
        at org.spongepowered.common.event.tracking.phase.packet.PacketPhaseUtil.onProcessPacket(PacketPhaseUtil.java:219) ~[PacketPhaseUtil.class:1.12.2-7.3.1-RC391]
        at net.minecraft.network.PacketThreadUtil$1.redirect$zko000$impl$redirectToPhaseTracker(SourceFile:540) ~[hv$1.class:?]
        at net.minecraft.network.PacketThreadUtil$1.run(SourceFile:13) ~[hv$1.class:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) ~[?:1.8.0_312]
        at java.util.concurrent.FutureTask.run(FutureTask.java:266) ~[?:1.8.0_312]
        at net.minecraft.util.Util.func_181617_a(SourceFile:46) ~[h.class:?]
        at org.spongepowered.common.SpongeImplHooks.onUtilRunTask(SpongeImplHooks.java:310) ~[SpongeImplHooks.class:1.12.2-7.3.1-RC391]
        at net.minecraft.server.MinecraftServer.redirect$zjc000$onRun(SourceFile:4842) ~[MinecraftServer.class:?]
        at net.minecraft.server.MinecraftServer.func_71190_q(SourceFile:3090) ~[MinecraftServer.class:?]
        at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(SourceFile:349) ~[nz.class:?]
        at net.minecraft.server.MinecraftServer.func_71217_p(SourceFile:560) ~[MinecraftServer.class:?]
        at net.minecraft.server.MinecraftServer.run(SourceFile:464) ~[MinecraftServer.class:?]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_312]

(...)

[16:25:27 WARN] [ch.vorburger.minecraft.storeys.ScriptsLoader]: Failed to register /data/config/storeys-web/new-scripts/cd6a4345-bfa7-44a9-872f-1b907ecf2c95
java.lang.IllegalArgumentException: A plugin may not register multiple commands for the same alias ('demo')!
        at org.spongepowered.common.command.SpongeCommandManager.register(SpongeCommandManager.java:162) ~[SpongeCommandManager.class:1.12.2-7.3.1-RC391]
        at org.spongepowered.common.command.SpongeCommandManager.register(SpongeCommandManager.java:131) ~[SpongeCommandManager.class:1.12.2-7.3.1-RC391]
        at org.spongepowered.common.command.SpongeCommandManager.register(SpongeCommandManager.java:126) ~[SpongeCommandManager.class:1.12.2-7.3.1-RC391]
        at ch.vorburger.minecraft.storeys.japi.impl.EventsImpl.whenCommand(EventsImpl.java:65) ~[EventsImpl.class:?]
        at jdk.nashorn.internal.scripts.Script$Recompilation$7$981A$\^eval\_.init(<eval>:24) ~[?:?]
        at ch.vorburger.minecraft.storeys.japi.Script$$NashornJavaAdapter.init(Unknown Source) ~[?:?]
        at ch.vorburger.minecraft.storeys.japi.impl.Scripts.register(Scripts.java:44) ~[Scripts.class:?]
        at ch.vorburger.minecraft.storeys.ScriptsLoader.lambda$new$0(ScriptsLoader.java:64) ~[ScriptsLoader.class:?]
        at ch.vorburger.fswatch.QuietPeriodListener.lambda$onChange$0(QuietPeriodListener.java:60) ~[QuietPeriodListener.class:?]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_312]
[16:25:58 INFO] [ch.vorburger.minecraft.storeys.ScriptsLoader]: (Re-)loaded /data/config/storeys-web/new-scripts/7b864e4e-cea4-4236-ab86-668a130b207f