Coding mit Java | Java-basierten APIs

  • Ersteller Ersteller ij9F_i0FaF-d9lrDSDDpDbfo
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
Also, habe sie noch nie benutzt (mangels Java 8, hatte noch 7 #blame)
Wenn ich also zum Beispiel eine neuen Thread erstellen möchte, muss ich ja normalerweise
Code:
Thread t = new Thread(new Runnable(){
   @Override
   etc
}
);
machen.
Wie mache ich das mit einer Lambda Expression? Habe zwar n paar Sachen gefunden, da stand es aber jedes Mal anders :) und das verwirrt ^^
 
Das was du da schreibst sind Logische Operatoren(ich nenne sie jetzt einfach mal so ^^).
Lambda Expressions sind mit -> oder :: wenn ich es jetzt richtig weiß :O



Danke :)
Die Methode muss ich dann nicht mehr schreiben oder? Also nur den Method-Body ?
Jo, ich weiß^^ Hab gerade gegooglet "Lambda Expressions", erstes Ergebnis geöffnet, und habe richtig viele dieser Zeichen gesehen xD Nicht lange rumgelesen, einfach gefragt (kb zu lesen :P)
 
Das was du da schreibst sind Logische Operatoren(ich nenne sie jetzt einfach mal so ^^).
Lambda Expressions sind mit -> oder :: wenn ich es jetzt richtig weiß :O



Danke :)
Die Methode muss ich dann nicht mehr schreiben oder? Also nur den Method-Body ?
Nein, genau das ist ja das gute an Java 8 ;)
Nennt sich funktionales Interface, d.h. eine einzige zu implementierende Methode^^
 
Hi,
ich habe ein Problem man soll mit einen Befehl (/Effects) in ein virtuelles Inventar kommen und wenn man den Dia Helm auswählt und sich bewegt (PlayerMoveEvent) kommen Particle.Wie soll ich das jetz einfügen?Habe schon einen Angefangenen Code:

package Particle;

import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;



public class Admins implements Listener{

@EventHandler
public void (InventoryClickEvent event) {
Player p = (Player) event.getWhoClicked();

if(event.getInventory().getName().equalsIgnoreCase("Effects")) {
event.setCancelled(true);




if(event.getCurrentItem().getType() == Material.DIAMOND_HELMET) {

}
}
}


}



Den Particle Code:


@EventHandler
public void onMove(PlayerMoveEvent e) {
Player p = e.getPlayer();
ParticleEffect.RED_DUST.display(p.getLocation(), 1, 1, 1, 1, 15);


}


EDIT:
Die Main wo man in das Inventar reinkommt habe ich natürlich schon.
 
Hi,
ich habe ein Problem man soll mit einen Befehl (/Effects) in ein virtuelles Inventar kommen und wenn man den Dia Helm auswählt und sich bewegt (PlayerMoveEvent) kommen Particle.Wie soll ich das jetz einfügen?Habe schon einen Angefangenen Code:

package Particle;

import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;



public class Admins implements Listener{

@EventHandler
public void (InventoryClickEvent event) {
Player p = (Player) event.getWhoClicked();

if(event.getInventory().getName().equalsIgnoreCase("Effects")) {
event.setCancelled(true);




if(event.getCurrentItem().getType() == Material.DIAMOND_HELMET) {

}
}
}


}



Den Particle Code:


@EventHandler
public void onMove(PlayerMoveEvent e) {
Player p = e.getPlayer();
ParticleEffect.RED_DUST.display(p.getLocation(), 1, 1, 1, 1, 15);


}


EDIT:
Die Main wo man in das Inventar reinkommt habe ich natürlich schon.

Ich schreibe jetzt alles aus dem Kopf.

Es wäre gut, wenn du eine ArrayList verwendest.
Erstelle sie mit: ArrayList<String> effectsplayer = new ArrayList<String>();

Inventory inv = null;

Bukkit.createInventory(null, 27, "§cEffecte");

if(event.getInventory().getName().equalsIgnoreCase("Effecte")) {
if(event.getCurrentItem().getType() == Material.DIAMOND_HELMET) {
effectsplayer.add(p.getName());

}


}

Danach kannst du beim MoveEvent eine Abfrage machen, ob der Spieler in der ArrayList drinnen ist: if(effectsplayer.contains(p.getName()) {

Reihenfolge bin ich mir nicht ganz sicher, müsste aber so gehen. Vergiss die kleinen Sachen nicht, wie openInventory, closeInventory, wenn du noch was anderes einbauen willst.

LG
 
  • Like
Reaktionen: Tobicraftet
ich habe ein Problem man soll mit einen Befehl (/Effects) in ein virtuelles Inventar kommen und wenn man den Dia Helm auswählt und sich bewegt (PlayerMoveEvent) kommen Particle.Wie soll ich das jetz einfügen?Habe schon einen Angefangenen Code:

package Particle;

import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;



public class Admins implements Listener{

@EventHandler
public void (InventoryClickEvent event) {
Player p = (Player) event.getWhoClicked();

if(event.getInventory().getName().equalsIgnoreCase("Effects")) {
event.setCancelled(true);




if(event.getCurrentItem().getType() == Material.DIAMOND_HELMET) {

}
}
}


}



Den Particle Code:


@EventHandler
public void onMove(PlayerMoveEvent e) {
Player p = e.getPlayer();
ParticleEffect.RED_DUST.display(p.getLocation(), 1, 1, 1, 1, 15);


}


EDIT:
Die Main wo man in das Inventar reinkommt habe ich natürlich schon.
Bin gerade nur am iPad online, deswegen kann ich nicht mit sauberem Code Antworten.
Wenn ich das jetzt richtig verstanden habe, willst du, dass - immer wenn der Spieler sich bewegt ein Partikel bei der Position des Spielers gezeigt wird.

Bitte beachte - Falls es Fehler gibt, ich habe das gerade ohne Autocomplete oder Fehleranzeige im Foreneditor mit der Ipad Autokorrektur geschrieben ;)

Außerdem kann man das, was ich gemacht habe nicht objektorientiert nennen, aber da ich nicht weiß, wie gut du dich mit Java auskennst und es so schneller und platzsparender zu Lösen ist, habe ich es so gemacht.
Ich hätte dir auch noch ein User-Objekt machen können aber für ein Attribut lohnt sich das nicht wirklich ;)

Hier der Code:

PHP:
//Packagenamen schreibt man normalerweise klein und im Format endung.deineinternetadresse.projekt falls du keine Internetseite hast : me.deinname.projekt
package Particle;

import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;



public class Admins implements Listener{

//Wer hat einen effekt? wird nach einem Reload wieder gelöscht
public static HashMap<UUID,PotionEffect> effekte = new HashMap<UUID,PotionEffect>();
@EventHandler
//Methoden müssen einen Namen haben :)
public void onInventoryClick(InventoryClickEvent event) {
Player p = (Player) event.getWhoClicked();

if(event.getInventory().getName().equalsIgnoreCase("Effects")) {
event.setCancelled(true);




if(event.getCurrentItem().getType() == Material.DIAMOND_HELMET) {
//Hier wird der Spieler zur HashMap hinzugefügt
effekte.put(event.getWhoClicked().getUniqueId(),deingewünschterPotionEffect);
//Inventar schließen
e.getWhoClicked().closeInventory();
 
}
}
}


}



Den Particle Code:
@EventHandler
public void onMove(PlayerMoveEvent e) {
//Überprüfen: Hat Spieler Effekt?
Player p = e.getPlayer();
ParticleEffect pe = effekte.get(p.getUniqueId());
if(pe==null){
  return;
}
//Effekt wird angezeigt
pe.display(p.getLocation(), 1, 1, 1, 1, 15);


}
 
  • Like
