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
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 atitle
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.