From 06959e79fb395a313cf62ee4969703bc711d4dc5 Mon Sep 17 00:00:00 2001 From: Rain Graham Date: Wed, 1 Jan 2025 17:21:14 +0000 Subject: [PATCH] backport from 1.21.3 --- gradle.properties | 2 +- .../net/lizistired/cavedust/CaveDust.java | 4 +- .../lizistired/cavedust/CaveDustConfig.java | 94 +++++++++++-------- .../cavedust/CaveDustParticleFactory.java | 7 +- .../lizistired/cavedust/CaveDustServer.java | 1 + .../cavedust/ModMenuConfigScreen.java | 12 ++- .../utils/TranslatableTextHelper.java | 8 ++ .../resources/assets/cavedust/lang/en_us.json | 4 + .../resources/assets/cavedust/lang/zh_cn.json | 41 ++++++++ .../resources/assets/modid/lang/fr_fr.json | 44 +++++++++ .../resources/assets/modid/lang/ru_ru.json | 44 +++++++++ 11 files changed, 213 insertions(+), 48 deletions(-) create mode 100644 src/main/resources/assets/cavedust/lang/zh_cn.json create mode 100644 src/main/resources/assets/modid/lang/fr_fr.json create mode 100644 src/main/resources/assets/modid/lang/ru_ru.json diff --git a/gradle.properties b/gradle.properties index b76fe6b..d1b929e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ org.gradle.jvmargs=-Xmx1G loader_version=0.15.11 # Mod Properties - mod_version=3.0.0 + mod_version=3.0.1 maven_group=com.lizistired archives_base_name=cave_dust diff --git a/src/main/java/net/lizistired/cavedust/CaveDust.java b/src/main/java/net/lizistired/cavedust/CaveDust.java index 89a788b..b409ecf 100644 --- a/src/main/java/net/lizistired/cavedust/CaveDust.java +++ b/src/main/java/net/lizistired/cavedust/CaveDust.java @@ -4,9 +4,11 @@ package net.lizistired.cavedust; import net.fabricmc.fabric.api.client.particle.v1.ParticleFactoryRegistry; import net.minecraft.block.Blocks; import net.minecraft.client.MinecraftClient; +import net.minecraft.particle.ParticleEffect; import net.minecraft.particle.ParticleTypes; import net.minecraft.registry.Registries; import net.minecraft.text.Text; +import net.minecraft.util.Identifier; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; //other imports @@ -40,7 +42,7 @@ public class CaveDust implements ClientModInitializer { public net.lizistired.cavedust.CaveDustConfig getConfig() { return config; } - public static int WHITE_ASH_ID = Registries.PARTICLE_TYPE.getRawId(CaveDustServer.CAVE_DUST); + public static ParticleEffect WHITE_ASH_ID = (ParticleEffect) Registries.PARTICLE_TYPE.get(Identifier.of("cavedust", "cave_dust")); public static int PARTICLE_AMOUNT = 0; diff --git a/src/main/java/net/lizistired/cavedust/CaveDustConfig.java b/src/main/java/net/lizistired/cavedust/CaveDustConfig.java index 09f8388..ecb487a 100644 --- a/src/main/java/net/lizistired/cavedust/CaveDustConfig.java +++ b/src/main/java/net/lizistired/cavedust/CaveDustConfig.java @@ -1,23 +1,30 @@ package net.lizistired.cavedust; +import com.google.common.collect.ImmutableList; import net.lizistired.cavedust.utils.JsonFile; import net.minecraft.client.MinecraftClient; +import net.minecraft.client.render.RenderLayer; import net.minecraft.particle.ParticleEffect; +import net.minecraft.particle.ParticleType; import net.minecraft.particle.ParticleTypes; import net.minecraft.registry.Registries; +import net.minecraft.registry.Registry; +import net.minecraft.registry.RegistryKey; +import net.minecraft.registry.RegistryKeys; import net.minecraft.text.Text; import net.minecraft.util.Identifier; import static net.lizistired.cavedust.CaveDust.*; import static net.lizistired.cavedust.utils.MathHelper.*; import java.nio.file.Path; +import java.util.*; public class CaveDustConfig extends JsonFile { private transient final net.lizistired.cavedust.CaveDust CaveDust; - private int dimensionWidth = 10; - private int dimensionHeight = 10; + private int width = 10; + private int height = 10; private int velocityRandomness = 0; private boolean caveDustEnabled = true; @@ -27,9 +34,13 @@ public class CaveDustConfig extends JsonFile { private float lowerLimit = -64; private int particleMultiplier = 1; + int listNumber = 0; + private int particleMultiplierMultiplier = 10; - private int particleID = WHITE_ASH_ID; + List list = List.of(Registries.PARTICLE_TYPE.getIds().toArray(new Identifier[0])); + + Identifier newId = Identifier.of("cavedust", "cave_dust"); public CaveDustConfig(Path file, net.lizistired.cavedust.CaveDust caveDust) { super(file); @@ -37,28 +48,27 @@ public class CaveDustConfig extends JsonFile { } public float setDimensionWidth(float size){ - if (this.dimensionWidth != size) { - this.dimensionWidth = (int)size; + if (this.width != size) { + this.width = (int)size; save(); } return getDimensionWidth(); } public float setDimensionHeight(float size){ - if (this.dimensionHeight != size) { - this.dimensionHeight = (int)size; + if (this.height != size) { + this.height = (int)size; save(); } return getDimensionHeight(); } - public float getDimensionWidth(){ - return dimensionWidth; + return width; } public float getDimensionHeight(){ - return dimensionHeight; + return height; } public float setUpperLimit(float upperLimit){ @@ -123,20 +133,31 @@ public class CaveDustConfig extends JsonFile { return caveDustEnabled; } - public ParticleEffect setParticle(String particleType){ + //todo + //public Identifier setParticle(String particleType){ //particleName = particleType; - save(); - return getParticle(); - } + //save(); + //return getParticle().get().getKey().get().getValue(); + //} + + //public ParticleEffect getParticle(){ + // try { + // return Registries.PARTICLE_TYPE.getOptional(Identifier.of(Registries.PARTICLE_TYPE.getOptional(getParticleID()).get().getKey().get().getValue().toString().toLowerCase())); + // } catch (ClassCastException e) { + // MinecraftClient.getInstance().player.sendMessage(Text.translatable("debug.cavedust.particleerror"), true); + // LOGGER.error("Cannot spawn particle, check config."); + // iterateParticle(); + // save(); + // return getParticle(); + // } + //} public ParticleEffect getParticle(){ - try { - return (ParticleEffect) Registries.PARTICLE_TYPE.get(new Identifier(Registries.PARTICLE_TYPE.getEntry(getParticleID()).get().getKey().get().getValue().toString().toLowerCase())); - } catch (ClassCastException e) { - MinecraftClient.getInstance().player.sendMessage(Text.translatable("debug.cavedust.particleerror"), true); - LOGGER.error("Cannot spawn particle, check config."); + try{ + return (ParticleEffect) Registries.PARTICLE_TYPE.get(newId); + } + catch (ClassCastException e){ iterateParticle(); - save(); return getParticle(); } } @@ -176,43 +197,36 @@ public class CaveDustConfig extends JsonFile { return getSuperFlatStatus(); } - public void iterateParticle(){ - if(getParticleID() > Registries.PARTICLE_TYPE.size() - 2) { - particleID = 1; - save(); - } else { - particleID = getParticleID() + 1; - save(); + public void iterateParticle() { + try { + listNumber = listNumber + 1; + newId = list.get(listNumber); + } catch (IndexOutOfBoundsException e){ + newId = list.get(0); + listNumber = 0; } - } - - public void setParticleID(int particleID){ - this.particleID = particleID; save(); } - public int getParticleID(){ - if ((!Registries.PARTICLE_TYPE.getEntry(particleID).isPresent())) { - setParticleID(WHITE_ASH_ID); - } - return particleID; + public ParticleEffect getParticleID(){ + return getParticle(); } public void resetConfig(){ - dimensionWidth = 10; - dimensionHeight = 10; + width = 10; + height = 10; upperLimit = 64; lowerLimit = -64; particleMultiplier = 1; particleMultiplierMultiplier = 10; - velocityRandomness = 0; + newId = Identifier.of("cavedust", "cave_dust"); + seaLevelCheck = true; caveDustEnabled = true; - particleID = WHITE_ASH_ID; save(); } } diff --git a/src/main/java/net/lizistired/cavedust/CaveDustParticleFactory.java b/src/main/java/net/lizistired/cavedust/CaveDustParticleFactory.java index abd5442..ed99021 100644 --- a/src/main/java/net/lizistired/cavedust/CaveDustParticleFactory.java +++ b/src/main/java/net/lizistired/cavedust/CaveDustParticleFactory.java @@ -2,9 +2,12 @@ package net.lizistired.cavedust; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; +import net.lizistired.cavedust.utils.MathHelper; import net.minecraft.client.particle.*; import net.minecraft.client.world.ClientWorld; import net.minecraft.particle.DefaultParticleType; +import net.minecraft.particle.ParticleEffect; +import org.jetbrains.annotations.Nullable; public class CaveDustParticleFactory extends SpriteBillboardParticle { private final SpriteProvider spriteProvider; @@ -12,7 +15,6 @@ public class CaveDustParticleFactory extends SpriteBillboardParticle { super(clientWorld, x, y, z); this.spriteProvider = spriteProvider; //Sets the sprite provider from above to the sprite provider in the constructor method this.maxAge = 200; //20 ticks = 1 second - this.scale = 0.1f; this.velocityX = velocityX; //The velX from the constructor parameters this.velocityY = -0.007f; //Allows the particle to slowly fall this.velocityZ = velocityZ; @@ -47,7 +49,8 @@ public class CaveDustParticleFactory extends SpriteBillboardParticle { } - public Particle createParticle(DefaultParticleType type, ClientWorld world, double x, double y, double z, double velocityX, double velocityY, double velocityZ) { + @Override + public @Nullable Particle createParticle(DefaultParticleType parameters, ClientWorld world, double x, double y, double z, double velocityX, double velocityY, double velocityZ) { return new CaveDustParticleFactory(world, x, y, z, velocityX, velocityY, velocityZ, this.spriteProvider); } } diff --git a/src/main/java/net/lizistired/cavedust/CaveDustServer.java b/src/main/java/net/lizistired/cavedust/CaveDustServer.java index 49cf0bd..ea67842 100644 --- a/src/main/java/net/lizistired/cavedust/CaveDustServer.java +++ b/src/main/java/net/lizistired/cavedust/CaveDustServer.java @@ -3,6 +3,7 @@ package net.lizistired.cavedust; import net.fabricmc.api.ModInitializer; import net.fabricmc.fabric.api.particle.v1.FabricParticleTypes; import net.minecraft.particle.DefaultParticleType; +import net.minecraft.particle.ParticleEffect; import net.minecraft.registry.Registries; import net.minecraft.registry.Registry; import net.minecraft.util.Identifier; diff --git a/src/main/java/net/lizistired/cavedust/ModMenuConfigScreen.java b/src/main/java/net/lizistired/cavedust/ModMenuConfigScreen.java index 35f45ae..8a76b34 100644 --- a/src/main/java/net/lizistired/cavedust/ModMenuConfigScreen.java +++ b/src/main/java/net/lizistired/cavedust/ModMenuConfigScreen.java @@ -5,8 +5,10 @@ import com.minelittlepony.common.client.gui.element.*; import net.lizistired.cavedust.utils.TranslatableTextHelper; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.screen.Screen; +import net.minecraft.particle.ParticleType; import net.minecraft.registry.Registries; import net.minecraft.text.Text; +import net.minecraft.util.Identifier; import org.jetbrains.annotations.Nullable; import java.util.NoSuchElementException; @@ -107,13 +109,15 @@ public class ModMenuConfigScreen extends GameGui { renderBackground(context); super.render(context, mouseX, mouseY, partialTicks); } - private String getNameOfParticle(){ + + private Identifier getNameOfParticle(){ CaveDustConfig config = CaveDust.getInstance().getConfig(); config.load(); try { - return Registries.PARTICLE_TYPE.getEntry(config.getParticleID()).get().getKey().get().getValue().toString(); - } catch (NoSuchElementException e){ - return "null"; + return Registries.PARTICLE_TYPE.getId((ParticleType) config.getParticleID()); + } catch (NoSuchElementException e) { + CaveDust.LOGGER.error(String.valueOf(e)); + return null; } } } diff --git a/src/main/java/net/lizistired/cavedust/utils/TranslatableTextHelper.java b/src/main/java/net/lizistired/cavedust/utils/TranslatableTextHelper.java index 26d5e15..2daf453 100644 --- a/src/main/java/net/lizistired/cavedust/utils/TranslatableTextHelper.java +++ b/src/main/java/net/lizistired/cavedust/utils/TranslatableTextHelper.java @@ -28,4 +28,12 @@ public class TranslatableTextHelper { public Text formatVelocityRandomness(AbstractSlider slider) { return Text.translatable("menu.cavedust.velocityrandomness", (int) Math.floor(slider.getValue())); } + + public Text formatScaleLower(AbstractSlider slider) { + return Text.translatable("menu.cavedust.scalelower", (int) Math.floor(slider.getValue())); + } + + public Text formatScaleHigher(AbstractSlider slider) { + return Text.translatable("menu.cavedust.scalehigher", (int) Math.floor(slider.getValue())); + } } diff --git a/src/main/resources/assets/cavedust/lang/en_us.json b/src/main/resources/assets/cavedust/lang/en_us.json index 5bb13ce..69f1cea 100644 --- a/src/main/resources/assets/cavedust/lang/en_us.json +++ b/src/main/resources/assets/cavedust/lang/en_us.json @@ -28,6 +28,10 @@ "menu.cavedust.superflatstatus.tooltip": "Should particles spawn on superflat worlds?", "menu.cavedust.particle": "Particle: ", "menu.cavedust.particle.tooltip": "Particle to spawn. Click to cycle.", + "menu.cavedust.scalelower": "Minimum scale: %s", + "menu.cavedust.scalelower.tooltip": "Minimum particle size to spawn.", + "menu.cavedust.scalehigher": "Maximum scale: %s", + "menu.cavedust.scalehigher.tooltip": "Maximum particle size to spawn.", "key.cavedust.reload": "Reload Config", "key.cavedust.toggle": "Toggle Particles", diff --git a/src/main/resources/assets/cavedust/lang/zh_cn.json b/src/main/resources/assets/cavedust/lang/zh_cn.json new file mode 100644 index 0000000..911b254 --- /dev/null +++ b/src/main/resources/assets/cavedust/lang/zh_cn.json @@ -0,0 +1,41 @@ +{ + "menu.cavedust.title": "洞穴尘埃", + "menu.cavedust.global.false": "洞穴尘埃: 功能启用", + "menu.cavedust.global.true": "洞穴尘埃: 功能禁用", + "menu.cavedust.global.tooltip.false": "启用洞穴尘埃粒子效果?", + "menu.cavedust.global.tooltip.true": "禁用洞穴尘埃粒子效果?", + "menu.cavedust.width": "边界宽度: %s", + "menu.cavedust.height": "边界高度: %s", + "menu.cavedust.width.tooltip": "生成粒子效果的最大宽度.", + "menu.cavedust.height.tooltip": "生成粒子效果的最大高度.", + "menu.cavedust.upperlimit": "最大高度限制: %s", + "menu.cavedust.lowerlimit": "最低高度限制: %s", + "menu.cavedust.upperlimit.tooltip": "粒子效果消失的高度 (读取玩家所在的 y 轴).", + "menu.cavedust.lowerlimit.tooltip": "粒子效果出现最多的高度 (读取玩家所在的 y 轴).", + "menu.cavedust.reset": "重置所有设置", + "menu.cavedust.reset.tooltip": "你确定要这么做吗?", + "menu.cavedust.particlemultiplier": "粒子数量: %s", + "menu.cavedust.particlemultiplier.tooltip": "指定深度生成的粒子效果数量.", + "menu.cavedust.particlemultipliermultiplier": "粒子效果倍率: %s", + "menu.cavedust.particlemultipliermultiplier.tooltip": "粒子效果的生成倍率.", + "menu.cavedust.velocityrandomness": "速度随机性: %s", + "menu.cavedust.velocityrandomness.tooltip": "粒子效果的速度随机程度.", + "menu.cavedust.enhanceddetection.true": "强化检测: 功能启用", + "menu.cavedust.enhanceddetection.false": "强化检测: 功能禁用", + "menu.cavedust.enhanceddetection.tooltip": "强化检测会使用粒子效果而非玩家的位置进行更精确的检测\n 对性能略有影响.", + "menu.cavedust.superflatstatus.true": "超平坦粒子: 功能启用", + "menu.cavedust.superflatstatus.false": "超平坦粒子: 功能禁用", + "menu.cavedust.superflatstatus.tooltip": "是否允许超平坦世界生成洞穴尘埃?", + "menu.cavedust.particle": "粒子效果: ", + "menu.cavedust.particle.tooltip": "生成的粒子效果名称, 点击切换.", + + "key.cavedust.reload": "重载配置", + "key.cavedust.toggle": "切换粒子", + "category.cavedust.spook": "洞穴尘埃", + + "debug.cavedust.toggle.true": "(洞穴尘埃) 粒子效果已启用", + "debug.cavedust.toggle.false": "(洞穴尘埃) 粒子效果已禁用", + "debug.cavedust.reload": "(洞穴尘埃) 配置已重载", + "debug.cavedust.particleerror": "(洞穴尘埃) 设置当前粒子效果时出现问题, 已自动切换至下一个粒子效果!" + +} diff --git a/src/main/resources/assets/modid/lang/fr_fr.json b/src/main/resources/assets/modid/lang/fr_fr.json new file mode 100644 index 0000000..d21fc46 --- /dev/null +++ b/src/main/resources/assets/modid/lang/fr_fr.json @@ -0,0 +1,44 @@ +{ + "menu.cavedust.title": "Cave Dust", + "menu.cavedust.global.false": "Cave Dust: Désactivée", + "menu.cavedust.global.true": "Cave Dust: Activée", + "menu.cavedust.global.tooltip.false": "Activer les particules de poussière de grotte ?", + "menu.cavedust.global.tooltip.true": "Désactiver les particules de poussière de grotte ?", + "menu.cavedust.minX": "Minimum X: %s", + "menu.cavedust.minY": "Minimum Y: %s", + "menu.cavedust.minZ": "Minimum Z: %s", + "menu.cavedust.maxX": "Maximum X: %s", + "menu.cavedust.maxY": "Maximum Y: %s", + "menu.cavedust.maxZ": "Maximum Z: %s", + "menu.cavedust.minX.tooltip": "Minimum X: %s", + "menu.cavedust.minY.tooltip": "Minimum Y: %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": "Limite supérieure : %s", + "menu.cavedust.lowerlimit": "Limite inférieure : %s", + "menu.cavedust.upperlimit.tooltip": "La hauteur à laquelle les particules s'estompent et cessent de spawner (utilise l'axe Y du joueur).", + "menu.cavedust.lowerlimit.tooltip": "La hauteur où les particules apparaissent le plus (utilise l'axe Y du joueur).", + "menu.cavedust.reset": "Réinitialiser les paramètres", + "menu.cavedust.reset.tooltip": "Êtes-vous sûr de vouloir réinitialiser tous les paramètres ?", + "menu.cavedust.particlemultiplier": "Multiplicateur de particules : %s", + "menu.cavedust.particlemultiplier.tooltip": "Multiplie la quantité de particules à une profondeur donnée.", + "menu.cavedust.velocityrandomness": "Aléatoire de la vélocité : %s", + "menu.cavedust.velocityrandomness.tooltip": "Le niveau d'aléatoire de la vélocité des particules.", + "menu.cavedust.enhanceddetection.true": "Détection améliorée : Activée", + "menu.cavedust.enhanceddetection.false": "Détection améliorée : Désactivée", + "menu.cavedust.enhanceddetection.tooltip": "La détection améliorée permet des vérifications plus précises en utilisant la position des particules\n plutôt que celle du joueur, mais impacte les performances.", + "menu.cavedust.superflatstatus.true": "Particules sur monde Superflat : Activées", + "menu.cavedust.superflatstatus.false": "Particules sur monde Superflat : Désactivées", + "menu.cavedust.superflatstatus.tooltip": "Les particules doivent-elles apparaître sur les mondes Superflat ?", + + "key.cavedust.reload": "Recharger la configuration", + "key.cavedust.toggle": "Activer/Désactiver les particules", + "category.cavedust.spook": "Cave Dust", + + "debug.cavedust.toggle.true": "(Cave Dust) Particules activées", + "debug.cavedust.toggle.false": "(Cave Dust) Particules désactivées", + "debug.cavedust.reload": "(Cave Dust) Configuration rechargée" + +} diff --git a/src/main/resources/assets/modid/lang/ru_ru.json b/src/main/resources/assets/modid/lang/ru_ru.json new file mode 100644 index 0000000..f03b17a --- /dev/null +++ b/src/main/resources/assets/modid/lang/ru_ru.json @@ -0,0 +1,44 @@ +{ + "menu.cavedust.title": "Пещерная пыль", + "menu.cavedust.global.false": "Пещерная пыль: отключена", + "menu.cavedust.global.true": "Пещерная пыль: включена", + "menu.cavedust.global.tooltip.false": "Включить частицы пещерной пыли?", + "menu.cavedust.global.tooltip.true": "Отключить частицы пещерной пыли?", + "menu.cavedust.minX": "Минимум по X: %s", + "menu.cavedust.minY": "Минимум по Y: %s", + "menu.cavedust.minZ": "Минимум по Z: %s", + "menu.cavedust.maxX": "Максимум по X: %s", + "menu.cavedust.maxY": "Максимум по Y: %s", + "menu.cavedust.maxZ": "Максимум по Z: %s", + "menu.cavedust.minX.tooltip": "Минимум по X: %s", + "menu.cavedust.minY.tooltip": "Минимум по Y: %s", + "menu.cavedust.minZ.tooltip": "Минимум по Z: %s", + "menu.cavedust.maxX.tooltip": "Максимум по X: %s", + "menu.cavedust.maxY.tooltip": "Максимум по Y: %s", + "menu.cavedust.maxZ.tooltip": "Максимум по Z: %s", + "menu.cavedust.upperlimit": "Верхний предел: %s", + "menu.cavedust.lowerlimit": "Нижний предел: %s", + "menu.cavedust.upperlimit.tooltip": "Высота, на которой частицы будут исчезать и перестанут появляться (испольует координату Y игрока).", + "menu.cavedust.lowerlimit.tooltip": "The height where particles spawn the most (испольует координату Y игрока).", + "menu.cavedust.reset": "Сброс настроек", + "menu.cavedust.reset.tooltip": "Вы уверены, что хотите сбросить все настройки?", + "menu.cavedust.particlemultiplier": "Множитель частиц: %s", + "menu.cavedust.particlemultiplier.tooltip": "Увеличивает количество частиц на любой заданной глубине.", + "menu.cavedust.velocityrandomness": "Случайность скорости: %s", + "menu.cavedust.velocityrandomness.tooltip": "Случайность скорости движения частиц.", + "menu.cavedust.enhanceddetection.true": "Улучшенное обнаружение: включено", + "menu.cavedust.enhanceddetection.false": "Улучшенное обнаружение: отключено", + "menu.cavedust.enhanceddetection.tooltip": "Улучшенное обнаружение позволяет проводить более точные проверки, используя положение частиц\nвместо положения игрока, что оказывает некоторое влияние на производительность.", + "menu.cavedust.superflatstatus.true": "Частицы в суперплоскости: включены", + "menu.cavedust.superflatstatus.false": "Частицы в суперплоскости: отключены", + "menu.cavedust.superflatstatus.tooltip": "Должны ли частицы появляться в суперплоских мирах?", + + "key.cavedust.reload": "Перезагрузить конфигурацию", + "key.cavedust.toggle": "Переключить частицы", + "category.cavedust.spook": "Пещерная пыль", + + "debug.cavedust.toggle.true": "[Пещерная пыль] Включенные частицы", + "debug.cavedust.toggle.false": "[Пещерная пыль] Отключенные частицы", + "debug.cavedust.reload": "[Пещерная пыль] Конфигурация перезагружена" + +} \ No newline at end of file