Coding mit Java | Java-basierten APIs

  • Ersteller Ersteller ij9F_i0FaF-d9lrDSDDpDbfo
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
[Stelle diese Frage nochmals hier, da es empfohlen wurde!]
Hallo! :ninja:
Ich beschäftige mich gerade mit Java und programmiere nebenbei an meinem Plugin herum…
Zur Frage aber: (Sicherlich) kennt ihr diese Standartmeldung: Wenn ihr auf einem Vanilla-Server gebannt werdet, steht dort geschrieben: "Du wurdest vom Server gebannt…" (Bilder gibt's ja im Internet, wie Sand am Meer). :D
Ich habe aber nun vor, diese Meldung umzuschreiben, dennoch fehlt mir bei diesem Problem das Know-How, wie ich so etwas angehen sollte!
Am Ende sollte es aussehen wie die Bannachicht auf Gomme (siehe Internet!), evtl. auch verknüpft mit dem Befehl /ban (keine Ahnung ob das Zusammenhängt :p)
Vielleicht könnt ihr mir ja weiterhelfen, wie man sowas mit Eclipse selbst codet, denn auf YouTube existiert nur ein Review des Essentials(-ban) Plugin! :)

Dankeschön!
~Kl3xx

Hey, eine sehr einfache Möglichkeit, das "mit dem Befehl /ban" zu verknüpfen, wäre einfach das Erstellen eines eigenes Commands, siehe dazu Tutorials wie Sand am Meer im Internet. Ich empfehle dir aber den Befehlt nicht unbedingt /ban zu nennen, da es dann auch möglich ist, nur den Standard-Vanilla Befehl (vll. auch aus Versehen) auszuführen, welcher dann nur die Standard-Message anzeigt. Du musst den Spieler in deinem Command-Executor über die Bukkit-API bannen, damit dieser Bann server-weit registriert wird, schaue dir dazu also mal die API Dokumentation an. Soweit ich weiß, kannst du beim Hinzufügen eines BannListEntry einen String als Message übergeben, aber es ist natürlich auch möglich, den Spieler erst mit Player#kickPlayer(String reason) zu kicken und anschließend dem Server den Bann mitzuteilen.

Wenn du deine Nachricht auch anzeigen willst, sobald der Spieler probiert ein erneutes Mal auf den Server zu joinen, solltest du nicht das PlayerLoginEvent, wie erwähnt, sondern lieber ein Event das noch vorher im Login-Prozess ausgeführt wird, benutzen. Du brauchst, um zu überprüfen, ob ein Spieler gebannt ist, kein Player Objekt, die UUID sollte dir vollkommen reichen. Ich bin mir bei den Namen gerade nicht sicher, aber schau mal nach (Async)PlayerPreLoginEvent in der API Dokumentation.
Die BanList, welche direkt von der API zur Verfügung gestellt wird, hat aber auch eingeschränkte Funktionalitäten zum Anzeigen einer benutzerdefinierten Nachricht beim Joinen, sodass diese direkt beim Registrieren des Banns übergeben werden kann. Hier musst du entscheiden, was dir reicht; wenn du das selber machen möchtest, ist das allerdings kein sehr großer Aufwand, also durchaus umsetzbar.

Viele Grüße
1Darco1
 
  • Like
Reaktionen: _PiBo
HeyHou liebe Gommunity

