Ich versuche einen Minecraft Klon zu programmieren. Im aktuellen Zustand habe ich eine kleine Welt und ich kann auch herumlaufen, aber jetzt bin ich mit der Tick-Methode fest. Ich rufe diese Tick-Methode in der Hauptmethode in der while-Schleife auf.So rufen Sie die tick() Methode auf
Während in der Methode main loop:
boolean closeRequested = false;
while(!closeRequested){
mc.tick();
if(Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)){
closeRequested = true;
}
if(Display.isCloseRequested()){
closeRequested = true;
}
Tick Methode:
public void tick()
{
while (Keyboard.next()) {
if (Keyboard.getEventKeyState())
{
if (Keyboard.getEventKey() == 28) {
Minecraft.level.save();
}
if (Keyboard.getEventKey() == 2) {
this.paintTexture = 1;
}
if (Keyboard.getEventKey() == 3) {
this.paintTexture = 3;
}
if (Keyboard.getEventKey() == 4) {
this.paintTexture = 4;
}
if (Keyboard.getEventKey() == 5) {
this.paintTexture = 5;
}
if (Keyboard.getEventKey() == 7) {
this.paintTexture = 6;
}
}
}
Minecraft.level.tick();
Minecraft.particleEngine.tick();
Minecraft.player.tick(); //This is the movement
}
Spieler Tick Methode:
public void tick()
{
this.xo = this.x;
this.yo = this.y;
this.zo = this.z;
float xa = 0.0F;
float ya = 0.0F;
if (Keyboard.isKeyDown(19)) {
resetPos();
}
if ((Keyboard.isKeyDown(200)) || (Keyboard.isKeyDown(17))) {
ya -= 1.0F;
}
if ((Keyboard.isKeyDown(208)) || (Keyboard.isKeyDown(31))) {
ya += 1.0F;
}
if ((Keyboard.isKeyDown(203)) || (Keyboard.isKeyDown(30))) {
xa -= 1.0F;
}
if ((Keyboard.isKeyDown(205)) || (Keyboard.isKeyDown(32))) {
xa += 1.0F;
}
if ((Keyboard.isKeyDown(57)) || (Keyboard.isKeyDown(219))) {
if (this.onGround) {
this.yd = 0.5F;
}
}
moveRelative(xa, ya, this.onGround ? 0.1F : 0.02F);
this.yd = ((float)(this.yd - 0.08D));
move(this.xd, this.yd, this.zd);
this.xd *= 0.91F;
this.yd *= 0.98F;
this.zd *= 0.91F;
if (this.onGround)
{
this.xd *= 0.7F;
this.zd *= 0.7F;
}
}
Als ich diese Methode aufrufen, wie das der Spieler mov Es ist wie Sonic und auch abhängig von den fps, wie schnell der Spieler bewegt.
Ich habe etwas von diesem Code von einer Minecraft-Alpha-Version, aber ich konnte nicht den Punkt finden, wo die tick()
-Methode aufgerufen wird.
Ich möchte den Spieler in einer konstanten Geschwindigkeit bewegen.
Ich habe auch einen Timer, wo ich einige Variablen wie timepasse, fps oder auch die Ticks bekommen kann (der Timer ist auch aus dem ursprünglichen Minecraft-Code).
Nun, Sie laufen das ohne Pause. So werden die 'Tick'-Aufrufe so schnell ausgeführt, wie es die CPU/OS erlaubt. BEARBEITEN: Wenn Sie in irgendeiner Methode keinen Schlaf/Pause des Threads machen, müssen Sie keinen Code mehr hinzufügen;) – AxelH
Außerdem sollten Sie wirklich darüber nachdenken, Ihren Code etwas besser zu strukturieren, wenn Sie 'while-loop 'ist nur in Ihrer' Hauptmethode '. – CraigR8806