@Override public void onPacketSending(PacketEvent event) { if (!event.isCancelled() && event.getPacketID() == Packets.Server.NAMED_ENTITY_SPAWN) { PacketContainer packet = event.getPacket(); StructureModifier<String> text = packet.getSpecificModifier(String.class); try { String tag = text.read(0); Player observer = event.getPlayer(); Entity watched = packet.getEntityModifier(observer.getWorld()).read(0); if (watched instanceof Player) { ReceiveNameTagEvent nameTagEvent = new ReceiveNameTagEvent(event.getPlayer(), (Player) watched, tag); pluginManager.callEvent(nameTagEvent); if (nameTagEvent.isModified()) { // Trim excess tag = nameTagEvent.getTrimmedTag(); // Uh, ok. if (tag == null) tag = ""; text.write(0, tag); } } else { // Might as well notify about this logger.log( Level.WARNING, "Cannot find entity id " + packet.getSpecificModifier(int.class).read(0)); } } catch (FieldAccessException e) { logger.log(Level.SEVERE, "Cannot read field.", e); } } }
@Override public void onPacketSending(PacketEvent event) { if (event.getPacketType().equals(PacketType.Play.Server.LOGIN)) { event.getPacket().getBooleans().write(0, true); } }