• 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!

Von anderer Klasse Methode bekommen

D

deleted191575

Guest
Hallo liebe Community,

Ich habe ein Problem mit meinem anfänger Lobbysystem und brauche dringend eure hilfe weil es ist zu dem ein wichtiger Grundsatz der zu Java gehört den man kennen muss !

Main.java

Code:
package net.brutalverzockt.lobbysystem.main;

import org.bukkit.Bukkit;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

import net.brutalverzockt.lobbysystem.cmds.Build_CMD;
import net.brutalverzockt.lobbysystem.listener.BuildListener;
import net.brutalverzockt.lobbysystem.listener.PlayerInteractListener;
import net.brutalverzockt.lobbysystem.listener.PlayerJoinQuitListener;

public class Main extends JavaPlugin {
   
    @Override
    public void onEnable() {
   
        Bukkit.getConsoleSender().sendMessage(Utils.prefix + "Das Plugin wurde §aerfolgreich §7geladen §4!");
        register();
       
    }
   
    @Override
    public void onDisable() {
       
        Bukkit.getConsoleSender().sendMessage(Utils.prefix + "Das Plugin wurde §centladen §4!");
    }

    private void register() {
       
        PluginManager pm  = Bukkit.getPluginManager();
       
        getCommand("build").setExecutor(new Build_CMD());
       
        pm.registerEvents(new PlayerJoinQuitListener(), this);
        pm.registerEvents(new PlayerInteractListener(), this);
        pm.registerEvents(new BuildListener(), this);
       
    }

}

PlayerJoinQuitListener.java

Code:
package net.brutalverzockt.lobbysystem.listener;

import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

public class PlayerJoinQuitListener implements Listener {
   
    @EventHandler
    public void onJoin(PlayerJoinEvent e) {
        e.setJoinMessage("");
       
        e.getPlayer().getInventory().clear();
       
        ItemStack item1 = new ItemStack(Material.COMPASS, 1);
        ItemMeta itemm1 = item1.getItemMeta();
        itemm1.setDisplayName("§c§n§lKompass");
        item1.setItemMeta(itemm1);
       
        e.getPlayer().getInventory().setItem(4, item1);
    }
   
    @EventHandler
    public void onQuit(PlayerQuitEvent e) {
        e.setQuitMessage("");
    }
}

PlayerInteractListener.java

Code:
package net.brutalverzockt.lobbysystem.listener;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerDropItemEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

public class PlayerInteractListener implements Listener {
   
    PlayerJoinQuitListener onJoin = new PlayerJoinQuitListener();
   
    @EventHandler
    public void onRClick(PlayerInteractEvent e) {
        Player p = e.getPlayer();
        Inventory inv = Bukkit.createInventory(null, 45, "§4§lNavigator");
       
        ItemStack item = new ItemStack(Material.DIAMOND, 1);
        ItemMeta imeta = item.getItemMeta();
        imeta.setDisplayName("§b§n§lSpawn");
        item.setItemMeta(imeta);
       
        if(e.getAction() == Action.RIGHT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_AIR) {
            if(p.getInventory().contains(Material.COMPASS)) {
// In diese Zeile sollte eigentlich einen weitere If - Abfrage kommen welche aus der Klasse
// PlayerJoinQuitListener sich die Methode onJoin holt und den ItemStack bzw. die ItemMeta davon !               
// Könnt ihr mir bitte helfen ? Ich bin ein totaler neuling in Java und in Minecraft, ich würde es nett finden könntet ihr mir code beispiele schicken !                     
                       
                    }
                  {
                               
                inv.setItem(22, item);
                p.openInventory(inv);   
               
                }
            }
        }   
    }
   
    @EventHandler
    public void onItemClick(InventoryClickEvent e) {
        if(e.isRightClick() || e.isShiftClick() || e.isLeftClick()) {
            e.setCancelled(true);
           
        }
    }

   
    @EventHandler
    public void onDrop(PlayerDropItemEvent e) {
        if(!e.getItemDrop().hasPermission("lobbysystem.dropitem")) {

            e.setCancelled(true);
           
        } else {
           
            e.setCancelled(false);
        }
    }
}

