Skip to content

Commit

Permalink
✨ More API changes + additions
Browse files Browse the repository at this point in the history
Signed-off-by: XyperCode <xypercode@ultreon.dev>
  • Loading branch information
XyperCode committed Dec 15, 2024
1 parent fc695c1 commit 9d24fe6
Show file tree
Hide file tree
Showing 47 changed files with 601 additions and 174 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/gradle-publish-commit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,12 @@ jobs:
run: echo "branch=${GITHUB_HEAD_REF:-${GITHUB_REF#refs/heads/}}" >> $GITHUB_OUTPUT
id: extract_branch
- name: Build with Gradle
run: ./gradlew build
run: ./gradlew build -Pci=true -Pbranch=${{ steps.extract_branch.outputs.branch }} -Psnapshot=true

# The USERNAME and TOKEN need to correspond to the credentials environment variables used in
# the publishing section of your build.gradle
- name: Publish to GitHub Packages
run: ./gradlew publish -Pversion=${{ steps.extract_branch.outputs.branch }}-SNAPSHOT
run: ./gradlew publish -Pci=true -Pbranch=${{ steps.extract_branch.outputs.branch }} -Psnapshot=true
env:
USERNAME: ${{ github.actor }}
TOKEN: ${{ secrets.GITHUB_TOKEN }}
4 changes: 2 additions & 2 deletions .github/workflows/gradle-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,12 @@ jobs:
uses: gradle/actions/setup-gradle@af1da67850ed9a4cedd57bfd976089dd991e2582 # v4.0.0

- name: Build with Gradle
run: ./gradlew build
run: ./gradlew build -Pci=true

# The USERNAME and TOKEN need to correspond to the credentials environment variables used in
# the publishing section of your build.gradle
- name: Publish to GitHub Packages
run: ./gradlew publish
run: ./gradlew publish -Pci=true
env:
USERNAME: ${{ github.actor }}
TOKEN: ${{ secrets.GITHUB_TOKEN }}
4 changes: 4 additions & 0 deletions buildSrc/src/main/groovy/multiloader-common.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ plugins {
id 'maven-publish'
}

if (project.hasProperty('ci') && project.ci.toBoolean() && project.hasProperty('snapshot') && project.snapshot.toBoolean()) {
version += '-SNAPSHOT'
}

base {
archivesName = "${mod_id}-${project.name}-${minecraft_version}"
}
Expand Down
18 changes: 9 additions & 9 deletions common/src/main/java/dev/ultreon/mods/xinexlib/EnvExecutor.java
Original file line number Diff line number Diff line change
@@ -1,27 +1,27 @@
package dev.ultreon.mods.xinexlib;

import dev.ultreon.mods.xinexlib.platform.Services;
import dev.ultreon.mods.xinexlib.platform.XinexPlatform;

import java.util.concurrent.Callable;
import java.util.function.Supplier;

