Клиент Minecraft Fabric не может загрузить мир, потому что «экран не может быть нулевым»JAVA

Программисты JAVA общаются здесь
Anonymous
Клиент Minecraft Fabric не может загрузить мир, потому что «экран не может быть нулевым»

Сообщение Anonymous »

Я пытаюсь создать мод на основе истории, используя ткань 1.21.5 с новейшей версией API. У меня есть поддельная кнопка «Одинопременный», которая отображается над обычной, и когда она нажимается, она выполняет экран под названием «Черный экран», и она просто временно, пока я не сделаю обычную заставку. Однако после 100 клещей я хочу, чтобы он загрузил мир. Потому что именно здесь мир попытался загрузить.package com.blob.rt;

import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.TitleScreen;
import net.minecraft.text.Text;

public class BlackScreen extends Screen {
private int ticks = 0;
private final int firstTextStart = 60;
private final int secondTextStart = 120;
private final int fadeDuration = 60;
private final int fadeToBlackStart = 180;
private boolean fadeOutStarted = false;
private boolean worldLoaded = false;
private boolean loadingStarted = false;

public BlackScreen() {
super(Text.literal(""));
}

@Override
public void tick() {
ticks++;

if (!loadingStarted && ticks >= 100) {
loadingStarted = true;
System.out.println("[RealityTerminated] Loading world 'MyWorld' from BlackScreen...");

MinecraftClient.getInstance().createIntegratedServerLoader().start("RealityTerminated", () -> {
System.out.println("[RealityTerminated] World 'MyWorld' load triggered from BlackScreen.");
worldLoaded = true;
MinecraftClient.getInstance().setScreen(new TitleScreen());
});
}
}

@Override
public void renderBackground(DrawContext context, int mouseX, int mouseY, float delta) {
context.fill(0, 0, this.width, this.height, 0xFF000000); // solid black background
}

@Override
public void render(DrawContext context, int mouseX, int mouseY, float delta) {
if (loadingStarted) {
return;
}

this.renderBackground(context, mouseX, mouseY, delta);

if (ticks >= firstTextStart) {
float progress = Math.min((ticks - firstTextStart) / (float) fadeDuration, 1.0f);
int alpha = (int) (progress * 255);
if (alpha > 0) {
int redColor = (alpha 0) {
int orangeColor = (alpha = fadeToBlackStart) {
fadeOutStarted = true;
}

if (fadeOutStarted) {
float fadeOutProgress = Math.min((ticks - fadeToBlackStart) / (float) fadeDuration, 1.0f);
int blackAlpha = (int) (fadeOutProgress * 255);
if (blackAlpha > 0) {
context.fill(0, 0, this.width, this.height, (blackAlpha
Когда игра запускается, и нажата поддельная кнопка «Одинопременный», она работает просто нормально, запуская временную заполнительную сцену, а затем начинает загружать мир после 100 клещей. Он достигает 100%, а затем вылетает, давая мне ошибку «Экран не может быть нулевым» < /p>
Вот журналы для порции ошибки: < /p>
[15:25:09] [Render thread/INFO]: Loaded 1373 recipes
[15:25:09] [Render thread/INFO]: Loaded 1484 advancements
[15:25:09] [Render thread/INFO]: Applied 0 biome modifications to 0 of 65 new biomes in 944.5 μs
[15:25:09] [Server thread/INFO]: Starting integrated minecraft server version 1.21.5
[15:25:09] [Server thread/INFO]: Generating keypair
[15:25:10] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld
[15:25:10] [Render thread/INFO]: Preparing spawn area: 0%
[15:25:10] [Render thread/INFO]: Preparing spawn area: 0%
[15:25:10] [Render thread/INFO]: Time elapsed: 662 ms
[15:25:10] [Server thread/INFO]: Changing view distance to 32, from 10
[15:25:10] [Server thread/INFO]: Changing simulation distance to 32, from 0
[15:25:11] [Render thread/ERROR]: Reported exception thrown!
net.minecraft.class_148: Ticking screen
at knot/net.minecraft.class_310.method_1574(class_310.java:1863) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_310.method_1523(class_310.java:1314) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_310.method_1514(class_310.java:936) [client-intermediary.jar:?]
at knot/net.minecraft.client.main.Main.main(Main.java:265) [client-intermediary.jar:?]
at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480) [fabric-loader-0.16.14.jar:?]
at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74) [fabric-loader-0.16.14.jar:?]
at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23) [fabric-loader-0.16.14.jar:?]
Caused by: java.lang.NullPointerException: Screen cannot be null
at java.base/java.util.Objects.requireNonNull(Objects.java:259) ~[?:?]
at knot/net.fabricmc.fabric.api.client.screen.v1.ScreenEvents.afterTick(ScreenEvents.java:157) ~[fabric-screen-api-v1-2.0.46+86c3a9f149-ee3a4c1c53d3bb27.jar:?]
at knot/net.minecraft.class_310.handler$znm000$fabric-screen-api-v1$afterScreenTick(class_310.java:5598) ~[client-intermediary.jar:?]
at knot/net.minecraft.class_310.method_1574(class_310.java:1859) ~[client-intermediary.jar:?]
... 6 more
[15:25:12] [Server thread/INFO]: Stopping server
[15:25:12] [Server thread/INFO]: Saving players
[15:25:12] [Server thread/INFO]: Saving worlds
[15:25:12] [Server thread/INFO]: Saving chunks for level 'ServerLevel[RealityTerminated]'/minecraft:overworld
[15:25:12] [Server thread/INFO]: Saving chunks for level 'ServerLevel[RealityTerminated]'/minecraft:the_nether
[15:25:12] [Server thread/INFO]: Saving chunks for level 'ServerLevel[RealityTerminated]'/minecraft:the_end
[15:25:12] [Server thread/INFO]: ThreadedAnvilChunkStorage (RealityTerminated): All chunks are saved
[15:25:12] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM-1): All chunks are saved
[15:25:12] [Server thread/INFO]: ThreadedAnvilChunkStorage (DIM1): All chunks are saved
[15:25:12] [Server thread/INFO]: ThreadedAnvilChunkStorage: All dimensions are saved
< /code>
У меня также есть отчет о сбое: < /p>
Time: 2025-06-13 15:25:12
Description: Ticking screen

java.lang.NullPointerException: Screen cannot be null
at java.base/java.util.Objects.requireNonNull(Objects.java:259)
at knot//net.fabricmc.fabric.api.client.screen.v1.ScreenEvents.afterTick(ScreenEvents.java:157)
at knot//net.minecraft.class_310.handler$znm000$fabric-screen-api-v1$afterScreenTick(class_310.java:5598)
at knot//net.minecraft.class_310.method_1574(class_310.java:1859)
at knot//net.minecraft.class_310.method_1523(class_310.java:1314)
at knot//net.minecraft.class_310.method_1514(class_310.java:936)
at knot//net.minecraft.client.main.Main.main(Main.java:265)
at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480)
at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)

A detailed walkthrough of the error, its code path and all known details is as follows:

Head
Thread: Render thread
Stacktrace:
at java.base/java.util.Objects.requireNonNull(Objects.java:259)
at knot//net.fabricmc.fabric.api.client.screen.v1.ScreenEvents.afterTick(ScreenEvents.java:157)
at knot//net.minecraft.class_310.handler$znm000$fabric-screen-api-v1$afterScreenTick(class_310.java:5598)

-- Affected screen --
Details:
Screen name: net.minecraft.class_3928
Stacktrace:
at knot//net.minecraft.class_310.method_1574(class_310.java:1859)
at knot//net.minecraft.class_310.method_1523(class_310.java:1314)
at knot//net.minecraft.class_310.method_1514(class_310.java:936)
at knot//net.minecraft.client.main.Main.main(Main.java:265)
at net.fabricmc.loader.impl.game.minecraft.MinecraftGameProvider.launch(MinecraftGameProvider.java:480)
at net.fabricmc.loader.impl.launch.knot.Knot.launch(Knot.java:74)
at net.fabricmc.loader.impl.launch.knot.KnotClient.main(KnotClient.java:23)
< /code>
Я пробовал много вещей, например, изготовление цикла, чтобы постоянно устанавливать экран на что -то, либо это настраиваемое «Dummyscreen», либо установление его на «TitleScreen». Я также попытался сделать свой собственный метод тикания для запуска World Loader, но он все еще возвращает «экран« не может быть нулевым ». Мир доходит до того, как я уже сказал, что на 100%, как я сказал, но затем «спасает мир» и полностью разбивается. Все, что нужно сделать, это загрузить мир. < /P>
Кто -нибудь знает, как это исправить? Я попытался установить экран для многих разных вещей, но он не сработает, несмотря ни на что. Спасибо: D

Подробнее здесь: https://stackoverflow.com/questions/796 ... ot-be-null

Вернуться в «JAVA»