Я пытаюсь создать мод на основе истории, используя ткань 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