Minecraft Spigot - einen speziellen Spieler triggern?

1 Antwort

Du checkst, ob der Block unter dem Spieler der Block ist, der er sein soll?

Oder bezieht sich die Frage auf genau das?

Kann mir jemand sagen wobei der Fehler ist?

Ich habe erst vor einem Monat angefangen zu programmieren, und versuche gerade ein PlayerHide Plugin zu programmieren, soweit geht alles, das Inventar Fenster öffnet sich beim drauf klicken, und könnte auch auf "Spieler Sichtbar", aber wenn ich auf "Spieler verstecken" klicke nehme ich nur das Item raus? Woran liegt das?

package de.xDrawnGamerHD.Listeners;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

public class HidePlayer_Listener implements Listener {
	
	String prefix = "§7» §3§lDrawnUnity §8▌ §c";
	
	@EventHandler
	public void oninter(PlayerInteractEvent e) {
		Player p = e.getPlayer();
		try {
			if(e.getItem().getItemMeta().getDisplayName().equals("§eSpieler Verstecken")) {
				e.setCancelled(true);
				p.sendMessage(prefix + "§eBitte wähle eine passende Option aus.");
				Inventory inv = Bukkit.createInventory(null, 9, "§cSpielersichtbarkeit");
				ItemStack on = new ItemStack(Material.INK_SACK, 1, (short)10);
				ItemMeta onmeta = on.getItemMeta();
				onmeta.setDisplayName("§aSpieler Sichtbar");
				on.setItemMeta(onmeta);
				ItemStack off = new ItemStack(Material.INK_SACK, 1, (short)1);
				ItemMeta offmeta = off.getItemMeta();
				offmeta.setDisplayName("§cSpieler Verstecken");
				off.setItemMeta(offmeta);
				inv.setItem(3, on);
				inv.setItem(5, off);
				p.openInventory(inv);
			}
    	} catch(Exception e1) {
			
    	}
	}
	
	@EventHandler
	public void onClick(InventoryClickEvent e) {
		Player p = (Player)e.getWhoClicked();
	   try {
		    if(e.getInventory().getName().equals(prefix + "§eBitte wähle eine passende Option aus!")) {
		    }else if(e.getCurrentItem().getItemMeta().getDisplayName().equals("§aSpieler Sichtbar")) {
		    	for(Player all : Bukkit.getOnlinePlayers()) {
				   p.showPlayer(all);
			    }
		    	p.sendMessage(prefix + "§aAlle Spieler sind nun Sichtbar!");
		    	p.playSound(p.getLocation(), Sound.CHICKEN_EGG_POP, 1, 1);
		    	p.closeInventory();
		    }else if(e.getCurrentItem().getItemMeta().getDisplayName().equals("Spieler Unsichtbar")) {
			    for(Player all : Bukkit.getOnlinePlayers()) {
				    p.hidePlayer(all);
			    }
			    p.sendMessage(prefix + "Du hast alle Spieler versteckt!");
			    p.playSound(p.getLocation(), Sound.CHICKEN_EGG_POP, 1, 1);
			    p.closeInventory();
		}
		    
	    } catch(Exception e1) {
	}
	}
	
}


...zur Frage

Enderperle mit Zwischen-Item programmieren?

Also mein Plugin ist derzeit so, dass ich die Enderperle, die ich im Inventar habe, werfen kann und dass ich nach 5 Sekunden eine neue bekomme. Jetzt möchte ich noch machen, dass in der Zeit, wo die Enderperle weg ist, ich ein anderes Item dahabe, was dann verschwindet, wenn die "Enderperle wieder kommt"

Hier der Code:

import org.bukkit.Bukkit;
import org.bukkit.Material
import org.bukkit.entity.EnderPearl;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.ProjectileHitEvent;
import me.FielessTV.main.Main;
import me.FielessTV.utils.items;
public class EnderperlListener implements Listener{
   @EventHandler public void onHit(final ProjectileHitEvent e){
      if(e.getEntity() instanceof EnderPearl){
         Bukkit.getScheduler().runTaskLater(Main.plugin, new Runnable() {
            @Override public void run() {
               if(e.getEntity().getShooter() instanceof Player){
                  Player shooter = (Player) e.getEntity().getShooter();
                  shooter.getInventory().setItem(6, items.createItem(Material.ENDER_PEARL, 0, "§5§lEnderperle §7§l» §5§lalle 5 Sekunden nutzbar!"));
               }
            }
         },20*5);
      }
   }
}
...zur Frage

/god funktion programieren?

Hi, Ich beschäftige mich grad mit Plugin Programierung in Minecraft. Ich wollte eine god funktion in mein plugin einbauen. Hab dies auch gemacht hier der code:

package de.TreftCraft;
import java.util.ArrayList; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player;

public class God
  implements CommandExecutor
{
  public static ArrayList<String> god = new ArrayList();
 
  public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args)
  {
    Player p = (Player)sender;
    if (p.hasPermission("system.god"))
    {
      if (args.length == 0)
      {
        if (god.contains(p.getName()))
        {
          god.remove(p.getName());
          p.sendMessage("Du bist nun nicht mehr im Godmode!");
        }
        else
        {
          god.add(p.getName());
          p.sendMessage("Du bist nun im Godmode!");
        }
      }
      else {
        p.sendMessage("Benutze /God");
      }
    }
    else {
      p.sendMessage("Dazu hast du keine Rechte!");
    }
    return false;
  }
}

Und der EntityDamageListener:

package de.TreftCraft;
import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageEvent;


public class EntityDamage implements Listener {     @EventHandler     public void onDamage(EntityDamageEvent e) {         Player p = (Player) e.getEntity();         if (God.god.contains(p.getName())) {             e.setCancelled(true);         } else {             e.setCancelled(false);         }     } }


Ich hab alles in der Main.java hinzugefügt es geht auch alles aber in der Console wird dieser Fehler angezeigt:

[10:44:17 ERROR]: Could not pass event EntityDamageEvent to System v1.0
org.bukkit.event.EventException: null
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:306) ~[spigot_server.jar:git-Spigot-c3093ef-7e94e65]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot_server.jar:git-Spigot-c3093ef-7e94e65]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:500) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:485) [spigot_server.jar:git-Spigot-c3093ef-7e94e65]
        at org.bukkit.craftbukkit.v1_12_R1.event.CraftEventFactory.callEvent(CraftEventFactory.java:93) [spigot_server.jar:git-Spigot-c3093ef-7e94e65] .......

EDIT: Ich muss mich entschuldigen das es hier so komisch angezeigt wird

...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

SpigotAPI - "Internal Error Occured"?

Hey!

Ich programmiere gerade ein /rang Plugin, jedoch kommt es bei einer Argumentenlänge von 0 (also bei nur /rang) "an internal error occured".

Mein Code lautet so:

Leider ist es nur bei der argumentenlänge 0 so. Bitte hilfe. Ich weiss es wird sooo leicht zu fixxen sein, jedoch bin ich gerade zu blöd dafür :D

package de.miaowzy.main;

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 ru.tehkode.permissions.bukkit.PermissionsEx;

public class CommandRang implements CommandExecutor {

@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    Player p = (Player)sender;
    Player t = Bukkit.getPlayer(args[0]);
    if(args.length == 2) {
        if(p.hasPermission("system.cmd.rang")) {
            PermissionsEx.getUser(t).addGroup(args[1]);
            t.kickPlayer("§cDein Rang wurde geupdatet! Bitte rejoinen!");
            p.sendMessage("§cDu hast den Rang von §6"+t.getName() + " §cgeändert!");
        } else {
            p.sendMessage("Das darfst du nicht!");
        }
    } else {
        p.sendMessage("§cSyntax: /rang &lt;Spielername&gt; &lt;Rang&gt;");
    }

    return false;
}

}

...zur Frage

Minecraft Plugins programmieren, Commands mit Leerzeichen?

Hey ich habe eine frage,

Ich versuche jz seid Stunden /hilfe 2 zu erstellen aber ich kriege es überhaupt nicht hin. Kann mir jemmand sagen was daran falsch ist?

Wie man sieht habe ich es bei /Gm... auch nicht geschafft deshalb zsm geschrieben.

package de.Numbix.PluginVersuch.commands;
import org.bukkit.Sound; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player;


public class HilfeCommand implements CommandExecutor {


@Override
public boolean onCommand(CommandSender sender, Command command, String label, String[] args) {
     if (command.getName().equalsIgnoreCase("hilfe")) {
    if(sender instanceof Player) {      
        Player p = (Player) sender;     
        if(args.length == 0) {
            &nbsp; &nbsp; p.sendMessage("§c-------------------------------");
            &nbsp; &nbsp; p.sendMessage("&nbsp; &nbsp; &nbsp; &nbsp; §8[§6Num§9tex§8] §7Hilfe: §7Seite 1&nbsp; &nbsp; &nbsp; &nbsp;");
                p.sendMessage("§c-------------------------------");
                p.sendMessage("§a/Sturm §c&gt; §7Jetzt wird's Sturmig.");
                p.sendMessage("§a/Sonne §c&gt; §7Jetzt wird's Sonnig.");
                p.sendMessage("§a/Tag §c&gt; §7Bringt Licht in die Welt.");
                p.sendMessage("§a/Nacht §c&gt; §7Bringt Dunkelheit in die Welt.");
                p.sendMessage("§a/Fliegen §9&lt;Name&gt; §c&gt; §7Damit kannst du fliegen.");
                p.sendMessage("§a/Heilen §9&lt;Name&gt; §c&gt; §7Heilt eine Person.");
                p.sendMessage("§a/Sperren §9&lt;Name&gt; §c&gt; §7Heilt eine Person.");
                p.sendMessage("§a/Entsperren §9&lt;Name&gt; §c&gt; §7Heilt eine Person.");
                p.sendMessage("§6/Hilfe §92 §6Für die nächste Seite.");
                p.sendMessage("§c-------------------------------");
                p.playSound(p.getLocation(), Sound.BLOCK_SNOW_PLACE, 1, 1);
                        
                if(args.length ==&nbsp; 0) {
                    if(args[0].equalsIgnoreCase("3")){
                        p.sendMessage("§c-------------------------------");
                    &nbsp; &nbsp; p.sendMessage("&nbsp; &nbsp; &nbsp; &nbsp; §8[§6Num§9tex§8] §7Hilfe: §7Seite 1&nbsp; &nbsp; &nbsp; &nbsp;");
                        p.sendMessage("§c-------------------------------");
                        p.sendMessage("§a/Gm1 §c&gt; §7Damit kommst du in den Kreativ Modus.");
                        p.sendMessage("§a/Gm2 §c&gt; §7Damit kommst du in den Abenteuer Modus.");
                        p.sendMessage("§a/Gm0 §c&gt; §7Damit kommst du in den Überleben Modus.");
                        p.sendMessage("§a/Gm3 §c&gt; §7Damit kommst du in den Zuschauer Modus.");
                        p.sendMessage("§c-------------------------------");
                        
}

} {


} {


{


} } }


} } return false; } }


...zur Frage

Was möchtest Du wissen?