First progress on forge support

- add forge module
- github actions build and release
- aim for all-in-one jar supporting both fabric and forge

**NOTICE**
Forge support is not currently working.

Signed-off-by: Lucas Petrino <nsx1lucas@gmail.com>
This commit is contained in:
2024-01-15 23:21:57 +13:00
parent 4eaf638e42
commit 5ab33b1e63
19 changed files with 368 additions and 30 deletions

View File

@@ -0,0 +1,10 @@
package me.lucaslah.weatherchanger.forge;
import me.lucaslah.weatherchanger.keybinding.KeybindingManager;
public class ForgeKeybindingManager extends KeybindingManager {
@Override
public void registerKeys() {
// forge handles keybindings in a event
}
}

View File

@@ -0,0 +1,57 @@
package me.lucaslah.weatherchanger.forge;
import me.lucaslah.weatherchanger.WeatherChanger;
import me.lucaslah.weatherchanger.keybinding.Key;
import net.minecraft.client.MinecraftClient;
import net.minecraftforge.client.event.RegisterKeyMappingsEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
@Mod("weatherchanger")
public class WeatherChangerForge {
private static WeatherChangerForge instance;
private ForgeKeybindingManager forgeKeybindingManager;
public WeatherChangerForge() {
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();
modEventBus.addListener(this::onClientSetup);
}
private void onClientSetup(FMLClientSetupEvent event) {
instance = this;
forgeKeybindingManager = new ForgeKeybindingManager();
MinecraftForge.EVENT_BUS.register(this);
WeatherChanger.init(new WeatherChangerPlatformImpl());
}
public static WeatherChangerForge getInstance() {
return instance;
}
public ForgeKeybindingManager getKeybindingManager() {
return forgeKeybindingManager;
}
@SubscribeEvent
public void registerBindings(RegisterKeyMappingsEvent event) {
for (Key key : forgeKeybindingManager.getEntries()) {
event.register(key.getKeyBinding());
}
}
@SubscribeEvent
public void onClientTick(TickEvent.ClientTickEvent event) {
if (event.phase == TickEvent.Phase.END) {
for (Key key : forgeKeybindingManager.getEntries()) {
if (key.isEnabled() && key.getKeyBinding().wasPressed()) {
key.onPress(MinecraftClient.getInstance());
}
}
}
}
}

View File

@@ -0,0 +1,19 @@
package me.lucaslah.weatherchanger.forge;
import me.lucaslah.weatherchanger.WeatherChangerPlatform;
import me.lucaslah.weatherchanger.keybinding.KeybindingManager;
import net.minecraftforge.fml.loading.FMLPaths;
import java.nio.file.Path;
public class WeatherChangerPlatformImpl implements WeatherChangerPlatform {
@Override
public Path getConfigDirectory() {
return FMLPaths.CONFIGDIR.get();
}
@Override
public KeybindingManager getKeybindingManager() {
return WeatherChangerForge.getInstance().getKeybindingManager();
}
}

View File

@@ -0,0 +1,28 @@
modLoader = "javafml"
loaderVersion = "[4,)"
issueTrackerURL = "https://github.com/Lucaslah/WeatherChanger/issues"
license = "LGPL-3.0"
[[mods]]
modId = "${mod_id}"
version = "${version}"
displayName = "Weather Changer"
authors = "Lucaslah"
description = '''
Client side weather change for Minecraft
'''
logoFile = "icon.png"
[[dependencies.${mod_id}]]
modId = "forge"
mandatory = true
versionRange = "[43,)"
ordering = "NONE"
side = "CLIENT"
[[dependencies.${mod_id}]]
modId = "minecraft"
mandatory = true
versionRange = "[${minecraft_version},)"
ordering = "NONE"
side = "CLIENT"

View File

@@ -0,0 +1,6 @@
{
"pack": {
"description": "Weather Changer",
"pack_format": 9
}
}