Why so screenious

This commit is contained in:
mewhenthe
2026-04-11 17:45:43 +02:00
parent 9af5b77a1f
commit 0d92d59958
11 changed files with 153 additions and 248 deletions

View File

@@ -1,11 +1,23 @@
package org.neoflock.neocomputers.block
import dev.architectury.registry.registries.RegistrySupplier
import net.minecraft.core.registries.Registries
import net.minecraft.resources.Identifier
import net.minecraft.resources.ResourceKey
import net.minecraft.world.level.block.Block
import net.minecraft.world.level.block.state.BlockBehaviour
import org.neoflock.neocomputers.NeoComputers
import java.util.function.Supplier
class BaseBlock : Block {
val tier: Int
open class BaseBlock : Block { // TODO: create a TieredBaseBlock class that extends this or something
// val tier: Int
constructor(tier: Int): super(Properties.of()) {
this.tier = tier
constructor(name: String):super(
BlockBehaviour.Properties.of()
.setId(ResourceKey
.create(Registries.BLOCK, Identifier.fromNamespaceAndPath(NeoComputers.MODID, name))))
companion object Registry {
fun register(name: String, sup: Supplier<BaseBlock>): RegistrySupplier<Block> = Blocks.BLOCKS.register(name, sup);
}
}

View File

@@ -22,47 +22,15 @@ import java.util.function.Consumer
import java.util.function.Supplier
object Blocks {
// val CASE: MutableList<RegistrySupplier<Block?>?>? =
// BaseBlock.register(intArrayOf(0, 1, 2), "case", { tier -> CaseBlock(tier) })
val BLOCKS: DeferredRegister<Block?> = DeferredRegister.create(NeoComputers.MODID, Registries.BLOCK)
// val TESTBLOCK : RegistrySupplier<Block> = registerBlock("test")
val TESTBLOCK: RegistrySupplier<Block> = BLOCKS.register("test") { Block(BlockBehaviour.Properties.of().setId(ResourceKey.create(Registries.BLOCK, Identifier.fromNamespaceAndPath(NeoComputers.MODID, "test")))) }
// public static final RegistrySupplier<Block> CASE0 = BLOCKS.register("case0", () -> new CaseBlock(0));
// public static final RegistrySupplier<Block> CASE1 = BLOCKS.register("case1", () -> new CaseBlock(1));
// public static final RegistrySupplier<Block> CASE2 = BLOCKS.register("case2", () -> new CaseBlock(2));
// public static final RegistrySupplier<Block> CABLE = BLOCKS.register("cable", () -> new CableBlock());
// val SCREEN: RegistrySupplier<Block?>? = BLOCKS.register<Block?>("screen", Supplier { ScreenBlock() })
// val CABLE: RegistrySupplier<Block?>? = BLOCKS.register<Block?>("cable", Supplier { CableBlock() })
// fun registerBlock(name: String): RegistrySupplier<Block> {
// // var Registrar<Item> items = MANAGER.get().get(Registries.ITEM);
// var blocks: Registrar<Block> = NeoComputers.MANAGER.get().get(Registries.BLOCK);
// return blocks.register(Identifier.fromNamespaceAndPath(NeoComputers.MODID, name)) {
// Block(
// BlockBehaviour.Properties.of().setId(
// ResourceKey.create(
// Registries.BLOCK,
// Identifier.fromNamespaceAndPath(NeoComputers.MODID, name)
// )
// )
// )
// }
// }
val BLOCKS: DeferredRegister<Block> = DeferredRegister.create(NeoComputers.MODID, Registries.BLOCK)
val TEST_BLOCK: RegistrySupplier<Block> = BaseBlock.register("test") { BaseBlock("test") }
val SCREEN_BLOCK: RegistrySupplier<Block> = BaseBlock.register("screen") { ScreenBlock() }
fun registerBlockItems() {
BLOCKS.forEach(Consumer { sup: RegistrySupplier<Block?>? ->
NeoComputers.LOGGER.info("mango viagra")
// TODO: base blocks
// if (blk instanceof BaseBlock) {
// Items.ITEMS.register(sup.getId().getPath(), () -> new BaseBlock.BaseBlockItem(blk, new Item.Properties().arch$tab(Tabs.TAB)));
// } else {
// Items.ITEMS.register(sup.getId().getPath(), () -> new BlockItem(blk, new Item.Properties().arch$tab(Tabs.TAB)));
// }
Items.ITEMS.register(sup!!.id.path) { BlockItem(sup.get()!!, Item.Properties().`arch$tab`(Tabs.TAB).setId(ResourceKey.create(Registries.ITEM, sup.id)))}
BLOCKS.forEach(Consumer { sup: RegistrySupplier<Block> ->
Items.ITEMS.register(sup.id.path) { BlockItem(sup.get()!!, Item.Properties().`arch$tab`(Tabs.TAB).setId(ResourceKey.create(Registries.ITEM, sup.id)))}
})
}
}

View File

@@ -0,0 +1,46 @@
package org.neoflock.neocomputers.block;
import dev.architectury.registry.menu.MenuRegistry
import net.minecraft.core.BlockPos
import net.minecraft.network.chat.Component
import net.minecraft.server.level.ServerPlayer
import net.minecraft.world.InteractionHand
import net.minecraft.world.InteractionResult
import net.minecraft.world.MenuProvider
import net.minecraft.world.entity.player.Inventory
import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.AbstractContainerMenu
import net.minecraft.world.item.ItemStack
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.state.BlockState
import net.minecraft.world.phys.BlockHitResult
import org.neoflock.neocomputers.NeoComputers
import org.neoflock.neocomputers.entity.ScreenEntity
import org.neoflock.neocomputers.gui.menu.Menus
class ScreenBlock() : BaseBlock("screen"), EntityBlock {
override fun newBlockEntity(blockPos: BlockPos, blockState: BlockState): BlockEntity? {
return ScreenEntity(blockPos, blockState)
}
override fun useWithoutItem(
blockState: BlockState,
level: Level,
blockPos: BlockPos,
player: Player,
blockHitResult: BlockHitResult
): InteractionResult {
if(!level.isClientSide) {
MenuRegistry.openMenu(player as ServerPlayer, object : MenuProvider {
override fun getDisplayName(): Component = Component.literal("SCREEEEEN!")
override fun createMenu(i: Int, inventory: Inventory, player: Player): AbstractContainerMenu {
return Menus.SCREEN_MENU.get().create(i, inventory);
}
})
}
return InteractionResult.SUCCESS
}
}