Ich würde mich sehr freuen wenn ihr mir den Code schreiben würdet da ich noch nicht so viel Erfahrung habe :-(.

Ich danke euch allen schon einmal im voraus
 

JTK222

Threadripper
Registriert
5 September 2013
Beiträge
1.150
Diamanten
323
Minecraft
JTK222
Wenn du ohne instanz einer Klasse auf eine ihrer Methoden zugreifen möchtest, musst du diese Methoden als Statisch deklarieren.
Schau dir bitte zumindest die Java Grundlagen an, diese würden es dir anscheinend vereinfachen.
 

Chrisliebär❤️

nur echt mit ❤️
Moderator
Registriert
19 Mai 2014
Beiträge
1.675
Diamanten
830
Das heißt, dass dir der Unterschied zwischen einer Klasse und einer Instanz bzw. einem Objekt nicht klar ist und du dir vielleicht nochmal angucken solltest, was das jeweils genau ist.

Die Lösung von @JTK222 ist, dass du die Methode statisch machst. Das geht mit dem Keyword static

public static void myMethod(int arg0, int arg1...)

Aber solange du obigen Unterschied nicht verstanden hast, solltest du auch nicht einfach alles statisch machen, denn der Unterschied ist extrem wichtig. Das sind Grundlagen objektorientierter Programmierung, das hat nicht mal was mit Java zu tun.

https://stackoverflow.com/questions/3323330/difference-between-object-and-instance
 

petomka

Redstoneengineer
Registriert
8 Oktober 2012
Beiträge
41
Alter
26
Diamanten
322
So wie das für mich aussieht bräuchtest du eher eine statische Variable bzw. eine Konstante für deinen ItemStack. Diese könntest du z.B. in deiner Main-Klasse anlegen:
Java:
public class Something extends SomethingElse {
    public static final ItemStack NAVIGATOR_ITEM = new ItemStack(Material.COMPASS);
    static {
        ItemMeta navMeta = NAVIGATOR_ITEM.getItemMeta();
        //... Dinge
    }
    //Restliche Klasse
}

Der Zugriff von außen erfolgt dann einfach über Klassenname.Variablenname:
Java:
public class AnotherClass {
    public void doSomething() {
        ItemStack nav = Something.NAVIGATOR_ITEM;
        //... Was auch immer du damit nun tun möchtest
    }
}

Diese Codebeispiele sollten ausreichend sein, damit du deinen Code entsprechend anpassen kannst.
 
D

deleted191575

Guest
So wie das für mich aussieht bräuchtest du eher eine statische Variable bzw. eine Konstante für deinen ItemStack. Diese könntest du z.B. in deiner Main-Klasse anlegen:
Java:
public class Something extends SomethingElse {
    public static final ItemStack NAVIGATOR_ITEM = new ItemStack(Material.COMPASS);
    static {
        ItemMeta navMeta = NAVIGATOR_ITEM.getItemMeta();
        //... Dinge
    }
    //Restliche Klasse
}

Der Zugriff von außen erfolgt dann einfach über Klassenname.Variablenname:
Java:
public class AnotherClass {
    public void doSomething() {
        ItemStack nav = Something.NAVIGATOR_ITEM;
        //... Was auch immer du damit nun tun möchtest
    }
}

Diese Codebeispiele sollten ausreichend sein, damit du deinen Code entsprechend anpassen kannst.

Ich möchte mich vielmals bei dir bedanken weil du kommst jetzt nicht genau zu den Begriffen "Objekten", "Methoden", "fields" du hast dem entsprechend meinen Beitrag richtig gelesen und verstanden. Nochmals vielden dank :)
 

FelixKlauke

Erzengel
Ehem. Teammitglied
Registriert
5 Januar 2014
Beiträge
1.038
Diamanten
299
Minecraft
FelixKlauke
Ich möchte mich vielmals bei dir bedanken weil du kommst jetzt nicht genau zu den Begriffen "Objekten", "Methoden", "fields" du hast dem entsprechend meinen Beitrag richtig gelesen und verstanden. Nochmals vielden dank :)

