SpongePowered / Sponge

The SpongeAPI implementation targeting vanilla Minecraft and 3rd party platforms.
MIT License
389 stars 211 forks source link

Cannot apply entity archetypes #1959

Closed pie-flavor closed 5 years ago

pie-flavor commented 6 years ago
Optional<Entity> entity2 = entity1.createArchetype().apply(entity1.getLocation());
[17:49:41 ERROR] [Sponge]: Could not pass ClickInventoryEvent$Primary$Impl to Plugin{id=armorstandtools, name=flavor.pie.armorstandtools.ArmorStandTools, version=1.0-SNAPSHOT, description=Tools for manipulating armor stands., authors=[pie_flavor], source=mods\ArmorStandTools-1.0-SNAPSHOT.jar}
java.util.NoSuchElementException: Could not retrieve value for key 'sponge:spawn_type'
        at org.spongepowered.api.event.cause.EventContext.require(EventContext.java:116) ~[EventContext.class:1.12.2-7.1.0-BETA-74]
        at org.spongepowered.common.entity.SpongeEntityArchetype.apply(SpongeEntityArchetype.java:112) ~[SpongeEntityArchetype.class:1.12.2-7.1.0-BETA-74]
        at flavor.pie.armorstandtools.GuiListener.onClick(GuiListener.kt:69) ~[GuiListener.class:?]
        at org.spongepowered.common.event.listener.ClickInventoryEventListener_GuiListener_onClick12.handle(Unknown Source) ~[?:?]
        at org.spongepowered.common.event.RegisteredListener.handle(RegisteredListener.java:95) ~[RegisteredListener.class:1.12.2-7.1.0-BETA-74]
        at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:423) [SpongeEventManager.class:1.12.2-7.1.0-BETA-74]
        at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:459) [SpongeEventManager.class:1.12.2-7.1.0-BETA-74]
        at org.spongepowered.common.event.SpongeEventManager.post(SpongeEventManager.java:446) [SpongeEventManager.class:1.12.2-7.1.0-BETA-74]
        at org.spongepowered.common.SpongeImpl.postEvent(SpongeImpl.java:217) [SpongeImpl.class:1.12.2-7.1.0-BETA-74]
        at org.spongepowered.common.event.tracking.phase.packet.BasicInventoryPacketState.unwind(BasicInventoryPacketState.java:205) [BasicInventoryPacketState.class:1.12.2-7.1.0-BETA-74]
        at org.spongepowered.common.event.tracking.phase.packet.BasicInventoryPacketState.unwind(BasicInventoryPacketState.java:58) [BasicInventoryPacketState.class:1.12.2-7.1.0-BETA-74]
        at org.spongepowered.common.event.tracking.PhaseTracker.completePhase(PhaseTracker.java:213) [PhaseTracker.class:1.12.2-7.1.0-BETA-74]
        at org.spongepowered.common.event.tracking.PhaseContext.close(PhaseContext.java:439) [PhaseContext.class:1.12.2-7.1.0-BETA-74]
        at org.spongepowered.common.network.PacketUtil.onProcessPacket(PacketUtil.java:150) [PacketUtil.class:1.12.2-7.1.0-BETA-74]
        at net.minecraft.network.PacketThreadUtil$1.redirect$onProcessPacket$zkm000(SourceFile:539) [hv$1.class:?]
        at net.minecraft.network.PacketThreadUtil$1.run(SourceFile:13) [hv$1.class:?]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_144]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_144]
        at net.minecraft.util.Util.func_181617_a(SourceFile:46) [h.class:?]
        at org.spongepowered.common.SpongeImplHooks.onUtilRunTask(SpongeImplHooks.java:288) [SpongeImplHooks.class:1.12.2-7.1.0-BETA-74]
        at net.minecraft.server.MinecraftServer.redirect$onRun$zjb000(SourceFile:4147) [MinecraftServer.class:?]
        at net.minecraft.server.MinecraftServer.func_71190_q(SourceFile:1581) [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(Unknown Source) [?:1.8.0_144]

However this works just fine:

Optional<Entity> entity2 = entity1.createArchetype().toSnapshot(entity1.getLocation()).restore();
ImMorpheus commented 5 years ago

Optional entity2 = entity1.createArchetype().apply(entity1.getLocation());

Worked fine. Not able to reproduce on SF with SC updated to https://github.com/SpongePowered/SpongeCommon/commit/8e159170290c6d26bd477c5cf78bd205f2493825