+ Antworten
Ergebnis 1 bis 6 von 6
  1. #1
    Pilzsammler
    Registriert seit
    20.04.2017
    Beiträge
    3

    Plugin programmieren fehler

    Habe ein kleines Problem mit einem Plugin.
    In Eclipse wird mir in einer Zeile ein Fehler angezeigt und ich weiß nicht wie ich diesen lösen kann.

    Wollte ein Plugin erstellen für die 1.9; 1.10 oder 1.11 damit die Spieler nicht so schnell hunger bekommen, irgendwelche Verbesserungsvorschläge?

    PS: ich bin ein ziemlicher Anfänger im Plugin programmieren.


    Code:
    package de.aallp.meinnserver.hunger.cmd;
    
    import org.bukkit.Bukkit;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.potion.PotionEffect;
    import org.bukkit.potion.PotionEffectType;
    
    import de.aallp.meinserver.hunger.main.Main;
    
    public class CMDhunger implements CommandExecutor {
    	private int taskrt;
    	private int seconds = 21;
    	private boolean isRunning;
    
    	@Override
    	public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
    		if(command.getName().equalsIgnoreCase("hunger")){
    			if(sender instanceof Player){
    				Player p = (Player)sender;
    				if(p.hasPermission("hunger")){				
    					if(args.length == 0){
    						isRunning = true;
    						taskrt = Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getPlugin(), new Runnable(){
    							
    							@Override
    							public void run(){
    								seconds--;
    								if(seconds == 20) Bukkit.broadcastMessage("Essen in 20 sec");
    								if(seconds == 0) {
    									Bukkit.broadcastMessage("§a§lJetzt gibts Essen!!");
    									for(Player a = Bukkit.getOnlinePlayers()) {
    										Player a = Bukkit.getOnlinePlayers();
    										a.addPotionEffect(new PotionEffect(PotionEffectType.SATURATION, 10, 1));
    										
    									}
    									seconds = 21;
    									
    								}
    							}
    
    							
    						}, 0, 20);
    						
    						
    					}else if(args.length == 1){
    						if(args[0].equalsIgnoreCase("cancel")){
    							Bukkit.getScheduler().cancelTask(taskrt);
    						}
    					}
    				}
    			}
    		}
    		
    		
    		return false;
    	}
    }
    https://drive.google.com/file/d/0Bz_...ew?usp=sharing

    Die Fehler sieht man auf dem Bild
    Geändert von AalLP (20.04.2017 um 15:15 Uhr) Grund: bild erneuerung und code aktualisierung

  2. #2
    Creeper-Jäger Avatar von Tobiplayer3
    Registriert seit
    04.11.2014
    Beiträge
    340
    In welcher Zeile ist denn der Fehler und wie lautet er?

  3. #3
    Pilzsammler
    Registriert seit
    20.04.2017
    Beiträge
    3

    habe den thread dementsprechend aktualisiert

    Zitat Zitat von Tobiplayer3 Beitrag anzeigen
    In welcher Zeile ist denn der Fehler und wie lautet er?

  4. #4
    Das Brain Avatar von BrainStone
    Registriert seit
    09.02.2012
    Beiträge
    1.361
    Anstatt "Player a = Bukkit...." schreib "Player a : Bukkit...." in der for-Schleife.

  5. #5
    Pilzsammler
    Registriert seit
    20.04.2017
    Beiträge
    3
    ok ich habs, danke.
    musste noch die zeile da drunter löschen dann gings.

    komischerweise gibt er jetzt 3 mal den text jetzt gibts essen aus
    Geändert von AalLP (20.04.2017 um 16:41 Uhr)

  6. #6
    DEV Avatar von Black__Hole
    Registriert seit
    16.09.2011
    Beiträge
    3.923
    Bei jedem Aufruf des Befehls erstellst du einen neuen Task. Da musst dir überlegen, evtl. nur einen Task zu verwenden, oder diesen nach der Arbeit zu beenden. Alle Tasks verwenden zudem die gleichen Variablen.
    Schaue mal, dass modernere Bukkit-Methoden benutzt. scheduleSyncRepeatingTask() ist z.B. deprecated.


+ Antworten