Revert "генерируем перекрашенные текстуры в рантайме"

This reverts commit 13d76df9fa.
This commit is contained in:
DBotThePony 2025-02-21 21:32:20 +07:00
parent 4712cf4b35
commit b4fc02b14e
Signed by: DBot
GPG Key ID: DCC23B5715498507
565 changed files with 1 additions and 163 deletions

View File

@ -54,7 +54,6 @@ import ru.dbotthepony.mc.otm.datagen.tags.addMineableTags
import ru.dbotthepony.mc.otm.datagen.tags.addResourceTags
import ru.dbotthepony.mc.otm.datagen.tags.addSuspiciousTags
import ru.dbotthepony.mc.otm.datagen.tags.addTags
import ru.dbotthepony.mc.otm.datagen.textures.ColorizedSpritesProvider
import ru.dbotthepony.mc.otm.matter.MatterDataProvider
import ru.dbotthepony.mc.otm.registry.game.MBlocks
import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock
@ -493,7 +492,6 @@ object DataGen {
@SubscribeEvent
@Suppress("unused")
fun onGatherData(event: GatherDataEvent) {
val colorizedSpritesProvider = ColorizedSpritesProvider(event)
val blockModelProvider = MatteryBlockModelProvider(event)
val blockStateProvider = MatteryBlockStateProvider(event)
val itemModelProvider = MatteryItemModelProvider(event)
@ -531,7 +529,6 @@ object DataGen {
addMineableTags(tagsProvider)
addDyeTags(tagsProvider)
event.generator.addProvider(event.includeClient(), colorizedSpritesProvider)
event.generator.addProvider(event.includeClient(), blockModelProvider)
event.generator.addProvider(event.includeServer(), blockStateProvider)
event.generator.addProvider(event.includeClient(), itemModelProvider)

View File

@ -118,10 +118,7 @@ class MatteryBlockModelProvider(event: GatherDataEvent) : BlockModelProvider(eve
val model = withExistingParent(modelName + "_${color.name.lowercase()}$suffix", modLocation(modelName + suffix))
for ((key, value) in textureKeys) {
val loc = modLocation("block/$value/${color.name.lowercase()}")
existingFileHelper.trackGenerated(loc, TEXTURE)
model.texture(key, loc)
model.texture(key, modLocation("block/$value/${color.name.lowercase()}"))
}
}
}

View File

@ -1,61 +0,0 @@
package ru.dbotthepony.mc.otm.datagen.textures
import net.minecraft.resources.ResourceLocation
import net.neoforged.neoforge.common.data.SpriteSourceProvider
import net.neoforged.neoforge.data.event.GatherDataEvent
import ru.dbotthepony.mc.otm.client.render.ColorizedSpriteSource
import ru.dbotthepony.mc.otm.datagen.DataGen
import ru.dbotthepony.mc.otm.datagen.modLocation
class ColorizedSpritesProvider(event: GatherDataEvent) : SpriteSourceProvider(event.generator.packOutput, event.lookupProvider, DataGen.MOD_ID, event.existingFileHelper) {
fun getMaskedTextureMap(paths: List<String>) : Map<ResourceLocation, ResourceLocation> {
val map: MutableMap<ResourceLocation, ResourceLocation> = mutableMapOf()
paths.forEach { map[modLocation(it)] = modLocation(it + "_mask") }
return map
}
override fun gather() {
atlas(BLOCKS_ATLAS).addSource(
ColorizedSpriteSource(getMaskedTextureMap(listOf(
"block/android_charger",
"block/android_station_base",
"block/batterybank_frame",
"block/chemical_generator",
"block/cobblestone_generator",
"block/decorative/computer_base",
"block/decorative/computer_screen",
"block/drive_viewer",
"block/electric_furnace",
"block/electric_furnace_offline",
"block/energy_counter",
"block/energy_servo",
"block/essence_storage",
"block/induction_furnace",
"block/induction_furnace_offline",
"block/item_monitor",
"block/matter_bottler",
"block/matter_decomposer",
"block/matter_panel",
"block/matter_reconstructor",
"block/matter_recycler",
"block/matter_replicator_base",
"block/matter_replicator_halted",
"block/matter_replicator",
"block/matter_replicator_offline",
"block/matter_scanner",
"block/mattercapacitorbank_frame",
"block/plate_press",
"block/plate_press2",
"block/powered_smoker_base",
"block/powered_smoker_interior_0",
"block/powered_smoker_interior_1",
"block/powered_smoker_interior_2",
"block/decorative/star_chair",
"block/storage_power_supplier",
"block/water_source"
)))
)
}
}

View File

@ -36,7 +36,6 @@ import ru.dbotthepony.mc.otm.client.onClientDisconnected
import ru.dbotthepony.mc.otm.client.onClientPostRender
import ru.dbotthepony.mc.otm.client.tooltipEvent
import ru.dbotthepony.mc.otm.client.render.ChartTooltipElement
import ru.dbotthepony.mc.otm.client.render.ColorizedSpriteSource
import ru.dbotthepony.mc.otm.client.render.ShockwaveRenderer
import ru.dbotthepony.mc.otm.client.render.blockentity.BatteryBankRenderer
import ru.dbotthepony.mc.otm.client.render.blockentity.MatterBatteryBankRenderer
@ -159,8 +158,6 @@ object OverdriveThatMatters {
MOD_BUS.addListener(EventPriority.NORMAL, ChartTooltipElement.Companion::register)
MOD_BUS.addListener(EventPriority.NORMAL, MatteryTooltipComponents::registerComponents)
MOD_BUS.addListener(EventPriority.NORMAL, ColorizedSpriteSource::register)
MOD_BUS.addListener(EventPriority.HIGH, MatteryGUI::registerGuiLayers)
MBlockColors.register(MOD_BUS)

View File

@ -1,92 +0,0 @@
package ru.dbotthepony.mc.otm.client.render
import com.mojang.serialization.Codec
import com.mojang.serialization.MapCodec
import com.mojang.serialization.codecs.RecordCodecBuilder
import net.minecraft.client.renderer.texture.SpriteContents
import net.minecraft.client.renderer.texture.atlas.SpriteResourceLoader
import net.minecraft.client.renderer.texture.atlas.SpriteSource
import net.minecraft.client.renderer.texture.atlas.SpriteSource.TEXTURE_ID_CONVERTER
import net.minecraft.client.renderer.texture.atlas.SpriteSourceType
import net.minecraft.client.renderer.texture.atlas.sources.LazyLoadedImage
import net.minecraft.client.resources.metadata.animation.FrameSize
import net.minecraft.resources.ResourceLocation
import net.minecraft.server.packs.resources.ResourceManager
import net.minecraft.server.packs.resources.ResourceMetadata
import net.minecraft.world.item.DyeColor
import net.neoforged.neoforge.client.event.RegisterSpriteSourceTypesEvent
import ru.dbotthepony.kommons.math.RGBAColor
import ru.dbotthepony.mc.otm.OverdriveThatMatters.loc
class ColorizedSpriteSource(val textures: Map<ResourceLocation, ResourceLocation>) : SpriteSource {
override fun run(
manager: ResourceManager,
output: SpriteSource.Output
) {
for (entry in textures) {
val baseRes = manager.getResource(TEXTURE_ID_CONVERTER.idToFile(entry.key)).get()
val maskRes = manager.getResource(TEXTURE_ID_CONVERTER.idToFile(entry.value)).get()
DyeColor.entries.forEach {
val outputLocation = entry.key.withSuffix("/" + it.serializedName)
val baseImage = LazyLoadedImage(entry.key, baseRes, 1)
val maskImage = LazyLoadedImage(entry.value, maskRes, 1)
output.add(outputLocation, Supplier(baseImage, maskImage, it, outputLocation))
}
}
}
override fun type(): SpriteSourceType {
return SPRITE_SOURCE!!
}
class Supplier(val baseImage: LazyLoadedImage, val maskImage: LazyLoadedImage, val color: DyeColor, val outputLocation: ResourceLocation) : SpriteSource.SpriteSupplier {
override fun apply(t: SpriteResourceLoader?): SpriteContents? {
val base = baseImage.get()
val mask = maskImage.get()
if (base.width != mask.width || base.height != mask.height) {
throw IllegalArgumentException("Base image doesn't match mask in texture size")
}
val diffCol = RGBAColor.argb(color.textureDiffuseColor)
mask.applyToAllPixels {
val a = (it and -0x1000000 ushr 24) / 255f
val b = (it and 0xFF0000 ushr 16) / 255f
val g = (it and 0xFF00 ushr 8) / 255f
val r = (it and 0xFF) / 255f
RGBAColor(r * diffCol.red, g * diffCol.green, b * diffCol.blue, a).toRGBA()
}
for (i in 0 until base.width) {
for (j in 0 until base.height) {
base.blendPixel(i, j, mask.getPixelRGBA(i, j))
}
}
maskImage.release()
return SpriteContents(outputLocation, FrameSize(base.width, base.height), base, ResourceMetadata.EMPTY)
}
}
companion object {
val LOCATION = loc("colorized")
private val CODEC: MapCodec<ColorizedSpriteSource> = RecordCodecBuilder.mapCodec {
it.group(
Codec.unboundedMap(ResourceLocation.CODEC, ResourceLocation.CODEC).fieldOf("textures").forGetter { it.textures }
).apply(it, ::ColorizedSpriteSource)
}
var SPRITE_SOURCE: SpriteSourceType? = null
fun register(event: RegisterSpriteSourceTypesEvent) {
SPRITE_SOURCE = event.register(LOCATION, CODEC)
}
}
}

Binary file not shown.

After

(image error) Size: 836 B

Binary file not shown.

After

(image error) Size: 836 B

Binary file not shown.

After

(image error) Size: 836 B

Binary file not shown.

After

(image error) Size: 836 B

Binary file not shown.

After

(image error) Size: 836 B

Binary file not shown.

After

(image error) Size: 836 B

Binary file not shown.

After

(image error) Size: 836 B

Binary file not shown.

After

(image error) Size: 836 B

Binary file not shown.

After

(image error) Size: 836 B

Binary file not shown.

After

(image error) Size: 836 B

Binary file not shown.

After

(image error) Size: 836 B

Binary file not shown.

After

(image error) Size: 836 B

Binary file not shown.

After

(image error) Size: 836 B

Binary file not shown.

After

(image error) Size: 836 B

Binary file not shown.

After

(image error) Size: 648 B

Binary file not shown.

After

(image error) Size: 648 B

Binary file not shown.

After

(image error) Size: 648 B

Binary file not shown.

After

(image error) Size: 648 B

Binary file not shown.

After

(image error) Size: 648 B

Binary file not shown.

After

(image error) Size: 648 B

Binary file not shown.

After

(image error) Size: 648 B

Binary file not shown.

After

(image error) Size: 648 B

Binary file not shown.

After

(image error) Size: 648 B

Binary file not shown.

After

(image error) Size: 732 B

Binary file not shown.

After

(image error) Size: 799 B

Binary file not shown.

After

(image error) Size: 799 B

Binary file not shown.

After

(image error) Size: 799 B

Binary file not shown.

After

(image error) Size: 799 B

Binary file not shown.

After

(image error) Size: 799 B

Binary file not shown.

After

(image error) Size: 799 B

Some files were not shown because too many files have changed in this diff Show More