Move registry helper classes to subpackage

This commit is contained in:
DBotThePony 2022-08-28 12:49:33 +07:00
parent c0d71a49fc
commit 56d5277988
Signed by: DBot
GPG Key ID: DCC23B5715498507
6 changed files with 425 additions and 384 deletions

View File

@ -37,6 +37,8 @@ import ru.dbotthepony.mc.otm.registry.*
import ru.dbotthepony.mc.otm.*
import ru.dbotthepony.mc.otm.datagen.recipes.MatteryRecipe
import ru.dbotthepony.mc.otm.datagen.recipes.addCraftingTableRecipes
import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock
import ru.dbotthepony.mc.otm.registry.objects.DecorativeBlock
@Mod.EventBusSubscriber(modid = DataGen.MOD_ID, bus = Mod.EventBusSubscriber.Bus.MOD)
object DataGen {

View File

@ -16,7 +16,7 @@ import net.minecraftforge.common.data.LanguageProvider
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.android.AndroidFeatureType
import ru.dbotthepony.mc.otm.android.AndroidResearchType
import ru.dbotthepony.mc.otm.registry.ColoredDecorativeBlock
import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock
private fun researchString(key: AndroidResearchType<*>): String {
val displayName = key.displayName

View File

@ -9,10 +9,6 @@ import net.minecraft.resources.ResourceKey
import net.minecraft.resources.ResourceLocation
import net.minecraft.world.damagesource.DamageSource
import net.minecraft.world.entity.EntityType
import net.minecraft.world.item.BlockItem
import net.minecraft.world.item.CreativeModeTab
import net.minecraft.world.item.DyeColor
import net.minecraft.world.item.Item
import net.minecraft.world.level.BlockGetter
import net.minecraft.world.level.block.*
import net.minecraft.world.level.block.state.BlockBehaviour
@ -20,16 +16,17 @@ import net.minecraft.world.level.block.state.BlockState
import net.minecraft.world.level.material.Material
import net.minecraft.world.level.material.MaterialColor
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext
import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.ForgeRegistry
import net.minecraftforge.registries.IForgeRegistry
import net.minecraftforge.registries.NewRegistryEvent
import net.minecraftforge.registries.RegistryBuilder
import net.minecraftforge.registries.RegistryObject
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.android.AndroidFeatureType
import ru.dbotthepony.mc.otm.android.AndroidResearchType
import ru.dbotthepony.mc.otm.block.CargoCrateBlock
import ru.dbotthepony.mc.otm.registry.objects.ColoredDecorativeBlock
import ru.dbotthepony.mc.otm.registry.objects.CrateProperties
import ru.dbotthepony.mc.otm.registry.objects.DecorativeBlock
import java.util.function.Supplier
import kotlin.properties.ReadWriteProperty
import kotlin.reflect.KProperty
@ -42,15 +39,6 @@ fun <T> Registry<T>.register(key: ResourceLocation, value: T): Holder<T> {
return (this as WritableRegistry<T>).register(ResourceKey.create(key(), key), value, Lifecycle.stable())
}
class CrateProperties(val color: MaterialColor, val name: String) {
fun makeBlock(): Block {
return Block(BlockBehaviour.Properties.of(Material.METAL, color)
.sound(SoundType.METAL)
.requiresCorrectToolForDrops()
.strength(5.0F, 6.0F))
}
}
private class RegistryDelegate<T>(key: String) {
private var value: Supplier<IForgeRegistry<T>?>? = null
@ -91,374 +79,6 @@ class WriteOnce<V> : ReadWriteProperty<Any, V> {
}
}
/**
* Colored only
*/
@Suppress("PropertyName", "unused")
open class ColoredDecorativeBlock(
val baseName: String,
private val provider: (DyeColor) -> Block,
val itemGroup: CreativeModeTab = OverdriveThatMatters.INSTANCE.CREATIVE_TAB_DECORATIVE
) {
protected var _whiteBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _orangeBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _magentaBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _lightBlueBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _yellowBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _limeBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _pinkBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _grayBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _lightGrayBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _cyanBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _purpleBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _blueBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _brownBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _greenBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _redBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _blackBlock: RegistryObject<Block> by WriteOnce()
private set
val whiteBlock: Block get() = _whiteBlock.get()
val orangeBlock: Block get() = _orangeBlock.get()
val magentaBlock: Block get() = _magentaBlock.get()
val lightBlueBlock: Block get() = _lightBlueBlock.get()
val yellowBlock: Block get() = _yellowBlock.get()
val limeBlock: Block get() = _limeBlock.get()
val pinkBlock: Block get() = _pinkBlock.get()
val grayBlock: Block get() = _grayBlock.get()
val lightGrayBlock: Block get() = _lightGrayBlock.get()
val cyanBlock: Block get() = _cyanBlock.get()
val purpleBlock: Block get() = _purpleBlock.get()
val blueBlock: Block get() = _blueBlock.get()
val brownBlock: Block get() = _brownBlock.get()
val greenBlock: Block get() = _greenBlock.get()
val redBlock: Block get() = _redBlock.get()
val blackBlock: Block get() = _blackBlock.get()
protected var _whiteItem: RegistryObject<Item> by WriteOnce()
private set
protected var _orangeItem: RegistryObject<Item> by WriteOnce()
private set
protected var _magentaItem: RegistryObject<Item> by WriteOnce()
private set
protected var _lightBlueItem: RegistryObject<Item> by WriteOnce()
private set
protected var _yellowItem: RegistryObject<Item> by WriteOnce()
private set
protected var _limeItem: RegistryObject<Item> by WriteOnce()
private set
protected var _pinkItem: RegistryObject<Item> by WriteOnce()
private set
protected var _grayItem: RegistryObject<Item> by WriteOnce()
private set
protected var _lightGrayItem: RegistryObject<Item> by WriteOnce()
private set
protected var _cyanItem: RegistryObject<Item> by WriteOnce()
private set
protected var _purpleItem: RegistryObject<Item> by WriteOnce()
private set
protected var _blueItem: RegistryObject<Item> by WriteOnce()
private set
protected var _brownItem: RegistryObject<Item> by WriteOnce()
private set
protected var _greenItem: RegistryObject<Item> by WriteOnce()
private set
protected var _redItem: RegistryObject<Item> by WriteOnce()
private set
protected var _blackItem: RegistryObject<Item> by WriteOnce()
private set
val whiteItem: Item get() = _whiteItem.get()
val orangeItem: Item get() = _orangeItem.get()
val magentaItem: Item get() = _magentaItem.get()
val lightBlueItem: Item get() = _lightBlueItem.get()
val yellowItem: Item get() = _yellowItem.get()
val limeItem: Item get() = _limeItem.get()
val pinkItem: Item get() = _pinkItem.get()
val grayItem: Item get() = _grayItem.get()
val lightGrayItem: Item get() = _lightGrayItem.get()
val cyanItem: Item get() = _cyanItem.get()
val purpleItem: Item get() = _purpleItem.get()
val blueItem: Item get() = _blueItem.get()
val brownItem: Item get() = _brownItem.get()
val greenItem: Item get() = _greenItem.get()
val redItem: Item get() = _redItem.get()
val blackItem: Item get() = _blackItem.get()
val coloredBlocks: List<Block> by lazy {
LazyList(
_whiteBlock::get,
_orangeBlock::get,
_magentaBlock::get,
_lightBlueBlock::get,
_yellowBlock::get,
_limeBlock::get,
_pinkBlock::get,
_grayBlock::get,
_lightGrayBlock::get,
_cyanBlock::get,
_purpleBlock::get,
_blueBlock::get,
_brownBlock::get,
_greenBlock::get,
_redBlock::get,
_blackBlock::get,
)
}
val mappedColoredBlocks: Map<DyeColor, Block> by lazy {
LazyMap(
DyeColor.WHITE to _whiteBlock::get,
DyeColor.ORANGE to _orangeBlock::get,
DyeColor.MAGENTA to _magentaBlock::get,
DyeColor.LIGHT_BLUE to _lightBlueBlock::get,
DyeColor.YELLOW to _yellowBlock::get,
DyeColor.LIME to _limeBlock::get,
DyeColor.PINK to _pinkBlock::get,
DyeColor.GRAY to _grayBlock::get,
DyeColor.LIGHT_GRAY to _lightGrayBlock::get,
DyeColor.CYAN to _cyanBlock::get,
DyeColor.PURPLE to _purpleBlock::get,
DyeColor.BLUE to _blueBlock::get,
DyeColor.BROWN to _brownBlock::get,
DyeColor.GREEN to _greenBlock::get,
DyeColor.RED to _redBlock::get,
DyeColor.BLACK to _blackBlock::get,
)
}
val coloredItems: List<Item> by lazy {
LazyList(
_whiteItem::get,
_orangeItem::get,
_magentaItem::get,
_lightBlueItem::get,
_yellowItem::get,
_limeItem::get,
_pinkItem::get,
_grayItem::get,
_lightGrayItem::get,
_cyanItem::get,
_purpleItem::get,
_blueItem::get,
_brownItem::get,
_greenItem::get,
_redItem::get,
_blackItem::get,
)
}
val mappedColoredItems: Map<DyeColor, Item> by lazy {
LazyMap(
DyeColor.WHITE to _whiteItem::get,
DyeColor.ORANGE to _orangeItem::get,
DyeColor.MAGENTA to _magentaItem::get,
DyeColor.LIGHT_BLUE to _lightBlueItem::get,
DyeColor.YELLOW to _yellowItem::get,
DyeColor.LIME to _limeItem::get,
DyeColor.PINK to _pinkItem::get,
DyeColor.GRAY to _grayItem::get,
DyeColor.LIGHT_GRAY to _lightGrayItem::get,
DyeColor.CYAN to _cyanItem::get,
DyeColor.PURPLE to _purpleItem::get,
DyeColor.BLUE to _blueItem::get,
DyeColor.BROWN to _brownItem::get,
DyeColor.GREEN to _greenItem::get,
DyeColor.RED to _redItem::get,
DyeColor.BLACK to _blackItem::get,
)
}
open fun registerBlocks(registry: DeferredRegister<Block>) {
_whiteBlock = registry.register("${baseName}_white") { provider.invoke(DyeColor.WHITE) }
_orangeBlock = registry.register("${baseName}_orange") { provider.invoke(DyeColor.ORANGE) }
_magentaBlock = registry.register("${baseName}_magenta") { provider.invoke(DyeColor.MAGENTA) }
_lightBlueBlock = registry.register("${baseName}_light_blue") { provider.invoke(DyeColor.LIGHT_BLUE) }
_yellowBlock = registry.register("${baseName}_yellow") { provider.invoke(DyeColor.YELLOW) }
_limeBlock = registry.register("${baseName}_lime") { provider.invoke(DyeColor.LIME) }
_pinkBlock = registry.register("${baseName}_pink") { provider.invoke(DyeColor.PINK) }
_grayBlock = registry.register("${baseName}_gray") { provider.invoke(DyeColor.GRAY) }
_lightGrayBlock = registry.register("${baseName}_light_gray") { provider.invoke(DyeColor.LIGHT_GRAY) }
_cyanBlock = registry.register("${baseName}_cyan") { provider.invoke(DyeColor.CYAN) }
_purpleBlock = registry.register("${baseName}_purple") { provider.invoke(DyeColor.PURPLE) }
_blueBlock = registry.register("${baseName}_blue") { provider.invoke(DyeColor.BLUE) }
_brownBlock = registry.register("${baseName}_brown") { provider.invoke(DyeColor.BROWN) }
_greenBlock = registry.register("${baseName}_green") { provider.invoke(DyeColor.GREEN) }
_redBlock = registry.register("${baseName}_red") { provider.invoke(DyeColor.RED) }
_blackBlock = registry.register("${baseName}_black") { provider.invoke(DyeColor.BLACK) }
}
private val properties = Item.Properties().tab(itemGroup).stacksTo(64)
open fun registerItems(registry: DeferredRegister<Item>) {
_whiteItem = registry.register("${baseName}_white") { BlockItem(_whiteBlock.get(), properties) }
_orangeItem = registry.register("${baseName}_orange") { BlockItem(_orangeBlock.get(), properties) }
_magentaItem = registry.register("${baseName}_magenta") { BlockItem(_magentaBlock.get(), properties) }
_lightBlueItem = registry.register("${baseName}_light_blue") { BlockItem(_lightBlueBlock.get(), properties) }
_yellowItem = registry.register("${baseName}_yellow") { BlockItem(_yellowBlock.get(), properties) }
_limeItem = registry.register("${baseName}_lime") { BlockItem(_limeBlock.get(), properties) }
_pinkItem = registry.register("${baseName}_pink") { BlockItem(_pinkBlock.get(), properties) }
_grayItem = registry.register("${baseName}_gray") { BlockItem(_grayBlock.get(), properties) }
_lightGrayItem = registry.register("${baseName}_light_gray") { BlockItem(_lightGrayBlock.get(), properties) }
_cyanItem = registry.register("${baseName}_cyan") { BlockItem(_cyanBlock.get(), properties) }
_purpleItem = registry.register("${baseName}_purple") { BlockItem(_purpleBlock.get(), properties) }
_blueItem = registry.register("${baseName}_blue") { BlockItem(_blueBlock.get(), properties) }
_brownItem = registry.register("${baseName}_brown") { BlockItem(_brownBlock.get(), properties) }
_greenItem = registry.register("${baseName}_green") { BlockItem(_greenBlock.get(), properties) }
_redItem = registry.register("${baseName}_red") { BlockItem(_redBlock.get(), properties) }
_blackItem = registry.register("${baseName}_black") { BlockItem(_blackBlock.get(), properties) }
}
companion object {
fun simple(baseName: String, provider: (DyeColor) -> BlockBehaviour.Properties, itemGroup: CreativeModeTab = OverdriveThatMatters.INSTANCE.CREATIVE_TAB_DECORATIVE): ColoredDecorativeBlock {
return ColoredDecorativeBlock(baseName, {
Block(provider.invoke(it))
}, itemGroup)
}
}
}
/**
* Base + Colored
*/
class DecorativeBlock(
baseName: String,
private val provider: (DyeColor?) -> Block,
itemGroup: CreativeModeTab = OverdriveThatMatters.INSTANCE.CREATIVE_TAB_DECORATIVE,
val baseItemGroup: CreativeModeTab = OverdriveThatMatters.INSTANCE.CREATIVE_TAB_DECORATIVE,
) : ColoredDecorativeBlock(baseName, provider, itemGroup) {
private var _block: RegistryObject<Block> by WriteOnce()
private var _item: RegistryObject<Item> by WriteOnce()
val block: Block get() = _block.get()
val item: Item get() = _item.get()
val mappedColoredBlocksAll: Map<DyeColor?, Block> by lazy {
LazyMap(
null to _block::get,
DyeColor.WHITE to _whiteBlock::get,
DyeColor.ORANGE to _orangeBlock::get,
DyeColor.MAGENTA to _magentaBlock::get,
DyeColor.LIGHT_BLUE to _lightBlueBlock::get,
DyeColor.YELLOW to _yellowBlock::get,
DyeColor.LIME to _limeBlock::get,
DyeColor.PINK to _pinkBlock::get,
DyeColor.GRAY to _grayBlock::get,
DyeColor.LIGHT_GRAY to _lightGrayBlock::get,
DyeColor.CYAN to _cyanBlock::get,
DyeColor.PURPLE to _purpleBlock::get,
DyeColor.BLUE to _blueBlock::get,
DyeColor.BROWN to _brownBlock::get,
DyeColor.GREEN to _greenBlock::get,
DyeColor.RED to _redBlock::get,
DyeColor.BLACK to _blackBlock::get,
)
}
val mappedColoredItemsAll: Map<DyeColor?, Item> by lazy {
LazyMap(
null to _item::get,
DyeColor.WHITE to _whiteItem::get,
DyeColor.ORANGE to _orangeItem::get,
DyeColor.MAGENTA to _magentaItem::get,
DyeColor.LIGHT_BLUE to _lightBlueItem::get,
DyeColor.YELLOW to _yellowItem::get,
DyeColor.LIME to _limeItem::get,
DyeColor.PINK to _pinkItem::get,
DyeColor.GRAY to _grayItem::get,
DyeColor.LIGHT_GRAY to _lightGrayItem::get,
DyeColor.CYAN to _cyanItem::get,
DyeColor.PURPLE to _purpleItem::get,
DyeColor.BLUE to _blueItem::get,
DyeColor.BROWN to _brownItem::get,
DyeColor.GREEN to _greenItem::get,
DyeColor.RED to _redItem::get,
DyeColor.BLACK to _blackItem::get,
)
}
val blocks: List<Block> by lazy {
LazyList(
_block::get,
_whiteBlock::get,
_orangeBlock::get,
_magentaBlock::get,
_lightBlueBlock::get,
_yellowBlock::get,
_limeBlock::get,
_pinkBlock::get,
_grayBlock::get,
_lightGrayBlock::get,
_cyanBlock::get,
_purpleBlock::get,
_blueBlock::get,
_brownBlock::get,
_greenBlock::get,
_redBlock::get,
_blackBlock::get,
)
}
val items: List<Item> by lazy {
LazyList(
_item::get,
_whiteItem::get,
_orangeItem::get,
_magentaItem::get,
_lightBlueItem::get,
_yellowItem::get,
_limeItem::get,
_pinkItem::get,
_grayItem::get,
_lightGrayItem::get,
_cyanItem::get,
_purpleItem::get,
_blueItem::get,
_brownItem::get,
_greenItem::get,
_redItem::get,
_blackItem::get,
)
}
override fun registerBlocks(registry: DeferredRegister<Block>) {
_block = registry.register(baseName) { provider.invoke(DyeColor.WHITE) }
super.registerBlocks(registry)
}
override fun registerItems(registry: DeferredRegister<Item>) {
_item = registry.register(baseName) { BlockItem(_block.get(), Item.Properties().tab(baseItemGroup).stacksTo(64)) }
super.registerItems(registry)
}
companion object {
fun simple(baseName: String, provider: (DyeColor?) -> BlockBehaviour.Properties, itemGroup: CreativeModeTab = OverdriveThatMatters.INSTANCE.CREATIVE_TAB_DECORATIVE): DecorativeBlock {
return DecorativeBlock(baseName, {
Block(provider.invoke(it))
}, itemGroup)
}
}
}
object MRegistry {
private val features = RegistryDelegate<AndroidFeatureType<*>>("android_features")
private val research = RegistryDelegate<AndroidResearchType<*>>("android_research")

View File

@ -0,0 +1,256 @@
package ru.dbotthepony.mc.otm.registry.objects
import net.minecraft.world.item.BlockItem
import net.minecraft.world.item.CreativeModeTab
import net.minecraft.world.item.DyeColor
import net.minecraft.world.item.Item
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.state.BlockBehaviour
import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.RegistryObject
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.registry.LazyList
import ru.dbotthepony.mc.otm.registry.LazyMap
import ru.dbotthepony.mc.otm.registry.WriteOnce
/**
* Colored only
*/
@Suppress("PropertyName", "unused")
open class ColoredDecorativeBlock(
val baseName: String,
private val provider: (DyeColor) -> Block,
itemGroup: CreativeModeTab = OverdriveThatMatters.INSTANCE.CREATIVE_TAB_DECORATIVE
) {
protected var _whiteBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _orangeBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _magentaBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _lightBlueBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _yellowBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _limeBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _pinkBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _grayBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _lightGrayBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _cyanBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _purpleBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _blueBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _brownBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _greenBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _redBlock: RegistryObject<Block> by WriteOnce()
private set
protected var _blackBlock: RegistryObject<Block> by WriteOnce()
private set
val whiteBlock: Block get() = _whiteBlock.get()
val orangeBlock: Block get() = _orangeBlock.get()
val magentaBlock: Block get() = _magentaBlock.get()
val lightBlueBlock: Block get() = _lightBlueBlock.get()
val yellowBlock: Block get() = _yellowBlock.get()
val limeBlock: Block get() = _limeBlock.get()
val pinkBlock: Block get() = _pinkBlock.get()
val grayBlock: Block get() = _grayBlock.get()
val lightGrayBlock: Block get() = _lightGrayBlock.get()
val cyanBlock: Block get() = _cyanBlock.get()
val purpleBlock: Block get() = _purpleBlock.get()
val blueBlock: Block get() = _blueBlock.get()
val brownBlock: Block get() = _brownBlock.get()
val greenBlock: Block get() = _greenBlock.get()
val redBlock: Block get() = _redBlock.get()
val blackBlock: Block get() = _blackBlock.get()
protected var _whiteItem: RegistryObject<Item> by WriteOnce()
private set
protected var _orangeItem: RegistryObject<Item> by WriteOnce()
private set
protected var _magentaItem: RegistryObject<Item> by WriteOnce()
private set
protected var _lightBlueItem: RegistryObject<Item> by WriteOnce()
private set
protected var _yellowItem: RegistryObject<Item> by WriteOnce()
private set
protected var _limeItem: RegistryObject<Item> by WriteOnce()
private set
protected var _pinkItem: RegistryObject<Item> by WriteOnce()
private set
protected var _grayItem: RegistryObject<Item> by WriteOnce()
private set
protected var _lightGrayItem: RegistryObject<Item> by WriteOnce()
private set
protected var _cyanItem: RegistryObject<Item> by WriteOnce()
private set
protected var _purpleItem: RegistryObject<Item> by WriteOnce()
private set
protected var _blueItem: RegistryObject<Item> by WriteOnce()
private set
protected var _brownItem: RegistryObject<Item> by WriteOnce()
private set
protected var _greenItem: RegistryObject<Item> by WriteOnce()
private set
protected var _redItem: RegistryObject<Item> by WriteOnce()
private set
protected var _blackItem: RegistryObject<Item> by WriteOnce()
private set
val whiteItem: Item get() = _whiteItem.get()
val orangeItem: Item get() = _orangeItem.get()
val magentaItem: Item get() = _magentaItem.get()
val lightBlueItem: Item get() = _lightBlueItem.get()
val yellowItem: Item get() = _yellowItem.get()
val limeItem: Item get() = _limeItem.get()
val pinkItem: Item get() = _pinkItem.get()
val grayItem: Item get() = _grayItem.get()
val lightGrayItem: Item get() = _lightGrayItem.get()
val cyanItem: Item get() = _cyanItem.get()
val purpleItem: Item get() = _purpleItem.get()
val blueItem: Item get() = _blueItem.get()
val brownItem: Item get() = _brownItem.get()
val greenItem: Item get() = _greenItem.get()
val redItem: Item get() = _redItem.get()
val blackItem: Item get() = _blackItem.get()
val coloredBlocks: List<Block> by lazy {
LazyList(
_whiteBlock::get,
_orangeBlock::get,
_magentaBlock::get,
_lightBlueBlock::get,
_yellowBlock::get,
_limeBlock::get,
_pinkBlock::get,
_grayBlock::get,
_lightGrayBlock::get,
_cyanBlock::get,
_purpleBlock::get,
_blueBlock::get,
_brownBlock::get,
_greenBlock::get,
_redBlock::get,
_blackBlock::get,
)
}
val mappedColoredBlocks: Map<DyeColor, Block> by lazy {
LazyMap(
DyeColor.WHITE to _whiteBlock::get,
DyeColor.ORANGE to _orangeBlock::get,
DyeColor.MAGENTA to _magentaBlock::get,
DyeColor.LIGHT_BLUE to _lightBlueBlock::get,
DyeColor.YELLOW to _yellowBlock::get,
DyeColor.LIME to _limeBlock::get,
DyeColor.PINK to _pinkBlock::get,
DyeColor.GRAY to _grayBlock::get,
DyeColor.LIGHT_GRAY to _lightGrayBlock::get,
DyeColor.CYAN to _cyanBlock::get,
DyeColor.PURPLE to _purpleBlock::get,
DyeColor.BLUE to _blueBlock::get,
DyeColor.BROWN to _brownBlock::get,
DyeColor.GREEN to _greenBlock::get,
DyeColor.RED to _redBlock::get,
DyeColor.BLACK to _blackBlock::get,
)
}
val coloredItems: List<Item> by lazy {
LazyList(
_whiteItem::get,
_orangeItem::get,
_magentaItem::get,
_lightBlueItem::get,
_yellowItem::get,
_limeItem::get,
_pinkItem::get,
_grayItem::get,
_lightGrayItem::get,
_cyanItem::get,
_purpleItem::get,
_blueItem::get,
_brownItem::get,
_greenItem::get,
_redItem::get,
_blackItem::get,
)
}
val mappedColoredItems: Map<DyeColor, Item> by lazy {
LazyMap(
DyeColor.WHITE to _whiteItem::get,
DyeColor.ORANGE to _orangeItem::get,
DyeColor.MAGENTA to _magentaItem::get,
DyeColor.LIGHT_BLUE to _lightBlueItem::get,
DyeColor.YELLOW to _yellowItem::get,
DyeColor.LIME to _limeItem::get,
DyeColor.PINK to _pinkItem::get,
DyeColor.GRAY to _grayItem::get,
DyeColor.LIGHT_GRAY to _lightGrayItem::get,
DyeColor.CYAN to _cyanItem::get,
DyeColor.PURPLE to _purpleItem::get,
DyeColor.BLUE to _blueItem::get,
DyeColor.BROWN to _brownItem::get,
DyeColor.GREEN to _greenItem::get,
DyeColor.RED to _redItem::get,
DyeColor.BLACK to _blackItem::get,
)
}
open fun registerBlocks(registry: DeferredRegister<Block>) {
_whiteBlock = registry.register("${baseName}_white") { provider.invoke(DyeColor.WHITE) }
_orangeBlock = registry.register("${baseName}_orange") { provider.invoke(DyeColor.ORANGE) }
_magentaBlock = registry.register("${baseName}_magenta") { provider.invoke(DyeColor.MAGENTA) }
_lightBlueBlock = registry.register("${baseName}_light_blue") { provider.invoke(DyeColor.LIGHT_BLUE) }
_yellowBlock = registry.register("${baseName}_yellow") { provider.invoke(DyeColor.YELLOW) }
_limeBlock = registry.register("${baseName}_lime") { provider.invoke(DyeColor.LIME) }
_pinkBlock = registry.register("${baseName}_pink") { provider.invoke(DyeColor.PINK) }
_grayBlock = registry.register("${baseName}_gray") { provider.invoke(DyeColor.GRAY) }
_lightGrayBlock = registry.register("${baseName}_light_gray") { provider.invoke(DyeColor.LIGHT_GRAY) }
_cyanBlock = registry.register("${baseName}_cyan") { provider.invoke(DyeColor.CYAN) }
_purpleBlock = registry.register("${baseName}_purple") { provider.invoke(DyeColor.PURPLE) }
_blueBlock = registry.register("${baseName}_blue") { provider.invoke(DyeColor.BLUE) }
_brownBlock = registry.register("${baseName}_brown") { provider.invoke(DyeColor.BROWN) }
_greenBlock = registry.register("${baseName}_green") { provider.invoke(DyeColor.GREEN) }
_redBlock = registry.register("${baseName}_red") { provider.invoke(DyeColor.RED) }
_blackBlock = registry.register("${baseName}_black") { provider.invoke(DyeColor.BLACK) }
}
private val properties = Item.Properties().tab(itemGroup).stacksTo(64)
open fun registerItems(registry: DeferredRegister<Item>) {
_whiteItem = registry.register("${baseName}_white") { BlockItem(_whiteBlock.get(), properties) }
_orangeItem = registry.register("${baseName}_orange") { BlockItem(_orangeBlock.get(), properties) }
_magentaItem = registry.register("${baseName}_magenta") { BlockItem(_magentaBlock.get(), properties) }
_lightBlueItem = registry.register("${baseName}_light_blue") { BlockItem(_lightBlueBlock.get(), properties) }
_yellowItem = registry.register("${baseName}_yellow") { BlockItem(_yellowBlock.get(), properties) }
_limeItem = registry.register("${baseName}_lime") { BlockItem(_limeBlock.get(), properties) }
_pinkItem = registry.register("${baseName}_pink") { BlockItem(_pinkBlock.get(), properties) }
_grayItem = registry.register("${baseName}_gray") { BlockItem(_grayBlock.get(), properties) }
_lightGrayItem = registry.register("${baseName}_light_gray") { BlockItem(_lightGrayBlock.get(), properties) }
_cyanItem = registry.register("${baseName}_cyan") { BlockItem(_cyanBlock.get(), properties) }
_purpleItem = registry.register("${baseName}_purple") { BlockItem(_purpleBlock.get(), properties) }
_blueItem = registry.register("${baseName}_blue") { BlockItem(_blueBlock.get(), properties) }
_brownItem = registry.register("${baseName}_brown") { BlockItem(_brownBlock.get(), properties) }
_greenItem = registry.register("${baseName}_green") { BlockItem(_greenBlock.get(), properties) }
_redItem = registry.register("${baseName}_red") { BlockItem(_redBlock.get(), properties) }
_blackItem = registry.register("${baseName}_black") { BlockItem(_blackBlock.get(), properties) }
}
companion object {
fun simple(baseName: String, provider: (DyeColor) -> BlockBehaviour.Properties, itemGroup: CreativeModeTab = OverdriveThatMatters.INSTANCE.CREATIVE_TAB_DECORATIVE): ColoredDecorativeBlock {
return ColoredDecorativeBlock(baseName, {
Block(provider.invoke(it))
}, itemGroup)
}
}
}

View File

@ -0,0 +1,18 @@
package ru.dbotthepony.mc.otm.registry.objects
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.SoundType
import net.minecraft.world.level.block.state.BlockBehaviour
import net.minecraft.world.level.material.Material
import net.minecraft.world.level.material.MaterialColor
class CrateProperties(val color: MaterialColor, val name: String) {
fun makeBlock(): Block {
return Block(
BlockBehaviour.Properties.of(Material.METAL, color)
.sound(SoundType.METAL)
.requiresCorrectToolForDrops()
.strength(5.0F, 6.0F)
)
}
}

View File

@ -0,0 +1,145 @@
package ru.dbotthepony.mc.otm.registry.objects
import net.minecraft.world.item.BlockItem
import net.minecraft.world.item.CreativeModeTab
import net.minecraft.world.item.DyeColor
import net.minecraft.world.item.Item
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.state.BlockBehaviour
import net.minecraftforge.registries.DeferredRegister
import net.minecraftforge.registries.RegistryObject
import ru.dbotthepony.mc.otm.OverdriveThatMatters
import ru.dbotthepony.mc.otm.registry.LazyList
import ru.dbotthepony.mc.otm.registry.LazyMap
import ru.dbotthepony.mc.otm.registry.WriteOnce
/**
* Base + Colored
*/
class DecorativeBlock(
baseName: String,
private val provider: (DyeColor?) -> Block,
itemGroup: CreativeModeTab = OverdriveThatMatters.INSTANCE.CREATIVE_TAB_DECORATIVE,
val baseItemGroup: CreativeModeTab = OverdriveThatMatters.INSTANCE.CREATIVE_TAB_DECORATIVE,
) : ColoredDecorativeBlock(baseName, provider, itemGroup) {
private var _block: RegistryObject<Block> by WriteOnce()
private var _item: RegistryObject<Item> by WriteOnce()
val block: Block get() = _block.get()
val item: Item get() = _item.get()
val mappedColoredBlocksAll: Map<DyeColor?, Block> by lazy {
LazyMap(
null to _block::get,
DyeColor.WHITE to _whiteBlock::get,
DyeColor.ORANGE to _orangeBlock::get,
DyeColor.MAGENTA to _magentaBlock::get,
DyeColor.LIGHT_BLUE to _lightBlueBlock::get,
DyeColor.YELLOW to _yellowBlock::get,
DyeColor.LIME to _limeBlock::get,
DyeColor.PINK to _pinkBlock::get,
DyeColor.GRAY to _grayBlock::get,
DyeColor.LIGHT_GRAY to _lightGrayBlock::get,
DyeColor.CYAN to _cyanBlock::get,
DyeColor.PURPLE to _purpleBlock::get,
DyeColor.BLUE to _blueBlock::get,
DyeColor.BROWN to _brownBlock::get,
DyeColor.GREEN to _greenBlock::get,
DyeColor.RED to _redBlock::get,
DyeColor.BLACK to _blackBlock::get,
)
}
val mappedColoredItemsAll: Map<DyeColor?, Item> by lazy {
LazyMap(
null to _item::get,
DyeColor.WHITE to _whiteItem::get,
DyeColor.ORANGE to _orangeItem::get,
DyeColor.MAGENTA to _magentaItem::get,
DyeColor.LIGHT_BLUE to _lightBlueItem::get,
DyeColor.YELLOW to _yellowItem::get,
DyeColor.LIME to _limeItem::get,
DyeColor.PINK to _pinkItem::get,
DyeColor.GRAY to _grayItem::get,
DyeColor.LIGHT_GRAY to _lightGrayItem::get,
DyeColor.CYAN to _cyanItem::get,
DyeColor.PURPLE to _purpleItem::get,
DyeColor.BLUE to _blueItem::get,
DyeColor.BROWN to _brownItem::get,
DyeColor.GREEN to _greenItem::get,
DyeColor.RED to _redItem::get,
DyeColor.BLACK to _blackItem::get,
)
}
val blocks: List<Block> by lazy {
LazyList(
_block::get,
_whiteBlock::get,
_orangeBlock::get,
_magentaBlock::get,
_lightBlueBlock::get,
_yellowBlock::get,
_limeBlock::get,
_pinkBlock::get,
_grayBlock::get,
_lightGrayBlock::get,
_cyanBlock::get,
_purpleBlock::get,
_blueBlock::get,
_brownBlock::get,
_greenBlock::get,
_redBlock::get,
_blackBlock::get,
)
}
val items: List<Item> by lazy {
LazyList(
_item::get,
_whiteItem::get,
_orangeItem::get,
_magentaItem::get,
_lightBlueItem::get,
_yellowItem::get,
_limeItem::get,
_pinkItem::get,
_grayItem::get,
_lightGrayItem::get,
_cyanItem::get,
_purpleItem::get,
_blueItem::get,
_brownItem::get,
_greenItem::get,
_redItem::get,
_blackItem::get,
)
}
override fun registerBlocks(registry: DeferredRegister<Block>) {
_block = registry.register(baseName) { provider.invoke(DyeColor.WHITE) }
super.registerBlocks(registry)
}
override fun registerItems(registry: DeferredRegister<Item>) {
_item = registry.register(baseName) {
BlockItem(
_block.get(),
Item.Properties().tab(baseItemGroup).stacksTo(64)
)
}
super.registerItems(registry)
}
companion object {
fun simple(baseName: String, provider: (DyeColor?) -> BlockBehaviour.Properties, itemGroup: CreativeModeTab = OverdriveThatMatters.INSTANCE.CREATIVE_TAB_DECORATIVE): DecorativeBlock {
return DecorativeBlock(baseName, {
Block(provider.invoke(it))
}, itemGroup)
}
}
}