Bukkit Plugins Programmieren!

3 Antworten

Nach der If-Verzweigung, wo getestet wird ob der Command "Countdown" ist machst du einfach:

high = 21;

Aber ich verstehe nicht wie du es schaffen kannst so ein Plugin zu programmieren wenn du nicht mal weißt wie man den Wert einer Varibale ändert xD

Ist so xD

1

Bei else nach sendMessega,setFoodLevel und so weiter kannst du einfach noch eine Zeile schreiben und den Integer dadurch zurücksetzen. also high = 0 oder welchen wert auch immer

Aber dann habe ich doch den Integer auf Null gesetzt oder ?

0
@HolzBrot1212

Und weist du wie man ein Tracker programmiert der halt anzeigt wie viel Blöcke der nächste Spieler weg ist

0

Muss dir leider sagen wenn du java könntest wüsstest du wie

Bei bestimmter Spielerzahl Countdown Starten?

ich programmiere gerade ein Plugin und ab auch schon alles geschaut das es z,b einen Spieler erkennt aber er führt den Countdown nicht aus! es kommt auch keine fehlermeldung

Mein PlayerJoinEvent + Countdown:

    if(Bukkit.getOnlinePlayers().size() == 1){
        scheduler = Bukkit.getScheduler().scheduleAsyncRepeatingTask(this, new Runnable(){

            @Override
            public void run() {
                if(nummer != 0){
                    nummer--;
                    Bukkit.broadcastMessage("§7§1"+nummer);
                }else{
                    Bukkit.broadcastMessage("Go");
                    Bukkit.getScheduler().cancelTask(scheduler);
                }
                
            }
            
        }, 0, 20);
        
    }
...zur Frage

Minecraft "Anti Chat Spam" programmieren?

Hallo, ich wollte mal ein "Anti Spam" für Minecraft mit Java Programmieren,

Das kann man ja mit Scheduler machen, hier ist mein code. ich habe das im Internet so gesehen dass es eig. so funktionieren soll:

public class AntiSpamListener implements Listener {
    
    public static ArrayList<Player> chat = new ArrayList<>();
    
    @EventHandler
    
    public void onChat(AsyncPlayerChatEvent e) {
        
        Player p = (Player)e.getPlayer();
        
        if(!chat.contains(p)) {
            
            chat.add(p);
            
            e.setCancelled(false);
            
            Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable() {
                
                @Override
                public void run() {
                    
                    chat.remove(p);
                    
                }
            }, 20*2);
            
        } else {
            
            p.sendMessage(EssentialsMain.Chat + "Bitte schreibe etwas langsamer.");
            
            e.setCancelled(true);
            
        }
        
    }

}
    
...zur Frage

In for schleife werden Spieler immer mehr?

