Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package me.itreptau.protocolLibTest;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.logging.Level;
- import java.util.logging.Logger;
- import org.bukkit.Material;
- import org.bukkit.command.Command;
- import org.bukkit.entity.Entity;
- import org.bukkit.entity.Item;
- import org.bukkit.entity.Player;
- import org.bukkit.event.inventory.InventoryType;
- import org.bukkit.event.inventory.InventoryType.SlotType;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import org.bukkit.inventory.PlayerInventory;
- import org.bukkit.plugin.java.JavaPlugin;
- import com.comphenix.protocol.ProtocolLibrary;
- import com.comphenix.protocol.ProtocolManager;
- import com.comphenix.protocol.events.ConnectionSide;
- import com.comphenix.protocol.events.ListenerPriority;
- import com.comphenix.protocol.events.PacketAdapter;
- import com.comphenix.protocol.events.PacketContainer;
- import com.comphenix.protocol.events.PacketEvent;
- import com.comphenix.protocol.reflect.FieldAccessException;
- public class ProtocolLibTest extends JavaPlugin {
- public Map<Player, Inventory> outfitMap = new HashMap<Player, Inventory>();
- private ProtocolManager protocolManager;
- public Logger logger = Logger.getLogger("ProtocolLibTest");
- enum Armortype {HELMET, CHESTPLATE, LEGGINGS, BOOTS}
- @Override
- public void onDisable() {
- System.out.println("ProtocolLibTest disabled!");
- }
- @Override
- public void onEnable() {
- protocolManager = ProtocolLibrary.getProtocolManager();
- getCommand("outfit").setExecutor(new ProtocolLibTestCommandExecutor(this));
- enableOutfit();
- System.out.println("ProtocolLibTest enabled!");
- }
- public Player getPlayerFromEntityId (int entityId) {
- for(Player player: getServer().getOnlinePlayers()) {
- if(player.getEntityId() == entityId) {
- return player;
- }
- }
- return null;
- }
- public Inventory getOutfitInventory(Player player) {
- if(!outfitMap.containsKey(player)) {
- outfitMap.put(player, getServer().createInventory(player, InventoryType.PLAYER));
- }
- return outfitMap.get(player);
- }
- public ItemStack getFirstItemStack(ItemStack[] inventoryContent, Armortype armorType) {
- for(ItemStack itemStack: inventoryContent) {
- if(itemStack == null) continue;
- switch(armorType) {
- case HELMET:
- if(itemStack.getType() == Material.LEATHER_HELMET || itemStack.getType() == Material.CHAINMAIL_HELMET || itemStack.getType() == Material.IRON_HELMET || itemStack.getType() == Material.DIAMOND_HELMET)
- return itemStack;
- break;
- case CHESTPLATE:
- if(itemStack.getType() == Material.LEATHER_CHESTPLATE || itemStack.getType() == Material.CHAINMAIL_CHESTPLATE || itemStack.getType() == Material.IRON_CHESTPLATE || itemStack.getType() == Material.DIAMOND_CHESTPLATE)
- return itemStack;
- break;
- case LEGGINGS:
- if(itemStack.getType() == Material.LEATHER_LEGGINGS || itemStack.getType() == Material.CHAINMAIL_LEGGINGS || itemStack.getType() == Material.IRON_LEGGINGS || itemStack.getType() == Material.DIAMOND_LEGGINGS)
- return itemStack;
- break;
- case BOOTS:
- if(itemStack.getType() == Material.LEATHER_BOOTS || itemStack.getType() == Material.CHAINMAIL_BOOTS || itemStack.getType() == Material.IRON_BOOTS || itemStack.getType() == Material.DIAMOND_BOOTS)
- return itemStack;
- break;
- }
- }
- return null;
- }
- public void enableOutfit() {
- protocolManager.addPacketListener(new PacketAdapter(this, ConnectionSide.SERVER_SIDE, 0x5) {
- @Override
- public void onPacketSending(PacketEvent event) {
- PacketContainer packet = event.getPacket();
- try {
- // Player equipment
- if (event.getPacketID() == 0x05) {
- int EntityId = packet.getSpecificModifier(int.class).read(0);
- Player player = getPlayerFromEntityId(EntityId);
- Inventory outfitInventory = getOutfitInventory(player);
- //Helmet
- if(packet.getSpecificModifier(int.class).read(1) == 1) {
- packet.getItemModifier().write(0, getFirstItemStack(outfitInventory.getContents(), Armortype.HELMET));
- System.out.println("Modified" + player.getName() + "'s helmet");
- }
- //Chestplate
- if(packet.getSpecificModifier(int.class).read(1) == 2) {
- packet.getItemModifier().write(0, getFirstItemStack(outfitInventory.getContents(), Armortype.CHESTPLATE));
- System.out.println("Modified" + player.getName() + "'s chestplate");
- }
- //Leggings
- if(packet.getSpecificModifier(int.class).read(1) == 3) {
- packet.getItemModifier().write(0, getFirstItemStack(outfitInventory.getContents(), Armortype.LEGGINGS));
- System.out.println("Modified" + player.getName() + "'s leggings");
- }
- //Shoes
- if(packet.getSpecificModifier(int.class).read(1) == 4) {
- packet.getItemModifier().write(0, getFirstItemStack(outfitInventory.getContents(), Armortype.BOOTS));
- System.out.println("Modified" + player.getName() + "'s shoes");
- }
- }
- } catch (FieldAccessException e) {
- logger.log(Level.SEVERE, "Couldn't access field.", e);
- }
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement