EntityPlayer eplayer = ((CraftPlayer) Bukkit.getPlayer("crepperFreak123")).getHandle();
PacketPlayOutNamedEntitySpawn packet = new PacketPlayOutNamedEntitySpawn(eplayer);
GameProfile profile = new GameProfile(eplayer.getUniqueID(), "Hier_Der_Neue_Name");
try{
Field field = packet.getClass().getDeclaredField("b");
field.setAccessible(true);
field.set(eplayer, profile);
for(Player p : Bukkit.getOnlinePlayers()) {
if(!p.getName().equalsIgnoreCase("crepperFreak123")) {
EntityPlayer eToSend = ((CraftPlayer) p).getHandle();
eToSend.playerConnection.sendPacket(new PacketPlayOutEntityDestroy());
eToSend.playerConnection.sendPacket(packet);
}
}
}catch(Exception e) {
System.err.println(e);
}
Hol dir das MainScoreboard statt nen neues.Hallo Liebe Programmierungsasse
Ich habe ein Problem mit der durchsichtigkeit der spectator wie auf gomme.
Der Theorie nach muss es klappen, wenn ich die Spieler einfach unsichtbar mache mithilfe eines Potioneffects, die dann alle in ein Team packe und registriere dass:Wenn ich dann noch das Scoreboard für den jeweiligen Spieler setze, dann müsste es eigentlich klappen. Ich habe das meiner Meinung nach auch genauso gemacht, aber es will nicht funktionieren. Die Spieler sind nicht durchsichtig sondern unsichbar. Dabei ist das board für den Spieler aktiv, er ist im Team und CanSeeFriendlyInvisibles ist auf true. Ich bin ratlos. Wenn jemand von euch eine Idee hat, wie man diesen Fehler beheben kann, dann her damit. Schreibt mir auch mögliche Fehlerquellen, ich muss einfach wieder an etwas ansetzen, was theoretisch noch nicht funktioniert.Code:Team.setCanSeeFriendlyInvisibles(true);
Naja soviel dazu, hier ist der Quelltext:
Code:public class Ghost { public static Scoreboard board; public static Team ghost; public static void init() { board = Bukkit.getScoreboardManager().getNewScoreboard(); ghost = board.getTeam("specs"); if(ghost == null) { ghost = board.registerNewTeam("specs"); } ghost.setCanSeeFriendlyInvisibles(true); ghost.setNameTagVisibility(NameTagVisibility.NEVER); } public static void addGhost(Player p) { ghost.addPlayer(p); p.setScoreboard(board); p.sendMessage("" + p.getScoreboard().getPlayerTeam(p).canSeeFriendlyInvisibles()); p.sendMessage("" + p.getScoreboard().getPlayerTeam(p).getName()); p.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, Integer.MAX_VALUE, 0)); } }
Und im RespawnListener wird das hier aufgerufen:
Code:Bukkit.getScheduler().runTaskLater(Skywars.plugin, new Runnable() { @Override public void run() { Ghost.addGhost(pp); } },5);
Ich hoffe jemand von euch hat einen Rat. Danke im Voraus.
mfg
Forward_R
Ich kriege damit Fehlermeldungen, auf was muss ich achten, wenn ich das Mainscoreboard benutzeHol dir das MainScoreboard statt nen neues.
Poste den Stacktrace auf hastebin.com und sende uns den LinkIch kriege damit Fehlermeldungen, auf was muss ich achten, wenn ich das Mainscoreboard benutze
Das kann ich leider erst morgen machen. Aber ich werde es machenPoste den Stacktrace auf hastebin.com und sende uns den Link
public void setName(Player player, String name) throws Exception{
EntityHuman entity = ((CraftPlayer)player).getHandle();
GameProfile profile = entity.getProfile();
Field profilefield = profile.getClass().getDeclaredField("name");
profilefield.setAccessible(true);
profilefield.set(profile, name);
}
Guten Mittag zusammen,
nachdem ich das Nick-Plugin nun so weit habe, dass alles klappt.. Stellt sich folgendes Problem:
Nachdem man mehrmals (2 mal) von einem Random Spieler über Mojang die UUID-Anfrage schickt, wird man sofort für 5 min oder so gebannt!
Also kommen Fehler und Bugs!
Wie kann man das beheben?
Benutze die UUIDFetcher klasse von Jofkos aus dem Postcrafter Forum!!
MFG
Dann speichere die UUID in eine HashMap und gette sie dort raus, als ständig eine Anfrage zu mojang zu schicken. Zudem verwende ich die Klasse von Janhektor, die auch im Postcrafter Forum zu finden ist.
package com.github.superyoshi1000.c4;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Item;
import org.bukkit.entity.Snowball;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.ItemSpawnEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin implements Listener {
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent e) {
if(!(e.getAction() == Action.RIGHT_CLICK_AIR | e.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
if (!(e.getItem().getType() == Material.TNT)) return;
{
e.getPlayer().getInventory().removeItem(new ItemStack(Material.TNT, 1));
e.getPlayer().updateInventory();
ItemStack c4 = new ItemStack(Material.TNT);
ItemMeta c4m = c4.getItemMeta();
c4m.setDisplayName(e.getPlayer().getName());
c4.setItemMeta(c4m);
e.getPlayer().getWorld().dropItem(e.getPlayer().getLocation(), c4);
if(e.getPlayer().getInventory().contains(Material.LEVER)) return;
ItemStack ak = new ItemStack(Material.LEVER, 1);
ItemMeta akm = ak.getItemMeta();
akm.setDisplayName("§7Ausloeser");
ak.setItemMeta(akm);
e.getPlayer().getInventory().addItem(ak);
e.getPlayer().updateInventory();
}
}
@EventHandler
public void onPlayerInteract1(PlayerInteractEvent e) {
if(!(e.getAction() == Action.RIGHT_CLICK_AIR | e.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
if (!(e.getItem().getType() == Material.LEVER)) return;
{
e.getPlayer().getWorld().createExplosion(DiePositiondesItems.getLocation(), 10);
}
}
@EventHandler
public void BlockPlace(BlockPlaceEvent event) {
Block block = event.getBlock();
if (block.getType() == Material.TNT | block.getType() == Material.LEVER) {
event.setCancelled(true);
}
}
}
caused by: com.mysql.jdbc.exceptions.jdbc4.communicationsexception: the last packet successfully received from the server was
Hört sich total ressourcensparend an.hier ist meine fehlermeldung
http://pastebin.com/d7Vju4ZS
ich habe einen scheduler gestartet der jede 1/2 sekunde überprüft ob eine connection besteht wenn nicht dann neu connecten.. das funktioniert auch nicht.
ich habe hinter dem connection auch ?autoReconnect=true gemacht.
es funktioniert auch nicht. Weiß einer wo der fehler ist bitte?
Genau so hab ich dass ja gemeintMan kann auch eine Methode für die Abfrage erstellen, die vor dem eigentlichen Abfragen überprüft, ob eine Verbindung besteht. Das ist auf jeden Fall ressourcensparender als der Scheduler und das, was @20skui09 schon gesagt hat.