Move registry helper classes to subpackage
This commit is contained in:
parent
c0d71a49fc
commit
56d5277988
@ -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 {
|
||||
|
@ -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
|
||||
|
@ -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")
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
@ -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)
|
||||
)
|
||||
}
|
||||
}
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user