• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Spigot Random TP

Leonard held

Minecrafter
Registriert
13 Januar 2016
Beiträge
5
Diamanten
300
Hey Leute, ich helfe gerade einem Server beim Aufbau mit ein paar Plugins.
Ich habe gestern ein Random TP Plugin geschrieben was auf meinem Test Server funktioniert aber auf dem richtigen Server nicht. Unten habe ich den Source Code und die Fehlermeldung. Kann mir wer helfen?


package TDM;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin {

@SuppressWarnings({ "unchecked", "rawtypes" })
private HashMap<String, Long> healcs = new HashMap();

public void onEnable() {
this.getCommand("wartung").setExecutor((CommandExecutor) new Main());
this.getCommand("tpr").setExecutor((CommandExecutor) new Main());
this.getCommand("randomperm").setExecutor((CommandExecutor) new Main());


PluginManager pm = Bukkit.getPluginManager();


System.out.println("======Plugin RANDOM aktiviert======");
}

public void onDisable() {
System.out.println("======Plugin RANDOM deaktiviert======");
}


@Override
public boolean onCommand(CommandSender sender, Command cmd, String arg2, String[] args) {

Player p = (Player) sender;

if (cmd.getName().equalsIgnoreCase("tpr")) {

if (args.length == 0) {

p.sendMessage("§bDu wirst nun auf eigene Gefahr teleportiert.");

try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}

File Ordner = new File("plugins//Random");
File File = new File("plugins//Random//random.yml");
if (!Ordner.exists()) {
Ordner.mkdir();
}
if (!File.exists()) {
try {
File.createNewFile();
} catch (IOException e1) {
p.sendMessage("\u00a7cDiese Datei konnte auf diesem Pfad nicht erstellt werden.");
}
}
YamlConfiguration cfg1 = YamlConfiguration.loadConfiguration((File) File);

int maxx = cfg1.getInt("maxX");
int maxz1 = cfg1.getInt("maxX");
int minx = cfg1.getInt("minX");
int minz = cfg1.getInt("minZ");

int maxX = maxx;
int minX = minx;
int X = (int) Math.round(Math.random() * (double) (maxX - minX + 1) + (double) minX);
double maxZ = maxz1;
int minZ = minz;
int Z = (int) Math.round(Math.random() * (double) (maxZ - minZ + 1) + (double) minZ);
Location loc = p.getLocation();
String world = loc.getWorld().getName();

World welt = Bukkit.getWorld((String) world);
loc.setX((double) X);
loc.setZ((double) Z);
Block b = welt.getHighestBlockAt(loc);
loc.setY((double) b.getLocation().getBlockY());
loc.setWorld(welt);
p.teleport(loc);


}

if (args.length == 1) {
if (p.hasPermission("server.random.set")) {
File ordner;
YamlConfiguration cfg;
double maxz;
File file;
if (args[0].equalsIgnoreCase("max")) {
if (!(sender instanceof Player)) {
System.out.println("Dein ernst ?");
return true;
}
ordner = new File("plugins//Random");
file = new File("plugins//Random//random.yml");
if (!ordner.exists()) {
ordner.mkdir();
}
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
p.sendMessage("\u00a7cDiese Datei konnte auf diesem Pfad nicht erstellt werden.");
}
}
cfg = YamlConfiguration.loadConfiguration((File) file);
Location locMax = p.getLocation();
double maxx = locMax.getX();
maxz = locMax.getZ();
cfg.set("maxX", (Object) maxx);
cfg.set("maxZ", (Object) maxz);
try {
cfg.save(file);
} catch (IOException e) {
e.printStackTrace();
}
p.sendMessage("\u00a7aDu hast die Maximalen Koordinaten gesetzt!");
}
if (args[0].equalsIgnoreCase("min")) {
if (!(sender instanceof Player)) {
System.out.println("Dein ernst");
return true;
}
ordner = new File("plugins//Random");
file = new File("plugins//Random//random.yml");
if (!ordner.exists()) {
ordner.mkdir();
}
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
p.sendMessage("\u00a7cDiese Datei konnte auf diesem Pfad nicht erstellt werden.");
}
}
cfg = YamlConfiguration.loadConfiguration((File) file);
Location locMin = p.getLocation();
double minx = locMin.getX();
maxz = locMin.getZ();
cfg.set("minX", (Object) minx);
cfg.set("minZ", (Object) maxz);
try {
cfg.save(file);
} catch (IOException e) {
e.printStackTrace();
}
p.sendMessage("\u00a7aDu hast die Minimalen Koordinaten gesetzt!");
}

}
}
}

