Skip to content

Commit 12e6db3

Browse files
authored
Merge pull request #14 from Create-Civilization/1.21.1-DataMaps
DataMaps!!!! Coolant works hardness works NEEDS BALANCING
2 parents 15d4e39 + 93fd2d5 commit 12e6db3

5 files changed

Lines changed: 98 additions & 6 deletions

File tree

src/main/java/com/createcivilization/create_ore_deposits/CreateOreDeposits.kt

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ package com.createcivilization.create_ore_deposits
44
import com.createcivilization.create_ore_deposits.config.Config
55
import com.createcivilization.create_ore_deposits.registry.block.CreateOreDepositsBlockEntities
66
import com.createcivilization.create_ore_deposits.registry.block.CreateOreDepositsBlocks
7+
import com.createcivilization.create_ore_deposits.registry.datamap.CreateOreDepositsDataMaps
78
import com.createcivilization.create_ore_deposits.registry.fluid.CreateOreDepositsFluids
89
import com.createcivilization.create_ore_deposits.registry.item.CreateOreDepositsItems
910
import com.createcivilization.create_ore_deposits.registry.tab.CreateOreDepositsTabs
@@ -18,6 +19,7 @@ import net.neoforged.fml.common.Mod
1819
import net.neoforged.fml.config.ModConfig
1920
import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent
2021
import net.neoforged.neoforge.event.server.ServerStartingEvent
22+
import net.neoforged.neoforge.registries.datamaps.RegisterDataMapTypesEvent
2123

