Skip to content

Commit

Permalink
feat: add ore worldgen
Browse files Browse the repository at this point in the history
  • Loading branch information
MrTJP committed Jul 23, 2021
1 parent 7884cf2 commit 4758221
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 15 deletions.
30 changes: 15 additions & 15 deletions src/core/scala/mrtjp/projectred/core/Configurator.scala
Original file line number Diff line number Diff line change
Expand Up @@ -39,25 +39,25 @@ object Configurator extends ModConfig("projectred-core") {
// var gen_Volcano = true
// var gen_Volcano_resistance = 0
// var gen_Volcano_retro = false
// var gen_Ruby = true
var gen_Ruby = true
// var gen_Ruby_resistance = 0
// var gen_Ruby_retro = false
// var gen_Sapphire = true
var gen_Sapphire = true
// var gen_Sapphire_resistance = 0
// var gen_Sapphire_retro = false
// var gen_Peridot = true
var gen_Peridot = true
// var gen_Peridot_resistance = 0
// var gen_Peridot_retro = false
// var gen_Copper = true
var gen_Copper = true
// var gen_Copper_resistance = 0
// var gen_Copper_retro = false
// var gen_Tin = true
var gen_Tin = true
// var gen_Tin_resistance = 0
// var gen_Tin_retro = false
// var gen_Silver = true
var gen_Silver = true
// var gen_Silver_resistance = 0
// var gen_Silver_retro = false
// var gen_Electrotine = true
var gen_Electrotine = true
// var gen_Electrotine_resistance = 0
// var gen_Electrotine_retro = false

Expand Down Expand Up @@ -96,16 +96,16 @@ object Configurator extends ModConfig("projectred-core") {
lightHaloMax = rendering.put("Light Halo Render Count", lightHaloMax, "Number of lights to render, -1 for unlimited")
pipeRoutingFX = rendering.put("Routed Pipe FX", pipeRoutingFX, "If set to false, routed pipes will not render routing fx such as bubbles and lasers.")

// val gen = new BaseCategory("World Gen", "Contains settings related to world gen. You can enable/disable each ore or strucure, change retro generation settings, and increase how rare something is by increasing the resistance value.")
// gen_Ruby = gen.put("Ruby Ore", gen_Ruby)
val gen = new BaseCategory("World Gen", "Contains settings related to world gen. You can enable/disable each ore or strucure, change retro generation settings, and increase how rare something is by increasing the resistance value.")
gen_Ruby = gen.put("Ruby Ore", gen_Ruby)
// gen_Ruby_resistance = gen.put("Ruby Ore resistance", gen_Ruby_resistance)
// gen_Ruby_retro = gen.put("Ruby Ore retrogen", gen_Ruby_retro)
//
// gen_Sapphire = gen.put("Sapphire Ore", gen_Sapphire)
gen_Sapphire = gen.put("Sapphire Ore", gen_Sapphire)
// gen_Sapphire_resistance = gen.put("Sapphire Ore resistance", gen_Sapphire_resistance)
// gen_Sapphire_retro = gen.put("Sapphire Ore retrogen", gen_Sapphire_retro)
//
// gen_Peridot = gen.put("Peridot Ore", gen_Peridot)
gen_Peridot = gen.put("Peridot Ore", gen_Peridot)
// gen_Peridot_resistance = gen.put("Peridot Ore resistance", gen_Peridot_resistance)
// gen_Peridot_retro = gen.put("Peridot Ore retrogen", gen_Peridot_retro)
//
Expand All @@ -117,19 +117,19 @@ object Configurator extends ModConfig("projectred-core") {
// gen_Volcano_resistance = gen.put("Volcano resistance", gen_Volcano_resistance)
// gen_Volcano_retro = gen.put("Volcano retrogen", gen_Volcano_retro)
//
// gen_Copper = gen.put("Copper Ore", gen_Copper)
gen_Copper = gen.put("Copper Ore", gen_Copper)
// gen_Copper_resistance = gen.put("Copper Ore resistance", gen_Copper_resistance)
// gen_Copper_retro = gen.put("Copper Ore retrogen", gen_Copper_retro)
//
// gen_Tin = gen.put("Tin Ore", gen_Tin)
gen_Tin = gen.put("Tin Ore", gen_Tin)
// gen_Tin_resistance = gen.put("Tin Ore resistance", gen_Tin_resistance)
// gen_Tin_retro = gen.put("Tin Ore retrogen", gen_Tin_retro)
//
// gen_Silver = gen.put("Silver Ore", gen_Silver)
gen_Silver = gen.put("Silver Ore", gen_Silver)
// gen_Silver_resistance = gen.put("Silver Ore resistance", gen_Silver_resistance)
// gen_Silver_retro = gen.put("Silver Ore retrogen", gen_Silver_retro)
//
// gen_Electrotine = gen.put("Electrotine Ore", gen_Electrotine)
gen_Electrotine = gen.put("Electrotine Ore", gen_Electrotine)
// gen_Electrotine_resistance = gen.put("Electrotine Ore resistance", gen_Electrotine_resistance)
// gen_Electrotine_retro = gen.put("Electrotine Ore retrogen", gen_Electrotine_retro)

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@
package mrtjp.projectred

import mrtjp.projectred.exploration._
import mrtjp.projectred.exploration.init.ExplorationFeatures
import net.minecraftforge.eventbus.api.SubscribeEvent
import net.minecraftforge.fml.event.lifecycle.{FMLClientSetupEvent, FMLCommonSetupEvent, FMLDedicatedServerSetupEvent, FMLLoadCompleteEvent}
import net.minecraftforge.scorge.lang.ScorgeModLoadingContext

import scala.jdk.FunctionWrappers.AsJavaSupplier

object ProjectRedExploration {
final var MOD_ID = "projectred-exploration"
}
Expand All @@ -17,6 +20,7 @@ class ProjectRedExploration {
@SubscribeEvent
def onCommonSetup(event: FMLCommonSetupEvent) {
ExplorationProxy.commonSetup(event)
event.enqueueWork(AsJavaSupplier(() => ExplorationFeatures.load()))
}

@SubscribeEvent
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package mrtjp.projectred.exploration.init

import mrtjp.projectred.ProjectRedExploration.MOD_ID
import mrtjp.projectred.core.Configurator
import mrtjp.projectred.exploration.ExplorationContent._
import net.minecraft.block.Block
import net.minecraft.util.ResourceLocation
import net.minecraft.util.registry.{Registry, WorldGenRegistries}
import net.minecraft.world.gen.GenerationStage
import net.minecraft.world.gen.feature.{ConfiguredFeature, Feature, OreFeatureConfig}
import net.minecraft.world.gen.placement.{Placement, TopSolidRangeConfig}
import net.minecraftforge.common.MinecraftForge
import net.minecraftforge.event.world.BiomeLoadingEvent
import net.minecraftforge.eventbus.api.EventPriority

import java.util.function.Supplier

object ExplorationFeatures
{
var oreRuby:ConfiguredFeature[_, _] = _
var oreSapphire:ConfiguredFeature[_, _] = _
var orePeridot:ConfiguredFeature[_, _] = _
var oreCopper:ConfiguredFeature[_, _] = _
var oreTin:ConfiguredFeature[_, _] = _
var oreSilver:ConfiguredFeature[_, _] = _
var oreElectrotine:ConfiguredFeature[_, _] = _

def load():Unit = {
oreRuby = registerStandardOre("ruby_ore", blockRubyOre, 8, 12, 20, 1)
oreSapphire = registerStandardOre("sapphire_ore", blockSapphireOre, 8, 12, 20, 1)
orePeridot = registerStandardOre("peridot_dore", blockPeridotOre, 10, 18, 26, 1)

oreCopper = registerStandardOre("ore_copper", blockCopperOre, 8, 0, 64, 16)
oreTin = registerStandardOre("ore_tin", blockTinOre, 8, 0, 48, 10)
oreSilver = registerStandardOre("ore_silver", blockSilverOre, 9, 0, 32, 8)

oreElectrotine = registerStandardOre("ore_electrotine", blockElectrotineOre, 8, 0, 16, 4)

MinecraftForge.EVENT_BUS.addListener(EventPriority.HIGH, onBiomeLoadingEvent)
}

def onBiomeLoadingEvent(event:BiomeLoadingEvent):Unit = {
val c = event.getCategory
import net.minecraft.world.biome.Biome.Category._

def addOre(cf:ConfiguredFeature[_, _]):Unit = {
event.getGeneration.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, cf)
}

if (c != NONE && c != THEEND && c != NETHER) { // If overworld
import Configurator._
if (gen_Ruby) addOre(oreRuby)
if (gen_Sapphire) addOre(oreSapphire)
if (gen_Peridot) addOre(orePeridot)
if (gen_Copper) addOre(oreCopper)
if (gen_Tin) addOre(oreTin)
if (gen_Silver) addOre(oreSilver)
if (gen_Electrotine) addOre(oreElectrotine)
}
}

private def registerStandardOre(key:String, block:Supplier[Block], veinSize:Int, minY:Int, maxY:Int, count:Int):ConfiguredFeature[_, _] = {
val cf = Feature.ORE.configured(new OreFeatureConfig(OreFeatureConfig.FillerBlockType.NATURAL_STONE, block.get().defaultBlockState(), veinSize))
.squared()
.count(count)
val cf2:ConfiguredFeature[_, _] = cf.decorated(Placement.RANGE.configured(new TopSolidRangeConfig(minY, minY, maxY))) //Scalac bug requires this on separate line
Registry.register(WorldGenRegistries.CONFIGURED_FEATURE, new ResourceLocation(MOD_ID, key), cf2)
}
}

0 comments on commit 4758221

Please sign in to comment.