Weiss jemand von euch wieso die Spieler nicht teleportiert werden und wieso der 2. Spieler in der ArrayList keine Nachricht bekommt?
PHP:
    @Override
    public boolean onCommand(CommandSender sender, Command cmd, String al, String[] args) {
        Player cs = (Player) sender;
        if (cmd.getName().equalsIgnoreCase("1vs1")) {  
        if(!(cs instanceof Player)) {
          return false;
        }
        final Player p = (Player) cs;          
        if (args.length != 1) {
         return false;
        } 
        if (args[0].equalsIgnoreCase("join")) {

          if (ingame.size() == 0 || ingame.size() == 1) {

            if(!ingame.contains(p.getName())) {

              ingame.add(p.getName());
              p.sendMessage("§f[§a1vs1§f] §bDu bist jetzt in der Warteliste.");

              return true;

            } else {

             return false;

            }
         
          } else if(ingame.size() == 1) {
                  Player q = Bukkit.getPlayer(ingame.get(2));
                  if (q != null) {
                      World w = Bukkit.getServer().getWorld(getConfig().getString("loc.world"));
                      double x = getConfig().getDouble("loc.x");
                      double y = getConfig().getDouble("loc.y");
                      double z = getConfig().getDouble("loc.z");
                      q.teleport(new Location(w, x, y, z));
                      World w2 = Bukkit.getServer().getWorld(getConfig().getString("loc.world2"));
                      double x2 = getConfig().getDouble("loc.x2");
                      double y2 = getConfig().getDouble("loc.y2");
                      double z2 = getConfig().getDouble("loc.z2");
                      p.teleport(new Location(w2, x2, y2, z2));
                      ingame.remove(1);
                      ingame.remove(2);
                     
                     
                      // Player q Items
                     
                      q.getInventory().addItem(new ItemStack(Material.DIAMOND_SWORD));
                      q.getInventory().setHelmet(new ItemStack(Material.DIAMOND_HELMET));
                      q.getInventory().setBoots(new ItemStack(Material.DIAMOND_BOOTS));
                      q.getInventory().setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS));
                      q.getInventory().setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE));
                     
                     
                      // Player p Items
                     
                      p.getInventory().addItem(new ItemStack(Material.DIAMOND_SWORD));
                      p.getInventory().setHelmet(new ItemStack(Material.DIAMOND_HELMET));
                      p.getInventory().setBoots(new ItemStack(Material.DIAMOND_BOOTS));
                      p.getInventory().setLeggings(new ItemStack(Material.DIAMOND_LEGGINGS));
                      p.getInventory().setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE));
  
              }
          } else {
              p.sendMessage("Warten ..");
          }
        }
      }

Freundliche Grüsse

Pecho
 
Player q = Bukkit.getPlayer(ingame.get(2));
[...]
ingame.remove(1);
ingame.remove(2);
Du schreibst, dass ingame eine ArrayList<Spieler> ist: Listen fangen (wie auch Arrays) mit 0 an zu zählen. D.h. anfangs hast du die beiden Spieler p und q an den Indices 0 und 1 in der Liste. Sobald du dann den Spieler an der "1." Stelle (also eigentlich an der zweiten) entfernst, hast du noch eine Liste, welche einen Spieler enthält - an der Position "0". Nun kannst du ganz offensichtlich nicht den Spieler an Stelle 2 entfernen - eine ArrayIndexOutOfBoundsException wird geworfen. Das gleiche gilt auch für ingame.get(2).

Fürs nächste Mal solltest du dir den Stacktrace anschauen, welche dir in der MC-Server-Konsole angezeigt wird. Dort solltest du genau dies ablesen können - sogar mit Zeilenangaben in deiner source-Datei.

MfG
1Darco1 - ja ich liebe Gedankenstriche.

PS: Spieler sollten eigentlich immer per UUID und nicht per Name gespeichert werden.
 
HeyHou Leute

Ich habe nochmals eine Frage: Ich habe ein System gefunden das alle Blöcke die weg gebaut wurden nach einer Zeit wieder kommen, ich möchte aber, dass die Blöcke die gebaut wurden nach dieser Zeit verschwinden. So sieht der Code aus:
PHP:
    public static void restore() {
        int blocks = 0;
       
        for (String b : changes) {
            String[] blockdata = b.split(":");
           
            int id = Integer.parseInt(blockdata[0]);
            byte data = Byte.parseByte(blockdata[1]);
            World world = Bukkit.getWorld(blockdata[2]);
            int x = Integer.parseInt(blockdata[3]);
            int y = Integer.parseInt(blockdata[4]);
            int z = Integer.parseInt(blockdata[5]);
           
            world.getBlockAt(x, y, z).setTypeId(id);
            world.getBlockAt(x, y, z).setData(data);
            blocks--;
        }
        System.out.println("MapReset: " + blocks + "Blöcke wurden gelöscht!");
    }

Freundliche Grüsse

Pecho
 
HeyHou Leute

Ich habe nochmals eine Frage: Ich habe ein System gefunden das alle Blöcke die weg gebaut wurden nach einer Zeit wieder kommen, ich möchte aber, dass die Blöcke die gebaut wurden nach dieser Zeit verschwinden. So sieht der Code aus:
PHP:
    public static void restore() {
        int blocks = 0;
    
        for (String b : changes) {
            String[] blockdata = b.split(":");
        
            int id = Integer.parseInt(blockdata[0]);
            byte data = Byte.parseByte(blockdata[1]);
            World world = Bukkit.getWorld(blockdata[2]);
            int x = Integer.parseInt(blockdata[3]);
            int y = Integer.parseInt(blockdata[4]);
            int z = Integer.parseInt(blockdata[5]);
        
            world.getBlockAt(x, y, z).setTypeId(id);
            world.getBlockAt(x, y, z).setData(data);
            blocks--;
        }
        System.out.println("MapReset: " + blocks + "Blöcke wurden gelöscht!");
    }

