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
14 stars 10 forks source link

On Join Error #401

Closed edewit closed 1 year ago

edewit commented 2 years ago

Sometimes on joining the server I get the following stack trace:

[08:12:50 ERROR] [ch.vorburger.minecraft.storeys.japi.impl.EventsImpl]: whenPlayerJoins() callback failure
java.lang.IllegalArgumentException: No entity named: Piggy
    at ch.vorburger.minecraft.storeys.japi.impl.actions.Narrator.lambda$narrate$0(Narrator.java:56) ~[Narrator.class:?]
    at java.util.Optional.orElseThrow(Optional.java:290) ~[?:1.8.0_242]
    at ch.vorburger.minecraft.storeys.japi.impl.actions.Narrator.narrate(Narrator.java:56) ~[Narrator.class:?]
    at ch.vorburger.minecraft.storeys.japi.impl.actions.NarrateAction.execute(NarrateAction.java:61) ~[NarrateAction.class:?]
    at ch.vorburger.minecraft.storeys.japi.impl.actions.ActionPlayer.play(ActionPlayer.java:36) ~[ActionPlayer.class:?]
    at ch.vorburger.minecraft.storeys.japi.impl.EventsImpl.invokeCallback(EventsImpl.java:105) ~[EventsImpl.class:?]
    at ch.vorburger.minecraft.storeys.japi.impl.EventsImpl.lambda$whenPlayerJoins$3(EventsImpl.java:82) ~[EventsImpl.class:?]
    at ch.vorburger.minecraft.storeys.japi.impl.events.EventService.onPlayerJoin(EventService.java:67) ~[EventService.class:?]
    at org.spongepowered.common.event.listener.JoinListener_EventService_onPlayerJoin6.handle(Unknown Source) ~[?:?]
    at org.spongepowered.common.event.RegisteredListener.handle(RegisteredListener.java:97) ~[RegisteredListener.class:1.12.2-7.4.7]
    at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:435) ~[SpongeEventManager.class:1.12.2-7.4.7]
    at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:480) ~[SpongeEventManager.class:1.12.2-7.4.7]
    at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:467) ~[SpongeEventManager.class:1.12.2-7.4.7]
    at org.spongepowered.common.SpongeImpl.postEvent(SpongeImpl.java:249) ~[SpongeImpl.class:1.12.2-7.4.7]
    at org.spongepowered.common.util.NetworkUtil.initializeConnectionToPlayer(NetworkUtil.java:384) ~[NetworkUtil.class:1.12.2-7.4.7]
    at net.minecraft.server.management.PlayerList.func_72355_a(SourceFile:2640) ~[pl.class:?]
    at net.minecraft.server.network.NetHandlerLoginServer.func_147326_c(SourceFile:119) ~[pc.class:?]
    at net.minecraft.server.network.NetHandlerLoginServer.func_73660_a(SourceFile:66) ~[pc.class:?]
    at net.minecraft.network.NetworkManager.func_74428_b(SourceFile:231) ~[gw.class:?]
    at net.minecraft.network.NetworkSystem.func_151269_c(SourceFile:187) ~[oz.class:?]
    at net.minecraft.server.MinecraftServer.func_71190_q(SourceFile:3166) ~[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_242]

It's strange because "Piggy" does exist, could it be that it's to far away?

vorburger commented 1 year ago

@edewit reminded me today that this is a test timing issue which happens because Piggy is already talking

vorburger commented 1 year ago

I suspect the problem we that we (currently, this may change in #400; or a planned new PR with a subset of it) have Mineflayer with two tests, and if they are fast, the second one starts while piggy is still narrating from the whenPlayerJoins() of the first one.

@edewit mentioned another way to solve it could have been by logging in to the server with mineflayer for the whole test, not just for each test case.