Painted tritanium anvil
@ -34,6 +34,10 @@ const child_process = require('child_process');
|
|||||||
const bSize = (await getSize(fBase))[2]
|
const bSize = (await getSize(fBase))[2]
|
||||||
const mSize = (await getSize(fMask))[2]
|
const mSize = (await getSize(fMask))[2]
|
||||||
|
|
||||||
|
if (subfolder !== '') {
|
||||||
|
fs.mkdirSync(`${fullBaseFolder}/${subfolder}`, {recursive: true})
|
||||||
|
}
|
||||||
|
|
||||||
if (bSize != mSize) {
|
if (bSize != mSize) {
|
||||||
process.stderr.write(`${fBase} has size of ${bSize}, ${fMask} has size of ${mSize}!\n`)
|
process.stderr.write(`${fBase} has size of ${bSize}, ${fMask} has size of ${mSize}!\n`)
|
||||||
process.exit(3)
|
process.exit(3)
|
||||||
|
4
color datagen/tritanium_anvil.sh
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
node ./base_with_mask.js block/tritanium_anvil block/tritanium_anvil_mask tritanium_anvil
|
||||||
|
node ./base_with_mask.js block/tritanium_anvil_top block/tritanium_anvil_top_mask tritanium_anvil_top
|
@ -1,5 +1,6 @@
|
|||||||
package ru.dbotthepony.mc.otm.datagen
|
package ru.dbotthepony.mc.otm.datagen
|
||||||
|
|
||||||
|
import net.minecraft.world.item.DyeColor
|
||||||
import net.minecraft.world.level.block.AnvilBlock
|
import net.minecraft.world.level.block.AnvilBlock
|
||||||
import net.minecraft.world.level.block.SlabBlock
|
import net.minecraft.world.level.block.SlabBlock
|
||||||
import net.minecraft.world.level.block.StairBlock
|
import net.minecraft.world.level.block.StairBlock
|
||||||
@ -37,13 +38,32 @@ fun addDecorativeData(blockStateProvider: MatteryBlockStateProvider, itemModelPr
|
|||||||
|
|
||||||
DataGen.decoratives(MRegistry.TRITANIUM_BLOCK)
|
DataGen.decoratives(MRegistry.TRITANIUM_BLOCK)
|
||||||
|
|
||||||
for (anvil in MBlocks.TRITANIUM_ANVIL) {
|
for (color in DyeColor.entries) {
|
||||||
blockStateProvider.exec {
|
blockModelProvider.exec {
|
||||||
blockStateProvider.getVariantBuilder(anvil).forAllStates {
|
blockModelProvider.withExistingParent("block/tritanium_anvil0_${color.name.lowercase()}", "${DataGen.MOD_ID}:block/tritanium_anvil0")
|
||||||
ConfiguredModel.builder()
|
.texture("3", modLocation("block/tritanium_anvil/${color.name.lowercase()}"))
|
||||||
.modelFile(blockStateProvider.models().getExistingFile(modLocation("block/${anvil.registryName!!.path}")))
|
.texture("particle", modLocation("block/tritanium_anvil/${color.name.lowercase()}"))
|
||||||
.rotationY(it[AnvilBlock.FACING].yRotationBlockstateNorth())
|
}
|
||||||
.build()
|
|
||||||
|
for (i in 1 until MBlocks.TRITANIUM_ANVIL_VARIANTS) {
|
||||||
|
blockModelProvider.exec {
|
||||||
|
blockModelProvider.withExistingParent("block/tritanium_anvil${i}_${color.name.lowercase()}", "${DataGen.MOD_ID}:block/tritanium_anvil$i")
|
||||||
|
.texture("2", modLocation("block/tritanium_anvil_top/${color.name.lowercase()}"))
|
||||||
|
.texture("3", modLocation("block/tritanium_anvil/${color.name.lowercase()}"))
|
||||||
|
.texture("particle", modLocation("block/tritanium_anvil/${color.name.lowercase()}"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (anvils in MBlocks.TRITANIUM_ANVIL.values) {
|
||||||
|
for (anvil in anvils) {
|
||||||
|
blockStateProvider.exec {
|
||||||
|
blockStateProvider.getVariantBuilder(anvil).forAllStates {
|
||||||
|
ConfiguredModel.builder()
|
||||||
|
.modelFile(blockStateProvider.models().getExistingFile(modLocation("block/${anvil.registryName!!.path}")))
|
||||||
|
.rotationY(it[AnvilBlock.FACING].yRotationBlockstateNorth())
|
||||||
|
.build()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,8 +16,10 @@ fun addMatterData(provider: MatterDataProvider) {
|
|||||||
provider.inherit(Items.CHIPPED_ANVIL, Items.ANVIL, 0.75)
|
provider.inherit(Items.CHIPPED_ANVIL, Items.ANVIL, 0.75)
|
||||||
provider.inherit(Items.DAMAGED_ANVIL, Items.ANVIL, 0.5)
|
provider.inherit(Items.DAMAGED_ANVIL, Items.ANVIL, 0.5)
|
||||||
|
|
||||||
for (i in 1 until MItems.TRITANIUM_ANVIL.size) {
|
for (anvils in MItems.TRITANIUM_ANVIL.values) {
|
||||||
provider.inherit(MItems.TRITANIUM_ANVIL[i], MItems.TRITANIUM_ANVIL[i - 1], 0.85)
|
for (i in 1 until anvils.size) {
|
||||||
|
provider.inherit(anvils[i], anvils[i - 1], 0.85)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
provider.inherit(Items.WATER_BUCKET, Items.BUCKET) {
|
provider.inherit(Items.WATER_BUCKET, Items.BUCKET) {
|
||||||
|
@ -247,11 +247,7 @@ fun addItemModels(provider: MatteryItemModelProvider) {
|
|||||||
provider.block(MItems.MATTER_INPUT_HATCH)
|
provider.block(MItems.MATTER_INPUT_HATCH)
|
||||||
provider.block(MItems.MATTER_OUTPUT_HATCH)
|
provider.block(MItems.MATTER_OUTPUT_HATCH)
|
||||||
|
|
||||||
|
MItems.TRITANIUM_ANVIL.values.forEach { provider.blocks(it) }
|
||||||
|
|
||||||
for (item in MItems.TRITANIUM_ANVIL) {
|
|
||||||
provider.block(item)
|
|
||||||
}
|
|
||||||
|
|
||||||
for ((color, item) in MItems.CARGO_CRATE_MINECARTS) {
|
for ((color, item) in MItems.CARGO_CRATE_MINECARTS) {
|
||||||
provider.generated(item)
|
provider.generated(item)
|
||||||
|
@ -683,8 +683,15 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
|||||||
add(MBlocks.TRITANIUM_BARS, "Tritanium Bars")
|
add(MBlocks.TRITANIUM_BARS, "Tritanium Bars")
|
||||||
add(MBlocks.METAL_RAILING, "Metal Railing")
|
add(MBlocks.METAL_RAILING, "Metal Railing")
|
||||||
|
|
||||||
for (block in MBlocks.TRITANIUM_ANVIL)
|
for ((color, blocks) in MBlocks.TRITANIUM_ANVIL.entries) {
|
||||||
add(block, "Tritanium Anvil")
|
if (color == null) {
|
||||||
|
for (block in blocks)
|
||||||
|
add(block, "Tritanium Anvil")
|
||||||
|
} else {
|
||||||
|
for (block in blocks)
|
||||||
|
add(block, "${provider.englishColors.mapped[color]} Tritanium Anvil")
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -173,13 +173,13 @@ class MatteryLanguageProvider(private val gen: DataGenerator) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun add(map: Map<DyeColor, Block>, toFormat: String) {
|
fun add(map: Map<in DyeColor, Block>, toFormat: String) {
|
||||||
for ((color, block) in map) {
|
for ((color, block) in map) {
|
||||||
slave.add(block, toFormat.format(mapped[color]!!))
|
slave.add(block, toFormat.format(mapped[color]!!))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun addIntermediate(map: Map<DyeColor, Block>, toFormat: String) {
|
fun addIntermediate(map: Map<in DyeColor, Block>, toFormat: String) {
|
||||||
for ((color, block) in map) {
|
for ((color, block) in map) {
|
||||||
slave.add(block, toFormat.format(if (lowercaseIntermediate) mapped[color]!!.lowercase() else mapped[color]!!))
|
slave.add(block, toFormat.format(if (lowercaseIntermediate) mapped[color]!!.lowercase() else mapped[color]!!))
|
||||||
}
|
}
|
||||||
|
@ -14,12 +14,19 @@ private const val FEELING_SAFE_NOW = "...ощущаете ли вы себя т
|
|||||||
|
|
||||||
private fun decoratives(provider: MatteryLanguageProvider) {
|
private fun decoratives(provider: MatteryLanguageProvider) {
|
||||||
with (provider.russian) {
|
with (provider.russian) {
|
||||||
|
for (block in MBlocks.TRITANIUM_ANVIL[null]!!)
|
||||||
|
add(block, "Тритановая наковальня")
|
||||||
|
|
||||||
for ((color, name) in provider.russianColors.mapped) {
|
for ((color, name) in provider.russianColors.mapped) {
|
||||||
val nameF = name.replace("ый", "ая").replace("ой", "ая").replace("ий", "яя")
|
val nameF = name.replace("ый", "ая").replace("ой", "ая").replace("ий", "яя")
|
||||||
|
|
||||||
add(MRegistry.VENT.getBlock(color), "$nameF вентиляция")
|
add(MRegistry.VENT.getBlock(color), "$nameF вентиляция")
|
||||||
add(MRegistry.VENT_ALTERNATIVE.getBlock(color), "$nameF альтернативная вентиляция")
|
add(MRegistry.VENT_ALTERNATIVE.getBlock(color), "$nameF альтернативная вентиляция")
|
||||||
|
|
||||||
|
for (block in MBlocks.TRITANIUM_ANVIL[color]!!) {
|
||||||
|
add(block, "$nameF тритановая наковальня")
|
||||||
|
}
|
||||||
|
|
||||||
val nameMul = name.replace("ый", "ые").replace("ой", "ые").replace("ий", "ие")
|
val nameMul = name.replace("ый", "ые").replace("ой", "ые").replace("ий", "ие")
|
||||||
add(MRegistry.TRITANIUM_BLOCK.getBlock(color), "$name тритановый блок")
|
add(MRegistry.TRITANIUM_BLOCK.getBlock(color), "$name тритановый блок")
|
||||||
add(MRegistry.COMPUTER_TERMINAL.getBlock(color), "$name компьютерный терминал")
|
add(MRegistry.COMPUTER_TERMINAL.getBlock(color), "$name компьютерный терминал")
|
||||||
@ -678,9 +685,6 @@ private fun blocks(provider: MatteryLanguageProvider) {
|
|||||||
|
|
||||||
add(MBlocks.TRITANIUM_BARS, "Тритановая решётка")
|
add(MBlocks.TRITANIUM_BARS, "Тритановая решётка")
|
||||||
add(MBlocks.METAL_RAILING, "Металлические перила")
|
add(MBlocks.METAL_RAILING, "Металлические перила")
|
||||||
|
|
||||||
for (block in MBlocks.TRITANIUM_ANVIL)
|
|
||||||
add(block, "Тритановая наковальня")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,8 +58,7 @@ fun addDecorativeLoot(lootTables: LootTables) {
|
|||||||
lootTables.dropsSelf(MBlocks.REINFORCED_REDSTONE_LAMP) { condition(ExplosionCondition.survivesExplosion()) }
|
lootTables.dropsSelf(MBlocks.REINFORCED_REDSTONE_LAMP) { condition(ExplosionCondition.survivesExplosion()) }
|
||||||
lootTables.dropsSelf(MBlocks.REINFORCED_REDSTONE_LAMP_INVERTED) { condition(ExplosionCondition.survivesExplosion()) }
|
lootTables.dropsSelf(MBlocks.REINFORCED_REDSTONE_LAMP_INVERTED) { condition(ExplosionCondition.survivesExplosion()) }
|
||||||
|
|
||||||
for (block in MBlocks.TRITANIUM_ANVIL)
|
MBlocks.TRITANIUM_ANVIL.values.forEach { it.forEach { lootTables.dropsSelf(it) { condition(ExplosionCondition.survivesExplosion()) } } }
|
||||||
lootTables.dropsSelf(block) { condition(ExplosionCondition.survivesExplosion()) }
|
|
||||||
|
|
||||||
for (door in MBlocks.TRITANIUM_TRAPDOOR.values)
|
for (door in MBlocks.TRITANIUM_TRAPDOOR.values)
|
||||||
lootTables.dropsSelf(door) { condition(ExplosionCondition.survivesExplosion()) }
|
lootTables.dropsSelf(door) { condition(ExplosionCondition.survivesExplosion()) }
|
||||||
|
@ -419,7 +419,7 @@ fun addDecorativesRecipes(provider: MatteryRecipeProvider, consumer: RecipeOutpu
|
|||||||
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||||
.build(consumer, modLocation("decorative/tritanium_bars"))
|
.build(consumer, modLocation("decorative/tritanium_bars"))
|
||||||
|
|
||||||
MatteryRecipe(MItems.TRITANIUM_ANVIL[0], category = RecipeCategory.DECORATIONS)
|
MatteryRecipe(MItems.TRITANIUM_ANVIL[null]!![0], category = RecipeCategory.DECORATIONS)
|
||||||
.row(MItemTags.TRITANIUM_INGOTS_STORAGE, MItemTags.TRITANIUM_INGOTS_STORAGE, MItemTags.TRITANIUM_INGOTS_STORAGE)
|
.row(MItemTags.TRITANIUM_INGOTS_STORAGE, MItemTags.TRITANIUM_INGOTS_STORAGE, MItemTags.TRITANIUM_INGOTS_STORAGE)
|
||||||
.rowB(MItemTags.TRITANIUM_INGOTS)
|
.rowB(MItemTags.TRITANIUM_INGOTS)
|
||||||
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
.row(MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS, MItemTags.TRITANIUM_INGOTS)
|
||||||
|
@ -19,6 +19,7 @@ import ru.dbotthepony.mc.otm.recipe.PainterArmorDyeRecipe
|
|||||||
import ru.dbotthepony.mc.otm.recipe.PainterRecipe
|
import ru.dbotthepony.mc.otm.recipe.PainterRecipe
|
||||||
import ru.dbotthepony.mc.otm.registry.game.MItems
|
import ru.dbotthepony.mc.otm.registry.game.MItems
|
||||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||||
|
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||||
|
|
||||||
private val Item.recipeName get() = registryName!!.namespace + "/" + registryName!!.path
|
private val Item.recipeName get() = registryName!!.namespace + "/" + registryName!!.path
|
||||||
|
|
||||||
@ -356,6 +357,10 @@ fun addPainterRecipes(consumer: RecipeOutput) {
|
|||||||
generate(consumer, list[null]!!,list)
|
generate(consumer, list[null]!!,list)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (i in 0 until MBlocks.TRITANIUM_ANVIL_VARIANTS) {
|
||||||
|
generate(consumer, MItems.TRITANIUM_ANVIL[null]!![i], DyeColor.entries.associateWith { MItems.TRITANIUM_ANVIL[it]!![i] })
|
||||||
|
}
|
||||||
|
|
||||||
generate(consumer, MRegistry.COMPUTER_TERMINAL.item, MRegistry.COMPUTER_TERMINAL.items)
|
generate(consumer, MRegistry.COMPUTER_TERMINAL.item, MRegistry.COMPUTER_TERMINAL.items)
|
||||||
generate(consumer, MRegistry.STAR_CHAIR.item, MRegistry.STAR_CHAIR.items)
|
generate(consumer, MRegistry.STAR_CHAIR.item, MRegistry.STAR_CHAIR.items)
|
||||||
|
|
||||||
|
@ -96,7 +96,7 @@ fun addMineableTags(tagsProvider: TagsProvider) {
|
|||||||
MBlocks.GRAVITATION_STABILIZER_LENS,
|
MBlocks.GRAVITATION_STABILIZER_LENS,
|
||||||
), Tiers.DIAMOND)
|
), Tiers.DIAMOND)
|
||||||
|
|
||||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_ANVIL, Tiers.IRON)
|
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_ANVIL.values.stream().flatMap { it.stream() }, Tiers.IRON)
|
||||||
|
|
||||||
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_ORE, Tiers.IRON)
|
tagsProvider.requiresPickaxe(MBlocks.TRITANIUM_ORE, Tiers.IRON)
|
||||||
tagsProvider.requiresPickaxe(MBlocks.DEEPSLATE_TRITANIUM_ORE, Tiers.IRON)
|
tagsProvider.requiresPickaxe(MBlocks.DEEPSLATE_TRITANIUM_ORE, Tiers.IRON)
|
||||||
|
@ -5,6 +5,7 @@ import net.minecraft.tags.ItemTags
|
|||||||
import net.minecraft.world.effect.MobEffects
|
import net.minecraft.world.effect.MobEffects
|
||||||
import net.minecraft.world.item.Items
|
import net.minecraft.world.item.Items
|
||||||
import net.neoforged.neoforge.common.Tags
|
import net.neoforged.neoforge.common.Tags
|
||||||
|
import ru.dbotthepony.kommons.collect.flatMap
|
||||||
import ru.dbotthepony.mc.otm.core.ResourceLocation
|
import ru.dbotthepony.mc.otm.core.ResourceLocation
|
||||||
import ru.dbotthepony.mc.otm.registry.MBlockTags
|
import ru.dbotthepony.mc.otm.registry.MBlockTags
|
||||||
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
import ru.dbotthepony.mc.otm.registry.game.MBlocks
|
||||||
@ -35,8 +36,8 @@ fun addTags(tagsProvider: TagsProvider) {
|
|||||||
|
|
||||||
tagsProvider.items.Appender(MItemTags.MINECART_CARGO_CRATES).add(MItems.CARGO_CRATE_MINECARTS.values)
|
tagsProvider.items.Appender(MItemTags.MINECART_CARGO_CRATES).add(MItems.CARGO_CRATE_MINECARTS.values)
|
||||||
|
|
||||||
tagsProvider.blocks.Appender(BlockTags.ANVIL).add(MBlocks.TRITANIUM_ANVIL)
|
tagsProvider.blocks.Appender(BlockTags.ANVIL).add(MBlocks.TRITANIUM_ANVIL.values.stream().flatMap { it.stream() })
|
||||||
tagsProvider.items.Appender(ItemTags.ANVIL).add(MItems.TRITANIUM_ANVIL)
|
tagsProvider.items.Appender(ItemTags.ANVIL).add(MItems.TRITANIUM_ANVIL.values.stream().flatMap { it.stream() })
|
||||||
|
|
||||||
tagsProvider.items.Appender(MItemTags.UPGRADES)
|
tagsProvider.items.Appender(MItemTags.UPGRADES)
|
||||||
.add(MItems.MachineUpgrades.Basic.LIST)
|
.add(MItems.MachineUpgrades.Basic.LIST)
|
||||||
|
@ -115,6 +115,11 @@ class TagsProvider(private val event: GatherDataEvent) {
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun add(values: Iterator<T>): Appender {
|
||||||
|
values.forEach { add(it) }
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
fun leaf(name: String) = Appender(TagKey.create(tag.registry, ResourceLocation(tag.location.namespace, tag.location.path + "/$name")))
|
fun leaf(name: String) = Appender(TagKey.create(tag.registry, ResourceLocation(tag.location.namespace, tag.location.path + "/$name")))
|
||||||
|
|
||||||
fun add(leaf: String, value: T) = also { leaf(leaf).add(value) }
|
fun add(leaf: String, value: T) = also { leaf(leaf).add(value) }
|
||||||
@ -327,6 +332,16 @@ class TagsProvider(private val event: GatherDataEvent) {
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun requiresPickaxe(blocks: Stream<Block>, tier: Tier? = null): TagsProvider {
|
||||||
|
for (block in blocks) requiresPickaxe(block, tier)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
fun requiresPickaxe(blocks: Iterator<Block>, tier: Tier? = null): TagsProvider {
|
||||||
|
for (block in blocks) requiresPickaxe(block, tier)
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
fun requiresPickaxe(vararg blocks: Block, tier: Tier? = null): TagsProvider {
|
fun requiresPickaxe(vararg blocks: Block, tier: Tier? = null): TagsProvider {
|
||||||
for (block in blocks) requiresPickaxe(block, tier)
|
for (block in blocks) requiresPickaxe(block, tier)
|
||||||
return this
|
return this
|
||||||
|
@ -17,17 +17,17 @@ public class MixinAnvilBlock {
|
|||||||
remap = false,
|
remap = false,
|
||||||
cancellable = true)
|
cancellable = true)
|
||||||
private static void damage(BlockState pState, CallbackInfoReturnable<BlockState> info) {
|
private static void damage(BlockState pState, CallbackInfoReturnable<BlockState> info) {
|
||||||
var list = MBlocks.INSTANCE.getTRITANIUM_ANVIL();
|
for (var list : MBlocks.INSTANCE.getTRITANIUM_ANVIL().values()) {
|
||||||
|
for (int i = 0; i < list.size(); i++) {
|
||||||
|
if (pState.is(list.get(i))) {
|
||||||
|
if (i == list.size() - 1) {
|
||||||
|
info.setReturnValue(null);
|
||||||
|
} else {
|
||||||
|
info.setReturnValue(list.get(i + 1).defaultBlockState().setValue(AnvilBlock.FACING, pState.getValue(AnvilBlock.FACING)));
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < list.size(); i++) {
|
return;
|
||||||
if (pState.is(list.get(i))) {
|
|
||||||
if (i == list.size() - 1) {
|
|
||||||
info.setReturnValue(null);
|
|
||||||
} else {
|
|
||||||
info.setReturnValue(list.get(i + 1).defaultBlockState().setValue(AnvilBlock.FACING, pState.getValue(AnvilBlock.FACING)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -66,7 +66,8 @@ class CondensedCreativeCompat : CondensedCreativeInitializer {
|
|||||||
addByBase(MRegistry.CARGO_CRATES.allItems, MCreativeTabs.DECORATIVE)
|
addByBase(MRegistry.CARGO_CRATES.allItems, MCreativeTabs.DECORATIVE)
|
||||||
addByBase(MItems.CARGO_CRATE_MINECARTS, MCreativeTabs.DECORATIVE)
|
addByBase(MItems.CARGO_CRATE_MINECARTS, MCreativeTabs.DECORATIVE)
|
||||||
|
|
||||||
addByFirst(MItems.TRITANIUM_ANVIL, MCreativeTabs.DECORATIVE)
|
for (anvils in MItems.TRITANIUM_ANVIL.values)
|
||||||
|
addByFirst(anvils, MCreativeTabs.DECORATIVE)
|
||||||
|
|
||||||
addByBase(MRegistry.COMPUTER_TERMINAL.allItems, MCreativeTabs.DECORATIVE)
|
addByBase(MRegistry.COMPUTER_TERMINAL.allItems, MCreativeTabs.DECORATIVE)
|
||||||
addByBase(MRegistry.STAR_CHAIR.allItems, MCreativeTabs.DECORATIVE)
|
addByBase(MRegistry.STAR_CHAIR.allItems, MCreativeTabs.DECORATIVE)
|
||||||
|
@ -4,6 +4,7 @@ import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet
|
|||||||
import net.minecraft.core.Direction
|
import net.minecraft.core.Direction
|
||||||
import net.minecraft.core.registries.BuiltInRegistries
|
import net.minecraft.core.registries.BuiltInRegistries
|
||||||
import net.minecraft.util.valueproviders.UniformInt
|
import net.minecraft.util.valueproviders.UniformInt
|
||||||
|
import net.minecraft.world.item.DyeColor
|
||||||
import net.minecraft.world.level.block.AnvilBlock
|
import net.minecraft.world.level.block.AnvilBlock
|
||||||
import net.minecraft.world.level.block.Block
|
import net.minecraft.world.level.block.Block
|
||||||
import net.minecraft.world.level.block.Blocks
|
import net.minecraft.world.level.block.Blocks
|
||||||
@ -94,6 +95,10 @@ import ru.dbotthepony.mc.otm.core.get
|
|||||||
import ru.dbotthepony.mc.otm.registry.MDeferredRegister
|
import ru.dbotthepony.mc.otm.registry.MDeferredRegister
|
||||||
import ru.dbotthepony.mc.otm.registry.MNames
|
import ru.dbotthepony.mc.otm.registry.MNames
|
||||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||||
|
import java.util.Collections
|
||||||
|
import java.util.EnumMap
|
||||||
|
import java.util.HashMap
|
||||||
|
import java.util.LinkedHashMap
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
|
||||||
object MBlocks {
|
object MBlocks {
|
||||||
@ -339,24 +344,35 @@ object MBlocks {
|
|||||||
|
|
||||||
const val TRITANIUM_ANVIL_VARIANTS = 7
|
const val TRITANIUM_ANVIL_VARIANTS = 7
|
||||||
|
|
||||||
val TRITANIUM_ANVIL: List<Block>
|
val TRITANIUM_ANVIL: Map<DyeColor?, List<Block>>
|
||||||
|
|
||||||
init {
|
init {
|
||||||
val anvils = ArrayList<Supplier<Block>>()
|
val map = LinkedHashMap<DyeColor?, List<Block>>()
|
||||||
|
|
||||||
for (i in 0 until TRITANIUM_ANVIL_VARIANTS) {
|
for (color in DyeColor.entries.toMutableList<DyeColor?>().also { it.add(0, null) }) {
|
||||||
val props = BlockBehaviour.Properties.of()
|
val anvils = ArrayList<Supplier<Block>>()
|
||||||
.mapColor(MapColor.COLOR_LIGHT_BLUE)
|
|
||||||
.sound(SoundType.ANVIL)
|
|
||||||
.destroyTime(2.5f - i * 0.15f)
|
|
||||||
.explosionResistance(1200f - i * 80f)
|
|
||||||
.pushReaction(PushReaction.BLOCK)
|
|
||||||
.requiresCorrectToolForDrops()
|
|
||||||
|
|
||||||
anvils.add(registry.register(MNames.TRITANIUM_ANVIL + i) { AnvilBlock(props) }::get)
|
for (i in 0 until TRITANIUM_ANVIL_VARIANTS) {
|
||||||
|
val props = BlockBehaviour.Properties.of()
|
||||||
|
.mapColor(color?.mapColor ?: MapColor.COLOR_LIGHT_BLUE)
|
||||||
|
.sound(SoundType.ANVIL)
|
||||||
|
.destroyTime(2.5f - i * 0.15f)
|
||||||
|
.explosionResistance(1200f - i * 80f)
|
||||||
|
.pushReaction(PushReaction.BLOCK)
|
||||||
|
.requiresCorrectToolForDrops()
|
||||||
|
|
||||||
|
var name = MNames.TRITANIUM_ANVIL + i
|
||||||
|
|
||||||
|
if (color != null)
|
||||||
|
name += "_${color.name.lowercase()}"
|
||||||
|
|
||||||
|
anvils.add(registry.register(name) { AnvilBlock(props) })
|
||||||
|
}
|
||||||
|
|
||||||
|
map[color] = SupplierList(anvils)
|
||||||
}
|
}
|
||||||
|
|
||||||
TRITANIUM_ANVIL = SupplierList(anvils)
|
TRITANIUM_ANVIL = Collections.unmodifiableMap(map)
|
||||||
}
|
}
|
||||||
|
|
||||||
val TRITANIUM_DOOR = registry.coloredWithBase(MNames.TRITANIUM_DOOR, ::TritaniumDoorBlock)
|
val TRITANIUM_DOOR = registry.coloredWithBase(MNames.TRITANIUM_DOOR, ::TritaniumDoorBlock)
|
||||||
|
@ -213,7 +213,7 @@ private fun addMainCreativeTabItems(consumer: CreativeModeTab.Output) {
|
|||||||
base(MItems.TRITANIUM_DOOR)
|
base(MItems.TRITANIUM_DOOR)
|
||||||
base(MItems.TRITANIUM_TRAPDOOR)
|
base(MItems.TRITANIUM_TRAPDOOR)
|
||||||
accept(MRegistry.TRITANIUM_PRESSURE_PLATE.item)
|
accept(MRegistry.TRITANIUM_PRESSURE_PLATE.item)
|
||||||
accept(MItems.TRITANIUM_ANVIL[0])
|
accept(MItems.TRITANIUM_ANVIL[null]!![0])
|
||||||
|
|
||||||
accept(MItems.GRILL.values)
|
accept(MItems.GRILL.values)
|
||||||
|
|
||||||
@ -323,9 +323,7 @@ private fun addDecorativeTabItems(consumer: CreativeModeTab.Output) {
|
|||||||
colored(MItems.TRITANIUM_TRAPDOOR)
|
colored(MItems.TRITANIUM_TRAPDOOR)
|
||||||
accept(MRegistry.TRITANIUM_PRESSURE_PLATE.items.values)
|
accept(MRegistry.TRITANIUM_PRESSURE_PLATE.items.values)
|
||||||
|
|
||||||
for (i in 0 until MItems.TRITANIUM_ANVIL.size)
|
accept(MItems.TRITANIUM_ANVIL[null]!!)
|
||||||
accept(MItems.TRITANIUM_ANVIL[i])
|
|
||||||
|
|
||||||
colored(MRegistry.CARGO_CRATES.items)
|
colored(MRegistry.CARGO_CRATES.items)
|
||||||
|
|
||||||
colored(MItems.CARGO_CRATE_MINECARTS)
|
colored(MItems.CARGO_CRATE_MINECARTS)
|
||||||
|
@ -78,6 +78,8 @@ import ru.dbotthepony.mc.otm.registry.MDeferredRegister
|
|||||||
import ru.dbotthepony.mc.otm.registry.MItemTags
|
import ru.dbotthepony.mc.otm.registry.MItemTags
|
||||||
import ru.dbotthepony.mc.otm.registry.MNames
|
import ru.dbotthepony.mc.otm.registry.MNames
|
||||||
import ru.dbotthepony.mc.otm.registry.MRegistry
|
import ru.dbotthepony.mc.otm.registry.MRegistry
|
||||||
|
import java.util.Collections
|
||||||
|
import java.util.LinkedHashMap
|
||||||
import java.util.function.Supplier
|
import java.util.function.Supplier
|
||||||
|
|
||||||
object MItems {
|
object MItems {
|
||||||
@ -170,17 +172,27 @@ object MItems {
|
|||||||
val ENERGY_OUTPUT_INTERFACE by registry.register(MNames.ENERGY_OUTPUT_INTERFACE) { BlockItem(MBlocks.ENERGY_OUTPUT_INTERFACE, DEFAULT_PROPERTIES) }
|
val ENERGY_OUTPUT_INTERFACE by registry.register(MNames.ENERGY_OUTPUT_INTERFACE) { BlockItem(MBlocks.ENERGY_OUTPUT_INTERFACE, DEFAULT_PROPERTIES) }
|
||||||
|
|
||||||
val MULTIBLOCK_TEST by registry.register("multiblock_test") { BlockItem(MBlocks.MULTIBLOCK_TEST, Properties().stacksTo(64)) }
|
val MULTIBLOCK_TEST by registry.register("multiblock_test") { BlockItem(MBlocks.MULTIBLOCK_TEST, Properties().stacksTo(64)) }
|
||||||
|
val TRITANIUM_ANVIL: Map<DyeColor?, List<BlockItem>>
|
||||||
val TRITANIUM_ANVIL: List<BlockItem>
|
|
||||||
|
|
||||||
init {
|
init {
|
||||||
val props = ArrayList<Supplier<BlockItem>>()
|
val map = LinkedHashMap<DyeColor?, List<BlockItem>>()
|
||||||
|
|
||||||
for (i in MBlocks.TRITANIUM_ANVIL.indices) {
|
for ((color, anvils) in MBlocks.TRITANIUM_ANVIL) {
|
||||||
props.add(registry.register(MNames.TRITANIUM_ANVIL + i) { BlockItem(MBlocks.TRITANIUM_ANVIL[i], DEFAULT_PROPERTIES) }::get)
|
val props = ArrayList<Supplier<BlockItem>>()
|
||||||
|
|
||||||
|
for (i in anvils.indices) {
|
||||||
|
var name = MNames.TRITANIUM_ANVIL + i
|
||||||
|
|
||||||
|
if (color != null)
|
||||||
|
name += "_${color.name.lowercase()}"
|
||||||
|
|
||||||
|
props.add(registry.register(name) { BlockItem(anvils[i], DEFAULT_PROPERTIES) })
|
||||||
|
}
|
||||||
|
|
||||||
|
map[color] = SupplierList(props)
|
||||||
}
|
}
|
||||||
|
|
||||||
TRITANIUM_ANVIL = SupplierList(props)
|
TRITANIUM_ANVIL = Collections.unmodifiableMap(map)
|
||||||
}
|
}
|
||||||
|
|
||||||
object MachineUpgrades {
|
object MachineUpgrades {
|
||||||
|
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 778 B |
After Width: | Height: | Size: 754 B |
After Width: | Height: | Size: 1.3 KiB |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 708 B |
After Width: | Height: | Size: 631 B |
After Width: | Height: | Size: 1.2 KiB |