Freundliche Grüsse

Pecho

Was ist denn nun deine Frage? Gibt es einen Fehler? Was sagt der Stacktrace? Hast du die Exception schon probiert zu verstehen bzw. sie in eine Suchmaschine geworfen und die Ergebnisse angeguckt und durchgelesen? Was steht in-game? Und warum "blocks--;", wenn du am Ende aus gibst "blocks Blöcke wurden gelöscht!"? Wieso benutzt du nicht changes.length()? Oder ggf. changes.length() * -1?

Bitte zeige, was du schon getan und probiert hast, um dein Problem zu lösen und stelle doch ein paar konkrete(re) Fragen! Dann kann dir auch schneller geholfen werden ;)

MfG
1Darco1
 
Ich habe es bereits schon selbst geschafft! Ich möchte trotzdem mal noch anmerken, dass ihr alle so cool seid. Ihr helft immer so schnell es geht, finde ich echt toll. VIELEN DANK!
 
HeyHou

Ich habe mal eine ziemlich wichtige Frage an euch. Ich bin schon ziemlich lange daran eine Lösung zufinden, dass wenn ich etwas in der Config ändere das dies dann auch ingame geändert wird.

PROBLEM: Sobald ich etwas in der Config ändere passiert gar nichts. Es ist und bleibt ingame die gleiche Nachricht. Könnt ihr mir bitte helfen, wie ich mit dieser Config-Klasse eine Config machen kann die auch funktioniert.

Freundliche Grüsse

Pecho

ps. Error gibt es keinen


Main:

PHP:
package main;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;


public class main extends JavaPlugin implements Listener {
   
    configaccessor config;
   
    public void onEnable() {
    Bukkit.getPluginManager().registerEvents(this, this);
    System.out.println("[Event] ONLINE");
    config = new configaccessor(this, "config.yml", "config");
    config.saveDefaultConfig();
    config.saveConfig();
  }

  public void onDisable() {
    System.out.println("[Event] OFFLINE");
  }

  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    Player p = (Player)sender;
    if (cmd.getName().equalsIgnoreCase("event")) {
      if (!p.isOp()) {
        String nopexmsg = config.getConfig().getString("config.nopex");
        p.sendMessage(ChatColor.translateAlternateColorCodes('&', nopexmsg));
        return true;
      }
      if (args.length == 0) {
       
      } else {
         
        if ((args.length == 1) && (args[0].equalsIgnoreCase("on"))) {
          sendGet("example.de");
          Bukkit.getServer().setWhitelist(false);
          String disablemsg = config.getConfig().getString("config.disablemsg");
          p.sendMessage(ChatColor.translateAlternateColorCodes('&', disablemsg));
          String eventenablemsg = config.getConfig().getString("config.eventenablemsg");
          Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', eventenablemsg));
        }
       
       
        if (args[0].equalsIgnoreCase("off")) {
          String eventdisablemsg = config.getConfig().getString("config.eventdisablemsg");
          Bukkit.broadcastMessage(ChatColor.translateAlternateColorCodes('&', eventdisablemsg));
          for (Player all : Bukkit.getOnlinePlayers()) {
              if ((!all.isOp()) && (!p.isWhitelisted())) {
                  String kickmsg = config.getConfig().getString("config.kickmsg");
                  all.kickPlayer(ChatColor.translateAlternateColorCodes('&', kickmsg));
                 }
               }
          Bukkit.getServer().setWhitelist(true);
          String enablemsg = config.getConfig().getString("config.enablemsg");
          p.sendMessage(ChatColor.translateAlternateColorCodes('&', enablemsg));
        }
      }
    }
    return false;
  }



ConfigAccesor:
PHP:
package main;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.util.logging.Level;



import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.plugin.java.JavaPlugin;

public class configaccessor {

    private final String fileName;
    private final JavaPlugin plugin;
   
    private File configFile;
    private FileConfiguration fileConfiguration;

