Ich brauche Hilfe bei einem Pluign!

Status
Für weitere Antworten geschlossen.

didi090302

Mitglied
17 Juli 2014
67
14
578
Hallo zusammen,

ich habe ein Plugin programmiert, dass DeathChest spawnt wenn einer stirbt.
Jetzt habe ich das Problem, dass nur die Items aus dem Inventar in die Kiste kommen und nicht die Rüstung aus den Armor Slots.

Ich habe mal den Code hier rein gepasted:
Code:
package didi090302.rpg;

import java.util.HashMap;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;

public class DeathChest implements Listener {

    public static HashMap<Block, Inventory> DeathChest = new HashMap<Block, Inventory>();
   
    @EventHandler
    public void onDeath(PlayerDeathEvent e) {
    Player p = e.getEntity();
    Block blockchest = p.getWorld().getBlockAt(p.getLocation().add(0,0.5,0));
    blockchest.setType(Material.CHEST);
   
    Inventory inv = Bukkit.getServer().createInventory(p.getInventory().getHolder(), 54, "§3"+p.getName()+"'s Items");
    inv.clear();
    inv.setContents(p.getInventory().getArmorContents());
    inv.setContents(p.getInventory().getContents());
   
    DeathChest.put(blockchest, inv);
    e.getDrops().clear();
    }
   
    @EventHandler
    public void onOpen(PlayerInteractEvent e) {
        if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {
            if(e.getClickedBlock().getType() == Material.CHEST) {
                Block block = e.getClickedBlock();
               
                for(Block blocks : DeathChest.keySet()) {
                    if(blocks.getLocation().equals(block.getLocation())) {
                        e.setCancelled(true);
                        e.getPlayer().openInventory(DeathChest.get(blocks));
                    }
                }
            }
        }
    }
   
}

Wenn mir jemand helfen könnte wäre ich sehr dankbar.

MFG
didi090302
 
Es Funktioniert, aber es geht nur wenn ich
Code:
inv.setContents(p.getEquipment().getArmorContents());
ohne
Code:
 inv.setContents(p.getInventory().getContents());
stehen habe.
 
Es Funktioniert, aber es geht nur wenn ich
Code:
inv.setContents(p.getEquipment().getArmorContents());
ohne
Code:
 inv.setContents(p.getInventory().getContents());
stehen habe.
Dann wird es wohl daran liegen, dass setContents() den Inhalt des Inventars nicht erweitert, sondern neu setzt. Das bedeutet, du musst die ItemStack[], die du von den Methoden in setContents(...) bekommst, zusammenführen und dann erst setzen.

Also in etwa so:
ItemStack[] itemstackarray = (ItemStack[]) ArrayUtils.addAll(p.getInventory().getContents(), p.getEquipment().getArmorContents());
inv.setContents(itemstackarray);
 
Status
Für weitere Antworten geschlossen.

Soziale Medien

  • X
  • TikTok

Über uns

  • GommeHD.net ist einer der größten Minecraft-Server der Welt. Dir gefällt unser Server? Dann unterstütze uns durch einen Kauf im Shop!
  • Shop