UltimateStacker/src/main/java/com/songoda/ultimatestacker/stackable/block/BlockStack.java

130 lines
3.3 KiB
Java

package com.songoda.ultimatestacker.stackable.block;
import com.songoda.core.compatibility.CompatibleMaterial;
import com.songoda.core.utils.TextUtils;
import com.songoda.ultimatestacker.UltimateStacker;
import com.songoda.ultimatestacker.settings.Settings;
import com.songoda.ultimatestacker.stackable.Hologramable;
import com.songoda.ultimatestacker.utils.Methods;
import com.songoda.ultimatestacker.utils.Stackable;
import org.bukkit.Location;
import org.bukkit.World;
import java.util.UUID;
public class BlockStack implements Stackable, Hologramable {
// This is the unique identifier for this stack.
// It is reset on every plugin load.
// Used for holograms.
private final UUID uniqueId = UUID.randomUUID();
// The id that identifies this stack in the database.
private int id;
private int amount = 1;
private final CompatibleMaterial material;
private final Location location;
public BlockStack(CompatibleMaterial material, Location location) {
this.material = material;
this.location = location;
}
public BlockStack(CompatibleMaterial material, Location location, int amount) {
this.amount = amount;
this.material = material;
this.location = location;
}
@Override
public int getAmount() {
return amount;
}
@Override
public boolean isValid() {
return CompatibleMaterial.getMaterial(location.getBlock()) == material;
}
public void add(int amount) {
this.amount = this.amount + amount;
}
public void take(int amount) {
this.amount = this.amount - amount;
}
public int getX() {
return location.getBlockX();
}
public int getY() {
return location.getBlockY();
}
public int getZ() {
return location.getBlockZ();
}
public World getWorld() {
return location.getWorld();
}
public void destroy() {
amount = 0;
UltimateStacker plugin = UltimateStacker.getInstance();
plugin.getBlockStackManager().removeBlock(location);
plugin.removeHologram(this);
plugin.getDataManager().deleteBlock(this);
}
@Override
public Location getLocation() {
return location;
}
public CompatibleMaterial getMaterial() {
return material;
}
@Override
public String getHologramName() {
String nameFormat = Settings.NAME_FORMAT_BLOCK.getString();
String displayName = TextUtils.formatText(material.name().toLowerCase().replace("_", " "), true);
nameFormat = nameFormat.replace("{TYPE}", displayName);
nameFormat = nameFormat.replace("{AMT}", Integer.toString(amount));
return TextUtils.formatText(nameFormat).trim();
}
@Override
public boolean areHologramsEnabled() {
return Settings.BLOCK_HOLOGRAMS.getBoolean();
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String getHologramId() {
return "UltimateStacker-" + uniqueId;
}
@Override
public String toString() {
return "BlockStack{" +
"id=" + id +
", amount=" + amount +
", material=" + material +
", location=" + location +
'}';
}
}