    @SuppressWarnings("deprecation")
    public configaccessor(JavaPlugin plugin, String fileName, String path) {
        if (plugin == null)
            throw new IllegalArgumentException("plugin cannot be null");
        if (!plugin.isInitialized())
            throw new IllegalArgumentException("plugin must be initialized");
        this.plugin = plugin;
        this.fileName = fileName;
        File dataFolder = plugin.getDataFolder();
        if (dataFolder == null)
            throw new IllegalStateException();
        this.configFile = new File(path, fileName);
    }

    public void reloadConfig() {       
        fileConfiguration = YamlConfiguration.loadConfiguration(configFile);

        // Look for defaults in the jar
        InputStream defConfigStream = plugin.getResource(fileName);
        if (defConfigStream != null) {
            @SuppressWarnings("deprecation")
            YamlConfiguration defConfig = YamlConfiguration.loadConfiguration(defConfigStream);
            fileConfiguration.setDefaults(defConfig);
        }
    }

    public FileConfiguration getConfig() {
        if (fileConfiguration == null) {
            this.reloadConfig();
        }
        return fileConfiguration;
    }

    public void saveConfig() {
        if (fileConfiguration == null || configFile == null) {
            return;
        } else {
            try {
                getConfig().save(configFile);
            } catch (IOException ex) {
                plugin.getLogger().log(Level.SEVERE, "Could not save config to " + configFile, ex);
            }
        }
    }
   
    public void saveDefaultConfig() {
        if (!configFile.exists()) {           
            this.plugin.saveResource(fileName, false);
        }
    }

}
 
Beim ConfigAccessor ist alles richtig, denke ich. Bei der main-Klasse ist meines Wissens etwas falsch.
 
Evtl. so wie bei mir
meine Main heißt Conquest

Code:
package de.Finnthehorrible.Conquest.Main;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitTask;

import javax.xml.stream.Location;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicInteger;

public class Conquest extends JavaPlugin implements Listener, Runnable {

    @Override
    public void onEnable() {
        HashMap<String, Location> Stats = new HashMap<>();
        HashMap<String, Location> Towerlocation = new HashMap<>();


        Towerlocation.put(new String("Du hast den Tower" + Towerlocation + "eingenommen!"), (Location) this);

        ArrayList<String> Tankstelle = new ArrayList<String>();
        ArrayList<String> Bahnhof = new ArrayList<String>();
        ArrayList<String> Berg = new ArrayList<String>();
        ArrayList<String> Strasse = new ArrayList<String>();
        ArrayList<String> Wald = new ArrayList<String>();

        String KillMessage = "Du hast" + getName() + "getötet!";
        String DeathMessage = "Du wurdest von" + getName() + "getötet1";

        Towerlocation.put(new String(), (Location) this);

        Stats.put(new String(), (Location) this);

        String DeEinnehmMessage1 = "Die Location" + Towerlocation + Tankstelle + "wurde erobert!";
        String EinnehmMessage1 = "Die Location" + Towerlocation + Tankstelle + "wurde eingenommen!";
        String DeEinnehmMessage2 = "Die Location" + Towerlocation + Bahnhof + "wurde erobert!";
        String EinnehmMessage2 = "Die Location" + Towerlocation + Bahnhof + "wurde eingenommen!";
        String DeEinnehmMessage3 = "Die Location" + Towerlocation + Berg + "wurde erobert!";
        String EinnehmMessage3 = "Die Location" + Towerlocation + Berg + "wurde eingenommen!";
        String DeEinnehmMessage4 = "Die Location" + Towerlocation + Strasse + "wurde erobert!";
        String EinnehmMessage4 = "Die Location" + Towerlocation + Strasse + "wurde eingenommen!";
        String DeEinnehmMessage5 = "Die Location" + Towerlocation + Wald + "wurde erobert!";
        String EinnehmMessage5 = "Die Location" + Towerlocation + Wald + "wurde eingenommen!";

        Stats.put(new String(), (Location) this);

        Towerlocation.put(new String(), (Location) this);

        System.out.println(KillMessage);
        System.out.println(DeathMessage);

        System.out.println(DeEinnehmMessage1);
        System.out.println(EinnehmMessage1);
        System.out.println(DeEinnehmMessage2);
        System.out.println(EinnehmMessage2);
        System.out.println(DeEinnehmMessage3);
        System.out.println(EinnehmMessage3);
        System.out.println(DeEinnehmMessage4);
        System.out.println(EinnehmMessage4);
        System.out.println(DeEinnehmMessage5);
        System.out.println(EinnehmMessage5);
    }


