Thread/Runnable 没有打电话给 运行

Thread/Runnable doesn't call run

我正在尝试对 Minecraft 2d 版本进行一些测试,但由于我的线程不会调用 运行(),所以无法继续进行。我确实看过很多这样的教程,甚至我自己的一款游戏也使用了这种方法并且它很有效。我基本上是在复制我制作的其他游戏。

package com.bmc.minecraft2d;

import com.bmc.graphicsengine.Window;

import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.image.BufferStrategy;
import java.io.File;
import java.io.IOException;

import javax.imageio.ImageIO;

public class Minecraft extends Canvas implements Runnable {

    private Window window;
    private Thread thread;
    private Graphics2D g2d;

    private void init(){
        window = new Window("Minecraft 1.17.1", 800, 600);
        thread = new Thread();
        thread.start();
    }

    public Minecraft(){
        init();
        System.out.println("Got past init.");
    }

    private void update(){

    }

    public void addImage(String file, int x, int y, Graphics g, int width, int height, boolean scaleImg) {
        Image img;
        try {
            img = ImageIO.read(new File(file));
            if(scaleImg) {
                Image scale = img.getScaledInstance(width, height, Image.SCALE_DEFAULT);
                g.drawImage(scale, x, y, this);
            } else {
                g.drawImage(img, x, y, this);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void render(){
        BufferStrategy bs = getBufferStrategy();
        if(bs == null){
            this.createBufferStrategy(3);
            return;
        }
        Graphics g = bs.getDrawGraphics();
        g2d = (Graphics2D) g;
        addImage("../../assets/dirt.png",0,0,g,0,0, false);
    }

    public void run(){
        System.out.println("In the game loop.");
        while(true){
            update();
            render();
        }
    }

    public void stop() throws InterruptedException {
        thread.join();
    }

    public static void main(String[] args){
        new Minecraft(); // Get out of having to use "static"
    }

}

我正在使用 IntelliJ IDEA CE。将来可能会切换回 Eclipse。

好吧,看来我又回答了我自己的问题了。我发现我忘了将游戏添加到 JFrame(我知道为什么我只是喜欢用 jframes 和普通的 java 制作游戏而没有像 glfw 或 lwjgl 这样的库。出于某种原因我只是喜欢从头开始构建我的游戏.)