@lusu007 Mach e.getConnection().disconnect(); weg.
2. Wenn das immer noch nicht geht, probier LoginEvent.
e.setCancelled(true); + e.setCancelReason & co. müssten normalerweise ausreichen.
Du musst bevor du den Spieler spawnst das Packet "PacketPlayOutPlayerInfo" mit den entsprechenden Parametern senden. Falls du die Packet Wrapper benutzt: "WrapperPlayServerPlayerInfo".hallo
ich habe wieder eine Frage.. sorry dass ich etwas nervend sein kann..
bei mir klappt das anti kill aura plugin perfekt, jedoch, wenn ich mit 1.8 joinen will, kommt der npc einfach nicht.
Das Plugin habe ich mit protocollib geschrieben. soweit ich weiß, benutzt das team auch protocollib für kill aura, ich habe keine information ob sie das wirklich nutzen. aber man kann /packet machen für protocollib
meine frage ist es, wie mache ich es auch 1.8 kompatibel? die NPCs spawnen nur in 1.7, nicht in 1.8. manche server haben auch spigot hack & bei denen gehts irgendwie..
weiß einer wie das geht?
danke im voraus.![]()
hey danke für die antwortDu musst bevor du den Spieler spawnst das Packet "PacketPlayOutPlayerInfo" mit den entsprechenden Parametern senden. Falls du die Packet Wrapper benutzt: "WrapperPlayServerPlayerInfo".
public WrapperPlayServerPlayerInfo bevor(Player p) {
WrapperPlayServerPlayerInfo packet = new WrapperPlayServerPlayerInfo();
packet.setOnline(true);
packet.setPing((short) 0);
packet.sendPacket(p);
return packet;
}
Wieso hast du eine Methode erstellt die das Packet returnt wenn du es innerhalb dieser Methode sendest?hey danke für die antwort
habe jedoch ein Problem, vor dem erstellen habe ich folgende methode verwendet:
Bevor ich den npc spawne, habe ich diese methode verwendet.Code:public WrapperPlayServerPlayerInfo bevor(Player p) { WrapperPlayServerPlayerInfo packet = new WrapperPlayServerPlayerInfo(); packet.setOnline(true); packet.setPing((short) 0); packet.sendPacket(p); return packet; }
In der Konsole kommt jedoch ein error:
http://hastebin.com/icodizinuk.avrasm
Ich habe von github o.Ä. das kopiert:
https://github.com/aadnk/PacketWrap...acketwrapper/WrapperPlayServerPlayerInfo.java
Es scheint nicht zu funktionieren.. ich habe auch (beim code) packet.setplayername alles versucht.
Wo ist das problem eigentlich? danke im voraus
WrapperPlayServerPlayerInfo fakeEntityInfo = new WrapperPlayServerPlayerInfo();
PlayerInfoData infoData = new PlayerInfoData( new WrappedGameProfile( UUID.fromString( "0-0-0-0-0" ), displayName ), 0, EnumWrappers.NativeGameMode.NOT_SET, WrappedChatComponent.fromText( displayName ) );
fakeEntityInfo.setData( Arrays.asList( new PlayerInfoData[]{ infoData } ) );
fakeEntityInfo.sendPacket( player );
package me.Blackagent_007.blockbreakerBanSystem;
import me.Blackagent_007.blockbreakerBanSystem.MySQL.MySQL;
import me.Blackagent_007.blockbreakerBanSystem.commands.BanCommands;
import me.Blackagent_007.blockbreakerBanSystem.listeners.JoinListener;
import me.Blackagent_007.blockbreakerBanSystem.listeners.PlayerLogin;
import me.Blackagent_007.blockbreakerBanSystem.util.FileManager;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin{
public void onEnable() {
instance = this;
registerEvents();
registerCommands();
FileManager.setStandardConfig();
FileManager.setStandardMySQL();
FileManager.readConfig();
FileManager.readMySQL();
MySQL.connect();
MySQL.createTable();
Bukkit.getConsoleSender().sendMessage(prefix + "Plugin aktiviert");
}
public void onDisable() {
MySQL.close();
}
private void registerEvents() {
this.getServer().getPluginManager().registerEvents(new JoinListener(), this);
this.getServer().getPluginManager().registerEvents(new PlayerLogin(this), this);
}
private void registerCommands() {
BanCommands banCMD = new BanCommands(this);
getCommand("ban").setExecutor(banCMD);
getCommand("tempban").setExecutor(banCMD);
getCommand("check").setExecutor(banCMD);
getCommand("unban").setExecutor(banCMD);
}
public String prefix;
public static Main instance;
public static Main getInstance() {
return instance;
}
}
package me.Blackagent_007.blockbreakerBanSystem.util;
import me.Blackagent_007.blockbreakerBanSystem.MySQL.MySQL;
import org.bukkit.Bukkit;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
public class BanManager {
public static void ban(String uuid, String playername, String reason, int seconds) {
long end = 0;
if(seconds == -1) {
end = -1;
}
long current = System.currentTimeMillis();
long millis = seconds*1000;
end = current + millis;
MySQL.update("INSERT INTO BannedPlayers (Spielername, UUID, Ende, Grund) VALUES ('"+playername+"','"+uuid+"','"+end+"','"+reason+"')");
if(Bukkit.getPlayer(playername) != null) {
Bukkit.getPlayer(playername).kickPlayer("§cDu wurdest vom Server gebannt!\n" +
"\n" +
"§3Grund: §e" + getReason(uuid) + "\n" +
"\n" +
"§3Verbleibende Zeit: §e" + getRemainingTime(uuid) + "\n" +
"\n" +
"§3 Du kannst §c§nkeinen§3 Entbannungsantrag stellen!");
}
}
public static void unban(String uuid) {
MySQL.update("DELETE FROM BannedPlayers WHERE UUID='"+uuid+"'");
}
public static boolean isBanned(String uuid) {
ResultSet rs = MySQL.getResult("SELECT Ende FROM BannedPlayers WHERE UUID='"+uuid+"'");
try {
return rs.next();
} catch (SQLException e) {
e.printStackTrace();
}
return false;
}
public static String getReason(String uuid) {
ResultSet rs = MySQL.getResult("SELECT * FROM BannedPlayers WHERE UUID='"+uuid+"'");
try {
while(rs.next()) {
return rs.getString("Grund");
}
} catch (SQLException e) {
e.printStackTrace();
}
return "";
}
public static Long getEnd(String uuid) {
ResultSet rs = MySQL.getResult("SELECT * FROM BannedPlayers WHERE UUID='"+uuid+"'");
try {
while(rs.next()) {
return rs.getLong("Ende");
}
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static List<String> getBannedPlayers() {
List<String> list = new ArrayList<String>();
ResultSet rs = MySQL.getResult("SELECT * FROM BannedPlayers");
try {
while(rs.next()) {
list.add(rs.getString("Spielername"));
}
} catch (SQLException e) {
e.printStackTrace();
}
return list;
}
public static String getRemainingTime(String uuid) {
long current = System.currentTimeMillis();
long end = getEnd(uuid);
long millis = end - current;
int seconds = 0;
int minutes = 0;
int hours = 0;
int days = 0;
int weeks = 0;
while(millis > 1000) {
millis -= 1000;
seconds ++;
}
while(seconds > 60) {
seconds -= 60;
minutes ++;
}
while (minutes > 60) {
minutes -= 60;
hours++;
}
while(hours > 24) {
hours -= 24;
days ++;
}
while(days > 7) {
days -= 7;
weeks ++;
}
return "§e" + weeks + "Woche(n) " + days + " Tage(e) " + hours + " Stunde(n) " + minutes + " Minute(n) " + seconds + " Sekunde(n)";
}
}
package me.Blackagent_007.blockbreakerBanSystem.commands;
import me.Blackagent_007.blockbreakerBanSystem.Main;
import me.Blackagent_007.blockbreakerBanSystem.util.BanManager;
import me.Blackagent_007.blockbreakerBanSystem.util.BanUnit;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import java.util.List;
public class BanCommands implements CommandExecutor{
private Main plugin;
public BanCommands(Main plugin) {
this.plugin = plugin;
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (cmd.getName().equalsIgnoreCase("ban")) {
if(args.length >= 2) {
String playername = args[0];
if (BanManager.isBanned(getUUID(playername))) {
sender.sendMessage(plugin.prefix + "§cDieser Spieler ist bereits gebannt!");
return true;
}
String reason = "";
for(int i = 1; i < args.length; i++) {
reason += args[i] + " ";
}
BanManager.ban(getUUID(playername), playername, reason, -1);
sender.sendMessage(plugin.prefix + "§Du hast §e" + playername + " §4PERMANENT §7gebannt!");
return true;
}
sender.sendMessage(plugin.prefix + "§c/ban <Spieler> <Grund>");
return true;
}
if(cmd.getName().equalsIgnoreCase("tempban")) {
if(args.length >= 4) {
String playername = args[0];
if (BanManager.isBanned(getUUID(playername))) {
sender.sendMessage(plugin.prefix + "§cDieser Spieler ist bereits gebannt!");
return true;
}
int value;
try {
value = Integer.valueOf(args[1]);
} catch(NumberFormatException e) {
sender.sendMessage(plugin.prefix + "§c<Zahlenwert> muss eine Zahl sein!");
return true;
}
String unitString = args[2];
String reason = "";
for(int i = 3; i < args.length; i++) {
reason += args[i] + " ";
}
List<String> unitList = BanUnit.getUnitsAsString();
if(unitList.contains(unitString.toLowerCase())) {
BanUnit unit = BanUnit.getUnit(unitString);
int seconds = value * unit.getToSecond();
BanManager.ban(getUUID(playername), playername, reason, seconds);
sender.sendMessage(plugin.prefix + "§7Du hast §e" + playername + " §7für §c" + value + unit.getName() + " §7gebannt!");
return true;
}
sender.sendMessage(plugin.prefix + "§cDiese <Einheit> existiert nich!");
return true;
}
sender.sendMessage(plugin.prefix + "§c/tempban <Spieler> <Zahlenwert> <Einheit> <Grund>");
return true;
}
if(cmd.getName().equalsIgnoreCase("check")) {
if(args.length == 1) {
if(args [0].equalsIgnoreCase("list")) {
List<String> list = BanManager.getBannedPlayers();
if(list.size() == 0) {
sender.sendMessage(plugin.prefix + "§cEs sind aktuell keine Spieler gebannt!");
return true;
}
sender.sendMessage(plugin.prefix + "§7----------§6§1Ban-Liste §7----------");
for(String allBanned : BanManager.getBannedPlayers()) {
sender.sendMessage(plugin.prefix + "§e" + allBanned + " §7(Grund: §r" + BanManager.getReason(getUUID(allBanned)) + "§7)");
}
return true;
}
String playername = args[0];
sender.sendMessage(plugin.prefix + "§7----------§6§1Ban-Infos §7----------");
sender.sendMessage(plugin.prefix + "§eName: §r" + playername);
sender.sendMessage(plugin.prefix + "§eGebannt: §r" + (BanManager.isBanned(getUUID(playername)) ? "§aJa!" : "§cNein!"));
if(BanManager.isBanned(getUUID(playername))) {
sender.sendMessage(plugin.prefix + "§eGrund §r" + BanManager.getReason(getUUID(playername)));
sender.sendMessage(plugin.prefix + "§eVerbleibende Zeit: §r" + BanManager.getRemainingTime(getUUID(playername)));
}
return true;
}
sender.sendMessage(plugin.prefix + "§c/check (list) <Spieler>");
return true;
}
if(cmd.getName().equalsIgnoreCase("unban")) {
if(args.length == 1) {
String playername = args[0];
if(BanManager.isBanned(getUUID(playername))) {
sender.sendMessage(plugin.prefix + "§cDieser Spieler ist nicht gebannt!");
return true;
}
BanManager.unban(getUUID(playername));
sender.sendMessage(plugin.prefix + "§7Du hast §e" + playername + " §7entbannt!");
return true;
}
sender.sendMessage(plugin.prefix + "§c/unban <Spieler>");
return true;
}
return true;
}
@SuppressWarnings("deprecation")
private String getUUID(String playername) {
return Bukkit.getOfflinePlayer(playername).getUniqueId().toString();
}
}
Welches Problem?Hey Leute, es wäre schön wenn ihr mir helfen könntet!
Ich bin grade dabei ein Ban-Plugin für unseren Server zu programmieren und verwende dafür das Ban-Manager Plugin von Lonzbonz als Vorlage. Es ist auch schon so gut wie fertig, aber ich habe nun folgendes Problem:
Hier einmal die Main Klasse:
PHP:package me.Blackagent_007.blockbreakerBanSystem; import me.Blackagent_007.blockbreakerBanSystem.MySQL.MySQL; import me.Blackagent_007.blockbreakerBanSystem.commands.BanCommands; import me.Blackagent_007.blockbreakerBanSystem.listeners.JoinListener; import me.Blackagent_007.blockbreakerBanSystem.listeners.PlayerLogin; import me.Blackagent_007.blockbreakerBanSystem.util.FileManager; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin{ public void onEnable() { instance = this; registerEvents(); registerCommands(); FileManager.setStandardConfig(); FileManager.setStandardMySQL(); FileManager.readConfig(); FileManager.readMySQL(); MySQL.connect(); MySQL.createTable(); Bukkit.getConsoleSender().sendMessage(prefix + "Plugin aktiviert"); } public void onDisable() { MySQL.close(); } private void registerEvents() { this.getServer().getPluginManager().registerEvents(new JoinListener(), this); this.getServer().getPluginManager().registerEvents(new PlayerLogin(this), this); } private void registerCommands() { BanCommands banCMD = new BanCommands(this); getCommand("ban").setExecutor(banCMD); getCommand("tempban").setExecutor(banCMD); getCommand("check").setExecutor(banCMD); getCommand("unban").setExecutor(banCMD); } public String prefix; public static Main instance; public static Main getInstance() { return instance; } }
Die "BanManager" Klasse:
PHP:package me.Blackagent_007.blockbreakerBanSystem.util; import me.Blackagent_007.blockbreakerBanSystem.MySQL.MySQL; import org.bukkit.Bukkit; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class BanManager { public static void ban(String uuid, String playername, String reason, int seconds) { long end = 0; if(seconds == -1) { end = -1; } long current = System.currentTimeMillis(); long millis = seconds*1000; end = current + millis; MySQL.update("INSERT INTO BannedPlayers (Spielername, UUID, Ende, Grund) VALUES ('"+playername+"','"+uuid+"','"+end+"','"+reason+"')"); if(Bukkit.getPlayer(playername) != null) { Bukkit.getPlayer(playername).kickPlayer("§cDu wurdest vom Server gebannt!\n" + "\n" + "§3Grund: §e" + getReason(uuid) + "\n" + "\n" + "§3Verbleibende Zeit: §e" + getRemainingTime(uuid) + "\n" + "\n" + "§3 Du kannst §c§nkeinen§3 Entbannungsantrag stellen!"); } } public static void unban(String uuid) { MySQL.update("DELETE FROM BannedPlayers WHERE UUID='"+uuid+"'"); } public static boolean isBanned(String uuid) { ResultSet rs = MySQL.getResult("SELECT Ende FROM BannedPlayers WHERE UUID='"+uuid+"'"); try { return rs.next(); } catch (SQLException e) { e.printStackTrace(); } return false; } public static String getReason(String uuid) { ResultSet rs = MySQL.getResult("SELECT * FROM BannedPlayers WHERE UUID='"+uuid+"'"); try { while(rs.next()) { return rs.getString("Grund"); } } catch (SQLException e) { e.printStackTrace(); } return ""; } public static Long getEnd(String uuid) { ResultSet rs = MySQL.getResult("SELECT * FROM BannedPlayers WHERE UUID='"+uuid+"'"); try { while(rs.next()) { return rs.getLong("Ende"); } } catch (SQLException e) { e.printStackTrace(); } return null; } public static List<String> getBannedPlayers() { List<String> list = new ArrayList<String>(); ResultSet rs = MySQL.getResult("SELECT * FROM BannedPlayers"); try { while(rs.next()) { list.add(rs.getString("Spielername")); } } catch (SQLException e) { e.printStackTrace(); } return list; } public static String getRemainingTime(String uuid) { long current = System.currentTimeMillis(); long end = getEnd(uuid); long millis = end - current; int seconds = 0; int minutes = 0; int hours = 0; int days = 0; int weeks = 0; while(millis > 1000) { millis -= 1000; seconds ++; } while(seconds > 60) { seconds -= 60; minutes ++; } while (minutes > 60) { minutes -= 60; hours++; } while(hours > 24) { hours -= 24; days ++; } while(days > 7) { days -= 7; weeks ++; } return "§e" + weeks + "Woche(n) " + days + " Tage(e) " + hours + " Stunde(n) " + minutes + " Minute(n) " + seconds + " Sekunde(n)"; } }
Und die "BanCommands" Klasse:
PHP:package me.Blackagent_007.blockbreakerBanSystem.commands; import me.Blackagent_007.blockbreakerBanSystem.Main; import me.Blackagent_007.blockbreakerBanSystem.util.BanManager; import me.Blackagent_007.blockbreakerBanSystem.util.BanUnit; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import java.util.List; public class BanCommands implements CommandExecutor{ private Main plugin; public BanCommands(Main plugin) { this.plugin = plugin; } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (cmd.getName().equalsIgnoreCase("ban")) { if(args.length >= 2) { String playername = args[0]; if (BanManager.isBanned(getUUID(playername))) { sender.sendMessage(plugin.prefix + "§cDieser Spieler ist bereits gebannt!"); return true; } String reason = ""; for(int i = 1; i < args.length; i++) { reason += args[i] + " "; } BanManager.ban(getUUID(playername), playername, reason, -1); sender.sendMessage(plugin.prefix + "§Du hast §e" + playername + " §4PERMANENT §7gebannt!"); return true; } sender.sendMessage(plugin.prefix + "§c/ban <Spieler> <Grund>"); return true; } if(cmd.getName().equalsIgnoreCase("tempban")) { if(args.length >= 4) { String playername = args[0]; if (BanManager.isBanned(getUUID(playername))) { sender.sendMessage(plugin.prefix + "§cDieser Spieler ist bereits gebannt!"); return true; } int value; try { value = Integer.valueOf(args[1]); } catch(NumberFormatException e) { sender.sendMessage(plugin.prefix + "§c<Zahlenwert> muss eine Zahl sein!"); return true; } String unitString = args[2]; String reason = ""; for(int i = 3; i < args.length; i++) { reason += args[i] + " "; } List<String> unitList = BanUnit.getUnitsAsString(); if(unitList.contains(unitString.toLowerCase())) { BanUnit unit = BanUnit.getUnit(unitString); int seconds = value * unit.getToSecond(); BanManager.ban(getUUID(playername), playername, reason, seconds); sender.sendMessage(plugin.prefix + "§7Du hast §e" + playername + " §7für §c" + value + unit.getName() + " §7gebannt!"); return true; } sender.sendMessage(plugin.prefix + "§cDiese <Einheit> existiert nich!"); return true; } sender.sendMessage(plugin.prefix + "§c/tempban <Spieler> <Zahlenwert> <Einheit> <Grund>"); return true; } if(cmd.getName().equalsIgnoreCase("check")) { if(args.length == 1) { if(args [0].equalsIgnoreCase("list")) { List<String> list = BanManager.getBannedPlayers(); if(list.size() == 0) { sender.sendMessage(plugin.prefix + "§cEs sind aktuell keine Spieler gebannt!"); return true; } sender.sendMessage(plugin.prefix + "§7----------§6§1Ban-Liste §7----------"); for(String allBanned : BanManager.getBannedPlayers()) { sender.sendMessage(plugin.prefix + "§e" + allBanned + " §7(Grund: §r" + BanManager.getReason(getUUID(allBanned)) + "§7)"); } return true; } String playername = args[0]; sender.sendMessage(plugin.prefix + "§7----------§6§1Ban-Infos §7----------"); sender.sendMessage(plugin.prefix + "§eName: §r" + playername); sender.sendMessage(plugin.prefix + "§eGebannt: §r" + (BanManager.isBanned(getUUID(playername)) ? "§aJa!" : "§cNein!")); if(BanManager.isBanned(getUUID(playername))) { sender.sendMessage(plugin.prefix + "§eGrund §r" + BanManager.getReason(getUUID(playername))); sender.sendMessage(plugin.prefix + "§eVerbleibende Zeit: §r" + BanManager.getRemainingTime(getUUID(playername))); } return true; } sender.sendMessage(plugin.prefix + "§c/check (list) <Spieler>"); return true; } if(cmd.getName().equalsIgnoreCase("unban")) { if(args.length == 1) { String playername = args[0]; if(BanManager.isBanned(getUUID(playername))) { sender.sendMessage(plugin.prefix + "§cDieser Spieler ist nicht gebannt!"); return true; } BanManager.unban(getUUID(playername)); sender.sendMessage(plugin.prefix + "§7Du hast §e" + playername + " §7entbannt!"); return true; } sender.sendMessage(plugin.prefix + "§c/unban <Spieler>"); return true; } return true; } @SuppressWarnings("deprecation") private String getUUID(String playername) { return Bukkit.getOfflinePlayer(playername).getUniqueId().toString(); } }
Ich würde mich echt freuen, wenn ihr mir helfen könntet! Vielen Dank im VorrausD
Gruß Blackagent_007
Hey Leute, es wäre schön wenn ihr mir helfen könntet!
Ich bin grade dabei ein Ban-Plugin für unseren Server zu programmieren und verwende dafür das Ban-Manager Plugin von Lonzbonz als Vorlage. Es ist auch schon so gut wie fertig, aber ich habe nun folgendes Problem:
Hier einmal die Main Klasse:
PHP:package me.Blackagent_007.blockbreakerBanSystem; import me.Blackagent_007.blockbreakerBanSystem.MySQL.MySQL; import me.Blackagent_007.blockbreakerBanSystem.commands.BanCommands; import me.Blackagent_007.blockbreakerBanSystem.listeners.JoinListener; import me.Blackagent_007.blockbreakerBanSystem.listeners.PlayerLogin; import me.Blackagent_007.blockbreakerBanSystem.util.FileManager; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin{ public void onEnable() { instance = this; registerEvents(); registerCommands(); FileManager.setStandardConfig(); FileManager.setStandardMySQL(); FileManager.readConfig(); FileManager.readMySQL(); MySQL.connect(); MySQL.createTable(); Bukkit.getConsoleSender().sendMessage(prefix + "Plugin aktiviert"); } public void onDisable() { MySQL.close(); } private void registerEvents() { this.getServer().getPluginManager().registerEvents(new JoinListener(), this); this.getServer().getPluginManager().registerEvents(new PlayerLogin(this), this); } private void registerCommands() { BanCommands banCMD = new BanCommands(this); getCommand("ban").setExecutor(banCMD); getCommand("tempban").setExecutor(banCMD); getCommand("check").setExecutor(banCMD); getCommand("unban").setExecutor(banCMD); } public String prefix; public static Main instance; public static Main getInstance() { return instance; } }
Die "BanManager" Klasse:
PHP:package me.Blackagent_007.blockbreakerBanSystem.util; import me.Blackagent_007.blockbreakerBanSystem.MySQL.MySQL; import org.bukkit.Bukkit; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; public class BanManager { public static void ban(String uuid, String playername, String reason, int seconds) { long end = 0; if(seconds == -1) { end = -1; } long current = System.currentTimeMillis(); long millis = seconds*1000; end = current + millis; MySQL.update("INSERT INTO BannedPlayers (Spielername, UUID, Ende, Grund) VALUES ('"+playername+"','"+uuid+"','"+end+"','"+reason+"')"); if(Bukkit.getPlayer(playername) != null) { Bukkit.getPlayer(playername).kickPlayer("§cDu wurdest vom Server gebannt!\n" + "\n" + "§3Grund: §e" + getReason(uuid) + "\n" + "\n" + "§3Verbleibende Zeit: §e" + getRemainingTime(uuid) + "\n" + "\n" + "§3 Du kannst §c§nkeinen§3 Entbannungsantrag stellen!"); } } public static void unban(String uuid) { MySQL.update("DELETE FROM BannedPlayers WHERE UUID='"+uuid+"'"); } public static boolean isBanned(String uuid) { ResultSet rs = MySQL.getResult("SELECT Ende FROM BannedPlayers WHERE UUID='"+uuid+"'"); try { return rs.next(); } catch (SQLException e) { e.printStackTrace(); } return false; } public static String getReason(String uuid) { ResultSet rs = MySQL.getResult("SELECT * FROM BannedPlayers WHERE UUID='"+uuid+"'"); try { while(rs.next()) { return rs.getString("Grund"); } } catch (SQLException e) { e.printStackTrace(); } return ""; } public static Long getEnd(String uuid) { ResultSet rs = MySQL.getResult("SELECT * FROM BannedPlayers WHERE UUID='"+uuid+"'"); try { while(rs.next()) { return rs.getLong("Ende"); } } catch (SQLException e) { e.printStackTrace(); } return null; } public static List<String> getBannedPlayers() { List<String> list = new ArrayList<String>(); ResultSet rs = MySQL.getResult("SELECT * FROM BannedPlayers"); try { while(rs.next()) { list.add(rs.getString("Spielername")); } } catch (SQLException e) { e.printStackTrace(); } return list; } public static String getRemainingTime(String uuid) { long current = System.currentTimeMillis(); long end = getEnd(uuid); long millis = end - current; int seconds = 0; int minutes = 0; int hours = 0; int days = 0; int weeks = 0; while(millis > 1000) { millis -= 1000; seconds ++; } while(seconds > 60) { seconds -= 60; minutes ++; } while (minutes > 60) { minutes -= 60; hours++; } while(hours > 24) { hours -= 24; days ++; } while(days > 7) { days -= 7; weeks ++; } return "§e" + weeks + "Woche(n) " + days + " Tage(e) " + hours + " Stunde(n) " + minutes + " Minute(n) " + seconds + " Sekunde(n)"; } }
Und die "BanCommands" Klasse:
PHP:package me.Blackagent_007.blockbreakerBanSystem.commands; import me.Blackagent_007.blockbreakerBanSystem.Main; import me.Blackagent_007.blockbreakerBanSystem.util.BanManager; import me.Blackagent_007.blockbreakerBanSystem.util.BanUnit; import org.bukkit.Bukkit; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import java.util.List; public class BanCommands implements CommandExecutor{ private Main plugin; public BanCommands(Main plugin) { this.plugin = plugin; } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { if (cmd.getName().equalsIgnoreCase("ban")) { if(args.length >= 2) { String playername = args[0]; if (BanManager.isBanned(getUUID(playername))) { sender.sendMessage(plugin.prefix + "§cDieser Spieler ist bereits gebannt!"); return true; } String reason = ""; for(int i = 1; i < args.length; i++) { reason += args[i] + " "; } BanManager.ban(getUUID(playername), playername, reason, -1); sender.sendMessage(plugin.prefix + "§Du hast §e" + playername + " §4PERMANENT §7gebannt!"); return true; } sender.sendMessage(plugin.prefix + "§c/ban <Spieler> <Grund>"); return true; } if(cmd.getName().equalsIgnoreCase("tempban")) { if(args.length >= 4) { String playername = args[0]; if (BanManager.isBanned(getUUID(playername))) { sender.sendMessage(plugin.prefix + "§cDieser Spieler ist bereits gebannt!"); return true; } int value; try { value = Integer.valueOf(args[1]); } catch(NumberFormatException e) { sender.sendMessage(plugin.prefix + "§c<Zahlenwert> muss eine Zahl sein!"); return true; } String unitString = args[2]; String reason = ""; for(int i = 3; i < args.length; i++) { reason += args[i] + " "; } List<String> unitList = BanUnit.getUnitsAsString(); if(unitList.contains(unitString.toLowerCase())) { BanUnit unit = BanUnit.getUnit(unitString); int seconds = value * unit.getToSecond(); BanManager.ban(getUUID(playername), playername, reason, seconds); sender.sendMessage(plugin.prefix + "§7Du hast §e" + playername + " §7für §c" + value + unit.getName() + " §7gebannt!"); return true; } sender.sendMessage(plugin.prefix + "§cDiese <Einheit> existiert nich!"); return true; } sender.sendMessage(plugin.prefix + "§c/tempban <Spieler> <Zahlenwert> <Einheit> <Grund>"); return true; } if(cmd.getName().equalsIgnoreCase("check")) { if(args.length == 1) { if(args [0].equalsIgnoreCase("list")) { List<String> list = BanManager.getBannedPlayers(); if(list.size() == 0) { sender.sendMessage(plugin.prefix + "§cEs sind aktuell keine Spieler gebannt!"); return true; } sender.sendMessage(plugin.prefix + "§7----------§6§1Ban-Liste §7----------"); for(String allBanned : BanManager.getBannedPlayers()) { sender.sendMessage(plugin.prefix + "§e" + allBanned + " §7(Grund: §r" + BanManager.getReason(getUUID(allBanned)) + "§7)"); } return true; } String playername = args[0]; sender.sendMessage(plugin.prefix + "§7----------§6§1Ban-Infos §7----------"); sender.sendMessage(plugin.prefix + "§eName: §r" + playername); sender.sendMessage(plugin.prefix + "§eGebannt: §r" + (BanManager.isBanned(getUUID(playername)) ? "§aJa!" : "§cNein!")); if(BanManager.isBanned(getUUID(playername))) { sender.sendMessage(plugin.prefix + "§eGrund §r" + BanManager.getReason(getUUID(playername))); sender.sendMessage(plugin.prefix + "§eVerbleibende Zeit: §r" + BanManager.getRemainingTime(getUUID(playername))); } return true; } sender.sendMessage(plugin.prefix + "§c/check (list) <Spieler>"); return true; } if(cmd.getName().equalsIgnoreCase("unban")) { if(args.length == 1) { String playername = args[0]; if(BanManager.isBanned(getUUID(playername))) { sender.sendMessage(plugin.prefix + "§cDieser Spieler ist nicht gebannt!"); return true; } BanManager.unban(getUUID(playername)); sender.sendMessage(plugin.prefix + "§7Du hast §e" + playername + " §7entbannt!"); return true; } sender.sendMessage(plugin.prefix + "§c/unban <Spieler>"); return true; } return true; } @SuppressWarnings("deprecation") private String getUUID(String playername) { return Bukkit.getOfflinePlayer(playername).getUniqueId().toString(); } }
Ich würde mich echt freuen, wenn ihr mir helfen könntet! Vielen Dank im VorrausD
Gruß Blackagent_007
[15:40:04 ERROR]: Error occurred while enabling blockbreakerBanSystem v1.0 (Is i
t up to date?)
java.lang.NullPointerException
at me.Blackagent_007.blockbreakerBanSystem.Main.registerCommands(Main.ja
va:47) ~[?:?]
at me.Blackagent_007.blockbreakerBanSystem.Main.onEnable(Main.java:26) ~
[?:?]
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:316) ~[s
pigot.jar:git-Spigot-"606148f"]
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
.java:333) [spigot.jar:git-Spigot-"606148f"]
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
r.java:412) [spigot.jar:git-Spigot-"606148f"]
at org.bukkit.craftbukkit.v1_8_R1.CraftServer.loadPlugin(CraftServer.jav
a:352) [spigot.jar:git-Spigot-"606148f"]
at org.bukkit.craftbukkit.v1_8_R1.CraftServer.enablePlugins(CraftServer.
java:313) [spigot.jar:git-Spigot-"606148f"]
at net.minecraft.server.v1_8_R1.MinecraftServer.q(MinecraftServer.java:4
00) [spigot.jar:git-Spigot-"606148f"]
at net.minecraft.server.v1_8_R1.MinecraftServer.k(MinecraftServer.java:3
68) [spigot.jar:git-Spigot-"606148f"]
at net.minecraft.server.v1_8_R1.MinecraftServer.a(MinecraftServer.java:3
23) [spigot.jar:git-Spigot-"606148f"]
at net.minecraft.server.v1_8_R1.DedicatedServer.init(DedicatedServer.jav
a:211) [spigot.jar:git-Spigot-"606148f"]
at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java
:496) [spigot.jar:git-Spigot-"606148f"]
at java.lang.Thread.run(Unknown Source) [?:1.8.0_25]
Werde ich mir Zuhause am PC anschauen.PHP:[15:40:04 ERROR]: Error occurred while enabling blockbreakerBanSystem v1.0 (Is i t up to date?) java.lang.NullPointerException at me.Blackagent_007.blockbreakerBanSystem.Main.registerCommands(Main.ja va:47) ~[?:?] at me.Blackagent_007.blockbreakerBanSystem.Main.onEnable(Main.java:26) ~ [?:?] at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:316) ~[s pigot.jar:git-Spigot-"606148f"] at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader .java:333) [spigot.jar:git-Spigot-"606148f"] at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage r.java:412) [spigot.jar:git-Spigot-"606148f"] at org.bukkit.craftbukkit.v1_8_R1.CraftServer.loadPlugin(CraftServer.jav a:352) [spigot.jar:git-Spigot-"606148f"] at org.bukkit.craftbukkit.v1_8_R1.CraftServer.enablePlugins(CraftServer. java:313) [spigot.jar:git-Spigot-"606148f"] at net.minecraft.server.v1_8_R1.MinecraftServer.q(MinecraftServer.java:4 00) [spigot.jar:git-Spigot-"606148f"] at net.minecraft.server.v1_8_R1.MinecraftServer.k(MinecraftServer.java:3 68) [spigot.jar:git-Spigot-"606148f"] at net.minecraft.server.v1_8_R1.MinecraftServer.a(MinecraftServer.java:3 23) [spigot.jar:git-Spigot-"606148f"] at net.minecraft.server.v1_8_R1.DedicatedServer.init(DedicatedServer.jav a:211) [spigot.jar:git-Spigot-"606148f"] at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java :496) [spigot.jar:git-Spigot-"606148f"] at java.lang.Thread.run(Unknown Source) [?:1.8.0_25]
Tut mir leid xD die Fehlermeldung hab ich voll vergessen![]()
Das Problem ist, dass das nur auf protocollib 1.8 geht oder? bei mir gehts nicht.Wieso hast du eine Methode erstellt die das Packet returnt wenn du es innerhalb dieser Methode sendest?
Man abgesehen davon benutzt du die alten Packet Wrapper...
Hier die neueste Version: *click*
Hier wie ich sie verwende: (Bei mir geht es)
PHP:WrapperPlayServerPlayerInfo fakeEntityInfo = new WrapperPlayServerPlayerInfo(); PlayerInfoData infoData = new PlayerInfoData( new WrappedGameProfile( UUID.fromString( "0-0-0-0-0" ), displayName ), 0, EnumWrappers.NativeGameMode.NOT_SET, WrappedChatComponent.fromText( displayName ) ); fakeEntityInfo.setData( Arrays.asList( new PlayerInfoData[]{ infoData } ) ); fakeEntityInfo.sendPacket( player );
Da nach musst du halt das spawn Packet senden...
Einer eine idee?Das Problem ist, dass das nur auf protocollib 1.8 geht oder? bei mir gehts nicht.
ich will spigot 1.7 - 1.8
trotzdem danke für deine hilfe
Einer eine idee?
Problem:
hey danke für die antwort
habe jedoch ein Problem, vor dem erstellen habe ich folgende methode verwendet:
Code:
public WrapperPlayServerPlayerInfo bevor(Player p) {
WrapperPlayServerPlayerInfo packet = new WrapperPlayServerPlayerInfo();
packet.setOnline(true);
packet.setPing((short) 0);
packet.sendPacket(p);
return packet;
}
Bevor ich den npc spawne, habe ich diese methode verwendet.
In der Konsole kommt jedoch ein error:
http://hastebin.com/icodizinuk.avrasm
Ich habe von github o.Ä. das kopiert:
https://github.com/aadnk/PacketWrap...acketwrapper/WrapperPlayServerPlayerInfo.java
Es scheint nicht zu funktionieren.. ich habe auch (beim code) packet.setplayername alles versucht.
Wo ist das problem eigentlich? danke im voraus
/ * kopiert aus der letzten seite * /
wie mache ich diese 1.7 & 1.8? also dass der npc auch auf 1.8 spawnt?
weiß einer bitte, wie das geht?
danke im voraus!
Ugh..Hallo ich hab eine Frage die für euch Profis glaub ich ganz einfach ist
Ich programiere/ schaue Tutorials seit 2 Tagen und hab auch schon selber rumgespeitl nun die Frage
Wieso ist diese } Rot unterstrichen? Wenn ich sie lösche werden 2 weitere darüber rot angestrichen und wenn ich eine Neue Klammer setzte kommen auch Fehlermeldungen!
![]()
Ich hoffe mir kann wer helfenThx
Fahr mit dem Mauszeiger über das rote x am rand und schreib was da steht.Hallo ich hab eine Frage die für euch Profis glaub ich ganz einfach ist
Ich programiere/ schaue Tutorials seit 2 Tagen und hab auch schon selber rumgespeitl nun die Frage
Wieso ist diese } Rot unterstrichen? Wenn ich sie lösche werden 2 weitere darüber rot angestrichen und wenn ich eine Neue Klammer setzte kommen auch Fehlermeldungen!
![]()
Ich hoffe mir kann wer helfenThx
Ugh..
Schau bei cmd.getName().equalsIgnoreCase("info")) {
du hast keine geschleifte Klammer zum Beenden der "Abfrage".
Mach mal unter return true; ein }
Fahr mit dem Mauszeiger über das rote x am rand und schreib was da steht.
EDIT: Ich glaub ich weis wo der Fehler liegt, du hast nach return true; wahrscheinlich eine Klammer vergessen, überprüf das mal.
Na, lernt da jemamd mit lonzbonz programmieren?Hallo ich hab eine Frage die für euch Profis glaub ich ganz einfach ist
Ich programiere/ schaue Tutorials seit 2 Tagen und hab auch schon selber rumgespeitl nun die Frage
Wieso ist diese } Rot unterstrichen? Wenn ich sie lösche werden 2 weitere darüber rot angestrichen und wenn ich eine Neue Klammer setzte kommen auch Fehlermeldungen!
![]()
Ich hoffe mir kann wer helfenThx