use of cn.nukkit.Player in project Nukkit by Nukkit.
the class QueryRegenerateEvent method getLongQuery.
public byte[] getLongQuery(byte[] buffer) {
if (buffer == null)
buffer = new byte[Character.MAX_VALUE];
FastByteArrayOutputStream query = new FastByteArrayOutputStream(buffer);
try {
String plist = this.server_engine;
if (this.plugins.length > 0 && this.listPlugins) {
plist += ":";
for (Plugin p : this.plugins) {
PluginDescription d = p.getDescription();
plist += " " + d.getName().replace(";", "").replace(":", "").replace(" ", "_") + " " + d.getVersion().replace(";", "").replace(":", "").replace(" ", "_") + ";";
}
plist = plist.substring(0, plist.length() - 2);
}
query.write("splitnum".getBytes());
query.write((byte) 0x00);
query.write((byte) 128);
query.write((byte) 0x00);
LinkedHashMap<String, String> KVdata = new LinkedHashMap<>();
KVdata.put("hostname", this.serverName);
KVdata.put("gametype", this.gameType);
KVdata.put("game_id", GAME_ID);
KVdata.put("version", this.version);
KVdata.put("server_engine", this.server_engine);
KVdata.put("plugins", plist);
KVdata.put("map", this.map);
KVdata.put("numplayers", String.valueOf(this.numPlayers));
KVdata.put("maxplayers", String.valueOf(this.maxPlayers));
KVdata.put("whitelist", this.whitelist);
KVdata.put("hostip", this.ip);
KVdata.put("hostport", String.valueOf(this.port));
for (Map.Entry<String, String> entry : KVdata.entrySet()) {
query.write(entry.getKey().getBytes(StandardCharsets.UTF_8));
query.write((byte) 0x00);
query.write(entry.getValue().getBytes(StandardCharsets.UTF_8));
query.write((byte) 0x00);
}
query.write(new byte[] { 0x00, 0x01 });
query.write("player_".getBytes());
query.write(new byte[] { 0x00, 0x00 });
for (Player player : this.players) {
query.write(player.getName().getBytes(StandardCharsets.UTF_8));
query.write((byte) 0x00);
}
query.write((byte) 0x00);
} catch (IOException e) {
e.printStackTrace();
}
return query.toByteArray();
}
use of cn.nukkit.Player in project Nukkit by Nukkit.
the class PlayerInventory method sendArmorSlot.
public void sendArmorSlot(int index, Player[] players) {
Item[] armor = this.getArmorContents();
MobArmorEquipmentPacket pk = new MobArmorEquipmentPacket();
pk.eid = this.getHolder().getId();
pk.slots = armor;
pk.encode();
pk.isEncoded = true;
for (Player player : players) {
if (player.equals(this.getHolder())) {
InventorySlotPacket pk2 = new InventorySlotPacket();
pk2.inventoryId = InventoryContentPacket.SPECIAL_ARMOR;
pk2.slot = index - this.getSize();
pk2.item = this.getItem(index);
player.dataPacket(pk2);
} else {
player.dataPacket(pk);
}
}
}
use of cn.nukkit.Player in project Nukkit by Nukkit.
the class PlayerInventory method sendSlot.
@Override
public void sendSlot(int index, Player... players) {
InventorySlotPacket pk = new InventorySlotPacket();
pk.slot = index;
pk.item = this.getItem(index).clone();
for (Player player : players) {
if (player.equals(this.getHolder())) {
pk.inventoryId = ContainerIds.INVENTORY;
player.dataPacket(pk);
} else {
int id = player.getWindowId(this);
if (id == -1) {
this.close(player);
continue;
}
pk.inventoryId = id;
player.dataPacket(pk.clone());
}
}
}
use of cn.nukkit.Player in project Nukkit by Nukkit.
the class PlayerInventory method equipItem.
/**
* Called when a client equips a hotbar inventorySlot. This method should not be used by plugins.
* This method will call PlayerItemHeldEvent.
*
* @param slot hotbar slot Number of the hotbar slot to equip.
* @return boolean if the equipment change was successful, false if not.
*/
public boolean equipItem(int slot) {
if (!isHotbarSlot(slot)) {
this.sendContents((Player) this.getHolder());
return false;
}
if (this.getHolder() instanceof Player) {
PlayerItemHeldEvent ev = new PlayerItemHeldEvent((Player) this.getHolder(), this.getItem(slot), slot);
this.getHolder().getLevel().getServer().getPluginManager().callEvent(ev);
if (ev.isCancelled()) {
this.sendContents(this.getViewers());
return false;
}
}
this.setHeldItemIndex(slot, false);
return true;
}
use of cn.nukkit.Player in project Nukkit by Nukkit.
the class PlayerInventory method sendArmorContents.
public void sendArmorContents(Player[] players) {
Item[] armor = this.getArmorContents();
MobArmorEquipmentPacket pk = new MobArmorEquipmentPacket();
pk.eid = this.getHolder().getId();
pk.slots = armor;
pk.encode();
pk.isEncoded = true;
for (Player player : players) {
if (player.equals(this.getHolder())) {
InventoryContentPacket pk2 = new InventoryContentPacket();
pk2.inventoryId = InventoryContentPacket.SPECIAL_ARMOR;
pk2.slots = armor;
player.dataPacket(pk2);
} else {
player.dataPacket(pk);
}
}
}
Aggregations