Reaktionen: Tobicraftet
Ich schreibe jetzt alles aus dem Kopf.

Es wäre gut, wenn du eine ArrayList verwendest.
Erstelle sie mit: ArrayList<String> effectsplayer = new ArrayList<String>();

Inventory inv = null;

Bukkit.createInventory(null, 27, "§cEffecte");

if(event.getInventory().getName().equalsIgnoreCase("Effecte")) {
if(event.getCurrentItem().getType() == Material.DIAMOND_HELMET) {
effectsplayer.add(p.getName());

}


}

Danach kannst du beim MoveEvent eine Abfrage machen, ob der Spieler in der ArrayList drinnen ist: if(effectsplayer.contains(p.getName()) {

Reihenfolge bin ich mir nicht ganz sicher, müsste aber so gehen. Vergiss die kleinen Sachen nicht, wie openInventory, closeInventory, wenn du noch was anderes einbauen willst.

LG
Bin gerade nur am iPad online, deswegen kann ich nicht mit sauberem Code Antworten.
Wenn ich das jetzt richtig verstanden habe, willst du, dass - immer wenn der Spieler sich bewegt ein Partikel bei der Position des Spielers gezeigt wird.

Bitte beachte - Falls es Fehler gibt, ich habe das gerade ohne Autocomplete oder Fehleranzeige im Foreneditor mit der Ipad Autokorrektur geschrieben ;)

Außerdem kann man das, was ich gemacht habe nicht objektorientiert nennen, aber da ich nicht weiß, wie gut du dich mit Java auskennst und es so schneller und platzsparender zu Lösen ist, habe ich es so gemacht.
Ich hätte dir auch noch ein User-Objekt machen können aber für ein Attribut lohnt sich das nicht wirklich ;)

Hier der Code:

PHP:
//Packagenamen schreibt man normalerweise klein und im Format endung.deineinternetadresse.projekt falls du keine Internetseite hast : me.deinname.projekt
package Particle;

import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;



public class Admins implements Listener{

//Wer hat einen effekt? wird nach einem Reload wieder gelöscht
public static HashMap<UUID,PotionEffect> effekte = new HashMap<UUID,PotionEffect>();
@EventHandler
//Methoden müssen einen Namen haben :)
public void onInventoryClick(InventoryClickEvent event) {
Player p = (Player) event.getWhoClicked();

if(event.getInventory().getName().equalsIgnoreCase("Effects")) {
event.setCancelled(true);




if(event.getCurrentItem().getType() == Material.DIAMOND_HELMET) {
//Hier wird der Spieler zur HashMap hinzugefügt
effekte.put(event.getWhoClicked().getUniqueId(),deingewünschterPotionEffect);
//Inventar schließen
e.getWhoClicked().closeInventory();

}
}
}


}



Den Particle Code:
@EventHandler
public void onMove(PlayerMoveEvent e) {
//Überprüfen: Hat Spieler Effekt?
Player p = e.getPlayer();
ParticleEffect pe = effekte.get(p.getUniqueId());
if(pe==null){
  return;
}
//Effekt wird angezeigt
pe.display(p.getLocation(), 1, 1, 1, 1, 15);


}

DANKE!!!
Jetz muss ich nur noch die Plugin.yml richtig einrichten.
Habt ihr eine Idee was daran falsch sein kann?
name: Effecte
version: 1.0
author: Tobi702
main: Package1.main
commands:
Effecte:
description: Um effecte auswählen zu können
usage: /<command>

Sorry für die vielen Fragen bin halt noch eher ein Anfänger.
 
DANKE!!!
Jetz muss ich nur noch die Plugin.yml richtig einrichten.
Habt ihr eine Idee was daran falsch sein kann?
name: Effecte
version: 1.0
author: Tobi702
main: Package1.main
commands:
Effecte:
description: Um effecte auswählen zu können
usage: /<command>

