Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package ru.lisenochek.mcrust.objects.blockMechanic;
- import org.bukkit.Bukkit;
- import org.bukkit.Location;
- import org.bukkit.entity.Player;
- import org.bukkit.inventory.Inventory;
- import org.bukkit.inventory.ItemStack;
- import ru.lisenochek.mcrust.sql.SQLManager;
- import ru.lisenochek.mcrust.utils.ISBuilder;
- import ru.lisenochek.mcrust.utils.Utils;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- public class Crate {
- private static HashMap<Location, Crate> cratesMap = new HashMap<>();
- private Location location;
- private Type type;
- private Inventory inventory;
- private Crate(Location location, Type type) {
- this.location = location;
- this.type = type;
- this.inventory = Bukkit.createInventory(null, type.getSize(), Utils.stripColor(type.getDisplayName()));
- cratesMap.put(location, this);
- }
- private Crate(Location location, Type type, String data) {
- this.location = location;
- this.type = type;
- this.inventory = Bukkit.createInventory(null, type.getSize(), Utils.stripColor(type.getDisplayName()));
- for (String s : data.split(" ")) {
- String[] s1 = s.split("-");
- inventory.setItem(Integer.parseInt(s1[0]), ISBuilder.deserialiseStack(s1[1]));
- }
- cratesMap.put(location, this);
- }
- public static Crate create(Location location, Type type) {
- return new Crate(location, type);
- }
- public static Crate create(Location location, Type type, String data) {
- return new Crate(location, type, data);
- }
- public static void save() {
- for (Crate crate : cratesMap.values()) SQLManager.getManager().updateCrateData(crate);
- }
- public static Crate fromLocation(Location location) {
- return cratesMap.get(location);
- }
- public Location getLocation() {
- return location;
- }
- public Type getType() {
- return type;
- }
- public List<ItemStack> getContents() {
- List<ItemStack> stacks = new ArrayList<>();
- for (int slot = 0; slot < type.getSize(); slot++) {
- ItemStack stack = inventory.getItem(slot);
- if (stack != null) stacks.add(stack);
- }
- return stacks;
- }
- public void remove() {
- for (ItemStack stack : getContents()) location.getWorld().dropItemNaturally(location.clone().add(0.5D, 0, 0.5D), stack);
- cratesMap.remove(location);
- SQLManager.getManager().deleteCrateData(this);
- }
- public void openGUI(Player player) {
- player.openInventory(inventory);
- }
- public String serialize() {
- if (getContents().size() == 0) return null;
- StringBuilder builder = new StringBuilder();
- for (int slot = 0; slot < type.getSize(); slot++) {
- ItemStack stack = inventory.getItem(slot);
- if (stack == null) continue;
- builder.append(slot).append("-").append(ISBuilder.serialise(stack)).append(" ");
- }
- return builder.toString();
- }
- public enum Type {
- SMALL("&2&lМаленький ящик", 18),
- LARGE("&2&lБольшой ящик", 54);
- private String displayName;
- private int slots;
- Type(String displayName, int slots) {
- this.displayName = displayName;
- this.slots = slots;
- }
- public String getDisplayName() {
- return displayName;
- }
- public int getSize() {
- return slots;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement