Added even more customisation to infinite use charge

This commit is contained in:
Niels Vergucht 2018-12-30 15:27:37 +01:00
parent 3c5983651f
commit 5c5ed84b65
5 changed files with 36 additions and 17 deletions

View File

@ -122,7 +122,7 @@
<url>http://nexus.hc.to/content/repositories/pub_releases</url>
</repository>
<repository>
<id>33_aikar</id>
<id>3_aikar</id>
<url>https://repo.aikar.co/content/groups/aikar/</url>
</repository>
<repository>

View File

@ -51,7 +51,7 @@ public class ConfigManager {
private boolean infiniteUse;
private boolean chargeInfiniteUse;
private HashMap<GenbucketType, Double> infiniteUseCost;
private HashMap<GenbucketType, HashMap<ItemStack, Double>> infiniteUseCost;
private int genbucketDelay;
private CooldownMap<Player> cooldownMap;
@ -115,15 +115,21 @@ public class ConfigManager {
inventorySize = epicBuckets.getConfig().getInt(menuItemsPath + ".size");
inventoryName = epicBuckets.getConfig().getString(menuItemsPath + ".inventory-name");
fillInventory = epicBuckets.getConfig().getBoolean(menuItemsPath + ".fill");
epicBuckets.getConfig().getConfigurationSection("CUSTOM-ACTIVE-GEN-PER-PLAY").getKeys(false).forEach(s -> genbucketGroups.put(epicBuckets.getConfig().getString("CUSTOM-ACTIVE-GEN-PER-PLAY." + s).split(":")[1], Integer.parseInt(epicBuckets.getConfig().getString("CUSTOM-ACTIVE-GEN-PER-PLAY." + s).split(":")[0])));
chargeInfiniteUse = epicBuckets.getConfig().getBoolean("CHARGE-FOR-INFINITE-USE");
epicBuckets.getConfig().getConfigurationSection("CUSTOM-ACTIVE-GEN-PER-PLAY").getKeys(false)
.forEach(s -> genbucketGroups.put(epicBuckets.getConfig().getString("CUSTOM-ACTIVE-GEN-PER-PLAY." + s).split(":")[1],
Integer.parseInt(epicBuckets.getConfig().getString("CUSTOM-ACTIVE-GEN-PER-PLAY." + s).split(":")[0])));
epicBuckets.getConfig().getConfigurationSection("COST-FOR-INFINITE-USE").getKeys(false)
.forEach(cost -> this.infiniteUseCost.put(GenbucketType.valueOf(cost),
epicBuckets.getConfig().getDouble("COST-FOR-INFINITE-USE." + cost)));
.forEach(bucket -> {
HashMap<ItemStack, Double> chargingCostsPerItem = new HashMap<>();
epicBuckets.getConfig().getConfigurationSection("COST-FOR-INFINITE-USE." + bucket).getKeys(false)
.forEach(item -> chargingCostsPerItem.put(XMaterial.valueOf(item).parseItem(), epicBuckets.getConfig().getDouble("COST-FOR-INFINITE-USE." + bucket + "." + item)));
infiniteUseCost.put(GenbucketType.valueOf(bucket), chargingCostsPerItem);
});
genbucketDelay = epicBuckets.getConfig().getInt("GENBUCKET-DELAY");
if (getGenbucketDelay() > 0) {
cooldownMap = CooldownMap.create(Cooldown.of(getGenbucketDelay() / 20, TimeUnit.SECONDS));
} else {
@ -313,8 +319,8 @@ public class ConfigManager {
return chargeInfiniteUse;
}
public double getInfiniteUseCostForGenbucketType(GenbucketType genbucketType) {
return infiniteUseCost.get(genbucketType);
public double getInfiniteUseCostForGenbucketType(GenbucketType genbucketType, ItemStack item) {
return infiniteUseCost.get(genbucketType).get(item);
}
public int getGenbucketDelay() {

View File

@ -155,7 +155,7 @@ public abstract class Genbucket {
return true;
}
protected ItemStack getGenItem() {
public ItemStack getGenItem() {
return subShop.getGenItem();
}

View File

@ -94,13 +94,13 @@ public class GenbucketPlaceListener implements Listener {
}
if (EpicBuckets.getInstance().getConfigManager().isInfiniteUse() && EpicBuckets.getInstance().getConfigManager().isChargeInfiniteUse()) {
if (EpicBuckets.getInstance().getEcon().getBalance(Bukkit.getOfflinePlayer(e.getPlayer().getUniqueId())) < EpicBuckets.getInstance().getConfigManager().getInfiniteUseCostForGenbucketType(genbucket.getGenbucketType())) {
if (EpicBuckets.getInstance().getEcon().getBalance(Bukkit.getOfflinePlayer(e.getPlayer().getUniqueId())) < EpicBuckets.getInstance().getConfigManager().getInfiniteUseCostForGenbucketType(genbucket.getGenbucketType(), genbucket.getGenItem())) {
e.getPlayer().sendMessage(EpicBuckets.getInstance().getLocale().getMessage("event.genbucket.infiniteuse.notenough"));
return;
}
if (EpicBuckets.getInstance().getConfigManager().getInfiniteUseCostForGenbucketType(genbucket.getGenbucketType()) > 0) {
EpicBuckets.getInstance().getEcon().withdrawPlayer(Bukkit.getOfflinePlayer(e.getPlayer().getUniqueId()), EpicBuckets.getInstance().getConfigManager().getInfiniteUseCostForGenbucketType(genbucket.getGenbucketType()));
e.getPlayer().sendMessage(EpicBuckets.getInstance().getLocale().getMessage("event.genbucket.infiniteuse.charge").replace("%charge%", EpicBuckets.getInstance().getConfigManager().getInfiniteUseCostForGenbucketType(genbucket.getGenbucketType()) + ""));
if (EpicBuckets.getInstance().getConfigManager().getInfiniteUseCostForGenbucketType(genbucket.getGenbucketType(), genbucket.getGenItem()) > 0) {
EpicBuckets.getInstance().getEcon().withdrawPlayer(Bukkit.getOfflinePlayer(e.getPlayer().getUniqueId()), EpicBuckets.getInstance().getConfigManager().getInfiniteUseCostForGenbucketType(genbucket.getGenbucketType(), genbucket.getGenItem()));
e.getPlayer().sendMessage(EpicBuckets.getInstance().getLocale().getMessage("event.genbucket.infiniteuse.charge").replace("%charge%", EpicBuckets.getInstance().getConfigManager().getInfiniteUseCostForGenbucketType(genbucket.getGenbucketType(), genbucket.getGenItem()) + ""));
}
}

View File

@ -23,11 +23,24 @@ INFINITE-USE: false # If enabled, you won't lose a genbucket when you place it d
CHARGE-FOR-INFINITE-USE: false # This requires infinite use to be enabled and will charge the player when placing a genbucket
# Money charged for placing a genbucket when the above is enabled, put 0 if you want no charge
# Use 1.13 material names, they will be auto converted to whatever your server version is
COST-FOR-INFINITE-USE:
HORIZONTAL: 0
VERTICAL: 0
PSUEDO: 0
INFUSED: 0
HORIZONTAL:
COBBLESTONE: 0
SAND: 0
OBSIDIAN: 0
VERTICAL:
COBBLESTONE: 0
SAND: 0
OBSIDIAN: 0
PSUEDO:
COBBLESTONE: 0
SAND: 0
OBSIDIAN: 0
INFUSED:
COBBLESTONE: 0
OBSIDIAN: 0
NETHERRACK: 0
GENBUCKET-DELAY: 10 # Ticks delay between genbucket placements, 20 ticks = 1 second, set to 0 for no delay