parent
5946413b7a
commit
b53d19308e
@ -9,7 +9,6 @@ import net.minecraft.world.level.block.Block
|
||||
import net.minecraft.world.level.block.IronBarsBlock
|
||||
import net.minecraftforge.client.model.generators.ConfiguredModel
|
||||
import net.minecraftforge.client.model.generators.ModelFile
|
||||
import net.minecraftforge.common.Tags
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent
|
||||
import net.minecraftforge.fml.common.Mod
|
||||
import net.minecraftforge.data.event.GatherDataEvent
|
||||
@ -26,7 +25,7 @@ import ru.dbotthepony.mc.otm.datagen.loot.LootModifiers
|
||||
import ru.dbotthepony.mc.otm.datagen.items.MatteryItemModelProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.lang.AddEnglishLanguage
|
||||
import ru.dbotthepony.mc.otm.datagen.loot.LootTables
|
||||
import ru.dbotthepony.mc.otm.datagen.models.BlockMatteryModelProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.models.MatteryBlockModelProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.recipes.MatteryRecipeProvider
|
||||
import ru.dbotthepony.mc.otm.datagen.recipes.has
|
||||
import ru.dbotthepony.mc.otm.registry.*
|
||||
@ -44,7 +43,7 @@ import ru.dbotthepony.mc.otm.registry.objects.DecorativeBlock
|
||||
object DataGen {
|
||||
const val MOD_ID = OverdriveThatMatters.MOD_ID
|
||||
|
||||
private lateinit var blockModelProvider: BlockMatteryModelProvider
|
||||
private lateinit var blockModelProvider: MatteryBlockModelProvider
|
||||
private lateinit var itemModelProvider: MatteryItemModelProvider
|
||||
private lateinit var blockStateProvider: MatteryBlockStateProvider
|
||||
private lateinit var lootTableProvider: LootTables
|
||||
@ -98,12 +97,12 @@ object DataGen {
|
||||
var mdl_noside_alt: ModelFile? = null
|
||||
|
||||
with(blockModelProvider) {
|
||||
lambda {
|
||||
mdl_post = panePost(post, textureSide, textureRailing)
|
||||
mdl_side = paneSide(side, textureSide, textureRailing)
|
||||
mdl_side_alt = paneSideAlt(side_alt, textureSide, textureRailing)
|
||||
mdl_noside = paneNoSide(noside, textureSide)
|
||||
mdl_noside_alt = paneNoSideAlt(noside_alt, textureSide)
|
||||
exec {
|
||||
mdl_post = panePost(post, textureSide, textureRailing).renderType("translucent")
|
||||
mdl_side = paneSide(side, textureSide, textureRailing).renderType("translucent")
|
||||
mdl_side_alt = paneSideAlt(side_alt, textureSide, textureRailing).renderType("translucent")
|
||||
mdl_noside = paneNoSide(noside, textureSide).renderType("translucent")
|
||||
mdl_noside_alt = paneNoSideAlt(noside_alt, textureSide).renderType("translucent")
|
||||
}
|
||||
}
|
||||
|
||||
@ -188,13 +187,21 @@ object DataGen {
|
||||
@JvmStatic
|
||||
@Suppress("unused")
|
||||
fun onGatherData(event: GatherDataEvent) {
|
||||
blockModelProvider = BlockMatteryModelProvider(event)
|
||||
blockStateProvider = MatteryBlockStateProvider(event)
|
||||
itemModelProvider = MatteryItemModelProvider(event)
|
||||
lootTableProvider = LootTables(event.generator)
|
||||
recipeProvider = MatteryRecipeProvider(event.generator)
|
||||
lootModifier = LootModifiers(event.generator)
|
||||
languageProvider = MatteryLanguageProvider(event.generator)
|
||||
val blockModelProvider = MatteryBlockModelProvider(event)
|
||||
val blockStateProvider = MatteryBlockStateProvider(event)
|
||||
val itemModelProvider = MatteryItemModelProvider(event)
|
||||
val lootTableProvider = LootTables(event.generator)
|
||||
val recipeProvider = MatteryRecipeProvider(event.generator)
|
||||
val lootModifier = LootModifiers(event.generator)
|
||||
val languageProvider = MatteryLanguageProvider(event.generator)
|
||||
|
||||
this.blockModelProvider = blockModelProvider
|
||||
this.blockStateProvider = blockStateProvider
|
||||
this.itemModelProvider = itemModelProvider
|
||||
this.lootTableProvider = lootTableProvider
|
||||
this.recipeProvider = recipeProvider
|
||||
this.lootModifier = lootModifier
|
||||
this.languageProvider = languageProvider
|
||||
|
||||
val tagsProvider = TagsProvider(event)
|
||||
|
||||
@ -228,9 +235,8 @@ object DataGen {
|
||||
decoratives(MRegistry.VENT)
|
||||
decoratives(MRegistry.VENT_ALTERNATIVE)
|
||||
|
||||
for (glass in MRegistry.INDUSTRIAL_GLASS.allBlocks.values) {
|
||||
decorativeCubeAll(glass)
|
||||
}
|
||||
blockModelProvider.decorativeGlassAll(MRegistry.INDUSTRIAL_GLASS.allBlocks.values)
|
||||
blockStateProvider.simpleBlockM(MRegistry.INDUSTRIAL_GLASS.allBlocks.values)
|
||||
|
||||
for ((block, colors) in MRegistry.TRITANIUM_STRIPED_BLOCK.blocksWithColor) {
|
||||
decorativeColumn(block, "stripe/${block.registryName!!.path}", "tritanium_block_${colors.first.name.lowercase()}")
|
||||
@ -240,7 +246,7 @@ object DataGen {
|
||||
blockModelProvider.resourceCubeAll(MBlocks.TRITANIUM_RAW_BLOCK)
|
||||
blockModelProvider.resourceCubeAll(MBlocks.DEEPSLATE_TRITANIUM_ORE)
|
||||
|
||||
blockModelProvider.lambda {
|
||||
blockModelProvider.exec {
|
||||
for (crate in MRegistry.CARGO_CRATES.blocks.values) {
|
||||
it.withExistingParent("${crate.registryName!!.path}_closed", ResourceLocation(OverdriveThatMatters.MOD_ID, "${MNames.CARGO_CRATE}_closed"))
|
||||
.texture("texture", "block/cargo_crates/${crate.registryName!!.path}")
|
||||
@ -254,15 +260,15 @@ object DataGen {
|
||||
|
||||
decorativeColumn(MBlocks.TRITANIUM_STRIPED_BLOCK, "tritanium_striped_block", "tritanium_block")
|
||||
|
||||
for ((color, glass) in MRegistry.INDUSTRIAL_GLASS_PANE.blocks) {
|
||||
val name = MRegistry.INDUSTRIAL_GLASS.blocks[color]!!.registryName!!.path
|
||||
for ((color, glass) in MRegistry.INDUSTRIAL_GLASS_PANE.allBlocks) {
|
||||
val name = MRegistry.INDUSTRIAL_GLASS.allBlocks[color]!!.registryName!!.path
|
||||
val textureSide = ResourceLocation(MOD_ID, "block/decorative/$name")
|
||||
val textureRailing = ResourceLocation(MOD_ID, "block/decorative/industrial_glass_frame")
|
||||
pane(glass, textureSide, textureRailing)
|
||||
}
|
||||
|
||||
with(blockModelProvider) {
|
||||
lambda {
|
||||
exec {
|
||||
copy("block/battery/battery1", "block/battery/battery0").also { it.offset(-4f, 0f, 0f) }
|
||||
copy("block/battery/battery2", "block/battery/battery0").also { it.offset(-8f, 0f, 0f) }
|
||||
|
||||
@ -444,7 +450,7 @@ object DataGen {
|
||||
}
|
||||
|
||||
for ((color, glass) in MRegistry.INDUSTRIAL_GLASS_PANE.allItems) {
|
||||
generated(glass, ResourceLocation(MOD_ID, "block/decorative/${MRegistry.INDUSTRIAL_GLASS.allItems[color]!!.registryName!!.path}"))
|
||||
generatedTranslucent(glass, ResourceLocation(MOD_ID, "block/decorative/${MRegistry.INDUSTRIAL_GLASS.allItems[color]!!.registryName!!.path}"))
|
||||
}
|
||||
|
||||
blocks(MRegistry.DECORATIVE_CRATE.allItems.values)
|
||||
|
@ -62,7 +62,7 @@ class MatteryBlockStateProvider(event: GatherDataEvent) : BlockStateProvider(eve
|
||||
this.simpleBlocks.addAll(blocks)
|
||||
}
|
||||
|
||||
fun simpleBlockM(blocks: List<Block>) {
|
||||
fun simpleBlockM(blocks: Collection<Block>) {
|
||||
this.simpleBlocks.addAll(blocks)
|
||||
}
|
||||
|
||||
|
@ -7,62 +7,37 @@ import net.minecraftforge.data.event.GatherDataEvent
|
||||
import org.apache.logging.log4j.LogManager
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
|
||||
private data class SimpleItemModel(val item: String, val path: ResourceLocation) {
|
||||
val traceback = IllegalArgumentException("Failed to register model")
|
||||
}
|
||||
import java.util.LinkedList
|
||||
|
||||
class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event.generator, DataGen.MOD_ID, event.existingFileHelper) {
|
||||
private val generated = ArrayList<SimpleItemModel>()
|
||||
private val handheld = ArrayList<SimpleItemModel>()
|
||||
private val delegates = ArrayList<SimpleItemModel>()
|
||||
private val callbacks = LinkedList<() -> Unit>()
|
||||
|
||||
fun exec(func: () -> Unit): MatteryItemModelProvider {
|
||||
callbacks.add(func)
|
||||
return this
|
||||
}
|
||||
|
||||
override fun registerModels() {
|
||||
for (obj in generated) {
|
||||
val (item, path) = obj
|
||||
|
||||
try {
|
||||
withExistingParent(item, GENERATED).texture("layer0", path)
|
||||
} catch(err: Throwable) {
|
||||
LOGGER.error(err, obj.traceback)
|
||||
throw err
|
||||
for (callback in callbacks) {
|
||||
callback.invoke()
|
||||
}
|
||||
}
|
||||
|
||||
for (obj in handheld) {
|
||||
val (item, path) = obj
|
||||
|
||||
try {
|
||||
withExistingParent(item, HANDHELD).texture("layer0", path)
|
||||
} catch(err: Throwable) {
|
||||
LOGGER.error(err, obj.traceback)
|
||||
throw err
|
||||
}
|
||||
}
|
||||
|
||||
for (obj in delegates) {
|
||||
val (item, path) = obj
|
||||
|
||||
try {
|
||||
withExistingParent(item, path)
|
||||
} catch(err: Throwable) {
|
||||
LOGGER.error(err, obj.traceback)
|
||||
throw err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun block(item: Item) = delegates.add(SimpleItemModel(item.registryName!!.path, ResourceLocation(DataGen.MOD_ID, "block/${item.registryName!!.path}")))
|
||||
fun block(item: Item, path: String) = delegates.add(SimpleItemModel(item.registryName!!.path, ResourceLocation(DataGen.MOD_ID, "block/$path")))
|
||||
fun block(item: Item) = exec { withExistingParent(item.registryName!!.path, ResourceLocation(DataGen.MOD_ID, "block/${item.registryName!!.path}")) }
|
||||
fun block(item: Item, path: String) = exec { withExistingParent(item.registryName!!.path, ResourceLocation(DataGen.MOD_ID, "block/$path")) }
|
||||
fun blocks(vararg items: Item) = items.forEach(this::block)
|
||||
fun blocks(items: Collection<Item>) = items.forEach(this::block)
|
||||
|
||||
fun generated(item: Item, texture: ResourceLocation) {
|
||||
generated.add(SimpleItemModel(item.registryName!!.path, texture))
|
||||
fun generated(item: Item, texture: ResourceLocation) = exec {
|
||||
withExistingParent(item.registryName!!.path, GENERATED).texture("layer0", texture)
|
||||
}
|
||||
|
||||
fun handheld(item: Item, texture: ResourceLocation) {
|
||||
handheld.add(SimpleItemModel(item.registryName!!.path, texture))
|
||||
fun generatedTranslucent(item: Item, texture: ResourceLocation) = exec {
|
||||
withExistingParent(item.registryName!!.path, GENERATED).texture("layer0", texture).renderType("translucent")
|
||||
}
|
||||
|
||||
fun handheld(item: Item, texture: ResourceLocation) = exec {
|
||||
withExistingParent(item.registryName!!.path, HANDHELD).texture("layer0", texture)
|
||||
}
|
||||
|
||||
fun generated(vararg items: Item) = items.forEach { generated(it, ResourceLocation(DataGen.MOD_ID, "item/${it.registryName!!.path}")) }
|
||||
|
@ -9,6 +9,7 @@ import net.minecraftforge.client.model.generators.ModelProvider
|
||||
import net.minecraftforge.data.event.GatherDataEvent
|
||||
import ru.dbotthepony.mc.otm.datagen.DataGen
|
||||
import ru.dbotthepony.mc.otm.core.registryName
|
||||
import java.util.LinkedList
|
||||
|
||||
private typealias Callback = (MatteryModelProvider) -> Unit
|
||||
|
||||
@ -39,9 +40,9 @@ sealed class MatteryModelProvider(event: GatherDataEvent, folder: String) : Mode
|
||||
}
|
||||
}
|
||||
|
||||
private val callbacks = ArrayList<Callback>()
|
||||
private val callbacks = LinkedList<Callback>()
|
||||
|
||||
fun lambda(callback: Callback) {
|
||||
fun exec(callback: Callback) {
|
||||
callbacks.add(callback)
|
||||
}
|
||||
|
||||
@ -52,59 +53,69 @@ sealed class MatteryModelProvider(event: GatherDataEvent, folder: String) : Mode
|
||||
}
|
||||
}
|
||||
|
||||
private data class CubeAllEntry(val path: String, val texture: ResourceLocation)
|
||||
private data class CubeColumnEntry(val path: String, val end: ResourceLocation, val side: ResourceLocation)
|
||||
|
||||
class BlockMatteryModelProvider(event: GatherDataEvent) : MatteryModelProvider(event, BLOCK_FOLDER) {
|
||||
class MatteryBlockModelProvider(event: GatherDataEvent) : MatteryModelProvider(event, BLOCK_FOLDER) {
|
||||
override fun getName(): String {
|
||||
return "Block Models: $modid"
|
||||
}
|
||||
|
||||
private val cubeAll = ArrayList<CubeAllEntry>()
|
||||
private val cubeColumn = ArrayList<CubeColumnEntry>()
|
||||
|
||||
override fun registerModels() {
|
||||
super.registerModels()
|
||||
|
||||
for ((path, texture) in cubeAll) {
|
||||
cubeAll(path, texture)
|
||||
fun decorativeGlassAll(blocks: Collection<Block>) {
|
||||
for (block in blocks) {
|
||||
exec {
|
||||
cubeAll(block.registryName!!.path, ResourceLocation(DataGen.MOD_ID, "block/decorative/${block.registryName!!.path}")).renderType("translucent")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for ((path, end, side) in cubeColumn) {
|
||||
cubeColumn(path, end, side)
|
||||
fun decorativeGlassAll(vararg blocks: Block) {
|
||||
for (block in blocks) {
|
||||
exec {
|
||||
cubeAll(block.registryName!!.path, ResourceLocation(DataGen.MOD_ID, "block/decorative/${block.registryName!!.path}")).renderType("translucent")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun decorativeCubeAll(vararg blocks: Block) {
|
||||
for (it in blocks) {
|
||||
cubeAll.add(CubeAllEntry(it.registryName!!.path, ResourceLocation("overdrive_that_matters:block/decorative/${it.registryName!!.path}")))
|
||||
for (block in blocks) {
|
||||
exec {
|
||||
cubeAll(block.registryName!!.path, ResourceLocation(DataGen.MOD_ID, "block/decorative/${block.registryName!!.path}"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun decorativeCubeAll(subdir: String, vararg blocks: Block) {
|
||||
for (it in blocks) {
|
||||
cubeAll.add(CubeAllEntry(it.registryName!!.path, ResourceLocation("overdrive_that_matters:block/decorative/${subdir}/${it.registryName!!.path}")))
|
||||
for (block in blocks) {
|
||||
exec {
|
||||
cubeAll(block.registryName!!.path, ResourceLocation(DataGen.MOD_ID, "block/decorative/${subdir}/${block.registryName!!.path}"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun decorativeCubeAll(subdir: String, suffix: String, vararg blocks: Block) {
|
||||
for (it in blocks) {
|
||||
cubeAll.add(CubeAllEntry(it.registryName!!.path, ResourceLocation("overdrive_that_matters:block/decorative/${subdir}/${it.registryName!!.path}$suffix")))
|
||||
for (block in blocks) {
|
||||
exec {
|
||||
cubeAll(block.registryName!!.path, ResourceLocation(DataGen.MOD_ID, "block/decorative/${subdir}/${block.registryName!!.path}$suffix"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun decorativeCubeAll(blocks: Collection<Block>) {
|
||||
for (it in blocks) {
|
||||
cubeAll.add(CubeAllEntry(it.registryName!!.path, ResourceLocation("overdrive_that_matters:block/decorative/${it.registryName!!.path}")))
|
||||
for (block in blocks) {
|
||||
exec {
|
||||
cubeAll(block.registryName!!.path, ResourceLocation(DataGen.MOD_ID, "block/decorative/${block.registryName!!.path}"))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun decorativeCubeAll(block: Block, texture: String) {
|
||||
cubeAll.add(CubeAllEntry(block.registryName!!.path, ResourceLocation("overdrive_that_matters:block/decorative/$texture")))
|
||||
exec {
|
||||
cubeAll(block.registryName!!.path, ResourceLocation(DataGen.MOD_ID, "block/decorative/$texture"))
|
||||
}
|
||||
}
|
||||
|
||||
fun column(it: Block, end: String, side: String) {
|
||||
cubeColumn.add(CubeColumnEntry(it.registryName!!.path, ResourceLocation(DataGen.MOD_ID, end), ResourceLocation(DataGen.MOD_ID, side)))
|
||||
fun column(block: Block, end: String, side: String) {
|
||||
exec {
|
||||
cubeColumn(block.registryName!!.path, ResourceLocation(DataGen.MOD_ID, end), ResourceLocation(DataGen.MOD_ID, side))
|
||||
}
|
||||
}
|
||||
|
||||
fun decorativeColumn(it: Block, end: String, side: String) {
|
||||
@ -112,8 +123,10 @@ class BlockMatteryModelProvider(event: GatherDataEvent) : MatteryModelProvider(e
|
||||
}
|
||||
|
||||
fun resourceCubeAll(vararg blocks: Block) {
|
||||
for (it in blocks) {
|
||||
cubeAll.add(CubeAllEntry(it.registryName!!.path, ResourceLocation("overdrive_that_matters:block/resource/${it.registryName!!.path}")))
|
||||
for (block in blocks) {
|
||||
exec {
|
||||
cubeAll(block.registryName!!.path, ResourceLocation(DataGen.MOD_ID, "block/resource/${block.registryName!!.path}"))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -27,19 +27,6 @@ object MBlocks {
|
||||
|
||||
internal fun register(bus: IEventBus) {
|
||||
registry.register(bus)
|
||||
bus.addListener(this::registerClient)
|
||||
}
|
||||
|
||||
private fun registerClient(event: FMLClientSetupEvent) {
|
||||
val translucent = RenderType.translucent()
|
||||
|
||||
for (block in MRegistry.INDUSTRIAL_GLASS.blocks.values) {
|
||||
ItemBlockRenderTypes.setRenderLayer(block, translucent)
|
||||
}
|
||||
|
||||
for (block in MRegistry.INDUSTRIAL_GLASS_PANE.blocks.values) {
|
||||
ItemBlockRenderTypes.setRenderLayer(block, translucent)
|
||||
}
|
||||
}
|
||||
|
||||
val ANDROID_STATION: Block by registry.register(MNames.ANDROID_STATION) { AndroidStationBlock() }
|
||||
|
Loading…
Reference in New Issue
Block a user