Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ dependencies {
modImplementation "software.bernie.geckolib:geckolib-fabric-1.18:${geckolib_version}"

// Dev QOL
modLocalRuntime("com.terraformersmc:modmenu:${modmenu_version}")
modImplementation "com.terraformersmc:modmenu:${modmenu_version}"
modLocalRuntime("me.shedaniel:RoughlyEnoughItems-fabric:${rei_version}")

modCompileOnly "maven.modrinth:yttr:${yttr_version}"
Expand All @@ -66,6 +66,10 @@ dependencies {
modImplementation("com.simibubi.create:create-fabric-1.18.2:${create_version}")

implementation 'com.google.code.gson:gson:2.8.5'

//toml config
modImplementation "com.electronwill.night-config:core:3.8.3"
modImplementation "com.electronwill.night-config:toml:3.8.3"
}

processResources {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,16 @@
package com.github.ethanicuss.astraladditions;

import com.github.ethanicuss.astraladditions.config.AstralAdditionsConfig;
import com.github.ethanicuss.astraladditions.musicplayer.NowPlayingHud;
import com.github.ethanicuss.astraladditions.registry.*;
import com.github.ethanicuss.astraladditions.playertracker.PlayerTracker;
import net.fabricmc.api.ClientModInitializer;
import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents;
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
import net.fabricmc.fabric.api.client.rendering.v1.WorldRenderEvents;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class AstralAdditionsClient implements ClientModInitializer {
public static final Logger LOGGER = LoggerFactory.getLogger(AstralAdditions.MOD_ID);
public static PlayerTracker playerTracker = new PlayerTracker();

@Override
public void onInitializeClient() {
Expand All @@ -22,6 +20,7 @@ public void onInitializeClient() {
ModParticles.registerClient();
ModItemProperties.registerClient();
ModPotion.registerClient();
AstralAdditionsConfig.load();
LOGGER.info("Astral Additions client is active!");

//!IDK where to move these to
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
package com.github.ethanicuss.astraladditions.config;

import com.electronwill.nightconfig.core.file.CommentedFileConfig;
import com.electronwill.nightconfig.core.io.WritingMode;
import com.github.ethanicuss.astraladditions.AstralAdditions;
import com.github.ethanicuss.astraladditions.musicplayer.NowPlayingHud;
import net.fabricmc.loader.api.FabricLoader;

import java.nio.file.Files;
import java.nio.file.Path;

public class AstralAdditionsConfig {

private static final Path configDir = FabricLoader.getInstance().getConfigDir().resolve("astraladditions");
private static final Path configFile = configDir.resolve("config.toml");

private static CommentedFileConfig config;


public static boolean combatMusicEnabled = true;

public static int musicBoxX = 0;
public static int musicBoxY = 0;
public static double musicBoxOpacity = 0.85;
public static double musicBoxFadeIn = 0.2;
public static double musicBoxHangTime = 5.0;
public static double musicBoxFadeOut = 0.2;
public static boolean musicBoxShimmerBorder = true;
public static int musicBoxSizeX = 80;
public static int musicBoxSizeY = 32;
public static boolean musicBoxWordWrap = true;

public static boolean hasBeenToMoon = false;
public static boolean hasHeardPostMoonSong = false;


public static void load() {
try {
if (config != null) {
config.close();
config = null;
}

Files.createDirectories(configDir);

config = CommentedFileConfig.builder(configFile)
.sync()
.preserveInsertionOrder()
.writingMode(WritingMode.REPLACE)
.build();

config.load();
setDefaults();

combatMusicEnabled = config.getOrElse("combatMusic.enabled", true);

musicBoxX = config.getOrElse("musicBox.x", 0);
musicBoxY = config.getOrElse("musicBox.y", 0);
musicBoxOpacity = config.getOrElse("musicBox.opacity", 0.85);
musicBoxFadeIn = config.getOrElse("musicBox.fadeIn", 0.2);
musicBoxHangTime = config.getOrElse("musicBox.hangTime", 5.0);
musicBoxFadeOut = config.getOrElse("musicBox.fadeOut", 0.2);
musicBoxShimmerBorder = config.getOrElse("musicBox.shimmerborder", true);
musicBoxSizeX = config.getOrElse("musicBox.sizeX", 80);
musicBoxSizeY = config.getOrElse("musicBox.sizeY", 32);
musicBoxWordWrap = config.getOrElse("musicBox.wordWrap", true);

hasBeenToMoon = config.getOrElse("playerData.hasBeenToMoon", false);
hasHeardPostMoonSong = config.getOrElse("playerData.hasHeardPostMoonSong", false);

save();
AstralAdditions.LOGGER.info("AstralAdditions config loaded successfully");
} catch (Exception error) {
AstralAdditions.LOGGER.error("Failed to load AstralAdditions config", error);
}
}

private static void setDefaults() {
addDefault("combatMusic.enabled", true, "Enable combat music");

addDefault("musicBox.x", 0, "Music box X position");
addDefault("musicBox.y", 0, "Music box Y position");
addDefault("musicBox.opacity", 0.85, "Music box opacity");
addDefault("musicBox.fadeIn", 0.2, "Fade in time");
addDefault("musicBox.hangTime", 5.0, "Time to remain fully visible");
addDefault("musicBox.fadeOut", 0.2, "Fade out time");
addDefault("musicBox.shimmerborder", true, "Enable shimmer border");
addDefault("musicBox.sizeX", 80, "Music box width");
addDefault("musicBox.sizeY", 32, "Music box height");
addDefault("musicBox.wordWrap", true, "Wrap long text");

addDefault("playerData.hasBeenToMoon", false, "Has the player has visited the moon");
addDefault("playerData.hasHeardPostMoonSong", false, "Has the player has heard the post-moon song");
}

private static void addDefault(String path, Object value, String comment) {
if (!config.contains(path)) {
config.set(path, value);
}
config.setComment(path, comment);
}

public static void save() {
try {
if (config == null) {
return;
}

config.set("combatMusic.enabled", combatMusicEnabled);

config.set("musicBox.x", musicBoxX);
config.set("musicBox.y", musicBoxY);
config.set("musicBox.opacity", musicBoxOpacity);
config.set("musicBox.fadeIn", musicBoxFadeIn);
config.set("musicBox.hangTime", musicBoxHangTime);
config.set("musicBox.fadeOut", musicBoxFadeOut);
config.set("musicBox.shimmerborder", musicBoxShimmerBorder);
config.set("musicBox.sizeX", musicBoxSizeX);
config.set("musicBox.sizeY", musicBoxSizeY);
config.set("musicBox.wordWrap", musicBoxWordWrap);

config.set("playerData.hasBeenToMoon", hasBeenToMoon);
config.set("playerData.hasHeardPostMoonSong", hasHeardPostMoonSong);

config.save();
AstralAdditions.LOGGER.info("AstralAdditions config saved successfully");
} catch (Exception error) {
AstralAdditions.LOGGER.error("Failed to save AstralAdditions config", error);
}
}

public static void onReload() {
NowPlayingHud.onConfigReload();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.github.ethanicuss.astraladditions.config;

import com.terraformersmc.modmenu.api.ConfigScreenFactory;
import com.terraformersmc.modmenu.api.ModMenuApi;
import net.minecraft.client.gui.screen.Screen;

public class AstralAdditionsModMenu implements ModMenuApi {

@Override
public ConfigScreenFactory<?> getModConfigScreenFactory() {
return (ConfigScreenFactory<Screen>) ConfigScreen::create;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package com.github.ethanicuss.astraladditions.config;

import me.shedaniel.clothconfig2.api.ConfigBuilder;
import me.shedaniel.clothconfig2.api.ConfigCategory;
import me.shedaniel.clothconfig2.api.ConfigEntryBuilder;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.text.LiteralText;

public class ConfigScreen {

public static Screen create(Screen parent) {
ConfigBuilder builder = ConfigBuilder.create()
.setParentScreen(parent)
.setTitle(new LiteralText("Astral Additions Config"))
.setSavingRunnable(() -> {
AstralAdditionsConfig.save();
AstralAdditionsConfig.load();
AstralAdditionsConfig.onReload();
});

ConfigEntryBuilder entryBuilder = builder.entryBuilder();

ConfigCategory combatCategory = builder.getOrCreateCategory(new LiteralText("Combat Music"));
ConfigCategory musicBoxCategory = builder.getOrCreateCategory(new LiteralText("Music Box"));

combatCategory.addEntry(entryBuilder
.startBooleanToggle(new LiteralText("Enabled"), AstralAdditionsConfig.combatMusicEnabled)
.setDefaultValue(true)
.setSaveConsumer(value -> AstralAdditionsConfig.combatMusicEnabled = value)
.build());

musicBoxCategory.addEntry(entryBuilder
.startIntField(new LiteralText("X"), AstralAdditionsConfig.musicBoxX)
.setDefaultValue(0)
.setMin(0)
.setMax(10000)
.setSaveConsumer(value -> AstralAdditionsConfig.musicBoxX = value)
.build());

musicBoxCategory.addEntry(entryBuilder
.startIntField(new LiteralText("Y"), AstralAdditionsConfig.musicBoxY)
.setDefaultValue(0)
.setMin(0)
.setMax(10000)
.setSaveConsumer(value -> AstralAdditionsConfig.musicBoxY = value)
.build());

musicBoxCategory.addEntry(entryBuilder
.startDoubleField(new LiteralText("Opacity"), AstralAdditionsConfig.musicBoxOpacity)
.setDefaultValue(0.85)
.setMin(0.0)
.setMax(1.0)
.setSaveConsumer(value -> AstralAdditionsConfig.musicBoxOpacity = value)
.build());

musicBoxCategory.addEntry(entryBuilder
.startDoubleField(new LiteralText("Fade In"), AstralAdditionsConfig.musicBoxFadeIn)
.setDefaultValue(0.2)
.setMin(0.0)
.setSaveConsumer(value -> AstralAdditionsConfig.musicBoxFadeIn = value)
.build());

musicBoxCategory.addEntry(entryBuilder
.startDoubleField(new LiteralText("Hang Time"), AstralAdditionsConfig.musicBoxHangTime)
.setDefaultValue(5.0)
.setMin(0.0)
.setSaveConsumer(value -> AstralAdditionsConfig.musicBoxHangTime = value)
.build());

musicBoxCategory.addEntry(entryBuilder
.startDoubleField(new LiteralText("Fade Out"), AstralAdditionsConfig.musicBoxFadeOut)
.setDefaultValue(0.2)
.setMin(0.0)
.setSaveConsumer(value -> AstralAdditionsConfig.musicBoxFadeOut = value)
.build());

musicBoxCategory.addEntry(entryBuilder
.startBooleanToggle(new LiteralText("Shimmer Border"), AstralAdditionsConfig.musicBoxShimmerBorder)
.setDefaultValue(true)
.setSaveConsumer(value -> AstralAdditionsConfig.musicBoxShimmerBorder = value)
.build());

musicBoxCategory.addEntry(entryBuilder
.startIntField(new LiteralText("Size X"), AstralAdditionsConfig.musicBoxSizeX)
.setDefaultValue(80)
.setMin(80)
.setSaveConsumer(value -> AstralAdditionsConfig.musicBoxSizeX = value)
.build());

musicBoxCategory.addEntry(entryBuilder
.startIntField(new LiteralText("Size Y"), AstralAdditionsConfig.musicBoxSizeY)
.setDefaultValue(32)
.setMin(32)
.setSaveConsumer(value -> AstralAdditionsConfig.musicBoxSizeY = value)
.build());

musicBoxCategory.addEntry(entryBuilder
.startBooleanToggle(new LiteralText("Word Wrap"), AstralAdditionsConfig.musicBoxWordWrap)
.setDefaultValue(true)
.setSaveConsumer(value -> AstralAdditionsConfig.musicBoxWordWrap = value)
.build());

return builder.build();
}
}
Loading
Loading