• 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!

Benötige kurzen Hinweis bei Minecraft Plugin

Steiniiii

Minecrafter
Registriert
4 Januar 2018
Beiträge
20
Diamanten
0
Hallo miteinander, :)

vorab ich bin Anfänger in der Minecraft Programmierung, die Grundlagen von Java sind mir aber bereits geläufig.

Ich habe mich an ein kleines HealPlugin gesetzt, soweit so gut, funktioniert auch, lediglich gibt es einen Punkt der mich stört :mad:. Ich habe hier Permissions mit eingebaut und zwar die "test.heal.other", hat ein Spieler diese, kann er andere Spieler heilen. Hat er diese nicht soll die Meldung kommen, dass er keine Rechte für den Befehl hat.

Im Ingame Test schaut es aber anders aus:(, hat ein Spieler keine Rechte um einen anderen zu heilen und gibt trotzdem den Befehl /heal [Spielername] ein, kommt nicht die Meldung, dass er keine Rechte hat, sondern die Meldung dass der angegebene Spieler nicht online ist. Das ist mein Problem... Ich denke irgendwo ist ein Drehfehler von der Anordnung, ich finde ihn aber nicht.

Zudem wolle ich wissen, ob mein Schreibstil an sich in Ordnung ist, oder ob hier auch Verbesserungen vorgenommen werden müssen. ;)

Danke schon jetzt für alle konstruktiven Kommentare. :D

################################################################################################################################

package de.Steini.test.commands;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class HealCommand implements CommandExecutor{

@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
if(sender instanceof Player) {
Player player = (Player) sender;
if(args.length == 0) {
if(player.hasPermission("test.heal.self")) {
player.setHealth(20);
player.sendMessage("§2Du hast dich soeben geheilt");

}else
player.sendMessage("§4Du hast für diesen Befehl keine Rechte");

}else if(args.length == 1) {
Player target = Bukkit.getPlayer(args[0]);
if(target !=null) {
if(player.hasPermission("test.heal.other")) {
target.setHealth(20);
target.sendMessage("§2Du wurdest soeben von " + player.getName() + " geheilt");
player.sendMessage("§2Du hast soeben " + player.getName() + " geheilt");
}else
player.sendMessage("§4Du hast für diesen Befehl keine Rechte");

}else
player.sendMessage("Der angegebene Spieler ist nicht online");


}else
player.sendMessage("Um einen anderen Spieler zu heilen gebe /heal [Spielername] ein");

}else
System.out.println("Die Konsole kann diesen Befehle nicht ausführen");
return false;
}
}
 
Registriert
10 Dezember 2017
Beiträge
161
Alter
26
Diamanten
322
Minecraft
DerFrZocker
So, wie es aussieht holst du dir erst den Spieler und schaust ob null ist oder nicht. Und danach erst überprüfst du ob der Spieler die benötigte rechte hat.

Zu deinem Code style würde ich empfehlen das du lange if else Ketten vermeidet z. B.

Code:
package de.Steini.test.commands;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

public class HealCommand implements CommandExecutor{

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

if(! (sender instanceof Player) ) {
sender.sendMessage("Die Konsole kann diesen Befehle nicht ausführe");
return true;
}

Player player = (Player) sender;

if(args.length == 0) {

if(!player.hasPermission("test.heal.self")){
player.sendMessage("§4Du hast für diesen Befehl keine Rechte");
return true;
}

player.setHealth(20);
player.sendMessage("§2Du hast dich soeben geheilt");
return true;

}

if(!player.hasPermission("test.heal.other")) {
player.sendMessage("§4Du hast für diesen Befehl keine Rechte");
return true;
}

Player target = Bukkit.getPlayer(args[0]);
if(target ==null) {
player.sendMessage("Der angegebene Spieler ist nicht online");
return true;
}

target.setHealth(20);

target.sendMessage("§2Du wurdest soeben von " + player.getName() + " geheilt");

player.sendMessage("§2Du hast soeben " + player.getName() + " geheilt");

}
}

So hast du Dan auch einen besseren Überblick über dein Code gerade wenn du noch Nachrichten einbinden willst.

Hinweis der Code wurde am Handy geschrieben.
 

Steiniiii

Minecrafter
Registriert
4 Januar 2018
Beiträge
20
Diamanten
0
Hallo,

vielen Dank für deine Ratschläge, diese haben mir wirklich geholfen und deinen Hinweis, nicht solange If Else Ketten zu bilden, kann ich nun gut nachvollziehen, denn dein Code schaut wesentlich übersichtlicher aus.

Danke!

Gruß
 
Oben