Autor Thema: Login  (Gelesen 1387 mal)

songdestinator

  • Held Mitglied
  • *****
  • Beiträge: 773
  • Karma: 24
  • destinator - destinatorer - songdestinator
    • Profil anzeigen
    • Destinator Studios
Login
« am: 04. November 2012, 16:25:58 »
Hey, ich hab ein kleines Plugin gebastelt, bei dem man sich durch ein Passwort schützen kann(als Schutz vor kleinen Brüdern und so), das ganze ist aber freiwillig.

Wenn man ein Passwort setzen/ sein Passwort ändern will:

/setpassword dasPasswort

Beim nächsten Login muss man sich dann innerhalb von 20s mit

/login dasPasswort

einloggen, sonst wird man gekickt

Wenn man das ganze nicht mehr will kann man das Passwort mit

/removepassword

entfernen

Für diejenige, die sich für das Coden von Plugins interessieren, hier ist der Src-Code:

Code: (java) [Auswählen]
package me.songdestinator.Login;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Timer;

import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;

public class Login extends JavaPlugin implements ActionListener {

private Timer timer;
private Player p;

public Player actionPlayer;

@Override
public void onDisable() {

}

@Override
public void onEnable() {

timer = new Timer(20000, this);
registerEvents();
}

private boolean isLoggedIn(Player p) {

String path = p.getName() + ".loggedIn";

return Boolean.parseBoolean(getConfig().getString(path));
}

private void removePassword(Player p) {

String path = p.getName() + ".password";
getConfig().addDefault(path, "");

String path2 = p.getName() + ".passwordNeeded";
getConfig().addDefault(path2, "false");

getConfig().options().copyDefaults(true);
saveConfig();

}

private void setPassword(Player p, String password) {

String path = p.getName() + ".password";
String path2 = p.getName() + ".passwordNeeded";
getConfig().addDefault(path2, "true");

getConfig().addDefault(path, password);

getConfig().options().copyDefaults(true);
saveConfig();
}

private String loadPassword(Player p) {

try {
return getConfig().getString(p.getName() + ".password");
} catch (Exception e) {
p.sendMessage("Bitte lege ein Passwort mit '/setPassword password' fest!");
return "";
}
}

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

p = (Player) sender;

// Login
if (command.getName().equalsIgnoreCase("login")) {

if (args.length == 1) {

String password = args[0];

if (password.equals(loadPassword(p))) {
p.sendMessage("Willkommen " + p.getName());
setLoggedIn(p, true);
timer.stop();
return true;
}
}
}

// setPassword

if (command.getName().equalsIgnoreCase("setpassword")) {
// if (!isLoggedIn(p)) {
// p.sendMessage("Bitte logge dich zuerst ein");
// return false;
// }
if (args.length == 1) {
String password = args[0];
setPassword(p, password);
p.sendMessage("Passwort gesetzt");
return true;
}
}

// removePassword

if (command.getName().equalsIgnoreCase("removepassword")) {

if (!isLoggedIn(p)) {
p.sendMessage("Bitte logge dich zuerst ein");
return false;
}

if (args.length == 0) {
removePassword(p);
p.sendMessage("Passwort entfernt");
return true;
}
}

return false;
}

private void registerEvents() {
@SuppressWarnings("unused")
JoinListener listener = new JoinListener();
}

private class JoinListener implements Listener {

public JoinListener() {
getServer().getPluginManager().registerEvents(this, Login.this);
}

@EventHandler
public void onPlayerJoin(PlayerJoinEvent e) {

actionPlayer = e.getPlayer();

boolean needed = Boolean.parseBoolean(getConfig().getString(
actionPlayer.getName() + ".passwordNeeded"));

if (needed) {

System.out.println(needed);

setLoggedIn(actionPlayer, false);

actionPlayer.sendMessage("Bitte logge dich ein");
timer.start();
}
}

}

private void setLoggedIn(Player pl, boolean in) {
getConfig()
.addDefault(pl.getName() + ".loggedIn", Boolean.toString(in));

getConfig().options().copyDefaults(true);
saveConfig();
}

@Override
public void actionPerformed(ActionEvent e) {

try {
actionPlayer.kickPlayer("Logge dich ein!");
} catch (NullPointerException ex) {
ex.printStackTrace();
}

}

}

Das ist eine notwendige Datei, die das Plugin beschreibt( in yml verfasst):

Code: (yml) [Auswählen]
name: Login
version: 1.0
main: me.songdestinator.Login.Login
author: Songdestinator
commands:
     login:
          description: loggs the player in, correct password is needed
          usage: /<command> <password>
     setpassword:
          description: sets the password
          usage: /<command> <password>
     removepassword:
          description: removes the password
          usage: /<command>         
   

DTF28

  • Neuling
  • *
  • Beiträge: 15
  • Karma: -3
    • Profil anzeigen
Re: Login
« Antwort #1 am: 04. November 2012, 22:40:10 »
Ich bin zwar dein kleiner bruder aber ich müsst mich eher vor dir schützen -.- :)

Rinosakayu

  • Neuling
  • *
  • Beiträge: 2
  • Karma: -2
    • Profil anzeigen
Re: Login
« Antwort #2 am: 05. Mai 2017, 09:45:34 »
I want you to try out the house.