Register event listeners directly

This commit is contained in:
DBotThePony 2022-09-03 18:01:14 +07:00
parent 8f2f599f38
commit 3771b20563
Signed by: DBot
GPG Key ID: DCC23B5715498507
25 changed files with 161 additions and 188 deletions

View File

@ -2,8 +2,10 @@ package ru.dbotthepony.mc.otm;
import net.minecraft.MethodsReturnNonnullByDefault;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.EventPriority;
import net.minecraftforge.fml.ModList;
@ -15,10 +17,9 @@ import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import ru.dbotthepony.mc.otm.block.entity.blackhole.ExplosionQueue;
import ru.dbotthepony.mc.otm.capability.MatteryPlayerCapability;
import ru.dbotthepony.mc.otm.capability.MatteryCapability;
import ru.dbotthepony.mc.otm.capability.drive.DrivePool;
import ru.dbotthepony.mc.otm.client.ClientEventHandler;
import ru.dbotthepony.mc.otm.client.MatteryGUI;
import ru.dbotthepony.mc.otm.client.EventHandlerKt;
import ru.dbotthepony.mc.otm.client.model.GravitationStabilizerModel;
import ru.dbotthepony.mc.otm.client.model.TritaniumArmorModel;
import ru.dbotthepony.mc.otm.compat.mekanism.QIOKt;
@ -34,6 +35,8 @@ import ru.dbotthepony.mc.otm.registry.*;
import ru.dbotthepony.mc.otm.storage.*;
import ru.dbotthepony.mc.otm.worldgen.OreGen;
import static net.minecraftforge.common.MinecraftForge.EVENT_BUS;
import javax.annotation.ParametersAreNonnullByDefault;
// The value here should match an entry in the META-INF/mods.toml file
@ -77,31 +80,43 @@ public final class OverdriveThatMatters {
INSTANCE = this;
MRegistry.INSTANCE.initialize(FMLJavaModLoadingContext.get());
var modBus = FMLJavaModLoadingContext.get().getModEventBus();
FMLJavaModLoadingContext.get().getModEventBus().addListener(EventPriority.HIGHEST, this::setup);
FMLJavaModLoadingContext.get().getModEventBus().addListener(this::setupClient);
MRegistry.INSTANCE.initialize(modBus);
MinecraftForge.EVENT_BUS.register(this);
MinecraftForge.EVENT_BUS.register(GlobalEventHandlerKt.class);
MinecraftForge.EVENT_BUS.register(MatteryPlayerCapability.Companion);
MinecraftForge.EVENT_BUS.register(MatterRegistryKt.class);
MinecraftForge.EVENT_BUS.register(MatterDataKt.class);
MinecraftForge.EVENT_BUS.register(ExplosionQueue.Companion);
MinecraftForge.EVENT_BUS.register(AbstractWeaponItem.Companion);
MinecraftForge.EVENT_BUS.addListener(QuantumBatteryItem.Companion::tick);
FMLJavaModLoadingContext.get().getModEventBus().register(MatteryCapability.class);
FMLJavaModLoadingContext.get().getModEventBus().register(MRecipes.class);
MinecraftForge.EVENT_BUS.register(DrivePool.INSTANCE);
MinecraftForge.EVENT_BUS.register(PortableCondensationDriveItem.Companion);
FMLJavaModLoadingContext.get().getModEventBus().addListener(MatteryPlayerCapability::registerEffects);
modBus.addListener(EventPriority.HIGHEST, this::setup);
modBus.addListener(EventPriority.NORMAL, this::setupClient);
}
private void setup(final FMLCommonSetupEvent event) {
EVENT_BUS.addListener(EventPriority.LOWEST, DrivePool.INSTANCE::onServerPostTick);
EVENT_BUS.addListener(EventPriority.HIGHEST, DrivePool.INSTANCE::serverStopEvent);
EVENT_BUS.addListener(EventPriority.HIGHEST, DrivePool.INSTANCE::serverStartEvent);
EVENT_BUS.addListener(EventPriority.NORMAL, DrivePool.INSTANCE::onWorldSave);
EVENT_BUS.addListener(EventPriority.HIGHEST, GlobalEventHandlerKt::onServerStopped);
EVENT_BUS.addListener(EventPriority.HIGHEST, GlobalEventHandlerKt::onServerStopping);
EVENT_BUS.addListener(EventPriority.HIGHEST, GlobalEventHandlerKt::onServerStarting);
EVENT_BUS.addListener(EventPriority.LOWEST, GlobalEventHandlerKt::onWorldTick);
EVENT_BUS.addListener(EventPriority.LOWEST, GlobalEventHandlerKt::onServerTick);
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryPlayerCapability.Companion::onLivingTick);
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryPlayerCapability.Companion::onHurtEvent);
EVENT_BUS.addGenericListener(Entity.class, EventPriority.NORMAL, MatteryPlayerCapability.Companion::onAttachCapabilityEvent);
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryPlayerCapability.Companion::onPlayerChangeDimensionEvent);
EVENT_BUS.addListener(EventPriority.LOWEST, MatteryPlayerCapability.Companion::onPlayerDeath);
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryPlayerCapability.Companion::onPlayerCloneEvent);
EVENT_BUS.addListener(EventPriority.LOW, MatteryPlayerCapability.Companion::onPickupEvent);
EVENT_BUS.addListener(EventPriority.LOW, MatterDataKt::serverStartData);
EVENT_BUS.addListener(EventPriority.NORMAL, MatterRegistryKt::onPlayerJoin);
EVENT_BUS.addListener(EventPriority.NORMAL, ExplosionQueue.Companion::onWorldTick);
EVENT_BUS.addListener(EventPriority.NORMAL, AbstractWeaponItem.Companion::tick);
EVENT_BUS.addListener(EventPriority.NORMAL, QuantumBatteryItem.Companion::tick);
EVENT_BUS.addListener(EventPriority.LOWEST, PortableCondensationDriveItem.Companion::onPickupEvent);
MatteryPlayerCapability.Companion.registerEffects(event);
MatteryPlayerNetworkChannel.INSTANCE.register();
MenuNetworkChannel.INSTANCE.register();
WeaponNetworkChannel.INSTANCE.register();
@ -112,16 +127,31 @@ public final class OverdriveThatMatters {
ITEM_STORAGE = StorageRegistry.register(ItemStackWrapper.class, ItemStackWrapper.EMPTY, new ImpreciseFraction("3.125"));
if (ModList.get().isLoaded("mekanism")) {
MinecraftForge.EVENT_BUS.register(QIOKt.class);
MinecraftForge.EVENT_BUS.register(TooltipsKt.class);
EVENT_BUS.addGenericListener(BlockEntity.class, EventPriority.NORMAL, QIOKt::attachCapabilities);
}
OreGen.INSTANCE.register();
}
private void setupClient(final FMLClientSetupEvent event) {
MinecraftForge.EVENT_BUS.register(MatteryGUI.INSTANCE);
MinecraftForge.EVENT_BUS.register(EventHandlerKt.class);
EVENT_BUS.addListener(EventPriority.NORMAL, MatterRegistryKt::tooltipEvent);
EVENT_BUS.addListener(EventPriority.NORMAL, AbstractWeaponItem.Companion::playerRenderHook);
EVENT_BUS.addListener(EventPriority.NORMAL, AbstractWeaponItem.Companion::fovHook);
EVENT_BUS.addListener(EventPriority.NORMAL, AbstractWeaponItem.Companion::clickHook);
EVENT_BUS.addListener(EventPriority.NORMAL, AbstractWeaponItem.Companion::renderViewModel);
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryGUI.INSTANCE::onScreenRender);
EVENT_BUS.addListener(EventPriority.LOWEST, MatteryGUI.INSTANCE::onOpenGUIEvent);
EVENT_BUS.addListener(EventPriority.NORMAL, MatteryGUI.INSTANCE::onRenderGuiEvent);
EVENT_BUS.addListener(EventPriority.HIGH, MatteryGUI.INSTANCE::onLayerRenderEvent);
EVENT_BUS.addListener(EventPriority.NORMAL, ClientEventHandler.INSTANCE::inputEvent);
EVENT_BUS.addListener(EventPriority.NORMAL, ClientEventHandler.INSTANCE::screenOpen);
if (ModList.get().isLoaded("mekanism")) {
EVENT_BUS.addListener(EventPriority.NORMAL, TooltipsKt::tooltipEvent);
}
event.enqueueWork(GlobalEventHandlerKt::recordClientThread);

