diff --git a/src/main/java/com/createcivilization/create_ore_deposits/CreateOreDeposits.kt b/src/main/java/com/createcivilization/create_ore_deposits/CreateOreDeposits.kt index 5eca0f5..918c557 100644 --- a/src/main/java/com/createcivilization/create_ore_deposits/CreateOreDeposits.kt +++ b/src/main/java/com/createcivilization/create_ore_deposits/CreateOreDeposits.kt @@ -4,6 +4,7 @@ package com.createcivilization.create_ore_deposits import com.createcivilization.create_ore_deposits.config.Config import com.createcivilization.create_ore_deposits.registry.block.CreateOreDepositsBlockEntities import com.createcivilization.create_ore_deposits.registry.block.CreateOreDepositsBlocks +import com.createcivilization.create_ore_deposits.registry.datamap.CreateOreDepositsDataMaps import com.createcivilization.create_ore_deposits.registry.fluid.CreateOreDepositsFluids import com.createcivilization.create_ore_deposits.registry.item.CreateOreDepositsItems import com.createcivilization.create_ore_deposits.registry.tab.CreateOreDepositsTabs @@ -18,6 +19,7 @@ import net.neoforged.fml.common.Mod import net.neoforged.fml.config.ModConfig import net.neoforged.fml.event.lifecycle.FMLCommonSetupEvent import net.neoforged.neoforge.event.server.ServerStartingEvent +import net.neoforged.neoforge.registries.datamaps.RegisterDataMapTypesEvent import thedarkcolour.kotlinforforge.neoforge.forge.FORGE_BUS import thedarkcolour.kotlinforforge.neoforge.forge.LOADING_CONTEXT @@ -32,6 +34,8 @@ data object CreateOreDeposits { init { MOD_BUS.addListener(this::commonSetup) + MOD_BUS.addListener(this::registerDataMapTypes) + val container: ModContainer = LOADING_CONTEXT.activeContainer!! container.registerConfig(ModConfig.Type.SERVER, Config.serverSpec) @@ -43,6 +47,7 @@ data object CreateOreDeposits { CreateOreDepositsBlockEntities CreateOreDepositsFluids CreateOreDepositsTags + CreateOreDepositsDataMaps CreateOreDepositsTabs.register(MOD_BUS) } @@ -51,6 +56,11 @@ data object CreateOreDeposits { // Some common setup code } + private fun registerDataMapTypes(event: RegisterDataMapTypesEvent) { + event.register(CreateOreDepositsDataMaps.HARDNESS_DATA) + event.register(CreateOreDepositsDataMaps.COOLING_FACTOR_DATA) + } + @SubscribeEvent fun onServerStarting(event: ServerStartingEvent) { logI("Starting server...") diff --git a/src/main/java/com/createcivilization/create_ore_deposits/registry/block/entries/deposit_drill/DepositDrillBlockEntity.kt b/src/main/java/com/createcivilization/create_ore_deposits/registry/block/entries/deposit_drill/DepositDrillBlockEntity.kt index ea06895..377d7a1 100644 --- a/src/main/java/com/createcivilization/create_ore_deposits/registry/block/entries/deposit_drill/DepositDrillBlockEntity.kt +++ b/src/main/java/com/createcivilization/create_ore_deposits/registry/block/entries/deposit_drill/DepositDrillBlockEntity.kt @@ -1,6 +1,9 @@ package com.createcivilization.create_ore_deposits.registry.block.entries.deposit_drill import com.createcivilization.create_ore_deposits.config.Config +import com.createcivilization.create_ore_deposits.registry.datamap.CreateOreDepositsDataMaps +import com.createcivilization.create_ore_deposits.registry.datamap.CreateOreDepositsDataMaps.COOLING_FACTOR_DATA +import com.createcivilization.create_ore_deposits.registry.datamap.CreateOreDepositsDataMaps.HARDNESS_DATA import com.createcivilization.create_ore_deposits.util.translate import com.createcivilization.create_ore_deposits.registry.tag.CreateOreDepositsTags import com.createcivilization.create_ore_deposits.registry.fluid.CreateOreDepositsFluids @@ -19,7 +22,6 @@ import net.minecraft.core.registries.BuiltInRegistries import net.minecraft.nbt.CompoundTag import net.minecraft.network.chat.Component import net.minecraft.server.level.ServerLevel -import net.minecraft.world.entity.vehicle.Minecart import net.minecraft.world.item.ItemStack import net.minecraft.world.level.Level import net.minecraft.world.level.block.Block @@ -200,8 +202,8 @@ class DepositDrillBlockEntity( .style(ChatFormatting.GOLD) .forGoggles(tooltip) - val fluidInCoolantTank: FluidStack = lubricantHandler.getFluidInTank(0) - if (!fluidInLubricantTank.isEmpty) + val fluidInCoolantTank: FluidStack = coolantHandler.getFluidInTank(0) + if (!fluidInCoolantTank.isEmpty) translate("tooltip.drill.contains.coolant", Component.translatable(fluidInCoolantTank.descriptionId), fluidInCoolantTank.amount) .style(ChatFormatting.BLUE) .forGoggles(tooltip) @@ -243,9 +245,16 @@ class DepositDrillBlockEntity( } fun updateTemperature() { - // TEMP VARIABLES - val blockHardness = 0.1f // Will be the current block its breaking and its hardness - val coolingFactor = 0.0f // Will be cooling factor of the coolant + val hardnessData: CreateOreDepositsDataMaps.HardnessData? = getTargetBlockState()?.blockHolder?.getData(HARDNESS_DATA) + val coolingFactorData: CreateOreDepositsDataMaps.CoolingFactorData? = coolantHandler.getFluidInTank(1).fluidHolder.getData(COOLING_FACTOR_DATA) + + + + var blockHardness = 0.1f + var coolingFactor = 0.0f + + if(hardnessData != null) blockHardness = hardnessData.hardness + if(coolingFactorData != null) coolingFactor = coolingFactorData.coolingFactor // Non temp val dissipation: Float = Config.SERVER.DEPOSIT_DRILL.baseCooling + coolingFactor diff --git a/src/main/java/com/createcivilization/create_ore_deposits/registry/datagen/DataGenerator.kt b/src/main/java/com/createcivilization/create_ore_deposits/registry/datagen/DataGenerator.kt index eb84d04..bb5fa26 100644 --- a/src/main/java/com/createcivilization/create_ore_deposits/registry/datagen/DataGenerator.kt +++ b/src/main/java/com/createcivilization/create_ore_deposits/registry/datagen/DataGenerator.kt @@ -23,5 +23,7 @@ object DataGenerator { val lookupProvider: CompletableFuture = event.lookupProvider generator.addProvider(event.includeServer(), DatapackProvider(packOutput, lookupProvider)) + generator.addProvider(event.includeServer(), DataMapProvider(packOutput, lookupProvider)) + } } \ No newline at end of file diff --git a/src/main/java/com/createcivilization/create_ore_deposits/registry/datagen/DataMapProvider.kt b/src/main/java/com/createcivilization/create_ore_deposits/registry/datagen/DataMapProvider.kt new file mode 100644 index 0000000..1c1df74 --- /dev/null +++ b/src/main/java/com/createcivilization/create_ore_deposits/registry/datagen/DataMapProvider.kt @@ -0,0 +1,24 @@ +package com.createcivilization.create_ore_deposits.registry.datagen + +import com.createcivilization.create_ore_deposits.registry.datamap.CreateOreDepositsDataMaps +import net.minecraft.core.HolderLookup +import net.minecraft.data.PackOutput +import net.minecraft.tags.BlockTags +import net.minecraft.tags.FluidTags +import net.neoforged.neoforge.common.data.DataMapProvider +import java.util.concurrent.CompletableFuture + +class DataMapProvider( + packOutput: PackOutput, + lookupProvider: CompletableFuture +) : DataMapProvider(packOutput, lookupProvider) { + + override fun gather(provider: HolderLookup.Provider) { + builder(CreateOreDepositsDataMaps.HARDNESS_DATA) + .add(BlockTags.DIRT, CreateOreDepositsDataMaps.HardnessData(0.1f), false) + + + builder(CreateOreDepositsDataMaps.COOLING_FACTOR_DATA) + .add(FluidTags.WATER, CreateOreDepositsDataMaps.CoolingFactorData(5f), false) + } +} \ No newline at end of file diff --git a/src/main/java/com/createcivilization/create_ore_deposits/registry/datamap/CreateOreDepositsDataMaps.kt b/src/main/java/com/createcivilization/create_ore_deposits/registry/datamap/CreateOreDepositsDataMaps.kt new file mode 100644 index 0000000..4780cb6 --- /dev/null +++ b/src/main/java/com/createcivilization/create_ore_deposits/registry/datamap/CreateOreDepositsDataMaps.kt @@ -0,0 +1,47 @@ +package com.createcivilization.create_ore_deposits.registry.datamap + +import com.createcivilization.create_ore_deposits.CreateOreDeposits +import com.mojang.serialization.Codec +import com.mojang.serialization.codecs.RecordCodecBuilder +import net.minecraft.core.registries.Registries +import net.minecraft.resources.ResourceLocation +import net.minecraft.world.level.block.Block +import net.minecraft.world.level.material.Fluid +import net.neoforged.neoforge.registries.datamaps.DataMapType + +object CreateOreDepositsDataMaps { + + data class HardnessData(val hardness: Float) { + companion object { + val CODEC: Codec = RecordCodecBuilder.create { instance -> + instance.group( + Codec.FLOAT.fieldOf("hardness").forGetter(HardnessData::hardness) + ).apply(instance, ::HardnessData) + } + } + } + + data class CoolingFactorData(val coolingFactor: Float) { + companion object { + val CODEC: Codec = RecordCodecBuilder.create { instance -> + instance.group( + Codec.FLOAT.fieldOf("cooling_factor").forGetter(CoolingFactorData::coolingFactor) + ).apply(instance, ::CoolingFactorData) + } + } + } + + val HARDNESS_DATA: DataMapType = + DataMapType.builder( + ResourceLocation.fromNamespaceAndPath(CreateOreDeposits.MOD_ID, "hardness_data"), + Registries.BLOCK, + HardnessData.CODEC + ).build() + + val COOLING_FACTOR_DATA: DataMapType = + DataMapType.builder( + ResourceLocation.fromNamespaceAndPath(CreateOreDeposits.MOD_ID, "cooling_factor_data"), + Registries.FLUID, + CoolingFactorData.CODEC + ).build() +}