2224
import thedarkcolour.kotlinforforge.neoforge.forge.FORGE_BUS
2325
import thedarkcolour.kotlinforforge.neoforge.forge.LOADING_CONTEXT
@@ -32,6 +34,8 @@ data object CreateOreDeposits {
3234

3335
init {
3436
MOD_BUS.addListener(this::commonSetup)
37+
MOD_BUS.addListener(this::registerDataMapTypes)
38+
3539
val container: ModContainer = LOADING_CONTEXT.activeContainer!!
3640
container.registerConfig(ModConfig.Type.SERVER, Config.serverSpec)
3741

@@ -43,6 +47,7 @@ data object CreateOreDeposits {
4347
CreateOreDepositsBlockEntities
4448
CreateOreDepositsFluids
4549
CreateOreDepositsTags
50+
CreateOreDepositsDataMaps
4651

4752
CreateOreDepositsTabs.register(MOD_BUS)
4853
}
@@ -51,6 +56,11 @@ data object CreateOreDeposits {
5156
// Some common setup code
5257
}
5358

59+
private fun registerDataMapTypes(event: RegisterDataMapTypesEvent) {
60+
event.register(CreateOreDepositsDataMaps.HARDNESS_DATA)
61+
event.register(CreateOreDepositsDataMaps.COOLING_FACTOR_DATA)
62+
}
63+
5464
@SubscribeEvent
5565
fun onServerStarting(event: ServerStartingEvent) {
5666
logI("Starting server...")

src/main/java/com/createcivilization/create_ore_deposits/registry/block/entries/deposit_drill/DepositDrillBlockEntity.kt

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
package com.createcivilization.create_ore_deposits.registry.block.entries.deposit_drill
22

33
import com.createcivilization.create_ore_deposits.config.Config
4+
import com.createcivilization.create_ore_deposits.registry.datamap.CreateOreDepositsDataMaps
5+
import com.createcivilization.create_ore_deposits.registry.datamap.CreateOreDepositsDataMaps.COOLING_FACTOR_DATA
6+
import com.createcivilization.create_ore_deposits.registry.datamap.CreateOreDepositsDataMaps.HARDNESS_DATA
47
import com.createcivilization.create_ore_deposits.util.translate
58
import com.createcivilization.create_ore_deposits.registry.tag.CreateOreDepositsTags
69
import com.createcivilization.create_ore_deposits.registry.fluid.CreateOreDepositsFluids
@@ -19,7 +22,6 @@ import net.minecraft.core.registries.BuiltInRegistries
1922
import net.minecraft.nbt.CompoundTag
2023
import net.minecraft.network.chat.Component
2124
import net.minecraft.server.level.ServerLevel
22-
import net.minecraft.world.entity.vehicle.Minecart
2325
import net.minecraft.world.item.ItemStack
2426
import net.minecraft.world.level.Level
2527
import net.minecraft.world.level.block.Block
@@ -200,8 +202,8 @@ class DepositDrillBlockEntity(
200202
.style(ChatFormatting.GOLD)
201203
.forGoggles(tooltip)
202204

203-
val fluidInCoolantTank: FluidStack = lubricantHandler.getFluidInTank(0)
204-
if (!fluidInLubricantTank.isEmpty)
205+
val fluidInCoolantTank: FluidStack = coolantHandler.getFluidInTank(0)
206+
if (!fluidInCoolantTank.isEmpty)
205207
translate("tooltip.drill.contains.coolant", Component.translatable(fluidInCoolantTank.descriptionId), fluidInCoolantTank.amount)
206208
.style(ChatFormatting.BLUE)
207209
.forGoggles(tooltip)
@@ -243,9 +245,16 @@ class DepositDrillBlockEntity(
243245
}
244246

245247
fun updateTemperature() {
246-
// TEMP VARIABLES
247-
val blockHardness = 0.1f // Will be the current block its breaking and its hardness
248-
val coolingFactor = 0.0f // Will be cooling factor of the coolant
248+
val hardnessData: CreateOreDepositsDataMaps.HardnessData? = getTargetBlockState()?.blockHolder?.getData(HARDNESS_DATA)
249+
val coolingFactorData: CreateOreDepositsDataMaps.CoolingFactorData? = coolantHandler.getFluidInTank(1).fluidHolder.getData(COOLING_FACTOR_DATA)
250+
251+
252+
253+
var blockHardness = 0.1f
254+
var coolingFactor = 0.0f
255+
256+
if(hardnessData != null) blockHardness = hardnessData.hardness
257+
if(coolingFactorData != null) coolingFactor = coolingFactorData.coolingFactor
249258

250259
// Non temp
251260
val dissipation: Float = Config.SERVER.DEPOSIT_DRILL.baseCooling + coolingFactor

src/main/java/com/createcivilization/create_ore_deposits/registry/datagen/DataGenerator.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,5 +23,7 @@ object DataGenerator {
2323
val lookupProvider: CompletableFuture<HolderLookup.Provider> = event.lookupProvider
2424

2525
generator.addProvider(event.includeServer(), DatapackProvider(packOutput, lookupProvider))
26+
generator.addProvider(event.includeServer(), DataMapProvider(packOutput, lookupProvider))
27+
2628
}
2729
}
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.createcivilization.create_ore_deposits.registry.datagen
2+
3+
import com.createcivilization.create_ore_deposits.registry.datamap.CreateOreDepositsDataMaps
4+
import net.minecraft.core.HolderLookup
5+
import net.minecraft.data.PackOutput
6+
import net.minecraft.tags.BlockTags
7+
import net.minecraft.tags.FluidTags
8+
import net.neoforged.neoforge.common.data.DataMapProvider
9+
import java.util.concurrent.CompletableFuture
10+
11+
class DataMapProvider(
12+
packOutput: PackOutput,
13+
lookupProvider: CompletableFuture<HolderLookup.Provider>
14+
) : DataMapProvider(packOutput, lookupProvider) {
15+
16+
override fun gather(provider: HolderLookup.Provider) {
17+
builder(CreateOreDepositsDataMaps.HARDNESS_DATA)
18+
.add(BlockTags.DIRT, CreateOreDepositsDataMaps.HardnessData(0.1f), false)
19+
20+
21+
builder(CreateOreDepositsDataMaps.COOLING_FACTOR_DATA)
22+
.add(FluidTags.WATER, CreateOreDepositsDataMaps.CoolingFactorData(5f), false)
23+
}
24+
}
Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
package com.createcivilization.create_ore_deposits.registry.datamap
2+
3+
import com.createcivilization.create_ore_deposits.CreateOreDeposits
4+
import com.mojang.serialization.Codec
5+
import com.mojang.serialization.codecs.RecordCodecBuilder
6+
import net.minecraft.core.registries.Registries
7+
import net.minecraft.resources.ResourceLocation
8+
import net.minecraft.world.level.block.Block
9+
import net.minecraft.world.level.material.Fluid
10+
import net.neoforged.neoforge.registries.datamaps.DataMapType
11+
12+
object CreateOreDepositsDataMaps {
13+
14+
data class HardnessData(val hardness: Float) {
15+
companion object {
16+
val CODEC: Codec<HardnessData> = RecordCodecBuilder.create { instance ->
17+
instance.group(
18+
Codec.FLOAT.fieldOf("hardness").forGetter(HardnessData::hardness)
19+
).apply(instance, ::HardnessData)
20+
}
21+
}
22+
}
23+
24+
data class CoolingFactorData(val coolingFactor: Float) {
25+
companion object {
26+
val CODEC: Codec<CoolingFactorData> = RecordCodecBuilder.create { instance ->
27+
instance.group(
28+
Codec.FLOAT.fieldOf("cooling_factor").forGetter(CoolingFactorData::coolingFactor)
29+
).apply(instance, ::CoolingFactorData)
30+
}
31+
}
32+
}
33+
34+
val HARDNESS_DATA: DataMapType<Block?, HardnessData?> =
35+
DataMapType.builder(
36+
ResourceLocation.fromNamespaceAndPath(CreateOreDeposits.MOD_ID, "hardness_data"),
37+
Registries.BLOCK,
38+
HardnessData.CODEC
39+
).build()
40+
41+
val COOLING_FACTOR_DATA: DataMapType<Fluid, CoolingFactorData> =
42+
DataMapType.builder(
43+
ResourceLocation.fromNamespaceAndPath(CreateOreDeposits.MOD_ID, "cooling_factor_data"),
44+
Registries.FLUID,
45+
CoolingFactorData.CODEC
46+
).build()
47+
}

0 commit comments

Comments
 (0)