Hallo. Ich habe eine Frage. Ich Programmiere Java Minecraft Plugins. Ich habe in einem Scheduler der, jede Sekunde ausgeführt wird, eine for schleife, in der alle Spieler in all abgespeichert werden. Jedoch ist es so, dass die Funktion (gekennzeichnet mit //a) mehrmals ausgeführt wird, je mehr Spieler auf dem Server waren. Kann man das Irgendwie verhindern?

Hier ein Video um zu erläutern wie ich das Meine; https://youtu.be/-_26qo3DTJ4

Code:

public void onKick(Player p) {
    if(!Bukkit.getScheduler().isCurrentlyRunning(sched)) {
        sched = Bukkit.getScheduler().scheduleSyncRepeatingTask(main, new Runnable() {
            
            @Override
            public void run() {
                
                if(Bukkit.getOnlinePlayers().size() == 0) {
                    Bukkit.getScheduler().cancelTask(sched);
                    return;
                }
                
                long jetzt = System.currentTimeMillis();
                
                for(Player all : Bukkit.getOnlinePlayers()) {
                    if(zeit.containsKey(all.getName())) {
                        int rest = (int) ((zeit.get(all.getName()) + (1*1000*60)) - jetzt);
                        if(rest/1000 == 30) {
                            MSG(all.getName(), 30); //a
                        }else if(rest/1000 == 20) {
                            MSG(all.getName(), 20); //a
                        }else if(rest/1000 == 10) {
                            MSG(all.getName(), 10); //a
                        }else if(rest/1000 == 5) {
                            MSG(all.getName(), 5); //a
                        }else if(rest/1000 == 4) {
                            MSG(all.getName(), 4); //a
                        }else if(rest/1000 == 3) {
                            MSG(all.getName(), 3); //a
                        }else if(rest/1000 == 2) {
                            MSG(all.getName(), 2); //a
                        }else if(rest/1000 == 1) {
                            MSG(all.getName(), 1); //a
                        }else if(rest/1000 <= 0) { //&lt;= bedeutet kleiner gleich
                            all.kickPlayer("§cDu wurdest gekickt, da deine Spielzeit abgelaufen ist!");
                            zeit.remove(all.getName());
                            if(Bukkit.getOnlinePlayers().size() == 0) {
                                Bukkit.getScheduler().cancelTask(sched);
                            }
                        }
                    }
                }
            }
        }, 0, 20);
    }
}

 //a
public void MSG(String name, int i) {
    if(main.getConfig().getBoolean("KickCountdown."+name)){
        Bukkit.broadcastMessage("§b"+name+ " §7wird in §b"+i+" §7Sekunden gekickt!");
        main.getConfig().set("KickCountdown."+name, false);
        main.saveConfig();
        Bukkit.getScheduler().runTaskLater(main, new Runnable() {
            
            @Override
            public void run() {
                main.getConfig().set("KickCountdown."+name, true);
                main.saveConfig();
            }
        }, 19);
    }
}
...zur Frage

Wieso funktioniert dieses Minecraft Plugin nicht?

Hi Leute,

ich habe hier ein Minecraft Plugin, dass Spielernamen aus einer Datenbank auslesen soll (mit dem Command /player wird alles gestartet). Wenn ich aber /player eingebe, kommt sowas wie com.mysql.jdbc.JBDC4ResultSet@23bd1b13.

What did I do wrong???

LG, hier ist der Code:

@Override
public void onEnable() {  
    getCommand("player").setExecutor(this);
    System.out.println("Plugin aktiviert");
}


@Override
public void onDisable() {
    System.out.println("Plugin deaktiviert");
}

@Override
public boolean onCommand(CommandSender sender, Command command, String cmd, String[] args) {

    connect();
    createTable();
    ResultSet rs = getResult("SELECT player FROM player WHERE server = 'defense' and active = 'true'");
    System.out.println("[DefenseLogin] Player: " + rs);
    
    return false;
}

  public static String username = "***";
  public static String password = "***";
  public static String database ="***";
  public static String host = "***";
  public static String port = "3306";
  public static Connection con;
  
  public static void connect()
  {
    if (!isConnected()) {
      try
      {
        con = DriverManager.getConnection("jdbc:mysql://" + host + ":" + port + "/" + database, username, password);
        Bukkit.getConsoleSender().sendMessage("MySQL Verbindung aufgebaut");
      }
      catch (SQLException e)
      {
        e.printStackTrace();
      }
    }
  }
  
  public static void close()
  {
    if (isConnected()) {
      try
      {
        con.close();
        Bukkit.getConsoleSender().sendMessage("MySQL Verbindung geschlossen");
      }
      catch (SQLException e)
      {
        e.printStackTrace();
      }
    }
  }
  
  public static boolean isConnected()
  {
    return con != null;
  }
  
  public static void createTable()
  {
    if (isConnected()) {
      try
      {
        con.createStatement().executeUpdate("CREATE TABLE IF NOT EXISTS player (ID INTEGER NOT NULL, player VARCHAR(20), server VARCHAR(20), active VARCHAR(10), PRIMARY KEY(ID))");
      }
      catch (SQLException e)
      {
        e.printStackTrace();
      }
    }
  }
  
  public static void update(String qry)
  {
    if (isConnected()) {
      try
      {
        con.createStatement().executeUpdate(qry);
      }
      catch (SQLException e)
      {
        e.printStackTrace();
      }
    }
  }
  public static ResultSet getResult(String qry)
  {
    if (isConnected()) {
      try
      {
        return con.createStatement().executeQuery(qry);
      }
      catch (SQLException e)
      {
        e.printStackTrace();
      }
    }
    return null;
  }

}
...zur Frage

Was möchtest Du wissen?