screens stuffs
This commit is contained in:
@@ -17,6 +17,7 @@ import net.minecraft.server.level.ServerPlayer
|
|||||||
import org.neoflock.neocomputers.block.NodeBlock
|
import org.neoflock.neocomputers.block.NodeBlock
|
||||||
import org.neoflock.neocomputers.block.NodeBlockEntity
|
import org.neoflock.neocomputers.block.NodeBlockEntity
|
||||||
import org.neoflock.neocomputers.block.NodeSynchronizer
|
import org.neoflock.neocomputers.block.NodeSynchronizer
|
||||||
|
import org.neoflock.neocomputers.gui.render.ScreenRenderer
|
||||||
import org.neoflock.neocomputers.item.Items
|
import org.neoflock.neocomputers.item.Items
|
||||||
import org.neoflock.neocomputers.item.Tabs
|
import org.neoflock.neocomputers.item.Tabs
|
||||||
import org.neoflock.neocomputers.network.Networking
|
import org.neoflock.neocomputers.network.Networking
|
||||||
@@ -40,7 +41,6 @@ object NeoComputers {
|
|||||||
BlockEntities.BLOCKENTITIES.register()
|
BlockEntities.BLOCKENTITIES.register()
|
||||||
BlockEntities.registerPowerBlocks()
|
BlockEntities.registerPowerBlocks()
|
||||||
Menus.MENUS.register()
|
Menus.MENUS.register()
|
||||||
Menus.registerScreens()
|
|
||||||
Tabs.TABS.register()
|
Tabs.TABS.register()
|
||||||
|
|
||||||
ClientLifecycleEvent.CLIENT_SETUP.register {
|
ClientLifecycleEvent.CLIENT_SETUP.register {
|
||||||
@@ -48,16 +48,11 @@ object NeoComputers {
|
|||||||
}
|
}
|
||||||
ClientLifecycleEvent.CLIENT_STARTED.register {
|
ClientLifecycleEvent.CLIENT_STARTED.register {
|
||||||
FontProvider.load(ResourceLocation.fromNamespaceAndPath(MODID, "font/unscii.hex"))
|
FontProvider.load(ResourceLocation.fromNamespaceAndPath(MODID, "font/unscii.hex"))
|
||||||
|
ScreenRenderer.genUnboundTex();
|
||||||
val buffer: ArrayList<BufferRenderer.GPUChar> = arrayListOf(BufferRenderer.GPUChar('h'), BufferRenderer.GPUChar('a'), BufferRenderer.GPUChar('i'))
|
|
||||||
for (i in 0..<(400-3)) {
|
|
||||||
buffer.add(BufferRenderer.GPUChar(' '))
|
|
||||||
}
|
}
|
||||||
val bufferRenderer = BufferRenderer(20, 20, ResourceLocation.fromNamespaceAndPath(MODID, "screen/test"), buffer)
|
|
||||||
bufferRenderer.drawBuffer()
|
|
||||||
// bufferRenderer.dump("/home/mewhenthe/code/NeoComputers/dump.png") // NOTE: CHANGE THIS BEFORE RUNNING!!!!
|
|
||||||
bufferRenderer.clean()
|
|
||||||
|
|
||||||
|
ClientLifecycleEvent.CLIENT_STOPPING.register {
|
||||||
|
ScreenRenderer.cleanUnboundTex()
|
||||||
}
|
}
|
||||||
|
|
||||||
TickEvent.SERVER_POST.register {
|
TickEvent.SERVER_POST.register {
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import org.neoflock.neocomputers.NeoComputers
|
|||||||
import org.neoflock.neocomputers.entity.BlockEntities
|
import org.neoflock.neocomputers.entity.BlockEntities
|
||||||
import org.neoflock.neocomputers.entity.ScreenEntity
|
import org.neoflock.neocomputers.entity.ScreenEntity
|
||||||
import org.neoflock.neocomputers.gui.menu.Menus
|
import org.neoflock.neocomputers.gui.menu.Menus
|
||||||
|
import org.neoflock.neocomputers.gui.menu.ScreenMenu
|
||||||
import org.neoflock.neocomputers.network.Networking
|
import org.neoflock.neocomputers.network.Networking
|
||||||
|
|
||||||
class ScreenBlock() : NodeBlock() {
|
class ScreenBlock() : NodeBlock() {
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ import net.minecraft.world.inventory.MenuType
|
|||||||
import org.neoflock.neocomputers.NeoComputers
|
import org.neoflock.neocomputers.NeoComputers
|
||||||
import org.neoflock.neocomputers.gui.menu.ScreenMenu
|
import org.neoflock.neocomputers.gui.menu.ScreenMenu
|
||||||
import org.neoflock.neocomputers.gui.screen.CombustionGeneratorScreen
|
import org.neoflock.neocomputers.gui.screen.CombustionGeneratorScreen
|
||||||
|
import org.neoflock.neocomputers.gui.screen.ScreenScreen
|
||||||
|
|
||||||
object Menus {
|
object Menus {
|
||||||
val MENUS: DeferredRegister<MenuType<*>> = DeferredRegister.create(NeoComputers.MODID, Registries.MENU)
|
val MENUS: DeferredRegister<MenuType<*>> = DeferredRegister.create(NeoComputers.MODID, Registries.MENU)
|
||||||
@@ -20,5 +21,6 @@ object Menus {
|
|||||||
|
|
||||||
fun registerScreens() {
|
fun registerScreens() {
|
||||||
MenuScreens.register(Menus.COMBUSTGEN_MENU.get(), {m: CombustionGeneratorMenu, u, comp -> CombustionGeneratorScreen(m, u, comp)})
|
MenuScreens.register(Menus.COMBUSTGEN_MENU.get(), {m: CombustionGeneratorMenu, u, comp -> CombustionGeneratorScreen(m, u, comp)})
|
||||||
|
MenuScreens.register(Menus.SCREEN_MENU.get(), ::ScreenScreen)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -6,8 +6,9 @@ import net.minecraft.world.entity.player.Player
|
|||||||
import net.minecraft.world.inventory.AbstractContainerMenu
|
import net.minecraft.world.inventory.AbstractContainerMenu
|
||||||
import net.minecraft.world.inventory.MenuType
|
import net.minecraft.world.inventory.MenuType
|
||||||
import net.minecraft.world.item.ItemStack
|
import net.minecraft.world.item.ItemStack
|
||||||
|
import org.neoflock.neocomputers.utils.GenericContainerMenu
|
||||||
|
|
||||||
class ScreenMenu(i: Int, inv: Inventory) : AbstractContainerMenu(Menus.SCREEN_MENU.get(), i) {
|
class ScreenMenu(i: Int, inv: Inventory) : GenericContainerMenu(Menus.SCREEN_MENU.get(), i, null) {
|
||||||
|
|
||||||
override fun stillValid(player: Player) = true // TODO: implement this properly
|
override fun stillValid(player: Player) = true // TODO: implement this properly
|
||||||
override fun quickMoveStack(player: Player, i: Int): ItemStack = ItemStack.EMPTY // there's no container here anyways
|
override fun quickMoveStack(player: Player, i: Int): ItemStack = ItemStack.EMPTY // there's no container here anyways
|
||||||
|
|||||||
@@ -11,15 +11,10 @@ import java.io.File
|
|||||||
import kotlin.experimental.and
|
import kotlin.experimental.and
|
||||||
import kotlin.experimental.xor
|
import kotlin.experimental.xor
|
||||||
|
|
||||||
class BufferRenderer(width: Int, height: Int, id: ResourceLocation, buffer: MutableList<GPUChar>) { // TODO: NN buffer
|
class BufferRenderer(private var width: Int, private var height: Int, private var id: ResourceLocation, private var buffer: MutableList<GPUChar>) { // TODO: NN buffer
|
||||||
val CHARW = 8
|
val CHARW = 8
|
||||||
val CHARH = 16
|
val CHARH = 16
|
||||||
|
|
||||||
private var width: Int = width;
|
|
||||||
private var height: Int = height;
|
|
||||||
private var id: ResourceLocation = id;
|
|
||||||
private var buffer: MutableList<GPUChar> = buffer;
|
|
||||||
|
|
||||||
private var texwidth: Int = width*CHARW;
|
private var texwidth: Int = width*CHARW;
|
||||||
private var texheight: Int = height*CHARH;
|
private var texheight: Int = height*CHARH;
|
||||||
private var image: NativeImage = NativeImage(texwidth, texheight, true); // idk what the boolean is
|
private var image: NativeImage = NativeImage(texwidth, texheight, true); // idk what the boolean is
|
||||||
@@ -64,7 +59,7 @@ class BufferRenderer(width: Int, height: Int, id: ResourceLocation, buffer: Muta
|
|||||||
buffer[y*width+x] = c
|
buffer[y*width+x] = c
|
||||||
}
|
}
|
||||||
|
|
||||||
fun register() { // i would love to do this in the constructor but kotlin quirks blahblah
|
fun register() {
|
||||||
Minecraft.getInstance().textureManager.register(this.id, tex) // also idk how to unregister this
|
Minecraft.getInstance().textureManager.register(this.id, tex) // also idk how to unregister this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,96 +1,96 @@
|
|||||||
// package org.neoflock.neocomputers.gui.render;
|
package org.neoflock.neocomputers.gui.render;
|
||||||
|
|
||||||
// import com.mojang.blaze3d.platform.NativeImage
|
import com.mojang.blaze3d.platform.GlConst
|
||||||
// import com.mojang.blaze3d.systems.RenderSystem
|
import com.mojang.blaze3d.platform.NativeImage
|
||||||
// import com.mojang.blaze3d.vertex.BufferBuilder
|
import com.mojang.blaze3d.systems.RenderSystem
|
||||||
// import com.mojang.blaze3d.vertex.DefaultVertexFormat
|
import com.mojang.blaze3d.vertex.BufferBuilder
|
||||||
// import com.mojang.blaze3d.vertex.Tesselator
|
import com.mojang.blaze3d.vertex.BufferUploader
|
||||||
// import com.mojang.blaze3d.vertex.VertexFormat
|
import com.mojang.blaze3d.vertex.DefaultVertexFormat
|
||||||
// import net.minecraft.client.Minecraft
|
import com.mojang.blaze3d.vertex.Tesselator
|
||||||
// import net.minecraft.client.gui.GuiGraphics
|
import com.mojang.blaze3d.vertex.VertexFormat
|
||||||
// import net.minecraft.client.renderer.texture.DynamicTexture
|
import net.minecraft.client.Minecraft
|
||||||
// import net.minecraft.resources.Identifier
|
import net.minecraft.client.gui.GuiGraphics
|
||||||
// import org.neoflock.neocomputers.NeoComputers
|
import net.minecraft.client.renderer.GameRenderer
|
||||||
|
import net.minecraft.client.renderer.texture.DynamicTexture
|
||||||
|
import net.minecraft.resources.ResourceLocation
|
||||||
|
import org.neoflock.neocomputers.NeoComputers
|
||||||
|
|
||||||
// class ScreenRenderer {
|
class ScreenRenderer {
|
||||||
// val BORDERS: Identifier = Identifier.fromNamespaceAndPath(NeoComputers.MODID, "textures/gui/borders.png")
|
val BORDERS: ResourceLocation = ResourceLocation.fromNamespaceAndPath(NeoComputers.MODID, "textures/gui/borders.png")
|
||||||
// var bound: Identifier = Identifier.fromNamespaceAndPath(NeoComputers.MODID, "screen/unbound")
|
var bound: ResourceLocation = ResourceLocation.fromNamespaceAndPath(NeoComputers.MODID, "screen/unbound")
|
||||||
|
|
||||||
// val bordersize = 10
|
val bordersize = 10
|
||||||
|
|
||||||
// fun render(graphics: GuiGraphics, x: Int, y: Int, width: Int, height: Int) {
|
fun render(graphics: GuiGraphics, x: Int, y: Int, width: Int, height: Int) {
|
||||||
// // RenderSystem.setShader(GameR)
|
RenderSystem.setShader { GameRenderer.getPositionTexShader() }
|
||||||
// // top left corner, uv (0, 0) to (6,6)
|
RenderSystem.setShaderTexture(0, BORDERS);
|
||||||
// // graphics.blit(BORDERS, x-bordersize, y-bordersize, 0, 0, bordersize.toFloat(), bordersize.toFloat(), 6F, 6F)
|
// borders
|
||||||
// graphics.blit(BORDERS, 6, 6, 0, 0, (x-bordersize).toFloat(), (y-bordersize).toFloat(), bordersize.toFloat(), bordersize.toFloat())
|
val bordersize = 8; // TODO: this should scale i think
|
||||||
// // top border, uv (7,0) to (8,6)
|
// top left corner, uv (0, 0) to (6,6)
|
||||||
// graphics.blit(BORDERS, 6, 1, 7, 0, x.toFloat(), (y-bordersize).toFloat(), width.toFloat(), bordersize.toFloat())
|
// graphics.blit
|
||||||
// // graphics.blit(BORDERS, x, y-bordersize, 7, 0, width.toFloat(), bordersize.toFloat(), 1F, 6F)
|
drawQuad(graphics, x-bordersize, y-bordersize, bordersize, bordersize, 0F, 0F, 6F, 6F);
|
||||||
// // top right corner, uv (9,0) to (15, 6)
|
// top border, uv (7,0) to (8,6)
|
||||||
// // graphics.blit(BORDERS, x+width, y-bordersize, 9, 0, bordersize.toFloat(), bordersize.toFloat(), 6F, 6F)
|
drawQuad(graphics, x, y-bordersize, width, bordersize, 7F, 0F, 8F, 6F); // x+bordersize-bordersize
|
||||||
// graphics.blit(BORDERS, 6, 6, 9, 0, (x+width).toFloat(), (y-bordersize).toFloat(), bordersize.toFloat(), bordersize.toFloat())
|
// top right corner, uv (9,0) to (15, 6)
|
||||||
|
drawQuad(graphics, x+width, y-bordersize, bordersize, bordersize, 9F, 0F, 15F, 6F);
|
||||||
|
|
||||||
// // left border, uv (0,7) to (6, 8)
|
// left border, uv (0,7) to (6, 8)
|
||||||
// graphics.blit(BORDERS, 6, 1, 0, 7, (x-bordersize).toFloat(), (y).toFloat(), bordersize.toFloat(), height.toFloat())
|
drawQuad(graphics, x-bordersize, y, bordersize, height, 0F, 7F, 6F, 8F);
|
||||||
// // graphics.blit(BORDERS, x-bordersize, y, 0, 7, bordersize.toFloat(), height.toFloat(), 6F, 1F)
|
// middle, uv (7, 7) to (8, 8)
|
||||||
// // right border uv (9, 7) to (15, 8)
|
// drawQuad(graphics, x+bordersize, y+bordersize, width-bordersize, height-bordersize, 7, 7, 8, 8);
|
||||||
// graphics.blit(BORDERS, 6, 1, 9, 7, (x+width).toFloat(), (y).toFloat(), bordersize.toFloat(), height.toFloat())
|
// right border uv (9, 7) to (15, 8)
|
||||||
// // graphics.blit(BORDERS, x+width, y, 9, 7, bordersize.toFloat(), height.toFloat(), 6F, 1F)
|
drawQuad(graphics, x+width, y, bordersize, height, 9F, 7F, 15F, 8F);
|
||||||
|
|
||||||
// // bottom left corner, uv (0, 9) to (6, 15)
|
// bottom left corner, uv (0, 9) to (6, 15)
|
||||||
// graphics.blit(BORDERS, 6, 6, 0, 9, (x-bordersize).toFloat(), (y+height).toFloat(), bordersize.toFloat(), bordersize.toFloat())
|
drawQuad(graphics, x-bordersize, y+height, bordersize, bordersize, 0F, 9F, 6F, 15F);
|
||||||
// // graphics.blit(BORDERS, x-bordersize, y+height, 0, 9, bordersize.toFloat(), bordersize.toFloat(), 6F, 6F)
|
// bottom border, uv (7, 9) to (8, 15)
|
||||||
// // bottom border, uv (7, 9) to (8, 15)
|
drawQuad(graphics, x, y+height, width, bordersize, 7F, 9F, 8F, 15F);
|
||||||
// graphics.blit(BORDERS, 1, 6, 7, 9, (x).toFloat(), (y+height).toFloat(), width.toFloat(), bordersize.toFloat())
|
// bottom right corner, uv (9, 9) to (15, 15)
|
||||||
// // graphics.blit(BORDERS, x, y+height, 7, 9, width.toFloat(), bordersize.toFloat(), 1F, 6F)
|
drawQuad(graphics, x+width, y+height, bordersize, bordersize, 9F, 9F, 15F, 15F);
|
||||||
// // bottom right corner, uv (9, 9) to (15, 15)
|
|
||||||
// graphics.blit(BORDERS, 6, 6, 9, 9, (x+width).toFloat(), (y+height).toFloat(), bordersize.toFloat(), bordersize.toFloat())
|
|
||||||
// // graphics.blit(BORDERS, x+width, y+height, 9, 9, bordersize.toFloat(), bordersize.toFloat(), 6F, 6F)
|
|
||||||
|
|
||||||
// // texture
|
RenderSystem.setShaderTexture(0, bound);
|
||||||
// // TODO: min mag filter thing
|
RenderSystem.texParameter(GlConst.GL_TEXTURE_2D, GlConst.GL_TEXTURE_MIN_FILTER, GlConst.GL_NEAREST);
|
||||||
// graphics.blit(bound, 15, 15, 0, 0, x.toFloat(), y.toFloat(), width.toFloat(), height.toFloat())
|
RenderSystem.texParameter(GlConst.GL_TEXTURE_2D, GlConst.GL_TEXTURE_MAG_FILTER, GlConst.GL_NEAREST);
|
||||||
// // graphics.blit(bound, x, y, 0, 0, width.toFloat(), height.toFloat(), 15F, 15F)
|
|
||||||
|
|
||||||
// }
|
drawQuad(graphics, x, y, width, height, 0F, 0F, 15F, 15F);
|
||||||
|
|
||||||
// // fun drawQuad(graphics: GuiGraphics, x: Int, y: Int, width: Int, height: Int, u1: Int, u2: Int, v1: Int, v2: Int) {
|
}
|
||||||
// // var t: Tesselator = Tesselator.getInstance()
|
|
||||||
// // var builder: BufferBuilder = t.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX)
|
|
||||||
// // builder.setUv1(u1, v1)
|
|
||||||
// // builder.setUv2(u2, v2)
|
|
||||||
|
|
||||||
// // builder.addVertex(x.toFloat(), (y+height).toFloat(), 1f)
|
private fun drawQuad(graphics: GuiGraphics, x: Int, y: Int, width: Int, height: Int, u1: Float, v1: Float, u2: Float, v2: Float) {
|
||||||
// // builder.addVertex((x+width).toFloat(), (y+height).toFloat(), 1f)
|
var t: Tesselator = Tesselator.getInstance()
|
||||||
// // builder.addVertex((x+width).toFloat(), y.toFloat(), 1f)
|
var builder: BufferBuilder = t.begin(VertexFormat.Mode.QUADS, DefaultVertexFormat.POSITION_TEX)
|
||||||
// // builder.addVertex(x.toFloat(), y.toFloat(), 1f)
|
|
||||||
|
|
||||||
// // builder.build()
|
builder.addVertex(x.toFloat(), (y+height).toFloat(), 1f).setUv(u1/15F, v2/15F)
|
||||||
// // }
|
builder.addVertex((x+width).toFloat(), (y+height).toFloat(), 1f).setUv(u2/15F, v2/15F)
|
||||||
|
builder.addVertex((x+width).toFloat(), y.toFloat(), 1f).setUv(u2/15F, v1/15F)
|
||||||
|
builder.addVertex(x.toFloat(), y.toFloat(), 1f).setUv(u1/15F,v1/15F)
|
||||||
|
|
||||||
// fun bind(id: Identifier) {
|
BufferUploader.drawWithShader(builder.build()!!)
|
||||||
// bound = id
|
}
|
||||||
// }
|
|
||||||
|
|
||||||
// fun unbind() {
|
fun bind(id: ResourceLocation) {
|
||||||
// bound = Identifier.fromNamespaceAndPath(NeoComputers.MODID, "screen/unbound")
|
bound = id
|
||||||
// }
|
}
|
||||||
|
|
||||||
// companion object Static {
|
fun unbind() {
|
||||||
// val img: NativeImage = NativeImage(1, 1, false)
|
bound = ResourceLocation.fromNamespaceAndPath(NeoComputers.MODID, "screen/unbound")
|
||||||
// val tex: DynamicTexture = DynamicTexture({ "screen/unbound" }, img)
|
}
|
||||||
|
|
||||||
// fun genUnboundTex() {
|
companion object Static {
|
||||||
// img.fillRect(0, 0, 1, 1, 0xFF000000.toInt())
|
val img: NativeImage = NativeImage(1, 1, false)
|
||||||
// tex.upload()
|
val tex: DynamicTexture = DynamicTexture(img)
|
||||||
|
|
||||||
// Minecraft.getInstance().textureManager.register(Identifier.fromNamespaceAndPath(NeoComputers.MODID, "screen/unbound"), tex)
|
fun genUnboundTex() {
|
||||||
// }
|
img.fillRect(0, 0, 1, 1, 0xFF000000.toInt())
|
||||||
|
tex.upload()
|
||||||
|
|
||||||
// fun cleanUnboundTex() {
|
Minecraft.getInstance().textureManager.register(ResourceLocation.fromNamespaceAndPath(NeoComputers.MODID, "screen/unbound"), tex)
|
||||||
// img.close()
|
}
|
||||||
// tex.close()
|
|
||||||
// Minecraft.getInstance().textureManager.release(Identifier.fromNamespaceAndPath(NeoComputers.MODID, "screen/unbound"))
|
fun cleanUnboundTex() {
|
||||||
// }
|
img.close()
|
||||||
// }
|
tex.close()
|
||||||
// }
|
Minecraft.getInstance().textureManager.release(ResourceLocation.fromNamespaceAndPath(NeoComputers.MODID, "screen/unbound"))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -7,12 +7,36 @@ import com.mojang.blaze3d.vertex.VertexFormat
|
|||||||
import net.minecraft.client.gui.GuiGraphics
|
import net.minecraft.client.gui.GuiGraphics
|
||||||
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen
|
import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen
|
||||||
import net.minecraft.network.chat.Component
|
import net.minecraft.network.chat.Component
|
||||||
|
import net.minecraft.resources.ResourceLocation
|
||||||
import net.minecraft.world.entity.player.Inventory
|
import net.minecraft.world.entity.player.Inventory
|
||||||
|
import org.neoflock.neocomputers.NeoComputers
|
||||||
|
import org.neoflock.neocomputers.gui.buffer.BufferRenderer
|
||||||
import org.neoflock.neocomputers.gui.menu.ScreenMenu
|
import org.neoflock.neocomputers.gui.menu.ScreenMenu
|
||||||
|
import org.neoflock.neocomputers.gui.render.ScreenRenderer
|
||||||
|
|
||||||
class ScreenScreen(abstractContainerMenu: ScreenMenu, inventory: Inventory, component: Component) : AbstractContainerScreen<ScreenMenu>(abstractContainerMenu, inventory, component) {
|
class ScreenScreen : AbstractContainerScreen<ScreenMenu>{
|
||||||
|
private var renderer: ScreenRenderer = ScreenRenderer();
|
||||||
|
|
||||||
|
private var bufferRenderer: BufferRenderer? = null;
|
||||||
|
constructor(abstractContainerMenu: ScreenMenu, inventory: Inventory, component: Component) : super(abstractContainerMenu, inventory, component) {
|
||||||
|
val buffer: ArrayList<BufferRenderer.GPUChar> = arrayListOf(BufferRenderer.GPUChar('h'), BufferRenderer.GPUChar('a'), BufferRenderer.GPUChar('i'))
|
||||||
|
for (i in 0..<(400-3)) {
|
||||||
|
buffer.add(BufferRenderer.GPUChar(' '))
|
||||||
|
}
|
||||||
|
bufferRenderer = BufferRenderer(20, 20, ResourceLocation.fromNamespaceAndPath(NeoComputers.MODID, "screen/test"), buffer)
|
||||||
|
bufferRenderer!!.register()
|
||||||
|
bufferRenderer!!.drawBuffer()
|
||||||
|
|
||||||
|
renderer.bind(ResourceLocation.fromNamespaceAndPath(NeoComputers.MODID, "screen/test"))
|
||||||
|
NeoComputers.LOGGER.info("created")
|
||||||
|
}
|
||||||
override fun renderBg(guiGraphics: GuiGraphics, f: Float, i: Int, j: Int) {}
|
override fun renderBg(guiGraphics: GuiGraphics, f: Float, i: Int, j: Int) {}
|
||||||
override fun render(graphics: GuiGraphics, mouseX: Int, mouseY: Int, something: Float) {
|
override fun render(graphics: GuiGraphics, mouseX: Int, mouseY: Int, something: Float) {
|
||||||
super.render(graphics, mouseX, mouseY, something)
|
super.render(graphics, mouseX, mouseY, something)
|
||||||
|
renderer.render(graphics, 50, 50, 100, 200)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onClose() {
|
||||||
|
bufferRenderer!!.clean()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -60,7 +60,7 @@ interface GenericContainer : Container {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
abstract class GenericContainerMenu(menuType: MenuType<*>, id: Int, var container: Container): AbstractContainerMenu(menuType, id) {
|
abstract class GenericContainerMenu(menuType: MenuType<*>, id: Int, var container: Container?): AbstractContainerMenu(menuType, id) {
|
||||||
fun addInventorySlots(inventory: Inventory, x: Int, y: Int) {
|
fun addInventorySlots(inventory: Inventory, x: Int, y: Int) {
|
||||||
// Based off the code in ChestMenu
|
// Based off the code in ChestMenu
|
||||||
for (i in 0..2) {
|
for (i in 0..2) {
|
||||||
@@ -86,7 +86,7 @@ abstract class GenericContainerMenu(menuType: MenuType<*>, id: Int, var containe
|
|||||||
|
|
||||||
val stack = slot.item
|
val stack = slot.item
|
||||||
val copied = stack.copy()
|
val copied = stack.copy()
|
||||||
val contSize = container.containerSize
|
val contSize = container!!.containerSize
|
||||||
|
|
||||||
if(i < contSize) {
|
if(i < contSize) {
|
||||||
if(!this.moveItemStackTo(stack, contSize, slots.size, true)) {
|
if(!this.moveItemStackTo(stack, contSize, slots.size, true)) {
|
||||||
@@ -106,7 +106,7 @@ abstract class GenericContainerMenu(menuType: MenuType<*>, id: Int, var containe
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun stillValid(player: Player): Boolean {
|
override fun stillValid(player: Player): Boolean {
|
||||||
return container.stillValid(player)
|
return container!!.stillValid(player)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user