if (cmd.getName().equalsIgnoreCase("wartung")) {
cmd.setPermission("server.wartung");
p = (Player) sender;
if (!p.hasPermission("server.wartung")) {
p.sendMessage("\u00a7cDu hast keine Berechtigung für diesen Befehl.");
} else if (args.length == 0) {
p.sendMessage("\u00a7cBitte Benutze /wartung an | /wartung aus");
} else if (args.length == 1) {
if (args[0].equalsIgnoreCase("an")) {
Bukkit.broadcastMessage((String) "\u00a7c\u00a7lDer Server geht kurz in den Wartungs Modus");

Bukkit.setWhitelist((boolean) true);
this.getServer().setWhitelist(true);
for (Player online : Bukkit.getOnlinePlayers()) {
if (online.getName().equals(p.getName()))
continue;
online.kickPlayer("\u00a7cWartung");
}

} else if (args[0].equals("aus")) {
Bukkit.setWhitelist((boolean) false);
this.getServer().setWhitelist(true);
Bukkit.broadcastMessage((String) "\u00a7c\u00a7lDer Server ist nun nicht mehr im Wartungs Modus");
}
}
}
if(cmd.getName().equalsIgnoreCase("randomperm")) {
p.sendMessage("Setzten: server.random.set");
p.sendMessage("Wartung: server.wartung");
}

return false;
}


}
[/CODE]

[17:22:46] [Server thread/INFO]: [Random] Enabling Random v0.1*
[17:22:46] [Server thread/ERROR]: Error occurred while enabling Random v0.1 (Is it up to date?)
java.lang.IllegalArgumentException: Plugin already initialized!
at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:171) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:52) ~[patched_1.14.3.jar:git-Paper-131]
at TDM.Main.<init>(Main.java:42) ~[?:?]
at TDM.Main.onEnable(Main.java:48) ~[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:263) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:338) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:420) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.craftbukkit.v1_14_R1.CraftServer.enablePlugin(CraftServer.java:467) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.craftbukkit.v1_14_R1.CraftServer.enablePlugins(CraftServer.java:381) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.craftbukkit.v1_14_R1.CraftServer.reload(CraftServer.java:859) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.Bukkit.reload(Bukkit.java:610) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:54) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.craftbukkit.v1_14_R1.CraftServer.dispatchCommand(CraftServer.java:739) ~[patched_1.14.3.jar:git-Paper-131]
at net.minecraft.server.v1_14_R1.PlayerConnection.handleCommand(PlayerConnection.java:1831) ~[patched_1.14.3.jar:git-Paper-131]
at net.minecraft.server.v1_14_R1.PlayerConnection.a(PlayerConnection.java:1639) ~[patched_1.14.3.jar:git-Paper-131]
at net.minecraft.server.v1_14_R1.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[patched_1.14.3.jar:git-Paper-131]
at net.minecraft.server.v1_14_R1.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.14.3.jar:git-Paper-131]
at net.minecraft.server.v1_14_R1.PlayerConnectionUtils.lambda$ensureMainThread$0(PlayerConnectionUtils.java:18) ~[patched_1.14.3.jar:git-Paper-131]
at net.minecraft.server.v1_14_R1.TickTask.run(SourceFile:18) ~[patched_1.14.3.jar:git-Paper-131]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:127) ~[patched_1.14.3.jar:git-Paper-131]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.14.3.jar:git-Paper-131]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:105) ~[patched_1.14.3.jar:git-Paper-131]
at net.minecraft.server.v1_14_R1.MinecraftServer.aW(MinecraftServer.java:1002) ~[patched_1.14.3.jar:git-Paper-131]
at net.minecraft.server.v1_14_R1.MinecraftServer.executeNext(MinecraftServer.java:995) ~[patched_1.14.3.jar:git-Paper-131]
at net.minecraft.server.v1_14_R1.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:115) ~[patched_1.14.3.jar:git-Paper-131]
at net.minecraft.server.v1_14_R1.MinecraftServer.sleepForTick(MinecraftServer.java:979) ~[patched_1.14.3.jar:git-Paper-131]
at net.minecraft.server.v1_14_R1.MinecraftServer.run(MinecraftServer.java:912) ~[patched_1.14.3.jar:git-Paper-131]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_171]
Caused by: java.lang.IllegalStateException: Initial initialization
at org.bukkit.plugin.java.PluginClassLoader.initialize(PluginClassLoader.java:174) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.plugin.java.JavaPlugin.<init>(JavaPlugin.java:52) ~[patched_1.14.3.jar:git-Paper-131]
at TDM.Main.<init>(Main.java:42) ~[?:?]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_171]
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_171]
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_171]
at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_171]
at java.lang.Class.newInstance(Class.java:442) ~[?:1.8.0_171]
at org.bukkit.plugin.java.PluginClassLoader.<init>(PluginClassLoader.java:75) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:134) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:337) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:257) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.craftbukkit.v1_14_R1.CraftServer.loadPlugins(CraftServer.java:355) ~[patched_1.14.3.jar:git-Paper-131]
at org.bukkit.craftbukkit.v1_14_R1.CraftServer.reload(CraftServer.java:857) ~[patched_1.14.3.jar:git-Paper-131]
... 19 more
[17:22:46] [Server thread/INFO]: [Random] Disabling Random v0.1
[17:22:46] [Server thread/INFO]: ======Plugin RANDOM deaktiviert======
 