View File

@ -49,16 +49,4 @@ public class MatteryCapability {
@Nonnull
@NotNull
public static final Capability<IStrictEnergyHandler> MEKANISM_ENERGY = CapabilityManager.get(new CapabilityToken<>() {});
@SuppressWarnings("unused")
public static void register(final RegisterCapabilitiesEvent event) {
event.register(IMatteryEnergyStorage.class);
event.register(MatteryPlayerCapability.class);
event.register(IMatterHandler.class);
event.register(IPatternStorage.class);
event.register(IReplicationTaskProvider.class);
event.register(IMatteryDrive.class);
event.register(IStorageGraphNode.class);
event.register(IMatterGraphNode.class);
}
}

View File

@ -4,6 +4,7 @@ import net.minecraft.resources.ResourceLocation;
import net.minecraft.world.item.crafting.Recipe;
import net.minecraft.world.item.crafting.RecipeSerializer;
import net.minecraft.world.item.crafting.RecipeType;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
@ -35,8 +36,8 @@ public class MRecipes {
typesRegistry.register(MNames.PLATE_PRESS, () -> PLATE_PRESS);
}
public static void register() {
registry.register(FMLJavaModLoadingContext.get().getModEventBus());
typesRegistry.register(FMLJavaModLoadingContext.get().getModEventBus());
public static void register(IEventBus bus) {
registry.register(bus);
typesRegistry.register(bus);
}
}

