Compare commits

..

No commits in common. "main" and "1.3" have entirely different histories.

10 changed files with 26 additions and 63 deletions

1
.gitignore vendored
View file

@ -3,4 +3,3 @@ build/
out/ out/
.idea/ .idea/
libs/ libs/
run/

View file

@ -3,35 +3,32 @@
<img alt="image" align="center" src="https://github.com/user-attachments/assets/06b7c885-e11d-415c-b45c-bea51f7e2cb7" /> <img alt="image" align="center" src="https://github.com/user-attachments/assets/06b7c885-e11d-415c-b45c-bea51f7e2cb7" />
</p> </p>
**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. 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. - **Item-Based Currency:** Set any Minecraft item as your server's currency (default: diamonds).
## Features
- **Item-Based Currency:** Set any Minecraft item as your server's currency (diamonds by default).
- **VaultUnlocked Integration:** Fully compatible with VaultUnlocked, enabling seamless interaction with other economy-based plugins. - **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. - **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. - **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. - **Ender Chest support:** Items on Ender Chests are counted in the user balance.
- **Built-int optional balance and pay commands** with support for permissions. - **Built-int optional balance and pay commands** with support for permissions.
- **Translation support** with per-user language and per-language currency name.
## Configuration ## Configuration Example:
An updated example configuration file is available [here](https://github.com/adrianvic/ItemEconomy/blob/main/src/main/resources/config.yml). ```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. - 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. - Administrators can customize the item and formatting to match their server's theme.
## Commands
<dl>
<dt>/balance <player></dt>
<dd>Prints player balance, permission is `iteco.balance` but is allowed by default. Requires permission `iteco.balance.others` to specify other user.</dd>
<dt>/pay <player> <amount></dt>
<dd>Transfers money from your account to another player's, permission is `iteco.pay` but is allowed by default.</dd>
<dt>/itecoreload</dt>
<dd>Reloads the plugin configuration, requires permission `iteco.reload`.</dd>
</dl>

View file

@ -122,24 +122,12 @@ public class Main extends JavaPlugin {
} }
public static void addItems(Player player, Material type, int amount) { public static void addItems(Player player, Material type, int amount) {
if (amount <= 0) return; HashMap<Integer, ItemStack> invOverflow = getInventory(player, InventoryID.INVENTORY).addItem(new ItemStack(type, amount));
HashMap<Integer, ItemStack> echestOverflow = getInventory(player, InventoryID.ENDER_CHEST).addItem(new ItemStack(type, invOverflow.values()
HashMap<Integer, ItemStack> invOverflow =
getInventory(player, InventoryID.INVENTORY)
.addItem(new ItemStack(type, amount));
int overflowAmount = invOverflow.values()
.stream() .stream()
.mapToInt(ItemStack::getAmount) .mapToInt(ItemStack::getAmount)
.sum(); .sum()));
if (overflowAmount <= 0) {
return;
}
HashMap<Integer, ItemStack> echestOverflow =
getInventory(player, InventoryID.ENDER_CHEST)
.addItem(new ItemStack(type, overflowAmount));
for (ItemStack overflow : echestOverflow.values()) { for (ItemStack overflow : echestOverflow.values()) {
player.getWorld().dropItemNaturally(player.getLocation(), overflow); player.getWorld().dropItemNaturally(player.getLocation(), overflow);

View file

@ -17,11 +17,7 @@ public enum Messages {
PAY_COULD_NOT_REALIZE_TRANSACTION("pay-could-not-realize-transaction"), PAY_COULD_NOT_REALIZE_TRANSACTION("pay-could-not-realize-transaction"),
PAY_COULD_NOT_FIND_TARGET("pay-could-not-find-target"), PAY_COULD_NOT_FIND_TARGET("pay-could-not-find-target"),
PAY_NOT_ENOUGH_MONEY("pay-not-enough-money"), PAY_NOT_ENOUGH_MONEY("pay-not-enough-money"),
PAY_INVALID_AMOUNT("pay-invalid-amount"), PAY_INVALID_AMOUNT("pay-invalid-amount");
RELOADING("reloading"),
RELOAD_ERROR("reload-error"),
RELOAD_FINISHED("reload-finished");
private final String path; private final String path;
Messages(String path) { this.path = path; } Messages(String path) { this.path = path; }

View file

@ -2,28 +2,20 @@ package io.github.adrianvic.itemeconomy.commands;
import io.github.adrianvic.itemeconomy.Config; import io.github.adrianvic.itemeconomy.Config;
import io.github.adrianvic.itemeconomy.Main; import io.github.adrianvic.itemeconomy.Main;
import io.github.adrianvic.itemeconomy.Messages;
import io.github.adrianvic.itemeconomy.UnrealConfig; import io.github.adrianvic.itemeconomy.UnrealConfig;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.util.Locale;
public class Reload implements CommandExecutor { public class Reload implements CommandExecutor {
@Override @Override
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String @NotNull [] strings) { public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String @NotNull [] strings) {
Locale locale = Utils.localeOrDefault(commandSender);
try { try {
commandSender.sendMessage("[ECONOMY] %s".formatted(Messages.RELOADING.get(locale)));
Config.loadConfig(new UnrealConfig(Main.getInstance(), Main.getInstance().getDataFolder(), "config.yml")); Config.loadConfig(new UnrealConfig(Main.getInstance(), Main.getInstance().getDataFolder(), "config.yml"));
commandSender.sendMessage("[ECONOMY] %s".formatted(Messages.RELOAD_FINISHED.get(locale)));
return true; return true;
} catch (Exception e) { } catch (Exception e) {
commandSender.sendMessage("[ECONOMY] %s".formatted(Messages.RELOAD_ERROR.get(locale)));
e.printStackTrace();
return false; return false;
} }
} }

View file

@ -8,6 +8,3 @@ pay-could-not-realize-transaction=pay-could-not-realize-transaction
pay-could-not-find-target=pay-could-not-find-target pay-could-not-find-target=pay-could-not-find-target
pay-not-enough-money=pay-not-enough-money pay-not-enough-money=pay-not-enough-money
pay-invalid-amount=pay-invalid-amount pay-invalid-amount=pay-invalid-amount
reloading=reloading
reload-error=reload-error
reload-finished=reload-finished

View file

@ -8,6 +8,3 @@ pay-could-not-realize-transaction=Could not realize transaction: %s
pay-could-not-find-target=Could not find target player. pay-could-not-find-target=Could not find target player.
pay-not-enough-money=You don't have enough money. pay-not-enough-money=You don't have enough money.
pay-invalid-amount=The amount you tried to pay is not valid. 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.

View file

@ -8,6 +8,3 @@ pay-could-not-realize-transaction=N
pay-could-not-find-target=Não foi possível encontrar o jogador-alvo. 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-not-enough-money=Você não tem dinheiro suficiente.
pay-invalid-amount=A quantidade que você tentou enviar é inválida. 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.

View file

@ -1,6 +1,6 @@
name: ItemEconomy name: ItemEconomy
main: io.github.adrianvic.itemeconomy.Main main: io.github.adrianvic.itemeconomy.Main
version: 1.3.1 version: 1.2
depend: [Vault] depend: [Vault]
api-version: '1.21' api-version: '1.21'
commands: commands: