mirror of
https://github.com/Lucaslah/WeatherChanger.git
synced 2026-01-03 03:57:50 +00:00
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:
89
forge/build.gradle.kts
Normal file
89
forge/build.gradle.kts
Normal file
@@ -0,0 +1,89 @@
|
||||
architectury {
|
||||
platformSetupLoomIde()
|
||||
forge()
|
||||
}
|
||||
|
||||
loom {
|
||||
accessWidenerPath.set(project(":common").loom.accessWidenerPath)
|
||||
|
||||
forge.apply {
|
||||
convertAccessWideners.set(true)
|
||||
extraAccessWideners.add(loom.accessWidenerPath.get().asFile.name)
|
||||
|
||||
mixinConfig("weatherchanger.mixins.json")
|
||||
}
|
||||
}
|
||||
|
||||
val common: Configuration by configurations.creating
|
||||
val shadowCommon: Configuration by configurations.creating
|
||||
|
||||
configurations {
|
||||
compileOnly.configure { extendsFrom(common) }
|
||||
runtimeOnly.configure { extendsFrom(common) }
|
||||
}
|
||||
|
||||
dependencies {
|
||||
forge("net.minecraftforge:forge:${rootProject.property("forge.version")}")
|
||||
|
||||
common(project(":common", "namedElements")) {
|
||||
isTransitive = false
|
||||
}
|
||||
|
||||
shadowCommon(project(":common", "transformProductionForge")) {
|
||||
isTransitive = false
|
||||
}
|
||||
}
|
||||
|
||||
tasks {
|
||||
processResources {
|
||||
inputs.property("group", rootProject.property("maven_group"))
|
||||
inputs.property("version", project.version)
|
||||
|
||||
filesMatching("META-INF/mods.toml") {
|
||||
expand(mapOf(
|
||||
"group" to rootProject.property("maven_group"),
|
||||
"version" to project.version,
|
||||
|
||||
"mod_id" to rootProject.property("mod_id"),
|
||||
"minecraft_version" to rootProject.property("minecraft_version")
|
||||
))
|
||||
}
|
||||
}
|
||||
|
||||
remapJar {
|
||||
injectAccessWidener.set(true)
|
||||
}
|
||||
|
||||
jar {
|
||||
from("../LICENSE.md")
|
||||
from("../assets/logo.png") {
|
||||
rename { "icon.png" }
|
||||
}
|
||||
|
||||
dependsOn(":common:transformProductionForge")
|
||||
|
||||
from({
|
||||
shadowCommon.filter { it.name.endsWith("jar") }.map { zipTree(it) }
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
java {
|
||||
withSourcesJar()
|
||||
}
|
||||
|
||||
publishing {
|
||||
publications {
|
||||
create<MavenPublication>("mavenJava") {
|
||||
from(components["java"])
|
||||
}
|
||||
}
|
||||
|
||||
// See https://docs.gradle.org/current/userguide/publishing_maven.html for information on how to set up publishing.
|
||||
repositories {
|
||||
// Add repositories to publish to here.
|
||||
// Notice: This block does NOT have the same function as the block in the top level.
|
||||
// The repositories here will be used for publishing your artifact, not for
|
||||
// retrieving dependencies.
|
||||
}
|
||||
}
|
||||
1
forge/gradle.properties
Normal file
1
forge/gradle.properties
Normal file
@@ -0,0 +1 @@
|
||||
loom.platform=forge
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
28
forge/src/main/resources/META-INF/mods.toml
Normal file
28
forge/src/main/resources/META-INF/mods.toml
Normal 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"
|
||||
6
forge/src/main/resources/pack.mcmeta
Normal file
6
forge/src/main/resources/pack.mcmeta
Normal file
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"pack": {
|
||||
"description": "Weather Changer",
|
||||
"pack_format": 9
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user