Skip to content

Commit

Permalink
📦 Added ClientStoppedEvent and fixed deps(?)
Browse files Browse the repository at this point in the history
  • Loading branch information
XyperCode committed Jan 24, 2025
1 parent fdd3e3d commit 360d29f
Show file tree
Hide file tree
Showing 15 changed files with 241 additions and 17 deletions.
12 changes: 12 additions & 0 deletions buildSrc/src/main/groovy/multiloader-common.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,18 @@ if (project.hasProperty('ci') && project.ci.toBoolean() && project.hasProperty('
version += '-SNAPSHOT'
}

configurations {
library {
extendsFrom api
}

compileClasspath.extendsFrom library
apiElements.extendsFrom library
runtimeElements.extendsFrom library
sourcesElements.extendsFrom library
javadocElements.extendsFrom library
}

base {
archivesName = "${mod_id}-${project.name}-${minecraft_version}"
}
Expand Down
5 changes: 3 additions & 2 deletions common/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,9 @@ dependencies {
compileOnlyApi group: 'io.github.llamalad7', name: 'mixinextras-common', version: '0.4.1'
annotationProcessor group: 'io.github.llamalad7', name: 'mixinextras-common', version: '0.4.1'

// Project Reactor
api group: 'io.projectreactor', name: 'reactor-core', version: '3.5.5'
// Extra dependencies
library("io.projectreactor:reactor-core:3.5.5")
library("org.hjson:hjson:3.1.0")
}

configurations {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package dev.ultreon.mods.xinexlib;

import java.io.IOException;

public class JsonException extends IOException {
public JsonException(String message) {
super(message);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package dev.ultreon.mods.xinexlib.client.event;

import dev.ultreon.mods.xinexlib.event.system.Cancelable;
import net.minecraft.client.Minecraft;

import java.util.Objects;

public final class ClientStoppedEvent implements Cancelable {
private final Minecraft client;
private boolean canceled;

public ClientStoppedEvent(Minecraft client) {
this.client = client;
}

public Minecraft getClient() {
return client;
}

@Override
public boolean equals(Object obj) {
if (obj == this) return true;
if (obj == null || obj.getClass() != this.getClass()) return false;
var that = (ClientStoppedEvent) obj;
return Objects.equals(this.client, that.client);
}

@Override
public int hashCode() {
return Objects.hash(client);
}

@Override
public String toString() {
return "ClientStoppingEvent[" + "client=" + client + ']';
}

@Override
public boolean isCanceled() {
return canceled;
}

@Override
public void cancel() {
this.canceled = true;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,10 @@

import java.util.Objects;

public abstract class ClientRenderTickEvent implements ClientEvent {
public abstract class ClientTickEvent implements ClientEvent {
private final Minecraft client;

public ClientRenderTickEvent(Minecraft client) {
public ClientTickEvent(Minecraft client) {
this.client = client;
}

Expand All @@ -25,7 +25,7 @@ public String toString() {
public boolean equals(Object obj) {
if (obj == this) return true;
if (obj == null || obj.getClass() != this.getClass()) return false;
var that = (ClientRenderTickEvent) obj;
var that = (ClientTickEvent) obj;
return Objects.equals(this.client, that.client);
}

Expand All @@ -34,13 +34,13 @@ public int hashCode() {
return Objects.hash(client);
}

public static class Pre extends ClientRenderTickEvent {
public static class Pre extends ClientTickEvent {
public Pre(Minecraft minecraft) {
super(minecraft);
}
}

public static class Post extends ClientRenderTickEvent {
public static class Post extends ClientTickEvent {
public Post(Minecraft minecraft) {
super(minecraft);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package dev.ultreon.mods.xinexlib.mixin;

import com.mojang.blaze3d.platform.Window;
import dev.ultreon.mods.xinexlib.client.event.ClientRenderTickEvent;
import dev.ultreon.mods.xinexlib.client.event.ClientTickEvent;
import dev.ultreon.mods.xinexlib.client.event.ClientStartedEvent;
import dev.ultreon.mods.xinexlib.client.event.ClientStoppedEvent;
import dev.ultreon.mods.xinexlib.client.event.ClientStoppingEvent;
import dev.ultreon.mods.xinexlib.event.system.EventSystem;
import net.minecraft.client.Minecraft;
Expand Down Expand Up @@ -32,16 +33,18 @@ private void shutdown(CallbackInfo ci) {
if (event.isCanceled()) {
GLFW.glfwSetWindowShouldClose(window.getWindow(), false);
ci.cancel();
} else {
EventSystem.MAIN.publish(new ClientStoppedEvent((Minecraft) (Object) this));
}
}

@Inject(at = @At("HEAD"), method = "runTick")
private void runTick$head(CallbackInfo ci) {
EventSystem.MAIN.publish(new ClientRenderTickEvent.Pre((Minecraft) (Object) this));
EventSystem.MAIN.publish(new ClientTickEvent.Pre((Minecraft) (Object) this));
}

@Inject(at = @At("RETURN"), method = "runTick")
private void runTick$return(CallbackInfo ci) {
EventSystem.MAIN.publish(new ClientRenderTickEvent.Post((Minecraft) (Object) this));
EventSystem.MAIN.publish(new ClientTickEvent.Post((Minecraft) (Object) this));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import dev.ultreon.mods.xinexlib.registrar.RegistrarManager;
import dev.ultreon.mods.xinexlib.tabs.CreativeModeTabBuilder;

import java.nio.file.Path;
import java.util.Optional;
import java.util.ServiceLoader;
import java.util.function.Consumer;
Expand Down Expand Up @@ -90,4 +91,8 @@ public static void registerCommand(CommandRegistrant registrant) {
public static ClientPlatform client() {
return PLATFORM.client();
}

public static Path getConfigDir() {
return PLATFORM.getConfigDir();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import dev.ultreon.mods.xinexlib.tabs.CreativeModeTabBuilder;
import net.minecraft.world.item.CreativeModeTab;

import java.nio.file.Path;
import java.util.Optional;
import java.util.function.Consumer;

Expand Down Expand Up @@ -87,4 +88,6 @@ default String getEnvironmentName() {
/// @param modId The mod id
/// @return The mod information or an empty optional
Optional<Mod> getMod(String modId);

Path getConfigDir();
}
5 changes: 3 additions & 2 deletions fabric/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@ dependencies {

modImplementation "maven.modrinth:modmenu:${modmenu_version}"

include api('io.projectreactor:reactor-core:3.5.5')
include api('org.reactivestreams:reactive-streams:1.0.4')
include library('io.projectreactor:reactor-core:3.5.5')
include library('org.reactivestreams:reactive-streams:1.0.4')
include library('org.hjson:hjson:3.1.0')
}

loom {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
import net.minecraft.commands.CommandSourceStack;
import net.minecraft.commands.Commands;

import java.nio.file.Path;
import java.util.*;
import java.util.function.Consumer;

Expand Down Expand Up @@ -104,6 +105,11 @@ public Optional<Mod> getMod(String modId) {
return FabricLoader.getInstance().getModContainer(modId).map(FabricMod::new);
}

@Override
public Path getConfigDir() {
return FabricLoader.getInstance().getConfigDir();
}

private void register(CommandDispatcher<CommandSourceStack> dispatcher, CommandBuildContext registryAccess, Commands.CommandSelection environment) {
for (CommandRegistrant registrant : commandRegistrants) {
registrant.register(dispatcher, registryAccess, environment);
Expand Down
5 changes: 3 additions & 2 deletions forge/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -84,8 +84,9 @@ dependencies {
api(fg.deobf('io.github.llamalad7:mixinextras-forge:0.4.1') { version { strictly '0.4.1' } })
annotationProcessor(group: 'io.github.llamalad7', name: 'mixinextras-forge', version: '0.4.1') { version { strictly '0.4.1' } }

jarJar minecraftLibrary('io.projectreactor:reactor-core:3.5.5')
jarJar minecraftLibrary('org.reactivestreams:reactive-streams:1.0.4')
jarJar minecraftLibrary(library('io.projectreactor:reactor-core:3.5.5'))
jarJar minecraftLibrary(library('org.reactivestreams:reactive-streams:1.0.4'))
jarJar minecraftLibrary(library('org.hjson:hjson:3.1.0'))
}

publishing {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@
import net.minecraftforge.fml.ModList;
import net.minecraftforge.fml.loading.FMLEnvironment;
import net.minecraftforge.fml.loading.FMLLoader;
import net.minecraftforge.fml.loading.FMLPaths;

import java.nio.file.Path;
import java.util.*;
import java.util.function.Consumer;

Expand Down Expand Up @@ -108,4 +110,9 @@ public ClientPlatform client() {
public Optional<Mod> getMod(String modId) {
return ModList.get().getModContainerById(modId).map(ForgeMod::new);
}

@Override
public Path getConfigDir() {
return FMLPaths.CONFIGDIR.get();
}
}
17 changes: 14 additions & 3 deletions neoforge/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,16 @@ neoForge {
}
}

configurations {
additionalClasspath {
extendsFrom api
}

clientAdditionalRuntimeClasspath.extendsFrom additionalClasspath
serverAdditionalRuntimeClasspath.extendsFrom additionalClasspath
dataAdditionalRuntimeClasspath.extendsFrom additionalClasspath
}

dependencies {
jarJar(api(group: 'io.projectreactor', name: 'reactor-core', version: '3.5.5')) {
version {
Expand All @@ -56,9 +66,10 @@ dependencies {
prefer '1.0.4' // The version actually used in your dev workspace
}
}
clientAdditionalRuntimeClasspath group: 'io.projectreactor', name: 'reactor-core', version: '3.5.5'
serverAdditionalRuntimeClasspath group: 'io.projectreactor', name: 'reactor-core', version: '3.5.5'
dataAdditionalRuntimeClasspath group: 'io.projectreactor', name: 'reactor-core', version: '3.5.5'
additionalClasspath group: 'io.projectreactor', name: 'reactor-core', version: '3.5.5'

jarJar(implementation(api("org.hjson:hjson:3.1.0")))
additionalClasspath("org.hjson:hjson:3.1.0")

api group: "io.github.llamalad7", name: 'mixinextras-neoforge', version: '0.4.1'
annotationProcessor group: "io.github.llamalad7", name: 'mixinextras-neoforge', version: '0.4.1'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@
import net.neoforged.fml.ModList;
import net.neoforged.fml.loading.FMLEnvironment;
import net.neoforged.fml.loading.FMLLoader;
import net.neoforged.fml.loading.FMLPaths;
import net.neoforged.neoforge.common.NeoForge;
import net.neoforged.neoforge.event.RegisterCommandsEvent;

import java.nio.file.Path;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
Expand Down Expand Up @@ -118,6 +120,11 @@ public Optional<Mod> getMod(String modId) {
return ModList.get().getModContainerById(modId).map(NeoForgeMod::new);
}

@Override
public Path getConfigDir() {
return FMLPaths.CONFIGDIR.get();
}

public void registerMod(String modId, IEventBus modEventBus) {
this.modEventBus = modEventBus;
this.registrars.put(modId, new NeoForgeRegistrarManager(modId, modEventBus));
Expand Down
Loading

0 comments on commit 360d29f

Please sign in to comment.