H
HamsterCrack
Unregistriert
Ja Bukkit blockt den Spieler der über BungeeCord hergeschickt wird und daher wird der Spieler über BungeeCord wieder auf den ursprünglichen Server geschickt das willst du doch erreichen?
Beim Switchen benutzt du das ServerSwitchEvent.Moin Leute,
ich habe eine Frage zu BungeeCord Plugins.
Wie kann ich abfragen ob ein Server vom BC Netzwerk voll ist?
Gruß,
-lusu007
if(BungeeCord.getInstance().getServerInfo("server").getPlayers().size() >= 24) {
}
Der Fehler ist eindeutig, klar man übersieht das gerne mal, alles kein Problem.Hey, ich habe ein Soup plugin geschrieben.
Code:@EventHandler public void onInteract(PlayerInteractEvent e) { Player p = e.getPlayer(); if(e.getAction() == Action.RIGHT_CLICK_AIR | e.getAction() == Action.RIGHT_CLICK_BLOCK) { if(e.getMaterial().equals(Material.MUSHROOM_SOUP)){ if(Main.soupingame.contains(e.getPlayer().getName())){ if(p.getHealth() < 20){ if(p.getHealth() >= 16){ p.setHealth(20); ItemStack bowl = new ItemStack(Material.BOWL); p.setItemInHand(bowl); } else{ int health = (int) p.getHealth(); p.setHealth(health + 4); ItemStack bowl = new ItemStack(Material.BOWL); p.setItemInHand(bowl); } } } else{ e.getPlayer().sendMessage(Main.error); } } } }
Nun habe ich das Problem, wenn ich die Muschroom Bowl rechtsklicke und dabei in die Luvt zeige, kommen nur Herzen hinzu und die Bowl wird nicht ersetze. Aber wenn ich auf den Boden (Block) zeige funktioniert alles.
Was habe ich falsch gemacht?
Spätestens hier hat man den Fehler.. auch wenn man das "bitweise" weglässt, kommt man drauf.Ich würde dir raten, nicht das bitweise "oder" zu verwenden.
Gesagt - Getan.Könnte es daran liegen, das setItemInHand() nicht geht, wenn man in die Luft pointed? Das sollte das problem sein. Wie kann ich das lösen?
Nun, da man in 10 Minuten kein Java lernt, schreibt man natürlich es geht nicht. Wie auch, wenn man es nicht versteht, was eigentlich das Grundlegende ist.@geilNico Zitierst meine Nachricht, aber ignorierst den Inhalt völlig? Cool.
Nun, da er einen vorgefertigten Code provozieren will, hofft er hiermit drauf, was aber nach hinten losging und er nun lächerlich dasteht.Dein Tipp bringt mir auch nichts. paasiert das gleiche.
Hier wird er auf seine Non-Fähigkeit angesprochen und da es offensichtlich stimmt, wird es ignoriert, da man ja ach so toll ist.Hast ihn wahrscheinlich nicht mal verstanden.
Beim Switchen benutzt du das ServerSwitchEvent.
Beim Joinen des "Netzwerkes" benutzt du das LoginEvent oder PreLoginEvent. Was du eben erreichen willst.
So müsstest du die Abfrage machen:
Es wäre aber viel sinnvoller, wenn du das eben durch Bukkit machst. Es kommt drauf an, was du überhaupt willst.Code:if(BungeeCord.getInstance().getServerInfo("server").getPlayers().size() >= 24) { }
public class Gamemode extends JavaPlugin {
@Override
public void onEnable() {
System.out.println("[Simple Gamemode] Plugin started!");
loadConfig();
}
@Override
public void onDisable() {
System.out.println("[Simple Gamemode] Plugin deactivated!");
}
public boolean onCommand(CommandSender sender,Command cmd, String cmdlabel, String[] args ) {
Player p = (Player) sender;
if(cmd.getName().equalsIgnoreCase("heal")) {
String msg = getConfig().getString("heal.msg");
p.setHealth(20.0);
p.sendMessage(ChatColor.translateAlternateColorCodes('&', msg));
return true;
}
return false;
}
public void loadConfig() {
getConfig().options().copyDefaults(true);
saveConfig();
}
}
name: SimpleGamemode
version: 1.0
author: Lel
main: me.lel.simplegm.Gamemode
commands:
heal:
description: Heal
usage: </command>
heal:
msg: '&6Du wurdest geheilt!'
Wie wäre es mit dem StackTrace? Der sagt dir auf die Zeile genau wo und was der Fehler istDas Problem ist aber nun, dass wenn ich /heal eingebe, werde ich zwar geheilt aber die Nachricht wird nicht angezeigt und es erscheint: An internal error occured while attemting to perform this command
Ich hoffe mir kann jemand sagen, wo das Problem liegt
public class Gamemode extends JavaPlugin implements CommandExecutor
public void onEnable() {
// ...
getCommand("heal").setExecutor(this);
}
if (sender instanceof Player) {
Player p = (Player) sender;
// do your stuff
} else {
sender.sendMessage("Only players can use that!");
}
Man braucht keinen CommandExecutor in der Hauptklasse. Es geht auch, wenn du if(cmd.getname() ... ) machst & sie in plugin.yml einträgst.Wie wäre es mit dem StackTrace? Der sagt dir auf die Zeile genau wo und was der Fehler ist
//Edit
Ist gar nicht nötig. Der Fehler ist, dass du vergessen hast, den CommandExecutor zu registrieren.
&PHP:public class Gamemode extends JavaPlugin implements CommandExecutor
PHP:public void onEnable() { // ... getCommand("heal").setExecutor(this); }
Außerdem darfst du den CommandSender doch nicht einfach so zum Spieler casten. Was, wenn die Konsole den Command ausführt?
PHP:if (sender instanceof Player) { Player p = (Player) sender; // do your stuff } else { sender.sendMessage("Only players can use that!"); }
Des Weiteren gibst du false zurück, wenn ein Command eingegeben wird, welcher nicht "heal" ist. Das bedeutet jedes mal, wenn jemand einen Command eingibt, der nicht "heal" lautet, wird demjenigen automatisch angezeigt, wie er den command heal zu benutzen hat.
Probier mal:Kann mir jemand helfen?
Ich habe ein kleines Plugin mit Config geschrieben, aber irgendwie funktioniert das mit den Texten nicht richtig!
Hier mein Code:
Code:public class Gamemode extends JavaPlugin { @Override public void onEnable() { System.out.println("[Simple Gamemode] Plugin started!"); loadConfig(); } @Override public void onDisable() { System.out.println("[Simple Gamemode] Plugin deactivated!"); } public boolean onCommand(CommandSender sender,Command cmd, String cmdlabel, String[] args ) { Player p = (Player) sender; if(cmd.getName().equalsIgnoreCase("heal")) { String msg = getConfig().getString("heal.msg"); p.setHealth(20.0); p.sendMessage(ChatColor.translateAlternateColorCodes('&', msg)); return true; } return false; } public void loadConfig() { getConfig().options().copyDefaults(true); saveConfig(); } }
Hier die plugin.yml
Code:name: SimpleGamemode version: 1.0 author: Lel main: me.lel.simplegm.Gamemode commands: heal: description: Heal usage: </command>
Und noch die config.yml:
Code:heal: msg: '&6Du wurdest geheilt!'
Das Problem ist aber nun, dass wenn ich /heal eingebe, werde ich zwar geheilt aber die Nachricht wird nicht angezeigt und es erscheint: An internal error occured while attemting to perform this command
Ich hoffe mir kann jemand sagen, wo das Problem liegt
LG Lel
String msg = getConfig().getString("heal.msg");
msg = ChatColor.translateAlternateColorCodes('&', msg);
p.setHealth(20.0D);
p.sendMessage(msg);
[20:29:05 ERROR]: null
org.bukkit.command.CommandException: Unhandled exception executing command 'heal
' in plugin SimpleGamemode v1.0
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spi
got18.jar:git-Spigot-da32fe1-df0b4c1]
at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:18
1) ~[spigot18.jar:git-Spigot-da32fe1-df0b4c1]
at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCommand(CraftServe
r.java:643) ~[spigot18.jar:git-Spigot-da32fe1-df0b4c1]
at net.minecraft.server.v1_8_R1.PlayerConnection.handleCommand(PlayerCon
nection.java:1083) [spigot18.jar:git-Spigot-da32fe1-df0b4c1]
at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java
:918) [spigot18.jar:git-Spigot-da32fe1-df0b4c1]
at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java
:26) [spigot18.jar:git-Spigot-da32fe1-df0b4c1]
at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java
:53) [spigot18.jar:git-Spigot-da32fe1-df0b4c1]
at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [spi
got18.jar:git-Spigot-da32fe1-df0b4c1]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [
?:1.7.0_72]
at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.7.0_72]
at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:6
86) [spigot18.jar:git-Spigot-da32fe1-df0b4c1]
at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:3
16) [spigot18.jar:git-Spigot-da32fe1-df0b4c1]
at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:6
27) [spigot18.jar:git-Spigot-da32fe1-df0b4c1]
at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java
:530) [spigot18.jar:git-Spigot-da32fe1-df0b4c1]
at java.lang.Thread.run(Unknown Source) [?:1.7.0_72]
Caused by: java.lang.NoClassDefFoundError: net/md_5/bungee/api/ChatColor
at me.texasfons.simplegm.Gamemode.onCommand(Gamemode.java:62) ~[?:?]
at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spi
got18.jar:git-Spigot-da32fe1-df0b4c1]
... 14 more
Du darfst nich die ChatColor der BungeeAPI importieren xD und bitte lerne Stacktraces zu lesen.@iGamePlayHD Funktioniert leider immer noch nicht :/
Hier der Fehler in der Konsole:
Code:[20:29:05 ERROR]: null org.bukkit.command.CommandException: Unhandled exception executing command 'heal ' in plugin SimpleGamemode v1.0 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:46) ~[spi got18.jar:git-Spigot-da32fe1-df0b4c1] at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:18 1) ~[spigot18.jar:git-Spigot-da32fe1-df0b4c1] at org.bukkit.craftbukkit.v1_8_R1.CraftServer.dispatchCommand(CraftServe r.java:643) ~[spigot18.jar:git-Spigot-da32fe1-df0b4c1] at net.minecraft.server.v1_8_R1.PlayerConnection.handleCommand(PlayerCon nection.java:1083) [spigot18.jar:git-Spigot-da32fe1-df0b4c1] at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java :918) [spigot18.jar:git-Spigot-da32fe1-df0b4c1] at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java :26) [spigot18.jar:git-Spigot-da32fe1-df0b4c1] at net.minecraft.server.v1_8_R1.PacketPlayInChat.a(PacketPlayInChat.java :53) [spigot18.jar:git-Spigot-da32fe1-df0b4c1] at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [spi got18.jar:git-Spigot-da32fe1-df0b4c1] at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [ ?:1.7.0_72] at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.7.0_72] at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:6 86) [spigot18.jar:git-Spigot-da32fe1-df0b4c1] at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:3 16) [spigot18.jar:git-Spigot-da32fe1-df0b4c1] at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:6 27) [spigot18.jar:git-Spigot-da32fe1-df0b4c1] at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java :530) [spigot18.jar:git-Spigot-da32fe1-df0b4c1] at java.lang.Thread.run(Unknown Source) [?:1.7.0_72] Caused by: java.lang.NoClassDefFoundError: net/md_5/bungee/api/ChatColor at me.texasfons.simplegm.Gamemode.onCommand(Gamemode.java:62) ~[?:?] at org.bukkit.command.PluginCommand.execute(PluginCommand.java:44) ~[spi got18.jar:git-Spigot-da32fe1-df0b4c1] ... 14 more
...geh einfach ganz nach oben lösch den ChatColor import und mach stattdessen "import org.bukkit.ChatColor;"
Willst du darauf hinaus dass wenn sie nicht existiert sie sich auto erstellt?wie checke ich ob eine tabelle in mysql datenbank existiert?? also nicht was darin sondern nur die tabelledanke ;D
ne, dann hötte ich das ja gesagtWillst du darauf hinaus dass wenn sie nicht existiert sie sich auto erstellt?
wie checke ich ob eine tabelle in mysql datenbank existiert?? also nicht was darin sondern nur die tabelledanke ;D
Naja ich mach meine Befehle auch immer ohne der überprüfung da ich davon ausgehe das ich nicht die Befehle in der Console benutzen möchteAußerdem darfst du den CommandSender doch nicht einfach so zum Spieler casten. Was, wenn die Konsole den Command ausführt?
Ich mach das einfach zur Vollständigkeit, da es meiner Meinung nach einfach dazu gehört c:Naja ich mach meine Befehle auch immer ohne der überprüfung da ich davon ausgehe das ich nicht die Befehle in der Console benutzen möchte
Sinnvoll ists nur wenn man diese veröffentlicht![]()
Wenn du es für dich selbst machst, dann schon.Ich mach das einfach zur Vollständigkeit, da es meiner Meinung nach einfach dazu gehört c:
Man kann nie davon ausgehen, dass der Benutzer dein Plugin "richtig" verwendet c:
Naja ich mach meine Befehle auch immer ohne der überprüfung da ich davon ausgehe das ich nicht die Befehle in der Console benutzen möchte
Sinnvoll ists nur wenn man diese veröffentlicht![]()
Falsch... Das wäre schlechter Code. Du kannst nicht einfach was zu etwas casten, wenn es die Möglichkeit gibt, dass es das nicht ist. Selbst wenn man das nicht vor hat ist es trotzdem unsauberer Code.Eigentlich unnötig..