Canary

Canary

6M Downloads

Clean Forge dedicated server won't start with Canary if mixin.world enabled

claviger opened this issue ยท 11 comments

commented

Version

canary-mc1.19.2-0.0.10.jar
forge-1.19.2-43.1.52
minecraft 1.19.2

Reproduction Steps

  1. Install a clean Forge server with java -jar forge-1.19.2-43.1.52-installer.jar --installServer, then create eula.txt
  2. Copy canary-mc1.19.2-0.0.10.jar into mods
  3. Start the server with ./run.sh

Crash Report File

This is a log of the complete output from starting a server.

canary.log

Something in Canary is causing it to try to load the renderer on a dedicated server (which does not exist on a dedicated server.) Obviously a dedicated server is one of the primary places one would want to run Canary.

Minecraft Save

n/a

Additional Information

Crash doesn't happen without Canary. In addition, adding 'mixin.world=false' to the canary.properties will avoid the crash, so it's something in the world section.

Crash doesn't happen on a fabric server with Lithium. Crash also doesn't happen with Radium instead of canary, but Radium has its own set of problems.

commented

This is also occurring with the exact same circumstances for me. Fresh Forge 1.19.2-43.1.53 server. Won't run if Canary is installed in the mods folder. Runs fine without.

commented

i will look into that.

commented

I tested that build yesterday and it still appears to exhibit the same error. Here's the error log.

commented

can you please test this build?

commented

fixed in the coming version.

commented

The issue is fixed in both 0.1.1 for MC 1.19.2 and 0.0.10 for MC 1.18.2.
I hope you have a good day!

commented

You should change it to BlockBehaviour.UPDATE_SHAPE_ORDER

commented

You are correct, i don't know how i don't noticed that, Thanks for your help!

commented

I tried to build the mod with this change, but got this error on server startup. Maybe there's something with my Dev environment or something, but I couldn't start the server.

[16Nov2022 22:44:21.458] [main/FATAL] [mixin/]: Mixin apply failed canary.mixins.json:world.block_entity_ticking.sleeping.LevelChunkMixin -> net.minecraft.world.level.chunk.LevelChunk: org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException Critical injection failure: @Inject annotation on setBlockEntityTickingOrder could not find any targets matching 'lambda$updateBlockEntityTicker$7' in net.minecraft.world.level.chunk.LevelChunk. Using refmap canary.refmap.json [PREINJECT Applicator Phase -> canary.mixins.json:world.block_entity_ticking.sleeping.LevelChunkMixin -> Prepare Injections ->  -> handler$bbj000$setBlockEntityTickingOrder(Lnet/minecraft/world/level/block/entity/BlockEntity;Lnet/minecraft/world/level/block/entity/BlockEntityTicker;Lnet/minecraft/core/BlockPos;Ljava/lang/Object;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable;Lnet/minecraft/world/level/block/entity/TickingBlockEntity;Ljava/lang/Object;)V -> Parse]
org.spongepowered.asm.mixin.injection.throwables.InvalidInjectionException: Critical injection failure: @Inject annotation on setBlockEntityTickingOrder could not find any targets matching 'lambda$updateBlockEntityTicker$7' in net.minecraft.world.level.chunk.LevelChunk. Using refmap canary.refmap.json [PREINJECT Applicator Phase -> canary.mixins.json:world.block_entity_ticking.sleeping.LevelChunkMixin -> Prepare Injections ->  -> handler$bbj000$setBlockEntityTickingOrder(Lnet/minecraft/world/level/block/entity/BlockEntity;Lnet/minecraft/world/level/block/entity/BlockEntityTicker;Lnet/minecraft/core/BlockPos;Ljava/lang/Object;Lorg/spongepowered/asm/mixin/injection/callback/CallbackInfoReturnable;Lnet/minecraft/world/level/block/entity/TickingBlockEntity;Ljava/lang/Object;)V -> Parse]
	at org.spongepowered.asm.mixin.injection.struct.InjectionInfo.validateTargets(InjectionInfo.java:656) ~[mixin-0.8.5.jar%2363!/:0.8.5+Jenkins-b310.git-155314e6e91465dad727e621a569906a410cd6f4]
commented

In the dev environment you should use the regular method names, but when you come to use it in the client you should use SRG names instead.

in LevelChunkMixin you should replace lambda$updateBlockEntityTicker$7 with m_187960_
and in common.entity.EntityClassGroup you should replace canCollideWith with m_7337_ and canBeCollidedWith with m_5829_.

The version will released now, Thanks for your help!