diff --git a/src/main/kotlin/org/neoflock/neocomputers/block/ScreenBlock.kt b/src/main/kotlin/org/neoflock/neocomputers/block/ScreenBlock.kt index d449c02..5952c01 100644 --- a/src/main/kotlin/org/neoflock/neocomputers/block/ScreenBlock.kt +++ b/src/main/kotlin/org/neoflock/neocomputers/block/ScreenBlock.kt @@ -40,7 +40,10 @@ class ScreenBlock() : NodeBlock() { ): InteractionResult { if(!level.isClientSide) { val screenState = level.getBlockEntity(blockPos, BlockEntities.SCREEN_ENTITY.get()).get() - if(!screenState.node.consumeEnergy(5)) return InteractionResult.SUCCESS; + if(!screenState.node.consumeEnergy(5)) { + player.sendSystemMessage(Component.literal("Not enough power.")) + return InteractionResult.SUCCESS + }; MenuRegistry.openMenu(player as ServerPlayer, object : MenuProvider { override fun getDisplayName(): Component = Component.literal("SCREEEEEN!") override fun createMenu(i: Int, inventory: Inventory, player: Player): AbstractContainerMenu { diff --git a/src/main/kotlin/org/neoflock/neocomputers/utils/FontProvider.kt b/src/main/kotlin/org/neoflock/neocomputers/utils/FontProvider.kt index ef62249..2b85359 100644 --- a/src/main/kotlin/org/neoflock/neocomputers/utils/FontProvider.kt +++ b/src/main/kotlin/org/neoflock/neocomputers/utils/FontProvider.kt @@ -7,6 +7,11 @@ import net.minecraft.server.packs.resources.ResourceManager import org.neoflock.neocomputers.NeoComputers import java.nio.charset.StandardCharsets +/* +* OC hex font format: +* 5 character hex code .. ":" .. variable length hex code .. LF +* this is essentially a dictionary +* */ object FontProvider { val map: MutableMap> = mutableMapOf(); @@ -14,17 +19,24 @@ object FontProvider { var man: ResourceManager = Minecraft.getInstance().resourceManager var resource: Resource = man.getResourceOrThrow(loc) var stream = resource.open() + var bfr = stream.bufferedReader(); while (stream.available() > 0) { - var key = Integer.parseInt(String(stream.readNBytes(5), StandardCharsets.UTF_8), 16).toChar() + + /*var key = Integer.parseInt(String(stream.readNBytes(5), StandardCharsets.UTF_8), 16).toChar() stream.skip(1) var bytes: ArrayList = ArrayList(); while (true) { // shut up will you var b1 = stream.read() if (b1 == 10) break // 10 is line break - var b2 = stream.read() + var b2 = stream.read() var value: Byte = Integer.parseInt(arrayOf(b1.toChar(), b2.toChar()).joinToString(""), 16).toByte() bytes.add(value) - } + } */ + var line: String = bfr.readLine() + var splitLine = line.split(":"); + var key = splitLine[0].hexToInt().toChar(); + var value: ByteArray = splitLine[1].hexToByteArray(); // shout out to the kotlin stdlib for having ts + var bytes: ArrayList = value.toCollection(ArrayList()); map[key] = bytes } NeoComputers.LOGGER.info("[FontProvider] Loaded font!");