Coding mit Java | Java-basierten APIs

  • Ersteller Ersteller ij9F_i0FaF-d9lrDSDDpDbfo
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
Du willst also, wenn der Shooter einen killt, dass er den Pfeil übergibt, den Kill bekommt + eine Explosion verursacht?


Code:
        public void OnEnable(){
                System.out.println("By 3LaF -- on --");
            
                PluginManager pm = Bukkit.getPluginManager();
                pm.registerEvents(this, this);
    
    
    
    
        }
Wo ist wohl der Fehler?
Oha bin ich .......
Ich höre jetzt auf mit Programmieren, das war echt lächerlich und dumm.
Genau deswegen sollte man @Override benutzen :P
 
  • Like
Reaktionen: 3LaF und iGamePlayHD
Hey ilouHD :)
Ich habe die Explosionen genau wie du erstellt, jedoch stieß ich auf das selbe Problem, dass ich keine sterbenden Entities bekomme und so ungenaue Ergebnisse erhalte.

Erste Ideen von uns waren, dass man die Locations der Pfeile jede Sekunden checkt, jedoch zieht das etlich viel Leistung, ist ungenau und vorallem umständlich.

Wenn du dich mit Vererbung in Java (auch "extenden") auskennst, solltest du mal in dieser NMS-Klasse (Explosion):
Explosion explosion = new Explosion(w, ((CraftPlayer)p).getHandle(), event.getEntity().getLocation().getX(), event.getEntity().getLocation().getY(), event.getEntity().getLocation().getZ(), 10.0F, false, false);

Nach möglichen Methoden suchen, die die beschadeten Entities beinhaltet ;)
Diese kannst du dann überschreiben, und mit bisschen Copy-Paste kommst du zu deiner eigenen Explosions-Klasse (die wie die vorherige klappt), nur mit deiner Modifikation, dass mit Entities die sterben noch interagiert werden kann :)

Ich verrate mal nichts genaues, aber das ist der konkrete Weg, wie man das ganze exakt und effizient löst :)

MFG DREAMZii
 
  • Like
Reaktionen: ilouHD
Hey ilouHD :)
Ich habe die Explosionen genau wie du erstellt, jedoch stieß ich auf das selbe Problem, dass ich keine sterbenden Entities bekomme und so ungenaue Ergebnisse erhalte.

Erste Ideen von uns waren, dass man die Locations der Pfeile jede Sekunden checkt, jedoch zieht das etlich viel Leistung, ist ungenau und vorallem umständlich.

Wenn du dich mit Vererbung in Java (auch "extenden") auskennst, solltest du mal in dieser NMS-Klasse (Explosion):


Nach möglichen Methoden suchen, die die beschadeten Entities beinhaltet ;)
Diese kannst du dann überschreiben, und mit bisschen Copy-Paste kommst du zu deiner eigenen Explosions-Klasse (die wie die vorherige klappt), nur mit deiner Modifikation, dass mit Entities die sterben noch interagiert werden kann :)

Ich verrate mal nichts genaues, aber das ist der konkrete Weg, wie man das ganze exakt und effizient löst :)

MFG DREAMZii
Danke. Werde es dann mal mit der Vererbung in Java versuchen. Daran habe ich bisher nicht gedacht ;)
 
Kann mir jemand ein gutes Tutorial für BungeeCord TeleportSigns nennen?
Das "originale" TeleportSigns will nicht mit 1.8 :3
 
Kann mir jemand ein gutes Tutorial für BungeeCord TeleportSigns nennen?
Das "originale" TeleportSigns will nicht mit 1.8 :3
Das hier ist zum eigenen Programmieren gedacht nicht zum Einstellen... Naja vllt hilft dir dabei jemand :p
Wenn dus selbst programmieren willst guck paar Seiten nach hinten da wurde mal nen Link von nen yt Video gepostet :)
 
Kann mir jemand ein gutes Tutorial für BungeeCord TeleportSigns nennen?
Das "originale" TeleportSigns will nicht mit 1.8 :3
http://postcrafter.de/viewtopic.php?f=15&t=1142
Habe ich vor ner Ewigkeit mal geschrieben. Funktioniert aber immer noch und ist Versionsunabhängig, da sich Java nicht ändert ;)
Hier wird das ganze aber nur für 1 Sign gemacht. Du müsstest es etwas dynamischer machen, um es für mehrere Signs zu machen (ArrayLists)
 
Ich möchte machen, dass von 24 Spielern in einem Spiel einer random ausgelost wird. Packe ich dazu aám besten alle Spieler in ne ArrayList und mache das mit nem random? oder wie soll ich das machen?
 
Ich möchte machen, dass von 24 Spielern in einem Spiel einer random ausgelost wird. Packe ich dazu aám besten alle Spieler in ne ArrayList und mache das mit nem random? oder wie soll ich das machen?
Wieso fragst du direkt nach einer Lösung? Hast du schon überhaupt was ausprobiert?
 
Habe gerade mal das mit der ArrayList ausprobiert, aber da wüsste ich nicht was ich als Cases machen sollte.
Es sollte halt einer "Mario" und einer "Spieler" sein.
 