Sorry für die vielen Fragen bin halt noch eher ein Anfänger.
Kommt denn ein Fehler oder Ähnliches?
ü,ö,ä ist in der plugin.yml verboten!
 
ABSTÄNDE EINHALTEN XD
Ganz wichtig man muss sie so plugin.yml klein schreiben

(Ein Tip: man lernt viel mehr du selbst machen, anstatt den Code von anderen einfach zu kopieren)
 
Also hier alle Fehler die mir einfallen:
-Sonderzeichen
-Nicht richtig eingerückt(SnakeYaml akzeptiert nur 2 Leerzeichen, keine Tab-Taste)
-Der Pfad zur Main-Klasse stimmt nicht?
->Case-Sensitive: packagename.Klassenname
Bekommst du beim ausführen eine InvalidDescriptionException oder eine InvalidPluginException
Wenn ja wo? Da steht dann manchmal plugin yml und eine Zeile, wenn dann welche?

Sonst sind hier noch ein paar Infos zur Plugin.yml:
http://wiki.bukkit.org/Plugin_YAML/de
 
ABSTÄNDE EINHALTEN XD
Ganz wichtig man muss sie so plugin.yml klein schreiben

(Ein Tip: man lernt viel mehr du selbst machen, anstatt den Code von anderen einfach zu kopieren)

Die Abstände sind alle richtig und man kann auch netter es jemanden übermitteln als am Ende ein XD zu schreiben.
plugin.yml ist klein geschrieben.

Bei den Code habe ich auch das ein oder andere umgeschrieben.

Kommt denn ein Fehler oder Ähnliches?
ü,ö,ä ist in der plugin.yml verboten!

Habe ich nicht da ich das schon wusste.


Also hier alle Fehler die mir einfallen:
-Sonderzeichen
-Nicht richtig eingerückt(SnakeYaml akzeptiert nur 2 Leerzeichen, keine Tab-Taste)
-Der Pfad zur Main-Klasse stimmt nicht?
->Case-Sensitive: packagename.Klassenname
Bekommst du beim ausführen eine InvalidDescriptionException oder eine InvalidPluginException
Wenn ja wo? Da steht dann manchmal plugin yml und eine Zeile, wenn dann welche?

Sonst sind hier noch ein paar Infos zur Plugin.yml:
http://wiki.bukkit.org/Plugin_YAML/de



1.Habe ich nicht
2.Kann auch nicht der Fehler sein.
3.Ist auf jedenfall richtig
4.InvalidDescriptionException ist die Fehlermeldung

Hier ist sie nochmals

PHP:
name: Effecte
version: 1.0
author: Tobi702

main: Package1.main

commands:
  Effecte:
    description: Um Effecte auswählen zu können
    usage: /<command>
 
Die Abstände sind alle richtig und man kann auch netter es jemanden übermitteln als am Ende ein XD zu schreiben.
plugin.yml ist klein geschrieben.

Bei den Code habe ich auch das ein oder andere umgeschrieben.



Habe ich nicht da ich das schon wusste.






1.Habe ich nicht
2.Kann auch nicht der Fehler sein.
3.Ist auf jedenfall richtig
4.InvalidDescriptionException ist die Fehlermeldung

Hier ist sie nochmals

PHP:
name: Effecte
version: 1.0
author: Tobi702

main: Package1.main

commands:
  Effecte:
    description: Um Effecte auswählen zu können
    usage: /<command>
Wer lesen kann ist klar im Vorteil. Da steht "auswählen".
 
Wo hast du die plugin.yml gespeichert?
Ich glaube die Exception wird gefired wenn der die yml nicht findet.
 
Status
Für weitere Antworten geschlossen.

Soziale Medien

  • X
  • TikTok

Über uns

  • GommeHD.net ist einer der größten Minecraft-Server der Welt. Dir gefällt unser Server? Dann unterstütze uns durch einen Kauf im Shop!
  • Shop