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 – Ich spiele seit über 3 Jahren aktiv Minecraft.

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

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
@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
@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
@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
@ChaosmatterYT

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

lg

0
@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
@M4trixxLP04

Hey,

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

0
@ChaosmatterYT

Hey!

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

0
@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...

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

0

Was möchtest Du wissen?