Bei einer Abfrage ob etwas null ist NullPointerException?

Hey ho Leude,

Ich hab ein kleines Problem bei meinem Spigot Plugin:

if(config.getString("messages.Join").equals(null)) {	
}

Diese if-Abfrage ist laut diesem Fehler Log ein Auslöser für eine NullPointerException:

[17:30:48 ERROR]: Error occurred while enabling JoinMessage v0.1 (Is it up to date?)
java.lang.NullPointerException: null
        at de.Yuno.JM.Main.onEnable(Main.java:26) ~[?:?]
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:264) ~[spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:337) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:403) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugin(CraftServer.java:381) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.enablePlugins(CraftServer.java:330) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.reload(CraftServer.java:752) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.Bukkit.reload(Bukkit.java:525) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.command.defaults.ReloadCommand.execute(ReloadCommand.java:27) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:141) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchCommand(CraftServer.java:648) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at org.bukkit.craftbukkit.v1_12_R1.CraftServer.dispatchServerCommand(CraftServer.java:634) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.aP(DedicatedServer.java:444) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.DedicatedServer.D(DedicatedServer.java:407) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.C(MinecraftServer.java:679) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:577) [spigot-1.12.2.jar:git-Spigot-dcd1643-e60fc34]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_261]

Ich verstehe aber nicht wieso. Ich möchte doch Abfragen ob dieser Eintrag in der config nicht vorhanden ist sprich null um ihn dann einen Wert zuteilen zu können

Wenn das nicht geht wie kann ich das sonst machen?

programmieren, Java, Minecraft Server
Bin ich vielleicht zu dumm, um Programmieren zu lernen?

Ich habe vor ein paar Wochen mit Python angefangen. Ich hatte die Jahre davor schon sehr oft mit anderen Programmiersprachen experimentiert, aber es nie durchgezogen. Das möchte ich jetzt ändern. Durch das damalige Experimentieren, hatte ich schon ein bisschen Vorkenntnis. Also wie Variablen funktionieren, wie Funktionen funktionieren, Klassen etc. Daher habe ich mich nicht all zu lange mit den Python Basics beschäftigt.

Nun zum eigentlichen Thema.

Immer wenn ich mich an ein neues Projekt wage, verstehe ich davon meistens überhaupt nichts.

Das letzte Projekt war z.B. ein Shutdown Timer. Das ganze habe ich recht einfach umsetzen können, bis ich dann allerdings auf die Idee kam, dass ein GUI ganz nett wäre. Also habe ich ein wenig geforscht und bin dann auf das Modul Tkinter gestoßen.

Da fängt es dann an. Ich versuche mir die Docs des Moduls durchzulesen, verstehe aber nur Bahnhof. Ich brauche dann einen Beitrag der mir das ganze einfach und verständlich erklärt, oder ein YouTube Tutorial. Ich bekomme es nicht hin, die nötigen Informationen aus den Docs zu finden. Ich fühle mich dann extrem überfordert. Wenn ich kein Tutorial oder ähnliches habe, brauche ich Stunden um ein paar Zeilen Code zu verstehen. Das erreiche ich halt dann durch ewiges Googlen.

Bin ich vielleicht einfach zu Doof? Die Docs sind ja da, um sie zu verstehen. Aber ich raff da meistens nichts.

programmieren, Python
Minecraft Rangsystem in Vanilla 1.16?

Guten Tag Community!

--- Allgemeines ---

Derzeit arbeite ich an einem Rangsystem bei einem Vanilla 1.16.1 Minecraft-Server.

Das komplette System soll über Kommandoblöcke gesteuert sein.

Bitte beachtet, dass es sich um einen Mehrspieler-Server handelt.

--- Ränge und Punkte ---

Zunächst hier eine kurze Zusammenfassung aller Ränge und deren dazugehörigen Punkteanzahlen, welche das Aufsteigen der Ränge ermöglicht:

Ränge          |    Punkte
---------------------------------------------
Göttlich       |    +50000   ->   +Unendlich
Ritterlich	   |    +20000   ->   +49999
Edel           |    +12000   ->   +19999 
Gut	           |    +4000    ->   +11999 
Freundlich	   |    +1000    ->   +3999   
Neutral	       |    0        ->   +999   
Aggressiv	   |    -1       ->   -3999
Arglistig	   |    -4000    ->   -11999
Bösartig	   |    -12000   ->   -19999
Grausam	       |    -20000   ->   -49999
Teuflisch      |    -50000   ->   -Unendlich

--- Aufsteigen und Absteigen ---

Hier eine Liste mit Möglichkeiten, wie der Spieler auf- und absteigen kann:

