Solved Need deep value clone of Inventory

Discussion in 'Plugin Development' started by Tecno_Wizard, Mar 3, 2016.

Thread Status:
Not open for further replies.
  1. Offline

    Tecno_Wizard

    Title explains it. Is there a simple way to do this besides creating a custom inventory class to allow myself to override clone? I'd rather not clone every stack...
     
  2. newInventory.setContents(oldInventory.getContents());
     
  3. Offline

    Tecno_Wizard

    @FisheyLP, wonders why that exists instead of clone...

    Thank you.

    EDIT: That worked. Still had to clone some stacks though.
     
    Last edited: Mar 3, 2016
  4. Offline

    InstanceofDeath

    If you ment this ->

    <Source>

    package de.Test.main;

    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.Material;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.java.JavaPlugin;

    public class Main extends JavaPlugin {

    public void onEnable() {

    }

    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
    if(sender instanceof Player) {
    Player p = (Player)sender;

    if(cmd.getName().equalsIgnoreCase("openInventory")) {
    if(args.length == 1) {
    Player p2 = Bukkit.getPlayer(args[0]);

    if(p2.isOnline()) {

    // here I call the Getter for the Inventory (below)

    p.openInventory(this.getInventory(p2));

    } else {
    p.sendMessage(ChatColor.RED + "Player is not online!");
    }

    }
    }

    }

    return false;

    }

    // @Getter Method for getting a Players Inventory

    public Inventory getInventory(Player p) {

    ItemStack[] invItems = p.getInventory().getContents();
    ItemStack[] armorItems = p.getInventory().getArmorContents();

    ItemStack heart = new ItemStack(Material.INK_SACK);
    heart.setDurability((short) 1);
    ItemMeta heartM = heart.getItemMeta();
    heartM.setDisplayName(p.getHealth() + "/20.0 Hearts");
    heart.setItemMeta(heartM);

    ItemStack food = new ItemStack(Material.BREAD);
    ItemMeta foodM = food.getItemMeta();
    foodM.setDisplayName(p.getFoodLevel() + "/20 Foodpoints");
    food.setItemMeta(foodM);

    ItemStack potion = new ItemStack(Material.POTION);
    ItemMeta potionM = potion.getItemMeta();

    if(p.getActivePotionEffects().isEmpty()) {
    potionM.setDisplayName("no Potioneffects");
    } else {
    potionM.setDisplayName(p.getActivePotionEffects().toString() + " Potioneffects");
    }

    potion.setItemMeta(potionM);

    Inventory inv = Bukkit.createInventory(null, 54, "§8Inventory of " + p.getName());

    inv.setItem(6, potion);
    inv.setItem(7, heart);
    inv.setItem(8, food);

    int invslots = 18;
    int armorslots = 0;

    ItemStack voidItem = new ItemStack(Material.STAINED_GLASS_PANE);
    voidItem.setDurability((short) 15);

    for(int i = 9; i < 18; i++) {
    inv.setItem(i, voidItem);
    }

    for(ItemStack Item : invItems) {
    inv.setItem(invslots, Item);
    invslots++;

    }

    for(ItemStack Item : armorItems) {
    inv.setItem(armorslots, Item);
    armorslots++;
    }

    return inv;

    }

    }

    </Source>

    [​IMG]
     
  5. Never saw such a huge spoonfeed :|
     
    WolfMage1 likes this.
Thread Status:
Not open for further replies.

Share This Page