Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
add config and some particle improvements
- Loading branch information
1 parent
b496568
commit 84f70ec
Showing
14 changed files
with
778 additions
and
17 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
88 changes: 88 additions & 0 deletions
88
src/main/java/games/enchanted/fallingBlockParticles/config/ConfigFileHandling.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,88 @@ | ||
package games.enchanted.fallingBlockParticles.config; | ||
|
||
import java.io.IOException; | ||
import java.nio.file.Files; | ||
import java.nio.file.Path; | ||
import games.enchanted.fallingBlockParticles.libs.nu.studer.OrderedProperties; | ||
|
||
import games.enchanted.fallingBlockParticles.FallingBlockParticlesClient; | ||
import games.enchanted.fallingBlockParticles.util.Conversions; | ||
import net.fabricmc.loader.api.FabricLoader; | ||
|
||
public class ConfigFileHandling { | ||
public static final String FBP_RARITY = "falling_block_particle__rarity"; | ||
public static final String FBP_MIN_TICK_AGE = "falling_block_particle__min_age_in_ticks"; | ||
public static final String FBP_MAX_TICK_AGE = "falling_block_particle__max_age_in_ticks"; | ||
public static final String FBP_SCALE_TIME = "falling_block_particle__scale_time_in_ticks"; | ||
public static final String FBP_SCALE_DELAY = "falling_block_particle__scale_delay_in_ticks"; | ||
|
||
private static void writeProperties(OrderedProperties p) { | ||
p.setProperty(FBP_RARITY, Integer.toString(ConfigValues.falling_block_particle__rarity)); | ||
p.setProperty(FBP_MIN_TICK_AGE, Integer.toString(ConfigValues.falling_block_particle__minAgeInTicks)); | ||
p.setProperty(FBP_MAX_TICK_AGE, Integer.toString(ConfigValues.falling_block_particle__maxAgeInTicks)); | ||
p.setProperty(FBP_SCALE_TIME, Integer.toString(ConfigValues.falling_block_particle__scaleTimeInTicks)); | ||
p.setProperty(FBP_SCALE_DELAY, Integer.toString(ConfigValues.falling_block_particle__scaleDelayInTicks)); | ||
} | ||
|
||
private static void setConfigFromProperties(OrderedProperties p) { | ||
ConfigValues.falling_block_particle__rarity = Conversions.defaultedStringToInt(getProperty(p, FBP_RARITY), DefaultConfigValues.falling_block_particle__rarity); | ||
ConfigValues.falling_block_particle__minAgeInTicks = Conversions.defaultedStringToInt(getProperty(p, FBP_MIN_TICK_AGE), ConfigValues.falling_block_particle__minAgeInTicks); | ||
ConfigValues.falling_block_particle__maxAgeInTicks = Conversions.defaultedStringToInt(getProperty(p, FBP_MAX_TICK_AGE), ConfigValues.falling_block_particle__maxAgeInTicks); | ||
ConfigValues.falling_block_particle__scaleTimeInTicks = Conversions.defaultedStringToInt(getProperty(p, FBP_SCALE_TIME), ConfigValues.falling_block_particle__scaleTimeInTicks); | ||
ConfigValues.falling_block_particle__scaleDelayInTicks = Conversions.defaultedStringToInt(getProperty(p, FBP_SCALE_DELAY), ConfigValues.falling_block_particle__scaleDelayInTicks); | ||
} | ||
|
||
|
||
// Call loadConfig before saving in onInitialize! | ||
public static void saveConfig() { | ||
OrderedProperties configProperties = new OrderedProperties(); | ||
Path configFilePath = FabricLoader.getInstance().getConfigDir().resolve(FallingBlockParticlesClient.CONFIG_FILE_NAME); | ||
|
||
writeProperties(configProperties); | ||
|
||
// create file if it doesn't already exist | ||
if(!Files.exists(configFilePath) ) { | ||
try { | ||
Files.createFile(configFilePath); | ||
} catch ( IOException exception ) { | ||
FallingBlockParticlesClient.log.error("Could not create config file \"" + FallingBlockParticlesClient.CONFIG_FILE_NAME + "\""); | ||
exception.printStackTrace(); | ||
return; | ||
} | ||
} | ||
|
||
// save properties to file | ||
try { | ||
configProperties.store(Files.newOutputStream(configFilePath), " -- Config file for " + FallingBlockParticlesClient.MOD_ID + " -- "); | ||
} catch ( IOException exception ) { | ||
FallingBlockParticlesClient.log.error("Could not write to config file \"" + FallingBlockParticlesClient.CONFIG_FILE_NAME + "\""); | ||
exception.printStackTrace(); | ||
} | ||
} | ||
|
||
public static void loadConfig() { | ||
OrderedProperties configProperties = new OrderedProperties(); | ||
Path configFilePath = FabricLoader.getInstance().getConfigDir().resolve(FallingBlockParticlesClient.CONFIG_FILE_NAME); | ||
|
||
// save defaults if no config exists | ||
if( !Files.exists(configFilePath) ) { | ||
saveConfig(); | ||
} | ||
|
||
// read properties from config file | ||
try { | ||
configProperties.load( Files.newInputStream(configFilePath) ); | ||
} catch ( IOException exception ) { | ||
FallingBlockParticlesClient.log.error("Could not read config file \"" + FallingBlockParticlesClient.CONFIG_FILE_NAME + "\""); | ||
exception.printStackTrace(); | ||
return; | ||
} | ||
|
||
setConfigFromProperties(configProperties); | ||
} | ||
|
||
private static String getProperty(OrderedProperties p, String property) { | ||
String prop = p.getProperty(property); | ||
return prop == null ? "" : prop; | ||
} | ||
} |
9 changes: 9 additions & 0 deletions
9
src/main/java/games/enchanted/fallingBlockParticles/config/ConfigValues.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package games.enchanted.fallingBlockParticles.config; | ||
|
||
public class ConfigValues { | ||
public static int falling_block_particle__rarity = DefaultConfigValues.falling_block_particle__rarity; | ||
public static int falling_block_particle__minAgeInTicks = DefaultConfigValues.falling_block_particle__minAgeInTicks; | ||
public static int falling_block_particle__maxAgeInTicks = DefaultConfigValues.falling_block_particle__maxAgeInTicks; | ||
public static int falling_block_particle__scaleTimeInTicks = DefaultConfigValues.falling_block_particle__scaleTimeInTicks; | ||
public static int falling_block_particle__scaleDelayInTicks = DefaultConfigValues.falling_block_particle__scaleDelayInTicks; | ||
} |
9 changes: 9 additions & 0 deletions
9
src/main/java/games/enchanted/fallingBlockParticles/config/DefaultConfigValues.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package games.enchanted.fallingBlockParticles.config; | ||
|
||
public class DefaultConfigValues { | ||
public static final int falling_block_particle__rarity = 11; | ||
public static final int falling_block_particle__minAgeInTicks = 70; | ||
public static final int falling_block_particle__maxAgeInTicks = 140; | ||
public static final int falling_block_particle__scaleTimeInTicks = 6; | ||
public static final int falling_block_particle__scaleDelayInTicks = 60; | ||
} |
74 changes: 74 additions & 0 deletions
74
src/main/java/games/enchanted/fallingBlockParticles/config/YACLConfigBuilder.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
package games.enchanted.fallingBlockParticles.config; | ||
|
||
import dev.isxander.yacl3.api.ConfigCategory; | ||
import dev.isxander.yacl3.api.Option; | ||
import dev.isxander.yacl3.api.OptionDescription; | ||
import dev.isxander.yacl3.api.OptionGroup; | ||
import dev.isxander.yacl3.api.YetAnotherConfigLib; | ||
import dev.isxander.yacl3.api.controller.IntegerSliderControllerBuilder; | ||
import games.enchanted.fallingBlockParticles.FallingBlockParticlesClient; | ||
import net.minecraft.client.gui.screen.Screen; | ||
import net.minecraft.text.Text; | ||
|
||
public class YACLConfigBuilder { | ||
private final static String translationStart = FallingBlockParticlesClient.MOD_ID; | ||
// https://github.com/isXander/Controlify/blob/update/1.20.3/src/main/java/dev/isxander/controlify/gui/screen/GlobalSettingsScreenFactory.java | ||
public static Screen buildScreen(Screen parent) { | ||
return YetAnotherConfigLib.createBuilder() | ||
.title( Text.translatableWithFallback(translationStart + ".config.title", "Configurable Item Timers Config") ) | ||
// main category | ||
.category( ConfigCategory.createBuilder() | ||
.name( Text.translatableWithFallback(translationStart + ".config.category.particles", "particles") ) | ||
|
||
// general group | ||
.group( OptionGroup.createBuilder() | ||
.name( Text.translatableWithFallback(translationStart + ".config.group.falling_block_particle", "falling block dust particle") ) | ||
// particle rarity | ||
.option( Option.<Integer>createBuilder() | ||
.name( Text.translatableWithFallback(translationStart + ".config.group.falling_block_particle.option.rarity", "particle spawn chance") ) | ||
.description( OptionDescription.of( Text.translatableWithFallback(translationStart + ".config.group.falling_block_particle.option.rarity.desc", "higher values reduce the chance of particles spawning") ) ) | ||
.binding( DefaultConfigValues.falling_block_particle__rarity, () -> ConfigValues.falling_block_particle__rarity, (newVal) -> ConfigValues.falling_block_particle__rarity = newVal ) | ||
.controller( opt -> IntegerSliderControllerBuilder.create(opt).range(1, 64).step(1) ) | ||
.build()) | ||
// min age | ||
.option( Option.<Integer>createBuilder() | ||
.name( Text.translatableWithFallback(translationStart + ".config.group.falling_block_particle.option.minAgeInTicks", "min particle lifespan (ticks)") ) | ||
.description( OptionDescription.of( Text.translatableWithFallback(translationStart + ".config.group.falling_block_particle.option.minAgeInTicks.desc", "minimum amount of time particles can live for, in ticks") ) ) | ||
.binding( DefaultConfigValues.falling_block_particle__minAgeInTicks, () -> ConfigValues.falling_block_particle__minAgeInTicks, (newVal) -> ConfigValues.falling_block_particle__minAgeInTicks = newVal ) | ||
.controller( opt -> IntegerSliderControllerBuilder.create(opt).range(0, 512).step(1) ) | ||
.build()) | ||
// max age | ||
.option( Option.<Integer>createBuilder() | ||
.name( Text.translatableWithFallback(translationStart + ".config.group.falling_block_particle.option.maxAgeInTicks", "max particle lifespan (ticks)") ) | ||
.description( OptionDescription.of( Text.translatableWithFallback(translationStart + ".config.group.falling_block_particle.option.maxAgeInTicks.desc", "maximum amount of time particles can live for, in ticks") ) ) | ||
.binding( DefaultConfigValues.falling_block_particle__maxAgeInTicks, () -> ConfigValues.falling_block_particle__maxAgeInTicks, (newVal) -> ConfigValues.falling_block_particle__maxAgeInTicks = newVal ) | ||
.controller( opt -> IntegerSliderControllerBuilder.create(opt).range(0, 512).step(1) ) | ||
.build()) | ||
// scale time | ||
.option( Option.<Integer>createBuilder() | ||
.name( Text.translatableWithFallback(translationStart + ".config.group.falling_block_particle.option.scaleTimeInTicks", "scale time (ticks)") ) | ||
.description( OptionDescription.of( Text.translatableWithFallback(translationStart + ".config.group.falling_block_particle.option.scaleTimeInTicks.desc", "time it takes for particle to shrink and dissapear, in ticks") ) ) | ||
.binding( DefaultConfigValues.falling_block_particle__scaleTimeInTicks, () -> ConfigValues.falling_block_particle__scaleTimeInTicks, (newVal) -> ConfigValues.falling_block_particle__scaleTimeInTicks = newVal ) | ||
.controller( opt -> IntegerSliderControllerBuilder.create(opt).range(0, 512).step(1) ) | ||
.build()) | ||
// scale delay | ||
.option( Option.<Integer>createBuilder() | ||
.name( Text.translatableWithFallback(translationStart + ".config.group.falling_block_particle.option.scaleDelayInTicks", "scale Delay (ticks)") ) | ||
.description( OptionDescription.of( Text.translatableWithFallback(translationStart + ".config.group.falling_block_particle.option.scaleDelayInTicks.desc", "deblay before the particle starts to shrink and disapear, in ticks") ) ) | ||
.binding( DefaultConfigValues.falling_block_particle__scaleDelayInTicks, () -> ConfigValues.falling_block_particle__scaleDelayInTicks, (newVal) -> ConfigValues.falling_block_particle__scaleDelayInTicks = newVal ) | ||
.controller( opt -> IntegerSliderControllerBuilder.create(opt).range(0, 512).step(1) ) | ||
.build()) | ||
|
||
.build()) | ||
|
||
.build()) | ||
|
||
.save(new Runnable() { | ||
@Override | ||
public void run() { | ||
ConfigFileHandling.saveConfig(); | ||
} | ||
}) | ||
.build().generateScreen(parent); | ||
} | ||
} |
15 changes: 15 additions & 0 deletions
15
src/main/java/games/enchanted/fallingBlockParticles/integrations/ModMenuIntegration.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
package games.enchanted.fallingBlockParticles.integrations; | ||
|
||
import com.terraformersmc.modmenu.api.ConfigScreenFactory; | ||
import com.terraformersmc.modmenu.api.ModMenuApi; | ||
|
||
import games.enchanted.fallingBlockParticles.config.YACLConfigBuilder; | ||
|
||
public class ModMenuIntegration implements ModMenuApi { | ||
@Override | ||
public ConfigScreenFactory<?> getModConfigScreenFactory() { | ||
return parent -> { | ||
return YACLConfigBuilder.buildScreen(parent); | ||
}; | ||
} | ||
} |
Oops, something went wrong.