From 8443262e390c691d48491f341767395fea9987f3 Mon Sep 17 00:00:00 2001
From: Paint_Ninja
Date: Fri, 10 Oct 2025 14:57:38 +0100
Subject: [PATCH] Improve event javadocs based on community feedback, apply
jSpecify to more events
---
.../minecraftforge/fml/ModLoadingContext.java | 8 +++-
.../fml/event/IModBusEvent.java | 10 ++++-
.../event/AddGuiOverlayLayersEvent.java | 4 +-
.../client/event/ClientChatEvent.java | 7 +++-
.../client/event/ClientChatReceivedEvent.java | 8 ++--
.../client/event/ClientPauseChangeEvent.java | 2 +
.../ClientPlayerChangeGameTypeEvent.java | 4 --
.../client/event/ComputeFovModifierEvent.java | 4 +-
.../client/event/ContainerScreenEvent.java | 4 --
.../client/event/EntityRenderersEvent.java | 5 +++
.../client/event/InputEvent.java | 2 +
.../client/event/ModelEvent.java | 5 ++-
.../client/event/RecipesUpdatedEvent.java | 2 -
.../event/RegisterClientCommandsEvent.java | 9 ++--
.../RegisterClientReloadListenersEvent.java | 2 +
...rClientTooltipComponentFactoriesEvent.java | 2 +
.../event/RegisterColorHandlersEvent.java | 3 ++
.../RegisterDimensionSpecialEffectsEvent.java | 2 +
.../RegisterEntitySpectatorShadersEvent.java | 2 +
.../event/RegisterItemDecorationsEvent.java | 2 +
.../event/RegisterKeyMappingsEvent.java | 2 +
.../event/RegisterNamedRenderTypesEvent.java | 2 +
.../event/RegisterParticleProvidersEvent.java | 2 +
.../event/RegisterPresetEditorsEvent.java | 2 +-
...egisterTextureAtlasSpriteLoadersEvent.java | 2 +
.../client/event/RenderHighlightEvent.java | 4 +-
.../client/event/RenderNameTagEvent.java | 2 +-
.../client/event/ScreenEvent.java | 41 +++++++++----------
.../client/event/ScreenshotEvent.java | 8 ++--
.../client/event/TextureStitchEvent.java | 2 +
.../client/event/ToastAddEvent.java | 2 +-
.../client/event/ViewportEvent.java | 11 ++---
.../event/sound/SoundEngineLoadEvent.java | 2 +
.../common/EventBusMigrationHelper.java | 13 ++++--
.../minecraftforge/common/MinecraftForge.java | 16 ++++++--
.../RegisterCapabilitiesEvent.java | 12 +++---
.../event/AddPackFindersEvent.java | 2 +
.../BuildCreativeModeTabContentsEvent.java | 2 +
.../event/DifficultyChangeEvent.java | 4 +-
.../minecraftforge/event/GrindstoneEvent.java | 6 +--
.../event/ModMismatchEvent.java | 3 +-
.../event/PlayLevelSoundEvent.java | 8 ++--
.../event/brewing/PotionBrewEvent.java | 10 +----
.../entity/EntityAttributeCreationEvent.java | 2 +
.../EntityAttributeModificationEvent.java | 2 +
.../event/entity/EntityEvent.java | 2 +-
.../event/entity/EntityJoinLevelEvent.java | 2 +-
.../entity/SpawnPlacementRegisterEvent.java | 2 +
.../entity/living/BabyEntitySpawnEvent.java | 6 +--
.../entity/living/LivingAttackEvent.java | 2 +-
.../event/entity/living/LivingDropsEvent.java | 2 +-
.../living/LivingEntityUseItemEvent.java | 18 ++++----
.../event/entity/living/LivingEvent.java | 2 +-
.../event/entity/living/LivingFallEvent.java | 4 +-
.../event/entity/living/MobEffectEvent.java | 12 +++---
.../event/entity/living/ZombieEvent.java | 30 +++++++-------
.../event/entity/player/AdvancementEvent.java | 5 +--
.../entity/player/AttackEntityEvent.java | 2 +-
.../event/entity/player/CriticalHitEvent.java | 10 +++--
.../entity/player/PlayerContainerEvent.java | 2 +
.../event/entity/player/PlayerEvent.java | 8 ++--
.../event/entity/player/PlayerXpEvent.java | 9 +---
.../player/SleepingLocationCheckEvent.java | 9 ++--
.../registries/DataPackRegistryEvent.java | 1 +
.../registries/NewRegistryEvent.java | 2 +
.../registries/RegisterEvent.java | 3 +-
66 files changed, 217 insertions(+), 165 deletions(-)
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingContext.java b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingContext.java
index 980c7c43a3..32d2ed044a 100644
--- a/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingContext.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/ModLoadingContext.java
@@ -19,7 +19,13 @@ public class ModLoadingContext {
private Object languageExtension;
/**
- * @deprecated Use the context provided by your language loader in your mod's constructor
+ * @deprecated Use the context provided by your language loader in your mod's constructor. Example for Java mods: {@snippet :
+ * @Mod("examplemod")
+ * public final class ExampleMod {
+ * public ExampleMod(FMLJavaModLoadingContext context) {
+ * // Use context from the param instead of FMLJavaModLoadingContext.get() or ModLoadingContext.get()
+ * }
+ * }}
*/
@Deprecated(forRemoval = true, since="1.21.1")
public static ModLoadingContext get() {
diff --git a/fmlcore/src/main/java/net/minecraftforge/fml/event/IModBusEvent.java b/fmlcore/src/main/java/net/minecraftforge/fml/event/IModBusEvent.java
index e57a55d72f..5a7df4535b 100644
--- a/fmlcore/src/main/java/net/minecraftforge/fml/event/IModBusEvent.java
+++ b/fmlcore/src/main/java/net/minecraftforge/fml/event/IModBusEvent.java
@@ -8,16 +8,22 @@ package net.minecraftforge.fml.event;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.InheritableEvent;
+import org.jspecify.annotations.NonNull;
/**
- * Marker interface for events dispatched on the ModLifecycle event bus instead of the primary event bus
+ * Marker interface for mod lifecycle events dispatched on the
+ * {@linkplain net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext#getModBusGroup() mod BusGroup} instead
+ * of the {@linkplain BusGroup#DEFAULT default BusGroup}.
+ *
+ * @apiNote Each mod gets its own unique mod BusGroup instance, obtained from the mod loading context. Most events
+ * should go on the default BusGroup.
*/
public interface IModBusEvent extends InheritableEvent {
/**
* @param modEventBusGroup Obtained from {@link net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext#getModBusGroup()} or your language provider's equivalent.
* @param eventClass The event type you want to get the associated bus for.
*/
- static EventBus getBus(BusGroup modEventBusGroup, Class eventClass) {
+ static @NonNull EventBus<@NonNull T> getBus(@NonNull BusGroup modEventBusGroup, @NonNull Class eventClass) {
// Do not copy! Temporary solution until the FML rewrite is complete. May throw in future
// without prior notice.
//
diff --git a/src/main/java/net/minecraftforge/client/event/AddGuiOverlayLayersEvent.java b/src/main/java/net/minecraftforge/client/event/AddGuiOverlayLayersEvent.java
index 4b6fbb3cf4..63620b878c 100644
--- a/src/main/java/net/minecraftforge/client/event/AddGuiOverlayLayersEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/AddGuiOverlayLayersEvent.java
@@ -29,9 +29,7 @@ public record AddGuiOverlayLayersEvent(ForgeLayeredDraw getLayeredDraw) implemen
@ApiStatus.Internal
public AddGuiOverlayLayersEvent {}
- /**
- * @deprecated {@link AddGuiOverlayLayersEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly.
- */
+ /** @deprecated {@link AddGuiOverlayLayersEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/client/event/ClientChatEvent.java b/src/main/java/net/minecraftforge/client/event/ClientChatEvent.java
index f50080d77a..a1d7f911c2 100644
--- a/src/main/java/net/minecraftforge/client/event/ClientChatEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/ClientChatEvent.java
@@ -12,16 +12,19 @@ import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.event.characteristic.Cancellable;
import net.minecraftforge.fml.LogicalSide;
import org.jetbrains.annotations.ApiStatus;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
/**
* Fired when the client is about to send a chat message to the server.
*
- * This event is {@linkplain Cancelable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the chat message will not be sent to the server.
*
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
**/
+@NullMarked
public final class ClientChatEvent extends MutableEvent implements Cancellable {
public static final CancellableEventBus BUS = CancellableEventBus.create(ClientChatEvent.class);
@@ -47,7 +50,7 @@ public final class ClientChatEvent extends MutableEvent implements Cancellable {
*
* @param message the new message to be sent
*/
- public void setMessage(String message) {
+ public void setMessage(@Nullable String message) {
this.message = Strings.nullToEmpty(message);
}
diff --git a/src/main/java/net/minecraftforge/client/event/ClientChatReceivedEvent.java b/src/main/java/net/minecraftforge/client/event/ClientChatReceivedEvent.java
index 82202118ab..76d38005f5 100644
--- a/src/main/java/net/minecraftforge/client/event/ClientChatReceivedEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/ClientChatReceivedEvent.java
@@ -22,7 +22,7 @@ import java.util.UUID;
* Fired when a chat message is received on the client.
* This can be used for filtering and detecting messages with specific words or phrases, and suppressing them.
*
- * This event is {@linkplain Cancelable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the message is not displayed in the chat message window.
*
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
@@ -89,7 +89,7 @@ public sealed class ClientChatReceivedEvent extends MutableEvent implements Canc
/**
* Fired when a player chat message is received on the client.
*
- *
This event is {@linkplain Cancelable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the message is not displayed in the chat message window.
*
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
@@ -120,8 +120,8 @@ public sealed class ClientChatReceivedEvent extends MutableEvent implements Canc
/**
* Fired when a system message is received on the client.
*
- * @Deprecated Mojang made ChatType a registry, which isn't always accessible when the System messages are sent.
- * So moved to it's own event. {@link SystemMessageReceivedEvent}
+ * @deprecated Mojang made ChatType a registry, which isn't always accessible when the System messages are sent.
+ * So moved to its own event. {@link SystemMessageReceivedEvent}
*/
@Deprecated(forRemoval = true, since = "1.21.1")
public static final class System extends ClientChatReceivedEvent {
diff --git a/src/main/java/net/minecraftforge/client/event/ClientPauseChangeEvent.java b/src/main/java/net/minecraftforge/client/event/ClientPauseChangeEvent.java
index 88e0bf11b9..01f6aa3b99 100644
--- a/src/main/java/net/minecraftforge/client/event/ClientPauseChangeEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/ClientPauseChangeEvent.java
@@ -12,6 +12,7 @@ import net.minecraftforge.eventbus.api.event.InheritableEvent;
import net.minecraftforge.eventbus.api.event.RecordEvent;
import net.minecraftforge.eventbus.api.event.characteristic.Cancellable;
import net.minecraftforge.fml.LogicalSide;
+import org.jspecify.annotations.NullMarked;
/**
* Fired when pause is about to change
@@ -21,6 +22,7 @@ import net.minecraftforge.fml.LogicalSide;
* @see ClientPauseChangeEvent.Pre
* @see ClientPauseChangeEvent.Post
*/
+@NullMarked
public sealed interface ClientPauseChangeEvent extends InheritableEvent {
EventBus BUS = EventBus.create(ClientPauseChangeEvent.class);
diff --git a/src/main/java/net/minecraftforge/client/event/ClientPlayerChangeGameTypeEvent.java b/src/main/java/net/minecraftforge/client/event/ClientPlayerChangeGameTypeEvent.java
index 2371d1b16a..f1d5dfbca9 100644
--- a/src/main/java/net/minecraftforge/client/event/ClientPlayerChangeGameTypeEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/ClientPlayerChangeGameTypeEvent.java
@@ -7,10 +7,8 @@ package net.minecraftforge.client.event;
import net.minecraft.client.multiplayer.PlayerInfo;
import net.minecraft.world.level.GameType;
-import net.minecraftforge.common.util.HasResult;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.RecordEvent;
-import net.minecraftforge.eventbus.api.event.characteristic.Cancellable;
import net.minecraftforge.fml.LogicalSide;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@@ -18,8 +16,6 @@ import org.jspecify.annotations.NullMarked;
/**
* Fired when the client player is notified of a change of {@link GameType} from the server.
*
- * This event is not {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
- *
* This event is fired only on the {@linkplain LogicalSide#CLIENT logical client}.
*
* @param getInfo the client player information
diff --git a/src/main/java/net/minecraftforge/client/event/ComputeFovModifierEvent.java b/src/main/java/net/minecraftforge/client/event/ComputeFovModifierEvent.java
index 3311e5b973..a4fe86f4c0 100644
--- a/src/main/java/net/minecraftforge/client/event/ComputeFovModifierEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/ComputeFovModifierEvent.java
@@ -12,17 +12,17 @@ import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.fml.LogicalSide;
import org.jetbrains.annotations.ApiStatus;
+import org.jspecify.annotations.NullMarked;
/**
* Fired after the field of vision (FOV) modifier for the player is calculated to allow developers to adjust it further.
*
- * This event is not {@linkplain Cancelable cancellable}, and does not {@linkplain HasResult have a result}.
- *
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*
* @see ViewportEvent.ComputeFov
*/
+@NullMarked
public final class ComputeFovModifierEvent extends MutableEvent {
public static final EventBus BUS = EventBus.create(ComputeFovModifierEvent.class);
diff --git a/src/main/java/net/minecraftforge/client/event/ContainerScreenEvent.java b/src/main/java/net/minecraftforge/client/event/ContainerScreenEvent.java
index 8a0fd0fe0d..7f0c06fd2f 100644
--- a/src/main/java/net/minecraftforge/client/event/ContainerScreenEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/ContainerScreenEvent.java
@@ -62,8 +62,6 @@ public sealed interface ContainerScreenEvent {
* This can be used for rendering elements that must be above other screen elements, but
* below tooltips and the dragged stack, such as slot or item stack specific overlays.
*
- * This event is not {@linkplain Cancelable cancellable}, and does not {@linkplain HasResult have a result}.
- *
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*/
@@ -83,8 +81,6 @@ public sealed interface ContainerScreenEvent {
* Fired after the container screen's background layer and elements are drawn.
* This can be used for rendering new background elements.
*
- * This event is not {@linkplain Cancelable cancellable}, and does not {@linkplain HasResult have a result}.
- *
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*/
diff --git a/src/main/java/net/minecraftforge/client/event/EntityRenderersEvent.java b/src/main/java/net/minecraftforge/client/event/EntityRenderersEvent.java
index 4989ae0db4..d0320f40cb 100644
--- a/src/main/java/net/minecraftforge/client/event/EntityRenderersEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/EntityRenderersEvent.java
@@ -39,6 +39,7 @@ import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.event.RecordEvent;
import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.LogicalSide;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
import org.jspecify.annotations.NullMarked;
@@ -69,6 +70,7 @@ public sealed interface EntityRenderersEvent {
record RegisterLayerDefinitions() implements SelfDestructing, RecordEvent, EntityRenderersEvent {
public static final EventBus BUS = EventBus.create(RegisterLayerDefinitions.class);
+ /** @deprecated {@link EntityRenderersEvent.RegisterLayerDefinitions} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
@@ -102,6 +104,7 @@ public sealed interface EntityRenderersEvent {
record RegisterRenderers() implements SelfDestructing, RecordEvent, EntityRenderersEvent {
public static final EventBus BUS = EventBus.create(RegisterRenderers.class);
+ /** @deprecated {@link RegisterRenderers} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
@@ -140,6 +143,7 @@ public sealed interface EntityRenderersEvent {
final class AddLayers extends MutableEvent implements EntityRenderersEvent {
public static final EventBus BUS = EventBus.create(AddLayers.class);
+ /** @deprecated {@link EntityRenderersEvent.AddLayers} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
@@ -231,6 +235,7 @@ public sealed interface EntityRenderersEvent {
final class CreateSkullModels extends MutableEvent implements EntityRenderersEvent {
public static final EventBus BUS = EventBus.create(CreateSkullModels.class);
+ /** @deprecated {@link EntityRenderersEvent.CreateSkullModels} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/client/event/InputEvent.java b/src/main/java/net/minecraftforge/client/event/InputEvent.java
index f9760b050a..6f0d49e6b2 100644
--- a/src/main/java/net/minecraftforge/client/event/InputEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/InputEvent.java
@@ -17,6 +17,7 @@ import net.minecraftforge.eventbus.api.event.RecordEvent;
import net.minecraftforge.eventbus.api.event.characteristic.Cancellable;
import net.minecraftforge.fml.LogicalSide;
import org.jetbrains.annotations.ApiStatus;
+import org.jspecify.annotations.NullMarked;
import org.lwjgl.glfw.GLFW;
/**
@@ -127,6 +128,7 @@ public sealed interface InputEvent {
* @param getMouseX the X position of the mouse cursor
* @param getMouseY the Y position of the mouse cursor
*/
+ @NullMarked
record MouseScrollingEvent(
double getDeltaX,
double getDeltaY,
diff --git a/src/main/java/net/minecraftforge/client/event/ModelEvent.java b/src/main/java/net/minecraftforge/client/event/ModelEvent.java
index 32f34e959e..f16ed0b8c1 100644
--- a/src/main/java/net/minecraftforge/client/event/ModelEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/ModelEvent.java
@@ -18,7 +18,6 @@ import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.event.RecordEvent;
import net.minecraftforge.fml.LogicalSide;
-import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.event.IModBusEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@@ -51,6 +50,7 @@ public sealed interface ModelEvent {
implements RecordEvent, ModelEvent {
public static final EventBus BUS = EventBus.create(ModifyBakingResult.class);
+ /** @deprecated {@link ModelEvent.ModifyBakingResult} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
@@ -75,6 +75,7 @@ public sealed interface ModelEvent {
implements RecordEvent, ModelEvent {
public static final EventBus BUS = EventBus.create(BakingCompleted.class);
+ /** @deprecated {@link ModelEvent.BakingCompleted} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
@@ -95,6 +96,7 @@ public sealed interface ModelEvent {
final class RegisterModelStateDefinitions extends MutableEvent implements ModelEvent {
public static final EventBus BUS = EventBus.create(RegisterModelStateDefinitions.class);
+ /** @deprecated {@link ModelEvent.RegisterModelStateDefinitions} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
@@ -130,6 +132,7 @@ public sealed interface ModelEvent {
final class RegisterGeometryLoaders extends MutableEvent implements ModelEvent {
public static final EventBus BUS = EventBus.create(RegisterGeometryLoaders.class);
+ /** @deprecated {@link ModelEvent.RegisterGeometryLoaders} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/client/event/RecipesUpdatedEvent.java b/src/main/java/net/minecraftforge/client/event/RecipesUpdatedEvent.java
index 5ea735b9e2..7870b40c92 100644
--- a/src/main/java/net/minecraftforge/client/event/RecipesUpdatedEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RecipesUpdatedEvent.java
@@ -15,8 +15,6 @@ import org.jetbrains.annotations.ApiStatus;
/**
* Fired when the {@link ClientRecipeBook} has updated information about recipes from the server to the client.
*
- * This event is not {@linkplain Cancelable cancellable}, and does not {@linkplain HasResult have a result}.
- *
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterClientCommandsEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterClientCommandsEvent.java
index 8a7fa95a13..ce3ec91be5 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterClientCommandsEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterClientCommandsEvent.java
@@ -6,14 +6,13 @@
package net.minecraftforge.client.event;
import com.mojang.brigadier.CommandDispatcher;
+import com.mojang.brigadier.context.CommandContext;
import net.minecraft.commands.CommandBuildContext;
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.arguments.ObjectiveArgument;
import net.minecraft.commands.arguments.ResourceLocationArgument;
-import net.minecraftforge.common.util.HasResult;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.RecordEvent;
-import net.minecraftforge.eventbus.api.event.characteristic.Cancellable;
import net.minecraftforge.fml.LogicalSide;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@@ -23,14 +22,12 @@ import org.jspecify.annotations.NullMarked;
*
* Some command arguments behave differently for the client commands dispatcher:
*
- * - {@link ResourceLocationArgument#getAdvancement(com.mojang.brigadier.context.CommandContext, String)} only returns
- * advancements that are shown on the advancements screen.
+ *
- {@link ResourceLocationArgument#getId(CommandContext, String)} only returns advancements that are shown on
+ * the advancements screen.
*
- {@link ObjectiveArgument#getObjective(com.mojang.brigadier.context.CommandContext, String)} only returns
* objectives that are displayed to the player.
*
*
- * This event is not {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
- *
* This event is fired only on the {@linkplain LogicalSide#CLIENT logical client}.
*
* @param getDispatcher the command dispatcher for registering commands to be executed on the client
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterClientReloadListenersEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterClientReloadListenersEvent.java
index 6fa2ec91fa..8e9fdb51bb 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterClientReloadListenersEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterClientReloadListenersEvent.java
@@ -14,6 +14,7 @@ import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.LogicalSide;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@@ -29,6 +30,7 @@ import org.jspecify.annotations.NullMarked;
public final class RegisterClientReloadListenersEvent extends MutableEvent implements SelfDestructing {
public static final EventBus BUS = EventBus.create(RegisterClientReloadListenersEvent.class);
+ /** @deprecated {@link RegisterClientReloadListenersEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterClientTooltipComponentFactoriesEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterClientTooltipComponentFactoriesEvent.java
index 4aec91b02c..79d590d97c 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterClientTooltipComponentFactoriesEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterClientTooltipComponentFactoriesEvent.java
@@ -12,6 +12,7 @@ import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.LogicalSide;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@@ -28,6 +29,7 @@ import java.util.function.Function;
public final class RegisterClientTooltipComponentFactoriesEvent extends MutableEvent implements SelfDestructing {
public static final EventBus BUS = EventBus.create(RegisterClientTooltipComponentFactoriesEvent.class);
+ /** @deprecated {@link RegisterClientTooltipComponentFactoriesEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterColorHandlersEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterColorHandlersEvent.java
index 059349f5d8..0aaee87643 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterColorHandlersEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterColorHandlersEvent.java
@@ -15,6 +15,7 @@ import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.event.RecordEvent;
import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.LogicalSide;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@@ -38,6 +39,7 @@ public sealed interface RegisterColorHandlersEvent {
record Block(BlockColors getBlockColors) implements RecordEvent, RegisterColorHandlersEvent {
public static final EventBus BUS = EventBus.create(Block.class);
+ /** @deprecated {@link RegisterColorHandlersEvent.Block} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
@@ -75,6 +77,7 @@ public sealed interface RegisterColorHandlersEvent {
final class ColorResolvers extends MutableEvent implements SelfDestructing, RegisterColorHandlersEvent {
public static final EventBus BUS = EventBus.create(ColorResolvers.class);
+ /** @deprecated {@link RegisterColorHandlersEvent.ColorResolvers} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterDimensionSpecialEffectsEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterDimensionSpecialEffectsEvent.java
index 6cd413e252..76dc85f81f 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterDimensionSpecialEffectsEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterDimensionSpecialEffectsEvent.java
@@ -12,6 +12,7 @@ import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.LogicalSide;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@@ -26,6 +27,7 @@ import java.util.Map;
public final class RegisterDimensionSpecialEffectsEvent extends MutableEvent implements SelfDestructing {
public static final EventBus BUS = EventBus.create(RegisterDimensionSpecialEffectsEvent.class);
+ /** @deprecated {@link RegisterDimensionSpecialEffectsEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterEntitySpectatorShadersEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterEntitySpectatorShadersEvent.java
index 72878f28ed..4418d15305 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterEntitySpectatorShadersEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterEntitySpectatorShadersEvent.java
@@ -12,6 +12,7 @@ import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.LogicalSide;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@@ -27,6 +28,7 @@ import java.util.Map;
public final class RegisterEntitySpectatorShadersEvent extends MutableEvent implements SelfDestructing {
public static final EventBus BUS = EventBus.create(RegisterEntitySpectatorShadersEvent.class);
+ /** @deprecated {@link RegisterEntitySpectatorShadersEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterItemDecorationsEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterItemDecorationsEvent.java
index f38a56d6c0..3ce3087478 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterItemDecorationsEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterItemDecorationsEvent.java
@@ -14,6 +14,7 @@ import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.LogicalSide;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@@ -30,6 +31,7 @@ import java.util.Map;
public final class RegisterItemDecorationsEvent extends MutableEvent implements SelfDestructing {
public static final EventBus BUS = EventBus.create(RegisterItemDecorationsEvent.class);
+ /** @deprecated {@link RegisterItemDecorationsEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterKeyMappingsEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterKeyMappingsEvent.java
index 9357ecd9e4..528aec2184 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterKeyMappingsEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterKeyMappingsEvent.java
@@ -12,6 +12,7 @@ import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.LogicalSide;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.apache.commons.lang3.ArrayUtils;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@@ -25,6 +26,7 @@ import org.jspecify.annotations.NullMarked;
public final class RegisterKeyMappingsEvent extends MutableEvent implements SelfDestructing {
public static final EventBus BUS = EventBus.create(RegisterKeyMappingsEvent.class);
+ /** @deprecated {@link RegisterKeyMappingsEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterNamedRenderTypesEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterNamedRenderTypesEvent.java
index cecda824fc..3b015881ab 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterNamedRenderTypesEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterNamedRenderTypesEvent.java
@@ -16,6 +16,7 @@ import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.LogicalSide;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.jetbrains.annotations.ApiStatus;
import java.util.Map;
@@ -28,6 +29,7 @@ import java.util.Map;
public final class RegisterNamedRenderTypesEvent extends MutableEvent implements SelfDestructing {
public static final EventBus BUS = EventBus.create(RegisterNamedRenderTypesEvent.class);
+ /** @deprecated {@link RegisterNamedRenderTypesEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterParticleProvidersEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterParticleProvidersEvent.java
index d5e3ea6da9..24f4c7d768 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterParticleProvidersEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterParticleProvidersEvent.java
@@ -13,6 +13,7 @@ import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.fml.LogicalSide;
+import net.minecraftforge.fml.event.IModBusEvent;
import net.minecraftforge.registries.RegisterEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@@ -29,6 +30,7 @@ import org.jspecify.annotations.NullMarked;
public final class RegisterParticleProvidersEvent extends MutableEvent {
public static EventBus BUS = EventBus.create(RegisterParticleProvidersEvent.class);
+ /** @deprecated {@link RegisterParticleProvidersEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterPresetEditorsEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterPresetEditorsEvent.java
index e5a97e6bc9..485f55cc1a 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterPresetEditorsEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterPresetEditorsEvent.java
@@ -25,7 +25,7 @@ import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
/**
* Event for registering {@link PresetEditor} screen factories for world presets.
*
- * This event is fired on the {@linkplain FMLJavaModLoadingContext#getModEventBus() mod-specific event bus},
+ *
This event is fired on the {@linkplain FMLJavaModLoadingContext#getModBusGroup() mod BusGroup},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*/
public final class RegisterPresetEditorsEvent implements SelfDestructing, IModBusEvent {
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterTextureAtlasSpriteLoadersEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterTextureAtlasSpriteLoadersEvent.java
index 4976a85bf8..08fc3ed448 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterTextureAtlasSpriteLoadersEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterTextureAtlasSpriteLoadersEvent.java
@@ -15,6 +15,7 @@ import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.LogicalSide;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.jetbrains.annotations.ApiStatus;
/**
@@ -25,6 +26,7 @@ import org.jetbrains.annotations.ApiStatus;
public final class RegisterTextureAtlasSpriteLoadersEvent extends MutableEvent implements SelfDestructing {
public static final EventBus BUS = EventBus.create(RegisterTextureAtlasSpriteLoadersEvent.class);
+ /** {@link RegisterTextureAtlasSpriteLoadersEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/client/event/RenderHighlightEvent.java b/src/main/java/net/minecraftforge/client/event/RenderHighlightEvent.java
index dc1fb92ce3..b378a8ff52 100644
--- a/src/main/java/net/minecraftforge/client/event/RenderHighlightEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RenderHighlightEvent.java
@@ -22,9 +22,9 @@ import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
/**
- * Fired before a selection highlight is rendered.
+ * Fired before a selection highlight is rendered.
* You should extract your custom data here so that you can use it in the render callback without effecting world state.
- *
+ *
* See the two subclasses to listen for blocks or entities.
*
* @see Block
diff --git a/src/main/java/net/minecraftforge/client/event/RenderNameTagEvent.java b/src/main/java/net/minecraftforge/client/event/RenderNameTagEvent.java
index 1136eab7f0..0b332d3024 100644
--- a/src/main/java/net/minecraftforge/client/event/RenderNameTagEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RenderNameTagEvent.java
@@ -21,7 +21,7 @@ import org.jetbrains.annotations.ApiStatus;
/**
* Fired before an entity renderer renders the nameplate of an entity.
*
- * This event is not {@linkplain Cancelable cancellable}, and {@linkplain HasResult has a result}.
+ * This event {@linkplain HasResult has a result}:
*
* - {@link Result#ALLOW} - the nameplate will be forcibly rendered.
* - {@link Result#DEFAULT} - the vanilla logic will be used.
diff --git a/src/main/java/net/minecraftforge/client/event/ScreenEvent.java b/src/main/java/net/minecraftforge/client/event/ScreenEvent.java
index fc1549f35d..4a08eac6f0 100644
--- a/src/main/java/net/minecraftforge/client/event/ScreenEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/ScreenEvent.java
@@ -24,6 +24,7 @@ import net.minecraftforge.fml.LogicalSide;
import org.jetbrains.annotations.ApiStatus;
import org.jetbrains.annotations.Nullable;
import org.jspecify.annotations.NonNull;
+import org.jspecify.annotations.NullMarked;
import org.lwjgl.glfw.GLFW;
import java.util.Collections;
@@ -110,7 +111,7 @@ public sealed interface ScreenEvent {
/**
* Fired before the screen's overridable initialization method is fired.
*
- * This event is {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the initialization method will not be called, and the widgets and children lists
* will not be cleared.
*
@@ -129,8 +130,6 @@ public sealed interface ScreenEvent {
/**
* Fired after the screen's overridable initialization method is called.
*
- * This event is not {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
- *
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*/
@@ -175,7 +174,7 @@ public sealed interface ScreenEvent {
/**
* Fired before the screen is drawn.
*
- * This event is {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the screen will not be drawn.
*
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
@@ -192,8 +191,6 @@ public sealed interface ScreenEvent {
/**
* Fired after the screen is drawn.
*
- *
This event is not {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
- *
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*/
@@ -343,7 +340,7 @@ public sealed interface ScreenEvent {
/**
* Fired before the mouse click is handled by the screen.
*
- * This event is {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the screen's mouse click handler will be bypassed
* and the corresponding {@link MouseButtonPressed.Post} will not be fired.
*
@@ -362,7 +359,7 @@ public sealed interface ScreenEvent {
* Fired after the mouse click is handled, if the corresponding {@link MouseButtonPressed.Pre} was not
* cancelled.
*
- * This event is not {@linkplain Cancellable cancellable}, {@linkplain HasResult has a result}.
+ * This event {@linkplain HasResult has a result}:
*
* - {@link Result#ALLOW} - forcibly sets the mouse click as handled
* - {@link Result#DEFAULT} - defaults to the return value of
@@ -415,7 +412,7 @@ public sealed interface ScreenEvent {
/**
* Fired before the mouse release is handled by the screen.
*
- *
This event is {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the screen's mouse release handler will be bypassed
* and the corresponding {@link MouseButtonReleased.Post} will not be fired.
*
@@ -434,11 +431,11 @@ public sealed interface ScreenEvent {
* Fired after the mouse release is handled, if the corresponding {@link MouseButtonReleased.Pre} was
* not cancelled.
*
- * This event is not {@linkplain Cancellable cancellable}, {@linkplain HasResult has a result}.
+ * This event {@linkplain HasResult has a result}:
*
* - {@link Result#ALLOW} - forcibly sets the mouse release as handled
* - {@link Result#DEFAULT} - defaults to the return value of
- * {@link Screen#mouseReleased(double, double, int)} from the screen (see {@link #wasHandled()}.
+ * {@link Screen#mouseReleased(MouseButtonEvent)} from the screen (see {@link #wasHandled()}.
* - {@link Result#DENY} - forcibly sets the mouse release as not handled.
*
*
@@ -476,6 +473,7 @@ public sealed interface ScreenEvent {
* @see MouseDragged.Pre
* @see MouseDragged.Post
*/
+ @NullMarked
sealed interface MouseDragged extends MouseInput {
/**
* {@return the mouse button's input code}
@@ -498,7 +496,7 @@ public sealed interface ScreenEvent {
/**
* Fired before the mouse drag is handled by the screen.
*
- * This event is {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the screen's mouse drag handler will be bypassed
* and the corresponding {@link MouseDragged.Post} will not be fired.
*
@@ -551,6 +549,7 @@ public sealed interface ScreenEvent {
* @see MouseScrolled.Pre
* @see MouseScrolled.Post
*/
+ @NullMarked
sealed interface MouseScrolled extends MouseInput {
/**
* {@return the amount of change / delta of the mouse scroll in the vertical direction}
@@ -565,7 +564,7 @@ public sealed interface ScreenEvent {
/**
* Fired before the mouse scroll is handled by the screen.
*
- * This event is {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the screen's mouse scroll handler will be bypassed
* and the corresponding {@link MouseScrolled.Post} will not be fired.
*
@@ -666,7 +665,7 @@ public sealed interface ScreenEvent {
/**
* Fired before the key press is handled by the screen.
*
- * This event is {@linkplain Cancellable cancellable} and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the screen's key press handler will be bypassed
* and the corresponding {@link KeyPressed.Post} will not be fired.
*
@@ -684,7 +683,7 @@ public sealed interface ScreenEvent {
* Fired after the key press is handled, if not handled by the screen
* and the corresponding {@link KeyPressed.Pre} is not cancelled.
*
- * This event is {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the key press will be set as handled.
*
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
@@ -709,7 +708,7 @@ public sealed interface ScreenEvent {
/**
* Fired before the key release is handled by the screen.
*
- *
This event is {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the screen's key release handler will be bypassed
* and the corresponding {@link KeyReleased.Post} will not be fired.
*
@@ -727,7 +726,7 @@ public sealed interface ScreenEvent {
* Fired after the key release is handled, if not handled by the screen
* and the corresponding {@link KeyReleased.Pre} is not cancelled.
*
- * This event is {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the key release will be set as handled.
*
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
@@ -781,7 +780,7 @@ public sealed interface ScreenEvent {
/**
* Fired before the character input is handled by the screen.
*
- *
This event is {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the screen's character input handler will be bypassed
* and the corresponding {@link CharacterTyped.Post} will not be fired.
*
@@ -799,7 +798,7 @@ public sealed interface ScreenEvent {
* Fired after the character input is handled, if not handled by the screen
* and the corresponding {@link CharacterTyped.Pre} is not cancelled.
*
- * This event is {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If the event is cancelled, the character input will be set as handled.
*
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
@@ -817,7 +816,7 @@ public sealed interface ScreenEvent {
* Fired before any {@link Screen} is opened, to allow changing it or preventing it from being opened.
* All screen layers on the screen are closed before this event is fired.
*
- *
This event is {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If this event is cancelled, then the {@code Screen} shall be prevented from opening and any previous screen
* will remain open. However, cancelling this event will not prevent the closing of screen layers which happened before
* this event fired.
@@ -874,8 +873,6 @@ public sealed interface ScreenEvent {
* Fired before a {@link Screen} is closed.
* All screen layers on the screen are closed before this event is fired.
*
- * This event is not {@linkplain Cancellable cancellable}, and does not {@linkplain HasResult have a result}.
- *
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*/
diff --git a/src/main/java/net/minecraftforge/client/event/ScreenshotEvent.java b/src/main/java/net/minecraftforge/client/event/ScreenshotEvent.java
index 17c2b0823a..1c1be2ff29 100644
--- a/src/main/java/net/minecraftforge/client/event/ScreenshotEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/ScreenshotEvent.java
@@ -14,7 +14,8 @@ import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.event.characteristic.Cancellable;
import net.minecraftforge.fml.LogicalSide;
import org.jetbrains.annotations.ApiStatus;
-import org.jetbrains.annotations.Nullable;
+import org.jspecify.annotations.NullMarked;
+import org.jspecify.annotations.Nullable;
import java.io.File;
import java.io.IOException;
@@ -22,7 +23,7 @@ import java.io.IOException;
/**
* Fired when a screenshot is taken, but before it is written to disk.
*
- * This event is {@linkplain Cancelable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* If this event is cancelled, then the screenshot is not written to disk, and the message in the event will be posted
* to the player's chat.
*
@@ -31,6 +32,7 @@ import java.io.IOException;
*
* @see Screenshot
*/
+@NullMarked
public final class ScreenshotEvent extends MutableEvent implements Cancellable {
public static final CancellableEventBus BUS = CancellableEventBus.create(ScreenshotEvent.class);
public static final Component DEFAULT_CANCEL_REASON = Component.literal("Screenshot canceled");
@@ -80,7 +82,7 @@ public final class ScreenshotEvent extends MutableEvent implements Cancellable {
*
* @param resultMessage the new result message
*/
- public void setResultMessage(Component resultMessage) {
+ public void setResultMessage(@Nullable Component resultMessage) {
this.resultMessage = resultMessage;
}
diff --git a/src/main/java/net/minecraftforge/client/event/TextureStitchEvent.java b/src/main/java/net/minecraftforge/client/event/TextureStitchEvent.java
index f281c6556b..6429330aac 100644
--- a/src/main/java/net/minecraftforge/client/event/TextureStitchEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/TextureStitchEvent.java
@@ -10,6 +10,7 @@ import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.RecordEvent;
import net.minecraftforge.fml.LogicalSide;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@@ -63,6 +64,7 @@ public sealed interface TextureStitchEvent {
record Post(TextureAtlas getAtlas) implements RecordEvent, TextureStitchEvent {
public static final EventBus BUS = EventBus.create(Post.class);
+ /** @deprecated {@link TextureStitchEvent.Post} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/client/event/ToastAddEvent.java b/src/main/java/net/minecraftforge/client/event/ToastAddEvent.java
index 59952ff0d4..1552588283 100644
--- a/src/main/java/net/minecraftforge/client/event/ToastAddEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/ToastAddEvent.java
@@ -16,7 +16,7 @@ import net.minecraftforge.fml.LogicalSide;
* Fired when the client queues a {@link Toast} message to be shown onscreen.
* Toasts are small popups that appear on the top right of the screen, for certain actions such as unlocking Advancements and Recipes.
*
- * This event is {@linkplain Cancelable cancellable}, and does not {@linkplain HasResult have a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* Cancelling the event stops the toast from being queued, which means it never renders.
*
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
diff --git a/src/main/java/net/minecraftforge/client/event/ViewportEvent.java b/src/main/java/net/minecraftforge/client/event/ViewportEvent.java
index d4ded86a01..d8e103f8bc 100644
--- a/src/main/java/net/minecraftforge/client/event/ViewportEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/ViewportEvent.java
@@ -19,6 +19,7 @@ import net.minecraftforge.eventbus.api.event.characteristic.Cancellable;
import net.minecraftforge.fml.LogicalSide;
import org.jetbrains.annotations.ApiStatus;
import org.joml.Vector4f;
+import org.jspecify.annotations.NullMarked;
/**
* Fired for hooking into the entity view rendering in {@link GameRenderer}.
@@ -52,7 +53,7 @@ public sealed interface ViewportEvent {
/**
* Fired for rendering custom fog. The plane distances are based on the player's render distance.
*
- *
This event is {@linkplain Cancelable cancellable}, and {@linkplain HasResult has a result}.
+ *
This event is {@linkplain Cancellable cancellable}.
* The event must be cancelled for any changes to the plane distances to take effect.
*
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
@@ -140,8 +141,6 @@ public sealed interface ViewportEvent {
/**
* Fired for customizing the color of the fog visible to the player.
*
- *
This event is not {@linkplain Cancelable cancellable}, and does not {@linkplain HasResult have a result}.
- *
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*/
@@ -234,11 +233,10 @@ public sealed interface ViewportEvent {
* Fired to allow altering the angles of the player's camera.
* This can be used to alter the player's view for different effects, such as applying roll.
*
- * This event is not {@linkplain Cancelable cancellable}, and does not {@linkplain HasResult have a result}.
- *
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*/
+ @NullMarked
final class ComputeCameraAngles extends MutableEvent implements ViewportEvent {
public static final EventBus BUS = EventBus.create(ComputeCameraAngles.class);
@@ -327,13 +325,12 @@ public sealed interface ViewportEvent {
* Fired for altering the raw field of view (FOV).
* This is after the FOV settings are applied, and before modifiers such as the Nausea effect.
*
- * This event is not {@linkplain Cancelable cancellable}, and does not {@linkplain HasResult have a result}.
- *
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*
* @see ComputeFovModifierEvent
*/
+ @NullMarked
final class ComputeFov extends MutableEvent implements ViewportEvent {
public static final EventBus BUS = EventBus.create(ComputeFov.class);
diff --git a/src/main/java/net/minecraftforge/client/event/sound/SoundEngineLoadEvent.java b/src/main/java/net/minecraftforge/client/event/sound/SoundEngineLoadEvent.java
index 9419b16915..e5c96e0799 100644
--- a/src/main/java/net/minecraftforge/client/event/sound/SoundEngineLoadEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/sound/SoundEngineLoadEvent.java
@@ -10,6 +10,7 @@ import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.RecordEvent;
import net.minecraftforge.fml.LogicalSide;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@@ -23,6 +24,7 @@ import org.jspecify.annotations.NullMarked;
public record SoundEngineLoadEvent(SoundEngine getEngine) implements RecordEvent, SoundEvent {
public static final EventBus BUS = EventBus.create(SoundEngineLoadEvent.class);
+ /** @deprecated {@link SoundEngineLoadEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/common/EventBusMigrationHelper.java b/src/main/java/net/minecraftforge/common/EventBusMigrationHelper.java
index b188baef58..002a50b637 100644
--- a/src/main/java/net/minecraftforge/common/EventBusMigrationHelper.java
+++ b/src/main/java/net/minecraftforge/common/EventBusMigrationHelper.java
@@ -16,9 +16,16 @@ import java.util.Collection;
/**
* A small helper class to aid Forge modders in migrating from EventBus 6 to the new EventBus 7.
- *
- * Refer to the migration guide mentioned in the Forge 1.21.6 announcement or ask in the Forge Discord for help with
- * migrating your mod to the new system.
+ *
+ * Refer to the migration guide
+ * mentioned in the Forge 1.21.6 changelog or
+ * 1.21.8 announcement on the
+ * forums, or ask in the Forge Discord for help with migrating your mod
+ * to the new system.
+ *
+ *
+ * You can also check the updated example code in the MDK for the MC
+ * version you're using.
*/
public final class EventBusMigrationHelper {
public static final EventBusMigrationHelper INSTANCE = new EventBusMigrationHelper(BusGroup.DEFAULT);
diff --git a/src/main/java/net/minecraftforge/common/MinecraftForge.java b/src/main/java/net/minecraftforge/common/MinecraftForge.java
index 6ac68af0c6..efc38caa0e 100644
--- a/src/main/java/net/minecraftforge/common/MinecraftForge.java
+++ b/src/main/java/net/minecraftforge/common/MinecraftForge.java
@@ -10,9 +10,12 @@ import net.minecraft.client.gui.screens.Screen;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.client.ClientCommandHandler;
import net.minecraftforge.client.ConfigScreenHandler;
+import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.config.IConfigSpec;
import net.minecraftforge.fml.config.ModConfig;
+import net.minecraftforge.fml.event.IModBusEvent;
+import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.fml.loading.FMLEnvironment;
import net.minecraftforge.network.DualStackUtils;
import net.minecraftforge.versions.forge.ForgeVersion;
@@ -27,10 +30,15 @@ import java.util.function.Supplier;
public class MinecraftForge {
/**
- * The EventBus for all the Forge Events.
+ * A helper for partial source-level back-compat with the old event system used in 1.21.5 and older, that acts as
+ * a wrapper around {@link BusGroup#DEFAULT}.
*
- * Events marked with {@link net.minecraftforge.fml.event.IModBusEvent}
- * belong on the ModBus and not this bus
+ *
Please refer to the javadocs for {@link EventBusMigrationHelper} for further information and resources on how
+ * to properly migrate your mod to the new event system.
+ *
+ * Events marked with {@link IModBusEvent} belong on the
+ * {@linkplain FMLJavaModLoadingContext#getModBusGroup() mod BusGroup} and not on the
+ * {@linkplain BusGroup#DEFAULT default BusGroup}.
*/
public static final EventBusMigrationHelper EVENT_BUS = EventBusMigrationHelper.INSTANCE;
@@ -54,7 +62,7 @@ public class MinecraftForge {
* @param screenFunction A function that takes the mods screen as an argument and returns your config screen to
* show when the player clicks the config button for your mod on the mods screen.
* You should call {@link Minecraft#setScreen(Screen)} with the provided mods screen for the
- * action of your close button, using {@link Screen#minecraft} to get the client instance.
+ * action of your close button, using {@link Screen#getMinecraft()} to get the client instance.
* @see ModLoadingContext#registerExtensionPoint(Class, Supplier)
* @see ModLoadingContext#registerConfig(ModConfig.Type, IConfigSpec)
*/
diff --git a/src/main/java/net/minecraftforge/common/capabilities/RegisterCapabilitiesEvent.java b/src/main/java/net/minecraftforge/common/capabilities/RegisterCapabilitiesEvent.java
index c895c95138..c7b6794717 100644
--- a/src/main/java/net/minecraftforge/common/capabilities/RegisterCapabilitiesEvent.java
+++ b/src/main/java/net/minecraftforge/common/capabilities/RegisterCapabilitiesEvent.java
@@ -10,6 +10,7 @@ import java.util.Objects;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.RecordEvent;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.jspecify.annotations.NullMarked;
import org.objectweb.asm.Type;
@@ -24,17 +25,18 @@ import org.objectweb.asm.Type;
public record RegisterCapabilitiesEvent() implements RecordEvent {
public static final EventBus BUS = EventBus.create(RegisterCapabilitiesEvent.class);
+ /** @deprecated {@link RegisterCapabilitiesEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
}
/**
- * Registers a capability to be consumed by others.
- * APIs who define the capability should call this.
- * This is meant to allow Capability consumers to have soft dependencies on the Capability type.
- * But be automatically notified when the Class actually exists. Meaning it's safe to create their implementations.
- *
+ * Registers a capability to be consumed by others.
+ * APIs who define the capability should call this.
+ * This is meant to allow Capability consumers to have soft dependencies on the Capability type.
+ * But be automatically notified when the Class actually exists. Meaning it's safe to create their implementations.
+ *
* To retrieve the Capability instance, use the {@link CapabilityManager} gets functions.
*/
public void register(Class type) {
diff --git a/src/main/java/net/minecraftforge/event/AddPackFindersEvent.java b/src/main/java/net/minecraftforge/event/AddPackFindersEvent.java
index 01f66c426e..124b2dc3f6 100644
--- a/src/main/java/net/minecraftforge/event/AddPackFindersEvent.java
+++ b/src/main/java/net/minecraftforge/event/AddPackFindersEvent.java
@@ -11,6 +11,7 @@ import net.minecraft.server.packs.repository.RepositorySource;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.RecordEvent;
+import net.minecraftforge.fml.event.IModBusEvent;
import java.util.function.Consumer;
@@ -22,6 +23,7 @@ import java.util.function.Consumer;
public record AddPackFindersEvent(PackType getPackType, Consumer sourceAdder) implements RecordEvent {
public static final EventBus BUS = EventBus.create(AddPackFindersEvent.class);
+ /** @deprecated {@link AddPackFindersEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/event/BuildCreativeModeTabContentsEvent.java b/src/main/java/net/minecraftforge/event/BuildCreativeModeTabContentsEvent.java
index 072ebbb7e8..9608ef35e3 100644
--- a/src/main/java/net/minecraftforge/event/BuildCreativeModeTabContentsEvent.java
+++ b/src/main/java/net/minecraftforge/event/BuildCreativeModeTabContentsEvent.java
@@ -15,6 +15,7 @@ import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.RecordEvent;
import net.minecraftforge.fml.LogicalSide;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.jetbrains.annotations.ApiStatus;
import org.jspecify.annotations.NullMarked;
@@ -38,6 +39,7 @@ public record BuildCreativeModeTabContentsEvent(
) implements RecordEvent, CreativeModeTab.Output {
public static final EventBus BUS = EventBus.create(BuildCreativeModeTabContentsEvent.class);
+ /** @deprecated {@link BuildCreativeModeTabContentsEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/event/DifficultyChangeEvent.java b/src/main/java/net/minecraftforge/event/DifficultyChangeEvent.java
index e6f8317496..affb64b101 100644
--- a/src/main/java/net/minecraftforge/event/DifficultyChangeEvent.java
+++ b/src/main/java/net/minecraftforge/event/DifficultyChangeEvent.java
@@ -6,15 +6,13 @@
package net.minecraftforge.event;
import net.minecraft.world.Difficulty;
-import net.minecraftforge.common.ForgeHooks;
-import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.RecordEvent;
/**
* DifficultyChangeEvent is fired when difficulty is changing.
*
- * This event is fired via the {@link ForgeHooks#onDifficultyChange(Difficulty, Difficulty)}.
+ * This event is fired via the {@link ForgeEventFactory#onDifficultyChange(Difficulty, Difficulty)}.
*/
public record DifficultyChangeEvent(Difficulty getDifficulty, Difficulty getOldDifficulty) implements RecordEvent {
public static final EventBus BUS = EventBus.create(DifficultyChangeEvent.class);
diff --git a/src/main/java/net/minecraftforge/event/GrindstoneEvent.java b/src/main/java/net/minecraftforge/event/GrindstoneEvent.java
index 536d152fac..4cc7af773b 100644
--- a/src/main/java/net/minecraftforge/event/GrindstoneEvent.java
+++ b/src/main/java/net/minecraftforge/event/GrindstoneEvent.java
@@ -58,7 +58,7 @@ public abstract sealed class GrindstoneEvent extends MutableEvent implements Inh
}
/**
- * This event is {@link Cancelable}
+ * This event is {@link Cancellable}
* {@link OnPlaceItem} is fired when the inputs to a grindstone are changed.
*
* The following rules apply:
@@ -72,7 +72,7 @@ public abstract sealed class GrindstoneEvent extends MutableEvent implements Inh
* Vanilla XP calculation logic will be used unless all of the following criterias are met:
*
* - the amount of experience is greater than or equal to {@code 0};
- * - the event is not {@linkplain #isCanceled() canceled};
+ * - the event is not {@linkplain Cancellable cancelled};
* - the {@linkplain #getOutput() output} is not empty.
*
*
@@ -108,7 +108,7 @@ public abstract sealed class GrindstoneEvent extends MutableEvent implements Inh
}
/**
- * This event is {@link Cancelable}
+ * This event is {@link Cancellable}
* {@link OnTakeItem} is fired when the output in a grindstone are is taken.
* It is called from {@link GrindstoneMenu#GrindstoneMenu(int, Inventory)}.
* If the event is canceled, vanilla behavior will not run, and no inputs will be consumed.
diff --git a/src/main/java/net/minecraftforge/event/ModMismatchEvent.java b/src/main/java/net/minecraftforge/event/ModMismatchEvent.java
index a6e954f601..de10556d6c 100644
--- a/src/main/java/net/minecraftforge/event/ModMismatchEvent.java
+++ b/src/main/java/net/minecraftforge/event/ModMismatchEvent.java
@@ -35,8 +35,7 @@ import java.util.stream.Stream;
* unsafe to access server or level information during handling of this event.
*
*
- * This event is not {@linkplain Cancelable cancellable}, and does not {@linkplain HasResult have a result}.
- * This event is fired on the {@linkplain FMLJavaModLoadingContext#getModEventBus() mod-specific event bus},
+ *
This event is fired on the {@linkplain FMLJavaModLoadingContext#getModBusGroup() mod BusGroup},
* on both {@linkplain LogicalSide logical sides}.
*/
public final class ModMismatchEvent implements IModBusEvent {
diff --git a/src/main/java/net/minecraftforge/event/PlayLevelSoundEvent.java b/src/main/java/net/minecraftforge/event/PlayLevelSoundEvent.java
index 7e4ee0a2e6..ee9c1353cc 100644
--- a/src/main/java/net/minecraftforge/event/PlayLevelSoundEvent.java
+++ b/src/main/java/net/minecraftforge/event/PlayLevelSoundEvent.java
@@ -141,8 +141,8 @@ public sealed class PlayLevelSoundEvent extends MutableEvent implements Cancella
* PlayLevelSoundEvent.AtEntity is fired when a sound is played on the {@link Level} at an {@link Entity Entity}'s position.
* This event is fired from {@link Level#playSound}, {@link Level#playSeededSound}, and {@link LocalPlayer#playSound}.
*
- * This event is {@link Cancelable cancelable}.
- * If this event is canceled, the sound is not played.
+ * This event is {@link Cancellable cancellable}.
+ * If this event is cancelled, the sound is not played.
*
* This event does not have a result.
*
@@ -170,8 +170,8 @@ public sealed class PlayLevelSoundEvent extends MutableEvent implements Cancella
* PlayLevelSoundEvent.AtPosition is fired when a sound is played on the {@link Level} at a specific position.
* This event is fired from {@link Level#playSound} and {@link Level#playSeededSound}.
*
- * This event is {@link Cancelable cancelable}.
- * If this event is canceled, the sound is not played.
+ * This event is {@link Cancellable cancellable}.
+ * If this event is cancelled, the sound is not played.
*
* This event does not have a result.
*
diff --git a/src/main/java/net/minecraftforge/event/brewing/PotionBrewEvent.java b/src/main/java/net/minecraftforge/event/brewing/PotionBrewEvent.java
index 3d81cb587b..0c8054236a 100644
--- a/src/main/java/net/minecraftforge/event/brewing/PotionBrewEvent.java
+++ b/src/main/java/net/minecraftforge/event/brewing/PotionBrewEvent.java
@@ -48,10 +48,8 @@ public sealed abstract class PotionBrewEvent extends MutableEvent implements Inh
*
* {@link #stacks} contains the itemstack array from the TileEntityBrewer holding all items in Brewer.
*
- * This event is {@link net.minecraftforge.eventbus.api.Cancelable}.
- * If the event is not canceled, the vanilla brewing will take place instead of modded brewing.
- *
- * This event does not have a result. {@link HasResult}
+ * This event is {@link Cancellable}.
+ * If the event is not cancelled, the vanilla brewing will take place instead of modded brewing.
*
* This event is fired on the {@link MinecraftForge#EVENT_BUS}.
*
@@ -72,10 +70,6 @@ public sealed abstract class PotionBrewEvent extends MutableEvent implements Inh
*
* {@link #stacks} contains the itemstack array from the TileEntityBrewer holding all items in Brewer.
*
- * This event is not {@link net.minecraftforge.eventbus.api.Cancelable}.
- *
- * This event does not have a result. {@link HasResult}
- *
* This event is fired on the {@link MinecraftForge#EVENT_BUS}.
**/
public static final class Post extends PotionBrewEvent {
diff --git a/src/main/java/net/minecraftforge/event/entity/EntityAttributeCreationEvent.java b/src/main/java/net/minecraftforge/event/entity/EntityAttributeCreationEvent.java
index 1b4df7d5b6..7b38115877 100644
--- a/src/main/java/net/minecraftforge/event/entity/EntityAttributeCreationEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/EntityAttributeCreationEvent.java
@@ -14,6 +14,7 @@ import net.minecraft.world.entity.ai.attributes.DefaultAttributes;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
+import net.minecraftforge.fml.event.IModBusEvent;
/**
* EntityAttributeCreationEvent.
@@ -23,6 +24,7 @@ import net.minecraftforge.eventbus.api.event.MutableEvent;
public final class EntityAttributeCreationEvent extends MutableEvent {
public static final EventBus BUS = EventBus.create(EntityAttributeCreationEvent.class);
+ /** @deprecated {@link EntityAttributeCreationEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/event/entity/EntityAttributeModificationEvent.java b/src/main/java/net/minecraftforge/event/entity/EntityAttributeModificationEvent.java
index c3870eed1c..15b0f02b56 100644
--- a/src/main/java/net/minecraftforge/event/entity/EntityAttributeModificationEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/EntityAttributeModificationEvent.java
@@ -14,6 +14,7 @@ import net.minecraft.world.entity.ai.attributes.DefaultAttributes;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
+import net.minecraftforge.fml.event.IModBusEvent;
import net.minecraftforge.registries.ForgeRegistries;
import java.util.List;
@@ -27,6 +28,7 @@ import java.util.Map;
public final class EntityAttributeModificationEvent extends MutableEvent {
public static final EventBus BUS = EventBus.create(EntityAttributeModificationEvent.class);
+ /** @deprecated {@link EntityAttributeModificationEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/event/entity/EntityEvent.java b/src/main/java/net/minecraftforge/event/entity/EntityEvent.java
index e6ab1306f1..7c88a7ecd1 100644
--- a/src/main/java/net/minecraftforge/event/entity/EntityEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/EntityEvent.java
@@ -11,7 +11,7 @@ import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.RecordEvent;
/**
- * EntityEvent is fired when an event involving any Entity occurs.
+ * EntityEvent is a marker interface for when an event involving any Entity occurs.
*/
public interface EntityEvent {
/**
diff --git a/src/main/java/net/minecraftforge/event/entity/EntityJoinLevelEvent.java b/src/main/java/net/minecraftforge/event/entity/EntityJoinLevelEvent.java
index 7497a2a664..23ede0ca5a 100644
--- a/src/main/java/net/minecraftforge/event/entity/EntityJoinLevelEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/EntityJoinLevelEvent.java
@@ -23,7 +23,7 @@ import net.minecraftforge.fml.LogicalSide;
* You will cause chunk loading deadlocks if you do not delay your world interactions.
*
* This event is {@linkplain Cancellable cancellable}.
- * If the event is canceled, the entity will not be added to the level.
+ * If the event is cancelled, the entity will not be added to the level.
*
* This event is fired on the {@linkplain MinecraftForge#EVENT_BUS main Forge event bus}
* on both logical sides.
diff --git a/src/main/java/net/minecraftforge/event/entity/SpawnPlacementRegisterEvent.java b/src/main/java/net/minecraftforge/event/entity/SpawnPlacementRegisterEvent.java
index 8693360ef8..5c16aca80b 100644
--- a/src/main/java/net/minecraftforge/event/entity/SpawnPlacementRegisterEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/SpawnPlacementRegisterEvent.java
@@ -20,6 +20,7 @@ import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.listener.Priority;
+import net.minecraftforge.fml.event.IModBusEvent;
import net.minecraftforge.registries.ForgeRegistries;
import org.jetbrains.annotations.ApiStatus;
@@ -41,6 +42,7 @@ import org.jetbrains.annotations.ApiStatus;
public final class SpawnPlacementRegisterEvent extends MutableEvent {
public static final EventBus BUS = EventBus.create(SpawnPlacementRegisterEvent.class);
+ /** @deprecated {@link SpawnPlacementRegisterEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/event/entity/living/BabyEntitySpawnEvent.java b/src/main/java/net/minecraftforge/event/entity/living/BabyEntitySpawnEvent.java
index a4dccbcce7..fd8f9bbec7 100644
--- a/src/main/java/net/minecraftforge/event/entity/living/BabyEntitySpawnEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/living/BabyEntitySpawnEvent.java
@@ -30,12 +30,10 @@ import org.jetbrains.annotations.Nullable;
* {@link #causedByPlayer} contains the player responsible for the breading (if applicable).
* {@link #child} contains the child that will be spawned.
*
- * This event is {@link Cancelable}.
- * If this event is canceled, the child Entity is not added to the world, and the parents
+ * This event is {@link Cancellable}.
+ * If this event is cancelled, the child Entity is not added to the world, and the parents
* will no longer attempt to mate.
*
- * This event does not have a result. {@link HasResult}
- *
* This event is fired on the {@link MinecraftForge#EVENT_BUS}.
**/
public final class BabyEntitySpawnEvent extends MutableEvent implements Cancellable {
diff --git a/src/main/java/net/minecraftforge/event/entity/living/LivingAttackEvent.java b/src/main/java/net/minecraftforge/event/entity/living/LivingAttackEvent.java
index d16396a84d..53ab771ccd 100644
--- a/src/main/java/net/minecraftforge/event/entity/living/LivingAttackEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/living/LivingAttackEvent.java
@@ -22,7 +22,7 @@ import net.minecraftforge.eventbus.api.event.characteristic.Cancellable;
* This event is fired via the {@link ForgeHooks#onLivingAttack(LivingEntity, DamageSource, float)}.
*
* This event is {@linkplain Cancellable cancellable}.
- * If this event is canceled, the Entity does not take attack damage.
+ * If this event is cancelled, the Entity does not take attack damage.
*
* @param getSource the source of the attack
* @param getAmount the amount of damage dealt to the entity
diff --git a/src/main/java/net/minecraftforge/event/entity/living/LivingDropsEvent.java b/src/main/java/net/minecraftforge/event/entity/living/LivingDropsEvent.java
index 48f78adaab..cc3c12bb7d 100644
--- a/src/main/java/net/minecraftforge/event/entity/living/LivingDropsEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/living/LivingDropsEvent.java
@@ -20,7 +20,7 @@ import net.minecraftforge.eventbus.api.event.characteristic.Cancellable;
* This event is fired whenever an Entity dies and drops items in
* {@link LivingEntity#die(DamageSource)}.
*
- * This event is fired via the {@link ForgeEventFactory#onLivingDrops(LivingEntity, DamageSource, Collection, int, boolean)} .
+ * This event is fired via the {@link ForgeEventFactory#onLivingDrops(LivingEntity, DamageSource, Collection, boolean)}.
*
* @param getSource contains the DamageSource that caused the drop to occur.
* @param getDrops contains the ArrayList of EntityItems that will be dropped.
diff --git a/src/main/java/net/minecraftforge/event/entity/living/LivingEntityUseItemEvent.java b/src/main/java/net/minecraftforge/event/entity/living/LivingEntityUseItemEvent.java
index 0f537a3be4..1c9112304e 100644
--- a/src/main/java/net/minecraftforge/event/entity/living/LivingEntityUseItemEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/living/LivingEntityUseItemEvent.java
@@ -46,15 +46,16 @@ public sealed abstract class LivingEntityUseItemEvent extends MutableEvent imple
}
/**
- * Fired when a player starts 'using' an item, typically when they hold right mouse.
+ * Fired when a player starts 'using' an item, typically when they hold right mouse.
* Examples:
- * Drawing a bow
- * Eating Food
- * Drinking Potions/Milk
- * Guarding with a sword
- *
+ *
+ * - Drawing a bow
+ * - Eating food
+ * - Drinking potions/milk
+ * - Guarding with a sword
+ *
+ *
* Cancel the event, or set the duration or {@literal <} 0 to prevent it from processing.
- *
*/
public static final class Start extends LivingEntityUseItemEvent implements Cancellable {
public static final CancellableEventBus BUS = CancellableEventBus.create(Start.class);
@@ -66,9 +67,8 @@ public sealed abstract class LivingEntityUseItemEvent extends MutableEvent imple
/**
* Fired every tick that a player is 'using' an item, see {@link Start} for info.
- *
+ *
* Cancel the event, or set the duration to {@literal <=} 0 to cause the player to stop using the item.
- *
*/
public static final class Tick extends LivingEntityUseItemEvent implements Cancellable {
public static final CancellableEventBus BUS = CancellableEventBus.create(Tick.class);
diff --git a/src/main/java/net/minecraftforge/event/entity/living/LivingEvent.java b/src/main/java/net/minecraftforge/event/entity/living/LivingEvent.java
index c8f3f19e2a..f3556e19b4 100644
--- a/src/main/java/net/minecraftforge/event/entity/living/LivingEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/living/LivingEvent.java
@@ -18,7 +18,7 @@ import net.minecraftforge.eventbus.api.event.characteristic.Cancellable;
import org.jetbrains.annotations.Nullable;
/**
- * LivingEvent is fired whenever an event involving a {@link LivingEntity} occurs.
+ * LivingEvent is a marker interface for whenever an event involving a {@link LivingEntity} occurs.
*/
public interface LivingEvent extends EntityEvent {
@Override
diff --git a/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java b/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java
index b3db82354a..fcf0387577 100644
--- a/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/living/LivingFallEvent.java
@@ -18,9 +18,9 @@ import net.minecraftforge.eventbus.api.event.characteristic.Cancellable;
*
* This event is fired via the {@link net.minecraftforge.event.ForgeEventFactory#onLivingFall(LivingEntity, double, float)}.
*
- * {@link #distance} contains the distance the Entity is to fall. If this event is canceled, this value is set to 0.0F.
+ * {@link #distance} contains the distance the Entity is to fall. If this event is cancelled, this value is set to 0.0F.
*
- * This event is {@linkplain Cancellable cancellable}. If this event is canceled, the Entity does not fall.
+ * This event is {@linkplain Cancellable cancellable}. If this event is cancelled, the Entity does not fall.
**/
public final class LivingFallEvent extends MutableEvent implements Cancellable, LivingEvent {
public static final CancellableEventBus BUS = CancellableEventBus.create(LivingFallEvent.class);
diff --git a/src/main/java/net/minecraftforge/event/entity/living/MobEffectEvent.java b/src/main/java/net/minecraftforge/event/entity/living/MobEffectEvent.java
index cdb353d289..07d4bb0f65 100644
--- a/src/main/java/net/minecraftforge/event/entity/living/MobEffectEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/living/MobEffectEvent.java
@@ -69,12 +69,12 @@ public sealed interface MobEffectEvent extends LivingEvent, InheritableEvent {
/**
* This event is fired to check if a {@link MobEffectInstance} can be applied to an entity.
- * This event is not {@link Cancelable}.
- * This event {@link HasResult has a result}.
- *
- * {@link Result#ALLOW ALLOW} will apply this mob effect.
- * {@link Result#DENY DENY} will not apply this mob effect.
- * {@link Result#DEFAULT DEFAULT} will run vanilla logic to determine if this mob effect is applicable in {@link LivingEntity#canBeAffected}.
+ *
This event {@link HasResult has a result}:
+ *
+ * - {@link Result#ALLOW ALLOW} will apply this mob effect.
+ * - {@link Result#DENY DENY} will not apply this mob effect.
+ * - {@link Result#DEFAULT DEFAULT} will run vanilla logic to determine if this mob effect is applicable in {@link LivingEntity#canBeAffected}.
+ *
*/
final class Applicable implements MobEffectEvent, HasResult {
public static final EventBus BUS = EventBus.create(Applicable.class);
diff --git a/src/main/java/net/minecraftforge/event/entity/living/ZombieEvent.java b/src/main/java/net/minecraftforge/event/entity/living/ZombieEvent.java
index 3f8881c09f..72fac8cca9 100644
--- a/src/main/java/net/minecraftforge/event/entity/living/ZombieEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/living/ZombieEvent.java
@@ -39,22 +39,22 @@ public sealed abstract class ZombieEvent implements EntityEvent, InheritableEven
* SummonAidEvent is fired when a Zombie Entity is summoned.
* This event is fired whenever a Zombie Entity is summoned in
* {@code Zombie#actuallyHurt(DamageSource, float)}.
- *
+ *
* This event is fired via the {@link ForgeEventFactory#fireZombieSummonAid(Zombie, Level, int, int, int, LivingEntity, double)}.
- *
- * {@link #getCustomSummonedAid()} remains null, but can be populated with a custom EntityZombie which will be spawned.
- * {@link #getLevel()} contains the world that this summoning is occurring in.
- * {@link #getX()} contains the x-coordinate at which this summoning event is occurring.
- * {@link #getY()} contains the y-coordinate at which this summoning event is occurring.
- * {@link #getZ()} contains the z-coordinate at which this summoning event is occurring.
- * {@link #getAttacker()} contains the living Entity that attacked and caused this event to fire.
- * {@link #getSummonChance()} contains the likelihood that a Zombie would successfully be summoned.
- *
- * This event is not {@link Cancelable}.
- *
- * This event has a result. {@link HasResult}
- * {@link Result#ALLOW} Zombie is summoned.
- * {@link Result#DENY} Zombie is not summoned.
+ *
+ * {@link #getCustomSummonedAid()} remains null, but can be populated with a custom EntityZombie which will be spawned.
+ * {@link #getLevel()} contains the world that this summoning is occurring in.
+ * {@link #getX()} contains the x-coordinate at which this summoning event is occurring.
+ * {@link #getY()} contains the y-coordinate at which this summoning event is occurring.
+ * {@link #getZ()} contains the z-coordinate at which this summoning event is occurring.
+ * {@link #getAttacker()} contains the living Entity that attacked and caused this event to fire.
+ * {@link #getSummonChance()} contains the likelihood that a Zombie would successfully be summoned.
+ *
+ * This event {@linkplain HasResult has a result}:
+ *
+ * - {@link Result#ALLOW} Zombie is summoned.
+ * - {@link Result#DENY} Zombie is not summoned.
+ *
*
* This event is fired on the {@link MinecraftForge#EVENT_BUS}.
**/
diff --git a/src/main/java/net/minecraftforge/event/entity/player/AdvancementEvent.java b/src/main/java/net/minecraftforge/event/entity/player/AdvancementEvent.java
index 13e4116a7b..4c9fbb68fa 100644
--- a/src/main/java/net/minecraftforge/event/entity/player/AdvancementEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/player/AdvancementEvent.java
@@ -5,7 +5,6 @@
package net.minecraftforge.event.entity.player;
-import net.minecraft.advancements.Advancement;
import net.minecraft.advancements.AdvancementHolder;
import net.minecraft.advancements.AdvancementProgress;
import net.minecraft.world.entity.player.Player;
@@ -46,8 +45,8 @@ public sealed interface AdvancementEvent extends PlayerEvent {
* @param getProgressType the type of progress for the criterion in this event
*
* @see AdvancementEarnEvent
- * @see net.minecraft.server.PlayerAdvancements#award(Advancement, String)
- * @see net.minecraft.server.PlayerAdvancements#revoke(Advancement, String)
+ * @see net.minecraft.server.PlayerAdvancements#award(AdvancementHolder, String)
+ * @see net.minecraft.server.PlayerAdvancements#revoke(AdvancementHolder, String)
*/
record AdvancementProgressEvent(
Player getEntity,
diff --git a/src/main/java/net/minecraftforge/event/entity/player/AttackEntityEvent.java b/src/main/java/net/minecraftforge/event/entity/player/AttackEntityEvent.java
index ef956f8224..890bb7c633 100644
--- a/src/main/java/net/minecraftforge/event/entity/player/AttackEntityEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/player/AttackEntityEvent.java
@@ -16,7 +16,7 @@ import net.minecraftforge.eventbus.api.event.characteristic.Cancellable;
* This event is fired whenever a player attacks an Entity in
* {@link Player#attack(Entity)}.
*
- * {@link #target} contains the Entity that was damaged by the player.
+ * {@link #getTarget()} contains the Entity that was damaged by the player.
*
* This event is {@linkplain Cancellable cancellable}. If this event is cancelled, the player does not attack the Entity.
**/
diff --git a/src/main/java/net/minecraftforge/event/entity/player/CriticalHitEvent.java b/src/main/java/net/minecraftforge/event/entity/player/CriticalHitEvent.java
index fb4b357b7d..b6c3864480 100644
--- a/src/main/java/net/minecraftforge/event/entity/player/CriticalHitEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/player/CriticalHitEvent.java
@@ -16,10 +16,12 @@ import net.minecraftforge.eventbus.api.event.MutableEvent;
* This event is fired whenever a player attacks an Entity in
* EntityPlayer#attackTargetEntityWithCurrentItem(Entity).
*
- * This event has a result. {@link HasResult}
- * DEFAULT: means the vanilla logic will determine if this a critical hit.
- * DENY: it will not be a critical hit but the player still will attack
- * ALLOW: this attack is forced to be critical
+ * This event {@linkplain HasResult has a result}:
+ *
+ * - {@link Result#DEFAULT}: means the vanilla logic will determine if this a critical hit.
+ * - {@link Result#DENY}: it will not be a critical hit but the player still will attack
+ * - {@link Result#ALLOW}: this attack is forced to be critical
+ *
**/
public final class CriticalHitEvent extends MutableEvent implements PlayerEvent, HasResult {
public static final EventBus BUS = EventBus.create(CriticalHitEvent.class);
diff --git a/src/main/java/net/minecraftforge/event/entity/player/PlayerContainerEvent.java b/src/main/java/net/minecraftforge/event/entity/player/PlayerContainerEvent.java
index 4794253c7c..e964f45b3b 100644
--- a/src/main/java/net/minecraftforge/event/entity/player/PlayerContainerEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/player/PlayerContainerEvent.java
@@ -9,12 +9,14 @@ import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.AbstractContainerMenu;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.InheritableEvent;
+import org.jspecify.annotations.NullMarked;
public sealed interface PlayerContainerEvent extends PlayerEvent, InheritableEvent {
EventBus BUS = EventBus.create(PlayerContainerEvent.class);
AbstractContainerMenu getContainer();
+ @NullMarked
record Open(Player getEntity, AbstractContainerMenu getContainer) implements PlayerContainerEvent {
public static final EventBus BUS = EventBus.create(Open.class);
}
diff --git a/src/main/java/net/minecraftforge/event/entity/player/PlayerEvent.java b/src/main/java/net/minecraftforge/event/entity/player/PlayerEvent.java
index 33236758c8..d7cb08bc04 100644
--- a/src/main/java/net/minecraftforge/event/entity/player/PlayerEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/player/PlayerEvent.java
@@ -32,10 +32,8 @@ import org.jetbrains.annotations.Nullable;
import org.jspecify.annotations.NullMarked;
/**
- * PlayerEvent is fired whenever an event involving a {@link Player} occurs.
- * If a method utilizes this {@link net.minecraftforge.eventbus.api.Event} as its parameter, the method will
- * receive every child event of this class.
- **/
+ * PlayerEvent is a marker interface for whenever an event involving a {@link Player} occurs.
+ */
public interface PlayerEvent extends LivingEvent {
@Override
Player getEntity();
@@ -317,6 +315,7 @@ public interface PlayerEvent extends LivingEvent {
public static final EventBus BUS = EventBus.create(ItemSmeltedEvent.class);
}
+ @NullMarked
record PlayerLoggedInEvent(Player getEntity) implements RecordEvent, PlayerEvent {
public static final EventBus BUS = EventBus.create(PlayerLoggedInEvent.class);
}
@@ -325,6 +324,7 @@ public interface PlayerEvent extends LivingEvent {
public static final EventBus BUS = EventBus.create(PlayerLoggedOutEvent.class);
}
+ @NullMarked
record PlayerRespawnEvent(Player getEntity, boolean isEndConquered) implements RecordEvent, PlayerEvent {
public static final EventBus BUS = EventBus.create(PlayerRespawnEvent.class);
diff --git a/src/main/java/net/minecraftforge/event/entity/player/PlayerXpEvent.java b/src/main/java/net/minecraftforge/event/entity/player/PlayerXpEvent.java
index f0bcdc97b5..f0d455c13f 100644
--- a/src/main/java/net/minecraftforge/event/entity/player/PlayerXpEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/player/PlayerXpEvent.java
@@ -9,25 +9,22 @@ import net.minecraft.world.entity.ExperienceOrb;
import net.minecraft.world.entity.player.Player;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.bus.CancellableEventBus;
-import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
import net.minecraftforge.eventbus.api.event.RecordEvent;
import net.minecraftforge.eventbus.api.event.characteristic.Cancellable;
import org.jspecify.annotations.NullMarked;
/**
- * PlayerXpEvent is fired whenever an event involving player experience occurs.
- * If a method utilizes this {@link net.minecraftforge.eventbus.api.Event} as its parameter, the method will
- * receive every child event of this class.
+ * PlayerXpEvent is fired whenever an event involving player experience occurs.
*
* All children of this event are fired on the {@link MinecraftForge#EVENT_BUS}.
*/
+@NullMarked
public sealed interface PlayerXpEvent extends PlayerEvent {
/**
* This event is fired after the player collides with an experience orb, but before the player has been given the experience.
* It can be cancelled, and no further processing will be done.
*/
- @NullMarked
record PickupXp(Player getEntity, ExperienceOrb getOrb) implements Cancellable, PlayerXpEvent, RecordEvent {
public static final CancellableEventBus BUS = CancellableEventBus.create(PickupXp.class);
}
@@ -36,7 +33,6 @@ public sealed interface PlayerXpEvent extends PlayerEvent {
* This event is fired when the player's experience changes through the {@link Player#giveExperiencePoints(int)} method.
* It can be cancelled, and no further processing will be done.
*/
- @NullMarked
final class XpChange extends MutableEvent implements Cancellable, PlayerXpEvent {
public static final CancellableEventBus BUS = CancellableEventBus.create(XpChange.class);
@@ -66,7 +62,6 @@ public sealed interface PlayerXpEvent extends PlayerEvent {
* This event is fired when the player's experience level changes through the {@link Player#giveExperienceLevels(int)} method.
* It can be cancelled, and no further processing will be done.
*/
- @NullMarked
final class LevelChange extends MutableEvent implements Cancellable, PlayerXpEvent {
public static final CancellableEventBus BUS = CancellableEventBus.create(LevelChange.class);
diff --git a/src/main/java/net/minecraftforge/event/entity/player/SleepingLocationCheckEvent.java b/src/main/java/net/minecraftforge/event/entity/player/SleepingLocationCheckEvent.java
index c8febe1e4b..fdbbb69137 100644
--- a/src/main/java/net/minecraftforge/event/entity/player/SleepingLocationCheckEvent.java
+++ b/src/main/java/net/minecraftforge/event/entity/player/SleepingLocationCheckEvent.java
@@ -21,10 +21,11 @@ import net.minecraftforge.eventbus.api.event.MutableEvent;
* This event is fired when game checks, if sleeping player should be still considered "in bed".
* Failing this check will cause player to wake up.
*
- * This event has a result. {@link HasResult}
- *
- * setResult(ALLOW) informs game that player is still "in bed"
- * setResult(DEFAULT) causes game to check {@link Block#isBed(BlockState, BlockGetter, BlockPos, Entity)} instead
+ * This event {@linkplain HasResult has a result}:
+ *
+ * - {@link Result#ALLOW}: informs game that player is still "in bed"
+ * - {@link Result#DEFAULT}: causes game to check {@link Block#isBed(BlockState, BlockGetter, BlockPos, Entity)} instead
+ *
*/
public final class SleepingLocationCheckEvent extends MutableEvent implements LivingEvent, HasResult {
public static final EventBus BUS = EventBus.create(SleepingLocationCheckEvent.class);
diff --git a/src/main/java/net/minecraftforge/registries/DataPackRegistryEvent.java b/src/main/java/net/minecraftforge/registries/DataPackRegistryEvent.java
index c736bdd3e2..8aa6103e21 100644
--- a/src/main/java/net/minecraftforge/registries/DataPackRegistryEvent.java
+++ b/src/main/java/net/minecraftforge/registries/DataPackRegistryEvent.java
@@ -33,6 +33,7 @@ public sealed interface DataPackRegistryEvent {
final class NewRegistry extends MutableEvent implements DataPackRegistryEvent {
public static final EventBus BUS = EventBus.create(NewRegistry.class);
+ /** @deprecated {@link DataPackRegistryEvent.NewRegistry} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/registries/NewRegistryEvent.java b/src/main/java/net/minecraftforge/registries/NewRegistryEvent.java
index 1199efdfe7..17a1230028 100644
--- a/src/main/java/net/minecraftforge/registries/NewRegistryEvent.java
+++ b/src/main/java/net/minecraftforge/registries/NewRegistryEvent.java
@@ -17,6 +17,7 @@ import net.minecraft.core.registries.BuiltInRegistries;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.eventbus.api.event.MutableEvent;
+import net.minecraftforge.fml.event.IModBusEvent;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
@@ -26,6 +27,7 @@ import org.slf4j.Logger;
public final class NewRegistryEvent extends MutableEvent {
public static final EventBus BUS = EventBus.create(NewRegistryEvent.class);
+ /** @deprecated {@link NewRegistryEvent} is no longer an {@link IModBusEvent}, so use {@link #BUS} directly. */
@Deprecated(forRemoval = true, since = "1.21.9")
public static EventBus getBus(BusGroup modBusGroup) {
return BUS;
diff --git a/src/main/java/net/minecraftforge/registries/RegisterEvent.java b/src/main/java/net/minecraftforge/registries/RegisterEvent.java
index 9096e5cdfb..dbf09f27cb 100644
--- a/src/main/java/net/minecraftforge/registries/RegisterEvent.java
+++ b/src/main/java/net/minecraftforge/registries/RegisterEvent.java
@@ -12,6 +12,7 @@ import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.event.IModBusEvent;
+import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -21,7 +22,7 @@ import java.util.function.Supplier;
/**
* This event fires for each forge and vanilla registry when all registries are ready to have modded objects registered.
*
- * Fired on the {@link IModBusEvent mod bus}.
+ * Fired on the {@linkplain FMLJavaModLoadingContext#getModBusGroup() mod BusGroup}.
*
* @see #register(ResourceKey, ResourceLocation, Supplier)
* @see #register(ResourceKey, Consumer)