From 49d4f8aa312b4bb01e9f662a9caffdd0460bc227 Mon Sep 17 00:00:00 2001 From: octarine-noise Date: Fri, 30 Apr 2021 12:28:34 +0200 Subject: [PATCH 1/8] remove some Fabric aliases --- .../client/integration/ForestryIntegration.kt | 6 ++--- .../client/integration/RubberIntegration.kt | 4 +--- .../client/render/EntityRisingSoulFX.kt | 6 +---- .../client/render/RenderCactus.kt | 9 ++++---- .../client/render/RenderGrass.kt | 12 +++++----- .../client/render/RenderLeaves.kt | 4 ++-- .../client/render/RenderLilypad.kt | 9 +++----- .../betterfoliage/client/render/RenderLog.kt | 4 ++-- .../client/render/RenderMycelium.kt | 7 ++---- .../client/render/RenderNetherrack.kt | 18 +++++++-------- .../client/render/RenderReeds.kt | 6 ++--- .../betterfoliage/client/resource/Aliases.kt | 10 --------- .../client/texture/GeneratedGrass.kt | 6 ++--- .../client/texture/GrassRegistry.kt | 9 +++++--- .../client/texture/LeafParticleRegistry.kt | 21 +++++++++--------- .../client/texture/LeafRegistry.kt | 7 +++--- .../betterfoliage/client/texture/Utils.kt | 5 ++--- .../kotlin/mods/octarinecore/CommonRefs.kt | 2 ++ .../resource/AsyncSpriteProviderManager.kt | 18 +++++++-------- .../resource/CenteringTextureGenerator.kt | 4 ++-- .../client/resource/ModelDiscovery.kt | 6 ++--- .../client/resource/ResourceGeneration.kt | 17 +++++++------- .../client/resource/ResourceHandler.kt | 22 +++++++++---------- 23 files changed, 95 insertions(+), 117 deletions(-) delete mode 100644 src/main/kotlin/mods/betterfoliage/client/resource/Aliases.kt diff --git a/src/main/kotlin/mods/betterfoliage/client/integration/ForestryIntegration.kt b/src/main/kotlin/mods/betterfoliage/client/integration/ForestryIntegration.kt index 76c73cf..9cc6b71 100644 --- a/src/main/kotlin/mods/betterfoliage/client/integration/ForestryIntegration.kt +++ b/src/main/kotlin/mods/betterfoliage/client/integration/ForestryIntegration.kt @@ -5,7 +5,6 @@ import mods.betterfoliage.client.config.BlockConfig import mods.betterfoliage.client.render.AsyncLogDiscovery import mods.betterfoliage.client.render.column.ColumnTextureInfo import mods.betterfoliage.client.render.column.SimpleColumnInfo -import mods.betterfoliage.client.resource.Identifier import mods.betterfoliage.client.texture.LeafInfo import mods.betterfoliage.client.texture.defaultRegisterLeaf import mods.octarinecore.HasLogger @@ -19,6 +18,7 @@ import net.minecraft.block.BlockState import net.minecraft.client.Minecraft import net.minecraft.client.renderer.model.ModelBakery import net.minecraft.resources.IResourceManager +import net.minecraft.util.ResourceLocation import net.minecraft.util.math.BlockPos import net.minecraft.world.IBlockReader import net.minecraftforge.fml.ModList @@ -61,7 +61,7 @@ object ForestryIntegration { object ForestryLeafDiscovery : HasLogger, AsyncSpriteProvider, ModelRenderRegistry { override val logger = BetterFoliage.logDetail - var idToValue = emptyMap() + var idToValue = emptyMap() override fun get(state: BlockState, world: IBlockReader, pos: BlockPos): LeafInfo? { // check variant property (used in decorative leaves) @@ -82,7 +82,7 @@ object ForestryLeafDiscovery : HasLogger, AsyncSpriteProvider, Mode } override fun setup(manager: IResourceManager, bakeryF: CompletableFuture, atlasFuture: AtlasFuture): StitchPhases { - val futures = mutableMapOf>() + val futures = mutableMapOf>() return StitchPhases( discovery = bakeryF.thenRunAsync { diff --git a/src/main/kotlin/mods/betterfoliage/client/integration/RubberIntegration.kt b/src/main/kotlin/mods/betterfoliage/client/integration/RubberIntegration.kt index e2ea329..b15bdbb 100644 --- a/src/main/kotlin/mods/betterfoliage/client/integration/RubberIntegration.kt +++ b/src/main/kotlin/mods/betterfoliage/client/integration/RubberIntegration.kt @@ -1,10 +1,9 @@ package mods.betterfoliage.client.integration import mods.betterfoliage.BetterFoliage -import mods.betterfoliage.client.render.LogRegistry import mods.betterfoliage.client.render.column.ColumnTextureInfo import mods.betterfoliage.client.render.column.SimpleColumnInfo -import mods.betterfoliage.client.resource.Sprite +import mods.octarinecore.Sprite import mods.octarinecore.client.render.CombinedContext import mods.octarinecore.client.render.Quad import mods.octarinecore.client.render.lighting.QuadIconResolver @@ -17,7 +16,6 @@ import net.minecraft.util.Direction import net.minecraft.util.Direction.* import net.minecraft.util.ResourceLocation import net.minecraftforge.fml.ModList -import org.apache.logging.log4j.Level import java.util.concurrent.CompletableFuture diff --git a/src/main/kotlin/mods/betterfoliage/client/render/EntityRisingSoulFX.kt b/src/main/kotlin/mods/betterfoliage/client/render/EntityRisingSoulFX.kt index c20bb42..a4feb28 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/EntityRisingSoulFX.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/EntityRisingSoulFX.kt @@ -1,10 +1,7 @@ package mods.betterfoliage.client.render -import mods.betterfoliage.BetterFoliage import mods.betterfoliage.BetterFoliageMod -import mods.betterfoliage.client.Client import mods.betterfoliage.client.config.Config -import mods.betterfoliage.client.resource.Identifier import mods.octarinecore.client.render.AbstractEntityFX import mods.octarinecore.client.resource.Atlas import mods.octarinecore.client.resource.ResourceHandler @@ -15,7 +12,6 @@ import net.minecraft.util.ResourceLocation import net.minecraft.util.math.BlockPos import net.minecraft.util.math.MathHelper import net.minecraft.world.World -import org.apache.logging.log4j.Level.DEBUG import java.util.* class EntityRisingSoulFX(world: World, pos: BlockPos) : @@ -69,5 +65,5 @@ AbstractEntityFX(world, pos.x.toDouble() + 0.5, pos.y.toDouble() + 1.0, pos.z.to object RisingSoulTextures : ResourceHandler(BetterFoliageMod.MOD_ID, BetterFoliageMod.bus, targetAtlas = Atlas.PARTICLES) { val headIcons = spriteSet { idx -> ResourceLocation(BetterFoliageMod.MOD_ID, "rising_soul_$idx") } - val trackIcon by sprite(Identifier(BetterFoliageMod.MOD_ID, "soul_track")) + val trackIcon by sprite(ResourceLocation(BetterFoliageMod.MOD_ID, "soul_track")) } \ No newline at end of file diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderCactus.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderCactus.kt index c9978e4..32f617f 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderCactus.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderCactus.kt @@ -5,7 +5,6 @@ import mods.betterfoliage.BetterFoliageMod import mods.betterfoliage.client.config.Config import mods.betterfoliage.client.render.column.ColumnTextureInfo import mods.betterfoliage.client.render.column.SimpleColumnInfo -import mods.betterfoliage.client.resource.Identifier import mods.octarinecore.client.render.* import mods.octarinecore.client.render.lighting.* import mods.octarinecore.client.resource.* @@ -15,7 +14,7 @@ import mods.octarinecore.common.config.SimpleBlockMatcher import net.minecraft.block.BlockState import net.minecraft.block.CactusBlock import net.minecraft.util.Direction.* -import org.apache.logging.log4j.Level.DEBUG +import net.minecraft.util.ResourceLocation import java.util.concurrent.CompletableFuture object AsyncCactusDiscovery : ConfigurableModelDiscovery() { @@ -23,7 +22,7 @@ object AsyncCactusDiscovery : ConfigurableModelDiscovery() { override val matchClasses = SimpleBlockMatcher(CactusBlock::class.java) override val modelTextures = listOf(ModelTextureList("block/cactus", "top", "bottom", "side")) override fun processModel(state: BlockState, textures: List, atlas: AtlasFuture): CompletableFuture? { - val sprites = textures.map { atlas.sprite(Identifier(it)) } + val sprites = textures.map { atlas.sprite(ResourceLocation(it)) } return atlas.mapAfter { SimpleColumnInfo( Axis.Y, @@ -44,8 +43,8 @@ class RenderCactus : RenderDecorator(BetterFoliageMod.MOD_ID, BetterFoliageMod.b val cactusStemRadius = 0.4375 val cactusArmRotation = listOf(NORTH, SOUTH, EAST, WEST).map { Rotation.rot90[it.ordinal] } - val iconCross by sprite(Identifier(BetterFoliageMod.MOD_ID, "blocks/better_cactus")) - val iconArm = spriteSet { idx -> Identifier(BetterFoliageMod.MOD_ID, "blocks/better_cactus_arm_$idx") } + val iconCross by sprite(ResourceLocation(BetterFoliageMod.MOD_ID, "blocks/better_cactus")) + val iconArm = spriteSet { idx -> ResourceLocation(BetterFoliageMod.MOD_ID, "blocks/better_cactus_arm_$idx") } val modelStem = model { horizontalRectangle(x1 = -cactusStemRadius, x2 = cactusStemRadius, z1 = -cactusStemRadius, z2 = cactusStemRadius, y = 0.5) diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderGrass.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderGrass.kt index 5ca30c1..6e38ef8 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderGrass.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderGrass.kt @@ -2,11 +2,9 @@ package mods.betterfoliage.client.render import mods.betterfoliage.BetterFoliage import mods.betterfoliage.BetterFoliageMod -import mods.betterfoliage.client.Client import mods.betterfoliage.client.config.Config import mods.betterfoliage.client.integration.OptifineCustomColors import mods.betterfoliage.client.integration.ShadersModIntegration -import mods.betterfoliage.client.resource.Identifier import mods.betterfoliage.client.texture.GeneratedGrass import mods.betterfoliage.client.texture.GrassRegistry import mods.octarinecore.client.render.CombinedContext @@ -20,8 +18,10 @@ import mods.octarinecore.common.Double3 import mods.octarinecore.common.allDirections import mods.octarinecore.random import net.minecraft.tags.BlockTags -import net.minecraft.util.Direction.* -import org.apache.logging.log4j.Level.DEBUG +import net.minecraft.util.Direction.Axis +import net.minecraft.util.Direction.DOWN +import net.minecraft.util.Direction.UP +import net.minecraft.util.ResourceLocation class RenderGrass : RenderDecorator(BetterFoliageMod.MOD_ID, BetterFoliageMod.bus) { @@ -38,8 +38,8 @@ class RenderGrass : RenderDecorator(BetterFoliageMod.MOD_ID, BetterFoliageMod.bu val noise = simplexNoise() - val normalIcons = spriteSet { idx -> Identifier(BetterFoliageMod.MOD_ID, "blocks/better_grass_long_$idx") } - val snowedIcons = spriteSet { idx -> Identifier(BetterFoliageMod.MOD_ID, "blocks/better_grass_snowed_$idx") } + val normalIcons = spriteSet { idx -> ResourceLocation(BetterFoliageMod.MOD_ID, "blocks/better_grass_long_$idx") } + val snowedIcons = spriteSet { idx -> ResourceLocation(BetterFoliageMod.MOD_ID, "blocks/better_grass_snowed_$idx") } val normalGenIcon by sprite { GeneratedGrass(sprite = "minecraft:blocks/tall_grass_top", isSnowed = false).register(BetterFoliage.asyncPack) } val snowedGenIcon by sprite { GeneratedGrass(sprite = "minecraft:blocks/tall_grass_top", isSnowed = true).register(BetterFoliage.asyncPack) } diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderLeaves.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderLeaves.kt index 9c710d8..c887f2c 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderLeaves.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderLeaves.kt @@ -4,7 +4,6 @@ import mods.betterfoliage.BetterFoliageMod import mods.betterfoliage.client.config.Config import mods.betterfoliage.client.integration.OptifineCustomColors import mods.betterfoliage.client.integration.ShadersModIntegration -import mods.betterfoliage.client.resource.Identifier import mods.betterfoliage.client.texture.LeafRegistry import mods.octarinecore.PI2 import mods.octarinecore.client.render.CombinedContext @@ -18,6 +17,7 @@ import mods.octarinecore.common.allDirections import mods.octarinecore.common.vec import mods.octarinecore.random import net.minecraft.util.Direction.UP +import net.minecraft.util.ResourceLocation import java.lang.Math.cos import java.lang.Math.sin @@ -30,7 +30,7 @@ class RenderLeaves : RenderDecorator(BetterFoliageMod.MOD_ID, BetterFoliageMod.b .scale(Config.leaves.size) .toCross(UP).addAll() } - val snowedIcon = spriteSet { idx -> Identifier(BetterFoliageMod.MOD_ID, "blocks/better_leaves_snowed_$idx") } + val snowedIcon = spriteSet { idx -> ResourceLocation(BetterFoliageMod.MOD_ID, "blocks/better_leaves_snowed_$idx") } val perturbs = vectorSet(64) { idx -> val angle = PI2 * idx / 64.0 diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderLilypad.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderLilypad.kt index c2e4376..a589c54 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderLilypad.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderLilypad.kt @@ -1,19 +1,16 @@ package mods.betterfoliage.client.render -import mods.betterfoliage.BetterFoliage import mods.betterfoliage.BetterFoliageMod -import mods.betterfoliage.client.Client import mods.betterfoliage.client.config.BlockConfig import mods.betterfoliage.client.config.Config import mods.betterfoliage.client.integration.ShadersModIntegration -import mods.betterfoliage.client.resource.Identifier import mods.octarinecore.client.render.CombinedContext import mods.octarinecore.client.render.RenderDecorator import mods.octarinecore.client.render.lighting.FlatOffsetNoColor import mods.octarinecore.common.Int3 import net.minecraft.util.Direction.DOWN import net.minecraft.util.Direction.UP -import org.apache.logging.log4j.Level.DEBUG +import net.minecraft.util.ResourceLocation class RenderLilypad : RenderDecorator(BetterFoliageMod.MOD_ID, BetterFoliageMod.bus) { @@ -28,8 +25,8 @@ class RenderLilypad : RenderDecorator(BetterFoliageMod.MOD_ID, BetterFoliageMod. .setFlatShader(FlatOffsetNoColor(Int3.zero)) .toCross(UP).addAll() } - val rootIcon = spriteSet { idx -> Identifier(BetterFoliageMod.MOD_ID, "blocks/better_lilypad_roots_$idx") } - val flowerIcon = spriteSet { idx -> Identifier(BetterFoliageMod.MOD_ID, "blocks/better_lilypad_flower_$idx") } + val rootIcon = spriteSet { idx -> ResourceLocation(BetterFoliageMod.MOD_ID, "blocks/better_lilypad_roots_$idx") } + val flowerIcon = spriteSet { idx -> ResourceLocation(BetterFoliageMod.MOD_ID, "blocks/better_lilypad_flower_$idx") } val perturbs = vectorSet(64) { modelIdx -> xzDisk(modelIdx) * Config.lilypad.hOffset } override fun isEligible(ctx: CombinedContext): Boolean = diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderLog.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderLog.kt index 7919d34..b906a6e 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderLog.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderLog.kt @@ -9,7 +9,6 @@ import mods.betterfoliage.client.render.column.AbstractRenderColumn import mods.betterfoliage.client.render.column.ColumnRenderLayer import mods.betterfoliage.client.render.column.ColumnTextureInfo import mods.betterfoliage.client.render.column.SimpleColumnInfo -import mods.betterfoliage.client.resource.Identifier import mods.octarinecore.client.render.CombinedContext import mods.octarinecore.client.resource.* import mods.octarinecore.common.config.ConfigurableBlockMatcher @@ -18,6 +17,7 @@ import mods.octarinecore.tryDefault import net.minecraft.block.BlockState import net.minecraft.block.LogBlock import net.minecraft.util.Direction.Axis +import net.minecraft.util.ResourceLocation import org.apache.logging.log4j.Level import java.util.concurrent.CompletableFuture @@ -57,7 +57,7 @@ object AsyncLogDiscovery : ConfigurableModelDiscovery() { override fun processModel(state: BlockState, textures: List, atlas: AtlasFuture): CompletableFuture { val axis = getAxis(state) logger.log(Level.DEBUG, "$logName: axis $axis") - val spriteList = textures.map { atlas.sprite(Identifier(it)) } + val spriteList = textures.map { atlas.sprite(ResourceLocation(it)) } return atlas.mapAfter { SimpleColumnInfo( axis, diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderMycelium.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderMycelium.kt index 9b10f98..e3df37d 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderMycelium.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderMycelium.kt @@ -1,21 +1,18 @@ package mods.betterfoliage.client.render -import mods.betterfoliage.BetterFoliage import mods.betterfoliage.BetterFoliageMod -import mods.betterfoliage.client.Client import mods.betterfoliage.client.config.BlockConfig import mods.betterfoliage.client.config.Config -import mods.betterfoliage.client.resource.Identifier import mods.octarinecore.client.render.CombinedContext import mods.octarinecore.client.render.RenderDecorator import mods.octarinecore.client.render.noPost import mods.octarinecore.common.Double3 import net.minecraft.util.Direction.UP -import org.apache.logging.log4j.Level.DEBUG +import net.minecraft.util.ResourceLocation class RenderMycelium : RenderDecorator(BetterFoliageMod.MOD_ID, BetterFoliageMod.bus) { - val myceliumIcon = spriteSet { idx -> Identifier(BetterFoliageMod.MOD_ID, "blocks/better_mycel_$idx") } + val myceliumIcon = spriteSet { idx -> ResourceLocation(BetterFoliageMod.MOD_ID, "blocks/better_mycel_$idx") } val myceliumModel = modelSet(64) { idx -> RenderGrass.grassTopQuads(Config.shortGrass.heightMin, Config.shortGrass.heightMax)(idx) } override fun isEligible(ctx: CombinedContext): Boolean { diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderNetherrack.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderNetherrack.kt index bdcd47c..0b947d8 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderNetherrack.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderNetherrack.kt @@ -1,22 +1,22 @@ package mods.betterfoliage.client.render -import mods.betterfoliage.BetterFoliage import mods.betterfoliage.BetterFoliageMod -import mods.betterfoliage.client.Client -import mods.betterfoliage.client.config.BlockConfig import mods.betterfoliage.client.config.Config -import mods.betterfoliage.client.resource.Identifier -import mods.octarinecore.client.render.* -import mods.octarinecore.client.render.lighting.* +import mods.octarinecore.client.render.CombinedContext +import mods.octarinecore.client.render.RenderDecorator +import mods.octarinecore.client.render.lighting.cornerAo +import mods.octarinecore.client.render.lighting.cornerFlat +import mods.octarinecore.client.render.lighting.faceOrientedAuto import mods.octarinecore.random import net.minecraft.block.Blocks import net.minecraft.util.Direction.Axis -import net.minecraft.util.Direction.* -import org.apache.logging.log4j.Level.DEBUG +import net.minecraft.util.Direction.DOWN +import net.minecraft.util.Direction.UP +import net.minecraft.util.ResourceLocation class RenderNetherrack : RenderDecorator(BetterFoliageMod.MOD_ID, BetterFoliageMod.bus) { - val netherrackIcon = spriteSet { idx -> Identifier(BetterFoliageMod.MOD_ID, "blocks/better_netherrack_$idx") } + val netherrackIcon = spriteSet { idx -> ResourceLocation(BetterFoliageMod.MOD_ID, "blocks/better_netherrack_$idx") } val netherrackModel = modelSet(64) { modelIdx -> verticalRectangle(x1 = -0.5, z1 = 0.5, x2 = 0.5, z2 = -0.5, yTop = -0.5, yBottom = -0.5 - random(Config.netherrack.heightMin, Config.netherrack.heightMax)) diff --git a/src/main/kotlin/mods/betterfoliage/client/render/RenderReeds.kt b/src/main/kotlin/mods/betterfoliage/client/render/RenderReeds.kt index 9e1e1c5..6ef2a8b 100644 --- a/src/main/kotlin/mods/betterfoliage/client/render/RenderReeds.kt +++ b/src/main/kotlin/mods/betterfoliage/client/render/RenderReeds.kt @@ -2,10 +2,8 @@ package mods.betterfoliage.client.render import mods.betterfoliage.BetterFoliage import mods.betterfoliage.BetterFoliageMod -import mods.betterfoliage.client.Client import mods.betterfoliage.client.config.Config import mods.betterfoliage.client.integration.ShadersModIntegration -import mods.betterfoliage.client.resource.Identifier import mods.octarinecore.client.render.CombinedContext import mods.octarinecore.client.render.RenderDecorator import mods.octarinecore.client.render.lighting.FlatOffsetNoColor @@ -14,13 +12,13 @@ import mods.octarinecore.random import net.minecraft.block.material.Material import net.minecraft.tags.BlockTags import net.minecraft.util.Direction.UP -import org.apache.logging.log4j.Level.DEBUG +import net.minecraft.util.ResourceLocation class RenderReeds : RenderDecorator(BetterFoliageMod.MOD_ID, BetterFoliageMod.bus) { val noise = simplexNoise() val reedIcons = spriteSetTransformed( - check = { idx -> Identifier(BetterFoliageMod.MOD_ID, "blocks/better_reed_$idx")}, + check = { idx -> ResourceLocation(BetterFoliageMod.MOD_ID, "blocks/better_reed_$idx") }, register = { CenteredSprite(it).register(BetterFoliage.asyncPack) } ) val reedModels = modelSet(64) { modelIdx -> diff --git a/src/main/kotlin/mods/betterfoliage/client/resource/Aliases.kt b/src/main/kotlin/mods/betterfoliage/client/resource/Aliases.kt deleted file mode 100644 index ca864c4..0000000 --- a/src/main/kotlin/mods/betterfoliage/client/resource/Aliases.kt +++ /dev/null @@ -1,10 +0,0 @@ -package mods.betterfoliage.client.resource - -import net.minecraft.client.renderer.model.ModelResourceLocation -import net.minecraft.client.renderer.texture.TextureAtlasSprite -import net.minecraft.util.ResourceLocation - -typealias Identifier = ResourceLocation -typealias ModelIdentifier = ModelResourceLocation - -typealias Sprite = TextureAtlasSprite diff --git a/src/main/kotlin/mods/betterfoliage/client/texture/GeneratedGrass.kt b/src/main/kotlin/mods/betterfoliage/client/texture/GeneratedGrass.kt index 6454a15..55ee9b1 100644 --- a/src/main/kotlin/mods/betterfoliage/client/texture/GeneratedGrass.kt +++ b/src/main/kotlin/mods/betterfoliage/client/texture/GeneratedGrass.kt @@ -1,8 +1,8 @@ package mods.betterfoliage.client.texture -import mods.betterfoliage.client.resource.Identifier import mods.octarinecore.client.resource.* import net.minecraft.resources.IResourceManager +import net.minecraft.util.ResourceLocation import java.awt.image.BufferedImage /** @@ -11,8 +11,8 @@ import java.awt.image.BufferedImage * * @param[domain] Resource domain of generator */ -data class GeneratedGrass(val sprite: Identifier, val isSnowed: Boolean, val atlas: Atlas = Atlas.BLOCKS) { - constructor(sprite: String, isSnowed: Boolean) : this(Identifier(sprite), isSnowed) +data class GeneratedGrass(val sprite: ResourceLocation, val isSnowed: Boolean, val atlas: Atlas = Atlas.BLOCKS) { + constructor(sprite: String, isSnowed: Boolean) : this(ResourceLocation(sprite), isSnowed) fun register(pack: GeneratedBlockTexturePack) = pack.register(this, this::draw) diff --git a/src/main/kotlin/mods/betterfoliage/client/texture/GrassRegistry.kt b/src/main/kotlin/mods/betterfoliage/client/texture/GrassRegistry.kt index d831ef7..b69e447 100644 --- a/src/main/kotlin/mods/betterfoliage/client/texture/GrassRegistry.kt +++ b/src/main/kotlin/mods/betterfoliage/client/texture/GrassRegistry.kt @@ -3,13 +3,16 @@ package mods.betterfoliage.client.texture import mods.betterfoliage.BetterFoliage import mods.betterfoliage.client.config.BlockConfig import mods.betterfoliage.client.config.Config -import mods.betterfoliage.client.resource.Identifier import mods.octarinecore.client.render.lighting.HSB -import mods.octarinecore.client.resource.* +import mods.octarinecore.client.resource.AtlasFuture +import mods.octarinecore.client.resource.ConfigurableModelDiscovery +import mods.octarinecore.client.resource.ModelRenderRegistryRoot +import mods.octarinecore.client.resource.averageColor import mods.octarinecore.common.config.ConfigurableBlockMatcher import mods.octarinecore.common.config.ModelTextureList import net.minecraft.block.BlockState import net.minecraft.client.renderer.texture.TextureAtlasSprite +import net.minecraft.util.ResourceLocation import org.apache.logging.log4j.Level import java.lang.Math.min import java.util.concurrent.CompletableFuture @@ -39,7 +42,7 @@ object AsyncGrassDiscovery : ConfigurableModelDiscovery() { override fun processModel(state: BlockState, textures: List, atlas: AtlasFuture): CompletableFuture { val textureName = textures[0] - val spriteF = atlas.sprite(Identifier(textureName)) + val spriteF = atlas.sprite(ResourceLocation(textureName)) logger.log(Level.DEBUG, "$logName: texture $textureName") return atlas.mapAfter { val sprite = spriteF.get() diff --git a/src/main/kotlin/mods/betterfoliage/client/texture/LeafParticleRegistry.kt b/src/main/kotlin/mods/betterfoliage/client/texture/LeafParticleRegistry.kt index 88be6fb..6077aa3 100644 --- a/src/main/kotlin/mods/betterfoliage/client/texture/LeafParticleRegistry.kt +++ b/src/main/kotlin/mods/betterfoliage/client/texture/LeafParticleRegistry.kt @@ -2,14 +2,13 @@ package mods.betterfoliage.client.texture import mods.betterfoliage.BetterFoliage import mods.betterfoliage.BetterFoliageMod -import mods.betterfoliage.client.resource.Identifier -import mods.betterfoliage.client.resource.Sprite +import mods.octarinecore.Sprite import mods.octarinecore.client.resource.* -import mods.octarinecore.stripStart -import mods.octarinecore.client.resource.Atlas import mods.octarinecore.common.sinkAsync +import mods.octarinecore.stripStart import net.minecraft.client.particle.ParticleManager import net.minecraft.resources.IResourceManager +import net.minecraft.util.ResourceLocation import java.util.concurrent.CompletableFuture class FixedSpriteSet(val sprites: List) : SpriteSet { @@ -30,11 +29,11 @@ object LeafParticleRegistry : AsyncSpriteProvider { return StitchPhases( discovery = particleF.sinkAsync { - typeMappings.loadMappings(Identifier(BetterFoliageMod.MOD_ID, "leaf_texture_mappings.cfg")) + typeMappings.loadMappings(ResourceLocation(BetterFoliageMod.MOD_ID, "leaf_texture_mappings.cfg")) (typeMappings.mappings.map { it.type } + "default").distinct().forEach { leafType -> - val ids = (0 until 16).map { idx -> Identifier(BetterFoliageMod.MOD_ID, "falling_leaf_${leafType}_$idx") } + val ids = (0 until 16).map { idx -> ResourceLocation(BetterFoliageMod.MOD_ID, "falling_leaf_${leafType}_$idx") } val wids = ids.map { Atlas.PARTICLES.wrap(it) } - futures[leafType] = (0 until 16).map { idx -> Identifier(BetterFoliageMod.MOD_ID, "falling_leaf_${leafType}_$idx") } + futures[leafType] = (0 until 16).map { idx -> ResourceLocation(BetterFoliageMod.MOD_ID, "falling_leaf_${leafType}_$idx") } .filter { manager.hasResource(Atlas.PARTICLES.wrap(it)) } .map { atlasFuture.sprite(it) } } @@ -57,7 +56,7 @@ object LeafParticleRegistry : AsyncSpriteProvider { class TextureMatcher { data class Mapping(val domain: String?, val path: String, val type: String) { - fun matches(iconLocation: Identifier): Boolean { + fun matches(iconLocation: ResourceLocation): Boolean { return (domain == null || domain == iconLocation.namespace) && iconLocation.path.stripStart("blocks/").contains(path, ignoreCase = true) } @@ -65,10 +64,10 @@ class TextureMatcher { val mappings: MutableList = mutableListOf() - fun getType(resource: Identifier) = mappings.filter { it.matches(resource) }.map { it.type }.firstOrNull() - fun getType(iconName: String) = Identifier(iconName).let { getType(it) } + fun getType(resource: ResourceLocation) = mappings.filter { it.matches(resource) }.map { it.type }.firstOrNull() + fun getType(iconName: String) = ResourceLocation(iconName).let { getType(it) } - fun loadMappings(mappingLocation: Identifier) { + fun loadMappings(mappingLocation: ResourceLocation) { mappings.clear() resourceManager[mappingLocation]?.getLines()?.let { lines -> lines.filter { !it.startsWith("//") }.filter { !it.isEmpty() }.forEach { line -> diff --git a/src/main/kotlin/mods/betterfoliage/client/texture/LeafRegistry.kt b/src/main/kotlin/mods/betterfoliage/client/texture/LeafRegistry.kt index dbe004d..7f14ef0 100644 --- a/src/main/kotlin/mods/betterfoliage/client/texture/LeafRegistry.kt +++ b/src/main/kotlin/mods/betterfoliage/client/texture/LeafRegistry.kt @@ -2,13 +2,13 @@ package mods.betterfoliage.client.texture import mods.betterfoliage.BetterFoliage import mods.betterfoliage.client.config.BlockConfig -import mods.betterfoliage.client.resource.Identifier import mods.octarinecore.HasLogger import mods.octarinecore.client.resource.* import mods.octarinecore.common.config.ConfigurableBlockMatcher import mods.octarinecore.common.config.ModelTextureList import net.minecraft.block.BlockState import net.minecraft.client.renderer.texture.TextureAtlasSprite +import net.minecraft.util.ResourceLocation import java.util.concurrent.CompletableFuture const val defaultLeafColor = 0 @@ -35,7 +35,8 @@ object AsyncLeafDiscovery : ConfigurableModelDiscovery() { override val matchClasses: ConfigurableBlockMatcher get() = BlockConfig.leafBlocks override val modelTextures: List get() = BlockConfig.leafModels.modelList - override fun processModel(state: BlockState, textures: List, atlas: AtlasFuture) = defaultRegisterLeaf(Identifier(textures[0]), atlas) + override fun processModel(state: BlockState, textures: List, atlas: AtlasFuture) = + defaultRegisterLeaf(ResourceLocation(textures[0]), atlas) fun init() { LeafRegistry.registries.add(this) @@ -43,7 +44,7 @@ object AsyncLeafDiscovery : ConfigurableModelDiscovery() { } } -fun HasLogger.defaultRegisterLeaf(sprite: Identifier, atlas: AtlasFuture): CompletableFuture { +fun HasLogger.defaultRegisterLeaf(sprite: ResourceLocation, atlas: AtlasFuture): CompletableFuture { val leafType = LeafParticleRegistry.typeMappings.getType(sprite) ?: "default" val generated = GeneratedLeaf(sprite, leafType).register(BetterFoliage.asyncPack) val roundLeaf = atlas.sprite(generated) diff --git a/src/main/kotlin/mods/betterfoliage/client/texture/Utils.kt b/src/main/kotlin/mods/betterfoliage/client/texture/Utils.kt index e53cd9b..a4f0419 100644 --- a/src/main/kotlin/mods/betterfoliage/client/texture/Utils.kt +++ b/src/main/kotlin/mods/betterfoliage/client/texture/Utils.kt @@ -1,11 +1,10 @@ @file:JvmName("Utils") package mods.betterfoliage.client.texture -import mods.betterfoliage.client.resource.Identifier -import mods.octarinecore.client.resource.Atlas import mods.octarinecore.client.resource.get import mods.octarinecore.client.resource.loadImage import net.minecraft.resources.IResourceManager +import net.minecraft.util.ResourceLocation import java.io.IOException fun blendRGB(rgb1: Int, rgb2: Int, weight1: Int, weight2: Int): Int { @@ -17,4 +16,4 @@ fun blendRGB(rgb1: Int, rgb2: Int, weight1: Int, weight2: Int): Int { return result } -fun IResourceManager.loadSprite(id: Identifier) = this.get(id)?.loadImage() ?: throw IOException("Cannot load resource $id") \ No newline at end of file +fun IResourceManager.loadSprite(id: ResourceLocation) = this.get(id)?.loadImage() ?: throw IOException("Cannot load resource $id") \ No newline at end of file diff --git a/src/main/kotlin/mods/octarinecore/CommonRefs.kt b/src/main/kotlin/mods/octarinecore/CommonRefs.kt index e5b5d45..41d1171 100644 --- a/src/main/kotlin/mods/octarinecore/CommonRefs.kt +++ b/src/main/kotlin/mods/octarinecore/CommonRefs.kt @@ -18,6 +18,8 @@ import net.minecraft.world.IBlockReader import net.minecraft.world.IEnviromentBlockReader import java.util.* +typealias Sprite = TextureAtlasSprite + // Java val String = ClassRef("java.lang.String") val Map = ClassRef>("java.util.Map") diff --git a/src/main/kotlin/mods/octarinecore/client/resource/AsyncSpriteProviderManager.kt b/src/main/kotlin/mods/octarinecore/client/resource/AsyncSpriteProviderManager.kt index 9cc334a..f2daf13 100644 --- a/src/main/kotlin/mods/octarinecore/client/resource/AsyncSpriteProviderManager.kt +++ b/src/main/kotlin/mods/octarinecore/client/resource/AsyncSpriteProviderManager.kt @@ -1,13 +1,13 @@ package mods.octarinecore.client.resource -import mods.betterfoliage.client.resource.Identifier -import mods.betterfoliage.client.resource.Sprite +import mods.octarinecore.Sprite import mods.octarinecore.common.map import net.minecraft.client.renderer.texture.AtlasTexture import net.minecraft.client.renderer.texture.MissingTextureSprite import net.minecraft.profiler.IProfiler import net.minecraft.resources.IResourceManager -import java.util.* +import net.minecraft.util.ResourceLocation +import java.util.Collections import java.util.concurrent.CompletableFuture /** @@ -30,7 +30,7 @@ class AsnycSpriteProviderManager(val profilerSection: String) { * Needed in order to keep the actual [AtlasTexture.stitch] call in the original method, in case * other modders want to modify it too. */ - class StitchWrapper(val idList: Iterable, val onComplete: (AtlasTexture.SheetData)->Unit) { + class StitchWrapper(val idList: Iterable, val onComplete: (AtlasTexture.SheetData)->Unit) { fun complete(sheet: AtlasTexture.SheetData) = onComplete(sheet) } @@ -38,7 +38,7 @@ class AsnycSpriteProviderManager(val profilerSection: String) { var currentPhases: List = emptyList() @Suppress("UNCHECKED_CAST") - fun prepare(sourceObj: Any, manager: IResourceManager, idList: Iterable, profiler: IProfiler): Set { + fun prepare(sourceObj: Any, manager: IResourceManager, idList: Iterable, profiler: IProfiler): Set { profiler.startSection(profilerSection) val source = CompletableFuture() @@ -65,8 +65,8 @@ class AsnycSpriteProviderManager(val profilerSection: String) { * Provides a way for [AsyncSpriteProvider]s to register sprites to receive [CompletableFuture]s. * Tracks sprite ids that need to be stitched. */ -class AtlasFuture(initial: Iterable) { - val idSet = Collections.synchronizedSet(mutableSetOf().apply { addAll(initial) }) +class AtlasFuture(initial: Iterable) { + val idSet = Collections.synchronizedSet(mutableSetOf().apply { addAll(initial) }) protected val sheet = CompletableFuture() protected val finished = CompletableFuture() @@ -75,8 +75,8 @@ class AtlasFuture(initial: Iterable) { finished.complete(null) } - fun sprite(id: String) = sprite(Identifier(id)) - fun sprite(id: Identifier): CompletableFuture { + fun sprite(id: String) = sprite(ResourceLocation(id)) + fun sprite(id: ResourceLocation): CompletableFuture { idSet.add(id) return sheet.map { sheetData -> sheetData.sprites.find { it.name == id } ?: throw IllegalStateException("Atlas does not contain $id") } } diff --git a/src/main/kotlin/mods/octarinecore/client/resource/CenteringTextureGenerator.kt b/src/main/kotlin/mods/octarinecore/client/resource/CenteringTextureGenerator.kt index ddd9ba2..86eb5a9 100644 --- a/src/main/kotlin/mods/octarinecore/client/resource/CenteringTextureGenerator.kt +++ b/src/main/kotlin/mods/octarinecore/client/resource/CenteringTextureGenerator.kt @@ -1,12 +1,12 @@ package mods.octarinecore.client.resource -import mods.betterfoliage.client.resource.Identifier import mods.betterfoliage.client.texture.loadSprite import net.minecraft.resources.IResourceManager +import net.minecraft.util.ResourceLocation import java.awt.image.BufferedImage import java.lang.Math.max -data class CenteredSprite(val sprite: Identifier, val atlas: Atlas = Atlas.BLOCKS, val aspectHeight: Int = 1, val aspectWidth: Int = 1) { +data class CenteredSprite(val sprite: ResourceLocation, val atlas: Atlas = Atlas.BLOCKS, val aspectHeight: Int = 1, val aspectWidth: Int = 1) { fun register(pack: GeneratedBlockTexturePack) = pack.register(this, this::draw) diff --git a/src/main/kotlin/mods/octarinecore/client/resource/ModelDiscovery.kt b/src/main/kotlin/mods/octarinecore/client/resource/ModelDiscovery.kt index 6e7f613..9f4dd8d 100644 --- a/src/main/kotlin/mods/octarinecore/client/resource/ModelDiscovery.kt +++ b/src/main/kotlin/mods/octarinecore/client/resource/ModelDiscovery.kt @@ -1,20 +1,20 @@ package mods.octarinecore.client.resource import com.google.common.base.Joiner -import mods.betterfoliage.client.resource.ModelIdentifier import mods.octarinecore.HasLogger import mods.octarinecore.client.render.BlockCtx import mods.octarinecore.common.Int3 import mods.octarinecore.common.config.IBlockMatcher import mods.octarinecore.common.config.ModelTextureList import mods.octarinecore.common.plus -import mods.octarinecore.findFirst import mods.octarinecore.common.sinkAsync +import mods.octarinecore.findFirst import net.minecraft.block.BlockState import net.minecraft.client.renderer.BlockModelShapes import net.minecraft.client.renderer.model.BlockModel import net.minecraft.client.renderer.model.IUnbakedModel import net.minecraft.client.renderer.model.ModelBakery +import net.minecraft.client.renderer.model.ModelResourceLocation import net.minecraft.client.renderer.model.VariantList import net.minecraft.resources.IResourceManager import net.minecraft.util.ResourceLocation @@ -40,7 +40,7 @@ abstract class ModelRenderRegistryRoot : ModelRenderRegistry { class ModelDiscoveryContext( bakery: ModelBakery, val state: BlockState, - val modelId: ModelIdentifier + val modelId: ModelResourceLocation ) { val models = bakery.unwrapVariants(bakery.getUnbakedModel(modelId) to modelId) .filter { it.second != bakery.getUnbakedModel(ModelBakery.MODEL_MISSING) } diff --git a/src/main/kotlin/mods/octarinecore/client/resource/ResourceGeneration.kt b/src/main/kotlin/mods/octarinecore/client/resource/ResourceGeneration.kt index 43f8c4b..c8cf004 100644 --- a/src/main/kotlin/mods/octarinecore/client/resource/ResourceGeneration.kt +++ b/src/main/kotlin/mods/octarinecore/client/resource/ResourceGeneration.kt @@ -1,6 +1,5 @@ package mods.octarinecore.client.resource -import mods.betterfoliage.client.resource.Identifier import mods.octarinecore.HasLogger import mods.octarinecore.common.completedVoid import mods.octarinecore.common.map @@ -9,10 +8,10 @@ import net.minecraft.client.resources.ClientResourcePackInfo import net.minecraft.resources.* import net.minecraft.resources.ResourcePackType.CLIENT_RESOURCES import net.minecraft.resources.data.IMetadataSectionSerializer +import net.minecraft.util.ResourceLocation import net.minecraft.util.text.StringTextComponent import org.apache.logging.log4j.Logger import java.io.IOException -import java.lang.IllegalStateException import java.util.* import java.util.concurrent.CompletableFuture import java.util.concurrent.ExecutionException @@ -31,18 +30,18 @@ class GeneratedBlockTexturePack(val nameSpace: String, val packName: String, ove override fun getResourceNamespaces(type: ResourcePackType) = setOf(nameSpace) override fun getMetadata(deserializer: IMetadataSectionSerializer) = null override fun getRootResourceStream(id: String) = null - override fun getAllResourceLocations(type: ResourcePackType, path: String, maxDepth: Int, filter: Predicate) = emptyList() + override fun getAllResourceLocations(type: ResourcePackType, path: String, maxDepth: Int, filter: Predicate) = emptyList() override fun close() {} protected var manager: CompletableFuture? = null - val identifiers = Collections.synchronizedMap(mutableMapOf()) - val resources = Collections.synchronizedMap(mutableMapOf>()) + val identifiers = Collections.synchronizedMap(mutableMapOf()) + val resources = Collections.synchronizedMap(mutableMapOf>()) - fun register(key: Any, func: (IResourceManager)->ByteArray): Identifier { + fun register(key: Any, func: (IResourceManager)->ByteArray): ResourceLocation { if (manager == null) throw IllegalStateException("Cannot register resources unless block textures are being reloaded") identifiers[key]?.let { return it } - val id = Identifier(nameSpace, UUID.randomUUID().toString()) + val id = ResourceLocation(nameSpace, UUID.randomUUID().toString()) val resource = manager!!.map { func(it) } identifiers[key] = id @@ -51,12 +50,12 @@ class GeneratedBlockTexturePack(val nameSpace: String, val packName: String, ove return id } - override fun getResourceStream(type: ResourcePackType, id: Identifier) = + override fun getResourceStream(type: ResourcePackType, id: ResourceLocation) = if (type != CLIENT_RESOURCES) null else try { resources[id]!!.get().inputStream() } catch (e: ExecutionException) { (e.cause as? IOException)?.let { throw it } } // rethrow wrapped IOException if present - override fun resourceExists(type: ResourcePackType, id: Identifier) = + override fun resourceExists(type: ResourcePackType, id: ResourceLocation) = type == CLIENT_RESOURCES && resources.containsKey(id) override fun setup(manager: IResourceManager, bakeryF: CompletableFuture, atlas: AtlasFuture): StitchPhases { diff --git a/src/main/kotlin/mods/octarinecore/client/resource/ResourceHandler.kt b/src/main/kotlin/mods/octarinecore/client/resource/ResourceHandler.kt index ec1d12a..b231c45 100644 --- a/src/main/kotlin/mods/octarinecore/client/resource/ResourceHandler.kt +++ b/src/main/kotlin/mods/octarinecore/client/resource/ResourceHandler.kt @@ -1,8 +1,7 @@ package mods.octarinecore.client.resource import mods.betterfoliage.BetterFoliage -import mods.betterfoliage.client.resource.Identifier -import mods.betterfoliage.client.resource.Sprite +import mods.octarinecore.Sprite import mods.octarinecore.client.render.Model import mods.octarinecore.common.Double3 import mods.octarinecore.common.Int3 @@ -11,6 +10,7 @@ import mods.octarinecore.common.sink import mods.octarinecore.stripEnd import mods.octarinecore.stripStart import net.minecraft.resources.IResourceManager +import net.minecraft.util.ResourceLocation import net.minecraft.util.math.BlockPos import net.minecraft.util.math.MathHelper import net.minecraft.world.IWorld @@ -20,7 +20,7 @@ import net.minecraftforge.event.world.WorldEvent import net.minecraftforge.eventbus.api.IEventBus import net.minecraftforge.eventbus.api.SubscribeEvent import net.minecraftforge.fml.config.ModConfig -import java.util.* +import java.util.Random import java.util.concurrent.CompletableFuture import kotlin.properties.ReadOnlyProperty import kotlin.reflect.KProperty @@ -29,8 +29,8 @@ enum class Atlas(val basePath: String) { BLOCKS("textures"), PARTICLES("textures/particle"); - fun wrap(resource: Identifier) = Identifier(resource.namespace, "$basePath/${resource.path}.png") - fun unwrap(resource: Identifier) = resource.stripStart("$basePath/").stripEnd(".png") + fun wrap(resource: ResourceLocation) = ResourceLocation(resource.namespace, "$basePath/${resource.path}.png") + fun unwrap(resource: ResourceLocation) = resource.stripStart("$basePath/").stripEnd(".png") fun matches(event: TextureStitchEvent) = event.map.basePath == basePath } @@ -62,10 +62,10 @@ open class ResourceHandler( // ============================ // Resource declarations // ============================ - fun sprite(id: Identifier) = sprite { id } - fun sprite(idFunc: ()->Identifier) = AsyncSpriteDelegate(idFunc).apply { BetterFoliage.getSpriteManager(targetAtlas).providers.add(this) } - fun spriteSet(idFunc: (Int)->Identifier) = AsyncSpriteSet(targetAtlas, idFunc).apply { BetterFoliage.getSpriteManager(targetAtlas).providers.add(this) } - fun spriteSetTransformed(check: (Int)->Identifier, register: (Identifier)->Identifier) = + fun sprite(id: ResourceLocation) = sprite { id } + fun sprite(idFunc: ()->ResourceLocation) = AsyncSpriteDelegate(idFunc).apply { BetterFoliage.getSpriteManager(targetAtlas).providers.add(this) } + fun spriteSet(idFunc: (Int)->ResourceLocation) = AsyncSpriteSet(targetAtlas, idFunc).apply { BetterFoliage.getSpriteManager(targetAtlas).providers.add(this) } + fun spriteSetTransformed(check: (Int)->ResourceLocation, register: (ResourceLocation)->ResourceLocation) = AsyncSpriteSet(targetAtlas, check, register).apply { BetterFoliage.getSpriteManager(targetAtlas).providers.add(this) } fun model(init: Model.()->Unit) = ModelHolder(init).apply { resources.add(this) } fun modelSet(num: Int, init: Model.(Int)->Unit) = ModelSet(num, init).apply { resources.add(this) } @@ -88,7 +88,7 @@ open class ResourceHandler( // ============================ // Resource container classes // ============================ -class AsyncSpriteDelegate(val idFunc: ()->Identifier) : ReadOnlyProperty, AsyncSpriteProvider { +class AsyncSpriteDelegate(val idFunc: ()->ResourceLocation) : ReadOnlyProperty, AsyncSpriteProvider { protected lateinit var value: Sprite override fun getValue(thisRef: Any, property: KProperty<*>) = value @@ -108,7 +108,7 @@ interface SpriteSet { operator fun get(idx: Int): Sprite } -class AsyncSpriteSet(val targetAtlas: Atlas = Atlas.BLOCKS, val idFunc: (Int)->Identifier, val transform: (Identifier)->Identifier = { it }) : AsyncSpriteProvider { +class AsyncSpriteSet(val targetAtlas: Atlas = Atlas.BLOCKS, val idFunc: (Int)->ResourceLocation, val transform: (ResourceLocation)->ResourceLocation = { it }) : AsyncSpriteProvider { var num = 0 protected set protected var sprites: List = emptyList() From d7e16d603fc7227d579358dbffc8a933b179a00d Mon Sep 17 00:00:00 2001 From: XiLaiTL <1272720210@qq.com> Date: Fri, 21 May 2021 21:29:42 +0800 Subject: [PATCH 2/8] Add files via upload (cherry picked from commit ce8afacb019336962848ade302e7fe76c2654ebd) --- .../assets/betterfoliage/lang/zh_cn.lang | 342 ++++++++++++++++++ 1 file changed, 342 insertions(+) create mode 100644 src/main/resources/assets/betterfoliage/lang/zh_cn.lang diff --git a/src/main/resources/assets/betterfoliage/lang/zh_cn.lang b/src/main/resources/assets/betterfoliage/lang/zh_cn.lang new file mode 100644 index 0000000..803d833 --- /dev/null +++ b/src/main/resources/assets/betterfoliage/lang/zh_cn.lang @@ -0,0 +1,342 @@ +key.betterfoliage.gui=打开BF设置 + +betterfoliage.global.enabled=模组使用 +betterfoliage.global.enabled.tooltip=如果关闭,BetterFoliage不会呈现任何东西 +betterfoliage.global.nVidia=nVidia GPU +betterfoliage.global.nVidia.tooltip=明确你是否有一个nVidia GPU + +betterfoliage.enabled=启用 +betterfoliage.enabled.tooltip=要启用这个功能吗? +betterfoliage.hOffset=水平偏移 +betterfoliage.hOffset.tooltip=在方块中这个元素是横向距离移动的 +betterfoliage.vOffset=垂直偏移 +betterfoliage.vOffset.tooltip=在方块中这个元素是横向距离移动的 +betterfoliage.size=尺寸 +betterfoliage.size.tooltip=该元素的尺寸 +betterfoliage.heightMin=最小高度 +betterfoliage.heightMin.tooltip=最小元素的高度 +betterfoliage.heightMax=最大高度 +betterfoliage.heightMax.tooltip=最大元素的高度 +betterfoliage.population=物体密度 +betterfoliage.population.tooltip=生成的概率为64分之1 +betterfoliage.shaderWind=光影水反中的 风的影响 +betterfoliage.shaderWind.tooltip=能适用于光影水反中的"风的影响" 这一元素? +betterfoliage.distance=距离限制 +betterfoliage.distance.tooltip=离游戏者的最大距离,在这个范围内呈现这个特征 + +betterfoliage.rendererror=§a[BF更好的叶子]§f 错误:渲染方块 %s 此位置 %s + +betterfoliage.blocks=方块类型 +betterfoliage.blocks.tooltip=配置方块类型,那里有特定的功能(见表格) + +betterfoliage.blocks.dirtWhitelist=需要开启泥土效果的名单 +betterfoliage.blocks.dirtBlacklist=需要关闭泥土效果的名单 +betterfoliage.blocks.dirtWhitelist.arrayEntry=%d 条目 +betterfoliage.blocks.dirtBlacklist.arrayEntry=%d 条目 +betterfoliage.blocks.dirtWhitelist.tooltip=这些方块将被视为泥土块 将影响芦苇,藻类,草的出现 +betterfoliage.blocks.dirtBlacklist.tooltip=这些方块不会将被视为泥土块 芦苇,藻类,草不会出现 + +betterfoliage.blocks.grassClassesWhitelist=需要开启草方块效果的名单 +betterfoliage.blocks.grassClassesBlacklist=需要关闭草方块效果的名单 +betterfoliage.blocks.grassClassesWhitelist.arrayEntry=%d 条目 +betterfoliage.blocks.grassClassesBlacklist.arrayEntry=%d 条目 +betterfoliage.blocks.grassModels=草方块的模型 +betterfoliage.blocks.grassModels.arrayEntry=%d 条目 +betterfoliage.blocks.grassWhitelist.tooltip=这些方块将被视为草方块 将影响短草效果、草方块的连接 +betterfoliage.blocks.grassBlacklist.tooltip=这些方块不会将被视为草方块 短草效果、草方块的连接不会出现 +betterfoliage.blocks.grassModels.tooltip=这些模型和材质将被认为是草方块 + +betterfoliage.blocks.leavesClassesWhitelist=需要开启树叶效果的名单 +betterfoliage.blocks.leavesClassesBlacklist=需要关闭树叶效果的名单 +betterfoliage.blocks.leavesClassesWhitelist.arrayEntry=%d 条目 +betterfoliage.blocks.leavesClassesBlacklist.arrayEntry=%d 条目 +betterfoliage.blocks.leavesModels=叶子的模型 +betterfoliage.blocks.leavesModels.arrayEntry=%d 条目 +betterfoliage.blocks.leavesWhitelist.tooltip=这些方块将被视为叶子 将有额外的叶片、产生飘落的树叶(这些方块会在光影水反中使用与叶子同一ID) +betterfoliage.blocks.leavesBlacklist.tooltip=这些方块将不会被视为叶子 将关闭额外的叶片、不会产生飘落的树叶(这些方块会在光影水反中使用与叶子同一ID) +betterfoliage.blocks.leavesModels.tooltip=这些模型和材质将被认为是叶方块 + +betterfoliage.blocks.cropsWhitelist=需要开启作物效果的名单 +betterfoliage.blocks.cropsBlacklist=需要关闭作物效果的名单 +betterfoliage.blocks.cropsWhitelist.arrayEntry=%d 条目 +betterfoliage.blocks.cropsBlacklist.arrayEntry=%d 条目 +betterfoliage.blocks.cropsWhitelist.tooltip=这些植物将被视为是作物 作物将与高草在光影水反中使用同一ID +betterfoliage.blocks.cropsBlacklist.tooltip=这些植物将不会被视为是作物 作物将不会与高草在光影水反中使用同一ID + +betterfoliage.blocks.logsWhitelist=需要开启圆木效果的名单 +betterfoliage.blocks.logsBlacklist=需要关闭圆木效果的名单 +betterfoliage.blocks.logsWhitelist.arrayEntry=%d 条目 +betterfoliage.blocks.logsBlacklist.arrayEntry=%d 条目 +betterfoliage.blocks.logModels=圆木模型 +betterfoliage.blocks.logModels.arrayEntry=%d 条目 +betterfoliage.blocks.logsWhitelist.tooltip=这些方块将被视为原木 将产生圆木效果 +betterfoliage.blocks.logsBlacklist.tooltip=这些方块将不会被视为原木 将不会产生圆木效果 +betterfoliage.blocks.logModels.tooltip=这些模型和材质将被认为是原木方块 + +betterfoliage.blocks.sandWhitelist=需要开启珊瑚效果的名单 +betterfoliage.blocks.sandBlacklist=需要关闭珊瑚效果的名单 +betterfoliage.blocks.sandWhitelist.arrayEntry=%d 条目 +betterfoliage.blocks.sandBlacklist.arrayEntry=%d 条目 +betterfoliage.blocks.sandWhitelist.tooltip=这些方块将被视作沙子 将产生珊瑚 +betterfoliage.blocks.sandBlacklist.tooltip=这些方块将不会被视为沙子 将不会产生珊瑚 + +betterfoliage.blocks.lilypadWhitelist=需要开启更好的莲叶与荷花的名单 +betterfoliage.blocks.lilypadBlacklist=需要关闭更好的莲叶与荷花的名单 +betterfoliage.blocks.lilypadWhitelist.arrayEntry=%d 条目 +betterfoliage.blocks.lilypadBlacklist.arrayEntry=%d 条目 +betterfoliage.blocks.lilypadWhitelist.tooltip=这些方块将被视为莲叶 将开启更好的莲叶与荷花效果 +betterfoliage.blocks.lilypadBlacklist.tooltip=这些方块将不会被视为莲叶 将不会产生更好的莲叶与荷花效果 + +betterfoliage.blocks.cactusWhitelist=需要开启更好的仙人掌的名单 +betterfoliage.blocks.cactusBlacklist=需要关闭更好的仙人掌的名单 +betterfoliage.blocks.cactusWhitelist.arrayEntry=%d 条目 +betterfoliage.blocks.cactusBlacklist.arrayEntry=%d 条目 +betterfoliage.blocks.cactusWhitelist.tooltip=这些植物将被视作仙人掌 将开启更好的仙人掌的效果 +betterfoliage.blocks.cactusBlacklist.tooltip=这些植物将不会被视作仙人掌 将不会产生更好的仙人掌的效果 + +betterfoliage.blocks.myceliumWhitelist=需要开启更好的菌丝体的名单 +betterfoliage.blocks.myceliumBlacklist=需要关闭更好的菌丝体的名单 +betterfoliage.blocks.myceliumWhitelist.arrayEntry=%d 条目 +betterfoliage.blocks.myceliumBlacklist.arrayEntry=%d 条目 +betterfoliage.blocks.myceliumWhitelist.tooltip=这些方块将被视作菌丝体 将影响菌丝体上"短草"的效果 +betterfoliage.blocks.myceliumBlacklist.tooltip=这些方块将不会被视作菌丝体 菌丝体上"短草"的效果不会产生 + +betterfoliage.blocks.netherrackWhitelist=需要开启下界岩下端藤蔓的名单 +betterfoliage.blocks.netherrackBlacklist=需要关闭下界岩下端藤蔓的名单 +betterfoliage.blocks.netherrackWhitelist.arrayEntry=%d 条目 +betterfoliage.blocks.netherrackBlacklist.arrayEntry=%d 条目 +betterfoliage.blocks.netherrackWhitelist.tooltip=方块将被视作下界岩 下界岩下端将长出藤蔓 +betterfoliage.blocks.netherrackBlacklist.tooltip=方块将不会被视作下界岩 下界岩下端将不会长出藤蔓 + +betterfoliage.shaders=着色器配置 +betterfoliage.shaders.tooltip=Configure integration with shaders +betterfoliage.shaders.leavesId=叶子 ID +betterfoliage.shaders.leavesId.tooltip=方块 ID 将作为所有叶片都使用的相同ID提供给光影水反 如果你的光影水反文件使用了一个 §6block.properties§e 文件, 你可能需要修改这个以匹配光影水反的映射 +betterfoliage.shaders.grassId=草 ID +betterfoliage.shaders.grassId.tooltip=方块 ID 将作为所有的草和作物都使用的相同ID提供给光影水反 如果你的光影水反文件使用了一个 §6block.properties§e 文件, 你可能需要修改这个以匹配光影水反的映射 + +betterfoliage.leaves=额外的叶片 +betterfoliage.leaves.tooltip=叶方块上额外的密叶 +betterfoliage.leaves.dense=浓密模式 +betterfoliage.leaves.dense.tooltip=浓密的叶子会有更多额外的叶片 +betterfoliage.leaves.snowEnabled=启用雪覆盖叶片 +betterfoliage.leaves.snowEnabled.tooltip=是否启用被雪覆盖的额外叶片? +betterfoliage.leaves.hideInternal=隐藏内部的叶片 +betterfoliage.leaves.hideInternal.tooltip=如果该叶方块完全被其他叶方块或者固体方块包围,将不渲染额外的叶片 + +betterfoliage.shortGrass=短草和菌丝 +betterfoliage.shortGrass.tooltip=一簇小草或者一丛菌丝长在合适的方块的顶部 +betterfoliage.shortGrass.useGenerated=为草使用mod创建的材质 +betterfoliage.shortGrass.useGenerated.tooltip=mod创建的材质指的是将已选用的资源包中高草的材质切一半来用 +betterfoliage.shortGrass.myceliumEnabled=使用在菌丝上 +betterfoliage.shortGrass.myceliumEnabled.tooltip=将这个特性利用到菌丝中吗? +betterfoliage.shortGrass.grassEnabled=使用在草方块上 +betterfoliage.shortGrass.grassEnabled.tooltip=将这个特性利用到草方块中吗? +betterfoliage.shortGrass.snowEnabled=使用在雪地里 +betterfoliage.shortGrass.snowEnabled.tooltip=使用到被雪覆盖的草方块中去? +betterfoliage.shortGrass.saturationThreshold=饱和度阈值 +betterfoliage.shortGrass.saturationThreshold.tooltip=色彩饱和度将介于"无色"方块(使用生物群系的颜色)和"有色"方块(使用材质特定颜色)之间 + +betterfoliage.connectedGrass.snowEnabled=使用在被雪覆盖的草方块上 +betterfoliage.connectedGrass.snowEnabled.tooltip=是否应用于被雪覆盖的草方块上? + +betterfoliage.hangingGrass=悬挂的草 +betterfoliage.hangingGrass.tooltip=草会在边缘的草方块上垂下来 +betterfoliage.hangingGrass.separation=垂下来的距离 +betterfoliage.hangingGrass.separation.tooltip=有多长的挂草会从草方块上垂下来 + +betterfoliage.cactus=更好的仙人掌 +betterfoliage.cactus.tooltip=用额外的仙人掌刺和圆润的形状来提高仙人掌的真实性 +betterfoliage.cactus.sizeVariation=尺寸变化 +betterfoliage.cactus.sizeVariation.tooltip=仙人掌的尺寸随机变化的范围 + +betterfoliage.lilypad=更好的莲叶与荷花 +betterfoliage.lilypad.tooltip=用莲叶的根和随机的莲花以提高莲叶的真实性 +betterfoliage.lilypad.flowerChance=花的生成概率 +betterfoliage.lilypad.flowerChance.tooltip=(64个莲叶中 N 个)莲叶具有花了 + +betterfoliage.reed=芦苇 +betterfoliage.reed.tooltip=芦苇会生成在浅水中的泥土块上 +betterfoliage.reed.biomes=生物群系的列表 +betterfoliage.reed.biomes.tooltip=配置允许出现芦苇的生物群系 +betterfoliage.reed.biomes.tooltip.element=芦苇应该出现在%s生物群落? + +betterfoliage.algae=藻类 +betterfoliage.algae.tooltip=藻类会生成在深水中的泥土块上 +betterfoliage.algae.biomes=生物群系的列表 +betterfoliage.algae.biomes.tooltip=配置允许出现藻类的生物群系 +betterfoliage.algae.biomes.tooltip.element=藻类应该出现在%s生物群落? + +betterfoliage.coral=珊瑚 +betterfoliage.coral.tooltip=珊瑚会生成在深水中的沙块上 +betterfoliage.coral.size=珊瑚的大小 +betterfoliage.coral.size.tooltip=珊瑚伸出的部分的大小 +betterfoliage.coral.crustSize=外壳尺寸 +betterfoliage.coral.crustSize.tooltip=珊瑚的平的部分的尺寸 +betterfoliage.coral.chance=珊瑚的生成概率 +betterfoliage.coral.chance.tooltip=64个特殊表面的方块中有N个有机会出现珊瑚 +betterfoliage.coral.biomes=生物群落的列表 +betterfoliage.coral.biomes.tooltip=配置允许出现珊瑚的生物群系 +betterfoliage.coral.biomes.tooltip.element=珊瑚应该出现在%s生物群落? +betterfoliage.coral.shallowWater=浅海珊瑚 +betterfoliage.coral.shallowWater.tooltip=珊瑚应该生成在深水1格? + +betterfoliage.netherrack=下界岩下面的藤蔓 +betterfoliage.netherrack.tooltip=下界岩下面将挂上藤蔓 + +betterfoliage.fallingLeaves=落叶 +betterfoliage.fallingLeaves.tooltip=落叶粒子效果 FX 会从叶方块底部下落 +betterfoliage.fallingLeaves.speed=粒子速度 +betterfoliage.fallingLeaves.speed.tooltip=总体的粒子速度 +betterfoliage.fallingLeaves.windStrength=柔风的强度 +betterfoliage.fallingLeaves.windStrength.tooltip=在晴天中体现的风的效果(默认以0为中心散播) +betterfoliage.fallingLeaves.stormStrength=风暴的强度 +betterfoliage.fallingLeaves.stormStrength.tooltip=附加在阴天里体现的风的效果(默认以0为中心散播) +betterfoliage.fallingLeaves.size=粒子大小 +betterfoliage.fallingLeaves.chance=粒子生成机率 +betterfoliage.fallingLeaves.chance.tooltip=随机渲染刻激发叶方块生成粒子的概率 +betterfoliage.fallingLeaves.perturb=扰动 +betterfoliage.fallingLeaves.perturb.tooltip=扰动的大小.增加了一个与之旋转同步的螺旋状动量 +betterfoliage.fallingLeaves.lifetime=最长存在时间 +betterfoliage.fallingLeaves.lifetime.tooltip=粒子的最长存在时间,仅在几秒内,最短时间为这个值60%% +betterfoliage.fallingLeaves.opacityHack=粒子不透明 +betterfoliage.fallingLeaves.opacityHack.tooltip=阻止透明方块隐藏粒子,即使粒子已经在前面了.警告:可能会导致错误 + +betterfoliage.risingSoul=灵魂沙上飘起的魂灵 +betterfoliage.risingSoul.tooltip=灵魂沙的顶部飘出灵魂粒子 FX +betterfoliage.risingSoul.chance=粒子的生成机率 +betterfoliage.risingSoul.chance.tooltip=随机渲染刻激发灵魂沙生成一个粒子的概率 +betterfoliage.risingSoul.speed=粒子速度 +betterfoliage.risingSoul.speed.tooltip=灵颗粒的垂直速度 +betterfoliage.risingSoul.perturb=扰动 +betterfoliage.risingSoul.perturb.tooltip=动的大小.增加了一个与之旋转同步的螺旋状动量 +betterfoliage.risingSoul.headSize=魂灵的大小 +betterfoliage.risingSoul.headSize.tooltip=灵魂粒子的大小 +betterfoliage.risingSoul.trailSize=魂灵轨迹的大小 +betterfoliage.risingSoul.trailSize.tooltip=灵魂粒子的轨迹的初始大小 +betterfoliage.risingSoul.opacity=不透明度 +betterfoliage.risingSoul.opacity.tooltip=粒子效果的不透明度 +betterfoliage.risingSoul.sizeDecay=大小的衰减 +betterfoliage.risingSoul.sizeDecay.tooltip=灵魂轨迹粒子大小与前一刻他的大小相关 +betterfoliage.risingSoul.opacityDecay=不透明度的衰减 +betterfoliage.risingSoul.opacityDecay.tooltip=灵魂轨迹粒子不透明度与前一刻他的不透明度相关 +betterfoliage.risingSoul.lifetime=最长存在时间 +betterfoliage.risingSoul.lifetime.tooltip=粒子的最长存在时间,仅在几秒内,最短时间为这个值60%% +betterfoliage.risingSoul.trailLength=魂灵轨迹长度 +betterfoliage.risingSoul.trailLength.tooltip=在游戏刻内粒子记录的轨迹位置的数量 +betterfoliage.risingSoul.trailDensity=魂灵轨迹密集程度 +betterfoliage.risingSoul.trailDensity.tooltip=整条轨迹中渲染每第N个轨迹位置 + +betterfoliage.connectedGrass=草的纹理的连接 +betterfoliage.connectedGrass.enabled=启用 +betterfoliage.connectedGrass.enabled.tooltip=如果泥土上有草方块:所有的草方块的侧面换成草方块顶部的材质, + +betterfoliage.roundLogs=圆木 +betterfoliage.roundLogs.tooltip=使木方块拥有八角形的横截面 +betterfoliage.roundLogs.plantsOnly=仅仅应用于植物性材料 +betterfoliage.roundLogs.plantsOnly.tooltip=是否仅仅应用于木质材料和干草堆,而不是所有圆柱方块? +betterfoliage.roundLogs.connectSolids=连接到固体方块上 +betterfoliage.roundLogs.connectSolids.tooltip=要使圆木连接到完整的固体方块上吗? +betterfoliage.roundLogs.connectPerpendicular=连接到垂直的圆木上 +betterfoliage.roundLogs.connectPerpendicular.tooltip=要使圆木根据它的角度连接到垂直圆木上吗? +betterfoliage.roundLogs.lenientConnect=巨大的圆木 +betterfoliage.roundLogs.lenientConnect.tooltip=在L形中也连接成巨大的圆木, 不只是2x2形 +betterfoliage.roundLogs.connectGrass=连接到草方块上 +betterfoliage.roundLogs.connectGrass.tooltip=如果树木下的泥土附近有草方块,那么它也会被渲染成草方块 +betterfoliage.roundLogs.radiusSmall=圆木斜面的半径 +betterfoliage.roundLogs.radiusSmall.tooltip=从圆木的外角砍掉多大的部分 +betterfoliage.roundLogs.radiusLarge=连接圆木的斜面半径 +betterfoliage.roundLogs.radiusLarge.tooltip=从连接着的巨大圆木的外角砍掉多大的部分 +betterfoliage.roundLogs.dimming=调光变暗 +betterfoliage.roundLogs.dimming.tooltip=将圆木阴暗面变黑的程度 +betterfoliage.roundLogs.zProtection=Z-Protection [Z保护] +betterfoliage.roundLogs.zProtection.tooltip=用多少倍放大平行圆木连接处的面 去停止 Z-fighting (闪烁)[斑驳,两个多边形共面所出现的效果].在没有发生故障的情况下,试着将这个值设置得尽可能的高[这是Z-fighting出现的原因:多个多面体的面重叠在一起,会一直闪烁] +betterfoliage.roundLogs.defaultY=默认垂直 +betterfoliage.roundLogs.defaultY.tooltip=如果开启, 方向不确定的圆木将会渲染成垂直的.否则, 它们仅仅渲染为cube型方块. + +betterfoliage.connectedGrass.tooltip=使得草方块侧面拥有像顶面的材质 +betterfoliage.leaves.saturationThreshold=饱和度阈值 +betterfoliage.leaves.saturationThreshold.tooltip=色彩饱和度将介于"无色"方块(使用生物群系的颜色)和"有色"方块(使用材质特定颜色)之间 + +##########应用翻译########## +true=开启:true +false=关闭:false + +##########以下生态系统的翻译来自中文Minecraft Wiki########## +Ocean=海洋 +Plains=草原 +Sunflower Plains=向日葵草原 +Desert=沙漠 +Desert M=沙漠 M +Extreme Hills=峭壁 +Extreme Hills M=峭壁 M +Forest=森林 +Flower Forest=繁花森林 +Taiga=针叶林 +Taiga M=针叶林 M +Swampland=沼泽 +Swampland M=沼泽 M +River=河流 +Hell=下界 +The End=末路之地 +FrozenOcean=冻洋 +FrozenRiver=冻河 +Ice Plains=冰原 +Ice Plains Spikes=冰刺平原 +Ice Mountains=雪山 +MushroomIsland=蘑菇岛 +MushroomIslandShore=蘑菇岛岸 +Beach=沙滩 +DesertHills=沙漠山丘 +ForestHills=森林山丘 +TaigaHills=针叶林山丘 +Extreme Hills Edge=悬崖 +Jungle=丛林 +Jungle M=丛林 M +JungleHills=丛林山丘 +JungleEdge=丛林边缘 +JungleEdge M=丛林边缘 M +Deep Ocean=深海 +Stone Beach=石滩 +Cold Beach=寒冷沙滩 +Birch Forest=桦木森林 +Birch Forest M=桦木森林 M +Birch Forest Hills=桦木森林山丘 +Birch Forest Hills M=桦木森林山丘 +Roofed Forest=黑森林 +Roofed Forest M=黑森林 M +Cold Taiga=冷针叶林 +Cold Taiga M=冷针叶林 M +Cold Taiga Hills=冷针叶林山丘 +Mega Taiga=大型针叶林 +Mega Spruce Taiga=红木森林 +Mega Taiga Hills=大型针叶林山丘 +Redwood Taiga Hills M=红木山丘 +Extreme Hills+=峭壁+ +Extreme Hills+ M=峭壁+ M +Savanna=热带草原 +Savanna M=热带草原 +Savanna Plateau=热带高原 +Savanna Plateau M=热带高原 +Mesa=平顶山 +Mesa (Bryce)=平顶山(岩柱) +Mesa Plateau F=平顶山高原 F +Mesa Plateau F M=平顶山高原 F M +Mesa Plateau=平顶山高原 +Mesa Plateau M=平顶山高原 M + +##########下面是Forge的部分翻译########## +fml.configgui.applyGlobally=全部应用 +fml.configgui.tooltip.addNewEntryAbove=在这上面设置新条目 +fml.configgui.tooltip.applyGlobally=全部应用撤销或重置. +fml.configgui.tooltip.removeEntry=删除条目 +fml.configgui.tooltip.resetAll=重置. 如果在初始页面选中全部应用的复选框,那么将所有更改全部重置. +fml.configgui.tooltip.resetToDefault=重置 +fml.configgui.tooltip.undoAll=撤销. 如果在初始页面选中全部应用的复选框,那么将撤销新一次的所有更改. +fml.configgui.tooltip.undoChanges=撤销 +fml.configgui.tooltip.default=[默认值: %s] +fml.configgui.tooltip.defaultNumeric=[范围: %s ~ %s, 默认值: %s] + +fml.menu.mods=模组 +fml.menu.mods.normal=普通排序 +fml.menu.mods.search=搜索: \ No newline at end of file From eeabc1922eaa3a55152feab9174787dc92f5e296 Mon Sep 17 00:00:00 2001 From: octarine-noise Date: Sat, 22 May 2021 17:25:29 +0200 Subject: [PATCH 3/8] translations JSON conversion + some cleanup --- .../assets/betterfoliage/lang/en_us.json | 175 +++++++++ .../assets/betterfoliage/lang/en_us.lang | 250 ------------- .../assets/betterfoliage/lang/ko_kr.json | 155 ++++++++ .../assets/betterfoliage/lang/ko_kr.lang | 216 ----------- .../assets/betterfoliage/lang/ru_ru.json | 154 ++++++++ .../assets/betterfoliage/lang/ru_ru.lang | 213 ----------- .../assets/betterfoliage/lang/zh_cn.json | 177 +++++++++ .../assets/betterfoliage/lang/zh_cn.lang | 342 ------------------ 8 files changed, 661 insertions(+), 1021 deletions(-) create mode 100644 src/main/resources/assets/betterfoliage/lang/en_us.json delete mode 100644 src/main/resources/assets/betterfoliage/lang/en_us.lang create mode 100644 src/main/resources/assets/betterfoliage/lang/ko_kr.json delete mode 100644 src/main/resources/assets/betterfoliage/lang/ko_kr.lang create mode 100644 src/main/resources/assets/betterfoliage/lang/ru_ru.json delete mode 100644 src/main/resources/assets/betterfoliage/lang/ru_ru.lang create mode 100644 src/main/resources/assets/betterfoliage/lang/zh_cn.json delete mode 100644 src/main/resources/assets/betterfoliage/lang/zh_cn.lang diff --git a/src/main/resources/assets/betterfoliage/lang/en_us.json b/src/main/resources/assets/betterfoliage/lang/en_us.json new file mode 100644 index 0000000..637c0a0 --- /dev/null +++ b/src/main/resources/assets/betterfoliage/lang/en_us.json @@ -0,0 +1,175 @@ +{ + "key.betterfoliage.gui": "Open Settings", + + "betterfoliage.title": "Better Foliage configuration", + + "betterfoliage.global.enabled": "Enable Mod", + "betterfoliage.global.enabled.tooltip": "If set to false, BetterFoliage will not render anything", + "betterfoliage.nVidia": "nVidia GPU", + "betterfoliage.nVidia.tooltip": "Specify whether you have an nVidia GPU", + + "betterfoliage.enabled": "Enable", + "betterfoliage.enabled.tooltip": "Is this feature enabled?", + "betterfoliage.hOffset": "Horizontal offset", + "betterfoliage.hOffset.tooltip": "The distance this element is shifted horizontally, in blocks", + "betterfoliage.vOffset": "Vertical offset", + "betterfoliage.vOffset.tooltip": "The distance this element is shifted vertically, in blocks", + "betterfoliage.size": "Size", + "betterfoliage.size.tooltip": "Size of this element", + "betterfoliage.heightMin": "Minimum height", + "betterfoliage.heightMin.tooltip": "Minimum height of element", + "betterfoliage.heightMax": "Maximum height", + "betterfoliage.heightMax.tooltip": "Maximum height of element", + "betterfoliage.population": "Population", + "betterfoliage.population.tooltip": "Chance (N in 64) that an eligible block will have this feature", + "betterfoliage.shaderWind": "Shader wind effects", + "betterfoliage.shaderWind.tooltip": "Apply wind effects from ShaderMod shaders to this element?", + "betterfoliage.distance": "Distance limit", + "betterfoliage.distance.tooltip": "Maximum distance from player at which to render this feature", + + "betterfoliage.rendererror": "§a[BetterFoliage]§f Error rendering block %s at position %s", + + "betterfoliage.shaders": "Shader configuration", + "betterfoliage.shaders.tooltip": "Configure integration with shaders", + "betterfoliage.shaders.leavesId": "Leaves ID", + "betterfoliage.shaders.leavesId.tooltip": "Block ID reported to shader programs for all kinds of leaves. If your shader uses a §6block.properties§e file, you'll probably need to change this to match the shader's mappings.", + "betterfoliage.shaders.grassId": "Grass ID", + "betterfoliage.shaders.grassId.tooltip": "Block ID reported to shader programs for all grasses and crops. If your shader uses a §6block.properties§e file, you'll probably need to change this to match the shader's mappings.", + + "betterfoliage.leaves": "Extra Leaves", + "betterfoliage.leaves.tooltip": "Extra round leaves on leaf blocks", + "betterfoliage.leaves.dense": "Dense mode", + "betterfoliage.leaves.dense.tooltip": "Dense mode has more round leaves", + "betterfoliage.leaves.snowEnabled": "Enable snow", + "betterfoliage.leaves.snowEnabled.tooltip": "Enable snow on extra leaves?", + "betterfoliage.leaves.hideInternal": "Hide internal leaves", + "betterfoliage.leaves.hideInternal.tooltip": "Skip rendering extra leaves if leaf block is completely surrounded by other leaves or solid blocks", + + "betterfoliage.shortGrass": "Short Grass & Mycelium", + "betterfoliage.shortGrass.tooltip": "Tufts of grass/mycelium on top of appropriate blocks", + "betterfoliage.shortGrass.useGenerated": "Use generated texture for grass", + "betterfoliage.shortGrass.useGenerated.tooltip": "Generated texture is made by slicing the tallgrass texture from the active resource pack in half", + "betterfoliage.shortGrass.myceliumEnabled": "Enable Mycelium", + "betterfoliage.shortGrass.myceliumEnabled.tooltip": "Is this feature enabled for mycelium blocks?", + "betterfoliage.shortGrass.grassEnabled": "Enable Grass", + "betterfoliage.shortGrass.grassEnabled.tooltip": "Is this feature enabled for grass blocks?", + "betterfoliage.shortGrass.snowEnabled": "Enable under snow", + "betterfoliage.shortGrass.snowEnabled.tooltip": "Enable on snowed grass blocks?", + "betterfoliage.shortGrass.saturationThreshold": "Saturation threshold", + "betterfoliage.shortGrass.saturationThreshold.tooltip": "Color saturation cutoff between \"colorless\" blocks (using biome color) and \"colorful\" blocks (using their own specific color)", + + "betterfoliage.connectedGrass": "Connected grass textures", + "betterfoliage.connectedGrass.tooltip": "Connected grass textures", + "betterfoliage.connectedGrass.enabled": "Enable", + "betterfoliage.connectedGrass.enabled.tooltip": "If there is a grass block on top of a dirt block: draw grass top texture on all grass block sides,", + "betterfoliage.connectedGrass.snowEnabled": "Enable under snow", + "betterfoliage.connectedGrass.snowEnabled.tooltip": "Enable on snowed grass blocks?", + + "betterfoliage.hangingGrass": "Hanging Grass", + "betterfoliage.hangingGrass.tooltip": "Grass tufts hanging down from the top edges of grass blocks", + "betterfoliage.hangingGrass.separation": "Separation", + "betterfoliage.hangingGrass.separation.tooltip": "How much the hanging grass stands out from the block", + + "betterfoliage.cactus": "Better Cactus", + "betterfoliage.cactus.tooltip": "Enhance cactus with extra bits and smooth shading", + "betterfoliage.cactus.sizeVariation": "Size variation", + "betterfoliage.cactus.sizeVariation.tooltip": "Amount of random variation on cactus size", + + "betterfoliage.lilypad": "Better Lilypad", + "betterfoliage.lilypad.tooltip": "Enhance lilypad with roots and occasional flowers", + "betterfoliage.lilypad.flowerChance": "Flower chance", + "betterfoliage.lilypad.flowerChance.tooltip": "Chance (N in 64) of a lilypad having a flower on it", + + "betterfoliage.reed": "Reeds", + "betterfoliage.reed.tooltip": "Reeds on dirt blocks in shallow water", + "betterfoliage.reed.biomes": "Biome List", + "betterfoliage.reed.biomes.tooltip": "Configure which biomes reeds are allowed to appear in", + "betterfoliage.reed.biomes.tooltip.element": "Should reeds appear in the %s biome?", + + "betterfoliage.algae": "Algae", + "betterfoliage.algae.tooltip": "Algae on dirt blocks in deep water", + "betterfoliage.algae.biomes": "Biome List", + "betterfoliage.algae.biomes.tooltip": "Configure which biomes algae is allowed to appear in", + "betterfoliage.algae.biomes.tooltip.element": "Should algae appear in the %s biome?", + + "betterfoliage.coral": "Coral", + "betterfoliage.coral.tooltip": "Coral on sand blocks in deep water", + "betterfoliage.coral.size": "Coral size", + "betterfoliage.coral.size.tooltip": "Size of coral bits sticking out", + "betterfoliage.coral.crustSize": "Crust size", + "betterfoliage.coral.crustSize.tooltip": "Size of the flat coral part", + "betterfoliage.coral.chance": "Coral chance", + "betterfoliage.coral.chance.tooltip": "Chance (N in 64) of a specific face of the block to show coral", + "betterfoliage.coral.biomes": "Biome List", + "betterfoliage.coral.biomes.tooltip": "Configure which biomes coral is allowed to appear in", + "betterfoliage.coral.biomes.tooltip.element": "Should coral appear in the %s biome?", + "betterfoliage.coral.shallowWater": "Shallow water coral", + "betterfoliage.coral.shallowWater.tooltip": "Should coral appear in 1 block deep water?", + + "betterfoliage.netherrack": "Netherrack Vines", + "betterfoliage.netherrack.tooltip": "Hanging Vines under netherrack", + + "betterfoliage.fallingLeaves": "Falling leaves", + "betterfoliage.fallingLeaves.tooltip": "Falling leaf particle FX emitted from the bottom of leaf blocks", + "betterfoliage.fallingLeaves.speed": "Particle speed", + "betterfoliage.fallingLeaves.speed.tooltip": "Overall particle speed", + "betterfoliage.fallingLeaves.windStrength": "Wind strength", + "betterfoliage.fallingLeaves.windStrength.tooltip": "Magnitude of wind effects in good weather (spread of normal distribution centered on 0)", + "betterfoliage.fallingLeaves.stormStrength": "Storm strength", + "betterfoliage.fallingLeaves.stormStrength.tooltip": "Additional magnitude of wind effects in rainy weather (spread of normal distribution centered on 0)", + "betterfoliage.fallingLeaves.size": "Particle size", + "betterfoliage.fallingLeaves.chance": "Particle chance", + "betterfoliage.fallingLeaves.chance.tooltip": "Chance of each random render tick hitting a leaf block to spawn a particle", + "betterfoliage.fallingLeaves.perturb": "Perturbation", + "betterfoliage.fallingLeaves.perturb.tooltip": "Magnitude of perturbation effect. Adds a corkscrew-like motion to the particle synchronized to its rotation", + "betterfoliage.fallingLeaves.lifetime": "Maximum lifetime", + "betterfoliage.fallingLeaves.lifetime.tooltip": "Maximum lifetime of particle in seconds. Minimum lifetime is 60%% of this value", + "betterfoliage.fallingLeaves.opacityHack": "Opaque particles", + "betterfoliage.fallingLeaves.opacityHack.tooltip": "Stop transparent blocks obscuring particles even when particle is in front. WARNING: may cause glitches.", + + "betterfoliage.risingSoul": "Rising souls", + "betterfoliage.risingSoul.tooltip": "Rising soul particle FX emitted from the top of soulsand blocks", + "betterfoliage.risingSoul.chance": "Particle chance", + "betterfoliage.risingSoul.chance.tooltip": "Chance of each random render tick hitting a soulsand block to spawn a particle", + "betterfoliage.risingSoul.speed": "Particle speed", + "betterfoliage.risingSoul.speed.tooltip": "Vertical speed of soul particles", + "betterfoliage.risingSoul.perturb": "Perturbation", + "betterfoliage.risingSoul.perturb.tooltip": "Magnitude of perturbation effect. Adds a corkscrew-like motion to the particle", + "betterfoliage.risingSoul.headSize": "Soul size", + "betterfoliage.risingSoul.headSize.tooltip": "Size of the soul particle", + "betterfoliage.risingSoul.trailSize": "Trail size", + "betterfoliage.risingSoul.trailSize.tooltip": "Initial size of the particle trail", + "betterfoliage.risingSoul.opacity": "Opacity", + "betterfoliage.risingSoul.opacity.tooltip": "Opacity of the particle effect", + "betterfoliage.risingSoul.sizeDecay": "Size decay", + "betterfoliage.risingSoul.sizeDecay.tooltip": "Trail particle size relative to its size in the previous tick", + "betterfoliage.risingSoul.opacityDecay": "Opacity decay", + "betterfoliage.risingSoul.opacityDecay.tooltip": "Trail particle opacity relative to its opacity in the previous tick", + "betterfoliage.risingSoul.lifetime": "Maximum lifetime", + "betterfoliage.risingSoul.lifetime.tooltip": "Maximum lifetime of particle effect in seconds. Minimum lifetime is 60%% of this value", + "betterfoliage.risingSoul.trailLength": "Trail length", + "betterfoliage.risingSoul.trailLength.tooltip": "Number of previous positions the particle remembers in ticks", + "betterfoliage.risingSoul.trailDensity": "Trail density", + "betterfoliage.risingSoul.trailDensity.tooltip": "Render every Nth previous position in the particle trail", + + "betterfoliage.roundLogs": "Round Logs", + "betterfoliage.roundLogs.tooltip": "Round Logs", + "betterfoliage.roundLogs.connectSolids": "Connect to solid", + "betterfoliage.roundLogs.connectSolids.tooltip": "Connect round blocks to solid full blocks?", + "betterfoliage.roundLogs.connectPerpendicular": "Connect to perpendicular logs", + "betterfoliage.roundLogs.connectPerpendicular.tooltip": "Connect round logs to perpendicular logs along its axis?", + "betterfoliage.roundLogs.lenientConnect": "Lenient rounding", + "betterfoliage.roundLogs.lenientConnect.tooltip": "Connect parallel round logs in an L-shape too, not just 2x2", + "betterfoliage.roundLogs.connectGrass": "Connect Grass", + "betterfoliage.roundLogs.connectGrass.tooltip": "Render grass block under trees instead of dirt if there is grass nearby", + "betterfoliage.roundLogs.radiusSmall": "Chamfer radius", + "betterfoliage.roundLogs.radiusSmall.tooltip": "How much to chop off from the log corner", + "betterfoliage.roundLogs.radiusLarge": "Connected chamfer radius", + "betterfoliage.roundLogs.radiusLarge.tooltip": "How much to chop off from the outer corner of connected logs", + "betterfoliage.roundLogs.dimming": "Dimming", + "betterfoliage.roundLogs.dimming.tooltip": "Amount to darken obscured log faces", + "betterfoliage.roundLogs.zProtection": "Z-Protection", + "betterfoliage.roundLogs.zProtection.tooltip": "Amount to scale parallel log connection bits to stop Z-fighting (flickering). Try to set it as high as possible without having glitches.", + "betterfoliage.roundLogs.defaultY": "Default to vertical", + "betterfoliage.roundLogs.defaultY.tooltip": "If true, log blocks where the orientation cannot be determined will be rendered as vertical. Otherwise, they will be rendered as cube blocks." +} diff --git a/src/main/resources/assets/betterfoliage/lang/en_us.lang b/src/main/resources/assets/betterfoliage/lang/en_us.lang deleted file mode 100644 index 2012834..0000000 --- a/src/main/resources/assets/betterfoliage/lang/en_us.lang +++ /dev/null @@ -1,250 +0,0 @@ -key.betterfoliage.gui=Open Settings - -betterfoliage.global.enabled=Enable Mod -betterfoliage.global.enabled.tooltip=If set to false, BetterFoliage will not render anything -betterfoliage.global.nVidia=nVidia GPU -betterfoliage.global.nVidia.tooltip=Specify whether you have an nVidia GPU - -betterfoliage.enabled=Enable -betterfoliage.enabled.tooltip=Is this feature enabled? -betterfoliage.hOffset=Horizontal offset -betterfoliage.hOffset.tooltip=The distance this element is shifted horizontally, in blocks -betterfoliage.vOffset=Vertical offset -betterfoliage.vOffset.tooltip=The distance this element is shifted vertically, in blocks -betterfoliage.size=Size -betterfoliage.size.tooltip=Size of this element -betterfoliage.heightMin=Minimum height -betterfoliage.heightMin.tooltip=Minimum height of element -betterfoliage.heightMax=Maximum height -betterfoliage.heightMax.tooltip=Maximum height of element -betterfoliage.population=Population -betterfoliage.population.tooltip=Chance (N in 64) that an eligible block will have this feature -betterfoliage.shaderWind=Shader wind effects -betterfoliage.shaderWind.tooltip=Apply wind effects from ShaderMod shaders to this element? -betterfoliage.distance=Distance limit -betterfoliage.distance.tooltip=Maximum distance from player at which to render this feature - -betterfoliage.rendererror=§a[BetterFoliage]§f Error rendering block %s at position %s - -betterfoliage.blocks=Block Types -betterfoliage.blocks.tooltip=Configure lists of block classes that will have specific features applied to them - -betterfoliage.blocks.dirtWhitelist=Dirt Whitelist -betterfoliage.blocks.dirtBlacklist=Dirt Blacklist -betterfoliage.blocks.dirtWhitelist.arrayEntry=%d entries -betterfoliage.blocks.dirtBlacklist.arrayEntry=%d entries -betterfoliage.blocks.dirtWhitelist.tooltip=Blocks recognized as Dirt. Has an impact on Reeds, Algae, Connected Grass -betterfoliage.blocks.dirtBlacklist.tooltip=Blocks never accepted as Dirt. Has an impact on Reeds, Algae, Connected Grass - -betterfoliage.blocks.grassClassesWhitelist=Grass Whitelist -betterfoliage.blocks.grassClassesBlacklist=Grass Blacklist -betterfoliage.blocks.grassClassesWhitelist.arrayEntry=%d entries -betterfoliage.blocks.grassClassesBlacklist.arrayEntry=%d entries -betterfoliage.blocks.grassModels=Grass Models -betterfoliage.blocks.grassModels.arrayEntry=%d entries -betterfoliage.blocks.grassWhitelist.tooltip=Blocks recognized as Grass. Has an impact on Short Grass, Connected Grass -betterfoliage.blocks.grassBlacklist.tooltip=Blocks never accepted as Grass. Has an impact on Short Grass, Connected Grass -betterfoliage.blocks.grassModels.tooltip=Models and textures recognized for grass blocks - -betterfoliage.blocks.leavesClassesWhitelist=Leaves Whitelist -betterfoliage.blocks.leavesClassesBlacklist=Leaves Blacklist -betterfoliage.blocks.leavesClassesWhitelist.arrayEntry=%d entries -betterfoliage.blocks.leavesClassesBlacklist.arrayEntry=%d entries -betterfoliage.blocks.leavesModels=Leaves Models -betterfoliage.blocks.leavesModels.arrayEntry=%d entries -betterfoliage.blocks.leavesClassesWhitelist.tooltip=Blocks recognized as Leaves. Has an impact on Extra Leaves, Falling Leaves. Leaves will render with leaves block ID in shader programs -betterfoliage.blocks.leavesClassesBlacklist.tooltip=Blocks never accepted as Leaves. Has an impact on Extra Leaves, Falling Leaves. Leaves will render with leaves block ID in shader programs -betterfoliage.blocks.leavesModels.tooltip=Models and textures recognized for leaves blocks - -betterfoliage.blocks.cropsWhitelist=Crop Whitelist -betterfoliage.blocks.cropsBlacklist=Crop Blacklist -betterfoliage.blocks.cropsWhitelist.arrayEntry=%d entries -betterfoliage.blocks.cropsBlacklist.arrayEntry=%d entries -betterfoliage.blocks.cropsWhitelist.tooltip=Blocks recognized as crops. Crops will render with tallgrass block ID in shader programs -betterfoliage.blocks.cropsBlacklist.tooltip=Blocks never accepted as crops. Crops will render with tallgrass block ID in shader programs - -betterfoliage.blocks.logClassesWhitelist=Wood Log Whitelist -betterfoliage.blocks.logClassesBlacklist=Wood Log Blacklist -betterfoliage.blocks.logClassesWhitelist.arrayEntry=%d entries -betterfoliage.blocks.logClassesBlacklist.arrayEntry=%d entries -betterfoliage.blocks.logModels=Wood Log Models -betterfoliage.blocks.logModels.arrayEntry=%d entries -betterfoliage.blocks.logClassesWhitelist.tooltip=Blocks recognized as wooden logs. Has an impact on Rounded Logs -betterfoliage.blocks.logClassesBlacklist.tooltip=Blocks never accepted as wooden logs. Has an impact on Rounded Logs -betterfoliage.blocks.logModels.tooltip=Models and textures recognized for wood log blocks - -betterfoliage.blocks.sandWhitelist=Sand Whitelist -betterfoliage.blocks.sandBlacklist=Sand Blacklist -betterfoliage.blocks.sandWhitelist.arrayEntry=%d entries -betterfoliage.blocks.sandBlacklist.arrayEntry=%d entries -betterfoliage.blocks.sandWhitelist.tooltip=Blocks recognized as Sand. Has an impact on Coral -betterfoliage.blocks.sandBlacklist.tooltip=Blocks never accepted Sand. Has an impact on Coral - -betterfoliage.blocks.lilypadWhitelist=Lilypad Whitelist -betterfoliage.blocks.lilypadBlacklist=Lilypad Blacklist -betterfoliage.blocks.lilypadWhitelist.arrayEntry=%d entries -betterfoliage.blocks.lilypadBlacklist.arrayEntry=%d entries -betterfoliage.blocks.lilypadWhitelist.tooltip=Blocks recognized as Lilypad. Has an impact on Better Lilypad -betterfoliage.blocks.lilypadBlacklist.tooltip=Blocks never accepted Lilypad. Has an impact on Better Lilypad - -betterfoliage.blocks.cactusWhitelist=Cactus Whitelist -betterfoliage.blocks.cactusBlacklist=Cactus Blacklist -betterfoliage.blocks.cactusWhitelist.arrayEntry=%d entries -betterfoliage.blocks.cactusBlacklist.arrayEntry=%d entries -betterfoliage.blocks.cactusWhitelist.tooltip=Blocks recognized as Cactus. Has an impact on Better Cactus -betterfoliage.blocks.cactusBlacklist.tooltip=Blocks never accepted Cactus. Has an impact on Better Cactus - -betterfoliage.blocks.myceliumWhitelist=Mycelium Whitelist -betterfoliage.blocks.myceliumBlacklist=Mycelium Blacklist -betterfoliage.blocks.myceliumWhitelist.arrayEntry=%d entries -betterfoliage.blocks.myceliumBlacklist.arrayEntry=%d entries -betterfoliage.blocks.myceliumWhitelist.tooltip=Blocks recognized as Mycelium. Has an impact on Better Grass -betterfoliage.blocks.myceliumBlacklist.tooltip=Blocks never accepted Mycelium. Has an impact on Better Grass - -betterfoliage.blocks.netherrackWhitelist=Netherrack Whitelist -betterfoliage.blocks.netherrackBlacklist=Netherrack Blacklist -betterfoliage.blocks.netherrackWhitelist.arrayEntry=%d entries -betterfoliage.blocks.netherrackBlacklist.arrayEntry=%d entries -betterfoliage.blocks.netherrackWhitelist.tooltip=Blocks recognized as Netherrack. Has an impact on Netherrack Vines -betterfoliage.blocks.netherrackBlacklist.tooltip=Blocks never accepted Netherrack. Has an impact on Netherrack Vines - -betterfoliage.shaders=Shader configuration -betterfoliage.shaders.tooltip=Configure integration with shaders -betterfoliage.shaders.leavesId=Leaves ID -betterfoliage.shaders.leavesId.tooltip=Block ID reported to shader programs for all kinds of leaves. If your shader uses a §6block.properties§e file, you'll probably need to change this to match the shader's mappings. -betterfoliage.shaders.grassId=Grass ID -betterfoliage.shaders.grassId.tooltip=Block ID reported to shader programs for all grasses and crops. If your shader uses a §6block.properties§e file, you'll probably need to change this to match the shader's mappings. - -betterfoliage.leaves=Extra Leaves -betterfoliage.leaves.tooltip=Extra round leaves on leaf blocks -betterfoliage.leaves.dense=Dense mode -betterfoliage.leaves.dense.tooltip=Dense mode has more round leaves -betterfoliage.leaves.snowEnabled=Enable snow -betterfoliage.leaves.snowEnabled.tooltip=Enable snow on extra leaves? -betterfoliage.leaves.hideInternal=Hide internal leaves -betterfoliage.leaves.hideInternal.tooltip=Skip rendering extra leaves if leaf block is completely surrounded by other leaves or solid blocks - -betterfoliage.shortGrass=Short Grass & Mycelium -betterfoliage.shortGrass.tooltip=Tufts of grass/mycelium on top of appropriate blocks -betterfoliage.shortGrass.useGenerated=Use generated texture for grass -betterfoliage.shortGrass.useGenerated.tooltip=Generated texture is made by slicing the tallgrass texture from the active resource pack in half -betterfoliage.shortGrass.myceliumEnabled=Enable Mycelium -betterfoliage.shortGrass.myceliumEnabled.tooltip=Is this feature enabled for mycelium blocks? -betterfoliage.shortGrass.grassEnabled=Enable Grass -betterfoliage.shortGrass.grassEnabled.tooltip=Is this feature enabled for grass blocks? -betterfoliage.shortGrass.snowEnabled=Enable under snow -betterfoliage.shortGrass.snowEnabled.tooltip=Enable on snowed grass blocks? -betterfoliage.shortGrass.saturationThreshold=Saturation threshold -betterfoliage.shortGrass.saturationThreshold.tooltip=Color saturation cutoff between "colorless" blocks (using biome color) and "colorful" blocks (using their own specific color) - -betterfoliage.hangingGrass=Hanging Grass -betterfoliage.hangingGrass.tooltip=Grass tufts hanging down from the top edges of grass blocks -betterfoliage.hangingGrass.separation=Separation -betterfoliage.hangingGrass.separation.tooltip=How much the hanging grass stands out from the block - -betterfoliage.cactus=Better Cactus -betterfoliage.cactus.tooltip=Enhance cactus with extra bits and smooth shading -betterfoliage.cactus.sizeVariation=Size variation -betterfoliage.cactus.sizeVariation.tooltip=Amount of random variation on cactus size - -betterfoliage.lilypad=Better Lilypad -betterfoliage.lilypad.tooltip=Enhance lilypad with roots and occasional flowers -betterfoliage.lilypad.flowerChance=Flower chance -betterfoliage.lilypad.flowerChance.tooltip=Chance (N in 64) of a lilypad having a flower on it - -betterfoliage.reed=Reeds -betterfoliage.reed.tooltip=Reeds on dirt blocks in shallow water -betterfoliage.reed.biomes=Biome List -betterfoliage.reed.biomes.tooltip=Configure which biomes reeds are allowed to appear in -betterfoliage.reed.biomes.tooltip.element=Should reeds appear in the %s biome? - -betterfoliage.algae=Algae -betterfoliage.algae.tooltip=Algae on dirt blocks in deep water -betterfoliage.algae.biomes=Biome List -betterfoliage.algae.biomes.tooltip=Configure which biomes algae is allowed to appear in -betterfoliage.algae.biomes.tooltip.element=Should algae appear in the %s biome? - -betterfoliage.coral=Coral -betterfoliage.coral.tooltip=Coral on sand blocks in deep water -betterfoliage.coral.size=Coral size -betterfoliage.coral.size.tooltip=Size of coral bits sticking out -betterfoliage.coral.crustSize=Crust size -betterfoliage.coral.crustSize.tooltip=Size of the flat coral part -betterfoliage.coral.chance=Coral chance -betterfoliage.coral.chance.tooltip=Chance (N in 64) of a specific face of the block to show coral -betterfoliage.coral.biomes=Biome List -betterfoliage.coral.biomes.tooltip=Configure which biomes coral is allowed to appear in -betterfoliage.coral.biomes.tooltip.element=Should coral appear in the %s biome? -betterfoliage.coral.shallowWater=Shallow water coral -betterfoliage.coral.shallowWater.tooltip=Should coral appear in 1 block deep water? - -betterfoliage.netherrack=Netherrack Vines -betterfoliage.netherrack.tooltip=Hanging Vines under netherrack - -betterfoliage.fallingLeaves=Falling leaves -betterfoliage.fallingLeaves.tooltip=Falling leaf particle FX emitted from the bottom of leaf blocks -betterfoliage.fallingLeaves.speed=Particle speed -betterfoliage.fallingLeaves.speed.tooltip=Overall particle speed -betterfoliage.fallingLeaves.windStrength=Wind strength -betterfoliage.fallingLeaves.windStrength.tooltip=Magnitude of wind effects in good weather (spread of normal distribution centered on 0) -betterfoliage.fallingLeaves.stormStrength=Storm strength -betterfoliage.fallingLeaves.stormStrength.tooltip=Additional magnitude of wind effects in rainy weather (spread of normal distribution centered on 0) -betterfoliage.fallingLeaves.size=Particle size -betterfoliage.fallingLeaves.chance=Particle chance -betterfoliage.fallingLeaves.chance.tooltip=Chance of each random render tick hitting a leaf block to spawn a particle -betterfoliage.fallingLeaves.perturb=Perturbation -betterfoliage.fallingLeaves.perturb.tooltip=Magnitude of perturbation effect. Adds a corkscrew-like motion to the particle synchronized to its rotation -betterfoliage.fallingLeaves.lifetime=Maximum lifetime -betterfoliage.fallingLeaves.lifetime.tooltip=Maximum lifetime of particle in seconds. Minimum lifetime is 60%% of this value -betterfoliage.fallingLeaves.opacityHack=Opaque particles -betterfoliage.fallingLeaves.opacityHack.tooltip=Stop transparent blocks obscuring particles even when particle is in front. WARNING: may cause glitches. - -betterfoliage.risingSoul=Rising souls -betterfoliage.risingSoul.tooltip=Rising soul particle FX emitted from the top of soulsand blocks -betterfoliage.risingSoul.chance=Particle chance -betterfoliage.risingSoul.chance.tooltip=Chance of each random render tick hitting a soulsand block to spawn a particle -betterfoliage.risingSoul.speed=Particle speed -betterfoliage.risingSoul.speed.tooltip=Vertical speed of soul particles -betterfoliage.risingSoul.perturb=Perturbation -betterfoliage.risingSoul.perturb.tooltip=Magnitude of perturbation effect. Adds a corkscrew-like motion to the particle -betterfoliage.risingSoul.headSize=Soul size -betterfoliage.risingSoul.headSize.tooltip=Size of the soul particle -betterfoliage.risingSoul.trailSize=Trail size -betterfoliage.risingSoul.trailSize.tooltip=Initial size of the particle trail -betterfoliage.risingSoul.opacity=Opacity -betterfoliage.risingSoul.opacity.tooltip=Opacity of the particle effect -betterfoliage.risingSoul.sizeDecay=Size decay -betterfoliage.risingSoul.sizeDecay.tooltip=Trail particle size relative to its size in the previous tick -betterfoliage.risingSoul.opacityDecay=Opacity decay -betterfoliage.risingSoul.opacityDecay.tooltip=Trail particle opacity relative to its opacity in the previous tick -betterfoliage.risingSoul.lifetime=Maximum lifetime -betterfoliage.risingSoul.lifetime.tooltip=Maximum lifetime of particle effect in seconds. Minimum lifetime is 60%% of this value -betterfoliage.risingSoul.trailLength=Trail length -betterfoliage.risingSoul.trailLength.tooltip=Number of previous positions the particle remembers in ticks -betterfoliage.risingSoul.trailDensity=Trail density -betterfoliage.risingSoul.trailDensity.tooltip=Render every Nth previous position in the particle trail - -betterfoliage.connectedGrass=Connected grass textures -betterfoliage.connectedGrass.enabled=Enable -betterfoliage.connectedGrass.enabled.tooltip=If there is a grass block on top of a dirt block: draw grass top texture on all grass block sides, - -betterfoliage.roundLogs=Round Logs -betterfoliage.roundLogs.tooltip=Connect round blocks to solid full blocks? -betterfoliage.roundLogs.connectSolids=Connect to solid -betterfoliage.roundLogs.connectSolids.tooltip=Connect round blocks to solid full blocks? -betterfoliage.roundLogs.connectPerpendicular=Connect to perpendicular logs -betterfoliage.roundLogs.connectPerpendicular.tooltip=Connect round logs to perpendicular logs along its axis? -betterfoliage.roundLogs.lenientConnect=Lenient rounding -betterfoliage.roundLogs.lenientConnect.tooltip=Connect parallel round logs in an L-shape too, not just 2x2 -betterfoliage.roundLogs.connectGrass=Connect Grass -betterfoliage.roundLogs.connectGrass.tooltip=Render grass block under trees instead of dirt if there is grass nearby -betterfoliage.roundLogs.radiusSmall=Chamfer radius -betterfoliage.roundLogs.radiusSmall.tooltip=How much to chop off from the log corner -betterfoliage.roundLogs.radiusLarge=Connected chamfer radius -betterfoliage.roundLogs.radiusLarge.tooltip=How much to chop off from the outer corner of connected logs -betterfoliage.roundLogs.dimming=Dimming -betterfoliage.roundLogs.dimming.tooltip=Amount to darken obscured log faces -betterfoliage.roundLogs.zProtection=Z-Protection -betterfoliage.roundLogs.zProtection.tooltip=Amount to scale parallel log connection bits to stop Z-fighting (flickering). Try to set it as high as possible without having glitches. -betterfoliage.roundLogs.defaultY=Default to vertical -betterfoliage.roundLogs.defaultY.tooltip=If true, log blocks where the orientation cannot be determined will be rendered as vertical. Otherwise, they will be rendered as cube blocks. diff --git a/src/main/resources/assets/betterfoliage/lang/ko_kr.json b/src/main/resources/assets/betterfoliage/lang/ko_kr.json new file mode 100644 index 0000000..3de7c57 --- /dev/null +++ b/src/main/resources/assets/betterfoliage/lang/ko_kr.json @@ -0,0 +1,155 @@ +{ + "key.betterfoliage.gui": "설정", + + "betterfoliage.global.enabled": "모드 활성화", + "betterfoliage.global.enabled.tooltip": "비활성화 할 경우, 환경강화모드 렌더링이 보이지 않습니다.", + + "betterfoliage.enabled": "활성화", + "betterfoliage.enabled.tooltip": "이 기능이 활성화 되어 있습니까?", + "betterfoliage.hOffset": "수평(가로) 상쇄시키다", + "betterfoliage.hOffset.tooltip": "이 성분이 블럭 수평으로 이동된다.", + "betterfoliage.vOffset": "수직(세로) 상쇄시키다", + "betterfoliage.vOffset.tooltip": "이 성분이 블럭 수직으로 이동된다.", + "betterfoliage.size": "사이즈(크기)", + "betterfoliage.size.tooltip": "사이즈(크기)의 최소", + "betterfoliage.heightMin": "최소한 높이", + "betterfoliage.heightMin.tooltip": "높이 최소한의 최소", + "betterfoliage.heightMax": "최대한 높이", + "betterfoliage.heightMax.tooltip": "높이 최대한의 최소", + "betterfoliage.population": "주민", + "betterfoliage.population.tooltip": "자격을 갖춘 블럭의 기능 확률(N 분의 64)", + "betterfoliage.shaderWind": "쉐이더 바람 효과", + "betterfoliage.shaderWind.tooltip": "바람효과를 쉐이더에 적용시키겠습니까?", + "betterfoliage.distance": "거리 제한", + "betterfoliage.distance.tooltip": "이 기능을 렌더링하는 플레이어의 최대거리", + + "betterfoliage.leaves": "잎 추가", + "betterfoliage.leaves.tooltip": "둥글게 나뭇잎을 추가시켜줍니다.", + "betterfoliage.leaves.dense": "조밀한 모드", + "betterfoliage.leaves.dense.tooltip": "조밀한 모드는 둥근 나뭇잎을 더 추가시켜줍니다.", + + "betterfoliage.shortGrass": "이쁜 잔디 & 균사체", + "betterfoliage.shortGrass.tooltip": "블록 상단에 잔디 / 균사체", + "betterfoliage.shortGrass.useGenerated": "잔디텍스쳐를 활성화 합니다.", + "betterfoliage.shortGrass.useGenerated.tooltip": "소스팩의 일부분에 활성화 되어있는 큰잔디 텍스쳐를 생성시킵니다.", + "betterfoliage.shortGrass.myceliumEnabled": "균사체 활성화", + "betterfoliage.shortGrass.myceliumEnabled.tooltip": "균사체 블록에 있는 기능을 활성화 시키겠습니까?", + "betterfoliage.shortGrass.grassEnabled": "잔디 활성화", + "betterfoliage.shortGrass.grassEnabled.tooltip": "잔디 블록에 있는 기능을 활성화 시키겠습니까?", + "betterfoliage.shortGrass.snowEnabled": "눈 활성화", + "betterfoliage.shortGrass.snowEnabled.tooltip": "잔디 블록위에 있는 눈을 활성화 시키겠습니까?", + "betterfoliage.shortGrass.saturationThreshold": "채도 임계값", + "betterfoliage.shortGrass.saturationThreshold.tooltip": "(특정 색상을 사용하여)\"무채색\"블록과 (바이옴 색을 사용하여)\"화려한\"블록 사이의 채도 차단", + + "betterfoliage.hangingGrass": "매달려있는 잔디", + "betterfoliage.hangingGrass.tooltip": "잔디 블록 상단 가장자리에서 아래로 매달려 있는 잔디 다발", + "betterfoliage.hangingGrass.separation": "분리", + "betterfoliage.hangingGrass.separation.tooltip": "잔디블럭에 매달려있는 잔디의 양 ", + + "betterfoliage.cactus": "선인장", + "betterfoliage.cactus.tooltip": "선인장의 비트 수와 부드러운 그림자를 추가", + "betterfoliage.cactus.sizeVariation": "사이즈 변화", + "betterfoliage.cactus.sizeVariation.tooltip": "선인장의 사이즈 크기를 무작위 변화 시킵니다.", + + "betterfoliage.lilypad": "연꽃잎", + "betterfoliage.lilypad.tooltip": "연꽃의 뿌리와 약간의 꽃 추가", + "betterfoliage.lilypad.flowerChance": "꽃 확률", + "betterfoliage.lilypad.flowerChance.tooltip": "연꽃 위에 있는 꽃 확률(N 분의 64)", + + "betterfoliage.reed": "갈대", + "betterfoliage.reed.tooltip": "물 속에서 흙블럭 위에 있는 갈대", + "betterfoliage.reed.biomes": "바이옴 리스트", + "betterfoliage.reed.biomes.tooltip": "갈대를 바이옴에 따라 표시", + "betterfoliage.reed.biomes.tooltip.element": "갈대를 %s 바이옴에 따라 나타내시겠습니까? ", + + "betterfoliage.algae": "해조류", + "betterfoliage.algae.tooltip": "깊은 물 속 흙 블럭 위에 있는 해조류", + "betterfoliage.algae.biomes": "바이옴 리스트", + "betterfoliage.algae.biomes.tooltip": "해조류를 바이옴에 따라 표시", + "betterfoliage.algae.biomes.tooltip.element": "해조류를 %s 바이옴에 따라 나타내시겠습니까? ", + + "betterfoliage.coral": "산호", + "betterfoliage.coral.tooltip": "깊은 물 속 모래 블럭 위에있는 산호", + "betterfoliage.coral.size": "산호 사이즈(크기)", + "betterfoliage.coral.size.tooltip": "산호 이미지만큼 적용", + "betterfoliage.coral.crustSize": "껍질 크기", + "betterfoliage.coral.crustSize.tooltip": "산호 부분의 크기 ", + "betterfoliage.coral.chance": "산호 확률", + "betterfoliage.coral.chance.tooltip": "산호를 특정블록에 표시하는 확률(N 분의 64)", + "betterfoliage.coral.biomes": "바이옴 리스트", + "betterfoliage.coral.biomes.tooltip": "산호를 바이옴에 따라 표시", + "betterfoliage.coral.biomes.tooltip.element": "산호를 %s 바이옴에 따라 나타내시겠습니까?", + "betterfoliage.coral.shallowWater": "얕은 물 산호", + "betterfoliage.coral.shallowWater.tooltip": "산호를 깊은 물에 표시하시겠습니까?", + + "betterfoliage.netherrack": "네더랙 덩굴", + "betterfoliage.netherrack.tooltip": "네더랙에 매달려있는 덩굴", + + "betterfoliage.fallingLeaves": "떨어지는 나뭇잎", + "betterfoliage.fallingLeaves.tooltip": "잎 블록에서 바닥으로 떨어지는 잎 파티클", + "betterfoliage.fallingLeaves.speed": "파티클 속도", + "betterfoliage.fallingLeaves.speed.tooltip": "전체 파티클 속도", + "betterfoliage.fallingLeaves.windStrength": "바람 세기", + "betterfoliage.fallingLeaves.windStrength.tooltip": "날씨 바람 추가효과 (0을 중심으로 정규분포의 확산)", + "betterfoliage.fallingLeaves.stormStrength": "폭풍 세기", + "betterfoliage.fallingLeaves.stormStrength.tooltip": "비 날씨에 바람 추가효과 (0을 중심으로 정규분포의 확산)", + "betterfoliage.fallingLeaves.size": "파티클 크기", + "betterfoliage.fallingLeaves.chance": "파티클 확률", + "betterfoliage.fallingLeaves.chance.tooltip": "잎 파티클 랜덤 확률 설정", + "betterfoliage.fallingLeaves.perturb": "움직임", + "betterfoliage.fallingLeaves.perturb.tooltip": "움직임 효과의 크기. 코르크 같은 움직임을 추가합니다.", + "betterfoliage.fallingLeaves.lifetime": "파티클 지속시간", + "betterfoliage.fallingLeaves.lifetime.tooltip": "최대 파티클 지속시간을 설정합니다. 최소 지속시간은 60%입니다.", + "betterfoliage.fallingLeaves.opacityHack": "불투명 파티클", + "betterfoliage.fallingLeaves.opacityHack.tooltip": "파티클이 앞에 있어도 파티클을 가리는 투명블럭을 없앱니다. 경고: 오류주의", + + "betterfoliage.risingSoul": "소울 상승", + "betterfoliage.risingSoul.tooltip": "소울 블럭에서 올라오는 파티클", + "betterfoliage.risingSoul.chance": "파티클 수정", + "betterfoliage.risingSoul.chance.tooltip": "소울 파티클 랜덤 확률 설정", + "betterfoliage.risingSoul.speed": "파티클 속도", + "betterfoliage.risingSoul.speed.tooltip": "파티클 속도", + "betterfoliage.risingSoul.perturb": "움직임", + "betterfoliage.risingSoul.perturb.tooltip": "움직임 효과의 크기. 코르크 같은 움직임을 추가합니다.", + "betterfoliage.risingSoul.headSize": "소울 크기", + "betterfoliage.risingSoul.headSize.tooltip": "소울 파티클의 크기", + "betterfoliage.risingSoul.trailSize": "자취 사이즈", + "betterfoliage.risingSoul.trailSize.tooltip": "자취의 크기", + "betterfoliage.risingSoul.opacity": "불투명", + "betterfoliage.risingSoul.opacity.tooltip": "파티클의 불투명", + "betterfoliage.risingSoul.sizeDecay": "크기 감소", + "betterfoliage.risingSoul.sizeDecay.tooltip": "상대적인 자취 파티클 크기", + "betterfoliage.risingSoul.opacityDecay": "불투명 감소", + "betterfoliage.risingSoul.opacityDecay.tooltip": "상대적인 입자의 파티클 불투명도", + "betterfoliage.risingSoul.lifetime": "최대 지속시간", + "betterfoliage.risingSoul.lifetime.tooltip": "최대 파티클 지속시간을 설정합니다. 최소 지속시간은 60%입니다.", + "betterfoliage.risingSoul.trailLength": "자취의 세기", + "betterfoliage.risingSoul.trailLength.tooltip": "이전 파티클 틱으로 자취를 생성합니다.", + "betterfoliage.risingSoul.trailDensity": "자취의 밀도", + "betterfoliage.risingSoul.trailDensity.tooltip": "파티클 자취를 모두 렌더링 합니다.", + + "betterfoliage.connectedGrass": "잔디 연결 텍스쳐", + "betterfoliage.connectedGrass.enabled": "활성화", + "betterfoliage.connectedGrass.enabled.tooltip": "잔디블록이 흙블록 위에 있을 경우 잔디블록 윗텍스쳐를 옆텍스쳐에 전부 씌웁니다.", + + "betterfoliage.roundLogs": "둥근 나무", + "betterfoliage.roundLogs.tooltip": "둥근부분을 블럭과 연결.", + "betterfoliage.roundLogs.connectSolids": "블럭과 연결", + "betterfoliage.roundLogs.connectSolids.tooltip": "둥근부분을 블럭과 연결.", + "betterfoliage.roundLogs.connectPerpendicular": "나무 세로부분과 연결", + "betterfoliage.roundLogs.connectPerpendicular.tooltip": "나무 세로부분을 나무부분끼리 연결", + "betterfoliage.roundLogs.lenientConnect": "부드럽게 둥글게 연결", + "betterfoliage.roundLogs.lenientConnect.tooltip": "2x2사이즈처럼 나무 평형된 부분끼리 서로 연결합니다.", + "betterfoliage.roundLogs.connectGrass": "잔디 연결 텍스쳐", + "betterfoliage.roundLogs.connectGrass.tooltip": "잔디가 근처에 있을 경우 나무 아래 잔디 블록을 렌더링", + "betterfoliage.roundLogs.radiusSmall": "모서리 깎는 반지름", + "betterfoliage.roundLogs.radiusSmall.tooltip": "나무 모서리 깎는 정도", + "betterfoliage.roundLogs.radiusLarge": "모서리 깎는 부분 연결", + "betterfoliage.roundLogs.radiusLarge.tooltip": "나무 모서리 부분을 연결", + "betterfoliage.roundLogs.dimming": "조광", + "betterfoliage.roundLogs.dimming.tooltip": "나무 표면부분을 어둡게하는 양", + "betterfoliage.roundLogs.zProtection": "Z-Protection", + "betterfoliage.roundLogs.zProtection.tooltip": "Amount to scale parallel log connection bits to stop Z-fighting (flickering). Try to set it as high as possible without having glitches.", + "betterfoliage.roundLogs.defaultY": "수직선에대한 기본값", + "betterfoliage.roundLogs.defaultY.tooltip": "true 일경우, 나무 블럭이 수직선에대한 렌더링을 할수가 없습니다. 그렇지 아니하면, 네모난 블럭으로 렌더링 될것임니다." +} diff --git a/src/main/resources/assets/betterfoliage/lang/ko_kr.lang b/src/main/resources/assets/betterfoliage/lang/ko_kr.lang deleted file mode 100644 index 7003d63..0000000 --- a/src/main/resources/assets/betterfoliage/lang/ko_kr.lang +++ /dev/null @@ -1,216 +0,0 @@ -key.betterfoliage.gui=설정 - -betterfoliage.global.enabled=모드 활성화 -betterfoliage.global.enabled.tooltip=비활성화 할 경우, 환경강화모드 렌더링이 보이지 않습니다. - -betterfoliage.enabled=활성화 -betterfoliage.enabled.tooltip=이 기능이 활성화 되어 있습니까? -betterfoliage.hOffset=수평(가로) 상쇄시키다 -betterfoliage.hOffset.tooltip=이 성분이 블럭 수평으로 이동된다. -betterfoliage.vOffset=수직(세로) 상쇄시키다 -betterfoliage.vOffset.tooltip=이 성분이 블럭 수직으로 이동된다. -betterfoliage.size=사이즈(크기) -betterfoliage.size.tooltip=사이즈(크기)의 최소 -betterfoliage.heightMin=최소한 높이 -betterfoliage.heightMin.tooltip=높이 최소한의 최소 -betterfoliage.heightMax=최대한 높이 -betterfoliage.heightMax.tooltip=높이 최대한의 최소 -betterfoliage.population=주민 -betterfoliage.population.tooltip=자격을 갖춘 블럭의 기능 확률(N 분의 64) -betterfoliage.shaderWind=쉐이더 바람 효과 -betterfoliage.shaderWind.tooltip=바람효과를 쉐이더에 적용시키겠습니까? -betterfoliage.distance=거리 제한 -betterfoliage.distance.tooltip=이 기능을 렌더링하는 플레이어의 최대거리 - -betterfoliage.blocks=블록 타입 -betterfoliage.blocks.tooltip=세팅 된 것에 따라 블록이 바뀔 것입니다. - -betterfoliage.blocks.dirtWhitelist=흙 허용목록 -betterfoliage.blocks.dirtBlacklist=흙 차단목록 -betterfoliage.blocks.dirtWhitelist.arrayEntry=%d entries -betterfoliage.blocks.dirtBlacklist.arrayEntry=%d entries - -betterfoliage.blocks.grassWhitelist=잔디 허용목록 -betterfoliage.blocks.grassBlacklist=잔디 차단목록 -betterfoliage.blocks.grassWhitelist.arrayEntry=%d entries -betterfoliage.blocks.grassBlacklist.arrayEntry=%d entries - -betterfoliage.blocks.leavesWhitelist=잎 허용목록 -betterfoliage.blocks.leavesBlacklist=잎 차단목록 -betterfoliage.blocks.leavesWhitelist.arrayEntry=%d entries -betterfoliage.blocks.leavesBlacklist.arrayEntry=%d entries - -betterfoliage.blocks.cropsWhitelist=농작물 허용목록 -betterfoliage.blocks.cropsBlacklist=농작물 차단목록 -betterfoliage.blocks.cropsWhitelist.arrayEntry=%d entries -betterfoliage.blocks.cropsBlacklist.arrayEntry=%d entries - -betterfoliage.blocks.logsWhitelist=나무 허용목록 -betterfoliage.blocks.logsBlacklist=나무 차단목록 -betterfoliage.blocks.logsWhitelist.arrayEntry=%d entries -betterfoliage.blocks.logsBlacklist.arrayEntry=%d entries - -betterfoliage.blocks.sandWhitelist=모래 허용목록 -betterfoliage.blocks.sandBlacklist=모래 차단목록 -betterfoliage.blocks.sandWhitelist.arrayEntry=%d entries -betterfoliage.blocks.sandBlacklist.arrayEntry=%d entries - -betterfoliage.blocks.lilypadWhitelist=연꽃 허용목록 -betterfoliage.blocks.lilypadBlacklist=연꽃 차단목록 -betterfoliage.blocks.lilypadWhitelist.arrayEntry=%d entries -betterfoliage.blocks.lilypadBlacklist.arrayEntry=%d entries - -betterfoliage.blocks.cactusWhitelist=선인장 허용목록 -betterfoliage.blocks.cactusBlacklist=선인장 차단목록 -betterfoliage.blocks.cactusWhitelist.arrayEntry=%d entries -betterfoliage.blocks.cactusBlacklist.arrayEntry=%d entries - - -betterfoliage.blocks.dirtWhitelist.tooltip=흙으로 인식됩니다. 갈대, 조류, 잔디 텍스쳐 연결에 영향을 줍니다. -betterfoliage.blocks.dirtBlacklist.tooltip=흙으로 인식 되지 않습니다. 갈대, 조류, 잔디 텍스쳐 연결에 영향을 주지 않습니다. -betterfoliage.blocks.grassWhitelist.tooltip=잔디로 인식됩니다. 짧은 잔디, 잔디 텍스쳐 연결에 영향을 줍니다. -betterfoliage.blocks.grassBlacklist.tooltip=잔디로 인식 되지 않습니다. 짧은 잔디, 잔디 텍스쳐 연결에 영향을 주지 않습니다. -betterfoliage.blocks.leavesWhitelist.tooltip=잎으로 인식됩니다. 추가 잎, 떨어지는 잎에 영향을 줍니다. -betterfoliage.blocks.leavesBlacklist.tooltip=잎으로 인식 되지 않습니다. 추가 잎, 떨어지는 잎에 영향을 주지 않습니다. -betterfoliage.blocks.cropsWhitelist.tooltip=농작물로 인식됩니다. 농작물은 쉐이더 적용하면 큰잔디로 렌더링 됩니다. -betterfoliage.blocks.cropsBlacklist.tooltip=농작물로 인식 되지 않습니다. 농작물은 쉐이더 적용하면 큰잔디로 렌더링 되지 않습니다. -betterfoliage.blocks.logsWhitelist.tooltip=나무로 인식됩니다. 둥근 나무에 영향을 줍니다. -betterfoliage.blocks.logsBlacklist.tooltip=나무로 인식 되지 않습니다. 둥근 나무에 영향을 주지 않습니다. -betterfoliage.blocks.sandWhitelist.tooltip=모래로 인식됩니다. 산호에 영향을 줍니다 -betterfoliage.blocks.sandBlacklist.tooltip=모래로 인식되지 않습니다. 산호에 영향을 주지 않습니다. -betterfoliage.blocks.lilypadWhitelist.tooltip=연꽃으로 인식됩니다. 보다 나은 연꽃에 영향을 줍니다. -betterfoliage.blocks.lilypadBlacklist.tooltip=연꽃으로 인식되지 않습니다. 보다 나은 연꽃에 영향을 주지 않습니다. -betterfoliage.blocks.cactusWhitelist.tooltip=선인장으로 인식됩니다. 보다 나은 선인장에 영향을 줍니다. -betterfoliage.blocks.cactusBlacklist.tooltip=선인장으로 인식되지 않습니다. 보다 나은 선인장에 영향을 주지 않습니다. - -betterfoliage.leaves=잎 추가 -betterfoliage.leaves.tooltip=둥글게 나뭇잎을 추가시켜줍니다. -betterfoliage.leaves.dense=조밀한 모드 -betterfoliage.leaves.dense.tooltip=조밀한 모드는 둥근 나뭇잎을 더 추가시켜줍니다. - -betterfoliage.shortGrass=이쁜 잔디 & 균사체 -betterfoliage.shortGrass.tooltip=블록 상단에 잔디 / 균사체 -betterfoliage.shortGrass.useGenerated=잔디텍스쳐를 활성화 합니다. -betterfoliage.shortGrass.useGenerated.tooltip=소스팩의 일부분에 활성화 되어있는 큰잔디 텍스쳐를 생성시킵니다. -betterfoliage.shortGrass.myceliumEnabled=균사체 활성화 -betterfoliage.shortGrass.myceliumEnabled.tooltip=균사체 블록에 있는 기능을 활성화 시키겠습니까? -betterfoliage.shortGrass.grassEnabled=잔디 활성화 -betterfoliage.shortGrass.grassEnabled.tooltip=잔디 블록에 있는 기능을 활성화 시키겠습니까? -betterfoliage.shortGrass.snowEnabled=눈 활성화 -betterfoliage.shortGrass.snowEnabled.tooltip=잔디 블록위에 있는 눈을 활성화 시키겠습니까? -betterfoliage.shortGrass.saturationThreshold=채도 임계값 -betterfoliage.shortGrass.saturationThreshold.tooltip=(특정 색상을 사용하여)"무채색"블록과 (바이옴 색을 사용하여)"화려한"블록 사이의 채도 차단 - -betterfoliage.hangingGrass=매달려있는 잔디 -betterfoliage.hangingGrass.tooltip=잔디 블록 상단 가장자리에서 아래로 매달려 있는 잔디 다발 -betterfoliage.hangingGrass.separation=분리 -betterfoliage.hangingGrass.separation.tooltip=잔디블럭에 매달려있는 잔디의 양 - -betterfoliage.cactus=선인장 -betterfoliage.cactus.tooltip=선인장의 비트 수와 부드러운 그림자를 추가 -betterfoliage.cactus.sizeVariation=사이즈 변화 -betterfoliage.cactus.sizeVariation.tooltip=선인장의 사이즈 크기를 무작위 변화 시킵니다. - -betterfoliage.lilypad=연꽃잎 -betterfoliage.lilypad.tooltip=연꽃의 뿌리와 약간의 꽃 추가 -betterfoliage.lilypad.flowerChance=꽃 확률 -betterfoliage.lilypad.flowerChance.tooltip=연꽃 위에 있는 꽃 확률(N 분의 64) - -betterfoliage.reed=갈대 -betterfoliage.reed.tooltip=물 속에서 흙블럭 위에 있는 갈대 -betterfoliage.reed.biomes=바이옴 리스트 -betterfoliage.reed.biomes.tooltip=갈대를 바이옴에 따라 표시 -betterfoliage.reed.biomes.tooltip.element=갈대를 %s 바이옴에 따라 나타내시겠습니까? - -betterfoliage.algae=해조류 -betterfoliage.algae.tooltip=깊은 물 속 흙 블럭 위에 있는 해조류 -betterfoliage.algae.biomes=바이옴 리스트 -betterfoliage.algae.biomes.tooltip=해조류를 바이옴에 따라 표시 -betterfoliage.algae.biomes.tooltip.element=해조류를 %s 바이옴에 따라 나타내시겠습니까? - -betterfoliage.coral=산호 -betterfoliage.coral.tooltip=깊은 물 속 모래 블럭 위에있는 산호 -betterfoliage.coral.size=산호 사이즈(크기) -betterfoliage.coral.size.tooltip=산호 이미지만큼 적용 -betterfoliage.coral.crustSize=껍질 크기 -betterfoliage.coral.crustSize.tooltip=산호 부분의 크기 -betterfoliage.coral.chance=산호 확률 -betterfoliage.coral.chance.tooltip=산호를 특정블록에 표시하는 확률(N 분의 64) -betterfoliage.coral.biomes=바이옴 리스트 -betterfoliage.coral.biomes.tooltip=산호를 바이옴에 따라 표시 -betterfoliage.coral.biomes.tooltip.element=산호를 %s 바이옴에 따라 나타내시겠습니까? -betterfoliage.coral.shallowWater=얕은 물 산호 -betterfoliage.coral.shallowWater.tooltip=산호를 깊은 물에 표시하시겠습니까? - -betterfoliage.netherrack=네더랙 덩굴 -betterfoliage.netherrack.tooltip=네더랙에 매달려있는 덩굴 - -betterfoliage.fallingLeaves=떨어지는 나뭇잎 -betterfoliage.fallingLeaves.tooltip=잎 블록에서 바닥으로 떨어지는 잎 파티클 -betterfoliage.fallingLeaves.speed=파티클 속도 -betterfoliage.fallingLeaves.speed.tooltip=전체 파티클 속도 -betterfoliage.fallingLeaves.windStrength=바람 세기 -betterfoliage.fallingLeaves.windStrength.tooltip=날씨 바람 추가효과 (0을 중심으로 정규분포의 확산) -betterfoliage.fallingLeaves.stormStrength=폭풍 세기 -betterfoliage.fallingLeaves.stormStrength.tooltip=비 날씨에 바람 추가효과 (0을 중심으로 정규분포의 확산) -betterfoliage.fallingLeaves.size=파티클 크기 -betterfoliage.fallingLeaves.chance=파티클 확률 -betterfoliage.fallingLeaves.chance.tooltip=잎 파티클 랜덤 확률 설정 -betterfoliage.fallingLeaves.perturb=움직임 -betterfoliage.fallingLeaves.perturb.tooltip=움직임 효과의 크기. 코르크 같은 움직임을 추가합니다. -betterfoliage.fallingLeaves.lifetime=파티클 지속시간 -betterfoliage.fallingLeaves.lifetime.tooltip=최대 파티클 지속시간을 설정합니다. 최소 지속시간은 60%입니다. -betterfoliage.fallingLeaves.opacityHack=불투명 파티클 -betterfoliage.fallingLeaves.opacityHack.tooltip=파티클이 앞에 있어도 파티클을 가리는 투명블럭을 없앱니다. 경고: 오류주의 - -betterfoliage.risingSoul=소울 상승 -betterfoliage.risingSoul.tooltip=소울 블럭에서 올라오는 파티클 -betterfoliage.risingSoul.chance=파티클 수정 -betterfoliage.risingSoul.chance.tooltip=소울 파티클 랜덤 확률 설정 -betterfoliage.risingSoul.speed=파티클 속도 -betterfoliage.risingSoul.speed.tooltip=파티클 속도 -betterfoliage.risingSoul.perturb=움직임 -betterfoliage.risingSoul.perturb.tooltip=움직임 효과의 크기. 코르크 같은 움직임을 추가합니다. -betterfoliage.risingSoul.headSize=소울 크기 -betterfoliage.risingSoul.headSize.tooltip=소울 파티클의 크기 -betterfoliage.risingSoul.trailSize=자취 사이즈 -betterfoliage.risingSoul.trailSize.tooltip=자취의 크기 -betterfoliage.risingSoul.opacity=불투명 -betterfoliage.risingSoul.opacity.tooltip=파티클의 불투명 -betterfoliage.risingSoul.sizeDecay=크기 감소 -betterfoliage.risingSoul.sizeDecay.tooltip=상대적인 자취 파티클 크기 -betterfoliage.risingSoul.opacityDecay=불투명 감소 -betterfoliage.risingSoul.opacityDecay.tooltip=상대적인 입자의 파티클 불투명도 -betterfoliage.risingSoul.lifetime=최대 지속시간 -betterfoliage.risingSoul.lifetime.tooltip=최대 파티클 지속시간을 설정합니다. 최소 지속시간은 60%입니다. -betterfoliage.risingSoul.trailLength=자취의 세기 -betterfoliage.risingSoul.trailLength.tooltip=이전 파티클 틱으로 자취를 생성합니다. -betterfoliage.risingSoul.trailDensity=자취의 밀도 -betterfoliage.risingSoul.trailDensity.tooltip=파티클 자취를 모두 렌더링 합니다. - -betterfoliage.connectedGrass=잔디 연결 텍스쳐 -betterfoliage.connectedGrass.enabled=활성화 -betterfoliage.connectedGrass.enabled.tooltip=잔디블록이 흙블록 위에 있을 경우 잔디블록 윗텍스쳐를 옆텍스쳐에 전부 씌웁니다. - -betterfoliage.roundLogs=둥근 나무 -betterfoliage.roundLogs.tooltip=둥근부분을 블럭과 연결. -betterfoliage.roundLogs.connectSolids=블럭과 연결 -betterfoliage.roundLogs.connectSolids.tooltip=둥근부분을 블럭과 연결. -betterfoliage.roundLogs.connectPerpendicular=나무 세로부분과 연결 -betterfoliage.roundLogs.connectPerpendicular.tooltip=나무 세로부분을 나무부분끼리 연결 -betterfoliage.roundLogs.lenientConnect=부드럽게 둥글게 연결 -betterfoliage.roundLogs.lenientConnect.tooltip=2x2사이즈처럼 나무 평형된 부분끼리 서로 연결합니다. -betterfoliage.roundLogs.connectGrass=잔디 연결 텍스쳐 -betterfoliage.roundLogs.connectGrass.tooltip=잔디가 근처에 있을 경우 나무 아래 잔디 블록을 렌더링 -betterfoliage.roundLogs.radiusSmall=모서리 깎는 반지름 -betterfoliage.roundLogs.radiusSmall.tooltip=나무 모서리 깎는 정도 -betterfoliage.roundLogs.radiusLarge=모서리 깎는 부분 연결 -betterfoliage.roundLogs.radiusLarge.tooltip=나무 모서리 부분을 연결 -betterfoliage.roundLogs.dimming=조광 -betterfoliage.roundLogs.dimming.tooltip=나무 표면부분을 어둡게하는 양 -betterfoliage.roundLogs.zProtection=Z-Protection -betterfoliage.roundLogs.zProtection.tooltip=Amount to scale parallel log connection bits to stop Z-fighting (flickering). Try to set it as high as possible without having glitches. -betterfoliage.roundLogs.defaultY=수직선에대한 기본값 -betterfoliage.roundLogs.defaultY.tooltip=true 일경우, 나무 블럭이 수직선에대한 렌더링을 할수가 없습니다. 그렇지 아니하면, 네모난 블럭으로 렌더링 될것임니다. - -# Translate by IS_Jump for feedback mail acarus22@gmail.com \ No newline at end of file diff --git a/src/main/resources/assets/betterfoliage/lang/ru_ru.json b/src/main/resources/assets/betterfoliage/lang/ru_ru.json new file mode 100644 index 0000000..308621c --- /dev/null +++ b/src/main/resources/assets/betterfoliage/lang/ru_ru.json @@ -0,0 +1,154 @@ +{ + "key.betterfoliage.gui": "Открыть настройки", + + "betterfoliage.global.enabled": "Включить мод", + "betterfoliage.global.enabled.tooltip": "Если установлено на false, BetterFoliage не будет ничего рендерить", + + "betterfoliage.enabled": "Включить", + "betterfoliage.enabled.tooltip": "Включена ли эта функция?", + "betterfoliage.hOffset": "Горизонтальное смещение", + "betterfoliage.hOffset.tooltip": "Дистанция горизонтального смещения этого элемента в блоках", + "betterfoliage.vOffset": "Вертикальное смещение", + "betterfoliage.vOffset.tooltip": "Дистанция вертикального смещения этого элемента в блоках", + "betterfoliage.size": "Размер", + "betterfoliage.size.tooltip": "Размер этого элемента", + "betterfoliage.heightMin": "Минимальная высота", + "betterfoliage.heightMin.tooltip": "Минимальная высота элемента", + "betterfoliage.heightMax": "Максимальная высота", + "betterfoliage.heightMax.tooltip": "Максимальная высота этого элемента", + "betterfoliage.population": "Популяция", + "betterfoliage.population.tooltip": "Шанс (N к 64), что блок будет иметь эту функцию", + "betterfoliage.shaderWind": "Шейдерные эффекты ветра", + "betterfoliage.shaderWind.tooltip": "Применить эффекты ветра с ShaderMod для этого элемента?", + "betterfoliage.distance": "Лимит дистанции", + "betterfoliage.distance.tooltip": "Максимальное расстояние от игрока для рендеринга этой функции", + + "betterfoliage.leaves": "Улучшенная листва", + "betterfoliage.leaves.tooltip": "Дополнительное округление листьев на блоках листвы.", + "betterfoliage.leaves.dense": "Плотный режим", + "betterfoliage.leaves.dense.tooltip": "Плотный режим имеет более округлые листья.", + + "betterfoliage.shortGrass": "Низкая трава и мицелий", + "betterfoliage.shortGrass.tooltip": "Пучки травы / мицелия на поверхности соответствующих блоков.", + "betterfoliage.shortGrass.useGenerated": "Использовать сгенерированные текстуры для травы.", + "betterfoliage.shortGrass.useGenerated.tooltip": "Сгенерированная текстура создается путём разрезания текстуры высокой травы с активного ресурс-пака пополам.", + "betterfoliage.shortGrass.myceliumEnabled": "Включить мицелий", + "betterfoliage.shortGrass.myceliumEnabled.tooltip": "Включить эту особенность для блоков мицелия?", + "betterfoliage.shortGrass.grassEnabled": "Включить траву", + "betterfoliage.shortGrass.grassEnabled.tooltip": "Включить эту особенность для блоков травы?", + "betterfoliage.shortGrass.snowEnabled": "Включить траву под снегом", + "betterfoliage.shortGrass.snowEnabled.tooltip": "Включить эту особенность для заснеженных блоков травы?", + "betterfoliage.shortGrass.saturationThreshold": "Порог насыщения", + "betterfoliage.shortGrass.saturationThreshold.tooltip": "Насыщенность цвета разделяется на: \"обесцвеченные\" блоки (используя цвет биома) и \"цветные\" блоки (используя их собственный цвет)", + + "betterfoliage.hangingGrass": "Висячая трава", + "betterfoliage.hangingGrass.tooltip": "Пучки травы свисают вниз с верхних краев блока травы.", + "betterfoliage.hangingGrass.separation": "Разделение", + "betterfoliage.hangingGrass.separation.tooltip": "Как долго подвесная трава выделяется из блока?", + + "betterfoliage.cactus": "Улучшенные кактусы", + "betterfoliage.cactus.tooltip": "Улучшить кактус с дополнительными частицами и плавными тенями.", + "betterfoliage.cactus.sizeVariation": "Вариации размера", + "betterfoliage.cactus.sizeVariation.tooltip": "Количество случайных изменений в размере кактусов.", + + "betterfoliage.lilypad": "Улучшенные кувшинки", + "betterfoliage.lilypad.tooltip": "Добавить кувшинкам корни и цветы.", + "betterfoliage.lilypad.flowerChance": "Шанс появления цветов", + "betterfoliage.lilypad.flowerChance.tooltip": "Шанс (N к 64) появления цветка на кувшинке.", + + "betterfoliage.reed": "Камыши", + "betterfoliage.reed.tooltip": "Мелководные камыши на блоках земли.", + "betterfoliage.reed.biomes": "Список биомов", + "betterfoliage.reed.biomes.tooltip": "Настройка биомов, в которых камышам разрешено появляться.", + "betterfoliage.reed.biomes.tooltip.element": "Должны ли камыши встречаться в %s биоме?", + + "betterfoliage.algae": "Морские водоросли", + "betterfoliage.algae.tooltip": "Глубоководные водоросли на блоках земли.", + "betterfoliage.algae.biomes": "Список биомов", + "betterfoliage.algae.biomes.tooltip": "Настройка биомов, в которых водорослям разрешено появляться.", + "betterfoliage.algae.biomes.tooltip.element": "Должны ли водоросли встречаться в %s биоме?", + + "betterfoliage.coral": "Кораллы", + "betterfoliage.coral.tooltip": "Кораллы на песчаных блоках в глубокой воде.", + "betterfoliage.coral.size": "Размер кораллов", + "betterfoliage.coral.size.tooltip": "Размер торчащих частичек кораллов.", + "betterfoliage.coral.crustSize": "Размер коры", + "betterfoliage.coral.crustSize.tooltip": "Размер плоской части кораллов.", + "betterfoliage.coral.chance": "Шанс кораллов", + "betterfoliage.coral.chance.tooltip": "Шанс (N in 64) появления кораллов на определенном блоке.", + "betterfoliage.coral.biomes": "Список биомов", + "betterfoliage.coral.biomes.tooltip": "Настройка биомов, в которых разрешено появляться кораллам.", + "betterfoliage.coral.biomes.tooltip.element": "Должны ли кораллы появляться в %s биоме?", + "betterfoliage.coral.shallowWater": "Мелководные кораллы", + "betterfoliage.coral.shallowWater.tooltip": "Должны ли появляться кораллы в воде, глубиной в 1 блок?", + + "betterfoliage.netherrack": "Адская лоза", + "betterfoliage.netherrack.tooltip": "Висячая лоза под адским камнем", + + "betterfoliage.fallingLeaves": "Падающие листья", + "betterfoliage.fallingLeaves.tooltip": "Падение FX частиц листвы исходящие из низа блоков листвы", + "betterfoliage.fallingLeaves.speed": "Скорость частиц", + "betterfoliage.fallingLeaves.speed.tooltip": "Общая скорость частиц", + "betterfoliage.fallingLeaves.windStrength": "Сила ветра", + "betterfoliage.fallingLeaves.windStrength.tooltip": "Величина воздействия ветра в хорошую погоду (распространение нормального распределения сосредоточено на 0)", + "betterfoliage.fallingLeaves.stormStrength": "Сила шторма", + "betterfoliage.fallingLeaves.stormStrength.tooltip": "Дополнительная величина воздействия ветра в ненастную погоду (распространение нормального распределения сосредоточено на 0)", + "betterfoliage.fallingLeaves.size": "Размер частиц", + "betterfoliage.fallingLeaves.chance": "Шанс частиц", + "betterfoliage.fallingLeaves.chance.tooltip": "Вероятность каждого случайного рендеринга в такт (1/20 секунды) опадения частицы блока листвы.", + "betterfoliage.fallingLeaves.perturb": "Возмущение", + "betterfoliage.fallingLeaves.perturb.tooltip": "Величина эффекта возмущений. Добавляет штопорообразное движение к частице синхронизированной с его вращением.", + "betterfoliage.fallingLeaves.lifetime": "Максимальное время жизни", + "betterfoliage.fallingLeaves.lifetime.tooltip": "Максимальное время жизни частиц. Минимальное время жизни - 60%% от этого значения.", + "betterfoliage.fallingLeaves.opacityHack": "Непрозрачные частицы", + "betterfoliage.fallingLeaves.opacityHack.tooltip": "Запретить прозрачным блокам затемнять частицы даже тогда, когда частицы впереди. ВНИМАНИЕ: может спровоцировать баги.", + + "betterfoliage.risingSoul": "Адские духи", + "betterfoliage.risingSoul.tooltip": "Количество душ-частиц FX, испускаемых из верхней части блоков песка душ.", + "betterfoliage.risingSoul.chance": "Шанс частиц", + "betterfoliage.risingSoul.chance.tooltip": "Частота генерации частиц на песке душ.", + "betterfoliage.risingSoul.speed": "Скорость частиц", + "betterfoliage.risingSoul.speed.tooltip": "Вертикальная скорость движения частиц духов.", + "betterfoliage.risingSoul.perturb": "Возмущение", + "betterfoliage.risingSoul.perturb.tooltip": "Магнитуда эффекта возмущений. Добавляет штопороподобное движение частиц.", + "betterfoliage.risingSoul.headSize": "Размер духа", + "betterfoliage.risingSoul.headSize.tooltip": "Размер частицы духа", + "betterfoliage.risingSoul.trailSize": "Размер следов", + "betterfoliage.risingSoul.trailSize.tooltip": "Начальный размер следа частиц", + "betterfoliage.risingSoul.opacity": "Прозрачность", + "betterfoliage.risingSoul.opacity.tooltip": "Непрозрачность эффекта частиц", + "betterfoliage.risingSoul.sizeDecay": "Размер распада", + "betterfoliage.risingSoul.sizeDecay.tooltip": "Следующий размер частицы соответствует их же размеру в предыдущем такте (1/20 секунды).", + "betterfoliage.risingSoul.opacityDecay": "Непрозрачность распада", + "betterfoliage.risingSoul.opacityDecay.tooltip": "Следующий уровень прозрачности частицы соответствует их же уровню прозрачности в предыдущем такте (1/20 секунды).", + "betterfoliage.risingSoul.lifetime": "Максимальное время жизни", + "betterfoliage.risingSoul.lifetime.tooltip": "Максимальное время жизни эффекта частиц. Минимальное время жизни равно 60%% от этого числа.", + "betterfoliage.risingSoul.trailLength": "Длина следов", + "betterfoliage.risingSoul.trailLength.tooltip": "Количество предыдущих позиций, которые запомнила частица в тактах (1/20 секунды).", + "betterfoliage.risingSoul.trailDensity": "Плотность следов", + "betterfoliage.risingSoul.trailDensity.tooltip": "Рендер каждой предыдущий N’ой позиции в следах частиц.", + + + "betterfoliage.connectedGrass": "Соединенные текстуры травы", + "betterfoliage.connectedGrass.enabled": "Включить", + "betterfoliage.connectedGrass.enabled.tooltip": "Если блок травы находится над блоком земли: прорисовать верхнюю текстуру травы на всех сторонах блока травы.", + + "betterfoliage.roundLogs": "Цилиндрические брёвна", + "betterfoliage.roundLogs.tooltip": "Соединить круглые блоки в сплошные, полные блоки?", + "betterfoliage.roundLogs.connectSolids": "Соединение в крупные брёвна", + "betterfoliage.roundLogs.connectSolids.tooltip": "Соединить круглые блоки в сплошные, полные блоки?", + "betterfoliage.roundLogs.connectPerpendicular": "Соединение в перпендикулярные брёвна", + "betterfoliage.roundLogs.connectPerpendicular.tooltip": "Соединить круглые брёвна к перпендикулярным брёвнам относительно их оси?", + "betterfoliage.roundLogs.lenientConnect": "Мягкое округление", + "betterfoliage.roundLogs.lenientConnect.tooltip": "Соединение в параллельные круглые брёвна L-формы, не только 2х2.", + "betterfoliage.roundLogs.connectGrass": "Соединенная трава", + "betterfoliage.roundLogs.connectGrass.tooltip": "Заменяет землю под деревьями на траву, если она есть поблизости.", + "betterfoliage.roundLogs.radiusSmall": "Радиус фаски", + "betterfoliage.roundLogs.radiusSmall.tooltip": "Радиус обрезки углов от бревна.", + "betterfoliage.roundLogs.radiusLarge": "Радиус соединенной фаски", + "betterfoliage.roundLogs.radiusLarge.tooltip": "Радиус среза внешнего угла соединённых брёвен.", + "betterfoliage.roundLogs.dimming": "Затемнение", + "betterfoliage.roundLogs.dimming.tooltip": "Затемнить неясные длинные грани.", + "betterfoliage.roundLogs.zProtection": "Z-Защита", + "betterfoliage.roundLogs.zProtection.tooltip": "Для масштабирования параллельных битов соединения бревен, чтобы остановить Z-бой (мерцание). Попробуйте установить его как можно выше, для устранения мерцания." +} diff --git a/src/main/resources/assets/betterfoliage/lang/ru_ru.lang b/src/main/resources/assets/betterfoliage/lang/ru_ru.lang deleted file mode 100644 index 54fb9f9..0000000 --- a/src/main/resources/assets/betterfoliage/lang/ru_ru.lang +++ /dev/null @@ -1,213 +0,0 @@ -key.betterfoliage.gui=Открыть настройки - -betterfoliage.global.enabled=Включить мод -betterfoliage.global.enabled.tooltip=Если установлено на false, BetterFoliage не будет ничего рендерить - -betterfoliage.enabled=Включить -betterfoliage.enabled.tooltip=Включена ли эта функция? -betterfoliage.hOffset=Горизонтальное смещение -betterfoliage.hOffset.tooltip=Дистанция горизонтального смещения этого элемента в блоках -betterfoliage.vOffset=Вертикальное смещение -betterfoliage.vOffset.tooltip=Дистанция вертикального смещения этого элемента в блоках -betterfoliage.size=Размер -betterfoliage.size.tooltip=Размер этого элемента -betterfoliage.heightMin=Минимальная высота -betterfoliage.heightMin.tooltip=Минимальная высота элемента -betterfoliage.heightMax=Максимальная высота -betterfoliage.heightMax.tooltip=Максимальная высота этого элемента -betterfoliage.population=Популяция -betterfoliage.population.tooltip=Шанс (N к 64), что блок будет иметь эту функцию -betterfoliage.shaderWind=Шейдерные эффекты ветра -betterfoliage.shaderWind.tooltip=Применить эффекты ветра с ShaderMod для этого элемента? -betterfoliage.distance=Лимит дистанции -betterfoliage.distance.tooltip=Максимальное расстояние от игрока для рендеринга этой функции - -betterfoliage.blocks=Типы блоков -betterfoliage.blocks.tooltip=Настройки списка классов блоков, которые будут иметь примененные к ним функции - -betterfoliage.blocks.dirtWhitelist=Белый список земли -betterfoliage.blocks.dirtBlacklist=Черный список земли -betterfoliage.blocks.dirtWhitelist.arrayEntry=%d записей -betterfoliage.blocks.dirtBlacklist.arrayEntry=%d записей - -betterfoliage.blocks.grassWhitelist=Белый список травы -betterfoliage.blocks.grassBlacklist=Черный список травы -betterfoliage.blocks.grassWhitelist.arrayEntry=%d записей -betterfoliage.blocks.grassBlacklist.arrayEntry=%d записей - -betterfoliage.blocks.leavesWhitelist=Белый список листвы -betterfoliage.blocks.leavesBlacklist=Черный список листвы -betterfoliage.blocks.leavesWhitelist.arrayEntry=%d записей -betterfoliage.blocks.leavesBlacklist.arrayEntry=%d записей - -betterfoliage.blocks.cropsWhitelist=Белый список урожая -betterfoliage.blocks.cropsBlacklist=Черный список урожая -betterfoliage.blocks.cropsWhitelist.arrayEntry=%d записей -betterfoliage.blocks.cropsBlacklist.arrayEntry=%d записей - -betterfoliage.blocks.logsWhitelist=Белый список древесины -betterfoliage.blocks.logsBlacklist=Черный список древесины -betterfoliage.blocks.logsWhitelist.arrayEntry=%d записей -betterfoliage.blocks.logsBlacklist.arrayEntry=%d записей - -betterfoliage.blocks.sandWhitelist=Белый список песка -betterfoliage.blocks.sandBlacklist=Черный список песка -betterfoliage.blocks.sandWhitelist.arrayEntry=%d записей -betterfoliage.blocks.sandBlacklist.arrayEntry=%d записей - -betterfoliage.blocks.lilypadWhitelist=Белый список кувшинок -betterfoliage.blocks.lilypadBlacklist=Черный список кувшинок -betterfoliage.blocks.lilypadWhitelist.arrayEntry=%d записей -betterfoliage.blocks.lilypadBlacklist.arrayEntry=%d записей - -betterfoliage.blocks.cactusWhitelist=Белый список кактусов -betterfoliage.blocks.cactusBlacklist=Черный список кактусов -betterfoliage.blocks.cactusWhitelist.arrayEntry=%d записей -betterfoliage.blocks.cactusBlacklist.arrayEntry=%d записей - - -betterfoliage.blocks.dirtWhitelist.tooltip=Блоки, которые будут восприниматься в качестве земли. Влияет на камыши, водоросли, соединенную траву. -betterfoliage.blocks.dirtBlacklist.tooltip=Блоки, которые не будут восприниматься в качестве земли. Влияет на камыши, водоросли, соединенную траву. -betterfoliage.blocks.grassWhitelist.tooltip=Блоки, которые будут восприниматься в качестве травы. Влияет на короткую и соединенную траву. -betterfoliage.blocks.grassBlacklist.tooltip=Блоки, которые не будут восприниматься в качестве травы. Влияет на короткую и соединенную траву. -betterfoliage.blocks.leavesWhitelist.tooltip=Блоки, которые будут восприниматься в качестве листвы. Влияет на дополнительную листву, падающую листву. Листва будут рендериться с ID листвы в шейдер-программах. -betterfoliage.blocks.leavesBlacklist.tooltip=Блоки, которые никогда не будут восприниматься как листва. Влияет на дополнительную листву, падающую листву. Листва будут рендериться с ID листвы в шейдер-программах. -betterfoliage.blocks.cropsWhitelist.tooltip=Блоки, которые будут восприниматься как культуры. Культуры будут рендериться с ID высокой травы в шейдер-программах. -betterfoliage.blocks.cropsBlacklist.tooltip= Блоки, которые никогда не будут восприниматься как культуры. Культуры будут рендериться с ID высокой травы в шейдер-программах. -betterfoliage.blocks.logsWhitelist.tooltip=Блоки, которые будут восприниматься в качестве деревянных брёвен. Влияет на цилиндрические брёвна. -betterfoliage.blocks.logsBlacklist.tooltip=Блоки, которые никогда не будут восприниматься в качестве деревянных брёвен. Влияет на цилиндрические брёвна. -betterfoliage.blocks.sandWhitelist.tooltip=Блоки, которые будут восприниматься в качестве песка. Влияет на кораллы. -betterfoliage.blocks.sandBlacklist.tooltip=Блоки, которые никогда не будут восприниматься в качестве песка. Влияет на кораллы. -betterfoliage.blocks.lilypadWhitelist.tooltip=Блоки, которые будут восприниматься в качестве кувшинок. Влияет на улучшенные кувшинки. -betterfoliage.blocks.lilypadBlacklist.tooltip=Блоки, которые никогда не будут восприниматься в качестве кувшинок. Влияет на улучшенные кувшинки. -betterfoliage.blocks.cactusWhitelist.tooltip=Блоки, которые будут восприниматься в качестве кактусов. Влияет на улучшенные кактусы. -betterfoliage.blocks.cactusBlacklist.tooltip=Блоки, которые никогда не будут восприниматься в качестве кувшинок. Влияет на улучшенные кактусы. - -betterfoliage.leaves=Улучшенная листва -betterfoliage.leaves.tooltip=Дополнительное округление листьев на блоках листвы. -betterfoliage.leaves.dense=Плотный режим -betterfoliage.leaves.dense.tooltip=Плотный режим имеет более округлые листья. - -betterfoliage.shortGrass=Низкая трава и мицелий -betterfoliage.shortGrass.tooltip=Пучки травы / мицелия на поверхности соответствующих блоков. -betterfoliage.shortGrass.useGenerated=Использовать сгенерированные текстуры для травы. -betterfoliage.shortGrass.useGenerated.tooltip=Сгенерированная текстура создается путём разрезания текстуры высокой травы с активного ресурс-пака пополам. -betterfoliage.shortGrass.myceliumEnabled=Включить мицелий -betterfoliage.shortGrass.myceliumEnabled.tooltip=Включить эту особенность для блоков мицелия? -betterfoliage.shortGrass.grassEnabled=Включить траву -betterfoliage.shortGrass.grassEnabled.tooltip=Включить эту особенность для блоков травы? -betterfoliage.shortGrass.snowEnabled=Включить траву под снегом -betterfoliage.shortGrass.snowEnabled.tooltip=Включить эту особенность для заснеженных блоков травы? -betterfoliage.shortGrass.saturationThreshold=Порог насыщения -betterfoliage.shortGrass.saturationThreshold.tooltip=Насыщенность цвета разделяется на: "обесцвеченные" блоки (используя цвет биома) и "цветные" блоки (используя их собственный цвет) - -betterfoliage.hangingGrass=Висячая трава -betterfoliage.hangingGrass.tooltip=Пучки травы свисают вниз с верхних краев блока травы. -betterfoliage.hangingGrass.separation=Разделение -betterfoliage.hangingGrass.separation.tooltip=Как долго подвесная трава выделяется из блока? - -betterfoliage.cactus=Улучшенные кактусы -betterfoliage.cactus.tooltip=Улучшить кактус с дополнительными частицами и плавными тенями. -betterfoliage.cactus.sizeVariation=Вариации размера -betterfoliage.cactus.sizeVariation.tooltip=Количество случайных изменений в размере кактусов. - -betterfoliage.lilypad=Улучшенные кувшинки -betterfoliage.lilypad.tooltip=Добавить кувшинкам корни и цветы. -betterfoliage.lilypad.flowerChance=Шанс появления цветов -betterfoliage.lilypad.flowerChance.tooltip=Шанс (N к 64) появления цветка на кувшинке. - -betterfoliage.reed=Камыши -betterfoliage.reed.tooltip=Мелководные камыши на блоках земли. -betterfoliage.reed.biomes=Список биомов -betterfoliage.reed.biomes.tooltip=Настройка биомов, в которых камышам разрешено появляться. -betterfoliage.reed.biomes.tooltip.element=Должны ли камыши встречаться в %s биоме? - -betterfoliage.algae=Морские водоросли -betterfoliage.algae.tooltip=Глубоководные водоросли на блоках земли. -betterfoliage.algae.biomes=Список биомов -betterfoliage.algae.biomes.tooltip=Настройка биомов, в которых водорослям разрешено появляться. -betterfoliage.algae.biomes.tooltip.element=Должны ли водоросли встречаться в %s биоме? - -betterfoliage.coral=Кораллы -betterfoliage.coral.tooltip=Кораллы на песчаных блоках в глубокой воде. -betterfoliage.coral.size=Размер кораллов -betterfoliage.coral.size.tooltip=Размер торчащих частичек кораллов. -betterfoliage.coral.crustSize=Размер коры -betterfoliage.coral.crustSize.tooltip=Размер плоской части кораллов. -betterfoliage.coral.chance=Шанс кораллов -betterfoliage.coral.chance.tooltip=Шанс (N in 64) появления кораллов на определенном блоке. -betterfoliage.coral.biomes=Список биомов -betterfoliage.coral.biomes.tooltip=Настройка биомов, в которых разрешено появляться кораллам. -betterfoliage.coral.biomes.tooltip.element=Должны ли кораллы появляться в %s биоме? -betterfoliage.coral.shallowWater=Мелководные кораллы -betterfoliage.coral.shallowWater.tooltip=Должны ли появляться кораллы в воде, глубиной в 1 блок? - -betterfoliage.netherrack=Адская лоза -betterfoliage.netherrack.tooltip=Висячая лоза под адским камнем - -betterfoliage.fallingLeaves=Падающие листья -betterfoliage.fallingLeaves.tooltip=Падение FX частиц листвы исходящие из низа блоков листвы -betterfoliage.fallingLeaves.speed=Скорость частиц -betterfoliage.fallingLeaves.speed.tooltip=Общая скорость частиц -betterfoliage.fallingLeaves.windStrength=Сила ветра -betterfoliage.fallingLeaves.windStrength.tooltip=Величина воздействия ветра в хорошую погоду (распространение нормального распределения сосредоточено на 0) -betterfoliage.fallingLeaves.stormStrength=Сила шторма -betterfoliage.fallingLeaves.stormStrength.tooltip=Дополнительная величина воздействия ветра в ненастную погоду (распространение нормального распределения сосредоточено на 0) -betterfoliage.fallingLeaves.size=Размер частиц -betterfoliage.fallingLeaves.chance=Шанс частиц -betterfoliage.fallingLeaves.chance.tooltip=Вероятность каждого случайного рендеринга в такт (1/20 секунды) опадения частицы блока листвы. -betterfoliage.fallingLeaves.perturb=Возмущение -betterfoliage.fallingLeaves.perturb.tooltip=Величина эффекта возмущений. Добавляет штопорообразное движение к частице синхронизированной с его вращением. -betterfoliage.fallingLeaves.lifetime=Максимальное время жизни -betterfoliage.fallingLeaves.lifetime.tooltip=Максимальное время жизни частиц. Минимальное время жизни - 60%% от этого значения. -betterfoliage.fallingLeaves.opacityHack=Непрозрачные частицы -betterfoliage.fallingLeaves.opacityHack.tooltip=Запретить прозрачным блокам затемнять частицы даже тогда, когда частицы впереди. ВНИМАНИЕ: может спровоцировать баги. - -betterfoliage.risingSoul=Адские духи -betterfoliage.risingSoul.tooltip=Количество душ-частиц FX, испускаемых из верхней части блоков песка душ. -betterfoliage.risingSoul.chance=Шанс частиц -betterfoliage.risingSoul.chance.tooltip=Частота генерации частиц на песке душ. -betterfoliage.risingSoul.speed=Скорость частиц -betterfoliage.risingSoul.speed.tooltip=Вертикальная скорость движения частиц духов. -betterfoliage.risingSoul.perturb=Возмущение -betterfoliage.risingSoul.perturb.tooltip=Магнитуда эффекта возмущений. Добавляет штопороподобное движение частиц. -betterfoliage.risingSoul.headSize=Размер духа -betterfoliage.risingSoul.headSize.tooltip=Размер частицы духа -betterfoliage.risingSoul.trailSize=Размер следов -betterfoliage.risingSoul.trailSize.tooltip=Начальный размер следа частиц -betterfoliage.risingSoul.opacity=Прозрачность -betterfoliage.risingSoul.opacity.tooltip=Непрозрачность эффекта частиц -betterfoliage.risingSoul.sizeDecay=Размер распада -betterfoliage.risingSoul.sizeDecay.tooltip=Следующий размер частицы соответствует их же размеру в предыдущем такте (1/20 секунды). -betterfoliage.risingSoul.opacityDecay=Непрозрачность распада -betterfoliage.risingSoul.opacityDecay.tooltip=Следующий уровень прозрачности частицы соответствует их же уровню прозрачности в предыдущем такте (1/20 секунды). -betterfoliage.risingSoul.lifetime=Максимальное время жизни -betterfoliage.risingSoul.lifetime.tooltip=Максимальное время жизни эффекта частиц. Минимальное время жизни равно 60%% от этого числа. -betterfoliage.risingSoul.trailLength=Длина следов -betterfoliage.risingSoul.trailLength.tooltip=Количество предыдущих позиций, которые запомнила частица в тактах (1/20 секунды). -betterfoliage.risingSoul.trailDensity=Плотность следов -betterfoliage.risingSoul.trailDensity.tooltip=Рендер каждой предыдущий N’ой позиции в следах частиц. - - -betterfoliage.connectedGrass=Соединенные текстуры травы -betterfoliage.connectedGrass.enabled=Включить -betterfoliage.connectedGrass.enabled.tooltip=Если блок травы находится над блоком земли: прорисовать верхнюю текстуру травы на всех сторонах блока травы. - -betterfoliage.roundLogs=Цилиндрические брёвна -betterfoliage.roundLogs.tooltip=Соединить круглые блоки в сплошные, полные блоки? -betterfoliage.roundLogs.connectSolids=Соединение в крупные брёвна -betterfoliage.roundLogs.connectSolids.tooltip=Соединить круглые блоки в сплошные, полные блоки? -betterfoliage.roundLogs.connectPerpendicular=Соединение в перпендикулярные брёвна -betterfoliage.roundLogs.connectPerpendicular.tooltip=Соединить круглые брёвна к перпендикулярным брёвнам относительно их оси? -betterfoliage.roundLogs.lenientConnect=Мягкое округление -betterfoliage.roundLogs.lenientConnect.tooltip=Соединение в параллельные круглые брёвна L-формы, не только 2х2. -betterfoliage.roundLogs.connectGrass=Соединенная трава -betterfoliage.roundLogs.connectGrass.tooltip=Заменяет землю под деревьями на траву, если она есть поблизости. -betterfoliage.roundLogs.radiusSmall=Радиус фаски -betterfoliage.roundLogs.radiusSmall.tooltip=Радиус обрезки углов от бревна. -betterfoliage.roundLogs.radiusLarge=Радиус соединенной фаски -betterfoliage.roundLogs.radiusLarge.tooltip=Радиус среза внешнего угла соединённых брёвен. -betterfoliage.roundLogs.dimming=Затемнение -betterfoliage.roundLogs.dimming.tooltip=Затемнить неясные длинные грани. -betterfoliage.roundLogs.zProtection=Z-Защита -betterfoliage.roundLogs.zProtection.tooltip=Для масштабирования параллельных битов соединения бревен, чтобы остановить Z-бой (мерцание). Попробуйте установить его как можно выше, для устранения мерцания. diff --git a/src/main/resources/assets/betterfoliage/lang/zh_cn.json b/src/main/resources/assets/betterfoliage/lang/zh_cn.json new file mode 100644 index 0000000..b1bee5d --- /dev/null +++ b/src/main/resources/assets/betterfoliage/lang/zh_cn.json @@ -0,0 +1,177 @@ +{ + "key.betterfoliage.gui": "打开BF设置", + + "betterfoliage.global.enabled": "模组使用", + "betterfoliage.global.enabled.tooltip": "如果关闭,BetterFoliage不会呈现任何东西", + "betterfoliage.nVidia": "nVidia GPU", + "betterfoliage.nVidia.tooltip": "明确你是否有一个nVidia GPU", + + "betterfoliage.enabled": "启用", + "betterfoliage.enabled.tooltip": "要启用这个功能吗?", + "betterfoliage.hOffset": "水平偏移", + "betterfoliage.hOffset.tooltip": "在方块中这个元素是横向距离移动的", + "betterfoliage.vOffset": "垂直偏移", + "betterfoliage.vOffset.tooltip": "在方块中这个元素是横向距离移动的", + "betterfoliage.size": "尺寸", + "betterfoliage.size.tooltip": "该元素的尺寸", + "betterfoliage.heightMin": "最小高度", + "betterfoliage.heightMin.tooltip": "最小元素的高度", + "betterfoliage.heightMax": "最大高度", + "betterfoliage.heightMax.tooltip": "最大元素的高度", + "betterfoliage.population": "物体密度", + "betterfoliage.population.tooltip": "生成的概率为64分之1", + "betterfoliage.shaderWind": "光影水反中的 风的影响", + "betterfoliage.shaderWind.tooltip": "能适用于光影水反中的\"风的影响\" 这一元素?", + "betterfoliage.distance": "距离限制", + "betterfoliage.distance.tooltip": "离游戏者的最大距离,在这个范围内呈现这个特征", + + "betterfoliage.rendererror": "§a[BF更好的叶子]§f 错误:渲染方块 %s 此位置 %s", + + "betterfoliage.shaders": "着色器配置", + "betterfoliage.shaders.tooltip": "Configure integration with shaders", + "betterfoliage.shaders.leavesId": "叶子 ID", + "betterfoliage.shaders.leavesId.tooltip": "方块 ID 将作为所有叶片都使用的相同ID提供给光影水反 如果你的光影水反文件使用了一个 §6block.properties§e 文件, 你可能需要修改这个以匹配光影水反的映射", + "betterfoliage.shaders.grassId": "草 ID", + "betterfoliage.shaders.grassId.tooltip": "方块 ID 将作为所有的草和作物都使用的相同ID提供给光影水反 如果你的光影水反文件使用了一个 §6block.properties§e 文件, 你可能需要修改这个以匹配光影水反的映射", + + "betterfoliage.leaves": "额外的叶片", + "betterfoliage.leaves.tooltip": "叶方块上额外的密叶", + "betterfoliage.leaves.dense": "浓密模式", + "betterfoliage.leaves.dense.tooltip": "浓密的叶子会有更多额外的叶片", + "betterfoliage.leaves.snowEnabled": "启用雪覆盖叶片", + "betterfoliage.leaves.snowEnabled.tooltip": "是否启用被雪覆盖的额外叶片?", + "betterfoliage.leaves.hideInternal": "隐藏内部的叶片", + "betterfoliage.leaves.hideInternal.tooltip": "如果该叶方块完全被其他叶方块或者固体方块包围,将不渲染额外的叶片", + "betterfoliage.leaves.saturationThreshold": "饱和度阈值", + "betterfoliage.leaves.saturationThreshold.tooltip": "色彩饱和度将介于\"无色\"方块(使用生物群系的颜色)和\"有色\"方块(使用材质特定颜色)之间", + + "betterfoliage.shortGrass": "短草和菌丝", + "betterfoliage.shortGrass.tooltip": "一簇小草或者一丛菌丝长在合适的方块的顶部", + "betterfoliage.shortGrass.useGenerated": "为草使用mod创建的材质", + "betterfoliage.shortGrass.useGenerated.tooltip": "mod创建的材质指的是将已选用的资源包中高草的材质切一半来用", + "betterfoliage.shortGrass.myceliumEnabled": "使用在菌丝上", + "betterfoliage.shortGrass.myceliumEnabled.tooltip": "将这个特性利用到菌丝中吗?", + "betterfoliage.shortGrass.grassEnabled": "使用在草方块上", + "betterfoliage.shortGrass.grassEnabled.tooltip": "将这个特性利用到草方块中吗?", + "betterfoliage.shortGrass.snowEnabled": "使用在雪地里", + "betterfoliage.shortGrass.snowEnabled.tooltip": "使用到被雪覆盖的草方块中去?", + "betterfoliage.shortGrass.saturationThreshold": "饱和度阈值", + "betterfoliage.shortGrass.saturationThreshold.tooltip": "色彩饱和度将介于\"无色\"方块(使用生物群系的颜色)和\"有色\"方块(使用材质特定颜色)之间", + + "betterfoliage.connectedGrass": "草的纹理的连接", + "betterfoliage.connectedGrass.tooltip": "使得草方块侧面拥有像顶面的材质", + "betterfoliage.connectedGrass.enabled": "启用", + "betterfoliage.connectedGrass.enabled.tooltip": "如果泥土上有草方块:所有的草方块的侧面换成草方块顶部的材质,", + "betterfoliage.connectedGrass.snowEnabled": "使用在被雪覆盖的草方块上", + "betterfoliage.connectedGrass.snowEnabled.tooltip": "是否应用于被雪覆盖的草方块上?", + + "betterfoliage.hangingGrass": "悬挂的草", + "betterfoliage.hangingGrass.tooltip": "草会在边缘的草方块上垂下来", + "betterfoliage.hangingGrass.separation": "垂下来的距离", + "betterfoliage.hangingGrass.separation.tooltip": "有多长的挂草会从草方块上垂下来", + + "betterfoliage.cactus": "更好的仙人掌", + "betterfoliage.cactus.tooltip": "用额外的仙人掌刺和圆润的形状来提高仙人掌的真实性", + "betterfoliage.cactus.sizeVariation": "尺寸变化", + "betterfoliage.cactus.sizeVariation.tooltip": "仙人掌的尺寸随机变化的范围", + + "betterfoliage.lilypad": "更好的莲叶与荷花", + "betterfoliage.lilypad.tooltip": "用莲叶的根和随机的莲花以提高莲叶的真实性", + "betterfoliage.lilypad.flowerChance": "花的生成概率", + "betterfoliage.lilypad.flowerChance.tooltip": "(64个莲叶中 N 个)莲叶具有花了", + + "betterfoliage.reed": "芦苇", + "betterfoliage.reed.tooltip": "芦苇会生成在浅水中的泥土块上", + "betterfoliage.reed.biomes": "生物群系的列表", + "betterfoliage.reed.biomes.tooltip": "配置允许出现芦苇的生物群系", + "betterfoliage.reed.biomes.tooltip.element": "芦苇应该出现在%s生物群落?", + + "betterfoliage.algae": "藻类", + "betterfoliage.algae.tooltip": "藻类会生成在深水中的泥土块上", + "betterfoliage.algae.biomes": "生物群系的列表", + "betterfoliage.algae.biomes.tooltip": "配置允许出现藻类的生物群系", + "betterfoliage.algae.biomes.tooltip.element": "藻类应该出现在%s生物群落?", + + "betterfoliage.coral": "珊瑚", + "betterfoliage.coral.tooltip": "珊瑚会生成在深水中的沙块上", + "betterfoliage.coral.size": "珊瑚的大小", + "betterfoliage.coral.size.tooltip": "珊瑚伸出的部分的大小", + "betterfoliage.coral.crustSize": "外壳尺寸", + "betterfoliage.coral.crustSize.tooltip": "珊瑚的平的部分的尺寸", + "betterfoliage.coral.chance": "珊瑚的生成概率", + "betterfoliage.coral.chance.tooltip": "64个特殊表面的方块中有N个有机会出现珊瑚", + "betterfoliage.coral.biomes": "生物群落的列表", + "betterfoliage.coral.biomes.tooltip": "配置允许出现珊瑚的生物群系", + "betterfoliage.coral.biomes.tooltip.element": "珊瑚应该出现在%s生物群落?", + "betterfoliage.coral.shallowWater": "浅海珊瑚", + "betterfoliage.coral.shallowWater.tooltip": "珊瑚应该生成在深水1格?", + + "betterfoliage.netherrack": "下界岩下面的藤蔓", + "betterfoliage.netherrack.tooltip": "下界岩下面将挂上藤蔓", + + "betterfoliage.fallingLeaves": "落叶", + "betterfoliage.fallingLeaves.tooltip": "落叶粒子效果 FX 会从叶方块底部下落", + "betterfoliage.fallingLeaves.speed": "粒子速度", + "betterfoliage.fallingLeaves.speed.tooltip": "总体的粒子速度", + "betterfoliage.fallingLeaves.windStrength": "柔风的强度", + "betterfoliage.fallingLeaves.windStrength.tooltip": "在晴天中体现的风的效果(默认以0为中心散播)", + "betterfoliage.fallingLeaves.stormStrength": "风暴的强度", + "betterfoliage.fallingLeaves.stormStrength.tooltip": "附加在阴天里体现的风的效果(默认以0为中心散播)", + "betterfoliage.fallingLeaves.size": "粒子大小", + "betterfoliage.fallingLeaves.chance": "粒子生成机率", + "betterfoliage.fallingLeaves.chance.tooltip": "随机渲染刻激发叶方块生成粒子的概率", + "betterfoliage.fallingLeaves.perturb": "扰动", + "betterfoliage.fallingLeaves.perturb.tooltip": "扰动的大小.增加了一个与之旋转同步的螺旋状动量", + "betterfoliage.fallingLeaves.lifetime": "最长存在时间", + "betterfoliage.fallingLeaves.lifetime.tooltip": "粒子的最长存在时间,仅在几秒内,最短时间为这个值60%%", + "betterfoliage.fallingLeaves.opacityHack": "粒子不透明", + "betterfoliage.fallingLeaves.opacityHack.tooltip": "阻止透明方块隐藏粒子,即使粒子已经在前面了.警告:可能会导致错误", + + "betterfoliage.risingSoul": "灵魂沙上飘起的魂灵", + "betterfoliage.risingSoul.tooltip": "灵魂沙的顶部飘出灵魂粒子 FX", + "betterfoliage.risingSoul.chance": "粒子的生成机率", + "betterfoliage.risingSoul.chance.tooltip": "随机渲染刻激发灵魂沙生成一个粒子的概率", + "betterfoliage.risingSoul.speed": "粒子速度", + "betterfoliage.risingSoul.speed.tooltip": "灵颗粒的垂直速度", + "betterfoliage.risingSoul.perturb": "扰动", + "betterfoliage.risingSoul.perturb.tooltip": "动的大小.增加了一个与之旋转同步的螺旋状动量", + "betterfoliage.risingSoul.headSize": "魂灵的大小", + "betterfoliage.risingSoul.headSize.tooltip": "灵魂粒子的大小", + "betterfoliage.risingSoul.trailSize": "魂灵轨迹的大小", + "betterfoliage.risingSoul.trailSize.tooltip": "灵魂粒子的轨迹的初始大小", + "betterfoliage.risingSoul.opacity": "不透明度", + "betterfoliage.risingSoul.opacity.tooltip": "粒子效果的不透明度", + "betterfoliage.risingSoul.sizeDecay": "大小的衰减", + "betterfoliage.risingSoul.sizeDecay.tooltip": "灵魂轨迹粒子大小与前一刻他的大小相关", + "betterfoliage.risingSoul.opacityDecay": "不透明度的衰减", + "betterfoliage.risingSoul.opacityDecay.tooltip": "灵魂轨迹粒子不透明度与前一刻他的不透明度相关", + "betterfoliage.risingSoul.lifetime": "最长存在时间", + "betterfoliage.risingSoul.lifetime.tooltip": "粒子的最长存在时间,仅在几秒内,最短时间为这个值60%%", + "betterfoliage.risingSoul.trailLength": "魂灵轨迹长度", + "betterfoliage.risingSoul.trailLength.tooltip": "在游戏刻内粒子记录的轨迹位置的数量", + "betterfoliage.risingSoul.trailDensity": "魂灵轨迹密集程度", + "betterfoliage.risingSoul.trailDensity.tooltip": "整条轨迹中渲染每第N个轨迹位置", + + "betterfoliage.roundLogs": "圆木", + "betterfoliage.roundLogs.tooltip": "使木方块拥有八角形的横截面", + "betterfoliage.roundLogs.plantsOnly": "仅仅应用于植物性材料", + "betterfoliage.roundLogs.plantsOnly.tooltip": "是否仅仅应用于木质材料和干草堆,而不是所有圆柱方块?", + "betterfoliage.roundLogs.connectSolids": "连接到固体方块上", + "betterfoliage.roundLogs.connectSolids.tooltip": "要使圆木连接到完整的固体方块上吗?", + "betterfoliage.roundLogs.connectPerpendicular": "连接到垂直的圆木上", + "betterfoliage.roundLogs.connectPerpendicular.tooltip": "要使圆木根据它的角度连接到垂直圆木上吗?", + "betterfoliage.roundLogs.lenientConnect": "巨大的圆木", + "betterfoliage.roundLogs.lenientConnect.tooltip": "在L形中也连接成巨大的圆木, 不只是2x2形", + "betterfoliage.roundLogs.connectGrass": "连接到草方块上", + "betterfoliage.roundLogs.connectGrass.tooltip": "如果树木下的泥土附近有草方块,那么它也会被渲染成草方块", + "betterfoliage.roundLogs.radiusSmall": "圆木斜面的半径", + "betterfoliage.roundLogs.radiusSmall.tooltip": "从圆木的外角砍掉多大的部分", + "betterfoliage.roundLogs.radiusLarge": "连接圆木的斜面半径", + "betterfoliage.roundLogs.radiusLarge.tooltip": "从连接着的巨大圆木的外角砍掉多大的部分", + "betterfoliage.roundLogs.dimming": "调光变暗", + "betterfoliage.roundLogs.dimming.tooltip": "将圆木阴暗面变黑的程度", + "betterfoliage.roundLogs.zProtection": "Z-Protection [Z保护]", + "betterfoliage.roundLogs.zProtection.tooltip": "用多少倍放大平行圆木连接处的面 去停止 Z-fighting (闪烁)[斑驳,两个多边形共面所出现的效果].在没有发生故障的情况下,试着将这个值设置得尽可能的高[这是Z-fighting出现的原因:多个多面体的面重叠在一起,会一直闪烁]", + "betterfoliage.roundLogs.defaultY": "默认垂直", + "betterfoliage.roundLogs.defaultY.tooltip": "如果开启, 方向不确定的圆木将会渲染成垂直的.否则, 它们仅仅渲染为cube型方块.", +} \ No newline at end of file diff --git a/src/main/resources/assets/betterfoliage/lang/zh_cn.lang b/src/main/resources/assets/betterfoliage/lang/zh_cn.lang deleted file mode 100644 index 803d833..0000000 --- a/src/main/resources/assets/betterfoliage/lang/zh_cn.lang +++ /dev/null @@ -1,342 +0,0 @@ -key.betterfoliage.gui=打开BF设置 - -betterfoliage.global.enabled=模组使用 -betterfoliage.global.enabled.tooltip=如果关闭,BetterFoliage不会呈现任何东西 -betterfoliage.global.nVidia=nVidia GPU -betterfoliage.global.nVidia.tooltip=明确你是否有一个nVidia GPU - -betterfoliage.enabled=启用 -betterfoliage.enabled.tooltip=要启用这个功能吗? -betterfoliage.hOffset=水平偏移 -betterfoliage.hOffset.tooltip=在方块中这个元素是横向距离移动的 -betterfoliage.vOffset=垂直偏移 -betterfoliage.vOffset.tooltip=在方块中这个元素是横向距离移动的 -betterfoliage.size=尺寸 -betterfoliage.size.tooltip=该元素的尺寸 -betterfoliage.heightMin=最小高度 -betterfoliage.heightMin.tooltip=最小元素的高度 -betterfoliage.heightMax=最大高度 -betterfoliage.heightMax.tooltip=最大元素的高度 -betterfoliage.population=物体密度 -betterfoliage.population.tooltip=生成的概率为64分之1 -betterfoliage.shaderWind=光影水反中的 风的影响 -betterfoliage.shaderWind.tooltip=能适用于光影水反中的"风的影响" 这一元素? -betterfoliage.distance=距离限制 -betterfoliage.distance.tooltip=离游戏者的最大距离,在这个范围内呈现这个特征 - -betterfoliage.rendererror=§a[BF更好的叶子]§f 错误:渲染方块 %s 此位置 %s - -betterfoliage.blocks=方块类型 -betterfoliage.blocks.tooltip=配置方块类型,那里有特定的功能(见表格) - -betterfoliage.blocks.dirtWhitelist=需要开启泥土效果的名单 -betterfoliage.blocks.dirtBlacklist=需要关闭泥土效果的名单 -betterfoliage.blocks.dirtWhitelist.arrayEntry=%d 条目 -betterfoliage.blocks.dirtBlacklist.arrayEntry=%d 条目 -betterfoliage.blocks.dirtWhitelist.tooltip=这些方块将被视为泥土块 将影响芦苇,藻类,草的出现 -betterfoliage.blocks.dirtBlacklist.tooltip=这些方块不会将被视为泥土块 芦苇,藻类,草不会出现 - -betterfoliage.blocks.grassClassesWhitelist=需要开启草方块效果的名单 -betterfoliage.blocks.grassClassesBlacklist=需要关闭草方块效果的名单 -betterfoliage.blocks.grassClassesWhitelist.arrayEntry=%d 条目 -betterfoliage.blocks.grassClassesBlacklist.arrayEntry=%d 条目 -betterfoliage.blocks.grassModels=草方块的模型 -betterfoliage.blocks.grassModels.arrayEntry=%d 条目 -betterfoliage.blocks.grassWhitelist.tooltip=这些方块将被视为草方块 将影响短草效果、草方块的连接 -betterfoliage.blocks.grassBlacklist.tooltip=这些方块不会将被视为草方块 短草效果、草方块的连接不会出现 -betterfoliage.blocks.grassModels.tooltip=这些模型和材质将被认为是草方块 - -betterfoliage.blocks.leavesClassesWhitelist=需要开启树叶效果的名单 -betterfoliage.blocks.leavesClassesBlacklist=需要关闭树叶效果的名单 -betterfoliage.blocks.leavesClassesWhitelist.arrayEntry=%d 条目 -betterfoliage.blocks.leavesClassesBlacklist.arrayEntry=%d 条目 -betterfoliage.blocks.leavesModels=叶子的模型 -betterfoliage.blocks.leavesModels.arrayEntry=%d 条目 -betterfoliage.blocks.leavesWhitelist.tooltip=这些方块将被视为叶子 将有额外的叶片、产生飘落的树叶(这些方块会在光影水反中使用与叶子同一ID) -betterfoliage.blocks.leavesBlacklist.tooltip=这些方块将不会被视为叶子 将关闭额外的叶片、不会产生飘落的树叶(这些方块会在光影水反中使用与叶子同一ID) -betterfoliage.blocks.leavesModels.tooltip=这些模型和材质将被认为是叶方块 - -betterfoliage.blocks.cropsWhitelist=需要开启作物效果的名单 -betterfoliage.blocks.cropsBlacklist=需要关闭作物效果的名单 -betterfoliage.blocks.cropsWhitelist.arrayEntry=%d 条目 -betterfoliage.blocks.cropsBlacklist.arrayEntry=%d 条目 -betterfoliage.blocks.cropsWhitelist.tooltip=这些植物将被视为是作物 作物将与高草在光影水反中使用同一ID -betterfoliage.blocks.cropsBlacklist.tooltip=这些植物将不会被视为是作物 作物将不会与高草在光影水反中使用同一ID - -betterfoliage.blocks.logsWhitelist=需要开启圆木效果的名单 -betterfoliage.blocks.logsBlacklist=需要关闭圆木效果的名单 -betterfoliage.blocks.logsWhitelist.arrayEntry=%d 条目 -betterfoliage.blocks.logsBlacklist.arrayEntry=%d 条目 -betterfoliage.blocks.logModels=圆木模型 -betterfoliage.blocks.logModels.arrayEntry=%d 条目 -betterfoliage.blocks.logsWhitelist.tooltip=这些方块将被视为原木 将产生圆木效果 -betterfoliage.blocks.logsBlacklist.tooltip=这些方块将不会被视为原木 将不会产生圆木效果 -betterfoliage.blocks.logModels.tooltip=这些模型和材质将被认为是原木方块 - -betterfoliage.blocks.sandWhitelist=需要开启珊瑚效果的名单 -betterfoliage.blocks.sandBlacklist=需要关闭珊瑚效果的名单 -betterfoliage.blocks.sandWhitelist.arrayEntry=%d 条目 -betterfoliage.blocks.sandBlacklist.arrayEntry=%d 条目 -betterfoliage.blocks.sandWhitelist.tooltip=这些方块将被视作沙子 将产生珊瑚 -betterfoliage.blocks.sandBlacklist.tooltip=这些方块将不会被视为沙子 将不会产生珊瑚 - -betterfoliage.blocks.lilypadWhitelist=需要开启更好的莲叶与荷花的名单 -betterfoliage.blocks.lilypadBlacklist=需要关闭更好的莲叶与荷花的名单 -betterfoliage.blocks.lilypadWhitelist.arrayEntry=%d 条目 -betterfoliage.blocks.lilypadBlacklist.arrayEntry=%d 条目 -betterfoliage.blocks.lilypadWhitelist.tooltip=这些方块将被视为莲叶 将开启更好的莲叶与荷花效果 -betterfoliage.blocks.lilypadBlacklist.tooltip=这些方块将不会被视为莲叶 将不会产生更好的莲叶与荷花效果 - -betterfoliage.blocks.cactusWhitelist=需要开启更好的仙人掌的名单 -betterfoliage.blocks.cactusBlacklist=需要关闭更好的仙人掌的名单 -betterfoliage.blocks.cactusWhitelist.arrayEntry=%d 条目 -betterfoliage.blocks.cactusBlacklist.arrayEntry=%d 条目 -betterfoliage.blocks.cactusWhitelist.tooltip=这些植物将被视作仙人掌 将开启更好的仙人掌的效果 -betterfoliage.blocks.cactusBlacklist.tooltip=这些植物将不会被视作仙人掌 将不会产生更好的仙人掌的效果 - -betterfoliage.blocks.myceliumWhitelist=需要开启更好的菌丝体的名单 -betterfoliage.blocks.myceliumBlacklist=需要关闭更好的菌丝体的名单 -betterfoliage.blocks.myceliumWhitelist.arrayEntry=%d 条目 -betterfoliage.blocks.myceliumBlacklist.arrayEntry=%d 条目 -betterfoliage.blocks.myceliumWhitelist.tooltip=这些方块将被视作菌丝体 将影响菌丝体上"短草"的效果 -betterfoliage.blocks.myceliumBlacklist.tooltip=这些方块将不会被视作菌丝体 菌丝体上"短草"的效果不会产生 - -betterfoliage.blocks.netherrackWhitelist=需要开启下界岩下端藤蔓的名单 -betterfoliage.blocks.netherrackBlacklist=需要关闭下界岩下端藤蔓的名单 -betterfoliage.blocks.netherrackWhitelist.arrayEntry=%d 条目 -betterfoliage.blocks.netherrackBlacklist.arrayEntry=%d 条目 -betterfoliage.blocks.netherrackWhitelist.tooltip=方块将被视作下界岩 下界岩下端将长出藤蔓 -betterfoliage.blocks.netherrackBlacklist.tooltip=方块将不会被视作下界岩 下界岩下端将不会长出藤蔓 - -betterfoliage.shaders=着色器配置 -betterfoliage.shaders.tooltip=Configure integration with shaders -betterfoliage.shaders.leavesId=叶子 ID -betterfoliage.shaders.leavesId.tooltip=方块 ID 将作为所有叶片都使用的相同ID提供给光影水反 如果你的光影水反文件使用了一个 §6block.properties§e 文件, 你可能需要修改这个以匹配光影水反的映射 -betterfoliage.shaders.grassId=草 ID -betterfoliage.shaders.grassId.tooltip=方块 ID 将作为所有的草和作物都使用的相同ID提供给光影水反 如果你的光影水反文件使用了一个 §6block.properties§e 文件, 你可能需要修改这个以匹配光影水反的映射 - -betterfoliage.leaves=额外的叶片 -betterfoliage.leaves.tooltip=叶方块上额外的密叶 -betterfoliage.leaves.dense=浓密模式 -betterfoliage.leaves.dense.tooltip=浓密的叶子会有更多额外的叶片 -betterfoliage.leaves.snowEnabled=启用雪覆盖叶片 -betterfoliage.leaves.snowEnabled.tooltip=是否启用被雪覆盖的额外叶片? -betterfoliage.leaves.hideInternal=隐藏内部的叶片 -betterfoliage.leaves.hideInternal.tooltip=如果该叶方块完全被其他叶方块或者固体方块包围,将不渲染额外的叶片 - -betterfoliage.shortGrass=短草和菌丝 -betterfoliage.shortGrass.tooltip=一簇小草或者一丛菌丝长在合适的方块的顶部 -betterfoliage.shortGrass.useGenerated=为草使用mod创建的材质 -betterfoliage.shortGrass.useGenerated.tooltip=mod创建的材质指的是将已选用的资源包中高草的材质切一半来用 -betterfoliage.shortGrass.myceliumEnabled=使用在菌丝上 -betterfoliage.shortGrass.myceliumEnabled.tooltip=将这个特性利用到菌丝中吗? -betterfoliage.shortGrass.grassEnabled=使用在草方块上 -betterfoliage.shortGrass.grassEnabled.tooltip=将这个特性利用到草方块中吗? -betterfoliage.shortGrass.snowEnabled=使用在雪地里 -betterfoliage.shortGrass.snowEnabled.tooltip=使用到被雪覆盖的草方块中去? -betterfoliage.shortGrass.saturationThreshold=饱和度阈值 -betterfoliage.shortGrass.saturationThreshold.tooltip=色彩饱和度将介于"无色"方块(使用生物群系的颜色)和"有色"方块(使用材质特定颜色)之间 - -betterfoliage.connectedGrass.snowEnabled=使用在被雪覆盖的草方块上 -betterfoliage.connectedGrass.snowEnabled.tooltip=是否应用于被雪覆盖的草方块上? - -betterfoliage.hangingGrass=悬挂的草 -betterfoliage.hangingGrass.tooltip=草会在边缘的草方块上垂下来 -betterfoliage.hangingGrass.separation=垂下来的距离 -betterfoliage.hangingGrass.separation.tooltip=有多长的挂草会从草方块上垂下来 - -betterfoliage.cactus=更好的仙人掌 -betterfoliage.cactus.tooltip=用额外的仙人掌刺和圆润的形状来提高仙人掌的真实性 -betterfoliage.cactus.sizeVariation=尺寸变化 -betterfoliage.cactus.sizeVariation.tooltip=仙人掌的尺寸随机变化的范围 - -betterfoliage.lilypad=更好的莲叶与荷花 -betterfoliage.lilypad.tooltip=用莲叶的根和随机的莲花以提高莲叶的真实性 -betterfoliage.lilypad.flowerChance=花的生成概率 -betterfoliage.lilypad.flowerChance.tooltip=(64个莲叶中 N 个)莲叶具有花了 - -betterfoliage.reed=芦苇 -betterfoliage.reed.tooltip=芦苇会生成在浅水中的泥土块上 -betterfoliage.reed.biomes=生物群系的列表 -betterfoliage.reed.biomes.tooltip=配置允许出现芦苇的生物群系 -betterfoliage.reed.biomes.tooltip.element=芦苇应该出现在%s生物群落? - -betterfoliage.algae=藻类 -betterfoliage.algae.tooltip=藻类会生成在深水中的泥土块上 -betterfoliage.algae.biomes=生物群系的列表 -betterfoliage.algae.biomes.tooltip=配置允许出现藻类的生物群系 -betterfoliage.algae.biomes.tooltip.element=藻类应该出现在%s生物群落? - -betterfoliage.coral=珊瑚 -betterfoliage.coral.tooltip=珊瑚会生成在深水中的沙块上 -betterfoliage.coral.size=珊瑚的大小 -betterfoliage.coral.size.tooltip=珊瑚伸出的部分的大小 -betterfoliage.coral.crustSize=外壳尺寸 -betterfoliage.coral.crustSize.tooltip=珊瑚的平的部分的尺寸 -betterfoliage.coral.chance=珊瑚的生成概率 -betterfoliage.coral.chance.tooltip=64个特殊表面的方块中有N个有机会出现珊瑚 -betterfoliage.coral.biomes=生物群落的列表 -betterfoliage.coral.biomes.tooltip=配置允许出现珊瑚的生物群系 -betterfoliage.coral.biomes.tooltip.element=珊瑚应该出现在%s生物群落? -betterfoliage.coral.shallowWater=浅海珊瑚 -betterfoliage.coral.shallowWater.tooltip=珊瑚应该生成在深水1格? - -betterfoliage.netherrack=下界岩下面的藤蔓 -betterfoliage.netherrack.tooltip=下界岩下面将挂上藤蔓 - -betterfoliage.fallingLeaves=落叶 -betterfoliage.fallingLeaves.tooltip=落叶粒子效果 FX 会从叶方块底部下落 -betterfoliage.fallingLeaves.speed=粒子速度 -betterfoliage.fallingLeaves.speed.tooltip=总体的粒子速度 -betterfoliage.fallingLeaves.windStrength=柔风的强度 -betterfoliage.fallingLeaves.windStrength.tooltip=在晴天中体现的风的效果(默认以0为中心散播) -betterfoliage.fallingLeaves.stormStrength=风暴的强度 -betterfoliage.fallingLeaves.stormStrength.tooltip=附加在阴天里体现的风的效果(默认以0为中心散播) -betterfoliage.fallingLeaves.size=粒子大小 -betterfoliage.fallingLeaves.chance=粒子生成机率 -betterfoliage.fallingLeaves.chance.tooltip=随机渲染刻激发叶方块生成粒子的概率 -betterfoliage.fallingLeaves.perturb=扰动 -betterfoliage.fallingLeaves.perturb.tooltip=扰动的大小.增加了一个与之旋转同步的螺旋状动量 -betterfoliage.fallingLeaves.lifetime=最长存在时间 -betterfoliage.fallingLeaves.lifetime.tooltip=粒子的最长存在时间,仅在几秒内,最短时间为这个值60%% -betterfoliage.fallingLeaves.opacityHack=粒子不透明 -betterfoliage.fallingLeaves.opacityHack.tooltip=阻止透明方块隐藏粒子,即使粒子已经在前面了.警告:可能会导致错误 - -betterfoliage.risingSoul=灵魂沙上飘起的魂灵 -betterfoliage.risingSoul.tooltip=灵魂沙的顶部飘出灵魂粒子 FX -betterfoliage.risingSoul.chance=粒子的生成机率 -betterfoliage.risingSoul.chance.tooltip=随机渲染刻激发灵魂沙生成一个粒子的概率 -betterfoliage.risingSoul.speed=粒子速度 -betterfoliage.risingSoul.speed.tooltip=灵颗粒的垂直速度 -betterfoliage.risingSoul.perturb=扰动 -betterfoliage.risingSoul.perturb.tooltip=动的大小.增加了一个与之旋转同步的螺旋状动量 -betterfoliage.risingSoul.headSize=魂灵的大小 -betterfoliage.risingSoul.headSize.tooltip=灵魂粒子的大小 -betterfoliage.risingSoul.trailSize=魂灵轨迹的大小 -betterfoliage.risingSoul.trailSize.tooltip=灵魂粒子的轨迹的初始大小 -betterfoliage.risingSoul.opacity=不透明度 -betterfoliage.risingSoul.opacity.tooltip=粒子效果的不透明度 -betterfoliage.risingSoul.sizeDecay=大小的衰减 -betterfoliage.risingSoul.sizeDecay.tooltip=灵魂轨迹粒子大小与前一刻他的大小相关 -betterfoliage.risingSoul.opacityDecay=不透明度的衰减 -betterfoliage.risingSoul.opacityDecay.tooltip=灵魂轨迹粒子不透明度与前一刻他的不透明度相关 -betterfoliage.risingSoul.lifetime=最长存在时间 -betterfoliage.risingSoul.lifetime.tooltip=粒子的最长存在时间,仅在几秒内,最短时间为这个值60%% -betterfoliage.risingSoul.trailLength=魂灵轨迹长度 -betterfoliage.risingSoul.trailLength.tooltip=在游戏刻内粒子记录的轨迹位置的数量 -betterfoliage.risingSoul.trailDensity=魂灵轨迹密集程度 -betterfoliage.risingSoul.trailDensity.tooltip=整条轨迹中渲染每第N个轨迹位置 - -betterfoliage.connectedGrass=草的纹理的连接 -betterfoliage.connectedGrass.enabled=启用 -betterfoliage.connectedGrass.enabled.tooltip=如果泥土上有草方块:所有的草方块的侧面换成草方块顶部的材质, - -betterfoliage.roundLogs=圆木 -betterfoliage.roundLogs.tooltip=使木方块拥有八角形的横截面 -betterfoliage.roundLogs.plantsOnly=仅仅应用于植物性材料 -betterfoliage.roundLogs.plantsOnly.tooltip=是否仅仅应用于木质材料和干草堆,而不是所有圆柱方块? -betterfoliage.roundLogs.connectSolids=连接到固体方块上 -betterfoliage.roundLogs.connectSolids.tooltip=要使圆木连接到完整的固体方块上吗? -betterfoliage.roundLogs.connectPerpendicular=连接到垂直的圆木上 -betterfoliage.roundLogs.connectPerpendicular.tooltip=要使圆木根据它的角度连接到垂直圆木上吗? -betterfoliage.roundLogs.lenientConnect=巨大的圆木 -betterfoliage.roundLogs.lenientConnect.tooltip=在L形中也连接成巨大的圆木, 不只是2x2形 -betterfoliage.roundLogs.connectGrass=连接到草方块上 -betterfoliage.roundLogs.connectGrass.tooltip=如果树木下的泥土附近有草方块,那么它也会被渲染成草方块 -betterfoliage.roundLogs.radiusSmall=圆木斜面的半径 -betterfoliage.roundLogs.radiusSmall.tooltip=从圆木的外角砍掉多大的部分 -betterfoliage.roundLogs.radiusLarge=连接圆木的斜面半径 -betterfoliage.roundLogs.radiusLarge.tooltip=从连接着的巨大圆木的外角砍掉多大的部分 -betterfoliage.roundLogs.dimming=调光变暗 -betterfoliage.roundLogs.dimming.tooltip=将圆木阴暗面变黑的程度 -betterfoliage.roundLogs.zProtection=Z-Protection [Z保护] -betterfoliage.roundLogs.zProtection.tooltip=用多少倍放大平行圆木连接处的面 去停止 Z-fighting (闪烁)[斑驳,两个多边形共面所出现的效果].在没有发生故障的情况下,试着将这个值设置得尽可能的高[这是Z-fighting出现的原因:多个多面体的面重叠在一起,会一直闪烁] -betterfoliage.roundLogs.defaultY=默认垂直 -betterfoliage.roundLogs.defaultY.tooltip=如果开启, 方向不确定的圆木将会渲染成垂直的.否则, 它们仅仅渲染为cube型方块. - -betterfoliage.connectedGrass.tooltip=使得草方块侧面拥有像顶面的材质 -betterfoliage.leaves.saturationThreshold=饱和度阈值 -betterfoliage.leaves.saturationThreshold.tooltip=色彩饱和度将介于"无色"方块(使用生物群系的颜色)和"有色"方块(使用材质特定颜色)之间 - -##########应用翻译########## -true=开启:true -false=关闭:false - -##########以下生态系统的翻译来自中文Minecraft Wiki########## -Ocean=海洋 -Plains=草原 -Sunflower Plains=向日葵草原 -Desert=沙漠 -Desert M=沙漠 M -Extreme Hills=峭壁 -Extreme Hills M=峭壁 M -Forest=森林 -Flower Forest=繁花森林 -Taiga=针叶林 -Taiga M=针叶林 M -Swampland=沼泽 -Swampland M=沼泽 M -River=河流 -Hell=下界 -The End=末路之地 -FrozenOcean=冻洋 -FrozenRiver=冻河 -Ice Plains=冰原 -Ice Plains Spikes=冰刺平原 -Ice Mountains=雪山 -MushroomIsland=蘑菇岛 -MushroomIslandShore=蘑菇岛岸 -Beach=沙滩 -DesertHills=沙漠山丘 -ForestHills=森林山丘 -TaigaHills=针叶林山丘 -Extreme Hills Edge=悬崖 -Jungle=丛林 -Jungle M=丛林 M -JungleHills=丛林山丘 -JungleEdge=丛林边缘 -JungleEdge M=丛林边缘 M -Deep Ocean=深海 -Stone Beach=石滩 -Cold Beach=寒冷沙滩 -Birch Forest=桦木森林 -Birch Forest M=桦木森林 M -Birch Forest Hills=桦木森林山丘 -Birch Forest Hills M=桦木森林山丘 -Roofed Forest=黑森林 -Roofed Forest M=黑森林 M -Cold Taiga=冷针叶林 -Cold Taiga M=冷针叶林 M -Cold Taiga Hills=冷针叶林山丘 -Mega Taiga=大型针叶林 -Mega Spruce Taiga=红木森林 -Mega Taiga Hills=大型针叶林山丘 -Redwood Taiga Hills M=红木山丘 -Extreme Hills+=峭壁+ -Extreme Hills+ M=峭壁+ M -Savanna=热带草原 -Savanna M=热带草原 -Savanna Plateau=热带高原 -Savanna Plateau M=热带高原 -Mesa=平顶山 -Mesa (Bryce)=平顶山(岩柱) -Mesa Plateau F=平顶山高原 F -Mesa Plateau F M=平顶山高原 F M -Mesa Plateau=平顶山高原 -Mesa Plateau M=平顶山高原 M - -##########下面是Forge的部分翻译########## -fml.configgui.applyGlobally=全部应用 -fml.configgui.tooltip.addNewEntryAbove=在这上面设置新条目 -fml.configgui.tooltip.applyGlobally=全部应用撤销或重置. -fml.configgui.tooltip.removeEntry=删除条目 -fml.configgui.tooltip.resetAll=重置. 如果在初始页面选中全部应用的复选框,那么将所有更改全部重置. -fml.configgui.tooltip.resetToDefault=重置 -fml.configgui.tooltip.undoAll=撤销. 如果在初始页面选中全部应用的复选框,那么将撤销新一次的所有更改. -fml.configgui.tooltip.undoChanges=撤销 -fml.configgui.tooltip.default=[默认值: %s] -fml.configgui.tooltip.defaultNumeric=[范围: %s ~ %s, 默认值: %s] - -fml.menu.mods=模组 -fml.menu.mods.normal=普通排序 -fml.menu.mods.search=搜索: \ No newline at end of file From 25cea8633ce08478c17aef96945a55ce0974d455 Mon Sep 17 00:00:00 2001 From: octarine-noise Date: Sat, 22 May 2021 17:27:28 +0200 Subject: [PATCH 4/8] Integrate ClothConfig for Forge --- build.gradle.kts | 6 +- .../mods/betterfoliage/BetterFoliageMod.kt | 40 ++-- .../mods/betterfoliage/client/Client.kt | 30 +-- .../betterfoliage/client/config/Config.kt | 133 -------------- .../betterfoliage/client/config/MainConfig.kt | 152 ++++++++++++++++ .../octarinecore/common/config/Delegate.kt | 172 ++++++++++++++++++ .../common/config/DelegatingConfig.kt | 89 --------- 7 files changed, 375 insertions(+), 247 deletions(-) create mode 100644 src/main/kotlin/mods/betterfoliage/client/config/MainConfig.kt create mode 100644 src/main/kotlin/mods/octarinecore/common/config/Delegate.kt delete mode 100644 src/main/kotlin/mods/octarinecore/common/config/DelegatingConfig.kt diff --git a/build.gradle.kts b/build.gradle.kts index bf7f2f2..8ce5b63 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -6,9 +6,10 @@ plugins { apply(plugin = "org.spongepowered.mixin") repositories { - maven("http://files.minecraftforge.net/maven") + maven("https://files.minecraftforge.net/maven") maven("https://repo.spongepowered.org/maven") maven("https://minecraft.curseforge.com/api/maven") + maven("https://www.cursemaven.com") } dependencies { @@ -16,6 +17,8 @@ dependencies { "implementation"("kottle:Kottle:${properties["kottleVersion"]}") "implementation"("org.spongepowered:mixin:0.8-SNAPSHOT") + + "api"(fg.deobf("curse.maven:clothconfig-348521:2813656")) } configurations["annotationProcessor"].extendsFrom(configurations["implementation"]) @@ -45,6 +48,7 @@ java { kotlin { target.compilations.configureEach { kotlinOptions.freeCompilerArgs += listOf("-Xno-param-assertions", "-Xno-call-assertions") + kotlinOptions.jvmTarget = "1.8" } } diff --git a/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt b/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt index 156c707..db57a32 100644 --- a/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt +++ b/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt @@ -1,33 +1,47 @@ package mods.betterfoliage +import me.shedaniel.forge.clothconfig2.api.ConfigBuilder import mods.betterfoliage.client.Client import mods.betterfoliage.client.config.BlockConfig -import mods.betterfoliage.client.config.Config -import mods.octarinecore.client.resource.AsnycSpriteProviderManager -import mods.octarinecore.client.resource.GeneratedBlockTexturePack +import mods.betterfoliage.client.config.MainConfig +import mods.octarinecore.common.config.clothGuiRoot +import mods.octarinecore.common.config.forgeSpecRoot import net.alexwells.kottle.FMLKotlinModLoadingContext import net.minecraft.client.Minecraft -import net.minecraft.client.particle.ParticleManager -import net.minecraft.client.renderer.model.ModelBakery +import net.minecraft.client.gui.screen.Screen +import net.minecraft.util.ResourceLocation +import net.minecraftforge.fml.ExtensionPoint.CONFIGGUIFACTORY import net.minecraftforge.fml.ModLoadingContext import net.minecraftforge.fml.common.Mod import net.minecraftforge.fml.config.ModConfig -import org.apache.logging.log4j.Level.DEBUG -import org.apache.logging.log4j.LogManager -import org.apache.logging.log4j.simple.SimpleLogger -import org.apache.logging.log4j.util.PropertiesUtil -import java.io.File -import java.io.PrintStream -import java.util.* +import org.apache.commons.lang3.tuple.Pair +import java.util.function.BiFunction +import java.util.function.BiPredicate +import java.util.function.Supplier @Mod(BetterFoliageMod.MOD_ID) object BetterFoliageMod { const val MOD_ID = "betterfoliage" val bus = FMLKotlinModLoadingContext.get().modEventBus + val config = MainConfig() init { - ModLoadingContext.get().registerConfig(ModConfig.Type.CLIENT, Config.build()) + val ctx = ModLoadingContext.get() + + // Config instance + GUI handler + val configSpec = config.forgeSpecRoot() + ctx.registerConfig(ModConfig.Type.CLIENT, configSpec) + ctx.registerExtensionPoint(CONFIGGUIFACTORY) { BiFunction { client, parent -> + config.clothGuiRoot( + parentScreen = parent, + prefix = listOf(MOD_ID), + background = ResourceLocation("minecraft:textures/block/spruce_wood.png"), + saveAction = { configSpec.save() } + ) + } } + + Minecraft.getInstance().resourcePackList.addPackFinder(BetterFoliage.asyncPack.finder) bus.register(BlockConfig) Client.init() diff --git a/src/main/kotlin/mods/betterfoliage/client/Client.kt b/src/main/kotlin/mods/betterfoliage/client/Client.kt index b68deb2..7201dff 100644 --- a/src/main/kotlin/mods/betterfoliage/client/Client.kt +++ b/src/main/kotlin/mods/betterfoliage/client/Client.kt @@ -1,30 +1,38 @@ package mods.betterfoliage.client -import mods.betterfoliage.BetterFoliageMod import mods.betterfoliage.client.chunk.ChunkOverlayManager import mods.betterfoliage.client.config.BlockConfig -import mods.betterfoliage.client.integration.* -import mods.betterfoliage.client.render.* +import mods.betterfoliage.client.integration.OptifineCustomColors +import mods.betterfoliage.client.integration.ShadersModIntegration +import mods.betterfoliage.client.render.AsyncCactusDiscovery +import mods.betterfoliage.client.render.AsyncLogDiscovery +import mods.betterfoliage.client.render.LeafWindTracker +import mods.betterfoliage.client.render.RenderAlgae +import mods.betterfoliage.client.render.RenderCactus +import mods.betterfoliage.client.render.RenderConnectedGrass +import mods.betterfoliage.client.render.RenderConnectedGrassLog +import mods.betterfoliage.client.render.RenderCoral +import mods.betterfoliage.client.render.RenderGrass +import mods.betterfoliage.client.render.RenderLeaves +import mods.betterfoliage.client.render.RenderLilypad +import mods.betterfoliage.client.render.RenderLog +import mods.betterfoliage.client.render.RenderMycelium +import mods.betterfoliage.client.render.RenderNetherrack +import mods.betterfoliage.client.render.RenderReeds +import mods.betterfoliage.client.render.RisingSoulTextures import mods.betterfoliage.client.texture.AsyncGrassDiscovery import mods.betterfoliage.client.texture.AsyncLeafDiscovery import mods.betterfoliage.client.texture.LeafParticleRegistry -import mods.octarinecore.client.gui.textComponent import mods.octarinecore.client.render.RenderDecorator import mods.octarinecore.client.resource.IConfigChangeListener import net.minecraft.block.BlockState -import net.minecraft.client.Minecraft -import net.minecraft.util.math.BlockPos -import net.minecraft.util.text.TextFormatting -import net.minecraft.util.text.TranslationTextComponent -import net.minecraftforge.registries.ForgeRegistries -import org.apache.logging.log4j.Level /** * Object responsible for initializing (and holding a reference to) all the infrastructure of the mod * except for the call hooks. */ object Client { - var renderers= emptyList() + var renderers = emptyList() var configListeners = emptyList() val suppressRenderErrors = mutableSetOf() diff --git a/src/main/kotlin/mods/betterfoliage/client/config/Config.kt b/src/main/kotlin/mods/betterfoliage/client/config/Config.kt index 8c9becc..16c3db4 100644 --- a/src/main/kotlin/mods/betterfoliage/client/config/Config.kt +++ b/src/main/kotlin/mods/betterfoliage/client/config/Config.kt @@ -8,139 +8,6 @@ import net.minecraft.util.ResourceLocation import net.minecraftforge.eventbus.api.SubscribeEvent import net.minecraftforge.fml.config.ModConfig -private fun featureEnable() = boolean(true).lang("enabled") - -// Config singleton -object Config : DelegatingConfig(BetterFoliageMod.MOD_ID, BetterFoliageMod.MOD_ID) { - - val enabled by boolean(true) - val nVidia by boolean(false) - - object leaves : ConfigCategory() { - val enabled by featureEnable() - val snowEnabled by boolean(true) - val hOffset by double(max=0.4, default=0.2).lang("hOffset") - val vOffset by double(max=0.4, default=0.1).lang("vOffset") - val size by double(min=0.75, max=2.5, default=1.4).lang("size") - val dense by boolean(false) - val hideInternal by boolean(true) - } - - object shortGrass : ConfigCategory(){ - val grassEnabled by boolean(true) - val myceliumEnabled by boolean(true) - val snowEnabled by boolean(true) - val hOffset by double(max=0.4, default=0.2).lang("hOffset") - val heightMin by double(min=0.1, max=2.5, default=0.6).lang("heightMin") - val heightMax by double(min=0.1, max=2.5, default=0.8).lang("heightMax") - val size by double(min=0.5, max=1.5, default=1.0).lang("size") - val population by int(max=64, default=64).lang("population") - val useGenerated by boolean(false) - val shaderWind by boolean(true).lang("shaderWind") - val saturationThreshold by double(default=0.1) - } - - object connectedGrass : ConfigCategory(){ - val enabled by boolean(true) - val snowEnabled by boolean(false) - } - - object roundLogs : ConfigCategory(){ - val enabled by featureEnable() - val radiusSmall by double(max=0.5, default=0.25) - val radiusLarge by double(max=0.5, default=0.44) - val dimming by double(default = 0.7) - val connectSolids by boolean(false) - val lenientConnect by boolean(true) - val connectPerpendicular by boolean(true) - val connectGrass by boolean(true) - val defaultY by boolean(false) - val zProtection by double(min = 0.9, default = 0.99) - } - - object cactus : ConfigCategory(){ - val enabled by featureEnable() - val size by double(min=0.5, max=1.5, default=0.8).lang("size") - val sizeVariation by double(max=0.5, default=0.1) - val hOffset by double(max=0.5, default=0.1).lang("hOffset") - } - - object lilypad : ConfigCategory(){ - val enabled by featureEnable() - val hOffset by double(max=0.25, default=0.1).lang("hOffset") - val flowerChance by int(max=64, default=16, min=0) - } - - object reed : ConfigCategory(){ - val enabled by featureEnable() - val hOffset by double(max=0.4, default=0.2).lang("hOffset") - val heightMin by double(min=1.5, max=3.5, default=1.7).lang("heightMin") - val heightMax by double(min=1.5, max=3.5, default=2.2).lang("heightMax") - val population by int(max=64, default=32).lang("population") - val minBiomeTemp by double(default=0.4) - val minBiomeRainfall by double(default=0.4) -// val biomes by biomeList { it.filterTemp(0.4f, null) && it.filterRain(0.4f, null) } - val shaderWind by boolean(true).lang("shaderWind") - } - - object algae : ConfigCategory(){ - val enabled by featureEnable() - val hOffset by double(max=0.25, default=0.1).lang("hOffset") - val size by double(min=0.5, max=1.5, default=1.0).lang("size") - val heightMin by double(min=0.1, max=1.5, default=0.5).lang("heightMin") - val heightMax by double(min=0.1, max=1.5, default=1.0).lang("heightMax") - val population by int(max=64, default=48).lang("population") -// val biomes by biomeList { it.filterClass("river", "ocean") } - val shaderWind by boolean(true).lang("shaderWind") - } - - object coral : ConfigCategory(){ - val enabled by featureEnable() - val shallowWater by boolean(false) - val hOffset by double(max=0.4, default=0.2).lang("hOffset") - val vOffset by double(max=0.4, default=0.1).lang("vOffset") - val size by double(min=0.5, max=1.5, default=0.7).lang("size") - val crustSize by double(min=0.5, max=1.5, default=1.4) - val chance by int(max=64, default=32) - val population by int(max=64, default=48).lang("population") -// val biomes by biomeList { it.filterClass("river", "ocean", "beach") } - } - - object netherrack : ConfigCategory(){ - val enabled by featureEnable() - val hOffset by double(max=0.4, default=0.2).lang("hOffset") - val heightMin by double(min=0.1, max=1.5, default=0.6).lang("heightMin") - val heightMax by double(min=0.1, max=1.5, default=0.8).lang("heightMax") - val size by double(min=0.5, max=1.5, default=1.0).lang("size") - } - - object fallingLeaves : ConfigCategory(){ - val enabled by featureEnable() - val speed by double(min=0.01, max=0.15, default=0.05) - val windStrength by double(min=0.1, max=2.0, default=0.5) - val stormStrength by double(min=0.1, max=2.0, default=0.8) - val size by double(min=0.25, max=1.5, default=0.75).lang("size") - val chance by double(min=0.001, max=1.0, default=0.02) - val perturb by double(min=0.01, max=1.0, default=0.25) - val lifetime by double(min=1.0, max=15.0, default=5.0) - val opacityHack by boolean(true) - } - - object risingSoul : ConfigCategory(){ - val enabled by featureEnable() - val chance by double(min=0.001, max=1.0, default=0.02) - val perturb by double(min=0.01, max=0.25, default=0.05) - val headSize by double(min=0.25, max=1.5, default=1.0) - val trailSize by double(min=0.25, max=1.5, default=0.75) - val opacity by double(min=0.05, max=1.0, default=0.5) - val sizeDecay by double(min=0.5, max=1.0, default=0.97) - val opacityDecay by double(min=0.5, max=1.0, default=0.97) - val lifetime by double(min=1.0, max=15.0, default=4.0) - val trailLength by int(min=2, max=128, default=48) - val trailDensity by int(min=1, max=16, default=3) - } -} - object BlockConfig { private val list = mutableListOf() diff --git a/src/main/kotlin/mods/betterfoliage/client/config/MainConfig.kt b/src/main/kotlin/mods/betterfoliage/client/config/MainConfig.kt new file mode 100644 index 0000000..d2e16b7 --- /dev/null +++ b/src/main/kotlin/mods/betterfoliage/client/config/MainConfig.kt @@ -0,0 +1,152 @@ +package mods.betterfoliage.client.config + +import mods.betterfoliage.BetterFoliageMod +import mods.octarinecore.common.config.DelegatingConfigGroup +import mods.octarinecore.common.config.boolean +import mods.octarinecore.common.config.double +import mods.octarinecore.common.config.integer +import mods.octarinecore.common.config.recurring +import mods.octarinecore.common.config.subNode + +fun featureEnable(default: Boolean = true) = boolean(default, langKey = recurring) + +val Config get() = BetterFoliageMod.config + +class MainConfig : DelegatingConfigGroup() { + val enabled by boolean(true, langKey = { "betterfoliage.global.enabled" }) + val nVidia by boolean(false) + + val leaves by subNode(::LeavesConfig) + val shortGrass by subNode(::ShortGrassConfig) + val connectedGrass by subNode(::ConnectedGrassConfig) + val roundLogs by subNode(::RoundLogConfig) + val cactus by subNode(::CactusConfig) + val lilypad by subNode(::LilypadConfig) + val reed by subNode(::ReedConfig) + val algae by subNode(::AlgaeConfig) + val coral by subNode(::CoralConfig) + val netherrack by subNode(::NetherrackConfig) + val fallingLeaves by subNode(::FallingLeavesConfig) + val risingSoul by subNode(::RisingSoulConfig) +} + +class LeavesConfig : DelegatingConfigGroup() { + val enabled by featureEnable() + val snowEnabled by boolean(true) + val hOffset by double(max=0.4, default=0.2, langKey = recurring) + val vOffset by double(max=0.4, default=0.1, langKey = recurring) + val size by double(min=0.75, max=2.5, default=1.4, langKey = recurring) + val dense by boolean(false) + val hideInternal by boolean(true) +} + +class ShortGrassConfig : DelegatingConfigGroup() { + val grassEnabled by boolean(true) + val myceliumEnabled by boolean(true) + val snowEnabled by boolean(true) + val hOffset by double(max=0.4, default=0.2, langKey = recurring) + val heightMin by double(min=0.1, max=2.5, default=0.6, langKey = recurring) + val heightMax by double(min=0.1, max=2.5, default=0.8, langKey = recurring) + val size by double(min=0.5, max=1.5, default=1.0, langKey = recurring) + val population by integer(max=64, default=64) + val useGenerated by boolean(false) + val shaderWind by boolean(true, langKey = recurring) + val saturationThreshold by double(default=0.1) +} + +class ConnectedGrassConfig() : DelegatingConfigGroup() { + val enabled by boolean(true) + val snowEnabled by boolean(false) +} + +class RoundLogConfig() : DelegatingConfigGroup() { + val enabled by featureEnable() + val radiusSmall by double(max=0.5, default=0.25) + val radiusLarge by double(max=0.5, default=0.44) + val dimming by double(default = 0.7) + val connectSolids by boolean(false) + val lenientConnect by boolean(true) + val connectPerpendicular by boolean(true) + val connectGrass by boolean(true) + val defaultY by boolean(false) + val zProtection by double(min = 0.9, default = 0.99) +} + +class CactusConfig() : DelegatingConfigGroup() { + val enabled by featureEnable() + val size by double(min=0.5, max=1.5, default=0.8, langKey = recurring) + val sizeVariation by double(max=0.5, default=0.1) + val hOffset by double(max=0.5, default=0.1, langKey = recurring) +} + +class LilypadConfig() : DelegatingConfigGroup() { + val enabled by featureEnable() + val hOffset by double(max=0.25, default=0.1, langKey = recurring) + val flowerChance by integer(max=64, default=16, min=0) +} + +class ReedConfig() : DelegatingConfigGroup() { + val enabled by featureEnable() + val hOffset by double(max=0.4, default=0.2, langKey = recurring) + val heightMin by double(min=1.5, max=3.5, default=1.7, langKey = recurring) + val heightMax by double(min=1.5, max=3.5, default=2.2, langKey = recurring) + val population by integer(max=64, default=32, langKey = recurring) + val minBiomeTemp by double(default=0.4) + val minBiomeRainfall by double(default=0.4) + val shaderWind by boolean(true, langKey = recurring) +} + +class AlgaeConfig() : DelegatingConfigGroup() { + val enabled by featureEnable() + val hOffset by double(max=0.25, default=0.1, langKey = recurring) + val size by double(min=0.5, max=1.5, default=1.0, langKey = recurring) + val heightMin by double(min=0.1, max=1.5, default=0.5, langKey = recurring) + val heightMax by double(min=0.1, max=1.5, default=1.0, langKey = recurring) + val population by integer(max=64, default=48, langKey = recurring) + val shaderWind by boolean(true, langKey = recurring) +} + +class CoralConfig() : DelegatingConfigGroup() { + val enabled by featureEnable() + val shallowWater by boolean(false) + val hOffset by double(max=0.4, default=0.2, langKey = recurring) + val vOffset by double(max=0.4, default=0.1, langKey = recurring) + val size by double(min=0.5, max=1.5, default=0.7, langKey = recurring) + val crustSize by double(min=0.5, max=1.5, default=1.4) + val chance by integer(max=64, default=32) + val population by integer(max=64, default=48, langKey = recurring) +} + +class NetherrackConfig() : DelegatingConfigGroup() { + val enabled by featureEnable() + val hOffset by double(max=0.4, default=0.2, langKey = recurring) + val heightMin by double(min=0.1, max=1.5, default=0.6, langKey = recurring) + val heightMax by double(min=0.1, max=1.5, default=0.8, langKey = recurring) + val size by double(min=0.5, max=1.5, default=1.0, langKey = recurring) +} + +class FallingLeavesConfig() : DelegatingConfigGroup() { + val enabled by featureEnable() + val speed by double(min=0.01, max=0.15, default=0.05) + val windStrength by double(min=0.1, max=2.0, default=0.5) + val stormStrength by double(min=0.1, max=2.0, default=0.8) + val size by double(min=0.25, max=1.5, default=0.75, langKey = recurring) + val chance by double(min=0.001, max=1.0, default=0.02) + val perturb by double(min=0.01, max=1.0, default=0.25) + val lifetime by double(min=1.0, max=15.0, default=5.0) + val opacityHack by boolean(true) +} + +class RisingSoulConfig() : DelegatingConfigGroup() { + val enabled by featureEnable() + val chance by double(min=0.001, max=1.0, default=0.02) + val perturb by double(min=0.01, max=0.25, default=0.05) + val headSize by double(min=0.25, max=1.5, default=1.0) + val trailSize by double(min=0.25, max=1.5, default=0.75) + val opacity by double(min=0.05, max=1.0, default=0.5) + val sizeDecay by double(min=0.5, max=1.0, default=0.97) + val opacityDecay by double(min=0.5, max=1.0, default=0.97) + val lifetime by double(min=1.0, max=15.0, default=4.0) + val trailLength by integer(min=2, max=128, default=48) + val trailDensity by integer(min=1, max=16, default=3) +} \ No newline at end of file diff --git a/src/main/kotlin/mods/octarinecore/common/config/Delegate.kt b/src/main/kotlin/mods/octarinecore/common/config/Delegate.kt new file mode 100644 index 0000000..c0cd803 --- /dev/null +++ b/src/main/kotlin/mods/octarinecore/common/config/Delegate.kt @@ -0,0 +1,172 @@ +package mods.octarinecore.common.config + +import me.shedaniel.forge.clothconfig2.api.AbstractConfigListEntry +import me.shedaniel.forge.clothconfig2.api.ConfigBuilder +import me.shedaniel.forge.clothconfig2.api.ConfigEntryBuilder +import me.shedaniel.forge.clothconfig2.gui.entries.SubCategoryListEntry +import net.minecraft.client.gui.screen.Screen +import net.minecraft.client.resources.I18n +import net.minecraft.util.ResourceLocation +import net.minecraftforge.common.ForgeConfigSpec +import java.util.* +import kotlin.properties.ReadOnlyProperty +import kotlin.reflect.KProperty + +const val MAX_LINE_LEN = 30 + +fun DelegatingConfigGroup.forgeSpecRoot() = + ForgeConfigSpec.Builder() + .also { createForgeNode(it) } + .build() + +fun DelegatingConfigGroup.clothGuiRoot( + parentScreen: Screen, + prefix: List, + background: ResourceLocation, + saveAction: ()->Unit +) = ConfigBuilder.create() + .setParentScreen(parentScreen) + .setTitle(I18n.format((prefix + "title").joinToString("."))) + .setDefaultBackgroundTexture(background) + .setSavingRunnable(saveAction) + .also { builder -> + createClothNode(prefix).value.forEach { rootCategory -> + builder.getOrCreateCategory("main").addEntry(rootCategory) + } + } + .build() + +sealed class DelegatingConfigNode { + abstract fun createClothNode(path: List): AbstractConfigListEntry<*> +} + +abstract class DelegatingConfigValue : DelegatingConfigNode(), ReadOnlyProperty { + lateinit var forgeValue: ForgeConfigSpec.ConfigValue + abstract fun createForgeNode(builder: ForgeConfigSpec.Builder, name: String) +} + +open class DelegatingConfigGroup : DelegatingConfigNode() { + val children = mutableMapOf() + + fun createForgeNode(builder: ForgeConfigSpec.Builder) { + children.forEach { (name, node) -> + when(node) { + is DelegatingConfigGroup -> { + builder.push(name) + node.createForgeNode(builder) + builder.pop() + } + is DelegatingConfigValue<*> -> node.createForgeNode(builder, name) + } + } + } + + override fun createClothNode(path: List): SubCategoryListEntry { + val builder = ConfigEntryBuilder.create() + .startSubCategory(path.joinToString(".").translate()) + .setTooltip(*path.joinToString(".").translateTooltip()) + .setExpended(false) + children.forEach { (name, node) -> builder.add(node.createClothNode(path + name)) } + return builder.build() + } +} + +interface DelegatingConfigGroupFactory { + operator fun provideDelegate(parent: DelegatingConfigGroup, property: KProperty<*>): ReadOnlyProperty +} + +fun subNode(factory: ()->T) = object : DelegatingConfigGroupFactory { + override operator fun provideDelegate(parent: DelegatingConfigGroup, property: KProperty<*>): ReadOnlyProperty { + val child = factory() + parent.children[property.name] = child + return object : ReadOnlyProperty { + override fun getValue(thisRef: DelegatingConfigGroup, property: KProperty<*>) = child + } + } +} + +interface DelegatingConfigValueFactory { + fun createForgeNode(builder: ForgeConfigSpec.Builder, name: String): ForgeConfigSpec.ConfigValue + fun createClothNode(prop: CachingConfigProperty, path: List): AbstractConfigListEntry + + operator fun provideDelegate(parent: DelegatingConfigGroup, property: KProperty<*>): ReadOnlyProperty { + return object : CachingConfigProperty(parent, property) { + override fun createForgeNode(builder: ForgeConfigSpec.Builder, name: String) { + forgeValue = this@DelegatingConfigValueFactory.createForgeNode(builder, name) + } + + override fun createClothNode(path: List): AbstractConfigListEntry<*> = createClothNode(this, path) + + }.apply { parent.children[property.name] = this } + } +} + +abstract class CachingConfigProperty(parent: DelegatingConfigGroup, property: KProperty<*>) : DelegatingConfigValue() { + var value: T? = null + override fun getValue(thisRef: DelegatingConfigGroup, property: KProperty<*>) = + value ?: forgeValue.get().apply { value = this } +} + +fun String.translate() = I18n.format(this) +fun String.translateTooltip(lineLength: Int = MAX_LINE_LEN) = ("$this.tooltip").translate().let { tooltip -> + tooltip.splitToSequence(" ").fold(mutableListOf("")) { tooltips, word -> + if (tooltips.last().length + word.length < lineLength) { + tooltips[tooltips.lastIndex] += "$word " + } else { + tooltips.add("$word ") + } + tooltips + }.map { it.trim() }.toTypedArray() +} + +fun boolean( + default: Boolean, + langKey: (List)->String = { it.joinToString(".") }, + valueOverride: (Boolean)->Boolean = { it } +) = object : DelegatingConfigValueFactory { + override fun createForgeNode(builder: ForgeConfigSpec.Builder, name: String) = + builder.define(name, default) + + override fun createClothNode(prop: CachingConfigProperty, path: List) = ConfigEntryBuilder.create() + .startBooleanToggle(langKey(path).translate(), prop.forgeValue.get()) + .setTooltip(langKey(path).let { if (I18n.hasKey("$it.tooltip")) Optional.of(it.translateTooltip()) else Optional.empty() }) + .setSaveConsumer { prop.forgeValue.set(valueOverride(it)); prop.value = null } + .build() +} + +fun integer( + default: Int = 0, min: Int = 0, max: Int, + langKey: (List)->String = { it.joinToString(".") }, + valueOverride: (Int)->Int = { it } +) = object : DelegatingConfigValueFactory { + override fun createForgeNode(builder: ForgeConfigSpec.Builder, name: String) = + builder.defineInRange(name, default, min, max) + + override fun createClothNode(prop: CachingConfigProperty, path: List) = ConfigEntryBuilder.create() + .startIntField(langKey(path).translate(), prop.forgeValue.get()) + .setTooltip(langKey(path).let { if (I18n.hasKey("$it.tooltip")) Optional.of(it.translateTooltip()) else Optional.empty() }) + .setMin(min).setMax(max) + .setSaveConsumer { prop.forgeValue.set(valueOverride(it)); prop.value = null } + .build() +} + +fun double( + default: Double = 0.0, min: Double = 0.0, max: Double = 1.0, + langKey: (List)->String = { it.joinToString(".") }, + valueOverride: (Double)->Double = { it } +) = object : DelegatingConfigValueFactory { + override fun createForgeNode(builder: ForgeConfigSpec.Builder, name: String) = + builder.defineInRange(name, default, min, max) + + override fun createClothNode(prop: CachingConfigProperty, path: List) = ConfigEntryBuilder.create() + .startDoubleField(langKey(path).translate(), prop.forgeValue.get()) + .setTooltip(langKey(path).let { if (I18n.hasKey("$it.tooltip")) Optional.of(it.translateTooltip()) else Optional.empty() }) + .setMin(min).setMax(max) + .setSaveConsumer { prop.forgeValue.set(valueOverride(it)); prop.value = null } + .build() +} + +val recurring = { path: List -> "${path.first()}.${path.last()}" } +fun fakeCategory(name: String) = { names: List -> + (listOf(names.first(), name) + names.drop(1)).joinToString(".") +} \ No newline at end of file diff --git a/src/main/kotlin/mods/octarinecore/common/config/DelegatingConfig.kt b/src/main/kotlin/mods/octarinecore/common/config/DelegatingConfig.kt deleted file mode 100644 index 75e3cfb..0000000 --- a/src/main/kotlin/mods/octarinecore/common/config/DelegatingConfig.kt +++ /dev/null @@ -1,89 +0,0 @@ -@file:JvmName("DelegatingConfigKt") - -package mods.octarinecore.common.config - -import mods.octarinecore.metaprog.reflectDelegates -import mods.octarinecore.metaprog.reflectNestedObjects -import net.minecraftforge.common.ForgeConfigSpec -import kotlin.properties.ReadOnlyProperty -import kotlin.reflect.KProperty - -open class DelegatingConfig(val modId: String, val langPrefix: String) { - fun build() = ForgeConfigSpec.Builder().apply { ConfigBuildContext(langPrefix, emptyList(), this).addCategory(this@DelegatingConfig) }.build() -} - -class ConfigBuildContext(val langPrefix: String, val path: List, val builder: ForgeConfigSpec.Builder) { - - fun addCategory(configObj: Any) { - configObj.reflectNestedObjects.forEach { (name, category) -> - builder.push(name) - descend(name).addCategory(category) - builder.pop() - } - configObj.reflectDelegates(ConfigDelegate::class.java).forEach { (name, delegate) -> - descend(name).apply { delegate.addToBuilder(this) } - } - } - - fun descend(pathName: String) = ConfigBuildContext(langPrefix, path + pathName, builder) -} - -open class ConfigCategory(val comment: String? = null) { -} - -abstract class ConfigDelegate : ReadOnlyProperty { - lateinit var configValue: ForgeConfigSpec.ConfigValue - var cachedValue: T? = null - - override fun getValue(thisRef: Any, property: KProperty<*>): T { - if (cachedValue == null) cachedValue = configValue.get() - return cachedValue!! - } - - abstract fun getConfigValue(name: String, builder: ForgeConfigSpec.Builder): ForgeConfigSpec.ConfigValue - fun addToBuilder(ctx: ConfigBuildContext) { - val langKey = ctx.langPrefix + "." + (langPrefixOverride ?: ctx.path.joinToString(".")) - ctx.builder.translation(langKey) - configValue = getConfigValue(ctx.path.last(), ctx.builder) - } - - var langPrefixOverride: String? = null - fun lang(prefix: String) = apply { langPrefixOverride = prefix } - -} - -class DelegatingBooleanValue(val defaultValue: Boolean) : ConfigDelegate() { - override fun getConfigValue(name: String, builder: ForgeConfigSpec.Builder) = builder.define(name, defaultValue) -} - -class DelegatingIntValue( - val minValue: Int = 0, - val maxValue: Int = 1, - val defaultValue: Int = 0 -) : ConfigDelegate() { - override fun getConfigValue(name: String, builder: ForgeConfigSpec.Builder) = builder.defineInRange(name, defaultValue, minValue, maxValue) -} - -class DelegatingLongValue( - val minValue: Long = 0, - val maxValue: Long = 1, - val defaultValue: Long = 0 -) : ConfigDelegate() { - override fun getConfigValue(name: String, builder: ForgeConfigSpec.Builder) = builder.defineInRange(name, defaultValue, minValue, maxValue) -} - -class DelegatingDoubleValue( - val minValue: Double = 0.0, - val maxValue: Double = 1.0, - val defaultValue: Double = 0.0 -) : ConfigDelegate() { - override fun getConfigValue(name: String, builder: ForgeConfigSpec.Builder) = builder.defineInRange(name, defaultValue, minValue, maxValue) -} - -// ============================ -// Delegate factory methods -// ============================ -fun double(min: Double = 0.0, max: Double = 1.0, default: Double) = DelegatingDoubleValue(min, max, default) -fun int(min: Int = 0, max: Int, default: Int) = DelegatingIntValue(min, max, default) -fun long(min: Long = 0, max: Long, default: Long) = DelegatingLongValue(min, max, default) -fun boolean(default: Boolean) = DelegatingBooleanValue(default) From ff89aa7a13700e75bef55fe2c3c2a2e8d8b3b122 Mon Sep 17 00:00:00 2001 From: octarine-noise Date: Sat, 22 May 2021 17:27:51 +0200 Subject: [PATCH 5/8] add client-only version tester --- src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt b/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt index db57a32..5c8268e 100644 --- a/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt +++ b/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt @@ -11,6 +11,7 @@ import net.minecraft.client.Minecraft import net.minecraft.client.gui.screen.Screen import net.minecraft.util.ResourceLocation import net.minecraftforge.fml.ExtensionPoint.CONFIGGUIFACTORY +import net.minecraftforge.fml.ExtensionPoint.DISPLAYTEST import net.minecraftforge.fml.ModLoadingContext import net.minecraftforge.fml.common.Mod import net.minecraftforge.fml.config.ModConfig @@ -41,6 +42,13 @@ object BetterFoliageMod { ) } } + // Accept-all version tester (we are client-only) + ctx.registerExtensionPoint(DISPLAYTEST) { + Pair.of( + Supplier { "Honk if you see this!" }, + BiPredicate { _, _ -> true } + ) + } Minecraft.getInstance().resourcePackList.addPackFinder(BetterFoliage.asyncPack.finder) bus.register(BlockConfig) From 180c2bf2309b3dcfc18427be2f1324342bae24f8 Mon Sep 17 00:00:00 2001 From: octarine-noise Date: Sat, 22 May 2021 17:29:13 +0200 Subject: [PATCH 6/8] bump version to 2.5.2 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 63e09f8..6d6344e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.daemon=false group = com.github.octarine-noise jarName = BetterFoliage-Forge -version = 2.5.1 +version = 2.5.2 mcVersion = 1.14.4 forgeVersion = 28.2.0 From 57dc83f1af77f453a01680545c92d456c436e5d8 Mon Sep 17 00:00:00 2001 From: octarine-noise Date: Sat, 22 May 2021 17:49:57 +0200 Subject: [PATCH 7/8] config GUI misc fixes --- src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt b/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt index 5c8268e..b4db779 100644 --- a/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt +++ b/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt @@ -6,6 +6,7 @@ import mods.betterfoliage.client.config.BlockConfig import mods.betterfoliage.client.config.MainConfig import mods.octarinecore.common.config.clothGuiRoot import mods.octarinecore.common.config.forgeSpecRoot +import mods.octarinecore.tryDefault import net.alexwells.kottle.FMLKotlinModLoadingContext import net.minecraft.client.Minecraft import net.minecraft.client.gui.screen.Screen @@ -30,14 +31,16 @@ object BetterFoliageMod { init { val ctx = ModLoadingContext.get() - // Config instance + GUI handler val configSpec = config.forgeSpecRoot() ctx.registerConfig(ModConfig.Type.CLIENT, configSpec) - ctx.registerExtensionPoint(CONFIGGUIFACTORY) { BiFunction { client, parent -> + + // Add config GUI extension if Cloth Config is available + val clothLoaded = tryDefault(false) { Class.forName("me.shedaniel.forge.clothconfig2.api.ConfigBuilder"); true } + if (clothLoaded) ctx.registerExtensionPoint(CONFIGGUIFACTORY) { BiFunction { client, parent -> config.clothGuiRoot( parentScreen = parent, prefix = listOf(MOD_ID), - background = ResourceLocation("minecraft:textures/block/spruce_wood.png"), + background = ResourceLocation("minecraft:textures/block/spruce_log.png"), saveAction = { configSpec.save() } ) } } From 25b8896a25b6ce2325319b5eb59306e48fec8df5 Mon Sep 17 00:00:00 2001 From: octarine-noise Date: Sat, 22 May 2021 18:34:18 +0200 Subject: [PATCH 8/8] log config GUI registration --- .../mods/betterfoliage/BetterFoliageMod.kt | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt b/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt index cafd436..ec061de 100644 --- a/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt +++ b/src/main/kotlin/mods/betterfoliage/BetterFoliageMod.kt @@ -51,14 +51,17 @@ object BetterFoliageMod { // Add config GUI extension if Cloth Config is available val clothLoaded = tryDefault(false) { Class.forName("me.shedaniel.forge.clothconfig2.api.ConfigBuilder"); true } - if (clothLoaded) ctx.registerExtensionPoint(CONFIGGUIFACTORY) { BiFunction { client, parent -> - config.clothGuiRoot( - parentScreen = parent, - prefix = listOf(MOD_ID), - background = ResourceLocation("minecraft:textures/block/spruce_log.png"), - saveAction = { configSpec.save() } - ) - } } + if (clothLoaded) { + logger(this).log(Level.INFO, "Cloth Config found, registering GUI") + ctx.registerExtensionPoint(CONFIGGUIFACTORY) { BiFunction { client, parent -> + config.clothGuiRoot( + parentScreen = parent, + prefix = listOf(MOD_ID), + background = ResourceLocation("minecraft:textures/block/spruce_log.png"), + saveAction = { configSpec.save() } + ) + } } + } // Accept-all version tester (we are client-only) ctx.registerExtensionPoint(DISPLAYTEST) {