Ardas-Legends-Development-Team / AL_Base_Plugin

The AL_Base_Plugin is a plugin meant to integrate the Ardas Legends Minecraft Server with the backend software running the system.
European Union Public License 1.2
1 stars 1 forks source link

Feature: Death-Chests #100

Open MoritzRohleder opened 6 months ago

MoritzRohleder commented 6 months ago

Project

AL_Base_Plugin

Autor

Anedhel

Description

I want to integrate Jukoz solution for death-chests into the AL_Base_Plugin. Additionally Death-Chests are locked until the "owner" first opens them. After that they are free to open by anyone. Within the config files, Admins can define which slots are "kept" upon death

ACs

MoritzRohleder commented 6 months ago

Jukoz Code: Main

package me.Jukoz.DeathChest;

import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;

import me.Jukoz.Events.EventClass;

public class DeathChest extends JavaPlugin{

    //EventClass eventClass = new EventClass();

    @Override
    public void onEnable()  {

        getServer().getConsoleSender().sendMessage(ChatColor.BLUE + "\n\nDeathChest has been enabled \n\n");
        getServer().getPluginManager().registerEvents(new EventClass(), this);
        this.getLogger().info("DeathChest Plugin is running");
    }

    @Override
    public void onDisable() {
        getServer().getConsoleSender().sendMessage(ChatColor.RED + "\n\nDeathChest has been disabled\n\n");
    }   
}

Listener:

package me.Jukoz.Events;

import java.util.ArrayList;

import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Chest;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

public class EventClass implements Listener { 

    @EventHandler 
    void onDeath(PlayerDeathEvent event) {
        final Player player = event.getEntity();
        final Location loc = player.getLocation();
        ArrayList<ItemStack> content = new ArrayList<ItemStack>();

        loc.getBlock().setType(Material.CHEST);

        Chest chest = (Chest) loc.getBlock().getState();      

        for(int x = 9; x < 36; x++) {
            ItemStack item = player.getInventory().getItem(x);
            if (item != null) {
                content.add(item);
                player.getInventory().setItem(x, new ItemStack(Material.AIR));
            }
            chest.getInventory().setContents(content.toArray(new ItemStack[content.size()]));
        }
    }
}