1. 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!

hilfe -- plugin coden

Dieses Thema im Forum "Programmierung" wurde erstellt von AndyCrafty14, 30. Juni 2014.


  1. AndyCrafty14
    Offline

    AndyCrafty14

    Registriert seit:
    7. Januar 2014
    Beiträge:
    4
    Hallo liebe Community,

    Ich bin gerade ein plugin am coden und möchte dass Spieler x mit einem item einen Rechtsknick macht, dass alle Spieler um ihn herum weggeschleudert werden nun habe ich überhaupt keine plan wie ich das anstelle.
    Ich hoffe dass mir jemand helfen kann dennoch wäre es hilfreich wenn ihr mir keinen fertigen code gibt da ich daraus dann selbst nichts lernen kann^^.

    Lg. AndyCrafty14

    P.S: hier mein bisheriger code wie ich dachte dass mit dem rechts klick klappt weiter hab ich es aber nicht Geschafft.

    Code (Text):
    1.     public void playerInteract(PlayerInteractEvent e){
    2.           if(e.getAction().equals(Action.RIGHT_CLICK_BLOCK)){
    3.             if(e.getClickedBlock().getType().equals(Material.BLAZE_ROD)){
    4.               Player p = e.getPlayer();
     
  2. Werbung
    Online

    Werbung

  3. At-M
    Offline

    At-M

    Registriert seit:
    30. März 2012
    Beiträge:
    186
    Minecraft:
    At_M
    Ich kann leider nicht codetechnisch helfen, aber (falls es das alles gibt) würde ich das so machen

    wenn der rechtsklickt, wird auf deiner stelle eine tnt explosion getriggered, die aber keinen player oder umgebungsschaden hat, aber der knockback bleibt
     
  4. AndyCrafty14
    Offline

    AndyCrafty14

    Registriert seit:
    7. Januar 2014
    Beiträge:
    4
    das werde ich gleich mal ausprobieren und danke für die Idee
    Lg. Andy
     
  5. Zuletzt von einem Moderator bearbeitet: 30. Juni 2014
  6. DBX12
    Offline

    DBX12

    Registriert seit:
    25. Juli 2012
    Beiträge:
    17
    Minecraft:
    DBX12
    Fände ich persönlich zwar cooler, wenn alles wegfliegt (wie bei einer Explosion), aber muss er TE wissen.
    Die Idee mit dem TNT ist zwar gut, aber der TNT-Sound ist halt noch da, den würde ich nicht wollen. Meine Idee wäre, alle nahen Entities zu "sammeln" und dann für jede den Vektor von mir zur Entity holen und ggf. mit einem Faktor x verlängern und eine entsprechende Beschleunigung setzen und anschließend als Bewegungsvektor angeben. So etwas habe ich schon mit Items gemacht und die dann "verschossen", da Spieler und Items beides Entities sind, sollte es klappen. ;)

    LG DBX12
     
  7. GermanUbuntu
    Online

    GermanUbuntu

    Ich weiß nicht wie ihr einen Spieler in die luft schleudert aber so habt ihr alle Spieler die 16 Blöcke vom Player mit dem item entfernt sind.
    Ob es sehr performant ist weiß ich leider nicht

    Code (Text):
    1.  
    2. Player Player = null;//Das ist der Player mit dem Item!
    3.         for(Player p : Bukkit.getOnlinePlayers()){
    4.             if(p.getLocation().distance(Player.getLocation()) <= 16){
    5.                 //Hier müsstest du die Player in die luft bekommen. Die methode dafür kenne ich leider nicht!
    6.             }
    7.         }
    8.  
     
  8. Muchacho LP
    Offline

    Muchacho LP

    Registriert seit:
    12. März 2013
    Beiträge:
    369
    Minecraft:
    ikrumi

    Erstens:
    Code (Text):
    1.  
    2. public void playerInteract(PlayerInteractEvent e){
    3.   if((e.getAction() == Action.RIGHT_CLICK_BLOCK)[COLOR="#FF0000"] || (e.getAction() == Action.RIGHT_CLICK_AIR)[/COLOR]){
    4.     if(e.getClickedBlock().getType().equals(Material.BLAZE_ROD)){
    5.       Player p = e.getPlayer();
    6.  
    Zweitens:
    Code (Text):
    1. player.setVelocity();
    Damit musst du arbeiten, um die Spieler "rumzuwerfen".
     
  9. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.064
    Geschlecht:
    männlich
    Damit der Spieler hochfliegen kann, muss er noch fliegen können. 'setFlying(true)'.
     
  10. h3inz3l
    Offline

    h3inz3l

    Registriert seit:
    12. April 2013
    Beiträge:
    132
    Minecraft:
    h3inz3l
    Nein stimmt nicht, wenn du den Vektor von einem Spieler nimmst, kannst du seine Position und seine Geschwindigkeit in eine bestimmte Richtung setzten und ihn so zum Beispiel hoch in die Luft schleudern und ein paar Blöcke weg
     
  11. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.064
    Geschlecht:
    männlich
    //Berichtigung meines vorherigen: Die Methode von Player, 'setAllowFlight(true)', muss aufgerufen werden, da der Spieler sonst evtl. wegen Fliegen gekickt wird.
     
  12. h3inz3l
    Offline

    h3inz3l

    Registriert seit:
    12. April 2013
    Beiträge:
    132
    Minecraft:
    h3inz3l
    //Berichtigung meines: wenn du das so gemeint hast, dann ja, sollte gemacht werden, sollte aber allerdings nicht der Fall sein, da der Spieler ja wieder runterfällt, sonst müsste man ja beim springen gekickt werden ;)
     
  13. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.064
    Geschlecht:
    männlich
    Sicher ist sicher. Und wenn man mehrfach hintereinander katapultiert wird, wird man normalerweise gekickt. (Ich benutze das ganze bei meinem Plugin [, als Jetpack,] und habe es ausprobiert.)
     
  14. ❤️可愛い❤️
    Offline

    ❤️可愛い❤️

    Registriert seit:
    19. Mai 2014
    Beiträge:
    785
    Geschlecht:
    weiblich
    Einfach einen Verbindungsvektor zwischen dem Spieler mit dem Item und jedem anderen Spieler in der Nähe berechnen und diesen für das Wegschleudern verwenden. Damit es nicht zu dem Problem mit dem Kick kommt setzt du außerdem für jeden Spieler einen Timeout, dass dieser innerhalb der nächsten 2 Sekunden nicht erneut weggeschleudert werden kann. Und wenn du wirklich so viele Spieler auf dem Server hast, dass du angst um die Performance hast, dann prüfe nur die Spieler, die im Minigame sind (ich nehme an es geht um ein Minigame, ansonsten nehm die Spieler der aktuellen Map). Zum Berechnen der Entfernung kannst du dann einfach du einfach die Abstandsmessung von Bukkit verwenden, aber achte darauf dass du mit dem quadrierten Wert arbeitest und nicht die exakte Distanz bestimmst, weil das frisst dann wirklich Taktzyklen. Ansonsten glaub ich Bukkit bringt eh eine Methode mit um die Spieler in einem bestimmten Radius zu bekommen.