Und was bringt dir das? Jetzt hast du eine Lösung die du nicht verstehst, zu einem Problem das du nicht verstanden hast.
 

JOO200

Braumeister
Registriert
18 Dezember 2016
Beiträge
442
Diamanten
228
Da magst du zwar recht haben aber ich habe noch nicht viel Ahnung von Java oder der Minecraft API mann muss ja nicht gleich alles wissen ich kann es immerhin erst seit 2 Tagen also .... ist es schlimm dann nachzufragen ?
So wie ich das sehe, möchtest du Java nicht lernen, sondern nur dein Problem lösen. Es ist schön, wenn es neue Programmierer gibt, aber anwendungsspezifische Lösungen helfen keinem weiter.
Wenn du tatsächlich programmieren lernen möchtest, gehört dazu so viel mehr dazu, als nur eine Lösung aus dem Internet abzutippen. Diese Lösung zu verstehen wäre ein erster Schritt in die richtige Richtung ;)
 
D

deleted191575

Guest
So wie ich das sehe, möchtest du Java nicht lernen, sondern nur dein Problem lösen. Es ist schön, wenn es neue Programmierer gibt, aber anwendungsspezifische Lösungen helfen keinem weiter.
Wenn du tatsächlich programmieren lernen möchtest, gehört dazu so viel mehr dazu, als nur eine Lösung aus dem Internet abzutippen. Diese Lösung zu verstehen wäre ein erster Schritt in die richtige Richtung ;)
Nur kann ich es einfach nicht verstehen was es heißt:

Main:

Javascript:
öffentlich Klasse (Name) erbt aus (Sonstetwas) {
öffentliches statisches Finale ItemStack (Name des ItemStacks) = neuer ItemStack(Das Item Kompass)
statisch ist {
ItemMeta (Name der ItemMeta) = (Names des ItemStacks).(bekomme die ItemMeta());

{

PlayerInteractListener:

Javascript:
öffentliche Klasse (Name der Klasse) {
öffentliche Methode ohne Rückgabewert() {
ItemStack (Name des ItemStacks) = (Statischer Teil aus Main).NAVIGATOR_ITEM;

{
{
 
Zuletzt bearbeitet von einem Moderator:

LinuxServer

Kuhfänger
Registriert
17 September 2016
Beiträge
50
Diamanten
0
Minecraft
LinuxServer
Da magst du zwar recht haben aber ich habe noch nicht viel Ahnung von Java oder der Minecraft API mann muss ja nicht gleich alles wissen ich kann es immerhin erst seit 2 Tagen also .... ist es schlimm dann nachzufragen ?
Guten Tag,

es ist nicht schlimm nach zu fragen, sondern wenn man sich damit nicht beschäftigt, was mir bei dir so vorkommt. Am besten lernst du erstmal die Java-Grundlagen, das war damals auch mein Fehler.

Mit freundlichen Grüßen
 

JOO200

Braumeister
Registriert
18 Dezember 2016
Beiträge
442
Diamanten
228
Ich denke die Diskussion dreht sich im Kreis.
Es geht nicht darum, irgendwelche Sachen ins Deutsche zu übersetzen, sondern zu kapieren, was der geschriebene Code, dessen Urheber du sein möchtest, auf dem Server anstellt. Sachen aus dem Internet kopieren kann jeder. Ich denke, du weißt, was du die nächsten paar Wochen lernen kannst ;)
 
D

deleted191575

Guest
Ich denke die Diskussion dreht sich im Kreis.
Es geht nicht darum, irgendwelche Sachen ins Deutsche zu übersetzen, sondern zu kapieren, was der geschriebene Code, dessen Urheber du sein möchtest, auf dem Server anstellt. Sachen aus dem Internet kopieren kann jeder. Ich denke, du weißt, was du die nächsten paar Wochen lernen kannst ;)
Für meine Prüfungen und Tests ? :p (Nein, ich weiß schon)
 
Oben