Jump to content

1.20.1 Crash "Cannot invoke "net.minecraft.client.player.LocalPlayer.m_6117_()" because "this.f_91074_" is null"


Recommended Posts

Posted (edited)

Forge 47.2.17

I am tearing my hair out over this one. I am having an issue where something in my modded instance is causing the mod resources to fail at loading. Each time this happens, I get a notification of "Resource reload failed," and some of the time it crashes as well. When it does not crash, my Mods screen shows only Minecraft and Forge. When I next launch, all of my resourcepacks are reset to default. I have been troubleshooting this for literal days now so I may get at this out of order, but I'll do my best. Firstly, here is the crash report and the associated latest.log: https://gist.github.com/katubug/04d946d2879dbb9d6abaf1cb923ebca0

Initially it was only happening about once every ten or so launches, which made it insanely hard to troubleshoot. I googled the issue and only found one relevant post, which stated that it was due to a mod being incompatible with recent forge updates. The post suggested doing a binary search for the offending mod. Hard to do with an inconsistent crash, so I gave up for a bit.

Then I found a way to replicate it reliably - I used a mod called Resource Pack Overrides to set my game to apply all my resource packs by default. Now that it was happening every launch, I did the binary search and I THOUGHT I'd found the offending files: Dramatic Doors and Dynamic View. I removed them both and everything was fine...until I zipped up the pack and sent it to my sibling. They still got the resource reload failed and the crash. At this point I am still launching fine on my PC, but on theirs the exact same pack gives this error.

I also googled "resource reload failed," and many of the posts attributed this error to a resourcepack being too large, or Optifine. I do not have optifine, and the issue occurred periodically even without resource packs applied. That brought me to believe that perhaps there was something in the mod_resources which was causing the error. My sibling's PC is less powerful than mine, so that could explain why they're crashing but I'm not.

I have been combing the logs, thought I'd isolated the incident to being related to the Supplementaries mod or KubeJS - but in both cases I now believe they were just providing error information after something else went wrong. Here is a crash and latest.log of an instance with Supplementaries removed: https://gist.github.com/katubug/effe28a9a4d36f7378fd8161d6495741

It seems as if the game is trying to load mod resources multiple times and then breaking. I am at my wits' end. I have ended up reporting this to so many places who ended up not being the culprit, lol. Please, someone tell me you have a fix, a lead, anything. Thank you.

Edited by HeyKatu
Posted

I removed the Rubidium addon as it apparently doesn't work with Embeddium.

I disabled the Embeddium mods and Oculus and indeed, the crash has stopped. Added them back in to be sure, crashed again. Removed the other mods with Embeddium and Oculus in - crashed. Or, well, not always a full crash, sometimes just the "resource reload failed."

Tested with just Oculus, no Embeddium, no crash. I'll have to check with my other users to see if it fixes theirs as well, but this may be the solution! Fingers crossed.

Posted

After discussing this with the Embeddium dev for a while, it seems that this probably isn't the culprit.

They said: "what I suspect is happening is that something else goes wrong internally and closes the resource pack zip file, without printing an error.

then later the next subsystem to access the resource pack crashes with the "zip file closed" exception.

note that that is just an educated guess, based on the fact that the crash makes no sense without a preceding error."

I mentioned the Dramatic Doors thing fixing it for me, and they then said "ok yeah if you can remove two distinct mods like that (embeddium/dramatic doors) and they both solve the problem, I'd guess it's related to load order."

Doing more testing now.

Posted (edited)

I had disabled and reenabled a few mods to find the crash.

Then activated everything - all mods, all resourcepacks - to replicate the crash to be certain... it didn't crash. So it's definitely not embeddium and frankly I have no idea what is even going on.

Embeddium dev said that suggests it's not even a load order issue, it's a race condition. Help is still very welcome.

Edited by HeyKatu
Posted (edited)

Still having the crash, still trying to troubleshoot. I managed to get it to only "Resource Reload Failed" as opposed to the full CTD, and had a look at the mods list. Most said they were "process_imc," but a handful said "error." Forge included. This occurs on 47.2.0 as well as 47.2.17. I reverted to an older version to see if it would help.

Here's that list: https://pastebin.com/Ha68X99Q

I don't know what they all have in common, but maybe someone smarter than me has an idea. I can confirm that every time the Resource Reload Failed occurs, it's the same mods erroring.

I've tried putting them in their own instance to test, but so far no crash. I'm also testing the main instance without them/adding them in one at a time. However, since the crash is alleviated simply by disabling apparently any mod, this is guesswork at best.

I will pay literal real world money to anyone who can fix this. I am losing my mind - I can't release a modpack with this crash active, and I have no other projects atm.

Edited by HeyKatu
Posted

