private void a(ServerPing serverping) { File file1 = this.d("server-icon.png"); if (file1.isFile()) { ByteBuf bytebuf = Unpooled.buffer(); try { BufferedImage bufferedimage = ImageIO.read(file1); Validate.validState(bufferedimage.getWidth() == 64, "Must be 64 pixels wide", new Object[0]); Validate.validState(bufferedimage.getHeight() == 64, "Must be 64 pixels high", new Object[0]); ImageIO.write(bufferedimage, "PNG", new ByteBufOutputStream(bytebuf)); ByteBuf bytebuf1 = Base64.encode(bytebuf); serverping.setFavicon("data:image/png;base64," + bytebuf1.toString(Charsets.UTF_8)); } catch (Exception exception) { i.error("Couldn\'t load server icon", exception); } finally { bytebuf.release(); } } }
static CraftIconCache loadServerIcon0(BufferedImage image) throws Exception { ByteBuf bytebuf = Unpooled.buffer(); Validate.isTrue(image.getWidth() == 64, "Must be 64 pixels wide"); Validate.isTrue(image.getHeight() == 64, "Must be 64 pixels high"); ImageIO.write(image, "PNG", new ByteBufOutputStream(bytebuf)); ByteBuf bytebuf1 = Base64.encode(bytebuf); return new CraftIconCache("data:image/png;base64," + bytebuf1.toString(Charsets.UTF_8)); }
public void openTrade(IMerchant imerchant, String s) { // CraftBukkit start - Inventory open hook Container container = CraftEventFactory.callInventoryOpenEvent(this, new ContainerMerchant(this.inventory, imerchant, this.world)); if (container == null) { return; } // CraftBukkit end this.nextContainerCounter(); this.activeContainer = container; // CraftBukkit - Use container we passed to event this.activeContainer.windowId = this.containerCounter; this.activeContainer.addSlotListener(this); InventoryMerchant inventorymerchant = ((ContainerMerchant) this.activeContainer).getMerchantInventory(); this.playerConnection.sendPacket(new PacketPlayOutOpenWindow(this.containerCounter, 6, s == null ? "" : s, inventorymerchant.getSize(), s != null)); MerchantRecipeList merchantrecipelist = imerchant.getOffers(this); if (merchantrecipelist != null) { PacketDataSerializer packetdataserializer = new PacketDataSerializer(Unpooled.buffer()); try { packetdataserializer.writeInt(this.containerCounter); merchantrecipelist.a(packetdataserializer); this.playerConnection.sendPacket(new PacketPlayOutCustomPayload("MC|TrList", packetdataserializer)); } catch (Exception ioexception) { // CraftBukkit - IOException -> Exception bL.error("Couldn\'t send trade list", ioexception); } finally { packetdataserializer.release(); } } }
void sendUpdate() { if (this.customers.isEmpty()) { return; } if (SPIGOT) { final Collection<EntityPlayer>[] collections = split(this.customers); // Copy the uses fields if needed if (collections[1] != null || collections[2] != null || collections[3] != null) { for (Object offer : this.offers) { ((SMerchantOffer) offer).copyUses(); } } if (collections[0] != null) { this.sendUpdateWithProtocol(27, collections[0]); } if (collections[1] != null) { sendUpdateWithProtocol(28, collections[1]); } if (collections[2] != null) { sendUpdateWithProtocol(29, collections[2]); } if (collections[3] != null) { sendUpdateWithProtocol(47, collections[3]); } } else { sendUpdateWithSerializer(new PacketDataSerializer(Unpooled.buffer()), Collections2.transform(this.customers, new Function<Player, EntityPlayer>() { @Override public EntityPlayer apply(Player player) { return ((CraftPlayer) player).getHandle(); } })); } }
private void sendUpdateWithSerializer(PacketDataSerializer serializer, Iterable<EntityPlayer> players) { // Write the recipe list this.offers.a(serializer); // Send a packet to all the players for (EntityPlayer player0 : players) { // Every player has a different window id final PacketDataSerializer content1 = new PacketDataSerializer(Unpooled.buffer()); content1.writeInt(player0.activeContainer.windowId); content1.writeBytes(serializer); player0.playerConnection.sendPacket(new PacketPlayOutCustomPayload("MC|TrList", content1)); } }
private void requestPlayerCount(String serverName) { if (ServerUtil.getOnlinePlayers().size() == 0) { return; // No players online; we can't send this request yet. } ByteBuf buf = Unpooled.buffer(); MiscUtil.writePrefixedString(buf, "PlayerCount"); MiscUtil.writePrefixedString(buf, serverName); byte[] bytes = new byte[buf.readableBytes()]; buf.readBytes(bytes); ServerUtil.getOnlinePlayer(0).sendPluginMessage(plugin, "BungeeCord", bytes); buf.release(); }
@Override public void run() { if (ServerUtil.getOnlinePlayers().size() == 0) { return; } ByteBuf buf = Unpooled.buffer(); MiscUtil.writePrefixedString(buf, "GetServers"); byte[] bytes = new byte[buf.readableBytes()]; buf.readBytes(bytes); ServerUtil.getOnlinePlayer(0).sendPluginMessage(plugin, "BungeeCord", bytes); buf.release(); }
@Override public boolean addCustomer(Player player) { checkNotNull(player, "player"); if (this.customers.add(player)) { final EntityPlayer player0 = ((CraftPlayer) player).getHandle(); Container container0 = null; try { container0 = new SContainerMerchant(player0, this); container0 = CraftEventFactory.callInventoryOpenEvent(player0, container0); } catch (Exception e) { e.printStackTrace(); } if (container0 == null) { this.customers.remove(player); return false; } final int window = player0.nextContainerCounter(); player0.activeContainer = container0; player0.activeContainer.windowId = window; player0.activeContainer.addSlotListener(player0); // Open the window player0.playerConnection.sendPacket(new PacketPlayOutOpenWindow(window, 6, this.sendTitle, 3, true)); // Write the recipe list final PacketDataSerializer content; // Create the proper packet serializer if (SPIGOT) { content = new PacketDataSerializer(Unpooled.buffer(), player0.playerConnection.networkManager.getVersion()); } else { content = new PacketDataSerializer(Unpooled.buffer()); } content.writeInt(window); this.offers.a(content); // Send the offers player0.playerConnection.sendPacket(new PacketPlayOutCustomPayload("MC|TrList", content)); return true; } return false; }
private void sendUpdateWithProtocol(int protocol, Iterable<EntityPlayer> players) { sendUpdateWithSerializer(new PacketDataSerializer(Unpooled.buffer(), protocol), players); }
MonitoredPlayer(Player player) throws FileNotFoundException, IOException { playerName = player.getPlayerListName(); joined = new Date().getTime(); stream = new GZIPOutputStream(new FileOutputStream("recording." + joined + "." + playerName + ".miners")); MinecraftServer server = MinecraftServer.getServer(); int gamemode = player.getGameMode().getValue(); boolean hardcore = server.isHardcore(); int dimension = player.getWorld().getEnvironment().getId(); Location spawn = player.getWorld().getSpawnLocation(); int heldItem = player.getInventory().getHeldItemSlot(); int entityId = player.getEntityId(); int difficulty = player.getWorld().getDifficulty().getValue(); // System.out.println(gamemode); // System.out.println(hardcore); // System.out.println(dimension); // System.out.println(spawn); // System.out.println(heldItem); // System.out.println(entityId); // System.out.println(player); // Sorry :-) String meta = "{" + "\"recorded\":" + (joined/1000) + "," + "\"player_ign\":\"" + playerName + "\"," + "\"source_codec\":\"1.7.2\"" + "," + "\"source_format\":\"bukkit\"" + "}"; savePacket('M', Unpooled.wrappedBuffer(meta.getBytes())); String extra = "{" + "\"gamemode\":" + gamemode + "," + "\"hardcore\":" + hardcore + "," + "\"dimension\":" + dimension + "," + "\"spawn\":{\"x\":" + spawn.getX() + ",\"y\":" + spawn.getY() + ",\"z\":" + spawn.getZ() + "}," + "\"helditem\":" + heldItem + "," + "\"entity_id\":" + entityId + "," + "\"difficulty\":" + difficulty + "}"; savePacket('E', Unpooled.wrappedBuffer(extra.getBytes())); System.out.println("Monitoring " + playerName); }
public static ByteBuf createPacketBuffer(byte discriminator) { final ByteBuf buf = Unpooled.buffer(); buf.writeByte(discriminator); return buf; }