Code:JAVA package me.ceramictitan.spy; import java.util.HashSet;import java.util.Set; import net.minecraft.server.EntityLiving;import net.minecraft.server.Packet5EntityEquipment; import org.bukkit.Bukkit;import org.bukkit.Effect;import org.bukkit.EntityEffect;import org.bukkit.Material;import org.bukkit.craftbukkit.entity.CraftLivingEntity;import org.bukkit.craftbukkit.entity.CraftPlayer;import org.bukkit.craftbukkit.inventory.CraftItemStack;import org.bukkit.entity.Entity;import org.bukkit.entity.LivingEntity;import org.bukkit.entity.Player;import org.bukkit.event.EventHandler;import org.bukkit.event.Listener;import org.bukkit.event.block.Action;import org.bukkit.event.entity.EntityDamageByEntityEvent;import org.bukkit.event.player.PlayerInteractEvent;import org.bukkit.event.player.PlayerItemHeldEvent;import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.inventory.ItemStack;import org.bukkit.potion.PotionEffect;import org.bukkit.potion.PotionEffectType; public class myPlayerInteractListener implements Listener{ public Set<String> vanished = new HashSet<String>();public spy plugin;private int id; public myPlayerInteractListener(spy plugin){this.plugin = plugin;}@EventHandlerpublic void onPlayerInteract(PlayerInteractEvent event){final Player p = event.getPlayer();if(event.getAction() == Action.RIGHT_CLICK_AIR){if(p.getItemInHand().getType() == Material.REDSTONE){if(vanished.contains(p.getName())){p.sendMessage("Already Vanished");event.setCancelled(true);}else if(!vanished.contains(p.getName())){this.vanished.add(p.getName());p.addPotionEffect(new PotionEffect(PotionEffectType.INVISIBILITY, -1, 1));setinvisibleEquipment(p);p.sendMessage("You are now hidden!");p.getWorld().playEffect(p.getLocation(), Effect.STEP_SOUND, Material.SNOW_BLOCK.getId());if(vanished.contains(p.getName())){id = Bukkit.getScheduler().scheduleAsyncRepeatingTask(plugin, new Runnable(){ @Overridepublic void run() {if(p.getItemInHand().getType() == Material.REDSTONE){p.getItemInHand().setAmount(p.getItemInHand().getAmount() -1);if(p.getItemInHand().getType() == Material.REDSTONE){if(p.getItemInHand().getAmount() == 1){p.setItemInHand(new ItemStack(Material.AIR, 1));}if(p.getItemInHand().getType() != Material.REDSTONE){p.removePotionEffect(PotionEffectType.INVISIBILITY);p.sendMessage("No longer hidden");if(vanished.contains(p.getName())){vanished.remove(p.getName());}System.out.println("removed!");stopTask();}}}}},20L, 20L);}} }}}@EventHandlerpublic void onItemChange(PlayerItemHeldEvent event){if(event.getPlayer().getItemInHand().getType() == Material.REDSTONE){if(!vanished.contains(event.getPlayer().getName())){return;}event.getPlayer().removePotionEffect(PotionEffectType.INVISIBILITY);event.getPlayer().sendMessage("No longer hidden");setvisibleEquipment(event.getPlayer());if(vanished.contains(event.getPlayer().getName())){vanished.remove(event.getPlayer().getName());System.out.println("removed!");}stopTask();}}@EventHandlerpublic void onDamage(EntityDamageByEntityEvent event){if(event.getEntity() instanceof Player){Player p = (Player)event.getEntity();if(vanished.contains(p.getName())){p.removePotionEffect(PotionEffectType.INVISIBILITY);setvisibleEquipment(p);event.setCancelled(false);p.getWorld().playEffect(p.getLocation(), Effect.STEP_SOUND, Material.LAVA.getId());p.playEffect(EntityEffect.HURT);vanished.remove(p.getName());p.sendMessage("You have been Spotted!");stopTask(); }}}@EventHandlerpublic void onPlayerQuit(PlayerQuitEvent event){if(vanished.contains(event.getPlayer().getName())){vanished.remove(event.getPlayer().getName());}}private void stopTask(){Bukkit.getServer().getScheduler().cancelTask(id);}public void setinvisibleEquipment(Entity e){if(e instanceof LivingEntity){EntityLiving el = ((CraftLivingEntity) e).getHandle();for(int i=0;i<5;i++){net.minecraft.server.ItemStack item = el.getEquipment(i);Packet5EntityEquipment packet = new Packet5EntityEquipment(e.getEntityId(),(short)i, new CraftItemStack(Material.AIR).getHandle());for (Player play : Bukkit.getOnlinePlayers()) { ((CraftPlayer)play).getHandle().netServerHandler.sendPacket(packet); }}}}public void setvisibleEquipment(Entity e){if(e instanceof LivingEntity){EntityLiving el = ((CraftLivingEntity) e).getHandle();for(int i=0;i<5;i++){net.minecraft.server.ItemStack item = el.getEquipment(i);Packet5EntityEquipment packet = new Packet5EntityEquipment(e.getEntityId(),(short)i,item);for (Player play : Bukkit.getOnlinePlayers()) { ((CraftPlayer)play).getHandle().netServerHandler.sendPacket(packet); }}}}} The packet sending causes me to get 'End of Stream' Also tried 'Packet5EntityEquipment packet = new Packet5EntityEquipment(e.getEntityId(),(short)i, null);' and it crashes the client
So V10lator , fireblast709 , TechGuard How could i hide the player's armor when he uses the invisibility potion?
I'm sorry, I looked at the packet and it seems that it's the right packet. I don't really have the time to explain it right now, so you should take a look at this website: http://www.wiki.vg/Protocol It's really helpful. After a quick look, it seems like you don't need to send the material/itemstack. But the NBT Compound of the itemstack. (basically the *savefile* of the itemstack)
Damn, beat me to linking it. You can also check out ProtocolLib, although its not very useful for packet sending.
If you look at my code, it has the requirements stated on that website. But I crash whenever the packet gets sent to me.