[Added] Toggle in config to choose mode of Exchange.

This commit is contained in:
TeamHR 2024-03-24 10:52:18 +05:30
parent 7461aef45a
commit 7c1fd5910f
6 changed files with 61 additions and 39 deletions

View File

@ -6,7 +6,7 @@
<groupId>com.craftaro</groupId>
<artifactId>EpicEnchants</artifactId>
<version>2.0.0</version>
<version>2.0.1</version>
<name>EpicEnchants</name>
<description>Unlock the potential of your weapons, tools and armor by making your own custom enchants.</description>

View File

@ -8,6 +8,7 @@ import com.craftaro.epicenchants.objects.Group;
import com.craftaro.epicenchants.objects.Placeholder;
import com.craftaro.epicenchants.utils.objects.FastInv;
import com.craftaro.epicenchants.utils.objects.ItemBuilder;
import com.craftaro.epicenchants.utils.settings.Settings;
import com.craftaro.epicenchants.utils.single.GeneralUtils;
import org.bukkit.Material;
import org.bukkit.configuration.file.FileConfiguration;
@ -202,7 +203,7 @@ public class AlchemistMenu extends FastInv {
NBTItem rightItem = new NBTItem(getInventory().getItem(this.RIGHT_SLOT));
int ecoCost;
int expCost;
String Mode = Settings.MODE.getString();
if (leftItem.hasTag("book-item")) {
int level = leftItem.getInteger("level");
Enchant enchant = this.instance.getEnchantManager().getValue(leftItem.getString("enchant")).orElseThrow(() -> new IllegalStateException("Book without enchant!"));
@ -268,22 +269,32 @@ public class AlchemistMenu extends FastInv {
Placeholder.of("eco_cost", ecoCost),
Placeholder.of("exp_cost", expCost)
).build(), event -> {
if (!EconomyManager.hasBalance(event.getPlayer(), ecoCost) || getExp(event.getPlayer()) < expCost) {
if (EconomyManager.isEnabled() && Mode.equalsIgnoreCase("ECO") && EconomyManager.getBalance(event.getPlayer()) < ecoCost){
this.instance.getLocale().getMessage("alchemist.cannotafford").sendPrefixedMessage(event.getPlayer());
return;
}
if (Mode.equalsIgnoreCase("EXP") && getExp(event.getPlayer()) < expCost) {
this.instance.getLocale().getMessage("alchemist.cannotafford").sendPrefixedMessage(event.getPlayer());
return;
}
if(EconomyManager.isEnabled()){
EconomyManager.withdrawBalance(event.getPlayer(), ecoCost);
this.instance.getLocale().getMessage("alchemist.successeco")
.processPlaceholder("eco_cost", ecoCost)
.sendPrefixedMessage(event.getPlayer());
}
else {
changeExp(event.getPlayer(), -expCost);
this.instance.getLocale().getMessage("alchemist.successexp")
.processPlaceholder("exp_cost", expCost)
.sendPrefixedMessage(event.getPlayer());
switch (Mode.toUpperCase()) {
case "ECO":
EconomyManager.withdrawBalance(event.getPlayer(), ecoCost);
this.instance.getLocale().getMessage("alchemist.successeco")
.processPlaceholder("eco_cost", ecoCost)
.sendPrefixedMessage(event.getPlayer());
break;
case "EXP":
changeExp(event.getPlayer(), -expCost);
this.instance.getLocale().getMessage("alchemist.successexp")
.processPlaceholder("exp_cost", expCost)
.sendPrefixedMessage(event.getPlayer());
break;
default:
System.out.println("Wrong MODE value detected. Use ECO or EXP.");
break;
}
event.getPlayer().getInventory().addItem(getInventory().getItem(this.PREVIEW_SLOT));
clear(this.RIGHT_SLOT);

View File

@ -1,11 +1,14 @@
package com.craftaro.epicenchants.menus;
import com.craftaro.core.configuration.Config;
import com.craftaro.core.hooks.EconomyManager;
import com.craftaro.epicenchants.EpicEnchants;
import com.craftaro.epicenchants.objects.Group;
import com.craftaro.epicenchants.objects.Placeholder;
import com.craftaro.epicenchants.utils.objects.FastInv;
import com.craftaro.epicenchants.utils.objects.ItemBuilder;
import com.craftaro.epicenchants.utils.settings.Settings;
import org.bukkit.configuration.Configuration;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@ -28,7 +31,7 @@ public class EnchanterMenu extends FastInv {
if (config.isConfigurationSection("fill")) {
fill(new ItemBuilder(config.getConfigurationSection("fill")).build());
}
String Mode = Settings.MODE.getString();
config.getConfigurationSection("contents").getKeys(false)
.stream()
.map(s -> "contents." + s)
@ -39,7 +42,7 @@ public class EnchanterMenu extends FastInv {
int ecoCost = section.getInt("eco-cost");
int xpLeft = Math.max(expCost - player.getLevel(), 0);
double ecoLeft = 0.0d;
if (EconomyManager.isEnabled())
if (EconomyManager.isEnabled() && Mode.equalsIgnoreCase("ECO"))
ecoLeft = ecoCost - EconomyManager.getBalance(player) < 0 ? 0 : ecoCost - EconomyManager.getBalance(player);
Group group = instance.getGroupManager().getValue(section.getString("group").toUpperCase())
.orElseThrow(() -> new IllegalArgumentException("Invalid group set in enchanter: " + section.getString("group")));
@ -50,34 +53,40 @@ public class EnchanterMenu extends FastInv {
Placeholder.of("eco_left", ecoLeft)).build();
addItem(getSlots(section.getString("slot")), itemStack, event -> {
// Todo: wanna change this
if (this.delay.getOrDefault(player.getUniqueId(), 0L) > System.currentTimeMillis()) {
return;
}
if (EconomyManager.isEnabled() && EconomyManager.getBalance(player) < ecoCost && getExp(player) < expCost) {
if (EconomyManager.isEnabled() && Mode.equalsIgnoreCase("ECO") && EconomyManager.getBalance(player) < ecoCost) {
instance.getLocale().getMessage("enchanter.cannotafford").sendPrefixedMessage(player);
return;
}
if (EconomyManager.isEnabled() && EconomyManager.getBalance(player) >= ecoCost) {
EconomyManager.withdrawBalance(player, ecoCost);
event.getPlayer().sendMessage(instance.getLocale().getMessage("enchanter.successeco")
.processPlaceholder("group_name", group.getName())
.processPlaceholder("group_color", group.getColor())
.processPlaceholder("eco_cost", ecoCost)
.getPrefixedMessage());
if (Mode.equalsIgnoreCase("EXP") && getExp(player) < expCost) {
instance.getLocale().getMessage("enchanter.cannotafford").sendPrefixedMessage(player);
return;
}
else{
changeExp(player, -expCost);
event.getPlayer().sendMessage(instance.getLocale().getMessage("enchanter.successexp")
.processPlaceholder("group_name", group.getName())
.processPlaceholder("group_color", group.getColor())
.processPlaceholder("exp_cost", expCost)
.getPrefixedMessage());
switch (Mode.toUpperCase()) {
case "ECO":
EconomyManager.withdrawBalance(player, ecoCost);
event.getPlayer().sendMessage(instance.getLocale().getMessage("enchanter.successeco")
.processPlaceholder("group_name", group.getName())
.processPlaceholder("group_color", group.getColor())
.processPlaceholder("eco_cost", ecoCost)
.getPrefixedMessage());
break;
case "EXP":
changeExp(player, -expCost);
event.getPlayer().sendMessage(instance.getLocale().getMessage("enchanter.successexp")
.processPlaceholder("group_name", group.getName())
.processPlaceholder("group_color", group.getColor())
.processPlaceholder("exp_cost", expCost)
.getPrefixedMessage());
break;
default:
System.out.println("Wrong MODE value detected. Use ECO or EXP.");
break;
}
player.getInventory().addItem(instance.getSpecialItems().getMysteryBook(group));
this.delay.put(event.getPlayer().getUniqueId(), System.currentTimeMillis() + 120);
});
});

View File

@ -14,6 +14,7 @@ public class Settings {
public static final ConfigSetting BLACK_MIN = new ConfigSetting(CONFIG, "Main.Black Scroll Min", 20);
public static final ConfigSetting BLACK_MAX = new ConfigSetting(CONFIG, "Main.Black Scroll Max", 100);
public static final ConfigSetting MODE = new ConfigSetting(CONFIG, "Main.Mode", "EXP", "Can be ECO or EXP");
public static final ConfigSetting ECONOMY_PLUGIN = new ConfigSetting(CONFIG, "Main.Economy", EconomyManager.getEconomy() == null ? "Vault" : EconomyManager.getEconomy().getName(),
"Which economy plugin should be used?",

View File

@ -14,12 +14,12 @@ accept-slot: 31
book:
success-rate-formula: "({left_success_rate} + {right_success_rate}) / 4"
destroy-rate-formula: "({left_destroy_rate} + {right_destroy_rate}) / 4 + {max_destroy_rate}"
eco-cost-formula: "0"
eco-cost-formula: "({group_order_index} + 1) * {final_success_rate} * 4"
exp-cost-formula: "({group_order_index} + 1) * {final_success_rate}"
dust:
percentage-formula: "({left_percentage} + {right_percentage}) / 2"
eco-cost-formula: "0"
eco-cost-formula: "({group_order_index} + 1) * {final_success_rate} * 4"
exp-cost-formula: "({group_order_index} + 1) * {final_success_rate}"
contents:
@ -37,14 +37,14 @@ contents:
display-name: "&cWaiting for you..."
lore:
- "&7The alchemist is waiting"
- "&7for your enchange..."
- "&7for your exchange..."
accept-after:
material: INK_SACK
data: 10
display-name: "&eClick to confirm"
lore:
- "&cCost: {exp_cost} EXP"
- ""
- "&cCost: ${eco_cost}"
- "&7Click to confirm the exchange"
- "&7after which you will receive"
- "&7the item displayed above."
@ -73,4 +73,4 @@ contents:
material: STAINED_GLASS_PANE
data: 3
display-name: "&r"
slot: "2,3,5,6,18,26,38,39,40,41,42"
slot: "2,3,5,6,18,26,38,39,40,41,42"

View File

@ -19,6 +19,7 @@ contents:
- "&fof possible enchants you could unlock!"
- ""
- "&b&lCOST &r&f{exp_cost} EXP"
- "&b&lCOST &r&f${exp_cost}"
group: SIMPLE
exp-cost: 400
eco-cost: 0