diff --git a/mdk/build.gradle b/mdk/build.gradle
index 209ac8758d..844426001c 100644
--- a/mdk/build.gradle
+++ b/mdk/build.gradle
@@ -145,7 +145,9 @@ dependencies {
// Forge 1.21.6+ uses EventBus 7, which shifts most of its runtime validation to compile-time via an annotation processor
// to improve performance in production environments. This line is required to enable said compile-time validation
// in your development environment, helping you catch issues early.
- annotationProcessor 'net.minecraftforge:eventbus-validator:7.0-beta.8'
+ // This relies on more obscure Java compiler APIs that may surface bugs. Update your JDK, report bugs to the OpenJDK
+ // project and/or comment out this line if you encounter issues.
+ annotationProcessor 'net.minecraftforge:eventbus-validator:7.0-beta.9'
// Example mod dependency with JEI
// The JEI API is declared for compile time use, while the full JEI artifact is used at runtime
diff --git a/settings.gradle b/settings.gradle
index 5a6e91749b..ac7dc52d31 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -32,8 +32,8 @@ dependencyResolutionManagement {
library('accesstransformers', 'net.minecraftforge:accesstransformers:8.2.2')
library('coremods', 'net.minecraftforge:coremods:5.2.6')
library('nashorn', 'org.openjdk.nashorn:nashorn-core:15.4') // Needed by coremods, because the JRE no longer ships JS
- library('eventbus', 'net.minecraftforge:eventbus:7.0-beta.8')
- library('eventbus-validator', 'net.minecraftforge:eventbus-validator:7.0-beta.8')
+ library('eventbus', 'net.minecraftforge:eventbus:7.0-beta.9')
+ library('eventbus-validator', 'net.minecraftforge:eventbus-validator:7.0-beta.9')
library('mergetool-api', 'net.minecraftforge:mergetool-api:1.0')
library('mixin', 'org.spongepowered:mixin:0.8.7')
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterClientTooltipComponentFactoriesEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterClientTooltipComponentFactoriesEvent.java
index 194b00952d..e6bc5c8260 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterClientTooltipComponentFactoriesEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterClientTooltipComponentFactoriesEvent.java
@@ -9,6 +9,7 @@ import net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent
import net.minecraft.world.inventory.tooltip.TooltipComponent;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
+import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.LogicalSide;
import net.minecraftforge.fml.event.IModBusEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
@@ -21,12 +22,10 @@ import java.util.function.Function;
* Allows users to register custom {@link net.minecraft.client.gui.screens.inventory.tooltip.ClientTooltipComponent}
* factories for their {@link net.minecraft.world.inventory.tooltip.TooltipComponent} types.
*
- *
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},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*/
-public final class RegisterClientTooltipComponentFactoriesEvent implements IModBusEvent {
+public final class RegisterClientTooltipComponentFactoriesEvent implements SelfDestructing, IModBusEvent {
public static EventBus getBus(BusGroup modBusGroup) {
return IModBusEvent.getBus(modBusGroup, RegisterClientTooltipComponentFactoriesEvent.class);
}
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterItemDecorationsEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterItemDecorationsEvent.java
index d05c20aeea..679d579581 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterItemDecorationsEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterItemDecorationsEvent.java
@@ -11,6 +11,7 @@ import net.minecraftforge.client.IItemDecorator;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
+import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.LogicalSide;
import net.minecraftforge.fml.event.IModBusEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
@@ -23,12 +24,10 @@ import java.util.Map;
/**
* Allows users to register custom {@linkplain IItemDecorator IItemDecorator} to Items.
*
- * This event is not {@linkplain Cancelable cancelable}, and does not {@linkplain HasResult have a result}.
- *
*
This event is fired on the {@linkplain FMLJavaModLoadingContext#getModEventBus() mod-specific event bus},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*/
-public final class RegisterItemDecorationsEvent implements IModBusEvent {
+public final class RegisterItemDecorationsEvent implements SelfDestructing, IModBusEvent {
public static EventBus getBus(BusGroup modBusGroup) {
return IModBusEvent.getBus(modBusGroup, RegisterItemDecorationsEvent.class);
}
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterKeyMappingsEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterKeyMappingsEvent.java
index c87689d60f..8ddeb7903b 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterKeyMappingsEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterKeyMappingsEvent.java
@@ -9,6 +9,7 @@ import net.minecraft.client.KeyMapping;
import net.minecraft.client.Options;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
+import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.LogicalSide;
import net.minecraftforge.fml.event.IModBusEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
@@ -18,12 +19,10 @@ import org.jetbrains.annotations.ApiStatus;
/**
* Allows users to register custom {@link net.minecraft.client.KeyMapping key mappings}.
*
- * 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},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*/
-public final class RegisterKeyMappingsEvent implements IModBusEvent {
+public final class RegisterKeyMappingsEvent implements SelfDestructing, IModBusEvent {
public static EventBus getBus(BusGroup modBusGroup) {
return IModBusEvent.getBus(modBusGroup, RegisterKeyMappingsEvent.class);
}
diff --git a/src/main/java/net/minecraftforge/client/event/RegisterTextureAtlasSpriteLoadersEvent.java b/src/main/java/net/minecraftforge/client/event/RegisterTextureAtlasSpriteLoadersEvent.java
index 78891f6b07..2704c681df 100644
--- a/src/main/java/net/minecraftforge/client/event/RegisterTextureAtlasSpriteLoadersEvent.java
+++ b/src/main/java/net/minecraftforge/client/event/RegisterTextureAtlasSpriteLoadersEvent.java
@@ -12,6 +12,7 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.client.textures.ITextureAtlasSpriteLoader;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
+import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.LogicalSide;
import net.minecraftforge.fml.ModLoadingContext;
import net.minecraftforge.fml.event.IModBusEvent;
@@ -21,12 +22,10 @@ import org.jetbrains.annotations.ApiStatus;
/**
* Allows users to register custom {@link ITextureAtlasSpriteLoader texture atlas sprite loaders}.
*
- * 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},
* only on the {@linkplain LogicalSide#CLIENT logical client}.
*/
-public final class RegisterTextureAtlasSpriteLoadersEvent implements IModBusEvent {
+public final class RegisterTextureAtlasSpriteLoadersEvent implements SelfDestructing, IModBusEvent {
public static EventBus getBus(BusGroup modBusGroup) {
return IModBusEvent.getBus(modBusGroup, RegisterTextureAtlasSpriteLoadersEvent.class);
}
diff --git a/src/main/java/net/minecraftforge/fml/event/lifecycle/FMLConstructModEvent.java b/src/main/java/net/minecraftforge/fml/event/lifecycle/FMLConstructModEvent.java
index be12fbfb07..d4886d264f 100644
--- a/src/main/java/net/minecraftforge/fml/event/lifecycle/FMLConstructModEvent.java
+++ b/src/main/java/net/minecraftforge/fml/event/lifecycle/FMLConstructModEvent.java
@@ -7,6 +7,7 @@ package net.minecraftforge.fml.event.lifecycle;
import net.minecraftforge.eventbus.api.bus.BusGroup;
import net.minecraftforge.eventbus.api.bus.EventBus;
+import net.minecraftforge.eventbus.api.event.characteristic.SelfDestructing;
import net.minecraftforge.fml.ModContainer;
import net.minecraftforge.fml.ModLoadingStage;
import net.minecraftforge.fml.event.IModBusEvent;
@@ -15,7 +16,7 @@ import net.minecraftforge.fml.event.IModBusEvent;
* Supplied as a param to your mod's constructor to get access
* to the mod EventBus and various mod-specific objects.
*/
-public final class FMLConstructModEvent extends ParallelDispatchEvent {
+public final class FMLConstructModEvent extends ParallelDispatchEvent implements SelfDestructing {
public static EventBus getBus(BusGroup modBusGroup) {
return IModBusEvent.getBus(modBusGroup, FMLConstructModEvent.class);
}
diff --git a/src/test/java/com/example/examplemod/ExampleMod.java b/src/test/java/com/example/examplemod/ExampleMod.java
index 6de1b0d2fc..217f37b57e 100644
--- a/src/test/java/com/example/examplemod/ExampleMod.java
+++ b/src/test/java/com/example/examplemod/ExampleMod.java
@@ -27,7 +27,7 @@ import org.slf4j.Logger;
// The value here should match an entry in the META-INF/mods.toml file
@Mod(ExampleMod.MODID)
-public class ExampleMod {
+public final class ExampleMod {
// Define mod id in a common place for everything to reference
public static final String MODID = "examplemod";
// Directly reference a slf4j logger