So, hopefully a final update: the crash hasn't occurred in a while. I'm not 100% sure why, but I think it might have been an issue with the mod Merchant Markers. The reason I think that is because someone in their issue tracker reported this same problem (although they could have been mistaken, they didn't seem super knowledgeable). And the crash hasn't occurred since I removed the mod.

I feel it might still be too early to call it, but I wanted to update in case anyone finds this on google.

  • 2 months later...
Posted

I have had this issue off and on, and it's been a headache. Disabled merchant markers and i was able to load into game. I enabled merchant markers again but this time set show_on_minimap = false and I was able to load in. Disabling showing the markers on the minimap might be a fix if you want to use merchant markers.

Posted

I also just noticed that an update was released for Xaero's world map and minimap, I'm going to install them and re-enable that setting and see what happens.

  • 2 months later...
Posted

For people coming across this issue: 

 

I solved it for my Modpack by disabling the Holiday hats feature in the config file of "Thermal Series". 

Apparently it is incompatible with some mods like "Creeper Overhaul"

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • It is 1.12.2 - I have no idea if there is a 1.12 pack
    • Okay, but does the modpack works with 1.12 or just with 1.12.2, because I need the Forge client specifically for Minecraft 1.12, not 1.12.2
    • Version 1.19 - Forge 41.0.63 I want to create a wolf entity that I can ride, so far it seems to be working, but the problem is that when I get on the wolf, I can’t control it. I then discovered that the issue is that the server doesn’t detect that I’m riding the wolf, so I’m struggling with synchronization. However, it seems to not be working properly. As I understand it, the server receives the packet but doesn’t register it correctly. I’m a bit new to Java, and I’ll try to provide all the relevant code and prints *The comments and prints are translated by chatgpt since they were originally in Spanish* Thank you very much in advance No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. No player is mounted, or the passenger is not a player. MountableWolfEntity package com.vals.valscraft.entity; import com.vals.valscraft.network.MountSyncPacket; import com.vals.valscraft.network.NetworkHandler; import net.minecraft.client.Minecraft; import net.minecraft.network.syncher.EntityDataAccessor; import net.minecraft.network.syncher.EntityDataSerializers; import net.minecraft.network.syncher.SynchedEntityData; import net.minecraft.server.MinecraftServer; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.Mob; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; import net.minecraft.world.entity.animal.Wolf; import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.Entity; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import net.minecraftforge.event.TickEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.network.PacketDistributor; public class MountableWolfEntity extends Wolf { private boolean hasSaddle; private static final EntityDataAccessor<Byte> DATA_ID_FLAGS = SynchedEntityData.defineId(MountableWolfEntity.class, EntityDataSerializers.BYTE); public MountableWolfEntity(EntityType<? extends Wolf> type, Level level) { super(type, level); this.hasSaddle = false; } @Override protected void defineSynchedData() { super.defineSynchedData(); this.entityData.define(DATA_ID_FLAGS, (byte)0); } public static AttributeSupplier.Builder createAttributes() { return Wolf.createAttributes() .add(Attributes.MAX_HEALTH, 20.0) .add(Attributes.MOVEMENT_SPEED, 0.3); } @Override public InteractionResult mobInteract(Player player, InteractionHand hand) { ItemStack itemstack = player.getItemInHand(hand); if (itemstack.getItem() == Items.SADDLE && !this.hasSaddle()) { if (!player.isCreative()) { itemstack.shrink(1); } this.setSaddle(true); return InteractionResult.SUCCESS; } else if (!level.isClientSide && this.hasSaddle()) { player.startRiding(this); MountSyncPacket packet = new MountSyncPacket(true); // 'true' means the player is mounted NetworkHandler.CHANNEL.sendToServer(packet); // Ensure the server handles the packet return InteractionResult.SUCCESS; } return InteractionResult.PASS; } @Override public void travel(Vec3 travelVector) { if (this.isVehicle() && this.getControllingPassenger() instanceof Player) { System.out.println("The wolf has a passenger."); System.out.println("The passenger is a player."); Player player = (Player) this.getControllingPassenger(); // Ensure the player is the controller this.setYRot(player.getYRot()); this.yRotO = this.getYRot(); this.setXRot(player.getXRot() * 0.5F); this.setRot(this.getYRot(), this.getXRot()); this.yBodyRot = this.getYRot(); this.yHeadRot = this.yBodyRot; float forward = player.zza; float strafe = player.xxa; if (forward <= 0.0F) { forward *= 0.25F; } this.flyingSpeed = this.getSpeed() * 0.1F; this.setSpeed((float) this.getAttributeValue(Attributes.MOVEMENT_SPEED) * 1.5F); this.setDeltaMovement(new Vec3(strafe, travelVector.y, forward).scale(this.getSpeed())); this.calculateEntityAnimation(this, false); } else { // The wolf does not have a passenger or the passenger is not a player System.out.println("No player is mounted, or the passenger is not a player."); super.travel(travelVector); } } public boolean hasSaddle() { return this.hasSaddle; } public void setSaddle(boolean hasSaddle) { this.hasSaddle = hasSaddle; } @Override protected void dropEquipment() { super.dropEquipment(); if (this.hasSaddle()) { this.spawnAtLocation(Items.SADDLE); this.setSaddle(false); } } @SubscribeEvent public static void onServerTick(TickEvent.ServerTickEvent event) { if (event.phase == TickEvent.Phase.START) { MinecraftServer server = net.minecraftforge.server.ServerLifecycleHooks.getCurrentServer(); if (server != null) { for (ServerPlayer player : server.getPlayerList().getPlayers()) { if (player.isPassenger() && player.getVehicle() instanceof MountableWolfEntity) { MountableWolfEntity wolf = (MountableWolfEntity) player.getVehicle(); System.out.println("Tick: " + player.getName().getString() + " is correctly mounted on " + wolf); } } } } } private boolean lastMountedState = false; @Override public void tick() { super.tick(); if (!this.level.isClientSide) { // Only on the server boolean isMounted = this.isVehicle() && this.getControllingPassenger() instanceof Player; // Only print if the state changed if (isMounted != lastMountedState) { if (isMounted) { Player player = (Player) this.getControllingPassenger(); // Verify the passenger is a player System.out.println("Server: Player " + player.getName().getString() + " is now mounted."); } else { System.out.println("Server: The wolf no longer has a passenger."); } lastMountedState = isMounted; } } } @Override public void addPassenger(Entity passenger) { super.addPassenger(passenger); if (passenger instanceof Player) { Player player = (Player) passenger; if (!this.level.isClientSide && player instanceof ServerPlayer) { // Send the packet to the server to indicate the player is mounted NetworkHandler.CHANNEL.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MountSyncPacket(true)); } } } @Override public void removePassenger(Entity passenger) { super.removePassenger(passenger); if (passenger instanceof Player) { Player player = (Player) passenger; if (!this.level.isClientSide && player instanceof ServerPlayer) { // Send the packet to the server to indicate the player is no longer mounted NetworkHandler.CHANNEL.send(PacketDistributor.PLAYER.with(() -> (ServerPlayer) player), new MountSyncPacket(false)); } } } @Override public boolean isControlledByLocalInstance() { Entity entity = this.getControllingPassenger(); return entity instanceof Player; } @Override public void positionRider(Entity passenger) { if (this.hasPassenger(passenger)) { double xOffset = Math.cos(Math.toRadians(this.getYRot() + 90)) * 0.4; double zOffset = Math.sin(Math.toRadians(this.getYRot() + 90)) * 0.4; passenger.setPos(this.getX() + xOffset, this.getY() + this.getPassengersRidingOffset() + passenger.getMyRidingOffset(), this.getZ() + zOffset); } } } MountSyncPacket package com.vals.valscraft.network; import com.vals.valscraft.entity.MountableWolfEntity; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.server.level.ServerLevel; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class MountSyncPacket { private final boolean isMounted; public MountSyncPacket(boolean isMounted) { this.isMounted = isMounted; } public void encode(FriendlyByteBuf buffer) { buffer.writeBoolean(isMounted); } public static MountSyncPacket decode(FriendlyByteBuf buffer) { return new MountSyncPacket(buffer.readBoolean()); } public void handle(NetworkEvent.Context context) { context.enqueueWork(() -> { ServerPlayer player = context.getSender(); // Get the player from the context if (player != null) { // Verifies if the player has dismounted if (!isMounted) { Entity vehicle = player.getVehicle(); if (vehicle instanceof MountableWolfEntity wolf) { // Logic to remove the player as a passenger wolf.removePassenger(player); System.out.println("Server: Player " + player.getName().getString() + " is no longer mounted."); } } } }); context.setPacketHandled(true); // Marks the packet as handled } } networkHandler package com.vals.valscraft.network; import com.vals.valscraft.valscraft; import net.minecraft.resources.ResourceLocation; import net.minecraftforge.network.NetworkRegistry; import net.minecraftforge.network.simple.SimpleChannel; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class NetworkHandler { private static final String PROTOCOL_VERSION = "1"; public static final SimpleChannel CHANNEL = NetworkRegistry.newSimpleChannel( new ResourceLocation(valscraft.MODID, "main"), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals ); public static void init() { int packetId = 0; // Register the mount synchronization packet CHANNEL.registerMessage( packetId++, MountSyncPacket.class, MountSyncPacket::encode, MountSyncPacket::decode, (msg, context) -> msg.handle(context.get()) // Get the context with context.get() ); } }  
    • Do you use features of inventory profiles next (ipnext) or is there a change without it?
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.