add warning to screenblock if there's not enough power and change up FontProvider to work on windows

This commit is contained in:
2026-04-18 20:10:51 -03:00
parent 5ddafd2d84
commit 62ff4dfa96
2 changed files with 19 additions and 4 deletions

View File

@@ -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 {

View File

@@ -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<Char, ArrayList<Byte>> = 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<Byte> = ArrayList<Byte>();
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<Byte> = value.toCollection(ArrayList<Byte>());
map[key] = bytes
}
NeoComputers.LOGGER.info("[FontProvider] Loaded font!");