Wie rufen Sie die Funktion pro Stunde? Auch, wie kann ich diese Schleife?
Ich brauche eine einfache Möglichkeit, eine Funktion aufzurufen, die alle 60 Minuten. Wie kann ich dies tun? Ich mache ein MineCraft bukkit plugin, und das ist, was ich habe:
package com.webs.playsoulcraft.plazmotech.java.MineRegen;
import java.util.logging.Logger;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin{
public final Logger log = Logger.getLogger("Minecraft");
@Override
public void onEnable() {
this.log.info("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
this.log.info("Plaz's Mine Regen is now enabled!");
this.log.info("Copyright 2012 Plazmotech Co. All rights reserved.");
this.log.info("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
}
@Override
public void onDisable() {
this.log.info("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
this.log.info("Plaz's Mine Regen is now disabled!");
this.log.info("Copyright 2012 Plazmotech Co. All rights reserved.");
this.log.info("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~");
}
public void onPlayerInteract(PlayerInteractEvent event) {
final Action action = event.getAction();
if (action == Action.LEFT_CLICK_BLOCK) {
Location l1 = event.getClickedBlock().getLocation();
} else if (action == Action.RIGHT_CLICK_BLOCK) {
Location l2 = event.getClickedBlock().getLocation();
}
}
}
Brauche ich, um eine Funktion auszuführen, die ich umsetzen werden jede Stunde, wie? Denken Sie daran: Die Funktion l1 und l2. Auch, wie kann ich diese Schleife, um jeden block dazwischen?
Zuerst möchte ich Fragen, warum Sie brauchen, um eine Funktion auszuführen, jede Stunde und verwenden Sie Ereignis-Funktion onPlayerInteract, um ein Ereignis auszulösen, basierte auf der linken oder rechten Maustaste. Dies scheint im Widerspruch zueinander stehen.
InformationsquelleAutor Thor Correia | 2012-05-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie eine
Timer
- Objekt und geben Sie es einTimerTask
führt, dass der code, den Sie möchten ausführen.Wenn Sie erklären
hourlyTask
innerhalb IhreronPlayerInteract
Funktion, dann können Sie den Zugriffl1
undl2
. Zu machen, kompilieren, müssen Sie markieren Sie beide alsfinal
.Den Vorteil der Verwendung einer
Timer
Objekt ist, dass es in der Lage mehrereTimerTask
Objekte, jedes mit Ihrem eigenen timing, Verzögerung, usw. Sie können auch starten und stoppen Sie den Timer, wie lange Sie halten, um dieTimer
Objekt deklarieren Sie eine Klasse, variable oder so etwas.Ich weiß nicht, wie man jeden block zwischen.
Ich würde Stimmen, um die Verwendung der Timer-Klasse eher als Thread, als andere vielleicht. Der Grund ist der Timer verwendet die system-timer/clock zum auslösen der Funktion. Daher ist das timing korrekt sein sollte, so viel wie möglich. In der Erwägung, dass die Verwendung von threads hängt von der Java-thread-Verwaltung und das Betriebssystem, die eher schwierig zu prognostizieren.
Sie müssen code hinzufügen, um den Zugriff auf den lokalen Objekt l1 oder l2, die aus einem Ereignis-basierte Funktion. Ich lasse es zu, dass für jetzt.
InformationsquelleAutor 101100
Erstellen Sie einen thread, der läuft ewig und wacht jede Stunde auf die Ausführung Ihrer Daten.
Ja, ich habe vergessen, fügen Sie ein Semikolon am Ende der
t
Erklärung. Ich bereits Hinzugefügt.InformationsquelleAutor Luiggi Mendoza
Müssen Sie Bukkit Scheduler:
Müssen Sie erstellen eine Methode mit diesem, und da müssen Sie dieselbe Methode aufrufen.
InformationsquelleAutor Micha_i
Thread
(den obigen Kommentar zu erwähnen).Timer
injavax.swing.Timer
TimerTask
. Sie können dies überprüfen, link (von IBM)InformationsquelleAutor BachT