Coding mit Java | Java-basierten APIs

  • Ersteller Ersteller ij9F_i0FaF-d9lrDSDDpDbfo
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
Hey xDDDDDD
Ich arbeite neben bei noch an einer art spleef xD
und ich habe diese Problem:

Wenn die ArryList 2Spieler hat sollte eig. ein countdown runtergehen. :( Tut es aber net :(
Hier der Code
Code:
    public int number = 10;
if(args.length == 1) {
                        if(args[0].equalsIgnoreCase("join")) {
                                    Bukkit.broadcastMessage(prefix + p.getName() + "§2joined §4Spleef§2!");
                                   
                                   
                                    if(state == GameStatus.LOBBY) {
                                        if(SpleefList.size() == 2) {
                                           
                                            this.getServer().getScheduler().scheduleAsyncRepeatingTask(this, new Runnable() {
                                               
                                                public void run() {
                                                    if(number != -1) {
                                                        if(number != 0) {
                                                            Bukkit.broadcastMessage( prefix +"§b " + number );
                                                            number--;
                                                        } else
                                                            Bukkit.broadcastMessage( prefix + "§2Es geht los! §6Viel Glück!");
                                                            number--;
                                                                SpleefList.add(p.getName());
                                                            state = GameStatus.INGAME;
                                                        }
                                                    }
                                                }, 0L, 20L);
                                    }
                                   
                                    state = GameStatus.INGAME;
                                     if(state == GameStatus.INGAME) {
                                         sender.sendMessage("spiel ist schon ingame!");
                                         return true;
                                   
                                } else {
                                    p.sendMessage(prefix +"§c(Error) you are already in Spleef!");
                                }
                        }
                            }
 
Wenn ich das richtig sehe, trägst du den Spieler erst in die ArrayList ein, wenn 2 Spieler in der ArrayList sind. Und da es sonst keine andere Möglichkeit gibt, in die Liste zu gelangen, ist sie wohl immer leer. Oder werden Spieler noch irgendwo anders zur Liste hinzugefügt?
 
Hey xDDDDDD
Ich arbeite neben bei noch an einer art spleef xD
und ich habe diese Problem:

Wenn die ArryList 2Spieler hat sollte eig. ein countdown runtergehen. :( Tut es aber net :(
Hier der Code
Code:
    public int number = 10;
if(args.length == 1) {
                        if(args[0].equalsIgnoreCase("join")) {
                                    Bukkit.broadcastMessage(prefix + p.getName() + "§2joined §4Spleef§2!");
                                 
                                 
                                    if(state == GameStatus.LOBBY) {
                                        if(SpleefList.size() == 2) {
                                         
                                            this.getServer().getScheduler().scheduleAsyncRepeatingTask(this, new Runnable() {
                                             
                                                public void run() {
                                                    if(number != -1) {
                                                        if(number != 0) {
                                                            Bukkit.broadcastMessage( prefix +"§b " + number );
                                                            number--;
                                                        } else
                                                            Bukkit.broadcastMessage( prefix + "§2Es geht los! §6Viel Glück!");
                                                            number--;
                                                                SpleefList.add(p.getName());
                                                            state = GameStatus.INGAME;
                                                        }
                                                    }
                                                }, 0L, 20L);
                                    }
                                 
                                    state = GameStatus.INGAME;
                                     if(state == GameStatus.INGAME) {
                                         sender.sendMessage("spiel ist schon ingame!");
                                         return true;
                                 
                                } else {
                                    p.sendMessage(prefix +"§c(Error) you are already in Spleef!");
                                }
                        }
                            }
Könntest du bitte mal die ganze Klasse auf http://hastebin.com oder Gist hochladen?

Was mir jetzt schon auffält: Du benutzt einen AsyncRepeatingTask, nutze doch bitte einen SyncRepeatingTask, BukkitAPI wie z.B. Bukkit.broadcastMessage(); immer synchron (im Hauptthread) ausführen. :)
 
  • Like
Reaktionen: TroubleCrafterHD
Hallo

weiß einer von euch warum sich die haltbarkeit dabei erhöht?
Code:
p.getItemInHand().setDurability((short)(p.getItemInHand().getDurability() - 1));

und warum das hier einfach ohne felher nicht funktioniert
Code:
p.getInventory().remove(new ItemStack(Material.ARROW, 1));


MFG cantry
 
Hallo

weiß einer von euch warum sich die haltbarkeit dabei erhöht?
Code:
p.getItemInHand().setDurability((short)(p.getItemInHand().getDurability() - 1));

und warum das hier einfach ohne felher nicht funktioniert
Code:
p.getInventory().remove(new ItemStack(Material.ARROW, 1));


MFG cantry
Haltbarkeit zählt von 0 aufwärts ;)
 
Hier mal eine Empfehlung meinerseits:
Es gibt von einem wahrscheinlich relativ bekannten YouTuber ein Forum, das extra für das Thema Bukkit Plugins Programmieren, eingerichtet wurde.

[...]

Ich empfehle euch, also den Programmieren unter euch, euch da mal umzuschauen, und evtl. sehen wir uns demnächst dort.

Mit freundlichen Grüßen,
ilouHD
Es geht viel einfacher, als der das macht. Außerdem sehen seine Codes grässlich aus.
 
Hey xDDDD eine letzte Frage noch xD
Wie geht es , dass ich die ganze Welt protecte also mit blockbreakEvent und so weiß ich , aber dann protecte ich alle Welten und ich will mit einem Command nur die Welt in der icu bin protecten :)
 
Hey xDDDD eine letzte Frage noch xD
Wie geht es , dass ich die ganze Welt protecte also mit blockbreakEvent und so weiß ich , aber dann protecte ich alle Welten und ich will mit einem Command nur die Welt in der icu bin protecten :)
Die Frage ist eher, was du schon ausprobiert/vorgearbeitet hast.
 
Hey xDDDD eine letzte Frage noch xD
Wie geht es , dass ich die ganze Welt protecte also mit blockbreakEvent und so weiß ich , aber dann protecte ich alle Welten und ich will mit einem Command nur die Welt in der icu bin protecten :)

Code:
@EventHandler
public void onBlockBreak( BlockBreakEvent event ) {
    if ( event.getBlock().getWorld().equals( DEINE WELT INSTANZ ) {
        event.setCancelled( true );
    }
}

Hallo

weiß einer von euch warum sich die haltbarkeit dabei erhöht?
Code:
p.getItemInHand().setDurability((short)(p.getItemInHand().getDurability() - 1));

und warum das hier einfach ohne felher nicht funktioniert
Code:
p.getInventory().remove(new ItemStack(Material.ARROW, 1));


MFG cantry

Da du mit new Itemstack... eine neue Instanz erstellst, wird dieses Objekt nicht in dem Inventar gefunden. Wenn du .remove( Itemstack stack ) nutzt, muss es GENAU die Instanz sein, die das Inventar entählt. Andersweitig nutze .remove( Material material), oder schreibe dir eine eigene Funktion, wo du die nötigen Einzelheiten der Instanzen vergleichst (Material, Amount, Durability, Name... etc)
 
oder schreibe dir eine eigene Funktion, wo du die nötigen Einzelheiten der Instanzen vergleichst (Material, Amount, Durability, Name... etc)
Gibt es nicht bei jedem ItemStack bereits die Methode .equals( Instanz des ItemStacks ) ?

EDIT: Ich habe gerade festgestellt, dass diese Methode von der Oberklasse Object geerbt wird. Kann ich sie dann trotzdem "normal" für ItemStacks verwenden?
 
Gibt es nicht bei jedem ItemStack bereits die Methode .equals( Instanz des ItemStacks ) ?

EDIT: Ich habe gerade festgestellt, dass diese Methode von der Oberklasse Object geerbt wird. Kann ich sie dann trotzdem "normal" für ItemStacks verwenden?
Man kann sie für ziemlich alle Objekte verwenden.
 
Das ist mir auch klar. Aber die Instanz einer Welt zu speichern und dann abzufragen, ob die aktuelle Welt GENAU der gespeicherten Welt entspricht, kann doch zu Fehlern führen. Ein einziger Wert anders und die Welt wird nicht mehr protected.
 
  • Like
Reaktionen: mickedplay
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