Wie kann man einen Reset Command Programmieren (Minecraft Spigot Plugin)?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Moin,ich programmiere auch noch nicht so lange, aber du könntest entweder gucken ob es eine Mutliverse-API gibt (falls du MV nutzt) oder sonst löscht du einfach die Welten und erstellst neue indem du den Command über die Konsole dispatcht.

Stoppen kannst du deinen Server so:

Bukkit.getServer().shutdown();

Und um die Welten zu resetten kannst du das machen:

Bukkit.dispatchCommand((CommandSender)Bukkit.getConsoleSender(), "mv delete world");

Dann muss eine Sekunde gewartet werden, dies kann mit einem Scheduler gemacht werden und dann muss folgendes ausgeführt werden:

Bukkit.dispatchCommand((CommandSender)Bukkit.getConsoleSender(), "mv confirm");

So sollte es funktionieren, falls nicht kannst du einfach antworten :).

Nach dem der Server gestoppt wurde kannst du ihn aber meines Wissens nach nicht neustarten, da das Plugin dann ja deaktiviert ist.

mfg

Woher ich das weiß:eigene Erfahrung
M4trixxLP04 
Fragesteller
 20.04.2020, 12:12

Vielen Dank für die schnelle Antwort! Hatte leider in den letzten Tagen nicht viel Zeit weswegen ich erst gleich weiter programmieren werde. Sind die zwei unteren Befehle nur mit MV-Core kompatibel oder würde das auch so klappen?

MfG

0
M4trixxLP04 
Fragesteller
 20.04.2020, 20:33
@M4trixxLP04

Hatte heute Mittag nun folgendes programmiert:

package de.m4trixxlp.m4utils.commands;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class ResetCommand implements CommandExecutor {
    
    @Override
    public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
        if(sender instanceof Player) {
            Player player = (Player) sender;
            if(player.hasPermission("m4utils.reset")) {
                if(args.length == 0) {
                    player.sendMessage("§cDer server wird resettet.");
                    Bukkit.getServer().shutdown();
                }
            } else
                player.sendMessage("§cDazu hast du keine Rechte!");
        } return false;
    }
}

Der Server wird gestoppt, alles funzt. Was kann ich nun dazu programmieren, damit die Welten-Ordner gelöscht werden und die start.bat Datei autromatisch ausgefrührt wird?

0
ChaosmatterYT  21.04.2020, 10:08
@M4trixxLP04

Hey,

Ja, die Methode ist nur mit MV kompatibel. Wenn du deine Welten mit einem anderen Plugin verwaltest musst du beim dispatchen einfach den Befehl des jeweiligen Plugins einfügen.

Nach dem der Server gestoppt wurde kannst du ihn aber meines Wissens nach nicht neustarten, da das Plugin dann ja deaktiviert ist.

Du könntest allerdings auch noch eine Welt via dispatch erstellen, und den Spieler dann dorthin teleportieren. Zwischen dem erstellen und teleportieren müsste dann allerdings ein Cooldown liegen da sich die Welt ja erst generieren muss.

lg

1
M4trixxLP04 
Fragesteller
 22.04.2020, 14:41
@ChaosmatterYT

Hi!

Habe jetzt doch MV drauf gemacht und mal dafür den command mit scheduler gecoded, jedoch wenn ich im spiel /reset ausführe, wird nur vom plugin das /mv delete (weltname) ausgegeben aber jedoch nicht nach dem scheduler das /mvconfirm. Habe ich etwas mit dem scheduler falsch gemacht? D: Hoffe du kannst mir helfen.

Hier mein code: https://www.bilder-upload.eu/bild-c9619f-1587559202.png.html

0
ChaosmatterYT  22.04.2020, 15:40
@M4trixxLP04

Hey,

du musst noch hinzufügen das der int jede Sekunde um 1 heruntergesetzt wird.

Jetzt wird dieser int als 1 definiert, kann also garnicht auf 0 kommen.

lg

1
M4trixxLP04 
Fragesteller
 22.04.2020, 22:39
@ChaosmatterYT

Habe den fehler gefunden, musste countdown- - eingeben nach dem scheduler und nun funktioniert es. Vielen dank!

lg

0
M4trixxLP04 
Fragesteller
 23.04.2020, 13:56
@ChaosmatterYT

Hay,

habe jetzt versucht alles in einem Zug in den scheduler zu packen aber es scheint nicht richtig zu funktionieren, weil nur der teleport zur Lobby stattfindet. Danach wird in der konsole immer sekundenweise diese Meldung ausgeführt:

[13:54:50] [Server thread/INFO]: This command has already been run! Please type the original command again if you want to rerun it.

Könntest du mir evtl sagen was ich wieder falsch gemacht hab?

Hier mein neuer code: https://www.bilder-upload.eu/bild-a782e0-1587642672.png.html

lg

0
ChaosmatterYT  23.04.2020, 15:51
@M4trixxLP04

Hey,

ich verstehe nicht weshalb du bei 8 mvconfirm ausführst? Das benötigst du nicht wenn du einen Spieler teleportierst.

0
M4trixxLP04 
Fragesteller
 23.04.2020, 21:01
@ChaosmatterYT

Hey!

Okay versuche es ohne, wenn es dann nicht geht, woran kann es noch liegen?

0
M4trixxLP04 
Fragesteller
 23.04.2020, 21:11
@M4trixxLP04

Es funktioniert nicht ohne da mv den tp nicht akzeptiert ohne confirm da im chat auch steht "no safe location found"

0

Hey. Auch wenn der Beitrag schon alt ist, hier für alle die noch vorbeischauen: ihr könnt mit Bukkit.createWorld(new WorldCreator(values...) ). Welten erstellen.

Woher ich das weiß:Hobby – 4 Jahre Erfahrung im Programmieren in vielen Sprachen

Ist die Fragenoch aktuell? Dann könnte ich wahrscheinlich weiterhelfen...

M4trixxLP04 
Fragesteller
 02.08.2020, 12:13

Ja die Frage ist noch aktuell ;D Wie könntest du mir denn weiterhelfen?

0