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

Mana System

Melonemax

Redstoneengineer
Registriert
20 Februar 2021
Beiträge
37
Diamanten
250
Ich möchet ein Mana System wie auf dem Bild aber weiß nicht genau wie ich das Umsetzten soll

Mana.PNG


(Das habe ich Bis Jetzt)

Code:
    private static HashMap<Player, Double> mana = new HashMap<Player, Double>();
    private static Plugin plugin;


    private static final int MAX_MANA = 100;

    public Mana(Main plugin) {
        this.plugin = plugin;
    }

    public static double getPlayerMana(Player p){
        return mana.get(p);
    }

    public static boolean hasMaxMana(Player p){
        if (getPlayerMana(p) >= MAX_MANA) {
            return true;
        }
        return false;
    }

    public static void addMana(Player p, double amount){
        if (amount >= MAX_MANA || getPlayerMana(p) + amount >= MAX_MANA) {
            return;
        }
        mana.put(p, getPlayerMana(p) + amount);
    }

    public static void removeMana(Player p, double amount){
        if (amount <= 0 || getPlayerMana(p) - amount <= 0) {
            return;
        }
        mana.put(p, getPlayerMana(p) - amount);
    }

    public static void addManaPerSecond(){
        Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {

            @Override
            public void run(){
                for (Player p : Bukkit.getOnlinePlayers()) {
                    if (hasMaxMana(p)) {
                        continue;
                    }
                    addMana(p, 1.1);
                }
            }
        }, 0L, 20L);
    }
 

Feli490

Redstoneengineer
Registriert
30 November 2011
Beiträge
44
Alter
26
Diamanten
342
Minecraft
Feli490
Moin,

bitte meinen Kommentar nicht falsch verstehen, alles was folgt ist ein nett aber auch ernst gemeinter Rat.

Ich denke du solltest erstmal noch ein paar Schritte zurück gehen. Man kann an den paar Zeilen Code bereits erkennen das du vmtl. noch ziemlich neu und unerfahren in der Entwicklung mit Java bist. Dir sind gängige Strukturen noch nicht wirklich geläufig, wie es scheint.

Für ein solches Plugin wie du es möchtest sollte man sich einige Gedanken machen, ordentliches API Design (Welches Plugin kann wie auf die Mana Punkte zugreifen?) oder auch können Spieler unterschiedlich viele Manapunkte haben? ... Unterschiedlich schnell Mana regenerieren? etc.

Macht man sich solche Gedanken nicht wenigstens schon zu einem kleinen Teil im vorraus hat man im Nachhinein immense Probleme etwas an der Funktionsweise zu ändern. Auch Initialisierst du deine Statische plugin Variable in einem Constructor, welcher in einer Klasse mit durchweg statischen Methoden ist. Das ist ein ziemlich eindeutiger Hinweis darauf, dass das Konzept der Objektorientierung noch nicht komplett verstanden wurde. Auch "static abuse" genannt. Simpel gesagt du umgehst das Nutzen "echter" Objekte indem du deine Methoden statisch machst. Das kann man so machen und so kann man auch funktionierende Programme schreiben, ja, aber ich verspreche dir das du ab einem Gewissen komplexitätsgrad (den dieses Plugin, wenn man es richtig umsetzt, besitzt) den Überblick verlierst und sehr viele vermeidbare Bugs einbauen wirst.

Und kein Entwickler hier im Forum wird sich dafür bereit erklären dir dein komplettes Plugin (kostenlos) zu konzeptionieren und zu Implementieren.
Daher wäre meine Empfehlung geh noch mal ein zwei Schritte zurück und belese dich nochmal über ein paar grundsätzliche Prinzipien und Praktiken der Entwicklung (allgemein als auch in Java), wie z.B. Objektorientierung (Was sind Objekte überhaupt? Wie erstelle ich ein Objekt?) etc.
Programmiere noch ein paar kleine Anwendungen (auch ohne Minecraft Bezug) oder auch kleinere Plugins (explodierende Eier sind immer witzig :3) bevor du dich an so ein schon komplexeres Problem wagst.

Klar möchte man immer was "Sinnvolles" machen aber es ist nicht grundlos das Anwendungsentwicklung ein Ausbildungsberuf und Informatik ein Studiengang ist. Man muss sich schon etwas Zeit nehmen und Grundlagen erlernen, da kommt man leider um ein "Hello World" u.Ä. nicht drum herum.
Und jeder hat mal klein angefangen, damals wäre ich auch so vorgegangen wie du, ich war mal ein ganz großer im static Abusen, das ist einfach so es ist noch kein Meister vom Himmel gefallen :)

Wie am Anfang geschrieben, bitte fühl dich nicht Angegriffen, das ist nur mein persönlicher Rat für dich, ich denke dass dir das mehr helfen würde als auf biegen und brechen jetzt dieses Plugin zu erstellen :)
 

Sneaky

Minecrafter
Registriert
29 März 2021
Beiträge
2
Diamanten
250
Moin,
wenn ich möchtest kann ich dir ein bisschen helfen.
Als erstes wäre es wahrscheinlich sinnvoll, wenn du ein kleines Konzept erstellst was dein Mana System alles können soll. Wenn du einfach loslegst zu programmieren kann ich dir zu 99% sagen, dass du hinterher alles neu machen darfst oder einen großen Haufen unlesbaren Code hast.
 
Oben