From 49d4f8aa312b4bb01e9f662a9caffdd0460bc227 Mon Sep 17 00:00:00 2001 From: octarine-noise Date: Fri, 30 Apr 2021 12:28:34 +0200 Subject: [PATCH] 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()