From 4c9a7db3fed9b787057778099399873e18c5e379 Mon Sep 17 00:00:00 2001 From: superhize Date: Wed, 14 Feb 2024 06:04:02 +0100 Subject: [PATCH] Fix crash --- build.gradle.kts | 1 + do-release.sh | 2 + .../kotlin/be/hize/onlyfarm/OnlyFarmMod.kt | 24 +++++------ .../be/hize/onlyfarm/config/ConfigManager.kt | 43 +++++-------------- .../be/hize/onlyfarm/config/Features.java | 10 ++--- .../{Farming.java => FarmingConfig.java} | 2 +- .../features/{Other.java => OtherConfig.java} | 2 +- .../kotlin/be/hize/onlyfarm/utils/Utils.kt | 3 ++ 8 files changed, 35 insertions(+), 52 deletions(-) rename src/main/kotlin/be/hize/onlyfarm/config/features/{Farming.java => FarmingConfig.java} (95%) rename src/main/kotlin/be/hize/onlyfarm/config/features/{Other.java => OtherConfig.java} (95%) diff --git a/build.gradle.kts b/build.gradle.kts index c08fd32..9423b7b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -181,6 +181,7 @@ tasks.shadowJar { // If you want to include other dependencies and shadow them, you can relocate them in here relocate("io.github.moulberry.moulconfig", "$baseGroup.deps.moulconfig") relocate("moe.nea.libautoupdate", "$baseGroup.deps.libautoupdate") + mergeServiceFiles() } tasks.jar { diff --git a/do-release.sh b/do-release.sh index 67d4c24..a7ef934 100644 --- a/do-release.sh +++ b/do-release.sh @@ -7,3 +7,5 @@ git commit -m "Bump version" git tag "$newversion" git push origin main "$newversion" ./gradlew publishAllPublicationsToHizeRepository + +pause diff --git a/src/main/kotlin/be/hize/onlyfarm/OnlyFarmMod.kt b/src/main/kotlin/be/hize/onlyfarm/OnlyFarmMod.kt index 14399d2..2873f77 100644 --- a/src/main/kotlin/be/hize/onlyfarm/OnlyFarmMod.kt +++ b/src/main/kotlin/be/hize/onlyfarm/OnlyFarmMod.kt @@ -33,25 +33,24 @@ internal class OnlyFarmMod { @Mod.EventHandler fun preInit(event: FMLPreInitializationEvent) { - - } - - @Mod.EventHandler - fun init(event: FMLInitializationEvent) { - configManager = ConfigManager() - configManager.firstLoad() - Runtime.getRuntime().addShutdownHook(Thread { configManager.saveConfig(ConfigFileType.FEATURES, "shutdown-hook") }) loadModule(this) loadModule(MinecraftData()) loadModule(HypixelUtils) loadModule(ScoreboardData) - loadModule(AutoUpdate) loadModule(ButtonOnPause()) Commands.init() + } + + @Mod.EventHandler + fun init(event: FMLInitializationEvent) { + configManager = ConfigManager() + configManager.firstLoad() + Runtime.getRuntime().addShutdownHook(Thread { configManager.saveConfig(ConfigFileType.FEATURES, "shutdown-hook") }) + loadModule(AutoUpdate) } private fun loadModule(obj: Any) { @@ -73,16 +72,17 @@ internal class OnlyFarmMod { } companion object { - @JvmStatic - val feature: Features get() = configManager.features - lateinit var configManager: ConfigManager const val MOD_ID = "onlyfarm" @JvmStatic val version: String get() = Loader.instance().indexedModList[MOD_ID]!!.version + @JvmStatic + val feature: Features get() = configManager.features + lateinit var configManager: ConfigManager val modules: MutableList = ArrayList() + private val globalJob: Job = Job(null) val coroutineScope = CoroutineScope( CoroutineName("OnlyFarm") + SupervisorJob(globalJob) diff --git a/src/main/kotlin/be/hize/onlyfarm/config/ConfigManager.kt b/src/main/kotlin/be/hize/onlyfarm/config/ConfigManager.kt index 0b6860e..0e5600f 100644 --- a/src/main/kotlin/be/hize/onlyfarm/config/ConfigManager.kt +++ b/src/main/kotlin/be/hize/onlyfarm/config/ConfigManager.kt @@ -3,20 +3,14 @@ package be.hize.onlyfarm.config import be.hize.onlyfarm.OnlyFarmMod import be.hize.onlyfarm.utils.KotlinTypeAdapterFactory import be.hize.onlyfarm.utils.Logger -import be.hize.onlyfarm.utils.SimpleTimeMark -import be.hize.onlyfarm.utils.SimpleTimeMark.Companion.asTimeMark +import be.hize.onlyfarm.utils.Utils import be.hize.onlyfarm.utils.Utils.shutdownMinecraft import com.google.gson.GsonBuilder import com.google.gson.JsonObject -import com.google.gson.TypeAdapter -import com.google.gson.stream.JsonReader -import com.google.gson.stream.JsonWriter import io.github.moulberry.moulconfig.observer.PropertyTypeAdapterFactory import io.github.moulberry.moulconfig.processor.BuiltinMoulConfigGuis import io.github.moulberry.moulconfig.processor.ConfigProcessorDriver import io.github.moulberry.moulconfig.processor.MoulConfigProcessor -import net.minecraft.item.ItemStack -import net.minecraft.launchwrapper.Launch import java.io.* import java.nio.charset.StandardCharsets import java.nio.file.Files @@ -31,24 +25,6 @@ class ConfigManager { .serializeSpecialFloatingPointValues() .registerTypeAdapterFactory(PropertyTypeAdapterFactory()) .registerTypeAdapterFactory(KotlinTypeAdapterFactory()) - .registerTypeAdapter(UUID::class.java, object : TypeAdapter() { - override fun write(out: JsonWriter, value: UUID) { - out.value(value.toString()) - } - - override fun read(reader: JsonReader): UUID { - return UUID.fromString(reader.nextString()) - } - }.nullSafe()) - .registerTypeAdapter(SimpleTimeMark::class.java, object : TypeAdapter() { - override fun write(out: JsonWriter, value: SimpleTimeMark) { - out.value(value.toMillis()) - } - - override fun read(reader: JsonReader): SimpleTimeMark { - return reader.nextString().toLong().asTimeMark() - } - }.nullSafe()) .enableComplexMapKeySerialization() .create() @@ -79,11 +55,14 @@ class ConfigManager { } val features = OnlyFarmMod.feature - processor = MoulConfigProcessor(OnlyFarmMod.feature) + processor = MoulConfigProcessor(features) BuiltinMoulConfigGuis.addProcessors(processor) - // UpdateManager.injectConfigProcessor(processor) val configProcessorDriver = ConfigProcessorDriver(processor) - configProcessorDriver.processConfig(features) + try{ + configProcessorDriver.processConfig(features) + }catch(ex: Exception){ + println("Exc: ${ex.localizedMessage}") + } } @@ -99,10 +78,10 @@ class ConfigManager { logger.log("load-$fileName-now") - output = if (fileType==ConfigFileType.FEATURES) { + output = if (fileType == ConfigFileType.FEATURES) { val jsonObject = gson.fromJson(bufferedReader.readText(), JsonObject::class.java) val run = { gson.fromJson(jsonObject, defaultValue.javaClass) } - if (Launch.blackboard["fml.deobfuscatedEnvironment"] as Boolean) { + if (Utils.isInDevEnviromen()) { try { run() } catch (e: Throwable) { @@ -131,7 +110,7 @@ class ConfigManager { } } - if (output==defaultValue) { + if (output == defaultValue) { logger.log("Setting $fileName to be blank as it did not exist. It will be saved once something is written to it") } @@ -146,7 +125,7 @@ class ConfigManager { private fun saveFile(file: File?, fileName: String, data: Any, reason: String) { if (disableSaving) return logger.log("saveConfig: $reason") - if (file==null) throw Error("Can not save $fileName, ${fileName}File is null!") + if (file == null) throw Error("Can not save $fileName, ${fileName}File is null!") try { logger.log("Saving $fileName file") file.parentFile.mkdirs() diff --git a/src/main/kotlin/be/hize/onlyfarm/config/Features.java b/src/main/kotlin/be/hize/onlyfarm/config/Features.java index 2bad694..6ca282a 100644 --- a/src/main/kotlin/be/hize/onlyfarm/config/Features.java +++ b/src/main/kotlin/be/hize/onlyfarm/config/Features.java @@ -1,8 +1,8 @@ package be.hize.onlyfarm.config; import be.hize.onlyfarm.OnlyFarmMod; -import be.hize.onlyfarm.config.features.Farming; -import be.hize.onlyfarm.config.features.Other; +import be.hize.onlyfarm.config.features.FarmingConfig; +import be.hize.onlyfarm.config.features.OtherConfig; import com.google.gson.annotations.Expose; import io.github.moulberry.moulconfig.Config; import io.github.moulberry.moulconfig.Social; @@ -43,11 +43,9 @@ public String getTitle() { @Expose @Category(name = "Farming", desc = "Only category that matter.") - public Farming farming = new Farming(); + public FarmingConfig farming = new FarmingConfig(); @Expose @Category(name = "Other", desc = "Not farming related, so it matter less.") - public Other other = new Other(); - - + public OtherConfig other = new OtherConfig(); } diff --git a/src/main/kotlin/be/hize/onlyfarm/config/features/Farming.java b/src/main/kotlin/be/hize/onlyfarm/config/features/FarmingConfig.java similarity index 95% rename from src/main/kotlin/be/hize/onlyfarm/config/features/Farming.java rename to src/main/kotlin/be/hize/onlyfarm/config/features/FarmingConfig.java index a09c11f..feef0c5 100644 --- a/src/main/kotlin/be/hize/onlyfarm/config/features/Farming.java +++ b/src/main/kotlin/be/hize/onlyfarm/config/features/FarmingConfig.java @@ -4,7 +4,7 @@ import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean; import io.github.moulberry.moulconfig.annotations.ConfigOption; -public class Farming { +public class FarmingConfig { @Expose @ConfigOption(name = "1.12 Crop HitBox", desc = "Enable 1.12 Crop HitBox") diff --git a/src/main/kotlin/be/hize/onlyfarm/config/features/Other.java b/src/main/kotlin/be/hize/onlyfarm/config/features/OtherConfig.java similarity index 95% rename from src/main/kotlin/be/hize/onlyfarm/config/features/Other.java rename to src/main/kotlin/be/hize/onlyfarm/config/features/OtherConfig.java index 8bce84d..97b888a 100644 --- a/src/main/kotlin/be/hize/onlyfarm/config/features/Other.java +++ b/src/main/kotlin/be/hize/onlyfarm/config/features/OtherConfig.java @@ -4,7 +4,7 @@ import io.github.moulberry.moulconfig.annotations.ConfigEditorBoolean; import io.github.moulberry.moulconfig.annotations.ConfigOption; -public class Other { +public class OtherConfig { @Expose @ConfigOption(name = "Config Button", desc = "Add a button to the pause menu to configure OnlyFarm") @ConfigEditorBoolean diff --git a/src/main/kotlin/be/hize/onlyfarm/utils/Utils.kt b/src/main/kotlin/be/hize/onlyfarm/utils/Utils.kt index 98e5ab6..8f15334 100644 --- a/src/main/kotlin/be/hize/onlyfarm/utils/Utils.kt +++ b/src/main/kotlin/be/hize/onlyfarm/utils/Utils.kt @@ -8,6 +8,7 @@ import net.minecraft.block.BlockCrops import net.minecraft.block.BlockNetherWart import net.minecraft.block.BlockPotato import net.minecraft.client.Minecraft +import net.minecraft.launchwrapper.Launch import net.minecraft.util.AxisAlignedBB import net.minecraft.util.BlockPos import net.minecraft.world.World @@ -52,6 +53,8 @@ object Utils { FMLCommonHandler.instance().handleExit(-1) } + fun isInDevEnviromen() = Launch.blackboard["fml.deobfuscatedEnvironment"] as Boolean + fun updateCropsMaxY(world: World, pos: BlockPos, block: Block) { if (!HypixelUtils.onSkyblock) return val blockState = world.getBlockState(pos)