Installation
- Download the update from modrinth/hangar for your version of Minecraft.
- Note, Any version that is not the newest version of Minecraft is not supported.
- You must be using at least https://papermc.io/.
- The file you downloaded goes in the
pluginsfolder. - Restart the server.
- Create new files in the
vouchers/codesfolder, orvouchers.ymlorcodes.ymland look at the existing files in there to help figure out how to use the plugin. - Reload the plugin, Use
crazyvouchers giveorcrazyvouchers redeemto test your changes. - View the documentation @ https://docs.crazycrew.us/docs/mods/crazyvouchers/
Quick Builds
Get the latest builds for every commit!
Contributing
Support
All support for the plugin is provided on Discord! If a question cannot be answered on the wiki, The next best place is to ask it in the Discord.
Data Collection
We collect anonymous statistics on how the plugin is used at https://bstats.org/plugin/bukkit/Vouchers/4536 and is visible to the public.
If you do not want this anonymous data sent, You currently have to go to the bStats folder, and set that to false.
Apex Hosting (ad)
We're sponsored by Apex Hosting, Click here to get 25% off your first purchase with the code APEX25 at checkout for Minecraft servers, Satisfactory servers, and more!
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 | ||||
| 22h ago | 1 |
### Fixes
- Fixed
/crazyvouchers migrate -mt VouchersColor - Fixed recursion depth not working in fusion.yml.
### New Commands
- Added /crazyvouchers version which includes the git commit, previous git commit, and current version.
- If any value is not found, it will return "N/A"
### Plugin Support
- Note: replace
<item_id>with the correct identifier from the custom item plugins.**<br> - Second Note: Any place you can input
diamond_axeallows you to use this format.**<br> - Third Note: You can still use
emerald_helmetas in direct ids as well**
- Added support for HMCWraps.
item: hmcwraps@<item_id>- This introduces new formats for other plugins like Oraxen, Nexo, CraftEngine, and ItemsAdder
item: nexo@<item_id>item: oraxen@<item_id>item: itemsadder@<item_id>item: craftengine@<item_id>
### Configuration Changes
#### Glowing
- Glowing no longer is true/false, however existing configurations using true/false will still work as we look for that internally as well.
yaml
# Should the item glow?
# Available Types: add_glow, remove_glow, none
Glowing: "none"
`
#### Two-Factor Authentication
- Added the ability to customize the two-factor message *per* voucher/code
- If the message in the voucher/code file is not found, it falls back to the default message in messages.yml
`yaml
# Enables the ability to require a player to confirm claiming the voucher.
two-factor:
# If this should be enabled.
toggle: false
# The messages to send to confirm.
message:
- "{prefix}<gray>Right click again to confirm that you want to use this voucher."
``## Bugs Fixed 🐛
- Vouchers could be used in recipes due to using return instead of continue.
- world#dropItem was not wrapped in Folia Scheduler which led to incompatibility on Folia.
- Vouchers/Codes not refreshing when running the migrators.
- The plugin jar being in a directory with a space in it would cause startup errors.
- Custom Heads with HeadDatabase were not working.
- Weighted random commands were not working properly to invalid filters.
- Commands with no weights were not running due to an invalid filter.
- {random}:minimum-maximum placeholder now works properly, and allows for multiple replacements in a command.
As always, Report 🐛 to https://github.com/Crazy-Crew/CrazyVouchers/issues
- Fixed an issue where rgb/color were not working when building a voucher.
As always, Report 🐛 to https://github.com/Crazy-Crew/CrazyVouchers/issues
- Fixed a potential memory leak caused by using double brace initializers.
As always, Report 🐛 to https://github.com/Crazy-Crew/CrazyVouchers/issues
- Fixed multiple issues with
random-commands - Fixed multiple issues with the migration types like
VouchersDeprecated - Fixed an issue where the old
random-commandslist would be copied as is during migration into one command pool which caused all commands to be run, instead of spread out. - This will perform the previous behavior as it was intended now.
- If you have a backup, load it... and re-run /crazyvouchers migrate -mt VouchersDeprecated
As always, Report 🐛 to https://github.com/Crazy-Crew/CrazyVouchers/issues
- Fixed issue with {random}:50000-2000000 not working.
- Fixed issue random-commands, and weight calculations. The filter predicate was inverted for weighted and weightless options.
- Fixed an issue with the
out of boundsexception involvingrandom-commands - Fixed an issue where PlaceholderAPI placeholders weren't being parsed.
- Added a new configuration option
has-argumentto vouchers/codes which was a result of fixing{arg}not being replaced in commands. - Added a new configuration option to the
config.ymlthat allows you to choose whether to allow off-hand usage or not. - Added a new permission
crazyvouchers.bypass.2fawhich lets you bypass 2fa when right-clicking. - Added a new configuration option
override-anti-dupeto vouchers which lets you override the anti dupe option in the config.yml - It defaults to false, which is the default behavior out of the box.
- Added a new configuration option
allow-vouchers-in-item-framesto vouchers, which lets your players place vouchers in item frames if set to true. chance-commandsandrandom-commandshave been combined, They were not working properly anyway. We opted for a weight based system when picking random commands, The lower the number. The less likely the command(s) will be run.- You can specify one command in the list, or multiple. It's up to you!
- If there is no weight option present, It will be considered how
random-commandsfunctioned before, which is run separately and has no relation to the weight based options. - You will need to run
/crazyvouchers migrate -mt VouchersDeprecatedfor the changes to take effect, You will see console nagging regarding outdated configurations until you do.
yml
random-commands:
"1":
# The chance for these to run
weight: 45.0
# The commands to run
commands:
- "eco give {player} 100"
"2":
# The chance for these to run
weight: 25.0
# The commands to run
commands:
- "eco give {player} 1000"
# No chance is provided, thus we will pick random commands.
"6":
# The commands to run
commands:
- "give {player} diamond 5"
`
## Technical Changes
- Cleaned up internals when creating a voucher, or a code.
- This allows us to add newer features easier as it's more readable, and less prone to human error.
{random}:1-10000 has been improved, and has better logging when a problem happens i.e. due to invalid numbers being used.Updated the interaction internals to account for off-hand usage by using PlayerInventory & EquipmentSlots
## Bugs Fixed
- Voucher Codes when broken were being put in the wrong list which could lead to confusion when viewing what broke.
{arg} was not being replaced when a command was being run.We no longer check the name/lore if {arg} is present which in hindsight was a bad idea.Please read the [Changes](#changes) for further information on how this works now. You can manually add this to your existing configurations that do use the {arg}` variable.- Fixed another issue with the LegacyColorMigrator.
- Added new config option to vouchers.yml / vouchers folder
yml
voucher:
# The material.
item: 'diamond_helmet'
# An example of how to use custom model data
custom-model-data: -1
`
`yml
vouchers: # Where you make your vouchers.
# The name of the voucher.
money:
# The material.
item: 'diamond_helmet'
# An example of how to use custom model data
custom-model-data: -1
`
- Added a new migrator type called
VouchersDeprecated which at the moment only migrates old custom model data usage to the format above.The condition to migrate is that item must follow the format diamond_helmet#1347Fixed startup issue with old custom model data format i.e. diamond_helmet#1347`- Fixed issue with the migration messages not sending.
https://github.com/Crazy-Crew/CrazyVouchers/issues
## New Items section
I've made a new
Items section which is currently in use in CrazyCrates, I am simply bringing it to CrazyVouchers.You can experiment with this option by enabling it in your
config.yml- The command /crazyvouchers migrate -mt NewItemFormat will update all
Itemssection to the best it can. - The migration is one way, Please be wary of this and take backups.
## Legacy Color Codes
Legacy color codes are no longer supported, They have been replaced by MiniMessage, https://docs.advntr.dev/minimessage/format
### Migrate
- https://toolbox.helpch.at/converters/legacy/minimessage
- https://www.birdflop.com/resources/rgb/
- Use the "Decode" option labeled experimental, I complained about legacy color code garbage about 2 years ago, they remembered and pinged me.
- /crazyvouchers migrate -mt VouchersColor which will try it's best to convert them.
### Other migration types
We offer migration types for the following
- VouchersDeprecated
- Any deprecated option will be replaced/removed with this
- VouchersNbtApi
- Migrates old vouchers to new vouchers
- VouchersSwitch
- Switches between single and multiple files
- VouchersRename
- Renames voucher-codes.yml to codes.yml, This takes a backup of the previous file.
## Permissions
Permissions are no longer the same, Permissions were renamed and the old nodes were always meant to be a temporary usage,
This allows more control over what you can give a player.
/vouchers and /voucher are considered aliases for /crazyvouchers### Commands
| New | Old | Command | Aliases |
|-------------------------|-------------------|--------------------------|------------------------|
|
crazyvouchers.giveall | vouchers.admin | /crazyvouchers giveall | N/A ||
crazyvouchers.migrate | vouchers.admin | /crazyvouchers migrate | N/A ||
crazyvouchers.reload | vouchers.admin | /crazyvouchers reload | N/A | |
crazyvouchers.redeem | vouchers.redeem | /crazyvouchers redeem | N/A ||
crazyvouchers.types | vouchers.admin | /crazyvouchers types | /crazyvouchers list ||
crazyvouchers.help | vouchers.admin | /crazyvouchers help | N/A ||
crazyvouchers.open | vouchers.admin | /crazyvouchers open | /crazyvouchers admin ||
crazyvouchers.give | vouchers.admin | /crazyvouchers give | N/A ||
crazyvouchers.access | vouchers.admin | /crazyvouchers | N/A | ### Other
| New | Old |
|------------------------------|-------------------------|
|
crazyvouchers.notify.duped | vouchers.notify.duped ||
crazyvouchers.bypass | vouchers.bypass |## Other Changes
### Trim Material
#### Before
``
yml
voucher:
# The items to give when claiming the voucher.
items:
- 'Item:DIAMOND_HELMET, Trim-Pattern:SENTRY, Trim-Material:QUARTZ, Amount:1'
- 'Item:DIAMOND_CHESTPLATE, Trim-Pattern:DUNE, Trim-Material:REDSTONE, Amount:1'
`
#### After
`yml
voucher:
# The items to give when claiming the voucher.
items:
- 'Item:DIAMOND_HELMET, Trim:SENTRY!QUARTZ, Amount:1'
- 'Item:DIAMOND_CHESTPLATE, Trim:DUNE!REDSTONE, Amount:1'
`
### Enchantments
| New | Old |
|-------------------------|----------------------------|
| protection | PROTECTION_ENVIRONMENTAL |
| fire_protection | PROTECTION_FIRE |
| feather_falling | PROTECTION_FALL |
| blast_protection | PROTECTION_EXPLOSIONS |
| projectile_protection | PROTECTION_PROJECTILE |
| respiration | OXYGEN |
| aqua_affinity | WATER_WORKER |
| sharpness | DAMAGE_ALL |
| smite | DAMAGE_UNDEAD |
| bane_of_arthropods | DAMAGE_ARTHROPODS |
| looting | LOOT_BONUS_MOBS |
| sweeping | SWEEPING_EDGE |
| efficiency | DIG_SPEED |
| unbreaking | DURABILITY |
| fortune | LOOT_BONUS_BLOCKS |
| power | ARROW_DAMAGE |
| punch | ARROW_KNOCKBACK |
| flame | ARROW_FIRE |
| infinity | ARROW_INFINITE |
| luck_of_the_sea | LUCK |
- No longer rely on ItemMeta anymore which means a large performance increase due to the nature of how ItemMeta works.
- Commands have been overhauled which will make adding new commands easier!
- Replaced plugin.yml with paper-plugin.yml.
- Added support for item models which serves as a replacement for
Custom Model DataFixed an issue with anti-craft not working. Sounds are now mojang mapped, i.e. we use sounds from minecraft.wiki sounds.json, https://minecraft.wiki/w/Sounds.json Updated to 1.21.8Added new config option to fusion.yml, recursion_depth which lets you define how many folders to loop through in codes or vouchers`yml
voucher:
# Any generic component for the Item.
components:
# Hides the entire tooltip
hide-tooltip: false
# Hides components defined in this list. It allows more control than above.
# Leave the hide-tooltip false if you plan to use this.
hide-tooltip-advanced:
- "enchantments"
# The item model, Mojang introduced this in 1.21.4... this replaces custom model data!
# Set this to blank for it to do nothing.
item-model:
# The namespace i.e. nexo
namespace: ""
# The key i.e. emerald_helmet
key: ""
``- Fixed an issue with dupe protection
- Added /crazyvouchers migrate which will migrate old vouchers to the new vouchers
- The permission for the command is
crazyvouchers.migrate - Deprecated use of
voucher.adminandvoucher.redeem - They have been replaced by
crazyvouchers.adminandcrazyvouchers.redeem - Old permissions starting with
voucherwill work for the time being. - Deprecated old /voucher command, please use /crazyvouchers as /voucher will be removed in future updates.
- Fixed an issue where dupe protection uuids were applied twice.
- Removed NBT API as warned previously since 3.8.
- Previous vouchers created prior to 3.8 will be useless.
- Updated to 1.21.4.
- Updated to 1.21.3
- Bumped nbt-api
- Please make an effort to migrate existing vouchers made prior to v3.8 as nbt-api will be removed.
- This is a notice, to give you more time until that happens.
- Check if player is null on /voucher give, and return early.
### Fixed:
- The argument was not being applied to the voucher, due to checking if it was empty. We have to check if it's not empty.
- Check if item is air everywhere, before going forward to please NBT-API
- I simply told nbt-api to shut up about the material being air.
- Once 1.21.2 drops, NBT-API will be stripped from the plugin.
- This is your warning to migrate old vouchers players have and technically the second warning, I forgot to push this update.
- All old vouchers will stop working once NBT-API is removed!
- The migration for old configurations has been removed.
- If you need to migrate, use 3.7.4 as the migration works there.
### Future Changes:
- MiniMessage Support
- There will be a migration from Legacy Color Codes -> MiniMessage
- Updates to configurations with materials, sounds, and how items work
- Internally, all materials, and trims will be handled internally, so need not worry about that.
- Sounds will have to be migrated manually, not much I can do about that.
- This change with sounds will allow custom sounds from resource packs.
- This is a step in removing a large chunk of deprecated, or otherwise outdated ways of doing things as Minecraft has changed a lot internally.
### Additions:
- Added dupe protection for vouchers which is toggled false.
- A config option was also added to append a line to the lore.
### Changes:
- Switched vouchers to use PersistantDataContainer which is much more performant, and achieves a similar goal.
- Previous vouchers will work until 1.21.2, so please migrate them.
- Allowed switching between file systems on
/crazyvouchers reload - There will not be a migration to switch between.
- Updated vital api
### Fixes:
- Fixed an issue on Folia [#73](https://github.com/Crazy-Crew/CrazyVouchers/issues/73)
- Bumped to 1.21.1
- Bumped nbt api
- Issue with file manager not properly loading/reloading files.
- Apply
MaxStackSizeto the player's inventory when using Player#addItem, so now instead of 99 items popping up in the inventory if giving 99 keys or any items, it'll split 64/35 - Spigot for some odd reason made Player#addItem use the max stack size for the inventories. #hardforkwhen
- Simplified parsing messages internally with placeholders
- Migration for the old folder
Vouchers->CrazyVouchers
### Changes:
- Moved all i/o operations off the main thread.
- Bumped nbt-api out of snapshot state to 2.13.1.
- Added PlaceholderAPI support to all messages.
### Fixed:
- Issue with voucher-codes path not being correct in the
codesfolder.
- Player Heads were not stacking previously, they should now.
- Null pointer exception with HeadDatabaseAPI
- Added support for HeadDatabaseAPI (the previous way of doing custom heads i.e.
eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTVkMzE1NTkyNjFiM2U3OTAyNDc1MWZlMDdiNzExYzhmZWVmNTFkNTZjMDM2MzUyMjY5NTU4MDViYzQyODk0ZSJ9fX0=will be removed in the next major version of Minecraft.
yaml
voucher:
# The material.
item: 'PLAYER_HEAD'
# The name of the item.
name: '&cA player head example'
# The lore of the item.
lore:
- '&7Use this voucher to get fancy trims.'
- '&7&l(&6&l!&7&l) &7Right click to redeem.'
# Only uncomment this if using HeadDatabase by Arcaniax
skull: '61151'
# The items to give when claiming the voucher.
items:
# Only uncomment this is using HeadDatabase by Arcaniax
- 'Item:PLAYER_HEAD, Skull:61151, Name:&cA fancy head, Lore:&eA fancy lore,&7with lines, Amount:3, Glowing:true'
``- Issue with one of our dependencies [#70](https://github.com/Crazy-Crew/CrazyVouchers/pull/70)