Zuletzt bearbeitet:
Registriert
10 Dezember 2017
Beiträge
161
Alter
26
Diamanten
322
Minecraft
DerFrZocker
Nutze "this" anstatt "new Main()". Eine Plugin darf nur eine instance von der "Main" classe haben.

Außerdem ist "Main" ein schlechter Name für die classe "RandomTeleport" oder so ähnliche währe besser.

Edit: jetzt wo ich mir den Fehler nochmal genauer durch gelesen haben, kann es sein das auf dem Server ein weiteres plugin von dir drauf ist, welches auch TDM.Main als Start Punkt hat?
 

Leonard held

Minecrafter
Registriert
13 Januar 2016
Beiträge
5
Diamanten
300
Nutze "this" anstatt "new Main()". Eine Plugin darf nur eine instance von der "Main" classe haben.

Außerdem ist "Main" ein schlechter Name für die classe "RandomTeleport" oder so ähnliche währe besser.

Edit: jetzt wo ich mir den Fehler nochmal genauer durch gelesen haben, kann es sein das auf dem Server ein weiteres plugin von dir drauf ist, welches auch TDM.Main als Start Punkt hat?
Nein gibt es nicht. Das ist das erste Plugin von mir :) aber danke!!
 

Leonard held

Minecrafter
Registriert
13 Januar 2016
Beiträge
5
Diamanten
300
@Leonard held
Bitte nutze in Zukunft CODE-Tags, um deinen Programmcode zu posten. Du kannst in der Leiste oben (rechts neben den Smileys) auf "..." und dann auf "Code". Darin kannst du dann deinen Code einfügen.

Bei setExecutor() musst du this statt new Main() nutzen (wie bereits von @DerFrZocker erwähnt).
Generell solltest du alle Befehle in eine eigene Klasse packen, die dann CommandExecutor implementiert, sonst wird es schnell unübersichtlich. Wenn du das gemacht hast, kannst du die jeweilige Klasse in der Main-Klasse bei setExecutor() erzeugen.

Diese Stelle hier:
Java:
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Geht garnicht. Wenn du mit dieser Methode eine Wartezeit einfügst, wird nicht nur die weitere Ausführung des Befehls, sondern alles auf dem Server für alle Spieler angehalten, da Minecraft nur mit einem Thread arbeitet. Dadurch ergibt sich also ein Server-Lag von drei Sekunden. Wenn du etwas verzögern willst, nutze den Scheduler der Bukkit-API:
Java:
//Erster Parameter ist das Plugin, da du in der Main-Klasse bist also this
//Dritter Parameter ist die Wartezeit in Ticks, 3 Sekunden = 60 Ticks
Bukkit.getScheduler().runTaskLater(this, new Runnable() {
    @Override
    public void run() {
        //Was du nach der Wartezeit machen willst
    }
}, 60L)
Ja das mit den zusaätzlichen klassen stimmt. Allerdings hat das immer Fehler geworfen. Ich muss mir das nocheinmal anschauen. Programmieren ist bei mir schon bisschen länger her :D.
Und Danke für den Hinweis :). Das mit dem Thread.sleep ist gut zu wissen. Ich baue deins mal ein
 
Oben