Hol den Spielernamen durch eine String Methode
Benutze dafür Array, Random (int) & co..
 
Code:
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String label,String[] args) {
        Player p = (Player) sender;
       
        if(args.length == 0) {
           
            ArrayList random = null;
           
            random.add(p.getName());
           
            Random r = new Random();
            int zufall = r.nextInt(2);
            switch(zufall) {
            case 1:
            case 2:
           
            }
           
           
           
        } else {
            p.sendMessage("§c/rd");
           
        }
        return true;
    }
Ich weiß jedoch nicht was ich bei den Cases eintragen soll. Es soll jetzt erstmal nur ausgegeben werden **Spielername** ist Mario / **Spielername** ist Spieler
 
PHP:
Nicht 
ArrayList random = null;
Sondern:
 List<Player> random = new ArrayList<Player>();
 
Code:
Code:
    // Methode 1
    ArrayList<String> mario = new ArrayList<>();
    ArrayList<String> spieler = new ArrayList<>();

    // oder

    HashMap<String, String> hashMap = new HashMap<>();

    public void methode(String name) {
        Random rnd = new Random();
        switch(rnd.nextInt(2)) { // Java fängt von 0 an zu zählen also 0 - 1 | 2 Spieler
            case 0:
                hashMap.put(name, "Mario");
                // oder
                mario.add(name);
                break;
            case 1:
                hashMap.put(name, "Spieler");
                // oder
                spieler.add(name);
                break;
        }
    }

    // Es kommt drauf an, was du machen willst. Wenn du bsp. Effekte machen willst, musst du ContainsKey/Value Abfragen machen.
    // Bei ArrayLists eben contains.
Es kommt drauf an, was du machen willst. Eine ArrayList/HashMap anstatt Random (Bukkit.getOnlinePlayer()) wäre viel sinnvoller, denn du hast ein Problem, wenn du ein Spectator-System z.B. programmierst.
Theoretischerweise kann man dann eine Abfrage machen, aber das sieht meiner Meinung nach hässlich aus.

So wäre der Code. Einfach verbessern, wenn ich Fehler reingemacht habe. Ich habe nichts getestet.
 
Zuletzt bearbeitet von einem Moderator:
So wie ich das verstanden habe willst du von allen Spielern einen Spieler random getten, oder nicht?
Dann machst du
Code:
public Player getRandom(){

        List<Player> list = new ArrayList<Player>();
        for(Player p : Bukkit.getOnlinePlayers()){
            list.add(p);
        }
        Random random = new Random();
        Player p = list.get(random.nextInt(list.size()));

return p;
}
 
Code:
Code:
    // Methode 1
    ArrayList<String> mario = new ArrayList<>();
    ArrayList<String> spieler = new ArrayList<>();

    // oder

    HashMap<String, String> hashMap = new HashMap<>();

    public void methode(String name) {
        Random rnd = new Random();
        switch(rnd.nextInt(1)) { // Java fängt von 0 an zu zählen also 0 - 1 | 2 Spieler
            case 0:
                hashMap.put(name, "Mario");
                // oder
                mario.add(name);
                break;
            case 1:
                hashMap.put(name, "Spieler");
                // oder
                spieler.add(name);
                break;
        }
    }

    // Es kommt drauf an, was du machen willst. Wenn du bsp. Effekte machen willst, musst du ContainsKey/Value Abfragen machen.
    // Bei ArrayLists eben contains.
Es kommt drauf an, was du machen willst. Eine ArrayList/HashMap anstatt Random (Bukkit.getOnlinePlayer()) wäre viel sinnvoller, denn du hast ein Problem, wenn du ein Spectator-System z.B. programmierst.
Theoretischerweise kann man dann eine Abfrage machen, aber das sieht meiner Meinung nach hässlich aus.

So wäre der Code. Einfach verbessern, wenn ich Fehler reingemacht habe. Ich habe nichts getestet.
Wenn du ein Spectatorsystem z.B. in einem Spielmodus hast, hast du ganz bestimmt auch eine ArrayList, in der alle Spieler eingespiechert sind, die gerade im Spiel sind. Dann kann man diese List verwenden.
 
Wenn du ein Spectatorsystem z.B. in einem Spielmodus hast, hast du ganz bestimmt auch eine ArrayList, in der alle Spieler eingespiechert sind, die gerade im Spiel sind. Dann kann man diese List verwenden.
1.
Theoretischerweise kann man dann eine Abfrage machen, aber das sieht meiner Meinung nach hässlich aus.
2. //EDIT
Ich möchte machen, dass von 24 Spielern in einem Spiel einer random ausgelost wird. Packe ich dazu aám besten alle Spieler in ne ArrayList und mache das mit nem random? oder wie soll ich das machen?
Ich rede von Bukkit.getOnlinePlayers(). Er wollte am Anfang wissen, wie man einen Random-Spieler kriegt ohne/mit einer Liste.
Ich bin davon ausgegangen, dass er keine Liste verwenden will. Deswegen habe ich ihm die Liste vorgeschlagen.
 
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