Coding mit Java | Java-basierten APIs

  • Ersteller Ersteller ij9F_i0FaF-d9lrDSDDpDbfo
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
Ich habe die Methode registerEvents () {
}
geschrieben. Da rein das Bukkit.getPluginmanager.... und die Klammer this, this. Und im onEnable Teil das registerEvents(); aufgerufen.

Bin am Handy. Deswegen Kurzfassung
 
Hey Leute, bin noch ein Anfänger mit Java.
Ich habe ein gutes Nick plugin, allerdings will ich das die Leute beim Joinen genickt werden.
Habe dass so gelöst:
Code:
@EventHandler
public void onJoin(PlayerJoinEvent e){
   Player p = e.getPlayer();
   if(p.isOp() || p.hasPermission("yt.join"))

       p.performCommand("nick");
}
Leider gibt es dabei ein Problem.
Mein FFA Bugee Plugin gibt als erstes die Message <normalername> ist dem Spiel begetreten.
Erst danach kommt im Chat die Meldung: Dein Nickname ist <nickname> und man wird genickt.
Ich habs schon mit der Priroität versucht, bei dem EventHandler.
Aber da das unterschiedliche plugins sind bringt das nichts.
Hoffe ihr könnt mir helfen :D
 
@HamsterCrack
Hää, iwie versteh ich dich nicht.
Also, das Nick Plugin habe ich aus dem Internet.
Es hat allerdings keine AutoNickOnJoin funktion.
Deswegen habe ich ein "mini" Plugin programmiert was nur bewirkt dass beim joinen wenn man die Permission yt.nick hat automatisch den Befehl /nick ausführt.
Dabei kommt es allerding zur problemen mit den FFA Plugin.
Da dort die join Message vor den AutoNick kommt steht da:
SuperYoshi1000 hat das Spiel betreten.
Und erst danach heiße ich LustVogelHD oder What ever xD
 
@HamsterCrack
Hää, iwie versteh ich dich nicht.
Also, das Nick Plugin habe ich aus dem Internet.
Es hat allerdings keine AutoNickOnJoin funktion.
Deswegen habe ich ein "mini" Plugin programmiert was nur bewirkt dass beim joinen wenn man die Permission yt.nick hat automatisch den Befehl /nick ausführt.
Dabei kommt es allerding zur problemen mit den FFA Plugin.
Da dort die join Message vor den AutoNick kommt steht da:
SuperYoshi1000 hat das Spiel betreten.
Und erst danach heiße ich LustVogelHD oder What ever xD
Dann programmier es selber und das Problem is gelöst.
 
  • Like
Reaktionen: HamsterCrack
Dann geht das nicht :C
Schick mir mal das Plugin dann guck ichs mir mal für dich an
 
Ich habe ein Problem:

Ich möchte testen, ob der Block untereinem Wasser ist. Nun weiß ich nicht, was Wasser ist.
Material.WATER geht nicht. Wenn ich Material.GRASS nehme geht es, wenn ich über Grass laufe. Was kann ich tuen.

Code:
    public static void WaterWalk(Player playertest){
        Player p = playertest;
       
        Location loc = new Location(playertest.getWorld(), playertest.getLocation().getX(), playertest.getLocation().getY() - 1, playertest.getLocation().getZ());
        if(loc.getBlock().getType().equals(Material.WATER)){
            playertest.sendMessage("succsess");
        }
    }

Code:
    public static void WaterWalk(Player playertest){
        Player p = playertest;
       
        Location loc = new Location(playertest.getWorld(), playertest.getLocation().getX(), playertest.getLocation().getY() - 1, playertest.getLocation().getZ());
        if(loc.getBlock().getType().equals(Material.GRASS)){
            playertest.sendMessage("succsess");
        }
    }

Info: Code 1 geht nicht, Code 2 schon.

PS: das ganze soll ein Plugin gegen Waterwalk sein. (Und ja zum test nutze ich Waterwalk (Localhost Server))
 
Ich habe ein Problem:

Ich möchte testen, ob der Block untereinem Wasser ist. Nun weiß ich nicht, was Wasser ist.
Material.WATER geht nicht. Wenn ich Material.GRASS nehme geht es, wenn ich über Grass laufe. Was kann ich tuen.

Code:
    public static void WaterWalk(Player playertest){
        Player p = playertest;
      
        Location loc = new Location(playertest.getWorld(), playertest.getLocation().getX(), playertest.getLocation().getY() - 1, playertest.getLocation().getZ());
        if(loc.getBlock().getType().equals(Material.WATER)){
            playertest.sendMessage("succsess");
        }
    }

