From ae9a3fd2c7d45f929e4e2545879e7565c9c91935 Mon Sep 17 00:00:00 2001 From: IonutParau Date: Sun, 12 Apr 2026 20:04:31 +0200 Subject: [PATCH] solar power --- .../org/neoflock/neocomputers/block/Blocks.kt | 1 + .../neoflock/neocomputers/block/Capacitor.kt | 4 +++ .../neoflock/neocomputers/block/Generators.kt | 30 +++++++++++++++++++ .../neocomputers/block/SolarGeneratorBlock.kt | 4 --- .../neocomputers/entity/BlockEntities.kt | 5 ++++ .../entity/SolarGeneratorBlockEntity.kt | 20 +++++++++++++ 6 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 src/main/kotlin/org/neoflock/neocomputers/block/Generators.kt delete mode 100644 src/main/kotlin/org/neoflock/neocomputers/block/SolarGeneratorBlock.kt create mode 100644 src/main/kotlin/org/neoflock/neocomputers/entity/SolarGeneratorBlockEntity.kt diff --git a/src/main/kotlin/org/neoflock/neocomputers/block/Blocks.kt b/src/main/kotlin/org/neoflock/neocomputers/block/Blocks.kt index d6c2119..1ab7e8e 100644 --- a/src/main/kotlin/org/neoflock/neocomputers/block/Blocks.kt +++ b/src/main/kotlin/org/neoflock/neocomputers/block/Blocks.kt @@ -27,6 +27,7 @@ object Blocks { val BLOCKS: DeferredRegister = DeferredRegister.create(NeoComputers.MODID, Registries.BLOCK) val SCREEN_BLOCK: RegistrySupplier = BaseBlock.register("screen") { ScreenBlock() } val CAPACITOR_BLOCK: RegistrySupplier = BaseBlock.register("capacitor") { CapacitorBlock() } + val SOLARGEN_BLOCK: RegistrySupplier = BaseBlock.register("solargen") { SolarGeneratorBlock() } fun registerBlockItems() { BLOCKS.forEach(Consumer { sup: RegistrySupplier -> diff --git a/src/main/kotlin/org/neoflock/neocomputers/block/Capacitor.kt b/src/main/kotlin/org/neoflock/neocomputers/block/Capacitor.kt index e88b166..f7f8ae1 100644 --- a/src/main/kotlin/org/neoflock/neocomputers/block/Capacitor.kt +++ b/src/main/kotlin/org/neoflock/neocomputers/block/Capacitor.kt @@ -2,11 +2,15 @@ package org.neoflock.neocomputers.block import net.minecraft.core.BlockPos import net.minecraft.network.chat.ChatType +import net.minecraft.network.chat.Component import net.minecraft.network.chat.OutgoingChatMessage import net.minecraft.network.chat.PlayerChatMessage import net.minecraft.server.level.ServerPlayer import net.minecraft.world.InteractionResult import net.minecraft.world.entity.player.Player +import net.minecraft.world.item.Item +import net.minecraft.world.item.ItemStack +import net.minecraft.world.item.TooltipFlag import net.minecraft.world.level.Level import net.minecraft.world.level.block.entity.BlockEntity import net.minecraft.world.level.block.state.BlockState diff --git a/src/main/kotlin/org/neoflock/neocomputers/block/Generators.kt b/src/main/kotlin/org/neoflock/neocomputers/block/Generators.kt new file mode 100644 index 0000000..fd7d864 --- /dev/null +++ b/src/main/kotlin/org/neoflock/neocomputers/block/Generators.kt @@ -0,0 +1,30 @@ +package org.neoflock.neocomputers.block + +import net.minecraft.core.BlockPos +import net.minecraft.world.level.Level +import net.minecraft.world.level.block.EntityBlock +import net.minecraft.world.level.block.entity.BlockEntity +import net.minecraft.world.level.block.entity.BlockEntityTicker +import net.minecraft.world.level.block.entity.BlockEntityType +import net.minecraft.world.level.block.state.BlockState +import org.neoflock.neocomputers.entity.BlockEntities +import org.neoflock.neocomputers.entity.SolarGeneratorBlockEntity + +class SolarGeneratorBlock : BaseBlock(), EntityBlock { + override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity { + return SolarGeneratorBlockEntity(BlockEntities.SOLARGEN_ENTITY.get(), blockPos, blockState) + } + + override fun getTicker( + level: Level, + blockState: BlockState, + blockEntityType: BlockEntityType + ): BlockEntityTicker { + return object : BlockEntityTicker { + override fun tick(level: Level, blockPos: BlockPos, blockState: BlockState, blockEntity: T) { + if(blockEntity !is SolarGeneratorBlockEntity) return; + blockEntity.giveSolarPower(); + } + } + } +} \ No newline at end of file diff --git a/src/main/kotlin/org/neoflock/neocomputers/block/SolarGeneratorBlock.kt b/src/main/kotlin/org/neoflock/neocomputers/block/SolarGeneratorBlock.kt deleted file mode 100644 index 061e365..0000000 --- a/src/main/kotlin/org/neoflock/neocomputers/block/SolarGeneratorBlock.kt +++ /dev/null @@ -1,4 +0,0 @@ -package org.neoflock.neocomputers.block - -class SolarGeneratorBlock : BaseBlock() { -} \ No newline at end of file diff --git a/src/main/kotlin/org/neoflock/neocomputers/entity/BlockEntities.kt b/src/main/kotlin/org/neoflock/neocomputers/entity/BlockEntities.kt index 30d526f..8677568 100644 --- a/src/main/kotlin/org/neoflock/neocomputers/entity/BlockEntities.kt +++ b/src/main/kotlin/org/neoflock/neocomputers/entity/BlockEntities.kt @@ -47,6 +47,11 @@ object BlockEntities { ::CapacitorEntity, mutableSetOf(Blocks.CAPACITOR_BLOCK.get()), BullshitFix() ) } + val SOLARGEN_ENTITY: RegistrySupplier> = BLOCKENTITIES.register("solargen_entity") { + BlockEntityType( + ::CapacitorEntity, mutableSetOf(Blocks.SOLARGEN_BLOCK.get()), BullshitFix() + ) + } fun registerPowerBlocks() { PowerManager.registerPowerBlockEntity(CAPACITOR_ENTITY.get()) diff --git a/src/main/kotlin/org/neoflock/neocomputers/entity/SolarGeneratorBlockEntity.kt b/src/main/kotlin/org/neoflock/neocomputers/entity/SolarGeneratorBlockEntity.kt new file mode 100644 index 0000000..5ee0677 --- /dev/null +++ b/src/main/kotlin/org/neoflock/neocomputers/entity/SolarGeneratorBlockEntity.kt @@ -0,0 +1,20 @@ +package org.neoflock.neocomputers.entity + +import net.minecraft.core.BlockPos +import net.minecraft.world.level.block.entity.BlockEntity +import net.minecraft.world.level.block.entity.BlockEntityType +import net.minecraft.world.level.block.state.BlockState +import org.neoflock.neocomputers.block.NodeBlockEntity + +class SolarGeneratorBlockEntity(entityType: BlockEntityType<*>, blockPos: BlockPos, blockState: BlockState) : BlockEntity(entityType, blockPos, blockState) { + val energyPerTick: Long = 50 + + fun giveSolarPower() { + if(level?.isDay == true) { + val below = level?.getBlockEntity(blockPos.below()) + if(below is NodeBlockEntity) { + below.node.giveEnergy(energyPerTick) + } + } + } +} \ No newline at end of file