Minecraft Java Anti Spam?

2 Antworten

Strings vergleicht man mit equals und nicht mit ==.

if (e.getMessage().toUpperCase().equals(main.msgWdh)) {

Ich würde es vom Sinn her ganz anders machen irgendwie.

Gamemode "Bug oder Fehler" bei AsyncPlayerChatEvent, Weiß jmd. eine Lösung?

Hallo, Ich habe mit dem AsyncPlayerChatEvent versucht, dass bei der nachricht "gm" der Creative Mode Aktiviert wird und wieder deaktivert wird. Dazu haben ich folgenden Code verwendet:

@EventHandler
public void gamemode(AsyncPlayerChatEvent e) {
    if (e.getMessage().startsWith("gm")) {
        if (e.getPlayer().getGameMode() == GameMode.SURVIVAL) {
            e.getPlayer().setGameMode(GameMode.CREATIVE);
        } else {
            e.getPlayer().setGameMode(GameMode.SURVIVAL);
        }
    }
}

Das Problem: Der Gamemode wird nur "halb" geändert. Ich hab noch das Survival Inventar aber kann fliegen, mit Mausrad Blöcke nehmen, Blöcke sofort zerstören. Wenn ich aber Blöcke setze, werden sie aus dem Inventar abgezogen Weiß jemand wie man diesen Bug beheben kann? Schonmal Danke im voraus!

...zur Frage

Java Plugin Command nur alle 24h 2x ausführen können?

Hallo, ich habe gestern angefangen mit Java (Eclipse) zu programmieren(bin absoluter Anfänger) und dieses Plugin funktioniert soweit man kann /heal (player) eingeben und es funktioniert allerdings will ich einstellen das man das Pl alle 24h nur 2x verwenden kann aber ich weiß nicht wie und wollte euch fragen wie es geht (bitte sehr Anfängerfreundlich erklären)

package de.firecore.lernen.commands;

import org.bukkit.Bukkit;

import org.bukkit.command.Command;

import org.bukkit.command.CommandExecutor;

import org.bukkit.command.CommandSender;

import org.bukkit.entity.Player;

public class HealCommand implements CommandExecutor {

 @Override

 public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {

       

       

  if(sender instanceof Player) {

          Player p = (Player) sender;

          if (args.length == 0) {

          if(p.hasPermission("test.heal.self") || p.hasPermission("tutorial.heal.*")) {

          p.setHealth(20);

          p.setFoodLevel(20);

          p.sendMessage("§aDu wurdest geheilt!");

        } else

         p.sendMessage("§c Dazu hast du keine Rechte");

          } else if(args.length == 1) {

          Player target = Bukkit.getPlayer(args[0]);

          if(target != null) {

           if(p.hasPermission("test.heal.others") || p.hasPermission("test.heal.*")) {

           target.setHealth(20);

           target.setFoodLevel(20);

           target.sendMessage("§6" + p.getName() + "§a meint es heute gut mit dir :D (er hat dich geheilt)");

           p.sendMessage("§aDer vorgegebene Spieler §6(" + target.getName() + ") §awurde geheilt!");

           } else

            p.sendMessage("§cDazu hast du keine Rechte");

            

          }else  

            p.sendMessage("§cDer angegebene Spieler ist leider nicht online! :( ");          

         

             } else

             p.sendMessage("Bitte benutze /heal <Spieler>");

          }

          return false;

 }

  

  }

So habe ichs bis jz und jz muss ich noch wissen wie das mit dem alle 24h 2x mache :D

...zur Frage

Minecraft Programmieren : Kiste öffnen richtig cancelln

Hallo Leute, ich programmiere gerade ein Minispiel. Wie in vielen Spielen blockt man auch das Kisten öffnen. (Außer natürlich bei Minispielen, wo Kisten etc... benötigt werden)... Ich habe mit dem InventoryOpenEvent probiert das Kisten öffnen zu verhindern:

@EventHandler
public void onInventoryOpen(InventoryOpenEvent e) {
    
    if(e.getView().getType() != null) {
            
            
        if(e.getView().getType() == InventoryType.CHEST) {
            
            e.setCancelled(true);
            
        }

        if(e.getView().getType() == InventoryType.BEACON) {
                
            e.setCancelled(true);
                
        }
        
        if(e.getView().getType() == InventoryType.BREWING) {
                
            e.setCancelled(true);
                
        }
        
        if(e.getView().getType() == InventoryType.ANVIL) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.CRAFTING) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.DISPENSER) {
        
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.DROPPER) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.ENCHANTING) {
            
            e.setCancelled(true);
        
        }
        
        if(e.getView().getType() == InventoryType.ENDER_CHEST) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.FURNACE) {
            
            e.setCancelled(true);
            
        }
        
        if(e.getView().getType() == InventoryType.HOPPER) {
            
        e.setCancelled(true);
            
        }
            
        if(e.getView().getType() == InventoryType.WORKBENCH) {
                
            e.setCancelled(true);
                
        }
            
        if(e.getView().getType() == InventoryType.MERCHANT) {
            
            e.setCancelled(true);
            
        }
            
    }
    
}
    

Das ganze funnktioniert relativ gut. Das Inventar wird geschlossen. Aber die Kiste bleibt offen... Zeit schließt sie sich wieder. Es sieht also so aus als würde ein Unsichtbarer die Kiste noch geöffnet haben.

Wie kann ich das unterbinden? Sodass die Kiste wie bei Gommehd.net auch zu bleibt?

...zur Frage

Bukkit Programmieren,führt Befehl doppelt aus?

Hey

Ich programmiere grade ein Plugin und hab euch mal was geschrieben um mein Problem zu zeigen:

//

public class InteractEvent implements Listener{

 

 

@EventHandler

  public void onInteract(PlayerInteractEvent e) {

  Player p =  e.getPlayer();

  

    

  

  

  

       if(e.getAction().equals(Action.RIGHT_CLICK_AIR)) {

    p.sendMessage(" lo");

       

    

    

        if(e.getItem() != null && e.getItem().getType().equals(Material.STICK)){

        p.sendMessage("Hey");

        return;

        }

 }

     }

 }

//

Hier wird dem Spieler jetzt gesendet

als erstes:"lo"

als zweites:"hey"

und dann:"lo"

Ich möchte lo aber auch nur einmal ausgegeben haben.

Warum wird dem Spieler jetzt zweimal lo gesendet,und was kann ich dagegen tun?

Danke schonmal.

Mfg.

...zur Frage

Was möchtest Du wissen?