Ich würde sogar zu equalsIgnoreCase greifen.

Einfach damit Befehle wie "Help" oder "helP" auch erkannt werden:

if(c.equalsIgnoreCase(a)) {
//Do something
}
...zur Antwort

Statt "this" musst du eine Instanz deiner Main Klasse übergeben.

"this" funktioniert nur, wenn sich der Code in der Main Klasse befindet

Am besten in Zukunft auch alle Fehlermeldungen verlinken

...zur Antwort

Computer mit denen man halbwegs was anfangen kann starten eher ab 700€:

https://m.notebooksbilliger.de/hp+desktop+m01+f1022ng+687891

Mit einem selbst zusammenstellten kommt man vielleicht noch etwas besser weg, aber ich denke der Unterschied ist zur Zeit recht gering.

Ich würde dir empfehlen noch ein klein wenig zu sparen

...zur Antwort

Als Hoster kann ich schildiihost sehr empfehlen.

Wir hatten dort einen (kvm) vServer welcher 100+ Spieler ausgehalten hat.

Ich persönlich würde immer zu einem vServer greifen wenn möglich.

Damit hast du einfach mehr Möglichkeiten, wenn es dann doch mal irgendwas anderes sein soll.

Aber diese Entscheidung solltest du für dich treffen.

Ich würde einen Server mit 4-6GB RAM empfehlen.

Bei einem vServer 5-7GB und nur 4-6GB dem MC Server zuweisen

...zur Antwort

Hey,

Benutzt du zufällig Java 16?

Wenn ja, versuche mal Java 8 oder Java 11

...zur Antwort

Nimm am besten einfach alles in einen Scheduler:

Bukkit.getScheduler().runTaskLater(this, () -> {
//Dein Code
}, 1L);

Das ist die einfachste Methode

...zur Antwort

Nein, dies ist unmöglich.

Selbst wenn man einen Spigot Fork machen würde der diesen asynchron ausführen würde.

Das Problem ist nämlich, dass ein Haufen der Bukkit API nur auf dem Main Thread ausgeführt werden kann.

Außerdem würden während eines Reloads alle Plugins nicht funktionieren.

Unter anderem das Plugin mit dem dein Spawn gesichert wird.

Willst du etwa, dass Spieler während dem Reload deinen Spawn auseinander nehmen können?

Ich würde dir PlugManX empfehlen.

Damit kannst du einzelne Plugins neu laden.

Das ist sicherer und schneller als der ganze Server

(Wenn du damit alle Plugins neu lädst unterscheidet sich das nicht von einem normalen Reload!)

...zur Antwort

Ich persönlich fände den Copper Golem am besten.

Nein, nicht wegen dem Blitzableiter, sondern weil dieser zufällig Kupferknöpfe drückt.

Damit könnte ich sehr viel lustiges anfangen.

Außerdem will ich unbedingt Kupferknöpfe ._.

Der Item Sammler hätte für mich keinen praktischen nutzen.

Und der grummelnde Busch ergibt einfach keinen Sinn bzw. ist vollkommen unnötig.

Ich brauche keinen grummelnden Busch, um eine schwarze dunkle Ecke in der Monster spawnen können zu entdecken...

...zur Antwort

Ich kann "Prism" sehr empfehlen.

Hat zwar eine recht steile Lernkurve, aber meiner Erfahrung nach ist Prism deutlich besser als die Alternativen.

Ich kenne aber auch zwei Alternativen:

"CoreProtect", hat eine ähnlich steile Lernkurve wie Prism, hat aber eine bessere Dokumentation.

"LogBlock", benötigt zwingend eine MySQL Datenbank, ist aber von allen dreien am einfachsten zu bedienen und hat somit fast gar keine Lernkurve

...zur Antwort

Minecraft Plugin Listener funktioniert nicht?

Hallo,

ich habe aus Langeweile mal ein kleines Plugin programmiert. Dort drin enthalten ist ein Listener, der auf eine Interaktion mit einem Item hört. (ItemInteractEvent) und danach je nach Item eine unterschiedliche Funktion ausführt. Ich denke ich habe anscheinend den Listener falsch registriert, da bei einem anderen (EntityDeathEvent)

auch nichts passiert, auch die Nachricht wird nicht ausgegeben.

Ich hoffe jemand kann mit helfen.

