diff --git a/.gitignore b/.gitignore index 4c59a71..9ede845 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,3 @@ build/ out/ .idea/ libs/ -run/ \ No newline at end of file diff --git a/README.md b/README.md index 0af72de..23e865b 100644 --- a/README.md +++ b/README.md @@ -3,35 +3,32 @@ image

-**ItemEconomy II** is a fork of [ItemEconomy](https://modrinth.com/plugin/itemeconomy), keeping it updated to later versions of Minecraft and adding new features. +ItemEconomy II is a fork of [ItemEconomy](https://modrinth.com/plugin/itemeconomy), keeping it updated to later versions of Minecraft and adding new features. This PaperMC plugin integrates with VaultUnlocked to provide a unique, item-based economy system for your Minecraft server. Instead of relying solely on virtual balances, players use in-game items as physical currency, adding a layer of immersion and realism to your economy. +Features: -ItemEconomy is as powerful as you need and as simple as you want, with every feature being optional. - -## Features -- **Item-Based Currency:** Set any Minecraft item as your server's currency (diamonds by default). +- **Item-Based Currency:** Set any Minecraft item as your server's currency (default: diamonds). - **VaultUnlocked Integration:** Fully compatible with VaultUnlocked, enabling seamless interaction with other economy-based plugins. - **Simple logic:** Just checks if the user has the item/how many when queried. - **Customizable Formatting:** Define how your currency is displayed, including singular and plural forms. - **Ender Chest support:** Items on Ender Chests are counted in the user balance. - **Built-int optional balance and pay commands** with support for permissions. -- **Translation support** with per-user language and per-language currency name. -## Configuration -An updated example configuration file is available [here](https://github.com/adrianvic/ItemEconomy/blob/main/src/main/resources/config.yml). +## Configuration Example: +```yaml +item: diamond # Define the item to be used as currency. +singular: diamond # Singular form of the currency. +plural: diamonds # Plural form of the currency. +format: "{} $" # {} will be replaced with the amount and $ either with singular or plural +ender_chest: balance # Either none or balance +commands: true # Disabling this will disable /balance and /pay +``` + +This configuration will use diamonds as the currency, displayed as {amount} {name}, e.g., "5 diamonds" or "1 diamond". + +## Usage: -## Usage - Players can earn, trade, and store the configured item as physical currency. -- Once they spend the currency, that amount of the item will be subtracted from their inventory. +- Integrates seamlessly with Vault-compatible plugins for shops, auctions, and more. - Administrators can customize the item and formatting to match their server's theme. - -## Commands -
-
/balance
-
Prints player balance, permission is `iteco.balance` but is allowed by default. Requires permission `iteco.balance.others` to specify other user.
-
/pay
-
Transfers money from your account to another player's, permission is `iteco.pay` but is allowed by default.
-
/itecoreload
-
Reloads the plugin configuration, requires permission `iteco.reload`.
-
diff --git a/build.gradle.kts b/build.gradle.kts index 35e0edf..bbc19a2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -106,4 +106,4 @@ tasks.withType { tasks.runServer { minecraftVersion("1.21") -} \ No newline at end of file +} diff --git a/src/main/java/io/github/adrianvic/itemeconomy/Main.java b/src/main/java/io/github/adrianvic/itemeconomy/Main.java index 3b999ee..bb524d2 100644 --- a/src/main/java/io/github/adrianvic/itemeconomy/Main.java +++ b/src/main/java/io/github/adrianvic/itemeconomy/Main.java @@ -122,24 +122,12 @@ public class Main extends JavaPlugin { } public static void addItems(Player player, Material type, int amount) { - if (amount <= 0) return; - - HashMap invOverflow = - getInventory(player, InventoryID.INVENTORY) - .addItem(new ItemStack(type, amount)); - - int overflowAmount = invOverflow.values() + HashMap invOverflow = getInventory(player, InventoryID.INVENTORY).addItem(new ItemStack(type, amount)); + HashMap echestOverflow = getInventory(player, InventoryID.ENDER_CHEST).addItem(new ItemStack(type, invOverflow.values() .stream() .mapToInt(ItemStack::getAmount) - .sum(); + .sum())); - if (overflowAmount <= 0) { - return; - } - - HashMap echestOverflow = - getInventory(player, InventoryID.ENDER_CHEST) - .addItem(new ItemStack(type, overflowAmount)); for (ItemStack overflow : echestOverflow.values()) { player.getWorld().dropItemNaturally(player.getLocation(), overflow); diff --git a/src/main/java/io/github/adrianvic/itemeconomy/Messages.java b/src/main/java/io/github/adrianvic/itemeconomy/Messages.java index 33102ce..d9ee83c 100644 --- a/src/main/java/io/github/adrianvic/itemeconomy/Messages.java +++ b/src/main/java/io/github/adrianvic/itemeconomy/Messages.java @@ -17,11 +17,7 @@ public enum Messages { PAY_COULD_NOT_REALIZE_TRANSACTION("pay-could-not-realize-transaction"), PAY_COULD_NOT_FIND_TARGET("pay-could-not-find-target"), PAY_NOT_ENOUGH_MONEY("pay-not-enough-money"), - PAY_INVALID_AMOUNT("pay-invalid-amount"), - RELOADING("reloading"), - RELOAD_ERROR("reload-error"), - RELOAD_FINISHED("reload-finished"); - + PAY_INVALID_AMOUNT("pay-invalid-amount"); private final String path; Messages(String path) { this.path = path; } diff --git a/src/main/java/io/github/adrianvic/itemeconomy/commands/Reload.java b/src/main/java/io/github/adrianvic/itemeconomy/commands/Reload.java index b0d8514..804e6ed 100644 --- a/src/main/java/io/github/adrianvic/itemeconomy/commands/Reload.java +++ b/src/main/java/io/github/adrianvic/itemeconomy/commands/Reload.java @@ -2,28 +2,20 @@ package io.github.adrianvic.itemeconomy.commands; import io.github.adrianvic.itemeconomy.Config; import io.github.adrianvic.itemeconomy.Main; -import io.github.adrianvic.itemeconomy.Messages; import io.github.adrianvic.itemeconomy.UnrealConfig; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.jetbrains.annotations.NotNull; -import java.util.Locale; - public class Reload implements CommandExecutor { @Override public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String @NotNull [] strings) { - Locale locale = Utils.localeOrDefault(commandSender); try { - commandSender.sendMessage("[ECONOMY] %s".formatted(Messages.RELOADING.get(locale))); Config.loadConfig(new UnrealConfig(Main.getInstance(), Main.getInstance().getDataFolder(), "config.yml")); - commandSender.sendMessage("[ECONOMY] %s".formatted(Messages.RELOAD_FINISHED.get(locale))); return true; } catch (Exception e) { - commandSender.sendMessage("[ECONOMY] %s".formatted(Messages.RELOAD_ERROR.get(locale))); - e.printStackTrace(); return false; } } diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index 77e17f5..8dde12e 100644 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -7,7 +7,4 @@ pay-received=pay-received pay-could-not-realize-transaction=pay-could-not-realize-transaction pay-could-not-find-target=pay-could-not-find-target pay-not-enough-money=pay-not-enough-money -pay-invalid-amount=pay-invalid-amount -reloading=reloading -reload-error=reload-error -reload-finished=reload-finished \ No newline at end of file +pay-invalid-amount=pay-invalid-amount \ No newline at end of file diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties index 95f9873..06b8422 100644 --- a/src/main/resources/messages_en.properties +++ b/src/main/resources/messages_en.properties @@ -7,7 +7,4 @@ pay-received=You received %s from %s. pay-could-not-realize-transaction=Could not realize transaction: %s pay-could-not-find-target=Could not find target player. pay-not-enough-money=You don't have enough money. -pay-invalid-amount=The amount you tried to pay is not valid. -reloading=Reloading... -reload-error=An error occurred while reloading the config, please check your logs. -reload-finished=Reload complete. \ No newline at end of file +pay-invalid-amount=The amount you tried to pay is not valid. \ No newline at end of file diff --git a/src/main/resources/messages_pt.properties b/src/main/resources/messages_pt.properties index e11dc4c..8b624b1 100644 --- a/src/main/resources/messages_pt.properties +++ b/src/main/resources/messages_pt.properties @@ -7,7 +7,4 @@ pay-received=Voc pay-could-not-realize-transaction=Não foi possível realizar a transação: %s pay-could-not-find-target=Não foi possível encontrar o jogador-alvo. pay-not-enough-money=Você não tem dinheiro suficiente. -pay-invalid-amount=A quantidade que você tentou enviar é inválida. -reloading=Recarregando... -reload-error=Ocorreu um erro ao recarregar, por favor, verifique seu registro. -reload-finished=Carregamento completo. \ No newline at end of file +pay-invalid-amount=A quantidade que você tentou enviar é inválida. \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 75cefe8..e78d2d1 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,6 +1,6 @@ name: ItemEconomy main: io.github.adrianvic.itemeconomy.Main -version: 1.3.1 +version: 1.2 depend: [Vault] api-version: '1.21' commands: