Minecraft : Gamemode Plugin fern Steuerung

  • Gelöst

Registriere dich um viele Vorteile zu genießen! Weniger Werbung, bessere Kommunikation und vieles mehr!

  • Minecraft : Gamemode Plugin fern Steuerung

    Hallo!
    Ich habe probiert ein Gamemode Plugin zu machen, dort soll man aber auch den Gamemode von anderen Spielern steuern können, nur ich bekomme es nicht ganz hin mir im dritten Argument das zu holen was der Spieler im 2 Argument eingegeben hat?
    Kann mir da vielleicht jemand helfen?
    LG Maxi

    Code :

    Quellcode

    1. package Programmieren.EasyGamemode;
    2. import org.bukkit.Bukkit;
    3. import org.bukkit.GameMode;
    4. import org.bukkit.Sound;
    5. import org.bukkit.command.Command;
    6. import org.bukkit.command.CommandExecutor;
    7. import org.bukkit.command.CommandSender;
    8. import org.bukkit.entity.Player;
    9. public class EasyGamemode implements CommandExecutor {
    10. @Override
    11. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    12. Player p = (Player) sender;
    13. String fern = args[0];
    14. Player p1 = Bukkit.getPlayer(fern);
    15. if (args.length == 1) {
    16. if (args[0].equalsIgnoreCase("0")) {
    17. if (p.hasPermission("gamemode.set")) {
    18. p.sendMessage("§7■ §eGamemode §7■ Du bist nun im §aSurvival §7Mode.");
    19. p.setGameMode(GameMode.SURVIVAL);
    20. p.playSound(p.getLocation(), Sound.LEVEL_UP, 3, 1);
    21. } else {
    22. p.sendMessage("§7■ §eGamemode §7■ Keine Rechte.");
    23. p.playSound(p.getLocation(), Sound.ANVIL_LAND, 3, 1);
    24. }
    25. }
    26. if (args[0].equalsIgnoreCase("1")) {
    27. if (p.hasPermission("gamemode.set")) {
    28. p.sendMessage("§7■ §eGamemode §7■ Du bist nun im §aCreative §7Mode.");
    29. p.setGameMode(GameMode.CREATIVE);
    30. p.playSound(p.getLocation(), Sound.LEVEL_UP, 3, 1);
    31. } else {
    32. p.sendMessage("§7■ §eGamemode §7■ Keine Rechte.");
    33. p.playSound(p.getLocation(), Sound.ANVIL_LAND, 3, 1);
    34. }
    35. }
    36. if (args[0].equalsIgnoreCase("2")) {
    37. if (p.hasPermission("gamemode.set")) {
    38. p.sendMessage("§7■ §eGamemode §7■ Du bist nun im §aAdventure §7Mode.");
    39. p.setGameMode(GameMode.ADVENTURE);
    40. p.playSound(p.getLocation(), Sound.LEVEL_UP, 3, 1);
    41. } else {
    42. p.sendMessage("§7■ §eGamemode §7■ Keine Rechte.");
    43. p.playSound(p.getLocation(), Sound.ANVIL_LAND, 3, 1);
    44. }
    45. }
    46. if (args[0].equalsIgnoreCase("3")) {
    47. if (p.hasPermission("gamemode.set")) {
    48. p.sendMessage("§7■ §eGamemode §7■ Du bist nun im §aSpectator §7Mode.");
    49. p.setGameMode(GameMode.SPECTATOR);
    50. p.playSound(p.getLocation(), Sound.LEVEL_UP, 3, 1);
    51. } else {
    52. p.sendMessage("§7■ §eGamemode §7■ Keine Rechte.");
    53. p.playSound(p.getLocation(), Sound.ANVIL_LAND, 3, 1);
    54. }
    55. }
    56. }
    57. if (args.length == 2) {
    58. if (p1.isOnline()) {
    59. if (p.hasPermission("gamemode.setother")) {
    60. if (args[-1].equalsIgnoreCase("0")) {
    61. p1.setGameMode(GameMode.SURVIVAL);
    62. p.sendMessage("§7■ §eGamemode §7■ Der Spieler" + fern
    63. + "§7wurde erfolgreich in den §aSurvival §7Modus gesetzt.");
    64. p1.sendMessage("§7■ §eGamemode §7■ Du bist nun im §aSurvival §7Mode.");
    65. p1.playSound(p1.getLocation(), Sound.LEVEL_UP, 3, 1);
    66. p.playSound(p.getLocation(), Sound.LEVEL_UP, 3, 1);
    67. }
    68. if (args[-1].equalsIgnoreCase("1")){
    69. p1.setGameMode(GameMode.CREATIVE);
    70. p1.sendMessage("§7■ §eGamemode §7■ Du bist nun im §aSurvival §7Mode.");
    71. p.sendMessage("§7■ §eGamemode §7■ Der Spieler" + fern
    72. + "§7wurde erfolgreich in den §aCreative §7Modus gesetzt.");
    73. p1.playSound(p1.getLocation(), Sound.LEVEL_UP, 3, 1);
    74. p.playSound(p.getLocation(), Sound.LEVEL_UP, 3, 1);
    75. }
    76. if (args[-1].equalsIgnoreCase("2")){
    77. p1.setGameMode(GameMode.ADVENTURE);
    78. p1.sendMessage("§7■ §eGamemode §7■ Du bist nun im §aAdventure §7Mode.");
    79. p.sendMessage("§7■ §eGamemode §7■ Der Spieler" + fern
    80. + "§7wurde erfolgreich in den §aAdventure §7Modus gesetzt.");
    81. p1.playSound(p1.getLocation(), Sound.LEVEL_UP, 3, 1);
    82. p.playSound(p.getLocation(), Sound.LEVEL_UP, 3, 1);
    83. }
    84. if (args[-1].equalsIgnoreCase("3")){
    85. p1.setGameMode(GameMode.SPECTATOR);
    86. p1.sendMessage("§7■ §eGamemode §7■ Du bist nun im §aSpectator §7Mode.");
    87. p.sendMessage("§7■ §eGamemode §7■ Der Spieler" + fern
    88. + "§7wurde erfolgreich in den §aSpectator §7Modus gesetzt.");
    89. p1.playSound(p1.getLocation(), Sound.LEVEL_UP, 3, 1);
    90. p.playSound(p.getLocation(), Sound.LEVEL_UP, 3, 1);
    91. }
    92. } else {
    93. p.sendMessage("§7■ §eGamemode §7■ Keine Rechte.");
    94. p.playSound(p.getLocation(), Sound.ANVIL_LAND, 3, 1);
    95. }
    96. } else {
    97. p.sendMessage("§7■ §eGamemode §7■ Der Spieler wurde nicht gefunden.");
    98. p.playSound(p.getLocation(), Sound.ANVIL_LAND, 3, 1);
    99. }
    100. }
    101. if (args.length == 0) {
    102. p.playSound(p.getLocation(), Sound.ANVIL_LAND, 3, 1);
    103. p.sendMessage("§7■ §eGamemode §7■ Verwendung : §e/gm §7< §c0 §7/ §c1 §7/ §c2 §7/ §c3 §7 >.");
    104. }
    105. return false;
    106. }
    107. }
    Alles anzeigen
  • Hallo,
    In einem Array gibt es keinen Negativen Platz also args[-1]. Da musst du genauso args[0] nehmen da du ja die Zahl in deinem Command, wenn du einem anderen Spieler den GameMode setzten willst, an die gleiche stelle schreibst wie wenn du dir selbst den GameMode ändern willst.

    Und um das ganze noch zu vereinfachen kannst du den GameMode mit GameMode.getByValue(int value) bekommen. Und als text gibst du einfach den GameMode Enum Namen aus.
    Lg NoSleep
    Ich würd so gern die Welt verändern, aber Gott gibt mir den Quellcode nicht.
  • NoSleep schrieb:

    Hallo,
    In einem Array gibt es keinen Negativen Platz also args[-1]. Da musst du genauso args[0] nehmen da du ja die Zahl in deinem Command, wenn du einem anderen Spieler den GameMode setzten willst, an die gleiche stelle schreibst wie wenn du dir selbst den GameMode ändern willst.

    Und um das ganze noch zu vereinfachen kannst du den GameMode mit GameMode.getByValue(int value) bekommen. Und als text gibst du einfach den GameMode Enum Namen aus.
    Lg NoSleep
    Außerdem würde ich args[0] erst in den String fern speichern, wenn args.length 2 ist. Ansonsten wird dein Plugin immer wenn du dir z. B. Gamemode 1 geben willst eine Exception auswerfen, da es keinen Spieler mit dem Name 1 gibt.
  • msegbert schrieb:

    Sorry, aber ich verstehe das noch nicht ganz wie ich jetzt richtig mir das 2 Argument also die Gamemode(0,1,2,3) richtig in den Code reinpacke mit dem GameMode.getByValue? LG Maxi @MegaDampfnudel @NoSleep
    Einfach GameMode gm = GameMode.getByValue(Integer.parseInt(args[1])); nach if(args.length == 2) hinzufügen, Player p1 = Bukkit.getPlayer(args[0]); nach if(args.length == 2) packen und dann den GameMode mit p1.setGameMode(gm); setzen.
  • MegaDampfnudel schrieb:

    Ansonsten wird dein Plugin immer wenn du dir z. B. Gamemode 1 geben willst eine Exception auswerfen, da es keinen Spieler mit dem Name 1 gibt.
    Ach, danke, hatte ich übersehen.

    msegbert schrieb:

    Sorry, aber ich verstehe das noch nicht ganz wie ich jetzt richtig mir das 2 Argument also die Gamemode(0,1,2,3) richtig in den Code reinpacke mit dem GameMode.getByValue?
    GameMode.getByValue(int value) gibt einen GameMode zurück also GameMode gameMode = GameMode.getbyValue(0);. Da würde z.B. GameMode.SURVIVAL rauskommen.

    Ich nehme einmal an das der command so aussieht: /gamemode <mode> [Spieler]. Daher musst du den Spieler p1 den du oben definiert hast, mit dem 1. argument füttern. Also Player p1 = Bukkit.getPlayer(args[1]) weil args[0] ist schon der GameMode. Den Spieler würde ich dann auch erst unten definieren wo du abfragst ob die Argumenten länge gleich 2 ist.

    //Edit:
    Da war wer schneller ;) @MegaDampfnudel
    Ich würd so gern die Welt verändern, aber Gott gibt mir den Quellcode nicht.