    @SuppressWarnings("unused")
    private void register() {
        PluginManager pm = Bukkit.getPluginManager();

    }

    private final AtomicInteger countdown;

    private BukkitTask bukkitTask;

    public Conquest( int seconds ) {
        countdown = new AtomicInteger( seconds + 1 );

    }
    @Override
    public void run() {
        int counter = countdown.decrementAndGet();

        if (counter > 0) {
            Bukkit.broadcastMessage(ChatColor.GREEN + "Das Spiel startet in " + ChatColor.GOLD + counter + ChatColor.GREEN + " sekunden!");
        } else {
            Bukkit.broadcastMessage(ChatColor.RED+"Durch ein Fehler startet das Spiel nicht!");
            stop();
        }
    }

    public void start() {

    }

    public void stop() {
        bukkitTask.cancel();

}
    @EventHandler
    public void onQuit(PlayerQuitEvent e){
        Player p = e.getPlayer();
        if(p.getName().equalsIgnoreCase("")) {
            e.setQuitMessage("§4Admin §7|§4 " + p.getName() + "§3hat das Spiel betreten!");
        } else {
            e.setQuitMessage("§a" + p.getName() + "§3hat das Spiel betreten!");
        }
    }
    @EventHandler

    public void onJoin(PlayerJoinEvent e){
        Player p = e.getPlayer();
        if(p.getName().equalsIgnoreCase("")) {
            e.setJoinMessage("§4Admin §7|§4 " + p.getName() + "§3hat das Spiel betreten!");
        } else {
            e.setJoinMessage("§a"+p.getName()+"§3hat das Spiel betreten!");




        }

        this.getConfig().options().header("Du hast das Spiel gestartet!");
        this.getConfig().addDefault("Conquest.commands.START.message.You are Startet the Game!", "Du hast das Spiel gestartet!");

        this.getConfig().options().header("Du wurdest zurück zur Lobby Teleportiert!");
        this.getConfig().addDefault("Conquest.commands.HUB.message.You are Teleported back to the Lobby!", "Du wurdest zur Lobby zurück Teleportiert!");
        getConfig().addDefault("Conquest.commands.LEAVE.message.You are Teleported back to the Lobby!", "Du wurdest zur Lobby zurück Teleportiert!");
        getConfig().addDefault("Conquest.commands.L.message.You are Teleported back to the Lobby!", "Du wurdest zur Lobby zurück Teleportiert!");


        this.getConfig().addDefault("", "");

    }


    @EventHandler
    public void onChat(AsyncPlayerChatEvent e) {
        e.setCancelled(true);
        Player p = e.getPlayer();
        String name = p.getDisplayName();
        String msg = e.getMessage();
        for (Player a : Bukkit.getOnlinePlayers()) {
            if (p.hasPermission("lobby.admin") || p.isOp()) {
                a.sendMessage("§4Admin | " + name + "§4: §f" + msg);

            } else if (p.hasPermission("lobby.blue") || p.isOp()) {
                a.sendMessage("§1" + name + "§1: §f" + msg);
            } else if (p.hasPermission("lobby.red") || p.isOp()) {
                a.sendMessage("§4" + name + "§4: §f" + msg);
            } else {
                a.sendMessage("§f" + name + "§a: §f" + msg);


            }
        }
    }

    @EventHandler
    public void onMove(PlayerMoveEvent event){
        Player p = event.getPlayer();
        p.setGameMode(GameMode.SURVIVAL);
        if(event != null){
        } else {
            p.setGameMode(GameMode.SPECTATOR);

        }
    }


    public void onDisable(){

    }
}
 
Evtl. so wie bei mir
meine Main heißt Conquest

Code:
package de.Finnthehorrible.Conquest.Main;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitTask;

import javax.xml.stream.Location;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicInteger;

public class Conquest extends JavaPlugin implements Listener, Runnable {

    @Override
    public void onEnable() {
        HashMap<String, Location> Stats = new HashMap<>();
        HashMap<String, Location> Towerlocation = new HashMap<>();


        Towerlocation.put(new String("Du hast den Tower" + Towerlocation + "eingenommen!"), (Location) this);

        ArrayList<String> Tankstelle = new ArrayList<String>();
        ArrayList<String> Bahnhof = new ArrayList<String>();
        ArrayList<String> Berg = new ArrayList<String>();
        ArrayList<String> Strasse = new ArrayList<String>();
        ArrayList<String> Wald = new ArrayList<String>();

        String KillMessage = "Du hast" + getName() + "getötet!";
        String DeathMessage = "Du wurdest von" + getName() + "getötet1";

        Towerlocation.put(new String(), (Location) this);

        Stats.put(new String(), (Location) this);

        String DeEinnehmMessage1 = "Die Location" + Towerlocation + Tankstelle + "wurde erobert!";
        String EinnehmMessage1 = "Die Location" + Towerlocation + Tankstelle + "wurde eingenommen!";
        String DeEinnehmMessage2 = "Die Location" + Towerlocation + Bahnhof + "wurde erobert!";
        String EinnehmMessage2 = "Die Location" + Towerlocation + Bahnhof + "wurde eingenommen!";
        String DeEinnehmMessage3 = "Die Location" + Towerlocation + Berg + "wurde erobert!";
        String EinnehmMessage3 = "Die Location" + Towerlocation + Berg + "wurde eingenommen!";
        String DeEinnehmMessage4 = "Die Location" + Towerlocation + Strasse + "wurde erobert!";
        String EinnehmMessage4 = "Die Location" + Towerlocation + Strasse + "wurde eingenommen!";
        String DeEinnehmMessage5 = "Die Location" + Towerlocation + Wald + "wurde erobert!";
        String EinnehmMessage5 = "Die Location" + Towerlocation + Wald + "wurde eingenommen!";

        Stats.put(new String(), (Location) this);

        Towerlocation.put(new String(), (Location) this);

        System.out.println(KillMessage);
        System.out.println(DeathMessage);

        System.out.println(DeEinnehmMessage1);
        System.out.println(EinnehmMessage1);
        System.out.println(DeEinnehmMessage2);
        System.out.println(EinnehmMessage2);
        System.out.println(DeEinnehmMessage3);
        System.out.println(EinnehmMessage3);
        System.out.println(DeEinnehmMessage4);
        System.out.println(EinnehmMessage4);
        System.out.println(DeEinnehmMessage5);
        System.out.println(EinnehmMessage5);
    }


    @SuppressWarnings("unused")
    private void register() {
        PluginManager pm = Bukkit.getPluginManager();

    }

    private final AtomicInteger countdown;

    private BukkitTask bukkitTask;

    public Conquest( int seconds ) {
        countdown = new AtomicInteger( seconds + 1 );

    }
    @Override
    public void run() {
        int counter = countdown.decrementAndGet();

        if (counter > 0) {
            Bukkit.broadcastMessage(ChatColor.GREEN + "Das Spiel startet in " + ChatColor.GOLD + counter + ChatColor.GREEN + " sekunden!");
        } else {
            Bukkit.broadcastMessage(ChatColor.RED+"Durch ein Fehler startet das Spiel nicht!");
            stop();
        }
    }

    public void start() {

    }

    public void stop() {
        bukkitTask.cancel();

}
    @EventHandler
    public void onQuit(PlayerQuitEvent e){
        Player p = e.getPlayer();
        if(p.getName().equalsIgnoreCase("")) {
            e.setQuitMessage("§4Admin §7|§4 " + p.getName() + "§3hat das Spiel betreten!");
        } else {
            e.setQuitMessage("§a" + p.getName() + "§3hat das Spiel betreten!");
        }
    }
    @EventHandler

    public void onJoin(PlayerJoinEvent e){
        Player p = e.getPlayer();
        if(p.getName().equalsIgnoreCase("")) {
            e.setJoinMessage("§4Admin §7|§4 " + p.getName() + "§3hat das Spiel betreten!");
        } else {
            e.setJoinMessage("§a"+p.getName()+"§3hat das Spiel betreten!");




        }

        this.getConfig().options().header("Du hast das Spiel gestartet!");
        this.getConfig().addDefault("Conquest.commands.START.message.You are Startet the Game!", "Du hast das Spiel gestartet!");

        this.getConfig().options().header("Du wurdest zurück zur Lobby Teleportiert!");
        this.getConfig().addDefault("Conquest.commands.HUB.message.You are Teleported back to the Lobby!", "Du wurdest zur Lobby zurück Teleportiert!");
        getConfig().addDefault("Conquest.commands.LEAVE.message.You are Teleported back to the Lobby!", "Du wurdest zur Lobby zurück Teleportiert!");
        getConfig().addDefault("Conquest.commands.L.message.You are Teleported back to the Lobby!", "Du wurdest zur Lobby zurück Teleportiert!");


        this.getConfig().addDefault("", "");

    }


