Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 16 additions & 4 deletions patches/net/minecraft/client/Minecraft.java.patch
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,14 @@
this.selfTest();
}

@@ -668,6 +_,7 @@
}

private void onResourceLoadFinished(@Nullable Minecraft.GameLoadCookie p_299896_) {
+ net.neoforged.neoforge.client.ClientHooks.fireResourceLoadFinishedEvent(!this.gameLoadFinished);
if (!this.gameLoadFinished) {
this.gameLoadFinished = true;
this.onGameLoadFinished(p_299896_);
@@ -704,6 +_,8 @@
runnable = () -> this.setScreen(screen);
}
Expand Down Expand Up @@ -311,11 +319,13 @@
if (!itemstack.isEmpty()
&& this.gameMode.useItem(this.player, interactionhand) instanceof InteractionResult.Success interactionresult$success1) {
if (interactionresult$success1.swingSource() == InteractionResult.SwingSource.CLIENT) {
@@ -1675,6 +_,8 @@
@@ -1675,6 +_,10 @@

public void tick() {
this.clientTickCount++;
+ net.neoforged.neoforge.client.ClientHooks.fireClientTickPre();
+ if (this.gameLoadFinished) {
+ net.neoforged.neoforge.client.ClientHooks.fireClientTickPre();
+ }
+
if (this.level != null && !this.pause) {
this.level.tickRateManager().tick();
Expand All @@ -336,12 +346,14 @@
}

profilerfiller.popPush("animateTick");
@@ -1810,6 +_,8 @@
@@ -1810,6 +_,10 @@
profilerfiller.popPush("keyboard");
this.keyboardHandler.tick();
profilerfiller.pop();
+
+ net.neoforged.neoforge.client.ClientHooks.fireClientTickPost();
+ if (this.gameLoadFinished) {
+ net.neoforged.neoforge.client.ClientHooks.fireClientTickPost();
+ }
}

private boolean isLevelRunningNormally() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,7 @@
import net.neoforged.neoforge.client.event.ClientPauseChangeEvent;
import net.neoforged.neoforge.client.event.ClientPlayerChangeGameTypeEvent;
import net.neoforged.neoforge.client.event.ClientPlayerNetworkEvent;
import net.neoforged.neoforge.client.event.ClientResourceLoadFinishedEvent;
import net.neoforged.neoforge.client.event.ClientTickEvent;
import net.neoforged.neoforge.client.event.ComputeFovModifierEvent;
import net.neoforged.neoforge.client.event.ConfigureMainRenderTargetEvent;
Expand Down Expand Up @@ -1052,6 +1053,13 @@ public static void fireRenderFramePost(DeltaTracker partialTick) {
RenderSystem.ensurePipelineModifiersEmpty();
}

/**
* Fires {@link ClientResourceLoadFinishedEvent}.
*/
public static void fireResourceLoadFinishedEvent(boolean initial) {
NeoForge.EVENT_BUS.post(new ClientResourceLoadFinishedEvent(initial));
}

/**
* Fires {@link ClientTickEvent.Pre}. Called from the head of {@link Minecraft#tick()}.
*/
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* Copyright (c) NeoForged and contributors
* SPDX-License-Identifier: LGPL-2.1-only
*/

package net.neoforged.neoforge.client.event;

import net.neoforged.bus.api.Event;

/**
* Fires after the client has completed loading or reloading its resources
* successfully.
* <p>
* When the client first starts up, this event is fired after the resource
* load, but before the client has set up the initial screens, and before
* we emit the first {@link ClientTickEvent}.
*/
public class ClientResourceLoadFinishedEvent extends Event {
private final boolean initial;

public ClientResourceLoadFinishedEvent(boolean initial) {
this.initial = initial;
}

/**
* @return True if the reload that completed was the initial resource load of the client.
*/
public boolean isInitial() {
return initial;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@
* Base class of the two client tick events.
* <p>
* For the event that fires once per frame (instead of per tick), see {@link RenderFrameEvent}.
* <p>
* Note that tick events will only start being emitted once the first {@link ClientResourceLoadFinishedEvent resource reload has completed}.
*
* @see ClientTickEvent.Pre
* @see ClientTickEvent.Post
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@
import net.neoforged.fml.loading.EarlyLoadingScreenController;
import net.neoforged.neoforge.client.config.NeoForgeClientConfig;
import net.neoforged.neoforge.client.gui.LoadingErrorScreen;
import net.neoforged.neoforge.common.NeoForge;
import net.neoforged.neoforge.internal.CommonModLoader;
import net.neoforged.neoforge.logging.CrashReportExtender;
import net.neoforged.neoforge.resource.ResourcePackLoader;
Expand Down Expand Up @@ -128,9 +127,6 @@ public static Runnable completeModLoading(Runnable initialScreensTask) {
return () -> Minecraft.getInstance().setScreen(new LoadingErrorScreen(error.getIssues(), dumpedLocation, () -> {}));
}

// We can finally start the game eventbus up
NeoForge.EVENT_BUS.start();

if (!warnings.isEmpty()) {
if (showWarnings) {
return () -> Minecraft.getInstance().setScreen(new LoadingErrorScreen(warnings, null, initialScreensTask));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import net.neoforged.fml.event.lifecycle.InterModProcessEvent;
import net.neoforged.fml.loading.FMLEnvironment;
import net.neoforged.fml.loading.FMLPaths;
import net.neoforged.neoforge.common.NeoForge;
import net.neoforged.neoforge.network.registration.NetworkRegistry;
import net.neoforged.neoforge.registries.GameData;
import net.neoforged.neoforge.registries.RegistryManager;
Expand Down Expand Up @@ -63,6 +64,8 @@ protected static void begin(Runnable periodicTask, boolean datagen) {
ConfigTracker.INSTANCE.loadConfigs(ModConfig.Type.COMMON, FMLPaths.CONFIGDIR.get());
});
}

NeoForge.EVENT_BUS.start();
}

protected static void load(Executor syncExecutor, Executor parallelExecutor) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
import net.neoforged.fml.ModLoadingException;
import net.neoforged.fml.ModLoadingIssue;
import net.neoforged.fml.ModWorkManager;
import net.neoforged.neoforge.common.NeoForge;
import net.neoforged.neoforge.internal.CommonModLoader;
import net.neoforged.neoforge.logging.CrashReportExtender;
import net.neoforged.neoforge.server.LanguageHook;
Expand Down Expand Up @@ -44,7 +43,6 @@ public static void load() {
LOGGER.warn(Logging.LOADING, "{} [{}]", issue.translationKey(), issue.translationArgs());
}
}
NeoForge.EVENT_BUS.start();
}

public static boolean hasErrors() {
Expand Down