public class EnvExecutor {
public static void runInEnv(Env env, Supplier<Runnable> runnable) {
if (Services.getEnv() == env) runnable.get().run();
if (XinexPlatform.getEnv() == env) runnable.get().run();
}

public static void runInEnv(Env env, Supplier<Runnable> runnable, Runnable fallback) {
if (Services.getEnv() == env) runnable.get().run();
if (XinexPlatform.getEnv() == env) runnable.get().run();
else fallback.run();
}

public static <T> void runInEnvSpecific(Supplier<Runnable> client, Supplier<Runnable> server) {
if (Services.getEnv() == Env.CLIENT) client.get().run();
if (XinexPlatform.getEnv() == Env.CLIENT) client.get().run();
else server.get().run();
}

public static <T> T getInEnv(Env env, Supplier<Supplier<T>> supplier, Supplier<T> fallback) {
if (Services.getEnv() == env) return supplier.get().get();
if (XinexPlatform.getEnv() == env) return supplier.get().get();
return fallback.get();
}

Expand All @@ -30,22 +30,22 @@ public static <T> T getInEnv(Env env, Supplier<Supplier<T>> supplier) {
}

public static <T> T getInEnvSpecific(Supplier<Supplier<T>> client, Supplier<Supplier<T>> server) {
if (Services.getEnv() == Env.CLIENT) return client.get().get();
if (XinexPlatform.getEnv() == Env.CLIENT) return client.get().get();
return server.get().get();
}

public static <T> T callInEnv(Env env, Supplier<Callable<T>> supplier) throws Exception {
if (Services.getEnv() == env) return supplier.get().call();
if (XinexPlatform.getEnv() == env) return supplier.get().call();
return null;
}

public static <T> T callInEnv(Env env, Supplier<Callable<T>> supplier, Callable<T> fallback) throws Exception {
if (Services.getEnv() == env) return supplier.get().call();
if (XinexPlatform.getEnv() == env) return supplier.get().call();
return fallback.call();
}

public static <T> T callInEnvSpecific(Supplier<Callable<T>> client, Supplier<Callable<T>> server) throws Exception {
if (Services.getEnv() == Env.CLIENT) return client.get().call();
if (XinexPlatform.getEnv() == Env.CLIENT) return client.get().call();
return server.get().call();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import dev.ultreon.mods.xinexlib.item.XinexBlockItem;
import dev.ultreon.mods.xinexlib.nbt.DataKeys;
import dev.ultreon.mods.xinexlib.network.Networker;
import dev.ultreon.mods.xinexlib.platform.Services;
import dev.ultreon.mods.xinexlib.platform.XinexPlatform;
import dev.ultreon.mods.xinexlib.registrar.Registrar;
import dev.ultreon.mods.xinexlib.registrar.RegistrarManager;
import net.minecraft.commands.Commands;
Expand Down Expand Up @@ -60,8 +60,8 @@

/// @author XyperCode
/// @since 0.1.0 (December 10, 2024)
public class CommonClass {
private CommonClass() {
public class XinexLibCommon {
private XinexLibCommon() {

}

Expand All @@ -73,9 +73,9 @@ private CommonClass() {

/// This method is invoked by the provided mod loader when it is ready to load the XinexLib mod.
public static void init() {
Runtime.getRuntime().addShutdownHook(new Thread(CommonClass::shutdown));
Runtime.getRuntime().addShutdownHook(new Thread(XinexLibCommon::shutdown));

if (Services.isDevelopmentEnvironment() && "true".equals(System.getProperty("xinexlib.dev"))) {
if (XinexPlatform.isDevelopmentEnvironment() && "true".equals(System.getProperty("xinexlib.dev"))) {
initDev();
}

Expand Down Expand Up @@ -103,7 +103,7 @@ private static void shutdown() {
}

private static void initDev() {
RegistrarManager registrarManager = Services.getRegistrarManager(Constants.MOD_ID);
RegistrarManager registrarManager = XinexPlatform.getRegistrarManager(Constants.MOD_ID);
Registrar<Block> blockRegistrar = registrarManager.getRegistrar(Registries.BLOCK);
var testBlock = blockRegistrar.register("test_block", () -> new Block(BlockBehaviour.Properties.of().requiresCorrectToolForDrops()));
var secondBlock = blockRegistrar.register("second_block", () -> new Block(BlockBehaviour.Properties.of().requiresCorrectToolForDrops()));
Expand All @@ -112,7 +112,7 @@ private static void initDev() {
var testBlockItem = itemRegistrar.register("test_block_item", () -> new XinexBlockItem(testBlock, new Item.Properties().stacksTo(1)));
var secondBlockItem = itemRegistrar.register("second_block_item", () -> new XinexBlockItem(secondBlock, new Item.Properties().stacksTo(1)));
Registrar<CreativeModeTab> creativeModeTabRegistrar = registrarManager.getRegistrar(Registries.CREATIVE_MODE_TAB);
var testTab = creativeModeTabRegistrar.register("test_tab", () -> Services.creativeTabBuilder().icon(() -> new ItemStack(testBlockItem)).displayItems((itemDisplayParameters, output) -> {
var testTab = creativeModeTabRegistrar.register("test_tab", () -> XinexPlatform.creativeTabBuilder().icon(() -> new ItemStack(testBlockItem)).displayItems((itemDisplayParameters, output) -> {
output.accept(new ItemStack(testItem));
output.accept(new ItemStack(testBlockItem));
output.accept(new ItemStack(secondBlockItem));
Expand Down Expand Up @@ -237,7 +237,7 @@ public void load(CompoundTag tag, HolderLookup.Provider registryLookup) {
}
}

ComponentManager componentManager = Services.getComponentManager(Constants.MOD_ID);
ComponentManager componentManager = XinexPlatform.getComponentManager(Constants.MOD_ID);
ComponentHolder<Entity, TestyComponent> testy = componentManager.registerComponent("testy", new EntityComponentBuilder<TestyComponent>(TestyComponent.class)
.factory(entity -> new TestyComponent("John Doe"))
.target(EntityType.PLAYER));
Expand All @@ -258,12 +258,12 @@ public void load(CompoundTag tag, HolderLookup.Provider registryLookup) {

Constants.LOG.info("The developer mode is enabled!");

Networker networker = Services.createNetworker(Constants.MOD_ID, iNetworkRegistry -> {
Networker networker = XinexPlatform.createNetworker(Constants.MOD_ID, iNetworkRegistry -> {
iNetworkRegistry.registerClient("packet2client", PacketToClient.class, PacketToClient::read);
// iNetworkRegistry.registerServer("packet2server", PacketToServer.class, PacketToServer::read);
});

Services.registerCommand((dispatcher, registryAccess, environment) -> {
XinexPlatform.registerCommand((dispatcher, registryAccess, environment) -> {
dispatcher.register(Commands.literal("xinex-dev:packets")
.then(Commands.literal("packet")
.then(Commands.argument("message", StringArgumentType.greedyString())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,26 +2,31 @@

import dev.ultreon.mods.xinexlib.Env;
import dev.ultreon.mods.xinexlib.EnvExecutor;
import dev.ultreon.mods.xinexlib.client.event.ClientScreenOpenEvent;
import dev.ultreon.mods.xinexlib.client.event.LocalPlayerQuitEvent;
import dev.ultreon.mods.xinexlib.client.render.TestEntityRenderer;
import dev.ultreon.mods.xinexlib.client.render.model.TestEntityModel;
import dev.ultreon.mods.xinexlib.event.system.EventSystem;
import dev.ultreon.mods.xinexlib.dev.DevEntities;
import dev.ultreon.mods.xinexlib.platform.Services;
import dev.ultreon.mods.xinexlib.platform.services.ClientPlatformHelper;
import dev.ultreon.mods.xinexlib.platform.XinexPlatform;
import dev.ultreon.mods.xinexlib.platform.services.ClientPlatform;
import net.minecraft.client.Minecraft;

public class ClientClass {
public class XinexLibClient {
public static void init() {
if (Services.isDevelopmentEnvironment() && "true".equals(System.getProperty("xinexlib.dev"))) {
if (XinexPlatform.isDevelopmentEnvironment() && "true".equals(System.getProperty("xinexlib.dev"))) {
initDev();
}
}

private static void initDev() {
ClientPlatformHelper client = Services.PLATFORM.client();
ClientPlatform client = XinexPlatform.client();
client.entityRenderers().register(DevEntities.TEST::get, TestEntityRenderer::new);
client.entityRenderers().registerModel(TestEntityModel.LAYER_LOCATION, TestEntityModel::createBodyLayer);

EventSystem.MAIN.on(ClientScreenOpenEvent.class, event -> {
System.out.printf("Screen opened: %s%n", event.getScreen().getClass().getName());
});
}

public static void onDisconnect() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package dev.ultreon.mods.xinexlib.client.event;

import net.minecraft.client.Minecraft;

public interface ClientEvent {
Minecraft getClient();
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@

import java.util.Objects;

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

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

@Override
public Minecraft getClient() {
return client;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package dev.ultreon.mods.xinexlib.client.event;

import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screens.Screen;

public interface ClientScreenEvent extends ClientEvent {
Screen getScreen();

@Override
default Minecraft getClient() {
return Minecraft.getInstance();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package dev.ultreon.mods.xinexlib.client.event;

import dev.ultreon.mods.xinexlib.event.CancelableValue;
import dev.ultreon.mods.xinexlib.event.system.Cancelable;
import net.minecraft.client.gui.screens.Screen;
import org.jetbrains.annotations.Nullable;

public class ClientScreenOpenEvent implements ClientScreenEvent, CancelableValue<Screen> {
private final Screen screen;
private boolean canceled;
private @Nullable Screen nextScreen;

public ClientScreenOpenEvent(Screen screen) {
this.screen = screen;
}

@Override
public Screen getScreen() {
return screen;
}

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

@Override
public void cancel(@Nullable Screen value) {
canceled = true;
nextScreen = value;
}

@Override
public @Nullable Screen get() {
return nextScreen;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package dev.ultreon.mods.xinexlib.client.event;

import net.minecraft.client.gui.screens.Screen;


public class ClientScreenPostInitEvent implements ClientScreenEvent {
private final Screen screen;

public ClientScreenPostInitEvent(Screen screen) {
this.screen = screen;
}

@Override
public Screen getScreen() {
return screen;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package dev.ultreon.mods.xinexlib.client.event;

import net.minecraft.client.gui.screens.Screen;


public class ClientScreenPreInitEvent implements ClientScreenEvent {
private final Screen screen;

public ClientScreenPreInitEvent(Screen screen) {
this.screen = screen;
}

@Override
public Screen getScreen() {
return screen;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@

import java.util.Objects;

public final class ClientStartedEvent {
public final class ClientStartedEvent implements ClientEvent {
private final Minecraft client;

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

@Override
public Minecraft getClient() {
return client;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
package dev.ultreon.mods.xinexlib.dev;

import dev.ultreon.mods.xinexlib.dev.entity.TestEntity;
import dev.ultreon.mods.xinexlib.platform.Services;
import dev.ultreon.mods.xinexlib.platform.XinexPlatform;
import dev.ultreon.mods.xinexlib.registrar.Registrar;
import dev.ultreon.mods.xinexlib.registrar.RegistrySupplier;
import net.minecraft.core.registries.Registries;
import net.minecraft.world.entity.EntityType;
import net.minecraft.world.entity.MobCategory;

public class DevEntities {
private static final Registrar<EntityType<?>> REGISTRAR = Services.getRegistrarManager("xinexlib").getRegistrar(Registries.ENTITY_TYPE);
private static final Registrar<EntityType<?>> REGISTRAR = XinexPlatform.getRegistrarManager("xinexlib").getRegistrar(Registries.ENTITY_TYPE);

public static final RegistrySupplier<EntityType<TestEntity>, EntityType<?>> TEST = REGISTRAR.register("test", () -> EntityType.Builder.of(TestEntity::new, MobCategory.AMBIENT)
.sized(0.5f, 0.5f)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package dev.ultreon.mods.xinexlib.mixin;

import dev.ultreon.mods.xinexlib.client.ClientClass;
import dev.ultreon.mods.xinexlib.client.XinexLibClient;
import net.minecraft.network.Connection;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
Expand All @@ -14,11 +14,11 @@ public abstract class MixinClientConnection {

@Inject(at = @At("HEAD"), method = "channelInactive")
private void channelInactive(CallbackInfo ci) {
ClientClass.onDisconnect();
XinexLibClient.onDisconnect();
}

@Inject(at = @At("HEAD"), method = "disconnect(Lnet/minecraft/network/DisconnectionDetails;)V")
private void runTick$return(CallbackInfo ci) {
ClientClass.onDisconnect();
XinexLibClient.onDisconnect();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package dev.ultreon.mods.xinexlib.platform;

public interface Mod {
String getModId();
String getName();
String getVersion();
String getDescription();
}
Loading

0 comments on commit 9d24fe6

Please sign in to comment.