Industrial glass and pane, models and textures

This commit is contained in:
DBotThePony 2022-01-26 16:00:06 +07:00
parent 1415c34206
commit 3313a3d011
Signed by: DBot
GPG Key ID: DCC23B5715498507
3 changed files with 74 additions and 7 deletions

View File

@ -8,6 +8,8 @@ import net.minecraft.tags.ItemTags
import net.minecraft.tags.Tag
import net.minecraft.world.item.Item
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.IronBarsBlock
import net.minecraftforge.client.model.generators.ModelFile
import net.minecraftforge.common.Tags
import net.minecraftforge.eventbus.api.SubscribeEvent
import net.minecraftforge.fml.common.Mod
@ -56,6 +58,48 @@ object DataGen {
blockStateProvider.block(block)
}
private fun pane(block: Block, textureSide: ResourceLocation, textureRailing: ResourceLocation) {
val name = block.registryName?.path ?: throw IllegalStateException("Invalid state of glass pane $block")
val post = name
val side = "${name}_ne"
val side_alt = "${name}_sw"
val noside = "${name}_noside_ne"
val noside_alt = "${name}_noside_sw"
var mdl_post: ModelFile? = null
var mdl_side: ModelFile? = null
var mdl_side_alt: ModelFile? = null
var mdl_noside: ModelFile? = null
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)
}
}
blockStateProvider.lambda {
check(mdl_post != null) { "DataGen execution order is screwed lmaooooooo" }
with(it.getMultipartBuilder(block)) {
part().modelFile(mdl_post!!).addModel()
part().modelFile(mdl_side!!).addModel().condition(IronBarsBlock.NORTH, true)
part().modelFile(mdl_side!!).rotationY(90).addModel().condition(IronBarsBlock.EAST, true)
part().modelFile(mdl_side_alt!!).addModel().condition(IronBarsBlock.SOUTH, true)
part().modelFile(mdl_side_alt!!).rotationY(90).addModel().condition(IronBarsBlock.WEST, true)
part().modelFile(mdl_noside!!).addModel().condition(IronBarsBlock.NORTH, false)
part().modelFile(mdl_noside!!).rotationY(270).addModel().condition(IronBarsBlock.WEST, false)
part().modelFile(mdl_noside_alt!!).addModel().condition(IronBarsBlock.EAST, false)
part().modelFile(mdl_noside_alt!!).rotationY(90).addModel().condition(IronBarsBlock.SOUTH, false)
}
}
}
@SubscribeEvent
@JvmStatic
@Suppress("unused")
@ -71,6 +115,9 @@ object DataGen {
event.generator.addProvider(blockStateProvider)
event.generator.addProvider(blockStateProvider)
event.generator.addProvider(recipeProvider)
event.generator.addProvider(MatterBankProvider(event))
event.generator.addProvider(BatteryBankProvider(event))
event.generator.addProvider(lootTableProvider)
decorativeCubeAll(*Blocks.CRATES)
decorativeCubeAll(Blocks.CARBON_FIBRE_BLOCK)
@ -86,6 +133,13 @@ object DataGen {
decorativeColumn(Blocks.TRITANIUM_STRIPED_BLOCK, "tritanium_striped_block", "tritanium_block")
for (glass in Registry.INDUSTRIAL_GLASS_LIST) {
val name = glass.block.registryName?.path ?: throw IllegalStateException("Invalid state of glass block ${glass.block}")
val textureSide = ResourceLocation(MOD_ID, "block/decorative/$name")
val textureRailing = textureSide
pane(glass.pane, textureSide, textureRailing)
}
with(blockModelProvider) {
lambda {
copy("block/battery/battery1", "block/battery/battery0").also { it.offset(-4f, 0f, 0f) }
@ -120,14 +174,7 @@ object DataGen {
ore(Blocks.DEEPSLATE_TRITANIUM_ORE)
ore(Blocks.TRITANIUM_ORE)
ore(Blocks.TRITANIUM_RAW_BLOCK)
}
event.generator.addProvider(MatterBankProvider(event))
event.generator.addProvider(BatteryBankProvider(event))
event.generator.addProvider(lootTableProvider)
with(blockStateProvider) {
block(Blocks.CHEMICAL_GENERATOR)
block(Blocks.MATTER_SCANNER)
block(Blocks.ITEM_MONITOR)
@ -153,6 +200,11 @@ object DataGen {
block(Items.ITEM_MONITOR)
block(Items.TRITANIUM_BLOCK)
for (glass in Registry.INDUSTRIAL_GLASS_LIST) {
block(glass.item)
generated(glass.paneItem, ResourceLocation(MOD_ID, "block/decorative/${glass.item.registryName!!.path}"))
}
blocks(*Items.CRATES)
components(*Items.DATAGEN_COMPONENTS)

View File

@ -40,6 +40,8 @@ class MatteryItemModelProvider(event: GatherDataEvent) : ItemModelProvider(event
}
fun generated(vararg items: Item) = items.forEach { generated(it, ResourceLocation(DataGen.MOD_ID, "item/${it.registryName!!.path}")) }
fun generatedBlock(vararg items: Item) = items.forEach { generated(it, ResourceLocation(DataGen.MOD_ID, "block/${it.registryName!!.path}")) }
fun generatedBlockDecorative(vararg items: Item) = items.forEach { generated(it, ResourceLocation(DataGen.MOD_ID, "block/decorative/${it.registryName!!.path}")) }
fun handheld(vararg items: Item) = items.forEach { handheld(it, ResourceLocation(DataGen.MOD_ID, "item/${it.registryName!!.path}")) }
fun generated(item: Item, prefix: String) = generated(item, ResourceLocation(DataGen.MOD_ID, "item/${prefix}${item.registryName!!.path}"))

View File

@ -2,6 +2,8 @@ package ru.dbotthepony.mc.otm;
import net.minecraft.ChatFormatting;
import net.minecraft.client.gui.screens.MenuScreens;
import net.minecraft.client.renderer.ItemBlockRenderTypes;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.blockentity.BlockEntityRenderers;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TextComponent;
@ -554,6 +556,17 @@ public class Registry {
// OverdriveThatMatters.LOGGER.info("Registered blocks");
}
@SubscribeEvent
@SuppressWarnings("unused")
public static void registerClient(final FMLClientSetupEvent event) {
final var translucent = RenderType.translucent();
for (var glass : INDUSTRIAL_GLASS_LIST) {
ItemBlockRenderTypes.setRenderLayer(glass.block, translucent);
ItemBlockRenderTypes.setRenderLayer(glass.pane, translucent);
}
}
}
public static class Items {