2018-12-04 23:24:24 +01:00
|
|
|
package com.songoda.epicbuckets.genbucket;
|
|
|
|
|
|
|
|
import com.songoda.epicbuckets.EpicBuckets;
|
2018-12-13 15:11:19 +01:00
|
|
|
import com.songoda.epicbuckets.regionhandler.*;
|
2018-12-06 16:13:53 +01:00
|
|
|
import com.songoda.epicbuckets.util.ChatUtil;
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
2018-12-06 01:32:12 +01:00
|
|
|
import org.bukkit.Location;
|
2018-12-04 23:24:24 +01:00
|
|
|
import org.bukkit.entity.Player;
|
|
|
|
|
|
|
|
import java.util.*;
|
|
|
|
|
|
|
|
public class GenbucketManager {
|
|
|
|
|
|
|
|
private EpicBuckets epicBuckets;
|
|
|
|
private HashMap<UUID, List<Genbucket>> activeGens;
|
2018-12-06 16:13:53 +01:00
|
|
|
private List<Player> admins;
|
2018-12-04 23:24:24 +01:00
|
|
|
|
|
|
|
public GenbucketManager() {
|
|
|
|
this.epicBuckets = EpicBuckets.getInstance();
|
|
|
|
activeGens = new HashMap<>();
|
2018-12-06 16:13:53 +01:00
|
|
|
admins = new ArrayList<>();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void notifyAdmins(Player user, Genbucket genbucket) {
|
|
|
|
admins.forEach(player -> player.sendMessage(ChatUtil.colorPrefix(epicBuckets.getLocale().getMessage("event.genbucket.admin").replace("%player%", user.getName()).replace("%genbucket%", StringUtils.capitalize(genbucket.getGenbucketType().name.toLowerCase()) + " genbucket"))));
|
|
|
|
}
|
|
|
|
|
|
|
|
public void toggleAdmin(Player player) {
|
|
|
|
if (admins.contains(player)) {
|
|
|
|
removeAdmin(player);
|
2018-12-06 20:26:38 +01:00
|
|
|
player.sendMessage(ChatUtil.colorPrefix(epicBuckets.getLocale().getMessage("command.admin.toggle").replace("%mode%", "&cdisabled")));
|
2018-12-06 16:13:53 +01:00
|
|
|
return;
|
|
|
|
}
|
|
|
|
addAdmin(player);
|
2018-12-06 20:26:38 +01:00
|
|
|
player.sendMessage(ChatUtil.colorPrefix(epicBuckets.getLocale().getMessage("command.admin.toggle").replace("%mode%", "&aenabled")));
|
2018-12-06 16:13:53 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
private void removeAdmin(Player player) {
|
|
|
|
admins.remove(player);
|
|
|
|
}
|
|
|
|
|
|
|
|
private void addAdmin(Player player) {
|
|
|
|
admins.add(player);
|
2018-12-04 23:24:24 +01:00
|
|
|
}
|
|
|
|
|
2018-12-06 20:26:38 +01:00
|
|
|
public List<Genbucket> activeGensInOneList() {
|
|
|
|
List<Genbucket> gens = new ArrayList<>();
|
|
|
|
activeGens.forEach((uuid, genbuckets) -> gens.addAll(genbuckets));
|
|
|
|
return gens;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getTotalActiveGenbuckets(HashMap<UUID, List<Genbucket>> gens) {
|
|
|
|
int total = 0;
|
|
|
|
for (UUID uuid : gens.keySet()) {
|
|
|
|
total += gens.get(uuid).size();
|
|
|
|
}
|
|
|
|
return total;
|
|
|
|
}
|
|
|
|
|
2018-12-04 23:24:24 +01:00
|
|
|
public void unregisterGenbucketForPlayer(Player owner, UUID genUUID) {
|
|
|
|
List<Genbucket> genbuckets = activeGens.get(owner.getUniqueId());
|
|
|
|
List<Genbucket> newGenbuckets = new ArrayList<>();
|
|
|
|
genbuckets.stream().filter(genbucket -> genbucket.getGenUUID() != genUUID).forEach(newGenbuckets::add);
|
|
|
|
activeGens.put(owner.getUniqueId(), newGenbuckets);
|
|
|
|
}
|
|
|
|
|
|
|
|
public void registerGenbucketForPlayer(Player owner, Genbucket genbucket) {
|
|
|
|
if (!activeGens.containsKey(owner.getUniqueId())) activeGens.put(owner.getUniqueId(), new ArrayList<>(Arrays.asList(genbucket)));
|
|
|
|
List<Genbucket> genbucketItems = activeGens.get(owner.getUniqueId());
|
|
|
|
genbucketItems.add(genbucket);
|
|
|
|
activeGens.put(owner.getUniqueId(), genbucketItems);
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean canRegisterNewGenbucket(Player owner) {
|
2018-12-18 00:01:34 +01:00
|
|
|
if (epicBuckets.getConfigManager().isUnlimitedGenbuckets()) return true;
|
2018-12-04 23:24:24 +01:00
|
|
|
if (!activeGens.containsKey(owner.getUniqueId())) return true;
|
2018-12-07 01:09:19 +01:00
|
|
|
if (activeGens.get(owner.getUniqueId()).size() <= getMaxGenbucketsForPlayer(owner)) return true;
|
2018-12-04 23:24:24 +01:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getMaxGenbucketsForPlayer(Player owner) {
|
|
|
|
LinkedHashMap<String, Integer> groups = epicBuckets.getConfigManager().getGenbucketGroups();
|
|
|
|
for (String perm : groups.keySet()) {
|
|
|
|
if (owner.hasPermission(perm)) return groups.get(perm);
|
|
|
|
}
|
|
|
|
return epicBuckets.getConfigManager().getMaxGenbucketsPerPlayer();
|
|
|
|
}
|
|
|
|
|
2018-12-06 01:32:12 +01:00
|
|
|
public boolean canPlaceGenbucket(Player player, Location location) {
|
2018-12-14 22:12:44 +01:00
|
|
|
boolean factionsCheck = RegionFactions.canBuild(player, location);
|
2018-12-06 01:32:12 +01:00
|
|
|
boolean griefPreventionCheck = RegionGriefPrevention.canBuild(player, location);
|
|
|
|
boolean worldGuardCheck = RegionWorldGuard.canBuild(player, location);
|
|
|
|
boolean worldBorderCheck = RegionWorldBorder.isOutsideOfBorder(location);
|
|
|
|
|
2018-12-14 22:12:44 +01:00
|
|
|
if (!factionsCheck || !griefPreventionCheck || !worldGuardCheck || worldBorderCheck) {
|
2018-12-06 01:32:12 +01:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2018-12-06 20:26:38 +01:00
|
|
|
public HashMap<UUID, List<Genbucket>> getActiveGens() {
|
|
|
|
return activeGens;
|
|
|
|
}
|
2018-12-04 23:24:24 +01:00
|
|
|
}
|