Hey,
ich code erst seit Kurzem und habe mich an ein Teil meines Team-System-Plugins gesetzt, der einen Login implementiert für ein paar Befehle, die man erst eben dann nutzen können soll.
Ich habe das wie folgt überlegt/umgesetzt:
Wenn man joint, landet man in einer ArrayList. Alle die in der Liste sind, können gewisse Befehle nicht ausführen (PlayerCommandPreprocessEvent). Wenn man nun /team login <passwort> eingibt, loggt man sich ein. Nun kann man diese Befehle nutzen, da man aus der ArrayListe fällt. (Habe natürlich des so gemacht das nur Leute mit einer gewissen Perm in der Array landen)
Hier meine Klassen:
Ich bekomme beim reload keinen Fehler. Auch Eclipse haut mir nix raus. Aber sowohl bei /team <subcmd> , also dem Command , als auch beim JoinEvent hauts mir ne ordentliche NullPointerExeption raus! Ich weis aber leider nicht wo bei mir der Denkfehler oder Codefehler liegt... und es erstellt keine passwort.yml!
Ich würde mich freuen, wenn mir jemand hilft... Ja ich bin Anfänger, aber ich möchte es lernen und würde mich über Hilfe sehr freuen. Wir haben alle ja mal klein angefangen. Eine kleine Erklärung wäre dazu auch net, damit ich es in Zukunft verstanden habe und es auf anderes umsetzten kann....
LG
-Zentix_HD
ich code erst seit Kurzem und habe mich an ein Teil meines Team-System-Plugins gesetzt, der einen Login implementiert für ein paar Befehle, die man erst eben dann nutzen können soll.
Ich habe das wie folgt überlegt/umgesetzt:
Wenn man joint, landet man in einer ArrayList. Alle die in der Liste sind, können gewisse Befehle nicht ausführen (PlayerCommandPreprocessEvent). Wenn man nun /team login <passwort> eingibt, loggt man sich ein. Nun kann man diese Befehle nutzen, da man aus der ArrayListe fällt. (Habe natürlich des so gemacht das nur Leute mit einer gewissen Perm in der Array landen)
Hier meine Klassen:
Main:
FileManager(um die Passwörter zu speichern):
CommandTeam(der login, register,changepw Befehl, als sub von /team... also /team login etc.):
JoinEvent:
CommandBlockEvent:
plugin.yml:
Code:
package de.jan.main;
import java.util.ArrayList;
import org.bukkit.Bukkit;
import org.bukkit.event.Listener;
import org.bukkit.inventory.Inventory;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin {
public Inventory settings = null;
public Inventory items = null;
public static Main main;
public ArrayList<String> waiting = new ArrayList<>();
public FileManager fm;
@Override
public void onEnable() {
main = Main.this;
this.getServer().getPluginManager().registerEvents((Listener) new JoinMessage(), this);
this.getServer().getPluginManager().registerEvents((Listener) new CMDEvent(), this);
this.getServer().getPluginManager().registerEvents((Listener) new QuitMessage(), this);
this.getServer().getPluginManager().registerEvents((Listener) new SettingsListener(), this);
this.getCommand("settings").setExecutor(new CommandSettings(this));
this.getCommand("items").setExecutor(new CommandItems(this));
this.getServer().getPluginManager().registerEvents((Listener) new ItemsListener(), this);
this.getCommand("team").setExecutor(new CommandTeam(this));
}
public void onDiseable() {
for(String all : waiting) {
Bukkit.getPlayer(all).kickPlayer("");
}
}
}
FileManager(um die Passwörter zu speichern):
Code:
package de.jan.main;
import java.io.File;
import java.io.IOException;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
public class FileManager {
public File f = new File(Main.main.getDataFolder(), "Passwort.yml");
public FileConfiguration cfg = YamlConfiguration.loadConfiguration(f);
public boolean isregistered(String uuid) {
if(cfg.contains(uuid)) {
return true;
}
return false;
}
public void saveCfg() {
try {
cfg.save(f);
} catch (IOException e) {
e.printStackTrace();
}
}
}
CommandTeam(der login, register,changepw Befehl, als sub von /team... also /team login etc.):
Code:
package de.jan.main;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
public class CommandTeam implements CommandExecutor {
private Main plugin;
public CommandTeam(Main m) {
plugin = m;
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (sender instanceof Player) {
Player p = (Player) sender;
if (args[0].equalsIgnoreCase("login")) {
if (!plugin.waiting.contains(p.getName())) {
p.sendMessage("§eDu bist bereits eingeloggt!");
return true;
}
if (plugin.fm.isregistered(p.getUniqueId().toString())) {
String pw = args[1];
if (plugin.fm.cfg.get(p.getUniqueId().toString()).equals(pw)) {
plugin.waiting.remove(p.getName());
p.sendMessage("§3Du bist nun eingeloggt!");
}
} else {
p.sendMessage("§eDu musst dich erst registrieren!");
p.sendMessage(
"§eSolltest du nicht wissen, wie das geht: Frage die Teamleitung oder schaue im Forum!");
}
}
if (args[0].equalsIgnoreCase("register")) {
if (args.length == 3) {
if (args[1] == args[2]) {
plugin.fm.cfg.set(p.getUniqueId().toString(), args[2]);
plugin.fm.saveCfg();
p.sendMessage("§3Du bist nun im Team-System registriert...willkommen!");
}
} else {
p.sendMessage("§eProbiers mal mit /team register <passwort> <passwort>!");
}
} else if (args[0].equalsIgnoreCase("changepw")) {
if (!plugin.waiting.contains(p.getName())) {
if (args.length == 3) {
if (args[1] == args[2]) {
plugin.fm.cfg.set(p.getUniqueId().toString(), args[2]);
plugin.fm.saveCfg();
p.sendMessage("§3Du hast nun dein Passwort geändert!!");
}
} else {
p.sendMessage("§eProbiers mal mit /team changepw <passwort> <passwort>!");
}
}
}
}
return false;
}
}
JoinEvent:
Code:
package de.jan.main;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
public class JoinMessage implements Listener {
@EventHandler
public void onJoinEvent(PlayerJoinEvent e) {
Player p = e.getPlayer();
if (!Main.main.waiting.contains(p.getName())) {
Main.main.waiting.add(e.getPlayer().getName());
}
p.sendMessage(ChatColor.BLACK + "[" + ChatColor.RED + "Varos" + ChatColor.BLACK + "]" + ChatColor.GREEN
+ "Moin, " + ChatColor.YELLOW + p.getPlayer().getDisplayName() + ChatColor.GREEN + "!");
if (Main.main.fm.isregistered(e.getPlayer().getUniqueId().toString())) {
p.sendMessage("§eDu bist nich in das Teamsystem eingeloggt!");
} else {
p.sendMessage("§eBecor du das Team-System nutzen kannst, musst du dich registrieren!");
}
}
}
CommandBlockEvent:
Code:
package de.jan.main;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
public class CMDEvent implements Listener {
@EventHandler
public void onCMD(PlayerCommandPreprocessEvent e) {
Player p = e.getPlayer();
String[] cmd = e.getMessage().substring(1).split(" ");
if (p.hasPermission("Varos.Team")) {
if (Main.main.waiting.contains(e.getPlayer().getName())) {
if (cmd[0].startsWith("settings") || cmd[0].startsWith("items")) {
e.setCancelled(true);
p.sendMessage("§eDu musst dich erst im Team-System einloggen!");
}
}
}
}
}
plugin.yml:
Code:
name: VarosTeam
version: 0.1
author: Jan
main: de.jan.main.Main
commands:
settings:
description: Settings Command
usage: /<command>
permission: Varos.Team
items:
description: Items Command
usage: /<command>
permission: Varos.Team
team:
description: Team Befehl
usage: /<command>
permission: Varos.Team
Ich bekomme beim reload keinen Fehler. Auch Eclipse haut mir nix raus. Aber sowohl bei /team <subcmd> , also dem Command , als auch beim JoinEvent hauts mir ne ordentliche NullPointerExeption raus! Ich weis aber leider nicht wo bei mir der Denkfehler oder Codefehler liegt... und es erstellt keine passwort.yml!
Ich würde mich freuen, wenn mir jemand hilft... Ja ich bin Anfänger, aber ich möchte es lernen und würde mich über Hilfe sehr freuen. Wir haben alle ja mal klein angefangen. Eine kleine Erklärung wäre dazu auch net, damit ich es in Zukunft verstanden habe und es auf anderes umsetzten kann....
LG
-Zentix_HD