• 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

AndyCrafty14

Minecrafter
Registriert
7 Januar 2014
Beiträge
4
Diamanten
0
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:
    public void playerInteract(PlayerInteractEvent e){ 
    	  if(e.getAction().equals(Action.RIGHT_CLICK_BLOCK)){ 
    	    if(e.getClickedBlock().getType().equals(Material.BLAZE_ROD)){ 
    	      Player p = e.getPlayer();
 

At-M

Miner
Registriert
30 März 2012
Beiträge
186
Diamanten
0
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
 

AndyCrafty14

Minecrafter
Registriert
7 Januar 2014
Beiträge
4
Diamanten
0
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

das werde ich gleich mal ausprobieren und danke für die Idee
Lg. Andy
 

DBX12

Minecrafter
Registriert
25 Juli 2012
Beiträge
17
Diamanten
0
Minecraft
DBX12
Problematisch ist nur, dass auch andere Wesen berücksichtigt werden. Diese müstest du filtern.

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
 
G

GermanUbuntu

Guest
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

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:
Player Player = null;//Das ist der Player mit dem Item!
    	for(Player p : Bukkit.getOnlinePlayers()){
			if(p.getLocation().distance(Player.getLocation()) <= 16){
				//Hier müsstest du die Player in die luft bekommen. Die methode dafür kenne ich leider nicht!
			}
		}
 

Muchacho LP

Braumeister
Registriert
12 März 2013
Beiträge
369
Diamanten
0
Minecraft
ikrumi
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:
    public void playerInteract(PlayerInteractEvent e){ 
    	  if(e.getAction().equals(Action.RIGHT_CLICK_BLOCK)){ 
    	    if(e.getClickedBlock().getType().equals(Material.BLAZE_ROD)){ 
    	      Player p = e.getPlayer();


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

h3inz3l

Schafhirte
Registriert
12 April 2013
Beiträge
132
Diamanten
0
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
 

h3inz3l

Schafhirte
Registriert
12 April 2013
Beiträge
132
Diamanten
0
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 ;)
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
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.
 
Oben