Gringotts is an item-based economy plugin for the Bukkit Minecraft server platform. Unlike earlier economy plugins, all currency value and money transactions are based on actual items in Minecraft, per default emeralds.
This or a similar issue was already described in #149
So my problem is that new players cannot create a vault or to be more exact, if they are not already existent in the Gringotts.db file. Also an error is then visible in the log/console.
And since version 1.12.6 when a known player tries to create a vault the sign and so the vault gets destroyed. (Same goes for town and nation vaults while gringottsTowny is installed.) Same also happens for existing ones.
What I tried by now.
- Like suggested in #149 I tried to delete the DB file which only caused the issue to happen for all players.
- Creating vaults outside of restricted areas (protected by Towny or WorldGuard)
- Deleting Gringotts Config Files
- Probably even more that I don't know currently...
To Reproduce
New Players
1. Delete Gringotts.db
2. Start & Join the Server
3. Place a sign at a chest with `[vault]` on the first line.
4. Nothing happens for the player and an error appears on the console.
Known Players
1. Start & Join the Server
2. Place a sign at a chest with `[vault]` on the first line.
3. The vault gets created.
4. A second later the vault gets destroyed together with the sign.
Expected behavior
That vaults gets normally created for all players without getting immediately destroyed.
Screenshots
Video
https://github.com/nikosgram/gringotts/assets/31257733/83cdd494-e6c3-4e9e-9242-47c20239a032
Desktop
Server Type
PurPur
Server Version
git-Purpur-2082 (MC: 1.20.2)* (latest)
Gringotts Version
2.12.6-SNAPSHOT & 2.12.5
Additional context
Error
```
[22:02:31 ERROR]: Could not pass event PlayerVaultCreationEvent to Gringotts v2.12.6-SNAPSHOT
org.gestern.gringotts.GringottsException: java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot read field "cents" because the return value of "com.avaje.ebean.ExpressionList.findUnique()" is null
at org.gestern.gringotts.GringottsAccount.getTimeout(GringottsAccount.java:488) ~[gringotts.jar:?]
at org.gestern.gringotts.GringottsAccount.add(GringottsAccount.java:249) ~[gringotts.jar:?]
at org.gestern.gringotts.data.EBeanDAO.storeAccount(EBeanDAO.java:130) ~[gringotts.jar:?]
at org.gestern.gringotts.Accounting.getAccount(Accounting.java:23) ~[gringotts.jar:?]
at org.gestern.gringotts.event.VaultCreator.registerVault(VaultCreator.java:35) ~[gringotts.jar:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor10.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:git-Purpur-2082]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[purpur-1.20.2.jar:git-Purpur-2082]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[purpur-1.20.2.jar:git-Purpur-2082]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:617) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?]
at org.gestern.gringotts.event.AccountListener.onSignChange(AccountListener.java:64) ~[gringotts.jar:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor7.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:git-Purpur-2082]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?]
at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[purpur-1.20.2.jar:git-Purpur-2082]
at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[purpur-1.20.2.jar:git-Purpur-2082]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:617) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?]
at net.minecraft.world.level.block.entity.SignBlockEntity.setMessages(SignBlockEntity.java:242) ~[?:?]
at net.minecraft.world.level.block.entity.SignBlockEntity.lambda$updateSignText$4(SignBlockEntity.java:188) ~[?:?]
at net.minecraft.world.level.block.entity.SignBlockEntity.updateText(SignBlockEntity.java:202) ~[?:?]
at net.minecraft.world.level.block.entity.SignBlockEntity.updateSignText(SignBlockEntity.java:187) ~[?:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.updateSignText(ServerGamePacketListenerImpl.java:3459) ~[?:?]
at net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleSignUpdate$26(ServerGamePacketListenerImpl.java:3440) ~[?:?]
at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718) ~[?:?]
at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?]
at net.minecraft.server.TickTask.run(TickTask.java:18) ~[purpur-1.20.2.jar:git-Purpur-2082]
at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?]
at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?]
at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1351) ~[purpur-1.20.2.jar:git-Purpur-2082]
at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:193) ~[purpur-1.20.2.jar:git-Purpur-2082]
at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?]
at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1328) ~[purpur-1.20.2.jar:git-Purpur-2082]
at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1321) ~[purpur-1.20.2.jar:git-Purpur-2082]
at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?]
at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1299) ~[purpur-1.20.2.jar:git-Purpur-2082]
at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1187) ~[purpur-1.20.2.jar:git-Purpur-2082]
at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:320) ~[purpur-1.20.2.jar:git-Purpur-2082]
at java.lang.Thread.run(Thread.java:833) ~[?:?]
Caused by: java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot read field "cents" because the return value of "com.avaje.ebean.ExpressionList.findUnique()" is null
at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396) ~[?:?]
at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) ~[?:?]
at org.gestern.gringotts.GringottsAccount.getTimeout(GringottsAccount.java:486) ~[gringotts.jar:?]
... 40 more
Caused by: java.lang.NullPointerException: Cannot read field "cents" because the return value of "com.avaje.ebean.ExpressionList.findUnique()" is null
at org.gestern.gringotts.data.EBeanDAO.retrieveCents(EBeanDAO.java:360) ~[gringotts.jar:?]
at org.gestern.gringotts.GringottsAccount.lambda$add$1(GringottsAccount.java:154) ~[gringotts.jar:?]
at org.gestern.gringotts.GringottsAccount.lambda$callSync$0(GringottsAccount.java:53) ~[gringotts.jar:?]
at org.gestern.gringotts.GringottsAccount.callSync(GringottsAccount.java:60) ~[gringotts.jar:?]
... 40 more
```
Plugins
#### Paper Plugins: (2):
- BKCommonLib
- EconomyShopGUI-Premium
#### Bukkit Plugins: (67):
- AppleCoreSpigot
- Chunky
- Citizens
- CitizensGUI
- ClientDetector
- CrossplatForms
- dDiscordBot
- Denizen
- Depenizen
- DiscordSRV
- DropEdit2
- dynmap
- Dynmap-Towny
- Dynmap-WorldGuard
- Essentials
- EssentialsChat
- EssentialsGeoIP
- EssentialsSpawn
- ExtraContexts
- FallingSnow
- floodgate
- GeyserHacks
- Gringotts
- GringottsTowny
- ImageFrame
- InteractionVisualizer
- InteractiveChat
- InteractiveChatDiscordSrvAddon
- JShader
- LuckPerms
- MultiLang
- Multiverse-Core
- Multiverse-NetherPortals
- Multiverse-Portals
- Multiverse-SignPortals
- NBTAPI
- Pl-Hide-Pro
- PlaceholderAPI
- PowerBoard
- ProtocolLib
- PurpurExtras
- qsaddon-discordsrv
- qsaddon-discount
- qsaddon-displaycontrol
- qscompat-towny
- qscompat-worldedit
- qscompat-worldguard
- qssuite-limited
- QuickShop-Hikari
- RocketPlaceholders
- SiegeWar
- spark
- StreamingDrops
- TCHangRail
- Themis
- Towny
- TownyCamps
- TownyCaptureSites
- TownyHistories
- TownyMenus
- TownyResources
- TownyWayPointTravel
- Train_Carts
- Vault
- WorldEdit
- WorldGuard
- WorldGuard-Towny
/plugins/Gringotts/config.yml
```yaml
# for details on configuration, see https://github.com/MinecraftWars/Gringotts/blob/master/doc/configuration.md
# supported languages: "custom" (default, english), "de" (german), "fr" (french), and "pt-BR" (brazilian portuguese).
language: de
# regex that create a vault if matches with a sign
# subpattern 1 denotes the type of the vault.
vault_pattern: '[^\[]*\[(\w*) ?vault\]'
# If this is set to true, when the user receives an amount of money
# exceeding the inventory capacity, drop items that didn't fit.
drop-overflowing-item: false
# currency name and value config
currency:
# currency name to use in messages
name:
singular: Fuchstaler
plural: Fuchstaler
# number of decimal digits supported by currency value (0 for whole numbers only)
digits: 2
# Display account balances with individual denomination names
named-denominations: true
# value of individual denominations. default: emerald: 1, emerald block: 9
denominations:
- material: iron_nugget
value: 1
unit-name: "&f&r"
unit-name-plural: "&f&r"
displayname: "&r&7&lEiserner Fuchstaler"
damage: 13
custom_model_data: 10
lore:
- "&f&lWert: &7&l1 Fuchstaler"
- "&c&lNICHT CRAFTEN"
- material: gold_nugget
value: 100
unit-name: "&f&r"
unit-name-plural: "&f&r"
displayname: "&r&l&6Golderner Fuchstaler"
damage: 4
custom_model_data: 10
lore:
- "&f&lWert: &7&l100 Fuchstaler"
- "&c&lNICHT CRAFTEN"
- material: emerald
value: 1000
unit-name: "&f&r"
unit-name-plural: "&f&r"
displayname: "&r&l&2Grüner Fuchstaler"
damage: 11
custom_model_data: 10
lore:
- "&f&lWert: &7&l1000 Fuchstaler"
- "&c&lNICHT CRAFTEN"
- material: copper_ingot
value: 0.01
unit-name: "&f&r"
unit-name-plural: "&f&r"
displayname: "&r&l&cKupferner Fuchstaler"
damage: 11
custom_model_data: 10
lore:
- "&f&lWert: &7&l0,01 Fuchstaler"
- "&c&lNICHT CRAFTEN"
# tax on /money pay transactions
transactiontax:
flat: 0.0
rate: 0.0
# balance to start an account with (purely virtual)
startingbalance:
player: 500
# globally (dis)allow use of vault types
usevault:
container: true
enderchest: true
# if true, denomination items located in shulker boxes, in the above enabled inventories, will be included to the denomination finding process
include-shulker-boxes: true
# whether money/balance commands show vault and inventory balance separately
balance:
show-vault: true
show-inventory: true
show-enderchest: true
```
/plugins/GringottsTowny/config.yml
```yaml
# supported languages: "custom" (default, english), "de" (german), "fr" (french), and "pt-BR" (brazilian portuguese).
language: de
# changes the required sign name for the creation of town/nation vaults
# Example: [town vault]
town_sign_vault_name: 'town'
nation_sign_vault_name: 'nation'
# Prevents players from creating a vault outside a town if set to true
vaults_only_in_towns: false
# Maximum number of vaults a town can own, set to -1 for infinite number of vaults
max_town_vaults: -1
# Maximum number of vaults a nation can own, set to -1 for infinite number of vaults
max_nation_vaults: -1
# balance to start an account with (purely virtual)
town_start_balance: 1500
nation_start_balance: 15000
```
Describe the bug
This or a similar issue was already described in #149 So my problem is that new players cannot create a vault or to be more exact, if they are not already existent in the Gringotts.db file. Also an error is then visible in the log/console.
And since version 1.12.6 when a known player tries to create a vault the sign and so the vault gets destroyed. (Same goes for town and nation vaults while gringottsTowny is installed.) Same also happens for existing ones.
What I tried by now.
- Like suggested in #149 I tried to delete the DB file which only caused the issue to happen for all players. - Creating vaults outside of restricted areas (protected by Towny or WorldGuard) - Deleting Gringotts Config Files - Probably even more that I don't know currently...To Reproduce
New Players
1. Delete Gringotts.db 2. Start & Join the Server 3. Place a sign at a chest with `[vault]` on the first line. 4. Nothing happens for the player and an error appears on the console.Known Players
1. Start & Join the Server 2. Place a sign at a chest with `[vault]` on the first line. 3. The vault gets created. 4. A second later the vault gets destroyed together with the sign.Expected behavior
That vaults gets normally created for all players without getting immediately destroyed.
Screenshots
Video
https://github.com/nikosgram/gringotts/assets/31257733/83cdd494-e6c3-4e9e-9242-47c20239a032Desktop
Additional context
Error
``` [22:02:31 ERROR]: Could not pass event PlayerVaultCreationEvent to Gringotts v2.12.6-SNAPSHOT org.gestern.gringotts.GringottsException: java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot read field "cents" because the return value of "com.avaje.ebean.ExpressionList.findUnique()" is null at org.gestern.gringotts.GringottsAccount.getTimeout(GringottsAccount.java:488) ~[gringotts.jar:?] at org.gestern.gringotts.GringottsAccount.add(GringottsAccount.java:249) ~[gringotts.jar:?] at org.gestern.gringotts.data.EBeanDAO.storeAccount(EBeanDAO.java:130) ~[gringotts.jar:?] at org.gestern.gringotts.Accounting.getAccount(Accounting.java:23) ~[gringotts.jar:?] at org.gestern.gringotts.event.VaultCreator.registerVault(VaultCreator.java:35) ~[gringotts.jar:?] at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor10.execute(Unknown Source) ~[?:?] at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?] at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:git-Purpur-2082] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?] at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[purpur-1.20.2.jar:git-Purpur-2082] at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[purpur-1.20.2.jar:git-Purpur-2082] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:617) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?] at org.gestern.gringotts.event.AccountListener.onSignChange(AccountListener.java:64) ~[gringotts.jar:?] at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor7.execute(Unknown Source) ~[?:?] at org.bukkit.plugin.EventExecutor$2.execute(EventExecutor.java:77) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?] at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:77) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:git-Purpur-2082] at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?] at io.papermc.paper.plugin.manager.PaperEventManager.callEvent(PaperEventManager.java:54) ~[purpur-1.20.2.jar:git-Purpur-2082] at io.papermc.paper.plugin.manager.PaperPluginManagerImpl.callEvent(PaperPluginManagerImpl.java:126) ~[purpur-1.20.2.jar:git-Purpur-2082] at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:617) ~[purpur-api-1.20.2-R0.1-SNAPSHOT.jar:?] at net.minecraft.world.level.block.entity.SignBlockEntity.setMessages(SignBlockEntity.java:242) ~[?:?] at net.minecraft.world.level.block.entity.SignBlockEntity.lambda$updateSignText$4(SignBlockEntity.java:188) ~[?:?] at net.minecraft.world.level.block.entity.SignBlockEntity.updateText(SignBlockEntity.java:202) ~[?:?] at net.minecraft.world.level.block.entity.SignBlockEntity.updateSignText(SignBlockEntity.java:187) ~[?:?] at net.minecraft.server.network.ServerGamePacketListenerImpl.updateSignText(ServerGamePacketListenerImpl.java:3459) ~[?:?] at net.minecraft.server.network.ServerGamePacketListenerImpl.lambda$handleSignUpdate$26(ServerGamePacketListenerImpl.java:3440) ~[?:?] at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718) ~[?:?] at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?] at net.minecraft.server.TickTask.run(TickTask.java:18) ~[purpur-1.20.2.jar:git-Purpur-2082] at net.minecraft.util.thread.BlockableEventLoop.doRunTask(BlockableEventLoop.java:153) ~[?:?] at net.minecraft.util.thread.ReentrantBlockableEventLoop.doRunTask(ReentrantBlockableEventLoop.java:24) ~[?:?] at net.minecraft.server.MinecraftServer.doRunTask(MinecraftServer.java:1351) ~[purpur-1.20.2.jar:git-Purpur-2082] at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:193) ~[purpur-1.20.2.jar:git-Purpur-2082] at net.minecraft.util.thread.BlockableEventLoop.pollTask(BlockableEventLoop.java:126) ~[?:?] at net.minecraft.server.MinecraftServer.pollTaskInternal(MinecraftServer.java:1328) ~[purpur-1.20.2.jar:git-Purpur-2082] at net.minecraft.server.MinecraftServer.pollTask(MinecraftServer.java:1321) ~[purpur-1.20.2.jar:git-Purpur-2082] at net.minecraft.util.thread.BlockableEventLoop.managedBlock(BlockableEventLoop.java:136) ~[?:?] at net.minecraft.server.MinecraftServer.waitUntilNextTick(MinecraftServer.java:1299) ~[purpur-1.20.2.jar:git-Purpur-2082] at net.minecraft.server.MinecraftServer.runServer(MinecraftServer.java:1187) ~[purpur-1.20.2.jar:git-Purpur-2082] at net.minecraft.server.MinecraftServer.lambda$spin$0(MinecraftServer.java:320) ~[purpur-1.20.2.jar:git-Purpur-2082] at java.lang.Thread.run(Thread.java:833) ~[?:?] Caused by: java.util.concurrent.ExecutionException: java.lang.NullPointerException: Cannot read field "cents" because the return value of "com.avaje.ebean.ExpressionList.findUnique()" is null at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396) ~[?:?] at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2096) ~[?:?] at org.gestern.gringotts.GringottsAccount.getTimeout(GringottsAccount.java:486) ~[gringotts.jar:?] ... 40 more Caused by: java.lang.NullPointerException: Cannot read field "cents" because the return value of "com.avaje.ebean.ExpressionList.findUnique()" is null at org.gestern.gringotts.data.EBeanDAO.retrieveCents(EBeanDAO.java:360) ~[gringotts.jar:?] at org.gestern.gringotts.GringottsAccount.lambda$add$1(GringottsAccount.java:154) ~[gringotts.jar:?] at org.gestern.gringotts.GringottsAccount.lambda$callSync$0(GringottsAccount.java:53) ~[gringotts.jar:?] at org.gestern.gringotts.GringottsAccount.callSync(GringottsAccount.java:60) ~[gringotts.jar:?] ... 40 more ```Plugins
#### Paper Plugins: (2): - BKCommonLib - EconomyShopGUI-Premium #### Bukkit Plugins: (67): - AppleCoreSpigot - Chunky - Citizens - CitizensGUI - ClientDetector - CrossplatForms - dDiscordBot - Denizen - Depenizen - DiscordSRV - DropEdit2 - dynmap - Dynmap-Towny - Dynmap-WorldGuard - Essentials - EssentialsChat - EssentialsGeoIP - EssentialsSpawn - ExtraContexts - FallingSnow - floodgate - GeyserHacks - Gringotts - GringottsTowny - ImageFrame - InteractionVisualizer - InteractiveChat - InteractiveChatDiscordSrvAddon - JShader - LuckPerms - MultiLang - Multiverse-Core - Multiverse-NetherPortals - Multiverse-Portals - Multiverse-SignPortals - NBTAPI - Pl-Hide-Pro - PlaceholderAPI - PowerBoard - ProtocolLib - PurpurExtras - qsaddon-discordsrv - qsaddon-discount - qsaddon-displaycontrol - qscompat-towny - qscompat-worldedit - qscompat-worldguard - qssuite-limited - QuickShop-Hikari - RocketPlaceholders - SiegeWar - spark - StreamingDrops - TCHangRail - Themis - Towny - TownyCamps - TownyCaptureSites - TownyHistories - TownyMenus - TownyResources - TownyWayPointTravel - Train_Carts - Vault - WorldEdit - WorldGuard - WorldGuard-Towny/plugins/Gringotts/config.yml
```yaml # for details on configuration, see https://github.com/MinecraftWars/Gringotts/blob/master/doc/configuration.md # supported languages: "custom" (default, english), "de" (german), "fr" (french), and "pt-BR" (brazilian portuguese). language: de # regex that create a vault if matches with a sign # subpattern 1 denotes the type of the vault. vault_pattern: '[^\[]*\[(\w*) ?vault\]' # If this is set to true, when the user receives an amount of money # exceeding the inventory capacity, drop items that didn't fit. drop-overflowing-item: false # currency name and value config currency: # currency name to use in messages name: singular: Fuchstaler plural: Fuchstaler # number of decimal digits supported by currency value (0 for whole numbers only) digits: 2 # Display account balances with individual denomination names named-denominations: true # value of individual denominations. default: emerald: 1, emerald block: 9 denominations: - material: iron_nugget value: 1 unit-name: "&f&r" unit-name-plural: "&f&r" displayname: "&r&7&lEiserner Fuchstaler" damage: 13 custom_model_data: 10 lore: - "&f&lWert: &7&l1 Fuchstaler" - "&c&lNICHT CRAFTEN" - material: gold_nugget value: 100 unit-name: "&f&r" unit-name-plural: "&f&r" displayname: "&r&l&6Golderner Fuchstaler" damage: 4 custom_model_data: 10 lore: - "&f&lWert: &7&l100 Fuchstaler" - "&c&lNICHT CRAFTEN" - material: emerald value: 1000 unit-name: "&f&r" unit-name-plural: "&f&r" displayname: "&r&l&2Grüner Fuchstaler" damage: 11 custom_model_data: 10 lore: - "&f&lWert: &7&l1000 Fuchstaler" - "&c&lNICHT CRAFTEN" - material: copper_ingot value: 0.01 unit-name: "&f&r" unit-name-plural: "&f&r" displayname: "&r&l&cKupferner Fuchstaler" damage: 11 custom_model_data: 10 lore: - "&f&lWert: &7&l0,01 Fuchstaler" - "&c&lNICHT CRAFTEN" # tax on /money pay transactions transactiontax: flat: 0.0 rate: 0.0 # balance to start an account with (purely virtual) startingbalance: player: 500 # globally (dis)allow use of vault types usevault: container: true enderchest: true # if true, denomination items located in shulker boxes, in the above enabled inventories, will be included to the denomination finding process include-shulker-boxes: true # whether money/balance commands show vault and inventory balance separately balance: show-vault: true show-inventory: true show-enderchest: true ```/plugins/GringottsTowny/config.yml
```yaml # supported languages: "custom" (default, english), "de" (german), "fr" (french), and "pt-BR" (brazilian portuguese). language: de # changes the required sign name for the creation of town/nation vaults # Example: [town vault] town_sign_vault_name: 'town' nation_sign_vault_name: 'nation' # Prevents players from creating a vault outside a town if set to true vaults_only_in_towns: false # Maximum number of vaults a town can own, set to -1 for infinite number of vaults max_town_vaults: -1 # Maximum number of vaults a nation can own, set to -1 for infinite number of vaults max_nation_vaults: -1 # balance to start an account with (purely virtual) town_start_balance: 1500 nation_start_balance: 15000 ```