Jump to content

Crash when loading custom GUI


Recommended Posts

Caused by: java.lang.NullPointerException: Cannot read field "level" because "this.minecraft" is null

This is my first big error when coding. I looked it up, but there are a bunch of references to Dawncraft and not enough to figure out what was going wrong. I found this, but it involves a command and my GUI only opens when you shift + right-click while holding an item. They fixed it by not calling it with a command, but I am not using a command. Here's the render of my menu, which is the only part that changed between it working and not:
 

@Override
public void render(@Nonnull PoseStack mstack, int mouseX, int mouseY, float partialTicks) {
int midx = this.width / 2;
int midy = this.height / 2;

this.renderBackground(mstack);
drawCenteredString(mstack, font, I18n.get("config.shape_tool"), midx, 4, 0xC3D1D8);

Utils.renderImage(midx - 12, midy, 20, 20, "textures/gui/plus.png", mstack);
addRenderableWidget(new Button(midx - 12, midy, 10, 10, Component.translatable(""), this::increaseax));
Utils.renderImage(midx + 12, midy, 20, 20, "textures/gui/minus.png", mstack);
addRenderableWidget(new Button(midx + 12, midy, 10, 10, Component.translatable(""), this::decreaseax));
drawCenteredString(mstack, font, String.valueOf(shapetoolax), midx, midy + 10, 0xC3D1D8);

super.render(mstack, mouseX, mouseY, partialTicks);
}

Utils.renderImage is this:
 

public static void renderImage(int x, int y, int width, int height, String img, PoseStack mstack) {
RenderSystem.setShaderColor(1, 1, 1, 1);
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
RenderSystem.setShaderTexture(0, new ResourceLocation(PNegative.MODID, img));
blit(mstack, x, y, 0, 0, width, height, width, height);
RenderSystem.disableBlend();
}

I have used it before and it has worked, so it can't be a problem. 

Link to comment
Share on other sites

Your question is pretty much unanswerable. You don't show all the relevant code and don't even post the full error message.

 

Don't post code incomplete snippets in the forum. Put a minimal project on github that reproduces your problem that we can look at and run for ourselves.

Or just your full project with instructutions on how to reproduce the issue and a pointer to relevant code.

 

Guess (I shouldn't have to guess):

Quote

Caused by: java.lang.NullPointerException: Cannot read field "level" because "this.minecraft" is null

This error looks like you caching something in a static field that has now become invalid. Or otherwise reusing an object that is no longer valid.

Don't put stuff in static fields unless it is effectively immutable.

Doing so will at best give you weird bugs. At worst it will cause memory leaks and data corruption.

Boilerplate:

If you don't post your logs/debug.log we can't help you. For curseforge you need to enable the forge debug.log in its minecraft settings. You should also post your crash report if you have one.

If there is no error in the log file and you don't have a crash report then post the launcher_log.txt from the minecraft folder. Again for curseforge this will be in your curseforge/minecraft/Install

Large files should be posted to a file sharing site like https://gist.github.com  You should also read the support forum sticky post.

Link to comment
Share on other sites

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

    • Yeah, Minecraft.getInstance().player only works on the client side. Is there a way to get the player from the NetworkEvent.Context?
    • I have tried multimc, prism, and curseforge. They all crash without creating any logs.
    • I play with friends a server with mods, funny enough im the only one getting the error. Link to the crash error:https://pastebin.com/Qgn57EXZ
    • I have a keybind where you spit like a llama. On singleplayer both the entity and particle spawn and it's sound is played (https://youtu.be/bpxnFDuWw_I). But on a server only the entity is spawned and nothing else (https://youtu.be/veVQ4zSqnIA), no particles nor sound. Upon starting the server I have noticed this error in the window (https://postimg.cc/K3KDCpMY), don't know if it's relevant. The server works fine but when I want to spit the following pops up in the serverlog '''Attempted to load class net/minecraft/client/player/LocalPlayer for invalid dist DEDICATED_SERVER''' (https://postimg.cc/LqTDP1Sm). I have prepared the following code of the Server-to-Client packet class which I have made to spawn mentioned particles and sounds. package mett.palemannie.tabakmod.networking.packets; import net.minecraft.client.Minecraft; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.network.FriendlyByteBuf; import net.minecraft.sounds.SoundEvents; import net.minecraft.util.RandomSource; import net.minecraft.world.entity.player.Player; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; import net.minecraftforge.network.NetworkEvent; import java.util.function.Supplier; public class SpuckEffektS2CPacket { public SpuckEffektS2CPacket(){ } public SpuckEffektS2CPacket(FriendlyByteBuf buf){ } public void toBytes(FriendlyByteBuf buf){ } public boolean handle(Supplier<NetworkEvent.Context> supplier){ NetworkEvent.Context context = supplier.get(); context.enqueueWork(()-> { Player player = Minecraft.getInstance().player; //Attempted to load class net/minecraft/client/player/LocalPlayer for invalid dist DEDICATED_SERVER Level level = Minecraft.getInstance().level; RandomSource rdm = RandomSource.create(); float r = rdm.nextInt(80, 120) / 100f; player.playSound(SoundEvents.LLAMA_SPIT, 1f, r); Vec3 MausPos = player.getEyePosition(); Vec3 SchauWinkel = player.getLookAngle(); level.addParticle(ParticleTypes.SPIT, true, MausPos.x, MausPos.y, MausPos.z, SchauWinkel.x/4, SchauWinkel.y/4, SchauWinkel.z/4); }); return true; } } Is there an alternative to Minecraft.getInstance().player;? dumb question. I have looked at other mods (MrCrayfish's Gun Mod, Ars Noveau, Apotheosis) on how they handle such server-to-client sound and particles but I haven't got any wiser.    
    • i keep getting error on minecraft when im trying to play modpack. When i go to logs folder i got this. 
  • Topics

×
×
  • Create New...

Important Information

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