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
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
Minecraft Spigot PlayerBreakBlock Animation?

Servus,

ich versuche gerade eine Animation, die passiert wenn jemand einen Block platziert.

Die Animation soll den Block langsam zerstören

Was ich jz gemacht habe:

if(e.getBlock().getType().equals(Material.STONE)) {	
		e.getPlayer().sendMessage("Block placed");
		Bukkit.getScheduler().scheduleAsyncRepeatingTask(gameManager, new Runnable() {
			int blockBreakState = 0;
			PacketPlayOutBlockBreakAnimation packet = new PacketPlayOutBlockBreakAnimation(0, new BlockPosition(e.getBlock().getX(), e.getBlock().getY(), e.getBlock().getZ()), blockBreakState);
			@Override
			public void run() {
				//e.getBlock()
				if(blockBreakState <= 10) {
					packet = new PacketPlayOutBlockBreakAnimation(0, new BlockPosition(e.getBlock().getX(), e.getBlock().getY(), e.getBlock().getZ()), blockBreakState);
					for(Player t : Bukkit.getOnlinePlayers()) {
						((CraftPlayer) t).getHandle().playerConnection.sendPacket(packet);
					}
				}else {
					e.getBlock().setType(Material.AIR);
					return;
				}
				blockBreakState += 1;
			}
		}, 1*20, 1*20);	
		return;
	}else {
		e.getPlayer().sendMessage("ne1");
	}

So,
Leider habe ich keine Ahnung wie man "CraftPlayer" importiert. Ich habe viel drüber gelesen und mit Git versucht Buildtools zu kompilieren aber habe es nicht geschafft

Hat jemand Ahnung davon und weiß wie man die Animation richtig hinkriegt?

Danke im Vorraus!!

Computer, programmieren, Java, Minecraft, Minecraft Server, Bukkit, craftbukkit, Spigot, Minecraft Plugin, plugins programmieren, Spigot Plugin
JDA: Wie kann man einen Command aus einer anderen Klasse in die Main-Klasse einprogrammieren?

Hallo Leute,

ich möchte mit Java und der JDA einen Discord-Bot programmieren.

Nur weiß ich nicht, wie man einen Command aus einer anderen Klasse in die Main-Klasse einprogrammiert.

Code der Main-Klasse:

package de.AkenoSan.MeineTochter;

import de.AkenoSan.MeineTochter.Commands;
import javax.security.auth.login.LoginException;
import net.dv8tion.jda.api.OnlineStatus;
import net.dv8tion.jda.api.entities.Activity;
import net.dv8tion.jda.api.sharding.DefaultShardManagerBuilder;

public class Main {
  public static void main(String[] args) throws LoginException, IllegalArgumentException {
    DefaultShardManagerBuilder builder = new DefaultShardManagerBuilder();
    builder.setToken("blablabla halt der Token");
    builder.setActivity(Activity.playing("NICHT FORTNITE"));
    builder.setStatus(OnlineStatus.ONLINE);
    builder.build();
  }
}

Code meiner Klasse, wo die Commands sind:

package de.AkenoSan.MeineTochter;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class Commands {
  public void say() {
    new Thread(() -> {
      String line = "";
      BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

      try {
        while ((line = reader.readLine()) != null) {
          if (line.contains("#")) {
            if (line.startsWith("#")) {
              if (line.endsWith("say")) {
              }
            }
          }
        }
      }
      catch(IOException e) {
        e.printStackTrace();
      }
    }).start();
  }
}

Ich habe schon meine Commands-Klasse in die Main importiert, aber was muss ich jetzt machen?

Computer, Java, Bot, jda, Discord, Discord Bot

Meistgelesene Beiträge zum Thema Java