Bassebombecraft

Bassebombecraft

18.5k Downloads

Starting mod at server side fails due to attempt to load client side class net/minecraft/client/entity/player/ClientPlayerEntity from server side class TargetedEntitiesEventHandler

Closed this issue ยท 3 comments

commented

Issue observed by @WenXin20 in #693.
Link: https://gist.github.com/WenXin20/13f006631a8559d9975ba412c4ccb2ea

Stacktrace:

java.lang.RuntimeException: Attempted to load class net/minecraft/client/entity/player/ClientPlayerEntity for invalid dist DEDICATED_SERVER
	at net.minecraftforge.fml.loading.RuntimeDistCleaner.processClass(RuntimeDistCleaner.java:71) ~[forge-1.15.2-31.1.39.jar:31.1] {}
	at cpw.mods.modlauncher.serviceapi.ILaunchPluginService.processClass(ILaunchPluginService.java:103) ~[modlauncher-5.0.0-milestone.4.jar:5.0.0-milestone.4+67+b1a340b] {}
	at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:85) ~[modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:115) ~[modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.TransformingClassLoader$DelegatedClassLoader.findClass(TransformingClassLoader.java:239) ~[modlauncher-5.0.0-milestone.4.jar:?] {}
	at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:126) ~[modlauncher-5.0.0-milestone.4.jar:?] {re:classloading,re:classloading}
	at cpw.mods.modlauncher.TransformingClassLoader.loadClass(TransformingClassLoader.java:96) ~[modlauncher-5.0.0-milestone.4.jar:?] {re:classloading,re:classloading}
	at java.lang.ClassLoader.loadClass(ClassLoader.java:352) ~[?:1.8.0_242] {}
	at bassebombecraft.event.entity.target.TargetedEntitiesEventHandler.handleLivingDeathEvent(TargetedEntitiesEventHandler.java:32) ~[?:1.15.2-1.42] {re:classloading}
	at net.minecraftforge.eventbus.ASMEventHandler_135_TargetedEntitiesEventHandler_handleLivingDeathEvent_LivingDeathEvent.invoke(.dynamic) ~[?:?] {}
	at net.minecraftforge.eventbus.ASMEventHandler.invoke(ASMEventHandler.java:80) ~[eventbus-2.0.0-milestone.1-service.jar:?] {}
	at net.minecraftforge.eventbus.EventBus.post(EventBus.java:258) ~[eventbus-2.0.0-milestone.1-service.jar:?] {}
	at net.minecraftforge.common.ForgeHooks.onLivingDeath(ForgeHooks.java:349) ~[?:?] {re:mixin,re:classloading}
	at net.minecraft.entity.LivingEntity.func_70645_a(LivingEntity.java:1077) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:apotheosis:apothshieldblock,xf:fml:apotheosis:apothpotiondmg,pl:mixin:APP:lithium.mixins.json:entity.block_cache.MixinLivingEntity,pl:mixin:APP:lithium.mixins.json:avoid_allocations.MixinLivingEntity,pl:mixin:APP:performant.mixins.json:entity.LivingEntityMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.entity.LivingEntity.func_70097_a(LivingEntity.java:954) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:apotheosis:apothshieldblock,xf:fml:apotheosis:apothpotiondmg,pl:mixin:APP:lithium.mixins.json:entity.block_cache.MixinLivingEntity,pl:mixin:APP:lithium.mixins.json:avoid_allocations.MixinLivingEntity,pl:mixin:APP:performant.mixins.json:entity.LivingEntityMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.entity.passive.BatEntity.func_70097_a(SourceFile:212) ~[?:?] {re:mixin,re:classloading}
	at net.minecraft.entity.Entity.func_70044_A(Entity.java:435) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:quark:generic-update-hook,xf:fml:quark:override-collision,pl:mixin:APP:lithium.mixins.json:entity.simple_world_border_collisions.MixinEntity,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.entity.Entity.func_70030_z(Entity.java:405) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:quark:generic-update-hook,xf:fml:quark:override-collision,pl:mixin:APP:lithium.mixins.json:entity.simple_world_border_collisions.MixinEntity,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.entity.LivingEntity.func_70030_z(LivingEntity.java:281) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:apotheosis:apothshieldblock,xf:fml:apotheosis:apothpotiondmg,pl:mixin:APP:lithium.mixins.json:entity.block_cache.MixinLivingEntity,pl:mixin:APP:lithium.mixins.json:avoid_allocations.MixinLivingEntity,pl:mixin:APP:performant.mixins.json:entity.LivingEntityMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.entity.MobEntity.func_70030_z(MobEntity.java:207) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:performant.mixins.json:entity.MobEntityMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.entity.Entity.func_70071_h_(Entity.java:368) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:quark:generic-update-hook,xf:fml:quark:override-collision,pl:mixin:APP:lithium.mixins.json:entity.simple_world_border_collisions.MixinEntity,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.entity.LivingEntity.func_70071_h_(LivingEntity.java:2024) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:apotheosis:apothshieldblock,xf:fml:apotheosis:apothpotiondmg,pl:mixin:APP:lithium.mixins.json:entity.block_cache.MixinLivingEntity,pl:mixin:APP:lithium.mixins.json:avoid_allocations.MixinLivingEntity,pl:mixin:APP:performant.mixins.json:entity.LivingEntityMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.entity.MobEntity.func_70071_h_(MobEntity.java:274) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:performant.mixins.json:entity.MobEntityMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.entity.passive.BatEntity.func_70071_h_(SourceFile:117) ~[?:?] {re:mixin,re:classloading}
	at net.minecraft.world.server.ServerWorld.func_217479_a(ServerWorld.java:600) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:quark:change-sleeping-player-count,xf:fml:quark:add-rave-hook,pl:mixin:APP:assets/fruittrees/fruittrees.mixins.json:MixinServerWorld,pl:mixin:APP:lithium.mixins.json:avoid_allocations.MixinServerWorld,pl:mixin:APP:lithium.mixins.json:fast_tick_scheduler.MixinServerWorld,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.world.World.func_217390_a(World.java:536) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,pl:mixin:APP:lithium.mixins.json:avoid_allocations.MixinWorld,pl:mixin:APP:performant.mixins.json:world.WorldMixin,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.world.server.ServerWorld.func_72835_b(ServerWorld.java:401) ~[?:?] {re:mixin,pl:accesstransformer:B,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:quark:change-sleeping-player-count,xf:fml:quark:add-rave-hook,pl:mixin:APP:assets/fruittrees/fruittrees.mixins.json:MixinServerWorld,pl:mixin:APP:lithium.mixins.json:avoid_allocations.MixinServerWorld,pl:mixin:APP:lithium.mixins.json:fast_tick_scheduler.MixinServerWorld,pl:mixin:A,pl:runtimedistcleaner:A}
	at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:849) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:330) ~[?:?] {re:classloading,pl:accesstransformer:B}
	at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:784) ~[?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:637) [?:?] {re:classloading,pl:accesstransformer:B,pl:runtimedistcleaner:A}
	at java.lang.Thread.run(Thread.java:748) [?:1.8.0_242] {}

commented

Resolved by commit 5e845ed.
Problem was caused by class loading of the Minecraft in PlayerUtils, due to the import: import net.minecraft.client.Minecraft;
Solution was to refactor the client side specific player utility methods to a dedicated class ClientPlayerUtils. ANd hopefully this class isn't loaded in a server.

commented

explain this but in toddler terms

commented

@k00lk4t Didn't see your comment, until today, sorry for the later answer.
This was an issue with a version of the mod for MC version 1.15.
At that point in time the mod failed to start if you used it in a Minecraft server.