LG,

Finnian

Der Code

MainClass

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

import de.finnian.funplugin.commands.GoodStuffCmd;
import de.finnian.funplugin.listeners.EntityDeath;
import de.finnian.funplugin.listeners.InteractListener;

public class Main extends JavaPlugin{
    
    public void onEnable() {
        System.out.println("Das FunPlugin wurde angeschaltet.");
        registerListeners();
        registerCommands();
        PluginManager pm = Bukkit.getPluginManager();
           }

    public void registerListeners() {
      pm.registerEvents(new InteractListener(), this);
        pm.registerEvents(new EntityDeath(), this);
   
        
        }
    
    public void registerCommands() {
        getCommand("opstuff").setExecutor(new GoodStuffCmd());
        
    }
}

InteractListener

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.entity.WitherSkull;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.player.PlayerInteractEvent;

import net.md_5.bungee.api.ChatColor;


public class InteractListener implements Listener{
    
    
    
    public void onInteract(PlayerInteractEvent e) {
        Player p = e.getPlayer();
        
        
        if (e.getAction() == Action.RIGHT_CLICK_BLOCK) {
            
        }
        
        
        else if (e.getAction() == Action.RIGHT_CLICK_AIR) {
            
            if (e.getItem().equals(Material.LIGHT_BLUE_CARPET)) {
                Bukkit.getWorld("world").getBlockAt(p.getLocation()).setType(Material.WATER);
                p.sendMessage(ChatColor.BLUE + "Das Wasser wurde plaziert(vllt. hilft es dir ja).");
            }
            
        }
        
        
        else if (e.getAction() == Action.RIGHT_CLICK_BLOCK || e.getAction() == Action.RIGHT_CLICK_AIR) {
            
            if (e.getItem().equals(Material.WITHER_SKELETON_SKULL)) {
                p.launchProjectile(WitherSkull.class);
                p.sendMessage(ChatColor.RED + "Du hast einen Witherkopf abgefeuert.");
                
            }
            
            else if (e.getItem().equals(Material.FIREWORK_ROCKET)) {
                Bukkit.getWorld("world").createExplosion(p.getLocation(), 20);
                p.sendMessage(ChatColor.DARK_RED + "Achtung! Du hast eine Explosion ausgelöst!");
                
            }
            
        
            
            
            
        }
        
    }

}


...zur Frage

Das Problem ist, dass ein ItemStack nicht mit einem Material verglichen werden kann.

Richtig wäre es e.getItem().getType() zu verwenden.

Ein Beispiel:

if (e.getItem().getType() == Material.BARRIER) {
//Do stuff
}
...zur Antwort

Hallo,

Ich kenne kein Plugin das Befehle auf bestimmte Welten beschränkt, aber ich werde mir mal angucken was man dafür tun müsste.

Wenn ich etwas brauchbares geschafft habe, lasse ich einfach einen Link da.

In jeder Welt ein eigenes Inventar geht am einfachsten mit PerWorldInventory.

Damit kannst du auch einstellen welche Welten das selbe Inventar nutzen sollen

...zur Antwort

Hallo,

Du musst in die Konsole vom Proxy.

Dann kannst du dort einfach "send Spielername Server" eingeben.

Generell gibt man in einer Konsole kein / ein, deshalb habe ich das auch nicht mit eingebracht

...zur Antwort

Hallo,

Der Exit Code 128 ist anscheinend von Pterodactyl und scheint irgendwas mit der IP zu tun zu haben.

Probiere mal die Datei "server.properties" zu löschen und versuche dann nochmal zu starten.

Wenn das nicht geht, würde ich dir einfach mal empfehlen dich im Support zu melden

...zur Antwort

Sie könnte Fabric installieren und Mal Sodium ausprobieren.

Das soll angeblich viel besser als Optifine optimieren

...zur Antwort

Deinserverhost mit dem vServer Flex und schildiihost mit deren LXC vServer sind sehr günstig

...zur Antwort

Ars Magica.

Der rote Balken zeigt deinen "Burn Out", je voller desto mehr Magie verbrauchst du pro Spell.

Der blaue Balken wäre dann deine Magieanzeige.

Kann man soweit ich weiß nicht deaktivieren.

Aber stören sollten diese Anzeigen jetzt wohl auch nicht, oder doch?

...zur Antwort