    @EventHandler
    public void onChat(AsyncPlayerChatEvent e) {
        e.setCancelled(true);
        Player p = e.getPlayer();
        String name = p.getDisplayName();
        String msg = e.getMessage();
        for (Player a : Bukkit.getOnlinePlayers()) {
            if (p.hasPermission("lobby.admin") || p.isOp()) {
                a.sendMessage("§4Admin | " + name + "§4: §f" + msg);

            } else if (p.hasPermission("lobby.blue") || p.isOp()) {
                a.sendMessage("§1" + name + "§1: §f" + msg);
            } else if (p.hasPermission("lobby.red") || p.isOp()) {
                a.sendMessage("§4" + name + "§4: §f" + msg);
            } else {
                a.sendMessage("§f" + name + "§a: §f" + msg);


            }
        }
    }

    @EventHandler
    public void onMove(PlayerMoveEvent event){
        Player p = event.getPlayer();
        p.setGameMode(GameMode.SURVIVAL);
        if(event != null){
        } else {
            p.setGameMode(GameMode.SPECTATOR);

        }
    }


    public void onDisable(){

    }
}

Solltest dir mal Java Conventions angucken. Dringendst. Die Lesbarkeit deines Codes ist definitiv noch verbesserungswürdig.

EDIT: @Pecho, gleiches gilt auch für dich.
 
Zuletzt bearbeitet:
Hey, kann mir vlt. jemand helfen wie bekomme ich vom AsyncPlayerChatEvent mehrere Argumente also die vom Spieler?
sprich args1.sendmessage("Test");
 
Countdown:

Code:
try {
  int countDown = 10;
  for(;;) {
    if ( countDown == 0 ) {
      break;
    }

    try {
      Thread.sleep(1000);
    } catch ( InterruptedException e ) { }

    // Always returns true
    if (true) {
       Bukkit.broadcastMessage( countDown );
    }
    countDown--;
  }
} catch ( OutOfMemoryException e ) { } // Memory problems ?! NOPE

So machen wir das immer :)
Wären das dann nicht nur 9 Sekunden bis der countdown zu ende ist? Oder bin ich da komplett dumm.
 
Ja die Plugins die wir machen sind Multilanguage kompatibel. Da wir aber ein rein deutsches Netzwerk sind und dies auch so bleiben wird werden wir (Zeitpunkt jetzt) keine weiteren Sprachen hinzufügen. Wenn dies mal notwendig sein sollte brauchen wir dann eh Leute die die Sprache in die wir übersetzen möchten ein wenig mehr beherrschen als wir :)

Wenn ihr wollt kann ich euch ein paar Fragen zum programmieren und so beantworten wenn ihr mir versprecht das das nicht komplett ausartet :)
Google Übersetzer regelt :P
 
Hey,

ich möchte, dass wenn ein Spieler auf den Server joint ein Header bei Tab angezeigt wird, dazu benutzte ich eine Funktion, die beim PlayerJoinEvent aufgerufen wird, allerdings wird sofort wieder gekickt, wenn man verusucht zu joinen.

Code:
public static void addTabHeader(Player p, String headerTxt){
        CraftPlayer cp = (CraftPlayer) p;
        PlayerConnection connection = cp.getHandle().playerConnection;
        IChatBaseComponent header = ChatSerializer.a("{text:'" + headerTxt + "'}");
        PacketPlayOutPlayerListHeaderFooter packet = new PacketPlayOutPlayerListHeaderFooter();
       
        Field headerField;
        try {
            headerField = packet.getClass().getDeclaredField("a");
            headerField.setAccessible(true);
            headerField.set(packet, header);
            headerField.setAccessible(!headerField.isAccessible());
        } catch (Exception e) {
            e.printStackTrace();
        }

        connection.sendPacket(packet);
    }

Weiß jemand von euch, wie man das beheben kann?
 
Status
Für weitere Antworten geschlossen.

Soziale Medien

  • X
  • TikTok

Über uns

  • GommeHD.net ist einer der größten Minecraft-Server der Welt. Dir gefällt unser Server? Dann unterstütze uns durch einen Kauf im Shop!
  • Shop