Code:
    public static void WaterWalk(Player playertest){
        Player p = playertest;
      
        Location loc = new Location(playertest.getWorld(), playertest.getLocation().getX(), playertest.getLocation().getY() - 1, playertest.getLocation().getZ());
        if(loc.getBlock().getType().equals(Material.GRASS)){
            playertest.sendMessage("succsess");
        }
    }

Info: Code 1 geht nicht, Code 2 schon.

PS: das ganze soll ein Plugin gegen Waterwalk sein. (Und ja zum test nutze ich Waterwalk (Localhost Server))
Und wenn du die ID benutzt? :S
 
Wenn das Plugin nichtmal von dir ist wie soll dann auch die Nick Funktion klappen? xd

So wie bei so gut wie jedem Plugin? Player#getDisplayName() bzw. Player#setDisplayName(String)

@geilNico

Du könntest das ganze auch so machen:

Code:
if(p.getLocation().getBlock().getTypeId() == 8 || p.getLocation().getBlock().getTypedId() == 9){
  //Mach was
}

Das hat bei mir bis jetzt immer funktioniert
 
Ich habe ein 45 min dieses Plugin gecodet, deshalb ist alles in der Main Klasse.
Das öffnen des Inventars funktioniert, jedoch schließt sich beim Klicken der Antworten das Inventar nicht. Zudem kann ich die Items rausnehmen. Wie kann ich das unterbinden?

Die Results habe ich noch nicht getestet, aber wenn ein Fehler drin ist: Bitte sagen.

Hier der Code: http://hastebin.com/iluzodiner.avrasm
Wie gesagt, musst du zuerst die Events beim Starten des Plugins registrieren (Wie es bereits die anderen gesagt haben). Solange du dir auch nicht anzeigen lässt, welche Personen sich in den entsprechenden ArrayLists befinden (z.B. durch eine Broadcastmessage oder einem Konsolenoutput), kannst du schlecht überprüfen, wo genau der Fehler liegt.
Desweiteren gibt es da noch einen Schönheitsfehler:
Du erstellst eine ArrayList voted, überprüfst sogar noch, ob sich die Personen bereits in dieser befinden, fügst allerdings keine Personen zu dieser Liste hinzu. -> Man kann so oft voten, wie man will.
Im Prinizip benötigst du diese Liste auch gar nicht, es genügt zu betrachten, ob sich die entsprechenden Personen tatsächlich auch in derartigen Listen (also Liste wahr oder falsch) befinden, denn dann haben sie auch tatsächlich gevotet.

MFG gabriel2029
 
Jemand anderes und ich arbeiten an einem LobbySystem. Nachdem wir mit
Code:
public static void addBootsItems(Material material, String name,Color color, int Inventar, Player player) {
   
    ItemStack i = new ItemStack(material);
    ItemMeta meta = i.getItemMeta();
    meta.setDisplayName(name);
    LeatherArmorMeta meta1 = (LeatherArmorMeta) i.getItemMeta();
     meta1.setColor(color);
   
   
    i.setItemMeta(meta);
dem Code farbige Lederboots erstellt haben, wollen wir per InventoryClickEvent abfragen auf welche Boots man geklickt hat. Also Blau, Rot, Grün etc. mit getType() kann man allerdings nur abfragen, ob es Lederboots waren. Wie können wir das machen.
 
Jemand anderes und ich arbeiten an einem LobbySystem. Nachdem wir mit
Code:
public static void addBootsItems(Material material, String name,Color color, int Inventar, Player player) {

    ItemStack i = new ItemStack(material);
    ItemMeta meta = i.getItemMeta();
    meta.setDisplayName(name);
    LeatherArmorMeta meta1 = (LeatherArmorMeta) i.getItemMeta();
     meta1.setColor(color);


    i.setItemMeta(meta);
dem Code farbige Lederboots erstellt haben, wollen wir per InventoryClickEvent abfragen auf welche Boots man geklickt hat. Also Blau, Rot, Grün etc. mit getType() kann man allerdings nur abfragen, ob es Lederboots waren. Wie können wir das machen.
Code:
ItemStack item = new ItemStack(Material.LEATHER_BOOTS);
        LeatherArmorMeta meta = (LeatherArmorMeta) item.getItemMeta();
        meta.setDisplayName("CloudBoot");
        meta.setColor(); // Selbst aussuchen
        item.setItemMeta(meta);
      
        if(event.getPlayer().getInventory().getBoots() != null) {
            if(event.getPlayer().getInventory().getBoots().equals(item)) {
                Bukkit.broadcastMessage("It's done.");
            }
        }
Man kann eigentlich auch direkte ItemMeta Abfragen machen.
Es kommt drauf an, wie du es haben willst.. Es gibt viele Möglichkeiten, solche Abfragen zu machen..
 
  • Like
Reaktionen: RedstoneRaudi
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