From 1d656da9b544ed7db7cf5ed3d0a1671dfbb6c285 Mon Sep 17 00:00:00 2001 From: MicrocontrollersDev Date: Wed, 14 Jan 2026 22:33:50 -0700 Subject: [PATCH 1/3] 1.21 stonecutter --- build.gradle.kts | 134 +++++++++++------- gradle.properties | 20 ++- gradle/wrapper/gradle-wrapper.properties | 2 +- root.gradle.kts | 52 ------- settings.gradle.kts | 85 +++-------- .../polytime/mixin/Mixin_FixMoonPhases.java | 25 ++-- .../mixin/Mixin_ModifyCelestialGradient.java | 28 ++-- .../polyfrost/polytime/PolyTimeConstants.kt | 9 +- .../polyfrost/polytime/PolyTimeEntrypoint.kt | 86 +---------- stonecutter.gradle.kts | 5 + .../polytime/mixin/Mixin_FixMoonPhases.java | 21 --- .../mixin/Mixin_ModifyCelestialGradient.java | 38 ----- .../polytime/mixin/Mixin_FixMoonPhases.java | 21 --- .../mixin/Mixin_ModifyCelestialGradient.java | 40 ------ .../polytime/mixin/Mixin_FixMoonPhases.java | 21 --- versions/1.21.1/gradle.properties | 3 + versions/1.21.10/gradle.properties | 3 + versions/1.21.11/gradle.properties | 3 + .../polytime/mixin/Mixin_FixMoonPhases.java | 31 ---- .../mixin/Mixin_ModifyCelestialGradient.java | 40 ------ versions/1.21.4/gradle.properties | 3 + versions/1.21.8/gradle.properties | 3 + versions/mainProject | 1 - 23 files changed, 187 insertions(+), 487 deletions(-) delete mode 100644 root.gradle.kts create mode 100644 stonecutter.gradle.kts delete mode 100644 versions/1.16.5-forge/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java delete mode 100644 versions/1.16.5-forge/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java delete mode 100644 versions/1.20.1-fabric/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java delete mode 100644 versions/1.20.1-fabric/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java delete mode 100644 versions/1.21.1-fabric/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java create mode 100644 versions/1.21.1/gradle.properties create mode 100644 versions/1.21.10/gradle.properties create mode 100644 versions/1.21.11/gradle.properties delete mode 100644 versions/1.21.4-neoforge/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java delete mode 100644 versions/1.21.4-neoforge/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java create mode 100644 versions/1.21.4/gradle.properties create mode 100644 versions/1.21.8/gradle.properties delete mode 100644 versions/mainProject diff --git a/build.gradle.kts b/build.gradle.kts index 7f07b67..d61ac8c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,66 +1,104 @@ -@file:Suppress("UnstableApiUsage", "PropertyName") - -import dev.deftu.gradle.utils.GameSide -import dev.deftu.gradle.utils.includeOrShade +import org.jetbrains.kotlin.gradle.dsl.JvmTarget +import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { - java - kotlin("jvm") - id("dev.deftu.gradle.multiversion") // Applies preprocessing for multiple versions of Minecraft and/or multiple mod loaders. - id("dev.deftu.gradle.tools") // Applies several configurations to things such as the Java version, project name/version, etc. - id("dev.deftu.gradle.tools.resources") // Applies resource processing so that we can replace tokens, such as our mod name/version, in our resources. - id("dev.deftu.gradle.tools.bloom") // Applies the Bloom plugin, which allows us to replace tokens in our source files, such as being able to use `@MOD_VERSION` in our source files. - id("dev.deftu.gradle.tools.shadow") // Applies the Shadow plugin, which allows us to shade our dependencies into our mod JAR. This is NOT recommended for Fabric mods, but we have an *additional* configuration for those! - id("dev.deftu.gradle.tools.minecraft.loom") // Applies the Loom plugin, which automagically configures Essential's Architectury Loom plugin for you. - id("dev.deftu.gradle.tools.minecraft.releases") // Applies the Minecraft auto-releasing plugin, which allows you to automatically release your mod to CurseForge and Modrinth. + id("net.fabricmc.fabric-loom-remap") version "1.14-SNAPSHOT" + id("org.jetbrains.kotlin.jvm") version "2.3.0" } -toolkitMultiversion { - moveBuildsToRootProject = true +val modid = property("mod.id") +val modname = property("mod.name") +val modversion = property("mod.version") +val mcversion = property("minecraft_version") + +base { + archivesName.set(property("mod.id") as String) } -toolkitLoomHelper { - useOneConfig { - version = "1.0.0-alpha.153" - loaderVersion = "1.1.0-alpha.49" +repositories { + maven("https://maven.parchmentmc.org") + maven("https://repo.polyfrost.org/releases") + maven("https://repo.polyfrost.org/snapshots") + maven("https://maven.gegy.dev/releases") +} - usePolyMixin = true - polyMixinVersion = "0.8.4+build.2" +loom { + runConfigs.all { + ideConfigGenerated(stonecutter.current.isActive) + runDir = "../../run" // This sets the run folder for all mc versions to the same folder. Remove this line if you want individual run folders. + } - applyLoaderTweaker = true + runConfigs.remove(runConfigs["server"]) // Removes server run configs +} - for (module in arrayOf("commands", "config", "config-impl", "events", "internal", "ui", "utils")) { - +module +dependencies { + minecraft("com.mojang:minecraft:${property("minecraft_version")}") + mappings(loom.layered { + officialMojangMappings() + parchment("org.parchmentmc.data:parchment-${property("minecraft_version")}:${property("parchment_version")}@zip") + optionalProp("${property("yalmm_version")}") { + mappings("dev.lambdaurora:yalmm-mojbackward:${property("minecraft_version")}+build.$it") } - } - useDevAuth("1.2.1") - useMixinExtras("0.4.1") + }) + modImplementation("net.fabricmc:fabric-loader:${property("loader_version")}") + modImplementation("org.polyfrost.oneconfig:${property("minecraft_version")}-fabric:1.0.0-alpha.181") + modImplementation("org.polyfrost.oneconfig:commands:1.0.0-alpha.181") + modImplementation("org.polyfrost.oneconfig:config:1.0.0-alpha.181") + modImplementation("org.polyfrost.oneconfig:config-impl:1.0.0-alpha.181") + modImplementation("org.polyfrost.oneconfig:events:1.0.0-alpha.181") + modImplementation("org.polyfrost.oneconfig:internal:1.0.0-alpha.181") + modImplementation("org.polyfrost.oneconfig:ui:1.0.0-alpha.181") + modImplementation("org.polyfrost.oneconfig:utils:1.0.0-alpha.181") - // Turns off the server-side run configs, as we're building a client-sided mod. - disableRunConfigs(GameSide.SERVER) + implementation("dev.deftu:commons-suncalc:0.1.0")!! - // Defines the name of the Mixin refmap, which is used to map the Mixin classes to the obfuscated Minecraft classes. - if (!mcData.isNeoForge) { - useMixinRefMap(modData.id) - } + implementation("dev.deftu:Bloom:0.1.2") +} + +//bloom { +// replacement("@MOD_ID@", modid) +// replacement("@MOD_NAME@", modname) +// replacement("@MOD_VERSION@", modversion) +//} + +tasks.processResources { + val props = mapOf( + "mod_id" to modid, + "mod_name" to modname, + "mod_version" to modversion, + "mc_version" to mcversion, + "loader_version" to providers.gradleProperty("loader_version").get() + ) + + inputs.properties(props) - if (mcData.isForge) { - // Configures the Mixin tweaker if we are building for Forge. - useForgeMixin(modData.id) + filesMatching("fabric.mod.json") { + expand(props) } } -dependencies { - implementation(includeOrShade("dev.deftu:commons-suncalc:0.1.0")!!) - - // Add Fabric Language Kotlin and (Legacy) Fabric API as dependencies (these are both optional but are particularly useful). - if (mcData.isFabric) { - if (mcData.isLegacyFabric) { - // 1.8.9 - 1.13 - modImplementation("net.legacyfabric.legacy-fabric-api:legacy-fabric-api:${mcData.dependencies.legacyFabric.legacyFabricApiVersion}") - } else { - // 1.16.5+ - modImplementation("net.fabricmc.fabric-api:fabric-api:${mcData.dependencies.fabric.fabricApiVersion}") - } +tasks.withType().configureEach { + options.release.set(21) +} + +tasks.withType().configureEach { + compilerOptions.jvmTarget.set(JvmTarget.JVM_21) +} + +java { + withSourcesJar() + sourceCompatibility = JavaVersion.VERSION_21 + targetCompatibility = JavaVersion.VERSION_21 +} + +tasks.jar { + inputs.property("archivesName", base.archivesName) + + from("LICENSE") { + rename { "${it}_${inputs.properties["archivesName"]}" } } } + +fun optionalProp(property: String, block: (String) -> T?): T? = + findProperty(property)?.toString()?.takeUnless { it.isBlank() }?.let(block) + diff --git a/gradle.properties b/gradle.properties index 0c5c194..0fe1379 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,11 +1,19 @@ +mod.name=PolyTime +mod.id=polytime +mod.version=1.1.0-alpha.2 +mod.group=org.polyfrost + +loom_version=1.14-SNAPSHOT +loader_version=0.18.4 +minecraft_version=[VERSIONED] +parchment_version=[VERSIONED] +yalmm_version=[VERSIONED] + org.gradle.daemon=true org.gradle.parallel=true org.gradle.configureoncommand=true org.gradle.parallel.threads=4 -org.gradle.jvmargs=-Xmx8G -loom.ignoreDependencyLoomVersionValidation=true +org.gradle.jvmargs=-Xmx2G -mod.name=PolyTime -mod.id=polytime -mod.version=1.1.0-alpha.2 -mod.group=org.polyfrost \ No newline at end of file +# Fix YALMM +fabric.loom.dropNonIntermediateRootMethods=true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e2847c8..23449a2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/root.gradle.kts b/root.gradle.kts deleted file mode 100644 index 5a640e9..0000000 --- a/root.gradle.kts +++ /dev/null @@ -1,52 +0,0 @@ -plugins { - id("dev.deftu.gradle.multiversion-root") -} - -preprocess { - // Adding new versions/loaders can be done like so: - // For each version, we add a new wrapper around the last from highest to lowest. - // Each mod loader needs to link up to the previous version's mod loader so that the mappings can be processed from the previous version. - // "1.12.2-forge"(11202, "srg") { - // "1.8.9-forge"(10809, "srg") - // } - - "1.21.8-fabric"(1_21_08, "yarn") { - "1.21.8-neoforge"(1_21_08, "srg") { - "1.21.5-neoforge"(1_21_05, "srg") { - "1.21.5-fabric"(1_21_05, "yarn") { - "1.21.4-fabric"(1_21_04, "yarn") { - "1.21.4-neoforge"(1_21_04, "srg") { - "1.21.1-neoforge"(1_21_01, "srg") { - "1.21.1-fabric"(1_21_01, "yarn") { - "1.20.4-fabric"(1_20_04, "yarn") { - "1.20.4-neoforge"(1_20_04, "srg") { - "1.20.4-forge"(1_20_04, "srg") { - "1.20.1-forge"(1_20_01, "srg") { - "1.20.1-fabric"(1_20_01, "yarn") { - "1.16.5-fabric"(1_16_05, "yarn") { - "1.16.5-forge"(1_16_05, "srg") { - "1.12.2-forge"(1_12_02, "srg") { - "1.12.2-fabric"(1_12_02, "yarn") { - "1.8.9-fabric"(1_08_09, "yarn") { - "1.8.9-forge"(1_08_09, "srg") - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - } - - strictExtraMappings.set(true) -} diff --git a/settings.gradle.kts b/settings.gradle.kts index 0762dfc..7e3b194 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,76 +1,35 @@ -@file:Suppress("PropertyName") - -import groovy.lang.MissingPropertyException - pluginManagement { repositories { - // Releases - maven("https://maven.deftu.dev/releases") + mavenCentral() + gradlePluginPortal() maven("https://maven.fabricmc.net") - maven("https://maven.architectury.dev/") - maven("https://maven.minecraftforge.net") - maven("https://repo.essential.gg/repository/maven-public") - maven("https://server.bbkr.space/artifactory/libs-release/") + maven("https://maven.kikugie.dev/snapshots") + maven("https://maven.kikugie.dev/releases") maven("https://jitpack.io/") - - // Snapshots + maven("https://maven.deftu.dev/releases") maven("https://maven.deftu.dev/snapshots") - mavenLocal() - - // Default - gradlePluginPortal() - mavenCentral() - } - - plugins { - kotlin("jvm") version("2.2.10") - id("dev.deftu.gradle.multiversion-root") version("2.55.0") + maven("https://maven.architectury.dev") + maven("https://repo.polyfrost.org/releases") + maven("https://repo.polyfrost.org/snapshots") } } -val projectName: String = extra["mod.name"]?.toString() - ?: throw MissingPropertyException("mod.name has not been set.") - -// Configures the root project Gradle name based on the value in `gradle.properties` -rootProject.name = projectName -rootProject.buildFileName = "root.gradle.kts" - -// Adds all of our build target versions to the classpath if we need to add version-specific code. -// Update this list if you want to remove/add a version and/or mod loader. -// The format is: version-modloader (f.ex: 1.8.9-forge, 1.17.1-fabric, etc) -// **REMEMBER TO ALSO UPDATE THE `root.gradle.kts` AND `build.gradle.kts` FILES WITH THE NEW VERSION(S). -listOf( - "1.8.9-forge", - "1.8.9-fabric", - - "1.12.2-forge", - "1.12.2-fabric", - - "1.16.5-forge", - "1.16.5-fabric", - - "1.20.1-forge", - "1.20.1-fabric", - - "1.20.4-forge", - "1.20.4-neoforge", - "1.20.4-fabric", - - "1.21.1-neoforge", - "1.21.1-fabric", +plugins { + id("dev.kikugie.stonecutter") version "0.7.10" +} - "1.21.4-neoforge", - "1.21.4-fabric", +stonecutter { + create(rootProject) { + versions("1.21.1", "1.21.4", "1.21.8", "1.21.10") - "1.21.5-neoforge", - "1.21.5-fabric", + vcsVersion = "1.21.10" + } +} - "1.21.8-neoforge", - "1.21.8-fabric", -).forEach { version -> - include(":$version") - project(":$version").apply { - projectDir = file("versions/$version") - buildFileName = "../../build.gradle.kts" +dependencyResolutionManagement { + versionCatalogs { + create("libs") } } + +rootProject.name = "PolyTime" diff --git a/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java b/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java index 2de6346..0266c67 100644 --- a/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java +++ b/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java @@ -1,21 +1,28 @@ package org.polyfrost.polytime.mixin; -import net.minecraft.client.multiplayer.WorldClient; -import net.minecraft.client.renderer.RenderGlobal; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.client.renderer.LevelRenderer; +//? if >= 1.21.10 +import net.minecraft.client.renderer.SkyRenderer; import org.polyfrost.polytime.client.PolyTimeConfig; import org.polyfrost.polytime.client.realtime.RealTimeHandler; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; -@Mixin(RenderGlobal.class) +//? if >= 1.21.10 { +@Mixin(SkyRenderer.class) +//?} else { +/*@Mixin(LevelRenderer.class) +*///?} public class Mixin_FixMoonPhases { - @Redirect(method = "renderSky(FI)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/WorldClient;getMoonPhase()I")) - private int polyweather$fixMoonPhase(WorldClient world) { - if (PolyTimeConfig.isEnabled() && PolyTimeConfig.isIrlTime()) { + @WrapOperation(method = /*? if >= 1.21.10 {*/ "extractRenderState" /*?} else if >= 1.21.4 {*/ /*"method_62215" *//*?} else {*/ /*"renderSky" *//*?}*/ , at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/ClientLevel;getMoonPhase()I")) + private int polyweather$fixMoonPhase(ClientLevel instance, Operation original) { + if (PolyTimeConfig.isEnabled() && PolyTimeConfig.isIrlTime()) { // TODO: use irlLunarPhases instead? return RealTimeHandler.getCurrentLunarPhase(); } - return world.getMoonPhase(); + return original.call(instance); } -} +} \ No newline at end of file diff --git a/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java b/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java index 4599b8e..f250e96 100644 --- a/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java +++ b/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java @@ -1,29 +1,33 @@ package org.polyfrost.polytime.mixin; -import net.minecraft.client.multiplayer.WorldClient; -import net.minecraft.profiler.Profiler; -import net.minecraft.world.World; -import net.minecraft.world.WorldProvider; -import net.minecraft.world.storage.ISaveHandler; -import net.minecraft.world.storage.WorldInfo; +import net.minecraft.client.multiplayer.ClientLevel; +import net.minecraft.core.Holder; +import net.minecraft.core.RegistryAccess; +import net.minecraft.resources.ResourceKey; +import net.minecraft.util.profiling.ProfilerFiller; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.dimension.DimensionType; +import net.minecraft.world.level.storage.WritableLevelData; import org.polyfrost.polytime.client.PolyTimeClient; import org.polyfrost.polytime.client.PolyTimeConfig; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Unique; -@Mixin(WorldClient.class) -public abstract class Mixin_ModifyCelestialGradient extends World { - protected Mixin_ModifyCelestialGradient(ISaveHandler saveHandlerIn, WorldInfo info, WorldProvider providerIn, Profiler profilerIn, boolean client) { - super(saveHandlerIn, info, providerIn, profilerIn, client); +import java.util.function.Supplier; + +@Mixin(ClientLevel.class) +public abstract class Mixin_ModifyCelestialGradient extends Level { + protected Mixin_ModifyCelestialGradient(WritableLevelData levelData, ResourceKey dimension, RegistryAccess registryAccess, Holder dimensionTypeRegistration, /*? if 1.21.1 {*/ /*Supplier profiler, *//*?}*/ boolean isClientSide, boolean isDebug, long biomeZoomSeed, int maxChainedNeighborUpdates) { + super(levelData, dimension, registryAccess, dimensionTypeRegistration, /*? if 1.21.1 {*/ /*profiler, *//*?}*/ isClientSide, isDebug, biomeZoomSeed, maxChainedNeighborUpdates); } @Override - public float getCelestialAngle(float tickDelta) { + public float getTimeOfDay(float tickDelta) { if (PolyTimeConfig.isEnabled()) { return polyweather$angleFromTime(PolyTimeClient.getCurrentTime(), tickDelta); } - return super.getCelestialAngle(tickDelta); + return super.getTimeOfDay(tickDelta); } @Unique diff --git a/src/main/kotlin/org/polyfrost/polytime/PolyTimeConstants.kt b/src/main/kotlin/org/polyfrost/polytime/PolyTimeConstants.kt index 1d4bad4..e1f6034 100644 --- a/src/main/kotlin/org/polyfrost/polytime/PolyTimeConstants.kt +++ b/src/main/kotlin/org/polyfrost/polytime/PolyTimeConstants.kt @@ -2,7 +2,10 @@ package org.polyfrost.polytime object PolyTimeConstants { // Sets the variables from `gradle.properties`. Depends on the `bloom` DGT plugin. - const val ID: String = "@MOD_ID@" - const val NAME: String = "@MOD_NAME@" - const val VERSION: String = "@MOD_VERSION@" +// const val ID: String = "@MOD_ID@" +// const val NAME: String = "@MOD_NAME@" +// const val VERSION: String = "@MOD_VERSION@" + const val ID: String = "polytime" + const val NAME: String = "PolyTime" + const val VERSION: String = "1.0.0-alpha.2" } diff --git a/src/main/kotlin/org/polyfrost/polytime/PolyTimeEntrypoint.kt b/src/main/kotlin/org/polyfrost/polytime/PolyTimeEntrypoint.kt index 2cc9c9b..3347401 100644 --- a/src/main/kotlin/org/polyfrost/polytime/PolyTimeEntrypoint.kt +++ b/src/main/kotlin/org/polyfrost/polytime/PolyTimeEntrypoint.kt @@ -1,88 +1,14 @@ package org.polyfrost.polytime -//#if FABRIC -//$$ import net.fabricmc.api.ModInitializer -//$$ import net.fabricmc.api.ClientModInitializer -//$$ import net.fabricmc.api.DedicatedServerModInitializer -//#elseif FORGE -//#if MC >= 1.16.5 -//$$ import net.minecraftforge.eventbus.api.IEventBus -//$$ import net.minecraftforge.fml.common.Mod -//$$ import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent -//$$ import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent -//$$ import net.minecraftforge.fml.event.lifecycle.FMLDedicatedServerSetupEvent -//$$ import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext -//#else -import net.minecraftforge.fml.common.Mod -import net.minecraftforge.fml.common.Mod.EventHandler -import net.minecraftforge.fml.common.event.FMLInitializationEvent - -//#endif -//#elseif NEOFORGE -//$$ import net.neoforged.bus.api.IEventBus -//$$ import net.neoforged.fml.common.Mod -//$$ import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent -//$$ import net.neoforged.fml.event.lifecycle.FMLClientSetupEvent -//$$ import net.neoforged.fml.event.lifecycle.FMLDedicatedServerSetupEvent -//#endif +import net.fabricmc.api.ModInitializer +import net.fabricmc.api.ClientModInitializer +import net.fabricmc.api.DedicatedServerModInitializer import org.polyfrost.polytime.client.PolyTimeClient -//#if FORGE-LIKE -//#if MC >= 1.16.5 -//$$ @Mod(PolyTimeConstants.ID) -//#else -@Mod(modid = PolyTimeConstants.ID, version = PolyTimeConstants.VERSION) -//#endif -//#endif - -class PolyTimeEntrypoint - //#if FABRIC - //$$ : ClientModInitializer - //#endif -{ - //#if FORGE && MC >= 1.16.5 - //$$ init { - //$$ setupForgeEvents(FMLJavaModLoadingContext.get().getModEventBus()) - //$$ } - //#elseif NEOFORGE - //$$ constructor(modEventBus: IEventBus) { - //$$ setupForgeEvents(modEventBus) - //$$ } - //#endif - - //#if FABRIC - //$$ override - //#elseif FORGE && MC <= 1.12.2 - @EventHandler - //#endif - fun onInitializeClient( - //#if FORGE-LIKE - //#if MC >= 1.16.5 - //$$ event: FMLClientSetupEvent - //#else - event: FMLInitializationEvent - //#endif - //#endif - ) { - //#if FORGE && MC <= 1.12.2 - //$$ if (!event - //#if MC <= 1.8.9 - //$$ .side.isClient - //#else - //$$ .getSide().isClient() - //#endif - //$$ ) { - //$$ return; - //$$ } - //#endif - +class PolyTimeEntrypoint : ClientModInitializer { + override + fun onInitializeClient() { PolyTimeClient.initialize() } - - //#if FORGE-LIKE && MC >= 1.16.5 - //$$ private fun setupForgeEvents(modEventBus: IEventBus) { - //$$ modEventBus.addListener(this::onInitializeClient) - //$$ } - //#endif } diff --git a/stonecutter.gradle.kts b/stonecutter.gradle.kts new file mode 100644 index 0000000..4f6b412 --- /dev/null +++ b/stonecutter.gradle.kts @@ -0,0 +1,5 @@ +plugins { + id("dev.kikugie.stonecutter") +} + +stonecutter active "1.21.10" /* [SC] DO NOT EDIT */ diff --git a/versions/1.16.5-forge/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java b/versions/1.16.5-forge/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java deleted file mode 100644 index f254456..0000000 --- a/versions/1.16.5-forge/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.polyfrost.polytime.mixin; - -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.LevelRenderer; -import org.polyfrost.polytime.client.PolyTimeConfig; -import org.polyfrost.polytime.client.realtime.RealTimeHandler; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(LevelRenderer.class) -public class Mixin_FixMoonPhases { - @Redirect(method = "renderSky", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/ClientLevel;getMoonPhase()I")) - private int polyweather$fixMoonPhase(ClientLevel level) { - if (PolyTimeConfig.isEnabled() && PolyTimeConfig.isIrlTime()) { - return RealTimeHandler.getCurrentLunarPhase(); - } - - return level.getMoonPhase(); - } -} diff --git a/versions/1.16.5-forge/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java b/versions/1.16.5-forge/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java deleted file mode 100644 index 1f6f44c..0000000 --- a/versions/1.16.5-forge/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java +++ /dev/null @@ -1,38 +0,0 @@ -package org.polyfrost.polytime.mixin; - -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.resources.ResourceKey; -import net.minecraft.util.profiling.ProfilerFiller; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.dimension.DimensionType; -import net.minecraft.world.level.storage.WritableLevelData; -import org.polyfrost.polytime.client.PolyTimeClient; -import org.polyfrost.polytime.client.PolyTimeConfig; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; - -import java.util.function.Supplier; - -@Mixin(ClientLevel.class) -public abstract class Mixin_ModifyCelestialGradient extends Level { - protected Mixin_ModifyCelestialGradient(WritableLevelData arg, ResourceKey arg2, DimensionType arg3, Supplier supplier, boolean bl, boolean bl2, long l) { - super(arg, arg2, arg3, supplier, bl, bl2, l); - } - - @Override - public float getTimeOfDay(float tickDelta) { - if (PolyTimeConfig.isEnabled()) { - return polyweather$angleFromTime(PolyTimeClient.getCurrentTime(), tickDelta); - } - - return super.getTimeOfDay(tickDelta); - } - - @Unique - private float polyweather$angleFromTime(float time, float tickDelta) { - float f = ((time % 24000L) + tickDelta) / 24000f - 0.25f; - if (f < 0f) f += 1f; - if (f > 1f) f -= 1f; - return 1f - (float) ((Math.cos(f * Math.PI) + 1.0) / 2.0); - } -} diff --git a/versions/1.20.1-fabric/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java b/versions/1.20.1-fabric/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java deleted file mode 100644 index ccb23c4..0000000 --- a/versions/1.20.1-fabric/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.polyfrost.polytime.mixin; - -import net.minecraft.client.world.ClientWorld; -import net.minecraft.client.render.WorldRenderer; -import org.polyfrost.polytime.client.PolyTimeConfig; -import org.polyfrost.polytime.client.realtime.RealTimeHandler; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(WorldRenderer.class) -public class Mixin_FixMoonPhases { - @Redirect(method = "renderSky(Lnet/minecraft/client/util/math/MatrixStack;Lorg/joml/Matrix4f;FLnet/minecraft/client/render/Camera;ZLjava/lang/Runnable;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;getMoonPhase()I")) - private int polyweather$fixMoonPhase(ClientWorld level) { - if (PolyTimeConfig.isEnabled() && PolyTimeConfig.isIrlTime()) { - return RealTimeHandler.getCurrentLunarPhase(); - } - - return level.getMoonPhase(); - } -} diff --git a/versions/1.20.1-fabric/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java b/versions/1.20.1-fabric/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java deleted file mode 100644 index 055e2b3..0000000 --- a/versions/1.20.1-fabric/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.polyfrost.polytime.mixin; - -import net.minecraft.client.world.ClientWorld; -import net.minecraft.registry.DynamicRegistryManager; -import net.minecraft.registry.RegistryKey; -import net.minecraft.registry.entry.RegistryEntry; -import net.minecraft.util.profiler.Profiler; -import net.minecraft.world.World; -import net.minecraft.world.dimension.DimensionType; -import net.minecraft.world.MutableWorldProperties; -import org.polyfrost.polytime.client.PolyTimeClient; -import org.polyfrost.polytime.client.PolyTimeConfig; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; - -import java.util.function.Supplier; - -@Mixin(ClientWorld.class) -public abstract class Mixin_ModifyCelestialGradient extends World { - protected Mixin_ModifyCelestialGradient(MutableWorldProperties mutableWorldProperties, RegistryKey registryKey, DynamicRegistryManager dynamicRegistryManager, RegistryEntry registryEntry, Supplier supplier, boolean bl, boolean bl2, long l, int i) { - super(mutableWorldProperties, registryKey, dynamicRegistryManager, registryEntry, supplier, bl, bl2, l, i); - } - - @Override - public float getSkyAngle(float tickDelta) { - if (PolyTimeConfig.isEnabled()) { - return polyweather$angleFromTime(PolyTimeClient.getCurrentTime(), tickDelta); - } - - return super.getSkyAngle(tickDelta); - } - - @Unique - private float polyweather$angleFromTime(float time, float tickDelta) { - float f = ((time % 24000L) + tickDelta) / 24000f - 0.25f; - if (f < 0f) f += 1f; - if (f > 1f) f -= 1f; - return 1f - (float) ((Math.cos(f * Math.PI) + 1.0) / 2.0); - } -} diff --git a/versions/1.21.1-fabric/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java b/versions/1.21.1-fabric/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java deleted file mode 100644 index f847f97..0000000 --- a/versions/1.21.1-fabric/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.polyfrost.polytime.mixin; - -import net.minecraft.client.world.ClientWorld; -import net.minecraft.client.render.WorldRenderer; -import org.polyfrost.polytime.client.PolyTimeConfig; -import org.polyfrost.polytime.client.realtime.RealTimeHandler; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(WorldRenderer.class) -public class Mixin_FixMoonPhases { - @Redirect(method = "renderSky", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/world/ClientWorld;getMoonPhase()I")) - private int polyweather$fixMoonPhase(ClientWorld level) { - if (PolyTimeConfig.isEnabled() && PolyTimeConfig.isIrlTime()) { - return RealTimeHandler.getCurrentLunarPhase(); - } - - return level.getMoonPhase(); - } -} diff --git a/versions/1.21.1/gradle.properties b/versions/1.21.1/gradle.properties new file mode 100644 index 0000000..6c6de24 --- /dev/null +++ b/versions/1.21.1/gradle.properties @@ -0,0 +1,3 @@ +parchment_version=2024.11.17 +yalmm_version=3 +minecraft_version=1.21.1 diff --git a/versions/1.21.10/gradle.properties b/versions/1.21.10/gradle.properties new file mode 100644 index 0000000..09c98a5 --- /dev/null +++ b/versions/1.21.10/gradle.properties @@ -0,0 +1,3 @@ +parchment_version=2025.10.12 +yalmm_version=3 +minecraft_version=1.21.10 diff --git a/versions/1.21.11/gradle.properties b/versions/1.21.11/gradle.properties new file mode 100644 index 0000000..70e1122 --- /dev/null +++ b/versions/1.21.11/gradle.properties @@ -0,0 +1,3 @@ +parchment_version=2025.12.20 +yalmm_version= +minecraft_version=1.21.11 diff --git a/versions/1.21.4-neoforge/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java b/versions/1.21.4-neoforge/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java deleted file mode 100644 index 68f71fb..0000000 --- a/versions/1.21.4-neoforge/src/main/java/org/polyfrost/polytime/mixin/Mixin_FixMoonPhases.java +++ /dev/null @@ -1,31 +0,0 @@ -package org.polyfrost.polytime.mixin; - -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.client.renderer.LevelRenderer; -import org.polyfrost.polytime.client.PolyTimeConfig; -import org.polyfrost.polytime.client.realtime.RealTimeHandler; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.Redirect; - -@Mixin(LevelRenderer.class) -public class Mixin_FixMoonPhases { - @Redirect( - //#if FORGE-LIKE - method = "lambda$addSkyPass$12", - //#else - //$$ method = "method_62215", - //#endif - at = @At( - value = "INVOKE", - target = "Lnet/minecraft/client/multiplayer/ClientLevel;getMoonPhase()I" - ) - ) - private int polyweather$fixMoonPhase(ClientLevel level) { - if (PolyTimeConfig.isEnabled() && PolyTimeConfig.isIrlTime()) { - return RealTimeHandler.getCurrentLunarPhase(); - } - - return level.getMoonPhase(); - } -} diff --git a/versions/1.21.4-neoforge/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java b/versions/1.21.4-neoforge/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java deleted file mode 100644 index 14a8c23..0000000 --- a/versions/1.21.4-neoforge/src/main/java/org/polyfrost/polytime/mixin/Mixin_ModifyCelestialGradient.java +++ /dev/null @@ -1,40 +0,0 @@ -package org.polyfrost.polytime.mixin; - -import net.minecraft.client.multiplayer.ClientLevel; -import net.minecraft.core.RegistryAccess; -import net.minecraft.resources.ResourceKey; -import net.minecraft.core.Holder; -import net.minecraft.util.profiling.ProfilerFiller; -import net.minecraft.world.level.Level; -import net.minecraft.world.level.dimension.DimensionType; -import net.minecraft.world.level.storage.WritableLevelData; -import org.polyfrost.polytime.client.PolyTimeClient; -import org.polyfrost.polytime.client.PolyTimeConfig; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.Unique; - -import java.util.function.Supplier; - -@Mixin(ClientLevel.class) -public abstract class Mixin_ModifyCelestialGradient extends Level { - protected Mixin_ModifyCelestialGradient(WritableLevelData arg, ResourceKey arg2, RegistryAccess arg3, Holder arg4, boolean bl, boolean bl2, long l, int i) { - super(arg, arg2, arg3, arg4, bl, bl2, l, i); - } - - @Override - public float getTimeOfDay(float tickDelta) { - if (PolyTimeConfig.isEnabled()) { - return polyweather$angleFromTime(PolyTimeClient.getCurrentTime(), tickDelta); - } - - return super.getTimeOfDay(tickDelta); - } - - @Unique - private float polyweather$angleFromTime(float time, float tickDelta) { - float f = ((time % 24000L) + tickDelta) / 24000f - 0.25f; - if (f < 0f) f += 1f; - if (f > 1f) f -= 1f; - return 1f - (float) ((Math.cos(f * Math.PI) + 1.0) / 2.0); - } -} diff --git a/versions/1.21.4/gradle.properties b/versions/1.21.4/gradle.properties new file mode 100644 index 0000000..2dee9c5 --- /dev/null +++ b/versions/1.21.4/gradle.properties @@ -0,0 +1,3 @@ +parchment_version=2025.03.23 +yalmm_version=3 +minecraft_version=1.21.4 diff --git a/versions/1.21.8/gradle.properties b/versions/1.21.8/gradle.properties new file mode 100644 index 0000000..89bd790 --- /dev/null +++ b/versions/1.21.8/gradle.properties @@ -0,0 +1,3 @@ +parchment_version=2025.09.14 +yalmm_version=3 +minecraft_version=1.21.8 diff --git a/versions/mainProject b/versions/mainProject deleted file mode 100644 index dd1433e..0000000 --- a/versions/mainProject +++ /dev/null @@ -1 +0,0 @@ -1.8.9-forge \ No newline at end of file From 63e314c7c63ef41e9ba9935738fa5e271b4b037c Mon Sep 17 00:00:00 2001 From: MicrocontrollersDev Date: Wed, 14 Jan 2026 23:30:47 -0700 Subject: [PATCH 2/3] bloom and hud --- build.gradle.kts | 14 +++++++------- .../org/polyfrost/polytime/PolyTimeConstants.kt | 9 +++------ 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index d61ac8c..a668032 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,6 +4,7 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile plugins { id("net.fabricmc.fabric-loom-remap") version "1.14-SNAPSHOT" id("org.jetbrains.kotlin.jvm") version "2.3.0" + id("dev.deftu.gradle.bloom") version "0.2.0" } val modid = property("mod.id") @@ -49,17 +50,16 @@ dependencies { modImplementation("org.polyfrost.oneconfig:internal:1.0.0-alpha.181") modImplementation("org.polyfrost.oneconfig:ui:1.0.0-alpha.181") modImplementation("org.polyfrost.oneconfig:utils:1.0.0-alpha.181") + modImplementation("org.polyfrost.oneconfig:hud:1.0.0-alpha.181") implementation("dev.deftu:commons-suncalc:0.1.0")!! - - implementation("dev.deftu:Bloom:0.1.2") } -//bloom { -// replacement("@MOD_ID@", modid) -// replacement("@MOD_NAME@", modname) -// replacement("@MOD_VERSION@", modversion) -//} +bloom { + replacement("@MOD_ID@", modid!!) + replacement("@MOD_NAME@", modname!!) + replacement("@MOD_VERSION@", modversion!!) +} tasks.processResources { val props = mapOf( diff --git a/src/main/kotlin/org/polyfrost/polytime/PolyTimeConstants.kt b/src/main/kotlin/org/polyfrost/polytime/PolyTimeConstants.kt index e1f6034..1d4bad4 100644 --- a/src/main/kotlin/org/polyfrost/polytime/PolyTimeConstants.kt +++ b/src/main/kotlin/org/polyfrost/polytime/PolyTimeConstants.kt @@ -2,10 +2,7 @@ package org.polyfrost.polytime object PolyTimeConstants { // Sets the variables from `gradle.properties`. Depends on the `bloom` DGT plugin. -// const val ID: String = "@MOD_ID@" -// const val NAME: String = "@MOD_NAME@" -// const val VERSION: String = "@MOD_VERSION@" - const val ID: String = "polytime" - const val NAME: String = "PolyTime" - const val VERSION: String = "1.0.0-alpha.2" + const val ID: String = "@MOD_ID@" + const val NAME: String = "@MOD_NAME@" + const val VERSION: String = "@MOD_VERSION@" } From 0960cc1d724cc15842c5f160f1a9fa4bc04e2e6b Mon Sep 17 00:00:00 2001 From: MicrocontrollersDev Date: Wed, 14 Jan 2026 23:40:00 -0700 Subject: [PATCH 3/3] suppress warnings and optionalprop parchment --- build.gradle.kts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index a668032..6a4c624 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -34,9 +34,12 @@ loom { dependencies { minecraft("com.mojang:minecraft:${property("minecraft_version")}") + @Suppress("UnstableApiUsage") mappings(loom.layered { officialMojangMappings() - parchment("org.parchmentmc.data:parchment-${property("minecraft_version")}:${property("parchment_version")}@zip") + optionalProp("${property("parchment_version")}") { + parchment("org.parchmentmc.data:parchment-${property("minecraft_version")}:$it@zip") + } optionalProp("${property("yalmm_version")}") { mappings("dev.lambdaurora:yalmm-mojbackward:${property("minecraft_version")}+build.$it") }