Art des Vergehens                            |    Punkte
---------------------------------------------------------
Spieler tötet ein bösartiges Monster         |    + 1
Pro Minute, welcher der Spieler online ist   |    + 1
Spieler baut Netherite-Erz ab                |    + 5
Spieler baut Diamant-Erz ab                  |    + 4
Spieler baut Emerald-Erz ab                  |    + 4
Spieler baut Gold-Erz ab                     |    + 3
Spieler baut Eisen-Erz ab                    |    + 2
Spieler baut Lapislazuli-Erz ab              |    + 2
Spieler baut Redstone-Erz ab                 |    + 2
Spieler baut Kohle-Erz ab                    |    + 1
Spieler töten einen anderen Spieler          |    - 1000
Spieler tötet einen Dorfbewohner             |    - 500
Spieler verzaubert ein Item                  |    - Level der Verzauberung

Level der Verzauberung: 
Wenn das Item eine Level 30 Verzauberung erhält, soll der Spieler 30 Rangpunkte abgezogen bekommen. Bei einer Level 13 Verzauberung eben nur 13 Punkte Abzug.

--- Fragen ---

Wie kann ich einen Kommandoblock triggern, wenn

  • ein Spieler ein bösartiges Monster tötet?
  • ein Spieler eins der oben angegeben Erze abbaut
  • einen anderen Spieler tötet
  • einen Dorfbewohner tötet

Wie muss ich die Kommandoblöcke bestmöglich anordnen, damit ich mir Wiederholungen sparen kann?

--- Schlusswort ---

Ich bedanke mich jetzt schon mal für die, hoffentlich Hilfreiche, Antworten. Natürlich könnt Ihr mir auch Videos zukommen lassen, falls diese für diese Aufgabe hier relevant sind.

Ich freue mich über jeden Hinweis und danke auch jedem, der seinen Teil hier beiträgt.

Mit freundlichen Grüßen

RoyBlunk

Computer, programmieren, Java, Minecraft, Entwickler, Mc, Minecraft Server, Kommandozeile, Minecraft Vanilla, Minecraft Projekt, Commandblock, Kommandoblock, Spiele und Gaming
C# Programm Zweidimensionales Array?

Moin,

sitze schon ne Weile an einem Programm, das einen Integer (nennen wir ihn Zahl ) vom Benutzer einlesen soll. Ausgehend von Zahl soll dann wie folgt ein zweidimensionales Array erstellt werden:

  • das Array ist Zahl x Zahl groß
  • das Element oben links im Array (also [0, 0] ) hat den Wert Zahl x Zahl
  • jedes weitere Element rechts daneben hat jeweils -1 weniger
  • anders beschrieben: es wird von links nach rechts abwärts gezählt beginnend vom Wert Zahl x Zahl

Da ich mir den Lösungsweg Stück für Stück erarbeiten möchte, könnt Ihr auf die komplette Lösung/ bzw. Erklärung verzichten.

Ich weiß, dass man Zeilen und Spalten bei dieser Aufgabe beide mit for-Schleifen erstellen kann, doch der Einfachheit halber möchte ich erst verstehen, wie ich mit den Spalten vorgehen muss.

Ohne for-Schleife bekomme ich die erste Spalte problemlos erstellt und das sieht dann so aus:

oder:

Console.WriteLine("Geben Sie eine Zahl ein, bei der nach dem"+ "Schema Zahl*Zahl ein Array erstellet werden soll:");
            string eingabe = Console.ReadLine();
            int intEingabe = Convert.ToInt32(eingabe);
            Console.WriteLine("\n");
            int[,] eingabeArray = new int[intEingabe,intEingabe];
            int eingabeArrayLänge = intEingabe * intEingabe;

            //Erste Spalte:
            eingabeArray[0, 0] = eingabeArrayLänge;
            eingabeArray[1, 0] = eingabeArray[0, 0] - 1;
            eingabeArray[2, 0] = eingabeArray[1, 0] - 1;
            Console.WriteLine(eingabeArray[0, 0] + "\n" + eingabeArray[1, 0] + "\n" + eingabeArray[2, 0]);

Bis dahin kein Problem doch wie schaffe ich es nun, dass ich die erste Spalte nicht "von Hand" ausfüllen muss? Das muss doch irgendwie mit ner for-Schleife zu machen sein?

Doch ich komme da nicht weiter - egal wie ich es drehe und wende.. Wäre nett wenn jemand mir die passende for-Schleife zeigen könnte.

LG

Bild zum Beitrag
Computer, Schule, Programm, programmieren, C Sharp, Informatik, Programmiersprache, For-Schleife, Ausbildung und Studium

Meistgelesene Beiträge zum Thema Programmieren