Wie kann man beim Minecraft Plugin programmieren einen Code erstellen, wo alle Spieler auf dem Server fliegen können?

7 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
if (cmd.getName().equalsIgnoreCase("fly")) {
  if (p.hasPermission("fly.execute")) {
    Player p = (Player) sender;
    if (args.length == 1) {
      Player pl = Bukkit.getPlayer(args[0]);
      if (pl != null) {                          
        if (pl.getAllowFlight()) { 
          pl.setAllowFlight(false);
          p.sendMessage(pl.getName() + " kann jetzt nicht mehr fliegen.");            
          pl.sendMessage("Du kannst jetzt nicht mehr fliegen.");                
        }            
        else {                   
          pl.setAllowFlight(true);
          p.sendMessage("pl.getName() + "kann jetzt fliegen.");                     
          pl.sendMessage("Du kannst jetzt fliegen.");
        }               
      } 
      else {                     
        p.sendMessage("Dieser Spieler ist nicht online!");
      }                  
    } 
    else {                     
      if (p.getAllowFlight()) {
        p.setAllowFlight(false);                           
        p.sendMessage("Du kannst jetzt nicht mehr fliegen.");
      }                  
      else {
        p.setAllowFlight(true);
        p.sendMessage("Du kannst jetzt fliegen.");
      }              
    }            
  }           
  else {                    
    p.sendMessage("Keine Berechtigung);
}

(Ich habe den Code nicht getestet)

Mit dem Befehl "/fly" kann man sich selbst fliegen lassen bzw, es wieder deaktivieren. Wenn man "/fly <Spieler>" eingibt, kann man einem anderen Spieler das Fliegen aktivieren bzw deaktivieren.
Benötigt wird dafür das Recht "fly.execute".

Du musst aber noch daran denken, dass du beim PlayerQuitEvent die beiden Zeilen

e.getPlayer().setFlying(false);
e.getPlayer().setAllowFlight(false); 

einträgst, sonst können die Spieler auch nach einem rejoin immer noch fliegen.

Woher ich das weiß:Hobby – Langjährige Programmiererfahrung
Diegi07 
Fragesteller
 02.08.2019, 08:45

Und wie kann man es machen wenn man /booster fly eingibt, dass dann für alle auf dem Server fliegen an ist? Vielen Dank im Vorheraus!

0
TheHunter147  02.08.2019, 08:47
@Diegi07

ganz einfach:

statt

p.setAllowFlight(true);

musst du

for (Player all : Bukkit.getOnlinePlayers()) {
  all.setAllowFlight(true);
}

eingeben. Und beim deaktivieren eben dasselbe mit "setAllowFlight(false);"

Übrigens: Falls die Spieler direkt fliegen sollen (und nicht erst nach einem Doppelsprung), kannst du dazu noch

p.setFlying(true);

eingeben.

0
Diegi07 
Fragesteller
 02.08.2019, 08:47

Danke, Danke, vielen Dank! Endlich konnte mal jemand meine Frage richtig beantworten!

1
ITHelfer  02.08.2019, 09:11

Wie wäre es, wenn man vorher erst mal abfragt wer diesen Befehl ausführt ob es die Console oder ein Spieler ist um unnötige Fehler zu vermeiden?

0
TheHunter147  02.08.2019, 09:14
@ITHelfer

Jep, das wäre gar nicht so verkehrt.

Außerdem war es total dumm von mir erst die Permission von "p" abzufragen, und DANN erst p zu definieren... Ist noch früh am Morgen^^

0
TheHunter147  02.08.2019, 10:25
@TheHunter147

Und ein Anführungszeichen oben fehlt auch noch bei der letzten Ausgabe "Keine Berechtigung".. Ist dem Fragesteller aber bestimmt selbst aufgefallen ^^

Vielleicht hätte ich den Code erstmal ganz durchlesen sollen, bevor ich ihn abschicke :D

0
TheHunter147  02.08.2019, 10:30
@TheHunter147

..... eine geschweifte Klammer zu wenig am Ende ..... ich glaub ich leg mich wieder hin.. bin noch nicht wach :D

0
Endivie04  02.08.2019, 11:20
Player p = (Player) sender;

Davor gehört eine Abfrage ob der CommandSender überhaupt ein Spieler ist

0
TheHunter147  02.08.2019, 11:31
@Endivie04

hab ich doch schon geschrieben in den Kommentaren. Ist mir also bereits aufgefallen. Ich hab den code halt eben schnell runtergeschrieben, ohne ihn nochmal durchzulesen. Da kommt sowas halt vor.
Es fehlt auch eine geschweifte Klammer am Ende und ein Anführungszeichen oben bei der letzten Ausgabe.

1

Also... Wenn du so etwas simples nicht hinbekommst würde ich lieber einen Dev dafür anheuern. Es gibt im übrigen sogar welche, die es kostenlos machen.

Wenn du es unbedingt selbst machen willst würde ich dir raten zuerst die Grundkenntnisse von Java zu lernen und sich dann mit Plugins auseinandersetzen.

Die for-Schleife gehört nämlich zu den Grundkenntnissen und Bukkit.getOnlinePlayers() und setAllowflight() bzw. setFlying() sollte man auch schon ziemlich schnell kennen

Kleiner Tipp: Google danach

Wie schon die anderen geantwortet haben, machst du dich mit dieser Frage eher lächerlich, du willst etwas Programmieren, aber den fertigen Code bekommen? Noch dazu bei so etwas sehr simplen wie /fly... wenn das jeder machen darf, musst du noch nichtmal rechte etc. einfügen...

Suche nach einem Tutorial zu Mc Plugins Programmieren. Da wird es in den ersten Folgen als erstes erklärt. Das schafft jeder ohne Hilfe...

Wie gesagt, denke nicht das du hier eine Person findest, der sich damit auskennt und dir den fertigen Code gibt...

Woher ich das weiß:Recherche

Ach herrje.. jz kommt mein Wissen über die 7 Jahren in Minecraft an :)

Also.. du hast einen MC-Server vermute ich mal aber willst dass alle Spieler auf dem Server fliegen können. Da gibts einen File namens server.properties oder config.yml oder so ist standartmäßig schon da.

Irgendwo sollte "allow-flight=false" oder true stehen. Oder auch fly= blabla

Stellst dann auf true. Jetzt kann jeder Spieler fliegen.

Du kannst auch wenn da es nicht zu finden ist, es auch in den config einfügen.

Da musst du nix grobes machen. :)

Woher ich das weiß:eigene Erfahrung
Diegi07 
Fragesteller
 02.08.2019, 07:46

Ja, ich will ein PLUGIN programmieren mit dem man zb. /booster fly on macht und dann ist fliegen auf dem Server an und wenn man /booster fly off macht ist er aus

0
Tutrawail  02.08.2019, 07:48
@Diegi07

aber wenn du schon programmieren kannst, dann klappt es doch evtl. mit dem plugin. ich meine ist ja eig nur ein command zum eingeben und dann machst du evtl. so dass wenn man es eingibt, die konsole /fly (Playername) eingibt.

0
verreisterNutzer  02.08.2019, 07:49
@Diegi07

Ich will, ich will, ich will.. na dann fang mal an zu lernen. In meiner FA habe ich dir eindeutig erklärt, wie das mit dem Programmieren funktioniert, du musst sie nur noch lesen (Annahme nicht notwendig).

1
Diegi07 
Fragesteller
 02.08.2019, 07:51

Ich will aber wissen, was der Code in Eclipse ist damit alle Spieler auf dem Server fliegen können. Trotzdem danke für deine Antwort!

0
verreisterNutzer  02.08.2019, 07:57
@Diegi07

So funktioniert das nicht - kannst du nicht lesen?

Du willst Code? Dann bezahl einen Entwickler dafür, ansonsten lerne es über viele Jahre hinweg selbständig.

1
Tutrawail  02.08.2019, 07:59
@Diegi07

bevor du aber programmierst solltest du aber programmieren lernen ist einfacher

0
verreisterNutzer  02.08.2019, 08:06
@Tutrawail

99% all jener, die solche Fragen stellen, wie dieser Kandidat, sind unbelehrbar. Sie wollen Minecraft-Plugins, Discord-Bots und Sonstiges "entwickeln", aber lernen kommt für sie nicht in Frage. Dabei ist es egal, auf welche Art und Weise man versucht, es ihnen zu erklären, es kommt entweder gar nicht an, oder geht direkt durch das Hohle im Kopf.

1

Kannst du nicht auch per command Block für alle Spieler den game Mode ändern?

Diegi07 
Fragesteller
 02.08.2019, 07:39

Ja, aber es ist gefährlich auf einen Server wie Griefergames einen Command block hinzusetzen, weil wenn ein Hacker daraufkommt und den Command block findet sind wir am Ende. Deswegen will ich ein Plugin dafür programmieren. Trotzdem Danke!

0
nosaj  02.08.2019, 07:40
@Diegi07

Ja gut, dass war halt die beste Möglichkeit die mir so spontan einfiel. Ansonsten schau doch mal bei anderen plugins die soetwws verwenden worüber die das machen. :)

0
RentedDog3942  02.08.2019, 08:00
@Diegi07

Wenn du auf einem Fremdserver spielst wirst du auch kein Plugin installieren können ohne den PC des Besitzers zu hacken, auf einem Privatserver kannst dz auch einfach jedem Spieler Creative geben.

0
User339312  02.08.2019, 09:39
@Diegi07

Schon mal dran gedacht, dass die Videos von Typen wie Abgegrieft oder SkyGuy fake sind und ein Spieler ohne Kreativmodus und Operatorrechten nichts mit denen anfangen kann, auch wenn es ein "Hacker" ist.

0