View File

@ -180,7 +180,6 @@ interface IConditionalTickable : ITickable {
val canTick: Boolean
}
@SubscribeEvent(priority = EventPriority.LOWEST)
fun onServerTick(event: ServerTickEvent) {
if (event.phase === TickEvent.Phase.START) {
preServerTickTimers.tick()
@ -255,7 +254,6 @@ fun addPostServerTickerOnce(ticker: ITickable) {
postServerTickOnce.add(ticker)
}
@SubscribeEvent(priority = EventPriority.LOWEST)
fun onWorldTick(event: LevelTickEvent) {
if (event.phase === TickEvent.Phase.START) {
val it = preWorldTick[event.level]
@ -355,7 +353,6 @@ private fun clear() {
postWorldTickOnce.clear()
}
@SubscribeEvent(priority = EventPriority.HIGHEST)
fun onServerStarting(event: ServerAboutToStartEvent) {
clear()
SERVER_IS_DYING = false
@ -363,13 +360,11 @@ fun onServerStarting(event: ServerAboutToStartEvent) {
_serverThread = Thread.currentThread()
}
@SubscribeEvent(priority = EventPriority.HIGHEST)
fun onServerStopping(event: ServerStoppingEvent) {
clear()
SERVER_IS_DYING = true
}
@SubscribeEvent(priority = EventPriority.HIGHEST)
fun onServerStopped(event: ServerStoppedEvent) {
if (!SERVER_IS_DYING) {
LOGGER.fatal("ServerStoppingEvent did not fire. If server has crashed this is normal. However, if server finished it's work 'gracefully' this is a bug.")

View File

@ -765,10 +765,8 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, IMatteryEn
@Suppress("unused")
companion object {
@JvmField
val UNAFFECTED_EFFECTS = ObjectArraySet<MobEffect>()
@JvmStatic
fun registerEffects(event: FMLCommonSetupEvent) {
UNAFFECTED_EFFECTS.add(MobEffects.CONDUIT_POWER)
UNAFFECTED_EFFECTS.add(MobEffects.HEAL)
@ -785,7 +783,6 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, IMatteryEn
UNAFFECTED_EFFECTS.add(MobEffects.DOLPHINS_GRACE)
}
@SubscribeEvent
fun onLivingTick(event: LivingTickEvent) {
val ent = event.entity
@ -800,7 +797,6 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, IMatteryEn
}
}
@SubscribeEvent(priority = EventPriority.LOWEST)
fun onHurtEvent(event: LivingHurtEvent) {
if (event.isCanceled) {
return
@ -812,8 +808,7 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, IMatteryEn
const val CAPABILITY_KEY = "otm_player"
val CAPABILITY_LOCATION = ResourceLocation(OverdriveThatMatters.MOD_ID, CAPABILITY_KEY)
@SubscribeEvent
fun onAttachCapabilityEvent(event: AttachCapabilitiesEvent<Entity?>) {
fun onAttachCapabilityEvent(event: AttachCapabilitiesEvent<Entity>) {
val ent = event.`object`
if (ent is Player) {
@ -821,18 +816,12 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, IMatteryEn
}
}
@SubscribeEvent
fun onPlayerChangeDimensionEvent(event: PlayerEvent.PlayerChangedDimensionEvent) {
event.entity.getCapability(MatteryCapability.MATTERY_PLAYER)
.ifPresentK { it.invalidateNetworkState() }
}
@SubscribeEvent(priority = EventPriority.LOWEST)
fun onPlayerDeath(event: LivingDeathEvent) {
if (event.isCanceled) {
return
}
val ply = event.entity as? Player ?: return
val mattery = ply.matteryPlayer ?: return
@ -859,7 +848,6 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, IMatteryEn
}
}
@SubscribeEvent
fun onPlayerCloneEvent(event: PlayerEvent.Clone) {
val it = event.entity.matteryPlayer ?: return
@ -892,7 +880,6 @@ class MatteryPlayerCapability(val ply: Player) : ICapabilityProvider, IMatteryEn
private val itemPickupTicks = WeakHashMap<Player, WeakHashMap<ItemEntity, MutableInt>>()
@SubscribeEvent(priority = EventPriority.LOW)
fun onPickupEvent(event: EntityItemPickupEvent) {
if (event.item.owner != null && event.item.owner != event.entity.uuid && event.item.age < 200 || event.item.item.isEmpty) {
return

View File

@ -36,7 +36,6 @@ import java.util.ArrayList
* 5. Mods which check items for being stack-able even with stack size of 1 gonna compare nbt tag,
* which will be performance tanking due to clause 1.
*/
@Suppress("unused")
object DrivePool {
private val LOGGER = LogManager.getLogger()
private val pool = Object2ObjectAVLTreeMap<UUID, WeakDriveReference>()
@ -130,7 +129,6 @@ object DrivePool {
}
}
@SubscribeEvent(priority = EventPriority.LOWEST)
fun onServerPostTick(event: ServerTickEvent) {
if (event.phase == TickEvent.Phase.END) {
if (exception != null) {
@ -152,7 +150,6 @@ object DrivePool {
return Thread.currentThread() === serverThread
}
@SubscribeEvent(priority = EventPriority.HIGHEST)
fun serverStartEvent(event: ServerAboutToStartEvent) {
if (thread?.isAlive == true) {
LOGGER.error("FMLServerStartedEvent fired twice.")
@ -172,7 +169,6 @@ object DrivePool {
thread = Thread(null, this::thread, "Overdrive That Matters DrivePool IO").also { it.start() }
}
@SubscribeEvent(priority = EventPriority.HIGHEST)
fun serverStopEvent(event: ServerStoppingEvent) {
val thread = thread
@ -189,7 +185,6 @@ object DrivePool {
pool.clear()
}
@SubscribeEvent
fun onWorldSave(event: LevelEvent.Save) {
writeBacklog()
}

View File

@ -0,0 +1,53 @@
package ru.dbotthepony.mc.otm.client
import net.minecraft.client.gui.screens.inventory.InventoryScreen
import net.minecraftforge.client.event.MovementInputUpdateEvent
import net.minecraftforge.client.event.ScreenEvent
import ru.dbotthepony.mc.otm.capability.matteryPlayer
import ru.dbotthepony.mc.otm.client.screen.ExoSuitInventoryScreen
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
object ClientEventHandler {
fun inputEvent(event: MovementInputUpdateEvent) {
val ply = event.entity
val input = event.input
val cap = ply.matteryPlayer ?: return
if (cap.hasFeature(AndroidFeatures.AIR_BAGS))
return
if (ply.abilities.mayfly) {
cap.lastJumpTicks = 14
} else {
if (ply.isInWater) {
if (ply.isOnGround) {
cap.lastJumpTicks = 14
}
if (ply.isSwimming) {
ply.isSwimming = false
}
if (cap.lastJumpTicks <= 0) {
input.jumping = false
input.up = false
} else {
cap.lastJumpTicks--
}
}
}
}
fun screenOpen(event: ScreenEvent.Opening) {
if (minecraft.player?.isCreative == true) {
return
}
val player = minecraft.player?.matteryPlayer ?: return
if (player.hasExoSuit && event.newScreen is InventoryScreen) {
event.newScreen = ExoSuitInventoryScreen(player.exoSuitMenu)
}
}
}

View File

@ -1,56 +0,0 @@
package ru.dbotthepony.mc.otm.client
import net.minecraft.client.gui.screens.inventory.InventoryScreen
import net.minecraftforge.client.event.MovementInputUpdateEvent
import net.minecraftforge.client.event.ScreenEvent
import net.minecraftforge.eventbus.api.SubscribeEvent
import ru.dbotthepony.mc.otm.capability.matteryPlayer
import ru.dbotthepony.mc.otm.client.screen.ExoSuitInventoryScreen
import ru.dbotthepony.mc.otm.registry.AndroidFeatures
@SubscribeEvent
@Suppress("unused")
fun inputEvent(event: MovementInputUpdateEvent) {
val ply = event.entity
val input = event.input
val cap = ply.matteryPlayer ?: return
if (cap.hasFeature(AndroidFeatures.AIR_BAGS))
return
if (ply.abilities.mayfly) {
cap.lastJumpTicks = 14
} else {
if (ply.isInWater) {
if (ply.isOnGround) {
cap.lastJumpTicks = 14
}
if (ply.isSwimming) {
ply.isSwimming = false
}
if (cap.lastJumpTicks <= 0) {
input.jumping = false
input.up = false
} else {
cap.lastJumpTicks--
}
}
}
}
@SubscribeEvent
@Suppress("unused")
fun screenOpen(event: ScreenEvent.Opening) {
if (minecraft.player?.isCreative == true) {
return
}
val player = minecraft.player?.matteryPlayer ?: return
if (player.hasExoSuit && event.newScreen is InventoryScreen) {
event.newScreen = ExoSuitInventoryScreen(player.exoSuitMenu)
}
}

View File

@ -39,8 +39,6 @@ object MatteryGUI {
private val button_shaker = Random()
@SubscribeEvent
@Suppress("unused")
fun onScreenRender(event: ScreenEvent.Render.Pre) {
if (knownButtonScreen != null && knownButton == null) {
for (widget in knownButtonScreen!!.renderables) {
@ -87,8 +85,6 @@ object MatteryGUI {
}
}
@SubscribeEvent(priority = EventPriority.LOWEST)
@Suppress("unused")
fun onOpenGUIEvent(event: ScreenEvent.Opening) {
knownButtonX = -1
knownButtonY = -1
@ -198,14 +194,10 @@ object MatteryGUI {
popScissorRect()
}
@SubscribeEvent
@Suppress("unused")
fun onRenderGuiEvent(event: RenderGuiEvent.Post) {
showIteration(event)
}
@SubscribeEvent(priority = EventPriority.HIGH)
@Suppress("unused")
fun onLayerRenderEvent(event: RenderGuiOverlayEvent.Pre) {
if (event.overlay != FOOD_LEVEL_ELEMENT && event.overlay != AIR_LEVEL_ELEMENT) {
return

View File

@ -9,8 +9,6 @@ import ru.dbotthepony.mc.otm.capability.isMekanismLoaded
private val BLACKHOLE_IMMUNITY = TranslatableComponent("otm.item.blackhole_immunity").withStyle(ChatFormatting.DARK_GRAY)
@SubscribeEvent
@Suppress("unused")
fun tooltipEvent(event: ItemTooltipEvent) {
if (!isMekanismLoaded) {
throw IllegalStateException("Mekanism is not loaded!")

View File

@ -100,7 +100,6 @@ class PortableCondensationDriveItem(capacity: Int) :
const val MAX_FILTERS = 4 * 3
const val FILTER_PATH = "filter"
@SubscribeEvent(priority = EventPriority.LOWEST)
fun onPickupEvent(event: EntityItemPickupEvent) {
if (event.item.owner != null && event.item.owner != event.entity.uuid && event.item.age < 200 || event.item.item.isEmpty) {
return

View File

@ -18,7 +18,6 @@ import net.minecraftforge.client.event.RenderHandEvent
import net.minecraftforge.client.event.RenderPlayerEvent
import net.minecraftforge.client.event.ViewportEvent
import net.minecraftforge.event.TickEvent
import net.minecraftforge.eventbus.api.SubscribeEvent
import net.minecraftforge.fml.LogicalSide
import net.minecraftforge.network.NetworkEvent
import ru.dbotthepony.mc.otm.*
@ -276,8 +275,6 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
private var lastFov = 1.0
private var lastFovTime = 0L
@SubscribeEvent
@Suppress("unused")
fun fovHook(event: ViewportEvent.ComputeFov) {
val player = event.camera.entity as? Player ?: return
@ -309,8 +306,6 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
}
}
@SubscribeEvent
@Suppress("unused")
fun playerRenderHook(event: RenderPlayerEvent.Pre) {
if (event.entity.mainHandItem.item is AbstractWeaponItem<*> && event.entity.offhandItem.isEmpty) {
event.renderer.model.rightArmPose = HumanoidModel.ArmPose.BOW_AND_ARROW
@ -318,8 +313,6 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
}
}
@SubscribeEvent
@Suppress("unused")
fun clickHook(event: InputEvent.InteractionKeyMappingTriggered) {
val player = Minecraft.getInstance().player!!
@ -352,8 +345,7 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
0.6,
)
@SubscribeEvent
@Suppress("unused", "unchecked_cast")
@Suppress("unchecked_cast")
fun renderViewModel(event: RenderHandEvent) {
if (inRender) {
return
@ -523,8 +515,7 @@ abstract class AbstractWeaponItem<D : WeaponDataTable>(val tables: KClass<D>, ra
}
}
@SubscribeEvent
@Suppress("unused", "unchecked_cast")
@Suppress("unchecked_cast")
fun tick(event: TickEvent.PlayerTickEvent) {
if (event.phase != TickEvent.Phase.START)
return

View File

@ -143,8 +143,6 @@ private enum class ResultType {
private data class Result(val type: ResultType = ResultType.UNKNOWN_VALUE, val tuple: MatterTuple? = null)
@SubscribeEvent
@Suppress("unused")
fun serverStartData(event: ServerStartedEvent) {
rootEntriesAccess.clear()
derivedEntriesAccess.clear()

View File

@ -9,7 +9,6 @@ import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraftforge.event.entity.player.ItemTooltipEvent
import net.minecraftforge.event.entity.player.PlayerEvent
import net.minecraftforge.eventbus.api.SubscribeEvent
import net.minecraftforge.network.NetworkEvent
import net.minecraftforge.network.PacketDistributor
import org.lwjgl.glfw.GLFW
@ -213,8 +212,6 @@ fun getMatterValue(stack: ItemStack): MatterTuple {
return getMatterValue(stack, 0)
}
@SubscribeEvent
@Suppress("unused")
fun onPlayerJoin(event: PlayerEvent.PlayerLoggedInEvent) {
if (NULLABLE_MINECRAFT_SERVER != null) {
RegistryNetworkChannel.send(PacketDistributor.PLAYER.with { event.entity as ServerPlayer }, RegistryPacketFullUpdate(MatterRegistryType.ROOT, rootEntries))
@ -222,8 +219,6 @@ fun onPlayerJoin(event: PlayerEvent.PlayerLoggedInEvent) {
}
}
@SubscribeEvent
@Suppress("unused")
fun tooltipEvent(event: ItemTooltipEvent) {
val window = Minecraft.getInstance().window.window

View File

@ -1,5 +1,6 @@
package ru.dbotthepony.mc.otm.registry
import net.minecraftforge.eventbus.api.IEventBus
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister
import ru.dbotthepony.mc.otm.OverdriveThatMatters
@ -18,7 +19,7 @@ object AndroidFeatures {
val NANOBOTS_ARMOR: AndroidFeatureType<*> by registry.register(MNames.NANOBOTS_ARMOR) { AndroidFeatureType(::NanobotsArmor) }
val EXTENDED_REACH: AndroidFeatureType<*> by registry.register(MNames.EXTENDED_REACH) { AndroidFeatureType(::ExtendedReach) }
internal fun register() {
registry.register(FMLJavaModLoadingContext.get().modEventBus)
internal fun register(bus: IEventBus) {
registry.register(bus)
}
}

View File

@ -4,6 +4,7 @@
package ru.dbotthepony.mc.otm.registry
import net.minecraft.resources.ResourceLocation
import net.minecraftforge.eventbus.api.IEventBus
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.RegistryObject
@ -76,8 +77,8 @@ object AndroidResearch {
private val registry = DeferredRegister.create(MRegistry.ANDROID_RESEARCH_KEY, OverdriveThatMatters.MOD_ID)
internal fun register() {
registry.register(FMLJavaModLoadingContext.get().modEventBus)
internal fun register(bus: IEventBus) {
registry.register(bus)
}
val AIR_BAGS: AndroidResearchType<*> by registry.register(MNames.AIR_BAGS) {

View File

@ -1,5 +1,6 @@
package ru.dbotthepony.mc.otm.registry
import net.minecraftforge.eventbus.api.IEventBus
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.ForgeRegistries
@ -15,7 +16,7 @@ object LootModifiers {
registry.register("loot_appender_basic") { LootTableBasicAppender.CODEC }
}
internal fun register() {
registry.register(FMLJavaModLoadingContext.get().modEventBus)
internal fun register(bus: IEventBus) {
registry.register(bus)
}
}

View File

@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.registry
import net.minecraft.client.renderer.blockentity.BlockEntityRenderers
import net.minecraft.world.level.block.entity.BlockEntityType
import net.minecraftforge.eventbus.api.IEventBus
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister
@ -53,9 +54,9 @@ object MBlockEntities {
val DEBUG_EXPLOSION_SMALL: BlockEntityType<*> by registry.register(MNames.DEBUG_EXPLOSION_SMALL) { BlockEntityType.Builder.of(::BlockEntityExplosionDebugger, MBlocks.DEBUG_EXPLOSION_SMALL).build(null) }
val DEBUG_SPHERE_POINTS: BlockEntityType<*> by registry.register(MNames.DEBUG_SPHERE_POINTS) { BlockEntityType.Builder.of(::BlockEntitySphereDebugger, MBlocks.DEBUG_SPHERE_POINTS).build(null) }
internal fun register() {
registry.register(FMLJavaModLoadingContext.get().modEventBus)
FMLJavaModLoadingContext.get().modEventBus.addListener(this::registerClient)
internal fun register(bus: IEventBus) {
registry.register(bus)
bus.addListener(this::registerClient)
}
@Suppress("unchecked_cast")

View File

@ -11,6 +11,7 @@ import net.minecraft.world.level.block.SoundType
import net.minecraft.world.level.block.state.BlockBehaviour
import net.minecraft.world.level.material.Material
import net.minecraft.world.level.material.MaterialColor
import net.minecraftforge.eventbus.api.IEventBus
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister
@ -24,9 +25,9 @@ import ru.dbotthepony.mc.otm.block.storage.*
object MBlocks {
private val registry = DeferredRegister.create(ForgeRegistries.BLOCKS, OverdriveThatMatters.MOD_ID)
internal fun register() {
registry.register(FMLJavaModLoadingContext.get().modEventBus)
FMLJavaModLoadingContext.get().modEventBus.addListener(this::registerClient)
internal fun register(bus: IEventBus) {
registry.register(bus)
bus.addListener(this::registerClient)
}
private fun registerClient(event: FMLClientSetupEvent) {

View File

@ -5,6 +5,7 @@ import net.minecraft.client.renderer.entity.EntityRenderers
import net.minecraft.world.entity.Entity
import net.minecraft.world.entity.EntityType
import net.minecraft.world.entity.MobCategory
import net.minecraftforge.eventbus.api.IEventBus
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister
@ -20,9 +21,9 @@ object MEntityTypes {
EntityType.Builder.of<PlasmaProjectile>({ _, level -> PlasmaProjectile(level) }, MobCategory.MISC).sized(0.4f, 0.4f).build(MNames.PLASMA)
}
internal fun register() {
registry.register(FMLJavaModLoadingContext.get().modEventBus)
FMLJavaModLoadingContext.get().modEventBus.addListener(this::registerClient)
internal fun register(bus: IEventBus) {
registry.register(bus)
bus.addListener(this::registerClient)
}
@Suppress("unchecked_cast")

View File

@ -10,6 +10,7 @@ import net.minecraft.world.item.*
import net.minecraft.world.item.crafting.Ingredient
import net.minecraft.world.level.Level
import net.minecraftforge.common.ForgeTier
import net.minecraftforge.eventbus.api.IEventBus
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.ForgeRegistries
@ -24,8 +25,8 @@ object MItems {
private val DEFAULT_PROPERTIES_DECORATIVE = Item.Properties().stacksTo(64).tab(OverdriveThatMatters.INSTANCE.CREATIVE_TAB_DECORATIVE)
private val registry: DeferredRegister<Item> = DeferredRegister.create(ForgeRegistries.ITEMS, OverdriveThatMatters.MOD_ID)
internal fun register() {
registry.register(FMLJavaModLoadingContext.get().modEventBus)
internal fun register(bus: IEventBus) {
registry.register(bus)
}
val ANDROID_STATION: Item by registry.register(MNames.ANDROID_STATION) { BlockItem(MBlocks.ANDROID_STATION, DEFAULT_PROPERTIES) }

View File

@ -2,6 +2,7 @@ package ru.dbotthepony.mc.otm.registry
import net.minecraft.client.gui.screens.MenuScreens
import net.minecraft.world.inventory.MenuType
import net.minecraftforge.eventbus.api.IEventBus
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister
@ -36,9 +37,9 @@ object MMenus {
val STORAGE_IMPORTER: MenuType<*> by registry.register(MNames.STORAGE_IMPORTER) { MenuType(::StorageImporterMenu) }
val STORAGE_POWER_SUPPLIER: MenuType<*> by registry.register(MNames.STORAGE_POWER_SUPPLIER) { MenuType(::StoragePowerSupplierMenu) }
internal fun register() {
registry.register(FMLJavaModLoadingContext.get().modEventBus)
FMLJavaModLoadingContext.get().modEventBus.addListener(this::registerClient)
internal fun register(bus: IEventBus) {
registry.register(bus)
bus.addListener(this::registerClient)
}
@Suppress("unchecked_cast")

View File

@ -15,6 +15,7 @@ import net.minecraft.world.level.block.state.BlockBehaviour
import net.minecraft.world.level.block.state.BlockState
import net.minecraft.world.level.material.Material
import net.minecraft.world.level.material.MaterialColor
import net.minecraftforge.eventbus.api.IEventBus
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.ForgeRegistry
import net.minecraftforge.registries.IForgeRegistry
@ -205,21 +206,20 @@ object MRegistry {
.strength(4f))
})
fun initialize(context: FMLJavaModLoadingContext) {
context.modEventBus.addListener(this::register)
context.modEventBus.register(MStats)
context.modEventBus.register(LootModifiers)
fun initialize(bus: IEventBus) {
bus.addListener(this::register)
bus.addListener(MStats::registerVanilla)
MBlocks.register()
MBlockEntities.register()
MEntityTypes.register()
MMenus.register()
MItems.register()
AndroidFeatures.register()
AndroidResearch.register()
MSoundEvents.register()
LootModifiers.register()
MBlocks.register(bus)
MBlockEntities.register(bus)
MEntityTypes.register(bus)
MMenus.register(bus)
MItems.register(bus)
AndroidFeatures.register(bus)
AndroidResearch.register(bus)
MSoundEvents.register(bus)
LootModifiers.register(bus)
MRecipes.register()
MRecipes.register(bus)
}
}

View File

@ -4,6 +4,7 @@ import net.minecraft.resources.ResourceLocation
import net.minecraft.sounds.SoundEvent
import net.minecraft.sounds.SoundEvents
import net.minecraft.world.entity.EntityType
import net.minecraftforge.eventbus.api.IEventBus
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.ForgeRegistries
@ -18,7 +19,7 @@ object MSoundEvents {
val PLASMA_WEAPON_OVERHEAT: SoundEvent by make("item.plasma_weapon_overheat")
val PLAYER_BECOME_ANDROID: SoundEvent by make("player_become_android")
internal fun register() {
registry.register(FMLJavaModLoadingContext.get().modEventBus)
internal fun register(bus: IEventBus) {
registry.register(bus)
}
}

View File

@ -10,8 +10,6 @@ import ru.dbotthepony.mc.otm.registry.StatNames.HEALTH_REGENERATED
import ru.dbotthepony.mc.otm.registry.StatNames.POWER_CONSUMED
object MStats {
@SubscribeEvent
@Suppress("unused")
fun registerVanilla(event: FMLCommonSetupEvent) {
event.enqueueWork {
Registry.register(Registry.CUSTOM_STAT, DAMAGE_ABSORBED, DAMAGE_ABSORBED)