combustible generator but no screen

This commit is contained in:
2026-04-13 23:07:02 +02:00
parent 407e0b44ac
commit 8d146fbd17
8 changed files with 220 additions and 24 deletions

View File

@@ -2,15 +2,11 @@ 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
@@ -25,7 +21,7 @@ class CapacitorEntity(pos: BlockPos, state: BlockState) : NodeBlockEntity(BlockE
val capacity: Long = 20000
override val node = object : Networking.Node() {
override fun getPowerRole() = PowerRole.PRODUCER
override fun getPowerRole() = PowerRole.STORAGE
override fun getEnergy() = amountStored
override fun getEnergyCapacity() = capacity
override fun giveEnergy(amount: Long): Long {

View File

@@ -1,12 +1,23 @@
package org.neoflock.neocomputers.block
import net.minecraft.client.resources.sounds.Sound
import net.minecraft.core.BlockPos
import net.minecraft.network.chat.ChatType
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.level.Level
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.EntityBlock
import net.minecraft.world.level.block.FurnaceBlock
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.BlockBehaviour
import net.minecraft.world.level.block.state.BlockState
import net.minecraft.world.phys.BlockHitResult
import org.neoflock.neocomputers.entity.BlockEntities
import org.neoflock.neocomputers.entity.SolarGeneratorBlockEntity
import org.neoflock.neocomputers.entity.CombustionGeneratorBlockEntity
@@ -30,7 +41,8 @@ class SolarGeneratorBlock : BaseBlock(), EntityBlock {
}
}
class CombustionGeneratorBlock : BaseBlock(), EntityBlock {
// TODO: make it glow when burning
class CombustionGeneratorBlock : Block(BlockBehaviour.Properties.of()), EntityBlock {
override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity {
return CombustionGeneratorBlockEntity(blockPos, blockState)
}
@@ -43,8 +55,28 @@ class CombustionGeneratorBlock : BaseBlock(), EntityBlock {
return object : BlockEntityTicker<T> {
override fun tick(level: Level, blockPos: BlockPos, blockState: BlockState, blockEntity: T) {
if(blockEntity !is CombustionGeneratorBlockEntity) return;
blockEntity.giveSolarPower();
blockEntity.burnFuelForEnergy();
}
}
}
override fun useWithoutItem(
blockState: BlockState,
level: Level,
blockPos: BlockPos,
player: Player,
blockHitResult: BlockHitResult
): InteractionResult? {
if(!level.isClientSide()) {
val sp = player as ServerPlayer
val ent = level.getBlockEntity(blockPos, BlockEntities.COMBUSTGEN_ENTITY.get())
if(ent.isPresent) {
val bust = ent.get()
val fuel = bust.stacks[0]
val msg = PlayerChatMessage.system("${fuel.displayName.string} x ${fuel.count} (${bust.node.getEnergy()} / ${bust.node.getEnergyCapacity()} J)")
sp.sendChatMessage(OutgoingChatMessage.create(msg), false, ChatType.bind(ChatType.CHAT, player))
}
}
return InteractionResult.SUCCESS;
}
}