Compare commits
7 commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 81f6f24aff | |||
| 97f16f98c7 | |||
| 074f40abdc | |||
| 1259cd874e | |||
| f65c3ddc97 | |||
|
|
7e3edff269 |
||
|
|
90b2a117b4 |
10 changed files with 63 additions and 26 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -3,3 +3,4 @@ build/
|
||||||
out/
|
out/
|
||||||
.idea/
|
.idea/
|
||||||
libs/
|
libs/
|
||||||
|
run/
|
||||||
37
README.md
37
README.md
|
|
@ -3,32 +3,35 @@
|
||||||
<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:
|
|
||||||
|
|
||||||
- **Item-Based Currency:** Set any Minecraft item as your server's currency (default: diamonds).
|
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).
|
||||||
- **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 Example:
|
## Configuration
|
||||||
```yaml
|
An updated example configuration file is available [here](https://github.com/adrianvic/ItemEconomy/blob/main/src/main/resources/config.yml).
|
||||||
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.
|
||||||
- Integrates seamlessly with Vault-compatible plugins for shops, auctions, and more.
|
- Once they spend the currency, that amount of the item will be subtracted from their inventory.
|
||||||
- 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>
|
||||||
|
|
|
||||||
|
|
@ -122,12 +122,24 @@ 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) {
|
||||||
HashMap<Integer, ItemStack> invOverflow = getInventory(player, InventoryID.INVENTORY).addItem(new ItemStack(type, amount));
|
if (amount <= 0) return;
|
||||||
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);
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,11 @@ 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; }
|
||||||
|
|
|
||||||
|
|
@ -2,20 +2,28 @@ 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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,3 +8,6 @@ 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
|
||||||
|
|
@ -8,3 +8,6 @@ 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.
|
||||||
|
|
@ -8,3 +8,6 @@ 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.
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
name: ItemEconomy
|
name: ItemEconomy
|
||||||
main: io.github.adrianvic.itemeconomy.Main
|
main: io.github.adrianvic.itemeconomy.Main
|
||||||
version: 1.2
|
version: 1.3.1
|
||||||
depend: [Vault]
|
depend: [Vault]
|
||||||
api-version: '1.21'
|
api-version: '1.21'
|
||||||
commands:
|
commands:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue