Compare commits

...

33 Commits

Author SHA1 Message Date
Liz Graham
c111cc7193 Update README.md 2023-06-21 02:49:11 +01:00
Liz Graham
deed3db2cd Update build-release.yml 2023-05-22 03:57:51 +01:00
Liz Graham
de0983047a Bump to 1.4.0 2023-05-22 03:30:29 +01:00
Liz Graham
f453148c35 Improve error handling for incompatible particles 2023-05-22 03:29:40 +01:00
Liz Graham
5f48fec41a Fix bugs and fix #4
Particles can no longer spawn under the world.
Particles no longer spawn in blocks, instead spawning in air.
Fixed bug present since 1.2.0, which meant particle amount was dependant on blocks around player.
New particle multiplier allowing greater control of particle amount.
New F3 screen text, allows user to debug particle amount.
Removed upper and lower limit buttons.
2023-05-22 03:26:21 +01:00
Liz Graham
c345b7822c UI update 2023-05-22 03:23:13 +01:00
Liz Graham
0a49b2d459 Update build-release.yml 2023-05-21 23:27:16 +01:00
Liz Graham
282ce2e1af Bump to 1.3.0 2023-05-21 07:47:32 +01:00
Liz Graham
ec342b7506 Update README.md 2023-05-21 07:44:22 +01:00
Liz Graham
b8a45b3ed5 set default id to white ash's id 2023-05-21 07:30:04 +01:00
Liz Graham
b5687628df Fix issues with out of array IDs 2023-05-21 06:58:47 +01:00
Liz Graham
5486f49555 Fix different bug with bounds causing a crash 2023-05-21 06:26:21 +01:00
Liz Graham
3469807388 Fix bug with bounds causing a crash
Implement in-game particle cycling
2023-05-21 06:09:07 +01:00
Liz Graham
a05356f475 update loom to 1.2-snapshot 2023-05-21 02:46:17 +01:00
Liz Graham
149ddbe6fe update gradle to 8.1.1 2023-05-21 02:46:01 +01:00
Liz Graham
eabe134475 remove redundant functions for negative bounds 2023-05-21 02:42:57 +01:00
Liz Graham
fa76355a87 Update modmenu to 5.1.0-beta.3 2023-05-21 02:41:20 +01:00
Liz Graham
fb540f04ff Update to 1.19.3
Took 37 seconds
2023-01-19 01:00:17 +00:00
Liz Graham
c0c99c61bb Update to loom 1.0
Took 40 minutes
2023-01-19 00:59:47 +00:00
Liz Graham
a8c1ce20b0 Merge branch '1.18.2' into 1.19.2 2022-08-26 13:38:43 +01:00
Liz Graham
35dd3e057c reduce size of icon image by 51% 2022-08-14 02:19:14 +01:00
Liz Graham
ab9ed3df3e reduce size of icon image by 51% 2022-08-14 02:19:08 +01:00
Liz Graham
008d3dda86 update to 1.19.2 2022-08-14 02:03:48 +01:00
Liz Graham
ec3767bc98 Merge branch '1.18.2' into 1.19 2022-06-01 20:09:29 +01:00
Liz Graham
059af3ea45 update license 2022-06-01 20:09:12 +01:00
Liz Graham
785d04f922 update license 2022-06-01 19:56:52 +01:00
Liz Graham
f375d1f6e1 Merge branch '1.18' into 1.19 2022-06-01 19:54:19 +01:00
Liz Graham
39da57ee43 none of this is needed lol 2022-06-01 19:49:48 +01:00
Liz Graham
8bc4805db0 update fabric-loom to 0.12 2022-06-01 19:44:40 +01:00
Liz Graham
b1b578cdbc update to 1.19-pre5 2022-06-01 19:44:18 +01:00
Liz Graham
90a10ce8a6 add backupsrc to .gitignore 2022-06-01 19:30:52 +01:00
Liz Graham
056a251a70 update to 1.19-pre1
-update mappings
-bump fabric.mod.json versions
-change `new TranslatableText` to `Text.translatable`
-change isBedWorking to bedWorking
2022-05-19 20:47:37 +01:00
Liz Graham
374833fba5 reupdate to 1.18.2 because I fucked up 2022-03-26 01:22:05 +00:00
19 changed files with 200 additions and 256 deletions

View File

@@ -33,29 +33,10 @@ jobs:
run: ./gradlew build --stacktrace run: ./gradlew build --stacktrace
- name: Upload artifacts to Modrinth, Curseforge and GitHub - name: Upload artifacts to Modrinth, Curseforge and GitHub
uses: Kir-Antipov/mc-publish@v2.0 uses: Kir-Antipov/mc-publish@v3.3
with: with:
modrinth-id: jawg7zT1 modrinth-id: jawg7zT1
modrinth-token: ${{ secrets.MODRINTH_TOKEN }} modrinth-token: ${{ secrets.MODRINTH_TOKEN }}
curseforge-id: 594750 curseforge-id: 594750
curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }} curseforge-token: ${{ secrets.CURSEFORGE_TOKEN }}
github-token: ${{ secrets.GITHUB_TOKEN }}
files: build/libs/!(*-@(dev|sources|all)).jar
version-type: release
loaders: fabric
java: 17
dependencies: |
fabric | depends | 0.46.0
P7dR8mSH | depends | 0.46.0
kirin | includes | 1.10.0-beta.2
modmenu | recommends | *
mOgUt4GM | recommends | *
version-resolver: latest # Defaults to selecting the latest compatible version of Minecraft, using the tag from the fabric.mod.json

1
.gitignore vendored
View File

@@ -31,3 +31,4 @@ bin/
# fabric # fabric
run/ run/
BackupSrc/

View File

@@ -6,7 +6,7 @@ I'm glad you asked! It's just a mod that adds the white ash particle from the Ba
Now to the nitty gritty: Now to the nitty gritty:
It works by checking if the player has the sky above them while being below sea level and then scales the amount of particles based on depth. It works by checking if the player has the sky above them while being below sea level and then scales the amount of particles based on depth.
<br><br>It has a config system that you can access using Mod Menu, most things you can change in-game, but to change the particle you'll need to open the config file manually :) <br><br>It has a config system that you can access using Mod Menu.
<br> <br>
## Dependencies ## Dependencies
Cave Dust requires the [Fabric API](https://www.curseforge.com/minecraft/mc-mods/fabric-api) but everything else Cave Dust *needs* is included. Cave Dust requires the [Fabric API](https://www.curseforge.com/minecraft/mc-mods/fabric-api) but everything else Cave Dust *needs* is included.

View File

@@ -1,5 +1,5 @@
plugins { plugins {
id 'fabric-loom' version '0.11-SNAPSHOT' id 'fabric-loom' version '1.2-SNAPSHOT'
id 'maven-publish' id 'maven-publish'
} }

View File

@@ -3,18 +3,17 @@ org.gradle.jvmargs=-Xmx1G
# Fabric Properties # Fabric Properties
# check these on https://fabricmc.net/develop # check these on https://fabricmc.net/develop
minecraft_version=1.18.1 minecraft_version=1.19.3
yarn_mappings=1.18.1+build.22 yarn_mappings=1.19.3+build.5
loader_version=0.12.11 loader_version=0.14.13
# Mod Properties # Mod Properties
mod_version = 1.2.0 mod_version = 1.4.0
maven_group = com.lizistired maven_group = com.lizistired
archives_base_name = cave_dust archives_base_name = cave_dust
# Dependencies # Dependencies
fabric_version=0.46.4+1.18 fabric_version=0.72.0+1.19.3
clothconfig_version = 6.1.48 clothconfig_version =9.0.94
modmenu_version = 3.0.1 modmenu_version =5.1.0-beta.3
minelp_version=4.4.0-beta.2 kirin_version=1.13.2
kirin_version=1.10.0-beta.2

Binary file not shown.

View File

@@ -1,5 +1,5 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists

10
gradlew vendored
View File

@@ -1,7 +1,7 @@
#!/bin/sh #!/bin/sh
# #
# Copyright © 2015-2021 the original authors. # Copyright © 2015-2021 the original authors.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License. # you may not use this file except in compliance with the License.
@@ -32,10 +32,10 @@
# Busybox and similar reduced shells will NOT work, because this script # Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features: # requires all of these POSIX shell features:
# * functions; # * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», # * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»; # «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»; # * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit». # * various built-in commands including «command», «set», and «ulimit».
# #
# Important for patching: # Important for patching:
# #

View File

@@ -1,11 +1,11 @@
package net.lizistired.cavedust; package net.lizistired.cavedust;
//minecraft imports //minecraft imports
import net.lizistired.cavedust.mixin.ClientWorldAccessor; import net.minecraft.block.Blocks;
import net.minecraft.client.MinecraftClient; import net.minecraft.client.MinecraftClient;
import net.minecraft.particle.ParticleTypes;
import net.minecraft.registry.Registries;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
import net.minecraft.util.Util;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
//other imports //other imports
@@ -25,7 +25,7 @@ import static net.lizistired.cavedust.utils.KeybindingHelper.*;
public class CaveDust implements ClientModInitializer { public class CaveDust implements ClientModInitializer {
//logger //logger
public static final Logger LOGGER = LoggerFactory.getLogger("caveDust"); public static final Logger LOGGER = LoggerFactory.getLogger("cavedust");
//make class static //make class static
private static CaveDust instance; private static CaveDust instance;
public static CaveDust getInstance() { public static CaveDust getInstance() {
@@ -35,11 +35,14 @@ public class CaveDust implements ClientModInitializer {
instance = this; instance = this;
} }
//config assignment //config assignment
private static CaveDustConfig config; private static net.lizistired.cavedust.CaveDustConfig config;
public CaveDustConfig getConfig() { public net.lizistired.cavedust.CaveDustConfig getConfig() {
return config; return config;
} }
public static int WHITE_ASH_ID = Registries.PARTICLE_TYPE.getRawId(ParticleTypes.WHITE_ASH);
public static int PARTICLE_AMOUNT = 0;
@Override @Override
public void onInitializeClient() { public void onInitializeClient() {
@@ -57,12 +60,12 @@ public class CaveDust implements ClientModInitializer {
if (keyBinding1.wasPressed()){ if (keyBinding1.wasPressed()){
getConfig().toggleCaveDust(); getConfig().toggleCaveDust();
LOGGER.info("Toggled dust"); LOGGER.info("Toggled dust");
client.player.sendSystemMessage(new TranslatableText("debug.cavedust.toggle." + config.getCaveDustEnabled()), Util.NIL_UUID); client.player.sendMessage(Text.translatable("debug.cavedust.toggle." + config.getCaveDustEnabled()), false);
} }
if (keyBinding2.wasPressed()){ if (keyBinding2.wasPressed()){
getConfig().load(); getConfig().load();
LOGGER.info("Reloaded config"); LOGGER.info("Reloaded config");
client.player.sendSystemMessage(new TranslatableText("debug.cavedust.reload"), Util.NIL_UUID); client.player.sendMessage(Text.translatable("debug.cavedust.reload"), false);
} }
//ensure world is not null //ensure world is not null
@@ -71,22 +74,24 @@ public class CaveDust implements ClientModInitializer {
//LOGGER.info(String.valueOf(((ClientWorldAccessor) client.world.getLevelProperties()).getFlatWorld())); //LOGGER.info(String.valueOf(((ClientWorldAccessor) client.world.getLevelProperties()).getFlatWorld()));
// ) // )
double probabilityNormalized = normalize(config.getLowerLimit(), config.getUpperLimit(), client.player.getBlockY()); double probabilityNormalized = normalize(config.getLowerLimit(), config.getUpperLimit(), client.player.getBlockY());
PARTICLE_AMOUNT = (int) (probabilityNormalized * config.getParticleMultiplier() * config.getParticleMultiplierMultiplier());
for (int i = 0; i < probabilityNormalized * config.getParticleMultiplier() * 10; i++) { for (int i = 0; i < PARTICLE_AMOUNT; i++) {
try { try {
double x = client.player.getPos().getX() + generateRandomDouble(config.getDimensionsMinX(), config.getDimensionsMaxX()); double x = client.player.getPos().getX() + generateRandomDouble(config.getDimensionsX() * -1, config.getDimensionsX());
double y = client.player.getPos().getY() + generateRandomDouble(config.getDimensionsMinX(), config.getDimensionsMaxY()); double y = client.player.getPos().getY() + generateRandomDouble(config.getDimensionsY() * -1, config.getDimensionsY());
double z = client.player.getPos().getZ() + generateRandomDouble(config.getDimensionsMinX(), config.getDimensionsMaxZ()); double z = client.player.getPos().getZ() + generateRandomDouble(config.getDimensionsZ() * -1, config.getDimensionsZ());
BlockPos particlePos = new BlockPos(x, y, z); BlockPos particlePos = new BlockPos(x, y, z);
if (!shouldParticlesSpawn(client, config, particlePos)){return;} if (shouldParticlesSpawn(client, config, particlePos)) {
if (client.world.getBlockState(particlePos).isAir()) {
world.addParticle(config.getParticle(), x, y, z, config.getVelocityRandomnessRandom(), config.getVelocityRandomnessRandom(), config.getVelocityRandomnessRandom()); world.addParticle(config.getParticle(), x, y, z, config.getVelocityRandomnessRandom(), config.getVelocityRandomnessRandom(), config.getVelocityRandomnessRandom());
} }
}
}
catch (NullPointerException e) { catch (NullPointerException e) {
LOGGER.error(String.valueOf(e)); LOGGER.error(String.valueOf(e));
getConfig().setParticle("minecraft:white_ash"); getConfig().setParticleID(WHITE_ASH_ID);
} }
} }
} }

View File

@@ -1,111 +1,76 @@
package net.lizistired.cavedust; package net.lizistired.cavedust;
import net.lizistired.cavedust.utils.JsonFile; import net.lizistired.cavedust.utils.JsonFile;
import net.minecraft.client.MinecraftClient;
import net.minecraft.particle.ParticleEffect; import net.minecraft.particle.ParticleEffect;
import net.minecraft.particle.ParticleTypes; import net.minecraft.particle.ParticleTypes;
import net.minecraft.registry.Registries;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier; import net.minecraft.util.Identifier;
import net.minecraft.util.registry.Registry;
import static net.lizistired.cavedust.CaveDust.*; import static net.lizistired.cavedust.CaveDust.*;
import static net.lizistired.cavedust.utils.MathHelper.*; import static net.lizistired.cavedust.utils.MathHelper.*;
import java.nio.file.Path; import java.nio.file.Path;
public class CaveDustConfig extends JsonFile { public class CaveDustConfig extends JsonFile {
private transient final CaveDust CaveDust; private transient final net.lizistired.cavedust.CaveDust CaveDust;
private int dimensionMaxX = 5; private int dimensionX = 5;
private int dimensionMaxY = 5; private int dimensionY = 5;
private int dimensionMaxZ = 5; private int dimensionZ = 5;
private int dimensionMinX = -5;
private int dimensionMinY = -5;
private int dimensionMinZ = -5;
private int velocityRandomness = 1; private int velocityRandomness = 1;
private boolean caveDustEnabled = true; private boolean caveDustEnabled = true;
private String particleName = "white_ash";
private boolean seaLevelCheck = true; private boolean seaLevelCheck = true;
private boolean superFlatStatus = false; private boolean superFlatStatus = false;
//private boolean enhancedDetection = true;
private float upperLimit = 64; private float upperLimit = 64;
private float lowerLimit = -64; private float lowerLimit = -64;
private int particleMultiplier = 1; private int particleMultiplier = 1;
public CaveDustConfig(Path file, CaveDust caveDust) { private int particleMultiplierMultiplier = 10;
private int particleID = WHITE_ASH_ID;
public CaveDustConfig(Path file, net.lizistired.cavedust.CaveDust caveDust) {
super(file); super(file);
this.CaveDust = caveDust; this.CaveDust = caveDust;
} }
public float setDimensionsMinX(float size){ public float setDimensionsX(float size){
if (this.dimensionMinX != size) { if (this.dimensionX != size) {
this.dimensionMinX = (int)size; this.dimensionX = (int)size;
save(); save();
} }
return getDimensionsMinX(); return getDimensionsX();
} }
public float setDimensionsMinY(float size){ public float setDimensionsY(float size){
if (this.dimensionMinY != size) { if (this.dimensionY != size) {
this.dimensionMinY = (int)size; this.dimensionY = (int)size;
save(); save();
} }
return getDimensionsMinY(); return getDimensionsY();
} }
public float setDimensionsMinZ(float size){ public float setDimensionsZ(float size){
if (this.dimensionMinZ != size) { if (this.dimensionZ != size) {
this.dimensionMinZ = (int)size; this.dimensionZ = (int)size;
save(); save();
} }
return getDimensionsMinZ(); return getDimensionsZ();
} }
public float getDimensionsMinX(){ public float getDimensionsX(){
return dimensionMinX; return dimensionX;
} }
public float getDimensionsMinY(){ public float getDimensionsY(){
return dimensionMinY; return dimensionY;
} }
public float getDimensionsMinZ(){ public float getDimensionsZ(){
return dimensionMinZ; return dimensionZ;
}
public float setDimensionsMaxX(float size){
if (this.dimensionMaxX != size) {
this.dimensionMaxX = (int)size;
save();
}
return getDimensionsMaxX();
}
public float setDimensionsMaxY(float size){
if (this.dimensionMaxY != size) {
this.dimensionMaxY = (int)size;
save();
}
return getDimensionsMaxY();
}
public float setDimensionsMaxZ(float size){
if (this.dimensionMaxZ != size) {
this.dimensionMaxZ = (int)size;
save();
}
return getDimensionsMaxZ();
}
public float getDimensionsMaxX(){
return dimensionMaxX;
}
public float getDimensionsMaxY(){
return dimensionMaxY;
}
public float getDimensionsMaxZ(){
return dimensionMaxZ;
} }
public float setUpperLimit(float upperLimit){ public float setUpperLimit(float upperLimit){
@@ -150,6 +115,16 @@ public class CaveDustConfig extends JsonFile {
return getParticleMultiplier(); return getParticleMultiplier();
} }
public int getParticleMultiplierMultiplier(){
return particleMultiplierMultiplier;
}
public float setParticleMultiplierMultiplier(float particleMultiplierMultiplier){
this.particleMultiplierMultiplier = (int) particleMultiplierMultiplier;
save();
return getParticleMultiplierMultiplier();
}
public boolean toggleCaveDust(){ public boolean toggleCaveDust(){
caveDustEnabled = !caveDustEnabled; caveDustEnabled = !caveDustEnabled;
save(); save();
@@ -161,17 +136,17 @@ public class CaveDustConfig extends JsonFile {
} }
public ParticleEffect setParticle(String particleType){ public ParticleEffect setParticle(String particleType){
particleName = particleType; //particleName = particleType;
save(); save();
return getParticle(); return getParticle();
} }
public ParticleEffect getParticle(){ public ParticleEffect getParticle(){
try { try {
return (ParticleEffect) Registry.PARTICLE_TYPE.get(new Identifier(particleName.toLowerCase())); return (ParticleEffect) Registries.PARTICLE_TYPE.get(new Identifier(Registries.PARTICLE_TYPE.getEntry(getParticleID()).get().getKey().get().getValue().toString().toLowerCase()));
} catch (ClassCastException e) { } catch (ClassCastException e) {
LOGGER.error(e + "\nThere was an error loading the specified particle from the config, make sure a valid particle name is specified. Falling back to \"minecraft:white_ash\"."); MinecraftClient.getInstance().player.sendMessage(Text.literal("Issue loading particle, defaulting to white ash particle!"), false);
particleName = "minecraft:white_ash"; setParticleID(WHITE_ASH_ID);
save(); save();
return ParticleTypes.WHITE_ASH; return ParticleTypes.WHITE_ASH;
} }
@@ -212,33 +187,42 @@ public class CaveDustConfig extends JsonFile {
return getSuperFlatStatus(); return getSuperFlatStatus();
} }
/*public boolean getEnhancedDetection(){ public void iterateParticle(){
return enhancedDetection; if(getParticleID() > Registries.PARTICLE_TYPE.size() - 2) {
particleID = 1;
save();
} else {
particleID = getParticleID() + 1;
save();
}
} }
public boolean setEnhancedDetection(){ public void setParticleID(int particleID){
enhancedDetection = !enhancedDetection; this.particleID = particleID;
save(); save();
return getEnhancedDetection(); }
}*/
public int getParticleID(){
if ((!Registries.PARTICLE_TYPE.getEntry(particleID).isPresent())) {
setParticleID(WHITE_ASH_ID);
}
return particleID;
}
public void resetConfig(){ public void resetConfig(){
dimensionMinX = -5; dimensionX = 5;
dimensionMinY = -5; dimensionY = 5;
dimensionMinZ = -5; dimensionZ = 5;
dimensionMaxX = 5;
dimensionMaxY = 5;
dimensionMaxZ = 5;
upperLimit = 64; upperLimit = 64;
lowerLimit = -64; lowerLimit = -64;
particleMultiplier = 1; particleMultiplier = 1;
particleMultiplierMultiplier = 10;
seaLevelCheck = true; seaLevelCheck = true;
caveDustEnabled = true; caveDustEnabled = true;
particleName = "minecraft:white_ash"; particleID = WHITE_ASH_ID;
save(); save();
} }
} }

View File

@@ -5,13 +5,14 @@ import com.minelittlepony.common.client.gui.element.*;
import net.lizistired.cavedust.utils.TranslatableTextHelper; import net.lizistired.cavedust.utils.TranslatableTextHelper;
import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.util.math.MatrixStack; import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.text.TranslatableText; import net.minecraft.particle.ParticleEffect;
import net.minecraft.registry.Registries;
import javax.annotation.Nullable; import net.minecraft.text.Text;
import org.jetbrains.annotations.Nullable;
public class ModMenuConfigScreen extends GameGui { public class ModMenuConfigScreen extends GameGui {
public ModMenuConfigScreen(@Nullable Screen parent) { public ModMenuConfigScreen(@Nullable Screen parent) {
super(new TranslatableText("menu.cavedust.title"), parent); super(Text.translatable("menu.cavedust.title"), parent);
} }
@Override @Override
@@ -20,89 +21,87 @@ public class ModMenuConfigScreen extends GameGui {
int row = height / 4 + 14; int row = height / 4 + 14;
CaveDustConfig config = CaveDust.getInstance().getConfig(); CaveDustConfig config = CaveDust.getInstance().getConfig();
TranslatableTextHelper transText = new TranslatableTextHelper(); TranslatableTextHelper transText = new TranslatableTextHelper();;
config.load(); config.load();
addButton(new Label(width / 2, 30)).setCentered().getStyle() addButton(new Label(width / 2, 30)).setCentered().getStyle()
.setText(getTitle()); .setText(getTitle());
addButton(new Button(left, row += -60).onClick(sender -> { addButton(new Button(left += -110, row += -60).onClick(sender -> {
sender.getStyle().setText("menu.cavedust.global." + config.toggleCaveDust()).setTooltip(new TranslatableText("menu.cavedust.global.tooltip." + config.getCaveDustEnabled())); sender.getStyle().setText("menu.cavedust.global." + config.toggleCaveDust()).setTooltip(Text.translatable("menu.cavedust.global.tooltip." + config.getCaveDustEnabled()));
})).getStyle() })).getStyle()
.setText("menu.cavedust.global." + config.getCaveDustEnabled()) .setText("menu.cavedust.global." + config.getCaveDustEnabled())
.setTooltip(new TranslatableText("menu.cavedust.global.tooltip." + config.getCaveDustEnabled())); .setTooltip(Text.translatable("menu.cavedust.global.tooltip." + config.getCaveDustEnabled()));
/*addButton(new Button(left, row += 24).onClick(sender -> { /*addButton(new Button(left, row += 24).onClick(sender -> {
sender.getStyle().setText("menu.cavedust.enhanceddetection." + config.setEnhancedDetection()).setTooltip(new TranslatableText("menu.cavedust.enhanceddetection.tooltip")); sender.getStyle().setText("menu.cavedust.enhanceddetection." + config.setEnhancedDetection()).setTooltip(Text.translatable("menu.cavedust.enhanceddetection.tooltip"));
})).getStyle() })).getStyle()
.setText("menu.cavedust.enhanceddetection." + config.getEnhancedDetection()) .setText("menu.cavedust.enhanceddetection." + config.getEnhancedDetection())
.setTooltip(new TranslatableText("menu.cavedust.enhanceddetection.tooltip"));*/ .setTooltip(Text.translatable("menu.cavedust.enhanceddetection.tooltip"));*/
addButton(new Button(left, row += 24).onClick(sender -> { addButton(new Button(left, row += 24).onClick(sender -> {
sender.getStyle().setText("menu.cavedust.superflatstatus." + config.setSuperFlatStatus()).setTooltip(new TranslatableText("menu.cavedust.superflatstatus.tooltip")); sender.getStyle().setText("menu.cavedust.superflatstatus." + config.setSuperFlatStatus()).setTooltip(Text.translatable("menu.cavedust.superflatstatus.tooltip"));
})).getStyle() })).getStyle()
.setText("menu.cavedust.superflatstatus." + config.getSuperFlatStatus()) .setText("menu.cavedust.superflatstatus." + config.getSuperFlatStatus())
.setTooltip(new TranslatableText("menu.cavedust.superflatstatus.tooltip")); .setTooltip(Text.translatable("menu.cavedust.superflatstatus.tooltip"));
addButton(new Slider(left += -110, row += 24, -50, 0, config.getDimensionsMinX()))
.onChange(config::setDimensionsMinX)
.setTextFormat(transText::formatMinX)
.getStyle().setTooltip(new TranslatableText("menu.cavedust.minX.tooltip"));
addButton(new Slider(left, row += 24, -50, 0, config.getDimensionsMinY()))
.onChange(config::setDimensionsMinY)
.setTextFormat(transText::formatMinY)
.getStyle().setTooltip(new TranslatableText("menu.cavedust.minY.tooltip"));
addButton(new Slider(left, row += 24, -50, 0, config.getDimensionsMinZ())) /*addButton(new Slider(left, row += 48, -64, 319, config.getUpperLimit()))
.onChange(config::setDimensionsMinZ)
.setTextFormat(transText::formatMinZ)
.getStyle().setTooltip(new TranslatableText("menu.cavedust.minZ.tooltip"));
addButton(new Slider(left += 220, row += -48, 0, 50, config.getDimensionsMaxX()))
.onChange(config::setDimensionsMaxX)
.setTextFormat(transText::formatMaxX)
.getStyle().setTooltip(new TranslatableText("menu.cavedust.maxX.tooltip"));
addButton(new Slider(left, row += 24, 0, 50, config.getDimensionsMaxY()))
.onChange(config::setDimensionsMaxY)
.setTextFormat(transText::formatMaxY)
.getStyle().setTooltip(new TranslatableText("menu.cavedust.maxY.tooltip"));
addButton(new Slider(left, row += 24, 0, 50, config.getDimensionsMaxZ()))
.onChange(config::setDimensionsMaxZ)
.setTextFormat(transText::formatMaxZ)
.getStyle().setTooltip(new TranslatableText("menu.cavedust.maxZ.tooltip"));
addButton(new Slider(left += -110, row += 24, -64, 319, config.getUpperLimit()))
.onChange(config::setUpperLimit) .onChange(config::setUpperLimit)
.setTextFormat(transText::formatUpperLimit) .setTextFormat(transText::formatUpperLimit)
.getStyle().setTooltip(new TranslatableText("menu.cavedust.upperlimit.tooltip")); .getStyle().setTooltip(Text.translatable("menu.cavedust.upperlimit.tooltip"));
addButton(new Slider(left, row += 24, -64, 319, config.getLowerLimit())) addButton(new Slider(left, row += 24, -64, 319, config.getLowerLimit()))
.onChange(config::setLowerLimit) .onChange(config::setLowerLimit)
.setTextFormat(transText::formatLowerLimit) .setTextFormat(transText::formatLowerLimit)
.getStyle().setTooltip(new TranslatableText("menu.cavedust.lowerlimit.tooltip")); .getStyle().setTooltip(Text.translatable("menu.cavedust.lowerlimit.tooltip"));*/
addButton(new Slider(left, row += 24, 1, 100, config.getParticleMultiplier())) addButton(new Slider(left, row += 24, 1, 100, config.getParticleMultiplier()))
.onChange(config::setParticleMultiplier) .onChange(config::setParticleMultiplier)
.setTextFormat(transText::formatParticleMultiplier) .setTextFormat(transText::formatParticleMultiplier)
.getStyle().setTooltip(new TranslatableText("menu.cavedust.particlemultiplier.tooltip")); .getStyle().setTooltip(Text.translatable("menu.cavedust.particlemultiplier.tooltip"));
addButton(new Slider(left, row += 24, 1, 100, config.getParticleMultiplierMultiplier()))
.onChange(config::setParticleMultiplierMultiplier)
.setTextFormat(transText::formatParticleMultiplierMultiplier)
.getStyle().setTooltip(Text.translatable("menu.cavedust.particlemultipliermultiplier.tooltip"));
addButton(new Button(left, row += 24).onClick(sender ->{
config.iterateParticle();
sender.getStyle().setText("Particle: " + (getNameOfParticle()));
})).getStyle().setText("Particle: " + (getNameOfParticle()))
.setTooltip(Text.translatable("menu.cavedust.particle.tooltip"));
addButton(new Slider(left += 220, row -= 96, 1, 50, config.getDimensionsX()))
.onChange(config::setDimensionsX)
.setTextFormat(transText::formatMaxX)
.getStyle().setTooltip(Text.translatable("menu.cavedust.X.tooltip"));
addButton(new Slider(left, row += 24, 1, 50, config.getDimensionsY()))
.onChange(config::setDimensionsY)
.setTextFormat(transText::formatMaxY)
.getStyle().setTooltip(Text.translatable("menu.cavedust.Y.tooltip"));
addButton(new Slider(left, row += 24, 1, 50, config.getDimensionsZ()))
.onChange(config::setDimensionsZ)
.setTextFormat(transText::formatMaxZ)
.getStyle().setTooltip(Text.translatable("menu.cavedust.Z.tooltip"));
addButton(new Slider(left, row += 24, 0, 10, config.getVelocityRandomness())) addButton(new Slider(left, row += 24, 0, 10, config.getVelocityRandomness()))
.onChange(config::setVelocityRandomness) .onChange(config::setVelocityRandomness)
.setTextFormat(transText::formatVelocityRandomness) .setTextFormat(transText::formatVelocityRandomness)
.getStyle().setTooltip(new TranslatableText("menu.cavedust.velocityrandomness.tooltip")); .getStyle().setTooltip(Text.translatable("menu.cavedust.velocityrandomness.tooltip"));
addButton(new Button(left, row += 24).onClick(sender -> { addButton(new Button(left -= 110, row += 60).onClick(sender -> {
config.resetConfig(); config.resetConfig();
finish(); finish();
})).getStyle().setText(new TranslatableText("menu.cavedust.reset")).setTooltip(new TranslatableText("menu.cavedust.reset.tooltip")); })).getStyle().setText(Text.translatable("menu.cavedust.reset")).setTooltip(Text.translatable("menu.cavedust.reset.tooltip"));
addButton(new Button(left, row += 60) addButton(new Button(left, row += 24)
.onClick(sender -> finish())).getStyle() .onClick(sender -> finish())).getStyle()
.setText("gui.done"); .setText("gui.done");
} }
@@ -111,4 +110,9 @@ public class ModMenuConfigScreen extends GameGui {
renderBackground(matrices); renderBackground(matrices);
super.render(matrices, mouseX, mouseY, partialTicks); super.render(matrices, mouseX, mouseY, partialTicks);
} }
private String getNameOfParticle(){
CaveDustConfig config = CaveDust.getInstance().getConfig();
config.load();
return Registries.PARTICLE_TYPE.getEntry(config.getParticleID()).get().getKey().get().getValue().toString();
}
} }

View File

@@ -1,48 +1,24 @@
package net.lizistired.cavedust.mixin; package net.lizistired.cavedust.mixin;
import net.lizistired.cavedust.CaveDustConfig;
import net.minecraft.client.gui.hud.DebugHud; import net.minecraft.client.gui.hud.DebugHud;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import java.lang.management.BufferPoolMXBean;
import java.lang.management.ManagementFactory;
import java.util.List; import java.util.List;
import java.util.Objects;
import static net.lizistired.cavedust.utils.MathHelper.*; import static net.lizistired.cavedust.CaveDust.PARTICLE_AMOUNT;
import static net.lizistired.cavedust.utils.ParticleSpawnUtil.shouldParticlesSpawn; import static net.lizistired.cavedust.utils.ParticleSpawnUtil.shouldParticlesSpawn;
@Mixin(DebugHud.class) @Mixin(DebugHud.class)
public abstract class MixinDebugScreenOverlay { public abstract class MixinDebugScreenOverlay {
@Unique
private static final List<BufferPoolMXBean> pools = ManagementFactory.getPlatformMXBeans(BufferPoolMXBean.class);
@Unique
private static final BufferPoolMXBean directPool;
static {
BufferPoolMXBean found = null;
for (BufferPoolMXBean pool : pools) {
if (pool.getName().equals("direct")) {
found = pool;
break;
}
}
directPool = Objects.requireNonNull(found);
}
@Inject(method = "getRightText", at = @At("RETURN")) @Inject(method = "getRightText", at = @At("RETURN"))
private void appendShaderPackText(CallbackInfoReturnable<List<String>> cir) { private void appendShaderPackText(CallbackInfoReturnable<List<String>> cir) {
List<String> messages = cir.getReturnValue(); List<String> messages = cir.getReturnValue();
messages.add(""); messages.add("");
messages.add("Should particles spawn: " + shouldParticlesSpawn); messages.add("Particle amount evaluated: " + PARTICLE_AMOUNT);
messages.add(""); messages.add("");
} }
} }

View File

@@ -2,7 +2,6 @@ package net.lizistired.cavedust.utils;
import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper;
import net.minecraft.client.option.KeyBinding; import net.minecraft.client.option.KeyBinding;
import net.minecraft.client.option.StickyKeyBinding;
import net.minecraft.client.util.InputUtil; import net.minecraft.client.util.InputUtil;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;

View File

@@ -7,7 +7,6 @@ import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World; import net.minecraft.world.World;
import java.util.Objects; import java.util.Objects;
import java.util.Optional;
import static net.minecraft.world.biome.BiomeKeys.LUSH_CAVES; import static net.minecraft.world.biome.BiomeKeys.LUSH_CAVES;
@@ -27,9 +26,9 @@ public class ParticleSpawnUtil {
if (!config.getCaveDustEnabled() if (!config.getCaveDustEnabled()
|| client.isPaused() || client.isPaused()
|| client.world == null || client.world == null
|| !client.world.getDimension().isBedWorking() || !client.world.getDimension().bedWorks()
|| Objects.requireNonNull(client.player).isSubmergedInWater() || Objects.requireNonNull(client.player).isSubmergedInWater()
|| Objects.equals(client.world.getBiomeKey(Objects.requireNonNull(client.player.getBlockPos())), Optional.of(LUSH_CAVES))) || client.world.getBiome(Objects.requireNonNull(client.player.getBlockPos())).matchesKey(LUSH_CAVES))
{ {
timer = 0; timer = 0;
shouldParticlesSpawn = false; shouldParticlesSpawn = false;
@@ -66,9 +65,10 @@ public class ParticleSpawnUtil {
if (!config.getCaveDustEnabled() if (!config.getCaveDustEnabled()
|| client.isPaused() || client.isPaused()
|| client.world == null || client.world == null
|| !client.world.getDimension().isBedWorking() || !client.world.getDimension().bedWorks()
|| Objects.requireNonNull(client.player).isSubmergedInWater() || (client.world.getBottomY() > pos.getY())
|| Objects.equals(client.world.getBiomeKey(Objects.requireNonNull(pos)), Optional.of(LUSH_CAVES))) || client.world.getBiome(Objects.requireNonNull(pos)).matchesKey(LUSH_CAVES))
{ {
timer = 0; timer = 0;
shouldParticlesSpawn = false; shouldParticlesSpawn = false;

View File

@@ -2,37 +2,33 @@ package net.lizistired.cavedust.utils;
import com.minelittlepony.common.client.gui.element.AbstractSlider; import com.minelittlepony.common.client.gui.element.AbstractSlider;
import net.minecraft.text.Text; import net.minecraft.text.Text;
import net.minecraft.text.TranslatableText;
import javax.swing.*;
public class TranslatableTextHelper { public class TranslatableTextHelper {
public Text formatMinX(AbstractSlider<Float> slider) {
return new TranslatableText("menu.cavedust.minX", (int)Math.floor(slider.getValue()));
}
public Text formatMinY(AbstractSlider<Float> slider) {
return new TranslatableText("menu.cavedust.minY", (int)Math.floor(slider.getValue()));
}
public Text formatMinZ(AbstractSlider<Float> slider) {
return new TranslatableText("menu.cavedust.minZ", (int)Math.floor(slider.getValue()));
}
public Text formatMaxX(AbstractSlider<Float> slider) { public Text formatMaxX(AbstractSlider<Float> slider) {
return new TranslatableText("menu.cavedust.maxX", (int)Math.floor(slider.getValue())); return Text.translatable("menu.cavedust.X", (int)Math.floor(slider.getValue()));
} }
public Text formatMaxY(AbstractSlider<Float> slider) { public Text formatMaxY(AbstractSlider<Float> slider) {
return new TranslatableText("menu.cavedust.maxY", (int)Math.floor(slider.getValue())); return Text.translatable("menu.cavedust.Y", (int)Math.floor(slider.getValue()));
} }
public Text formatMaxZ(AbstractSlider<Float> slider) { public Text formatMaxZ(AbstractSlider<Float> slider) {
return new TranslatableText("menu.cavedust.maxZ", (int)Math.floor(slider.getValue())); return Text.translatable("menu.cavedust.Z", (int)Math.floor(slider.getValue()));
} }
public Text formatUpperLimit(AbstractSlider<Float> slider) { public Text formatUpperLimit(AbstractSlider<Float> slider) {
return new TranslatableText("menu.cavedust.upperlimit", (int)Math.floor(slider.getValue())); return Text.translatable("menu.cavedust.upperlimit", (int)Math.floor(slider.getValue()));
} }
public Text formatLowerLimit(AbstractSlider<Float> slider) { public Text formatLowerLimit(AbstractSlider<Float> slider) {
return new TranslatableText("menu.cavedust.lowerlimit", (int)Math.floor(slider.getValue())); return Text.translatable("menu.cavedust.lowerlimit", (int)Math.floor(slider.getValue()));
} }
public Text formatParticleMultiplier(AbstractSlider<Float> slider) { public Text formatParticleMultiplier(AbstractSlider<Float> slider) {
return new TranslatableText("menu.cavedust.particlemultiplier", (int)Math.floor(slider.getValue())); return Text.translatable("menu.cavedust.particlemultiplier", (int)Math.floor(slider.getValue()));
}
public Text formatParticleMultiplierMultiplier(AbstractSlider<Float> slider) {
return Text.translatable("menu.cavedust.particlemultipliermultiplier", (int)Math.floor(slider.getValue()));
} }
public Text formatVelocityRandomness(AbstractSlider<Float> slider) { public Text formatVelocityRandomness(AbstractSlider<Float> slider) {
return new TranslatableText("menu.cavedust.velocityrandomness", (int)Math.floor(slider.getValue())); return Text.translatable("menu.cavedust.velocityrandomness", (int) Math.floor(slider.getValue()));
} }
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 227 KiB

After

Width:  |  Height:  |  Size: 116 KiB

View File

@@ -4,26 +4,22 @@
"menu.cavedust.global.true": "Cave Dust: Enabled", "menu.cavedust.global.true": "Cave Dust: Enabled",
"menu.cavedust.global.tooltip.false": "Enable cave dust particles?", "menu.cavedust.global.tooltip.false": "Enable cave dust particles?",
"menu.cavedust.global.tooltip.true": "Disable cave dust particles?", "menu.cavedust.global.tooltip.true": "Disable cave dust particles?",
"menu.cavedust.minX": "Minimum X: %s", "menu.cavedust.X": "X bounds: %s",
"menu.cavedust.minY": "Minimum Y: %s", "menu.cavedust.Y": "Y bounds: %s",
"menu.cavedust.minZ": "Minimum Z: %s", "menu.cavedust.Z": "Z bounds: %s",
"menu.cavedust.maxX": "Maximum X: %s", "menu.cavedust.X.tooltip": "X axis bounds for particle spawning.",
"menu.cavedust.maxY": "Maximum Y: %s", "menu.cavedust.Y.tooltip": "Y axis bounds for particle spawning.",
"menu.cavedust.maxZ": "Maximum Z: %s", "menu.cavedust.Z.tooltip": "Z axis bounds for particle spawning.",
"menu.cavedust.minX.tooltip": "Minimum X: %s", "menu.cavedust.upperlimit": "Upper limit height: %s",
"menu.cavedust.minY.tooltip": "Minimum Y: %s", "menu.cavedust.lowerlimit": "Lower limit height: %s",
"menu.cavedust.minZ.tooltip": "Minimum Z: %s",
"menu.cavedust.maxX.tooltip": "Maximum X: %s",
"menu.cavedust.maxY.tooltip": "Maximum Y: %s",
"menu.cavedust.maxZ.tooltip": "Maximum Z: %s",
"menu.cavedust.upperlimit": "Upper limit: %s",
"menu.cavedust.lowerlimit": "Lower limit: %s",
"menu.cavedust.upperlimit.tooltip": "The height where particles will fade out and stop spawning (uses player y).", "menu.cavedust.upperlimit.tooltip": "The height where particles will fade out and stop spawning (uses player y).",
"menu.cavedust.lowerlimit.tooltip": "The height where particles spawn the most (uses player y).", "menu.cavedust.lowerlimit.tooltip": "The height where particles spawn the most (uses player y).",
"menu.cavedust.reset": "Reset settings", "menu.cavedust.reset": "Reset settings",
"menu.cavedust.reset.tooltip": "Are you sure you want to reset all settings?", "menu.cavedust.reset.tooltip": "Are you sure you want to reset all settings?",
"menu.cavedust.particlemultiplier": "Particle multiplier: %s", "menu.cavedust.particlemultiplier": "Particle amount: %s",
"menu.cavedust.particlemultiplier.tooltip": "Multiplies the amount of particles at any given depth.", "menu.cavedust.particlemultiplier.tooltip": "Amount of particles to spawn at any given depth.",
"menu.cavedust.particlemultipliermultiplier": "Particle multiplier: %s",
"menu.cavedust.particlemultipliermultiplier.tooltip": "Multiplies particle amount.",
"menu.cavedust.velocityrandomness": "Velocity randomness: %s", "menu.cavedust.velocityrandomness": "Velocity randomness: %s",
"menu.cavedust.velocityrandomness.tooltip": "The randomness of the velocity of the particles.", "menu.cavedust.velocityrandomness.tooltip": "The randomness of the velocity of the particles.",
"menu.cavedust.enhanceddetection.true": "Enhanced detection: Enabled", "menu.cavedust.enhanceddetection.true": "Enhanced detection: Enabled",
@@ -32,6 +28,8 @@
"menu.cavedust.superflatstatus.true": "Superflat particles: Enabled", "menu.cavedust.superflatstatus.true": "Superflat particles: Enabled",
"menu.cavedust.superflatstatus.false": "Superflat particles: Disabled", "menu.cavedust.superflatstatus.false": "Superflat particles: Disabled",
"menu.cavedust.superflatstatus.tooltip": "Should particles spawn on superflat worlds?", "menu.cavedust.superflatstatus.tooltip": "Should particles spawn on superflat worlds?",
"menu.cavedust.particle": "Particle: ",
"menu.cavedust.particle.tooltip": "Particle to spawn. Click to cycle.",
"key.cavedust.reload": "Reload Config", "key.cavedust.reload": "Reload Config",
"key.cavedust.toggle": "Toggle Particles", "key.cavedust.toggle": "Toggle Particles",

View File

@@ -4,7 +4,8 @@
"package": "net.lizistired.cavedust.mixin", "package": "net.lizistired.cavedust.mixin",
"compatibilityLevel": "JAVA_16", "compatibilityLevel": "JAVA_16",
"mixins": [ "mixins": [
"ClientWorldAccessor" "ClientWorldAccessor",
"MixinDebugScreenOverlay"
], ],
"client": [ "client": [
], ],

View File

@@ -26,9 +26,9 @@
"dust.mixins.json" "dust.mixins.json"
], ],
"depends": { "depends": {
"fabricloader": ">=0.12.11", "fabricloader": ">=0.14.5",
"fabric": "*", "fabric": "*",
"minecraft": "<=1.18.1", "minecraft": ">=1.19-beta.5",
"java": ">=17" "java": ">=17"
}, },
"suggests": { "suggests": {