diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/NFCreativeTabs.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/NFCreativeTabs.kt deleted file mode 100644 index e3e0fae..0000000 --- a/src/main/kotlin/de/wulkanat/www/new_frontiers/NFCreativeTabs.kt +++ /dev/null @@ -1,19 +0,0 @@ -package de.wulkanat.www.new_frontiers - -import net.minecraft.creativetab.CreativeTabs -import net.minecraft.init.Blocks -import net.minecraft.item.Item -import net.minecraft.item.ItemStack -import net.minecraftforge.fml.relauncher.Side -import net.minecraftforge.fml.relauncher.SideOnly - -class NFCreativeTabs : CreativeTabs("new_frontiers") { - override fun getTabLabel(): String { - return "new_frontiers" - } - - @SideOnly(Side.CLIENT) - override fun createIcon(): ItemStack { - return ItemStack(Item.getItemFromBlock(NewFrontiers.ObjectRegistryHandler.blocks[0])) - } -} diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/NewFrontiers.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/NewFrontiers.kt index e91b845..f79e93b 100644 --- a/src/main/kotlin/de/wulkanat/www/new_frontiers/NewFrontiers.kt +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/NewFrontiers.kt @@ -1,14 +1,13 @@ package de.wulkanat.www.new_frontiers -import de.wulkanat.www.new_frontiers.blocks.FTLDrive -import de.wulkanat.www.new_frontiers.blocks.NFBlock -import de.wulkanat.www.new_frontiers.blocks.SpaceTeleporter -import de.wulkanat.www.new_frontiers.dimensions.Space +import de.wulkanat.www.new_frontiers.init.Blocks +import de.wulkanat.www.new_frontiers.init.Items +import de.wulkanat.www.new_frontiers.init.registerBiomes +import de.wulkanat.www.new_frontiers.init.registerDimensions import net.minecraft.block.Block import net.minecraft.item.Item import net.minecraft.item.ItemBlock -import net.minecraft.world.DimensionType -import net.minecraftforge.common.DimensionManager +import net.minecraftforge.client.event.ModelRegistryEvent import net.minecraftforge.event.RegistryEvent import net.minecraftforge.fml.common.Mod import net.minecraftforge.fml.common.event.FMLInitializationEvent @@ -27,65 +26,56 @@ object NewFrontiers { const val MOD_NAME = "New Frontiers" const val VERSION = "1.0-SNAPSHOT" - val NF_CREATIVE_TAB = NFCreativeTabs() - - /** - * This is the first initialization event. Register tile entities here. - * The registry events below will have fired prior to entry to this method. - */ @Mod.EventHandler fun preinit(event: FMLPreInitializationEvent) { - val a = DimensionType.register("Space", "_space", 2, Space::class.java, false) - DimensionManager.registerDimension(2, a) + // TODO: register world generator + + registerBiomes() + registerDimensions() + + // TODO: register entities } - /** - * This is the second initialization event. Register custom recipes - */ @Mod.EventHandler fun init(event: FMLInitializationEvent) { } - /** - * This is the final initialization event. Register actions from other mods here - */ @Mod.EventHandler fun postinit(event: FMLPostInitializationEvent) { } - /** - * This is a special class that listens to registry events, to allow creation of mod blocks and items at the proper time. - */ @Mod.EventBusSubscriber(modid = MOD_ID) object ObjectRegistryHandler { - val blocks: Array = arrayOf( - SpaceTeleporter(), - FTLDrive() - ) - - /** - * Listen for the register event for creating custom items - */ @SubscribeEvent @JvmStatic fun addItems(event: RegistryEvent.Register) { - for (block in blocks) { - if (block.hasItemBlock) { - event.registry.register(ItemBlock(block).setRegistryName(block.registryName)) + for (block in Blocks.values()) { + if (block.value.hasItemBlock) { + event.registry.register(ItemBlock(block.value).setRegistryName(block.value.registryName)) + } + } + + for (item in Items.values()) { + event.registry.register(item.value) + } + } + + @SubscribeEvent + @JvmStatic + fun registerModels(even: ModelRegistryEvent) { + for (item in Items.values()) { + if (item.value.hasCustomModel) { + item.value.registerModels() } } - // TODO: register items } - /** - * Listen for the register event for creating custom blocks - */ @SubscribeEvent @JvmStatic fun addBlocks(event: RegistryEvent.Register) { - for (block in blocks) { - event.registry.register(block) + for (block in Blocks.values()) { + event.registry.register(block.value) } } } diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFBiome.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFBiome.kt new file mode 100644 index 0000000..1a9a060 --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFBiome.kt @@ -0,0 +1,53 @@ +package de.wulkanat.www.new_frontiers.abstract_helpers + +import net.minecraft.block.state.IBlockState +import net.minecraft.world.biome.Biome +import net.minecraftforge.common.BiomeDictionary +import net.minecraftforge.common.BiomeManager + +abstract class NFBiome( + val name: String, + val biomeType: BiomeManager.BiomeType, + val types: Array, + baseHeight: Float = 1.0F, + heightVariation: Float = 1.0F, + temperature: Float = 0.5F, + rainFrequency: Float = 0.6F, + rain: Boolean = true, + snow: Boolean = false, + waterColor: Int = 16711680, + topBlock: IBlockState, + fillerBlock: IBlockState, + spawnableCaveCreatureList: List = arrayListOf(), + spawnableCreatureList: List = arrayListOf(), + spawnableMonsterList: List = arrayListOf(), + spawnableWaterCreatureList: List = arrayListOf() +) : Biome(setRainAndSnow(BiomeProperties(name) + .setBaseHeight(baseHeight) + .setHeightVariation(heightVariation) + .setTemperature(temperature) + .setRainfall(rainFrequency) + .setWaterColor(waterColor), rain, snow)) { + init { + this.topBlock = topBlock + this.fillerBlock = fillerBlock + + this.spawnableCaveCreatureList = spawnableCaveCreatureList + this.spawnableCreatureList = spawnableCreatureList + this.spawnableMonsterList = spawnableMonsterList + this.spawnableWaterCreatureList = spawnableWaterCreatureList + + // TODO: decorator + } + + companion object { + private fun setRainAndSnow(properties: BiomeProperties, rain: Boolean, snow: Boolean): BiomeProperties { + if (!rain) + properties.setRainDisabled() + if (snow) + properties.setSnowEnabled() + + return properties + } + } +} diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/NFBlock.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFBlock.kt similarity index 85% rename from src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/NFBlock.kt rename to src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFBlock.kt index a547039..cc4df61 100644 --- a/src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/NFBlock.kt +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFBlock.kt @@ -1,4 +1,4 @@ -package de.wulkanat.www.new_frontiers.blocks +package de.wulkanat.www.new_frontiers.abstract_helpers import de.wulkanat.www.new_frontiers.NewFrontiers import net.minecraft.block.Block @@ -16,7 +16,7 @@ abstract class NFBlock( lightLevel: Int = 0, lightOpacity: Int = 0, name: String, - creativeTabs: CreativeTabs = NewFrontiers.NF_CREATIVE_TAB + creativeTab: CreativeTabs = de.wulkanat.www.new_frontiers.init.CreativeTabs.NF_BLOCKS.value ) : Block(material) { init { // The Java code is a lot of hot garbage, so most of this is copied from the setter functions @@ -31,7 +31,7 @@ abstract class NFBlock( this.translationKey = name this.lightValue = lightLevel this.lightOpacity = lightOpacity - this.creativeTab = creativeTabs + this.creativeTab = creativeTab } override fun isCollidable(): Boolean { diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFCreativeTabs.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFCreativeTabs.kt new file mode 100644 index 0000000..4c17184 --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFCreativeTabs.kt @@ -0,0 +1,27 @@ +package de.wulkanat.www.new_frontiers.abstract_helpers + +import net.minecraft.creativetab.CreativeTabs +import net.minecraft.item.Item +import net.minecraft.item.ItemStack +import net.minecraftforge.fml.relauncher.Side +import net.minecraftforge.fml.relauncher.SideOnly + +abstract class NFCreativeTabs( + val name: String, + val tabIcon: () -> Item, + tabBackground: String? = null +) : CreativeTabs(name) { + init { + if (tabBackground != null) + backgroundImageName = tabBackground + } + + override fun getTabLabel(): String { + return name + } + + @SideOnly(Side.CLIENT) + override fun createIcon(): ItemStack { + return ItemStack(tabIcon()) + } +} diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFDimension.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFDimension.kt new file mode 100644 index 0000000..2bb5749 --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFDimension.kt @@ -0,0 +1,34 @@ +package de.wulkanat.www.new_frontiers.abstract_helpers + +import net.minecraft.world.DimensionType +import net.minecraft.world.WorldProvider +import net.minecraft.world.biome.BiomeProvider +import net.minecraft.world.gen.IChunkGenerator + +abstract class NFDimension( + private val canRespawn: Boolean = true, + private val surfaceDimension: Boolean = false, + val name: String, + val id: Int, + biomeProvider: BiomeProvider +) : WorldProvider() { + init { + this.biomeProvider = biomeProvider + } + + private val dimType: DimensionType = DimensionType.register(name, "_${name.toLowerCase()}", id, this.javaClass, false) + + override fun getDimensionType(): DimensionType? { + return dimType + } + + abstract override fun createChunkGenerator(): IChunkGenerator + + override fun canRespawnHere(): Boolean { + return canRespawn + } + + override fun isSurfaceWorld(): Boolean { + return surfaceDimension + } +} diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFItem.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFItem.kt new file mode 100644 index 0000000..d79afff --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/abstract_helpers/NFItem.kt @@ -0,0 +1,22 @@ +package de.wulkanat.www.new_frontiers.abstract_helpers + +import de.wulkanat.www.new_frontiers.NewFrontiers +import de.wulkanat.www.new_frontiers.proxy.registerItemRenderer +import net.minecraft.creativetab.CreativeTabs +import net.minecraft.item.Item + +abstract class NFItem( + name: String, + creativeTab: CreativeTabs = de.wulkanat.www.new_frontiers.init.CreativeTabs.NF_ITEMS.value, + val hasCustomModel: Boolean = false +) : Item() { + init { + setRegistryName("${NewFrontiers.MOD_ID}:$name") + this.translationKey = name + this.creativeTab = creativeTab + } + + fun registerModels() { + registerItemRenderer(this, 0, "inventory") + } +} diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/biomes/BiomeDeepSpace.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/biomes/BiomeDeepSpace.kt new file mode 100644 index 0000000..cc6e80d --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/biomes/BiomeDeepSpace.kt @@ -0,0 +1,18 @@ +package de.wulkanat.www.new_frontiers.biomes + +import de.wulkanat.www.new_frontiers.abstract_helpers.NFBiome +import net.minecraft.block.BlockClay +import net.minecraft.block.BlockStone +import net.minecraftforge.common.BiomeDictionary +import net.minecraftforge.common.BiomeManager + +class BiomeDeepSpace : NFBiome( + name = "deep_space", + biomeType = BiomeManager.BiomeType.COOL, + types = arrayOf(BiomeDictionary.Type.VOID), + rain = false, + snow = false, + temperature = 0F, + topBlock = BlockStone().defaultState, + fillerBlock = BlockClay().defaultState +) diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/biomes/NFBiome.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/biomes/NFBiome.kt deleted file mode 100644 index 4bfc4db..0000000 --- a/src/main/kotlin/de/wulkanat/www/new_frontiers/biomes/NFBiome.kt +++ /dev/null @@ -1,2 +0,0 @@ -package de.wulkanat.www.new_frontiers.biomes - diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/FTLDrive.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/BlockFTLDrive.kt similarity index 61% rename from src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/FTLDrive.kt rename to src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/BlockFTLDrive.kt index ae3ddfa..09dd814 100644 --- a/src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/FTLDrive.kt +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/BlockFTLDrive.kt @@ -1,8 +1,9 @@ package de.wulkanat.www.new_frontiers.blocks +import de.wulkanat.www.new_frontiers.abstract_helpers.NFBlock import net.minecraft.block.material.Material -class FTLDrive : NFBlock( +class BlockFTLDrive : NFBlock( material = Material.ANVIL, name = "ftl_drive" ) diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/SpaceTeleporter.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/BlockSpaceTeleporter.kt similarity index 68% rename from src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/SpaceTeleporter.kt rename to src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/BlockSpaceTeleporter.kt index 2797f02..e249035 100644 --- a/src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/SpaceTeleporter.kt +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/blocks/BlockSpaceTeleporter.kt @@ -1,8 +1,9 @@ package de.wulkanat.www.new_frontiers.blocks +import de.wulkanat.www.new_frontiers.abstract_helpers.NFBlock import net.minecraft.block.material.Material -class SpaceTeleporter : NFBlock( +class BlockSpaceTeleporter : NFBlock( material = Material.GROUND, hardness = 1.5F, resistance = 2.5F, diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/creativetabs/CreativeTabNFBlocks.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/creativetabs/CreativeTabNFBlocks.kt new file mode 100644 index 0000000..1f1093d --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/creativetabs/CreativeTabNFBlocks.kt @@ -0,0 +1,10 @@ +package de.wulkanat.www.new_frontiers.creativetabs + +import de.wulkanat.www.new_frontiers.abstract_helpers.NFCreativeTabs +import de.wulkanat.www.new_frontiers.init.Blocks +import net.minecraft.item.Item + +class CreativeTabNFBlocks : NFCreativeTabs( + name = "nf_blocks", + tabIcon = { Item.getItemFromBlock(Blocks.SPACE_TELEPORTER.value) } +) diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/creativetabs/CreativeTabNFItems.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/creativetabs/CreativeTabNFItems.kt new file mode 100644 index 0000000..d71fc79 --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/creativetabs/CreativeTabNFItems.kt @@ -0,0 +1,9 @@ +package de.wulkanat.www.new_frontiers.creativetabs + +import de.wulkanat.www.new_frontiers.abstract_helpers.NFCreativeTabs +import de.wulkanat.www.new_frontiers.init.Items + +class CreativeTabNFItems : NFCreativeTabs( + name = "nf_items", + tabIcon = { Items.TEST_ITEM.value } +) diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/dimensions/DimensionSpace.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/dimensions/DimensionSpace.kt new file mode 100644 index 0000000..a859b0f --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/dimensions/DimensionSpace.kt @@ -0,0 +1,19 @@ +package de.wulkanat.www.new_frontiers.dimensions + +import de.wulkanat.www.new_frontiers.abstract_helpers.NFDimension +import de.wulkanat.www.new_frontiers.dimensions.chunkgen.VoidChunkGenerator +import de.wulkanat.www.new_frontiers.init.Biomes +import net.minecraft.world.biome.BiomeProviderSingle +import net.minecraft.world.gen.IChunkGenerator + +class DimensionSpace : NFDimension( + name = "space", + id = 2, + canRespawn = true, + surfaceDimension = false, + biomeProvider = BiomeProviderSingle(Biomes.DEEP_SPACE.value) +) { + override fun createChunkGenerator(): IChunkGenerator { + return VoidChunkGenerator(this.world) + } +} diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/dimensions/NFDimension.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/dimensions/NFDimension.kt deleted file mode 100644 index 134d411..0000000 --- a/src/main/kotlin/de/wulkanat/www/new_frontiers/dimensions/NFDimension.kt +++ /dev/null @@ -1,21 +0,0 @@ -package de.wulkanat.www.new_frontiers.dimensions - -import net.minecraft.world.DimensionType -import net.minecraft.world.WorldProvider -import net.minecraft.world.gen.IChunkGenerator - -abstract class NFDimension( - private val canRespawn: Boolean = true, - private val surfaceDimension: Boolean = false -) : WorldProvider() { - abstract override fun getDimensionType(): DimensionType - abstract override fun createChunkGenerator(): IChunkGenerator - - override fun canRespawnHere(): Boolean { - return canRespawn - } - - override fun isSurfaceWorld(): Boolean { - return surfaceDimension - } -} diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/dimensions/Space.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/dimensions/Space.kt deleted file mode 100644 index 4c92cdf..0000000 --- a/src/main/kotlin/de/wulkanat/www/new_frontiers/dimensions/Space.kt +++ /dev/null @@ -1,17 +0,0 @@ -package de.wulkanat.www.new_frontiers.dimensions - -import net.minecraft.world.DimensionType -import net.minecraft.world.gen.IChunkGenerator - -class Space : NFDimension( - canRespawn = true, - surfaceDimension = false -) { - override fun getDimensionType(): DimensionType { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. - } - - override fun createChunkGenerator(): IChunkGenerator { - TODO("not implemented") - } -} diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/dimensions/chunkgen/VoidChunkGenerator.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/dimensions/chunkgen/VoidChunkGenerator.kt new file mode 100644 index 0000000..e673311 --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/dimensions/chunkgen/VoidChunkGenerator.kt @@ -0,0 +1,40 @@ +package de.wulkanat.www.new_frontiers.dimensions.chunkgen + +import net.minecraft.entity.EnumCreatureType +import net.minecraft.util.math.BlockPos +import net.minecraft.world.World +import net.minecraft.world.biome.Biome +import net.minecraft.world.chunk.Chunk +import net.minecraft.world.gen.IChunkGenerator + +class VoidChunkGenerator( + private val world: World +) : IChunkGenerator { + override fun generateStructures(p0: Chunk, p1: Int, p2: Int): Boolean { + return false + } + + override fun getPossibleCreatures(p0: EnumCreatureType, p1: BlockPos): MutableList { + return arrayListOf() + } + + override fun populate(p0: Int, p1: Int) { + // noop + } + + override fun recreateStructures(p0: Chunk, p1: Int, p2: Int) { + // noop + } + + override fun getNearestStructurePos(p0: World, p1: String, p2: BlockPos, p3: Boolean): BlockPos? { + return null + } + + override fun generateChunk(p0: Int, p1: Int): Chunk { + return Chunk(world, p0, p1) + } + + override fun isInsideStructure(p0: World, p1: String, p2: BlockPos): Boolean { + return false + } +} diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/init/biome_init.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/init/biome_init.kt new file mode 100644 index 0000000..5c8f00c --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/init/biome_init.kt @@ -0,0 +1,27 @@ +package de.wulkanat.www.new_frontiers.init + +import de.wulkanat.www.new_frontiers.biomes.BiomeDeepSpace +import de.wulkanat.www.new_frontiers.abstract_helpers.NFBiome +import net.minecraft.world.biome.Biome +import net.minecraftforge.common.BiomeDictionary +import net.minecraftforge.common.BiomeManager +import net.minecraftforge.fml.common.registry.ForgeRegistries + +enum class Biomes(val value: NFBiome) { + DEEP_SPACE(BiomeDeepSpace()) +} + +fun registerBiomes() { + for (biome in Biomes.values()) { + initBiome(biome.value, biome.value.name, biome.value.biomeType, *biome.value.types) + } +} + +fun initBiome(biome: Biome, name: String, biomeType: BiomeManager.BiomeType, vararg types: BiomeDictionary.Type): Biome { + biome.setRegistryName(name) + ForgeRegistries.BIOMES.register(biome) + BiomeDictionary.addTypes(biome, *types) + BiomeManager.addBiome(biomeType, BiomeManager.BiomeEntry(biome, 10)) + BiomeManager.addSpawnBiome(biome) + return biome +} diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/init/block_init.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/init/block_init.kt new file mode 100644 index 0000000..aeb6484 --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/init/block_init.kt @@ -0,0 +1,32 @@ +package de.wulkanat.www.new_frontiers.init + +import de.wulkanat.www.new_frontiers.blocks.BlockFTLDrive +import de.wulkanat.www.new_frontiers.abstract_helpers.NFBlock +import de.wulkanat.www.new_frontiers.blocks.BlockSpaceTeleporter + +enum class Blocks(value: NFBlock) { + SPACE_TELEPORTER(BlockSpaceTeleporter()), + FTL_DRIVE(BlockFTLDrive()); + + val value: NFBlock by lazy { + value + } +} + +class B(val a: String) { + init { + println("B Created") + } +} + +class A(a: B) { + val b by lazy { + a + } +} + +fun main() { + val a = A(B("something")) + + println(a.b) +} diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/init/creativetabs_init.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/init/creativetabs_init.kt new file mode 100644 index 0000000..49dc9e0 --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/init/creativetabs_init.kt @@ -0,0 +1,10 @@ +package de.wulkanat.www.new_frontiers.init + +import de.wulkanat.www.new_frontiers.creativetabs.CreativeTabNFBlocks +import de.wulkanat.www.new_frontiers.abstract_helpers.NFCreativeTabs +import de.wulkanat.www.new_frontiers.creativetabs.CreativeTabNFItems + +enum class CreativeTabs(val value: NFCreativeTabs) { + NF_BLOCKS(CreativeTabNFBlocks()), + NF_ITEMS(CreativeTabNFItems()) +} diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/init/dimension_init.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/init/dimension_init.kt new file mode 100644 index 0000000..9e87b70 --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/init/dimension_init.kt @@ -0,0 +1,15 @@ +package de.wulkanat.www.new_frontiers.init + +import de.wulkanat.www.new_frontiers.dimensions.DimensionSpace +import de.wulkanat.www.new_frontiers.abstract_helpers.NFDimension +import net.minecraftforge.common.DimensionManager + +enum class DimensionTypes(val value: NFDimension) { + SPACE(DimensionSpace()); +} + +fun registerDimensions() { + for (dimensionType in DimensionTypes.values()) { + DimensionManager.registerDimension(dimensionType.value.id, dimensionType.value.dimensionType) + } +} diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/init/item_init.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/init/item_init.kt new file mode 100644 index 0000000..a1e599c --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/init/item_init.kt @@ -0,0 +1,8 @@ +package de.wulkanat.www.new_frontiers.init + +import de.wulkanat.www.new_frontiers.abstract_helpers.NFItem +import de.wulkanat.www.new_frontiers.items.ItemTestItem + +enum class Items(val value: NFItem) { + TEST_ITEM(ItemTestItem()) +} diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/items/ItemTestItem.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/items/ItemTestItem.kt new file mode 100644 index 0000000..faa8bd6 --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/items/ItemTestItem.kt @@ -0,0 +1,7 @@ +package de.wulkanat.www.new_frontiers.items + +import de.wulkanat.www.new_frontiers.abstract_helpers.NFItem + +class ItemTestItem : NFItem( + name = "test_item" +) diff --git a/src/main/kotlin/de/wulkanat/www/new_frontiers/proxy/client-proxy.kt b/src/main/kotlin/de/wulkanat/www/new_frontiers/proxy/client-proxy.kt new file mode 100644 index 0000000..e62ac5f --- /dev/null +++ b/src/main/kotlin/de/wulkanat/www/new_frontiers/proxy/client-proxy.kt @@ -0,0 +1,10 @@ +package de.wulkanat.www.new_frontiers.proxy + +import net.minecraft.client.renderer.block.model.ModelResourceLocation +import net.minecraft.item.Item +import net.minecraft.util.ResourceLocation +import net.minecraftforge.client.model.ModelLoader + +fun registerItemRenderer(item: Item, meta: Int, id: String) { + ModelLoader.setCustomModelResourceLocation(item, meta, ModelResourceLocation(item.registryName as ResourceLocation, id)) +} diff --git a/src/main/resources/assets/new_frontiers/lang/en_US.lang b/src/main/resources/assets/new_frontiers/lang/en_US.lang index fdcc93b..97ebc18 100644 --- a/src/main/resources/assets/new_frontiers/lang/en_US.lang +++ b/src/main/resources/assets/new_frontiers/lang/en_US.lang @@ -1,4 +1,5 @@ tile.space_teleporter.name=Space Teleporter tile.ftl_drive.name=FTL Drive -itemGroup.new_frontiers=New Frontiers +itemGroup.nf_blocks=New Frontiers Blocks +itemGroup.nf_items=New Frontiers Items diff --git a/src/main/resources/assets/new_frontiers/models/item/test_item.json b/src/main/resources/assets/new_frontiers/models/item/test_item.json new file mode 100644 index 0000000..56d7f7d --- /dev/null +++ b/src/main/resources/assets/new_frontiers/models/item/test_item.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "new_frontiers:items/test_item" + } +} diff --git a/src/main/resources/assets/new_frontiers/textures/items/test_item.png b/src/main/resources/assets/new_frontiers/textures/items/test_item.png new file mode 100644 index 0000000..387f4e5 Binary files /dev/null and b/src/main/resources/assets/new_frontiers/textures/items/test_item.png differ