
DupePlus
The best duplication plugin for your Dupe server. DupePlus is a fully modular plugin that allows you to toggle any feature off or on! DupePlus also provides you with a user-friendly configuration with comments that help you understand what each section means in the YML. It will also make your survival easier just by duplicating. Just use "/dupe" in chat and let the magic happen!
Why should I use DupePlus?
|
⚙️ Custom CommandsChange the default |
🔉 Sound FeedbackPlay a sound to the player when they duplicate something. |
💰 EconomyMake duplicating come with a small or huge cost! |
And many other helpful features waiting for you!
Setup Guide
1. Installation
Download the plugin from the First Version in the Featured Versions or from the Versions Tab, then click Download and upload it to the /plugins folder in your Minecraft Server Files.
2. Configuration
The config file will be placed in the /plugins/DupePlus folder in your Minecraft Server Files.
Previous config versions will be renamed to old.config.yml or deleted.
If you ever manage to break the config.yml or accidentally erase it. Then here is the default config.yml
config.yml
# DupePlus's Settings
# Message Variables:
# <item_type> = The Duplicated item
# <item_name> = The Item's Display Name
# <old_item_count> = The Item Count before dupe
# <new_item_count> = The Item Count after dupe
# <item_count> = Item Count
# <prefix> = The default prefix or the prefix you set
# <max> = The maximum
# <min> = The minimum
# <world> = The world name
# <link> = Where you can download the new version
# <currentversion> = The current version installed in the server.
# <newversion> = The new version
# Use this website to help you customize your messages
# https://webui.advntr.dev
# If you want to request a feature or notice any issues with the Plugin. Then create an issue in the GitHub Repository.
# https://github.com/meme20200/dupeplus/issues
dupe:
# The prefix that is added before each message.
prefix: "<green>DupePlus</green> <dark_gray>|</dark_gray>"
# Make it false to let everyone allowed to use this command (Default: false)
# Permission: dupeplus.dupe
permission: false
# Settings to change the Dupe Command into a Custom command.
custom-command:
# Make it false to disable the custom command, make it true to enable it. (Default: false)
enabled: false
# The name used to create the custom command (Default: "dupe")
# /<name>
name: "dupe"
# Other ways of using /dupe
aliases: [ "duplicate" ]
# The message sent to the player when try to execute dupe or reloadconfig no permission (Only if the above is true) (Default: "<prefix> <dark_gray>|</dark_gray> <red>You are not allowed to use this command</red>")
# Allowed Message Variables: <prefix>
# Leave blank for no message
permission-message: "<prefix> <red>You are not allowed to use this command</red>"
# The message sent to the player when you duplicate an item. (Default: "<prefix> <dark_gray>|</dark_gray> <gray>Duped <item_name></gray>")
# Allowed Message Variables: <prefix>, <item_type>, <item_name>, <old_item_count>, <new_item_count>
message: "<prefix> <gray>Duped <white><item_name></gray>"
# The message sent whenever the player tries to dupe nothing (Air) (Default: "")
# Leave blank for no message
duping-nothing-message: ""
# Settings to block or allow /dupe in specific worlds.
worlds:
# Make it false to disable this feature.
enabled: false
# Mode: whitelist, blacklist (Default: blacklist)
# whitelist will block all worlds but only allow /dupe in the worlds list.
# blacklist will allow all worlds but block /dupe in the worlds list.
mode: blacklist
# If the player tries to dupe in a blocked world. (Default: "<prefix> <dark_gray>|</dark_gray> <red>The world is banned from using /dupe!</red>")
# Allowed message variable: <prefix>, <item_type>, <item_name>, <item_count>, <world>
# Leave blank for no message
blocked-message: "<prefix> <red>The world is banned from using /dupe!</red>"
# Add or remove worlds to either block (blacklist) or allow (whitelist) it from players in the world from duping.
worlds: [ ]
# Checks if the item has a NBT Tag of "dupenotallowed", if it has, it will not dupe the item.
custom-nbt-item:
# Make it false to disable the Custom NBT feature, make it true to enable it (Default: true)
enabled: true
# Allowed message variable: <prefix>, <item_type>, <item_name>, <item_count> (Default: "<prefix> <dark_gray>|</dark_gray> <red>The item is blocked from being duped!</red>")
# Leave blank for no message
blocked-message: "<prefix> <red>The item is blocked from being duped!</red>"
# When using /dupe, in which hand will it dupe? (Default: MainHand)
# OffHand
# MainHand
dupe-on: MainHand
# Message to the sender if they try to dupe as a non-player (Default: "DupePlus | You can't do that!")
console-message: "DupePlus | You can't do that!"
# Settings for blacklist / whitelist
list:
# Make it false to disable these features, make it true to enable it (Default: false)
enabled: false
# Make it false to make it "whitelist", make it true to make it "blacklist" (Default: true)
# whitelist will block all items but only allow duplicating items in the items list.
# blacklist will allow all items but block duplicating items in the items list.
# Enabled must be true
blacklist: true
# Checks Shulker Boxes when duplicating items (Default: true)
shulkerbox: true
# Checks Bundles when duplicating items (Default: true)
bundle: true
# If the player tries to dupe an item that is in the blacklist or the item is not in the whitelist (Default: "<prefix> <dark_gray>|</dark_gray> <red>The item is blocked from being duped!</red>")
# Allowed message variable: <prefix>, <item_type>, <item_name>, <item_count>
# Leave blank for no message
blocked-message: "<prefix> <red>The item is blocked from being duped!</red>"
# Add or remove items to either block (blacklist) or allow (whitelist) them from being duped, also do not include spaces. (NO: "diamond block" YES: "diamond_block")
# Begin the item's id with minecraft: to check the item's type only, it will ignore if the item is part of a custom plugin. (Default: - minecraft:barrier)
# Begin the item's id with itemsadder: if you want to check if the item's itemsadder id, it will not check for the namespace.
# You can use itemsadder:* to block all ItemsAdder items from being duplicated
items:
- minecraft:barrier
# Add or remove specific itemsadder namespaces to either block (blacklist) or allow (whitelist) any items that is under those namespaces from being duplicated
itemsadder-namespaces:
- replace_me
# Settings for the cooldown of /dupe
cooldown:
# Make it false to disable the cooldown, make it true to enable it. (Default: false)
enabled: false
# How many seconds for the cooldowns to be. (Default: 3)
seconds: 3
# If the player tries to dupe while the cooldown is set. (Default: "<prefix> <dark_gray>|</dark_gray> <red>Please wait <duration>.</red>")
# Allowed message variable: <prefix>, <duration>
# Leave blank for no message
wait-message: "<prefix> <red>Please wait <duration>.</red>"
# Make it true if you want players with the permission to ignore the cooldown, make it false if you want everyone to have cooldown. (Default: true)
# Permission: dupeplus.cooldown
permission: true
# Settings for this (ignore if you don't want this) players can still run /dupe
# /dupe <times>
times:
# Make it false to disable this feature, make it true to enable this feature (Default: false)
enabled: false
# Set it to 0 to disable the times (Default: 5) (Recommended: 5)
# Permission to let a player/group have no maximum regardless of this option: dupeplus.times.max.unlimited
# dupeplus.times.max.<name>
max-values:
pro: 10
vip: 8
default: 5 # Default permission or players without the permission who are using the dupe times.
# If the player puts the value above the maximum then what's the message? (Default: "<prefix> <dark_gray>|</dark_gray> <red>This is higher than maximum! Do something lower than <max></red>")
# Allowed message variable: <prefix>, <max>, <min>
# Leave blank for no message
max-message: "<prefix> <red>This is higher than maximum! Do something lower than <max></red>"
# 0 for no minimum amount of times the player can run (Default: 0) (Recommended: 0)
# Permission to let a player/group have no minimum regardless of this option: dupeplus.times.min.unlimited
# It is recommended to just keep this at 0
min: 0
# If the player puts the value below the minimum (Default: "<prefix> <dark_gray>|</dark_gray> <red>This is lower than minimum! Do something higher than <min></red>")
# Allowed message variable: <prefix>, <max>, <min>
# Leave blank for no message
min-message: "<prefix> <red>This is lower than minimum! Do something higher than <min></red>"
# Instead of sending the dupe message for every time it duplicates, it sends it one time to stop spam. (Default: true)
one-time-message: true
# Make it false to let everyone allowed to use this feature. (Default: false)
# Permission: dupeplus.times
permission: false
# Adds lore to the duplicated item.
lore:
# Enables or disables this feature. (Default: false)
enabled: false
# The lore added to the duplicated item. (Default: "<dark_red>*</dark_red> <red>Duplicated Item</red>")
text: "<dark_red>*</dark_red> <red>Duplicated Item</red>"
# The modes on how the plugin will add the lore. (Default: set)
# append: Checks if the dupe lore exists or not, if it doesn't exist then it adds after the last lore or just adds the lore if no lore is present.
# set: Checks if the dupe lore exists or not, if it doesn't exist then it will replace the existing lore with the dupe lore, otherwise it just ignores. (Recommended)
mode: set
# Make it false to always add/set the lore to the duplicated item regardless of the player's permission to use this feature or not, make it true to not add the lore if the player doesn't have the permission. (Default: false)
# Permission: dupeplus.lore
permission: false
# Plays the set sound whenever you use /dupe
# Permission: dupeplus.sound
sound-feedback:
# Enables or disables this feature. (Default: false)
enabled: false
# The Minecraft sound category used to play the sound. (Default: master)
# Acceptable Values: master, music, record, weather, block, hostile, neutral, player, ambient, voice
category: master
# The sound used whenever the player uses /dupe. (Default: "minecraft:block.amethyst_block.chime")
sound: "minecraft:block.amethyst_block.chime"
# The volume of the sound played to a player whenever they use /dupe. (Default: 1)
volume: 1
# The pitch of the sound played to a player whenever they use /dupe. (Default: 1)
pitch: 1
# Make it false to let everyone allowed to use this feature. (Default: false)
# Permission: dupeplus.sound
permission: false
# Deducts money from the player whenever they use /dupe
# Permission: dupeplus.bypasseconomy
economy:
# Enables or disables this feature. (Default: false)
# Note: You must have Vault installed and must set vault in integrations to true if you are going to use this feature.
enabled: false
# Whenever the player does /dupe <times>, should it deduct from the player once or every time? (Default: true)
charge-per-dupe: true
# The message sent to the player whenever the deduction was complete. (Can be silent)
# Allowed Message Variables: <prefix>, <price>, <item_type>, <item_name>, <item_count>
# Leave blank for no message
successful-message: ""
# The message sent to the player whenever they don't have enough currency to use /dupe.
# Leave blank for no message
# Allowed Message Variables: <prefix>, <price>, <item_type>, <item_name>, <item_count>
not-enough-message: "<prefix> <red>You don't have enough currency to use /dupe!</red>"
# The price that deducts from the player whenever they use /dupe (Default: 25)
# Setting this to 0 will not deduct anything from the player.
# Do not use negative numbers
price: 25
# Make it false to make everyone pay to use /dupe. (Default: false)
# Permission: dupeplus.bypasseconomy
permission: false
# The Integrations that this plugin connects with.
# Must restart server for the changes to apply (Also the plugin must already be installed)
# If you notice any issues then please create an issue in GitHub (meme20200/dupeplus)
integrations:
# Enables ItemsAdder Integration (Default: true)
itemsadder: true
# Enables PlaceholderAPI Integration (Default: true)
placeholderapi: true
# Enables VaultAPI Integration (Required if economy feature is enabled) (Default: true)
vault: true
# Checks for updates using the set API (Modrinth or SpigotMC),
updates:
# Checks on startup for updates, disable if you do not wish to update DupePlus.
checkupdate: true
# Which Service should the Check Update use? (Default: Modrinth)
# Modrinth
# SpigotMC
api: Modrinth
notify:
# Notify players with the permission to update the plugin to the latest version.
player-notify: true
# The message sent to everyone who has the permission (Default: "<prefix> <dark_gray>|</dark_gray> <white><green>DupePlus</green> is outdated, please update at: <blue><link></blue>")
# (Permission: dupeplus.updates.notify)
# Allowed message variable: <prefix>, <link>, <currentversion>, <newversion>
notify-message: "<prefix> <white><green>DupePlus</green> is outdated, please update at: <blue><link></blue>"
# Send message to the console for the server owner to update the plugin.
console-notify: true
# The message sent to the console (Default: "<prefix> | Update DupePlus at <link>")
# Allowed message variable: <prefix>, <link>, <currentversion>, <newversion>
console-notify-message: "DupePlus | Update DupePlus at <link>"
# Don't edit this
# Previous: 1.4.2
# config-version: 1.4.3
config-version: 1.4.3
Planned Features (or bug fixes) for 1.5
| Name | Description | Usage |
|---|---|---|
| In-game Config Editor | Will let you edit the config.yml fully in-game without having to go to your file editor. |
/dupeplus config (GUI) /dupeplus config <section> <option> <value> |
| DupePlus Docs | Will help you in configuring the config.yml |
/dupeplus docs, link will be shared with everyone once published |
| Times Major Overhaul | The Times feature has been broken for some while. Times will be completely overhauled. This isn't a simple fix, so yeah... Unless it is and I'm just overthinking it. | |
| Optimized Code | DupePlus's Source Code will be optimized and detailed. JavaDocs for functions and a bit of comments there and there to explain what's going on with the code. | |
| Translations | Messages will be moved to a separate file and will allow for many languages. (Toggable and uses Player#getLocale) | |
| Discord server | A Support Discord server completely for the Server owners that run DupePlus. | |
| ??? | This could be a new feature from you! Can even be something to do with the existing features or the planned features | ??? |
Permissions
For Admins:
| Permission | Description |
|---|---|
dupeplus.admin |
/dupeplus |
dupeplus.admin.blocklist |
/dupeplus blocklist (Opens a GUI) |
dupeplus.admin.reload |
/dupeplus reload (Reloads the configuration) |
dupeplus.updates.notify |
Notified about any DupePlus Updates. |
dupeplus.admin.block |
/dupeplus block (Blocks the item you are holding from /dupe) |
For Players:
| Permission | Description |
|---|---|
dupeplus.times.max.unlimited |
(No maximum for /dupe [times])/dupe [times] |
dupeplus.times.min.unlimited |
(No minimum for /dupe [times])/dupe [times] |
dupeplus.times.max.<name> |
(Must also have the dupeplus.times permission & must also be set in dupe.times.max-values in the config.yml)/dupe [times] |
dupeplus.dupe |
(dupe.permission must be set to true in the config.yml)/dupe |
dupeplus.cooldown |
(both dupe.cooldown.enabled & dupe.cooldown.permission must be set to true)/dupe |
dupeplus.lore |
(both dupe.lore.enabled & dupe.lore.permission must be set to true)/dupe (Add/Set lore to the duplicated item's lores) |
dupeplus.sound |
(both dupe.sound-feedback.enabled & dupe.sound-feedback.permission must be set to true) Plays a sound to the player whenever the player uses /dupe (Sound Feedback must be enabled in the config.yml) /dupe |
dupeplus.bypasseconomy |
(both dupe.economy.enabled & dupe.economy.permission must be set to true) Bypasses the costs for /dupe /dupe |
Statistics
All Versions
+ Add Version> If you have any issues with the plugin or want to request a feature, then please report it at the [DupePlus GitHub Repository Issue](https://github.com/meme20200/dupeplus/issues)
## 20K+ Downloads! 🎉
- DupePlus has come a long way to become what it is today, and it is all thanks to everyone who uses it, including the players who join the Dupe server! Thank you for using this plugin.**
## Bundle Checker in Bundle (Reported by Pro2021CA)
Patched an exploit where players can skip the blocklist by putting a blocked item in a bundle within a bundle
## [Unblocker (Sub)command](https://github.com/meme20200/dupeplus/issues/10)
Added a new (sub)command to unblock the item that is blocked from
/dupeplus block, /dupeblock, or manually adding the NBT/Item Component "dupenotallowed"``
/dupeplus unblock
`
`
/dupeunblock
`
## Sound Feedback
Added a new feature that plays a chosen sound to the player whenever they do /dupe.
<details>
<summary>Sound Feedback in config.yml</summary>
`yaml
# Plays the set sound whenever you use /dupe
# Permission: dupeplus.sound
sound-feedback:
# Enables or disables this feature. (Default: false)
enabled: true
# The Minecraft sound category used to play the sound. (Default: master)
# Acceptable Values: master, music, record, weather, block, hostile, neutral, player, ambient, voice
category: master
# The sound used whenever the player uses /dupe. (Default: "minecraft:block.amethyst_block.chime")
sound: "minecraft:block.amethyst_block.chime"
# The volume of the sound played to a player whenever they use /dupe. (Default: 1)
volume: 1
# The pitch of the sound played to a player whenever they use /dupe. (Default: 1)
pitch: 1
# Make it false to let everyone allowed to use this feature. (Default: false)
# Permission: dupeplus.sound
permission: false
`
</details>
## Economy Feature
> You need Vault & an Economy Plugin to use this feature.
Added the economy feature to DupePlus that makes it so that /dupe cost a specific in-game currency price.
<details>
<summary>Economy Feature in config.yml</summary>
`yaml
# Deducts money from the player whenever they use /dupe
# Permission: dupeplus.bypasseconomy
economy:
# Enables or disables this feature. (Default: false)
# Note: You must have Vault installed and must set vault in integrations to true if you are going to use this feature.
enabled: true
# Whenever the player does /dupe <times>, should it deduct from the player once or every time? (Default: true)
charge-per-dupe: true
# The message sent to the player whenever the deduction was complete. (Can be silent)
# Allowed Message Variables: <prefix>, <price>, <item_type>, <item_name>, <item_count>
# Leave blank for no message
successful-message: ""
# The message sent to the player whenever they don't have enough currency to use /dupe.
# Leave blank for no message
# Allowed Message Variables: <prefix>, <price>, <item_type>, <item_name>, <item_count>
not-enough-message: "<prefix> <red>You don't have enough currency to use /dupe!</red>"
# The price that deducts from the player whenever they use /dupe (Default: 25)
# Setting this to 0 will not deduct anything from the player.
# Do not use negative numbers
price: 25
# Make it false to make everyone pay to use /dupe. (Default: false)
# Permission: dupeplus.bypasseconomy
permission: false
`
</details>
## [@bobhenl's Issue](https://github.com/meme20200/dupeplus/issues/11)
Fixed an issue where the /dupe would crash in newer Minecraft versions, we have moved from using NBTEditor to now using item-nbt-api.
## Fixes
- Removed the modern tag usage (1.21.2+) in Bundle Check to support 1.20 and above.
- Implemented options in
config.yml` that are missing from the code.> If you have any issues with the plugin or want to request a feature, then please report it at the [DupePlus GitHub Repository Issue](https://github.com/meme20200/dupeplus/issues)
> If your server version is over 1.21.2 then use [BUNDLES](https://modrinth.com/plugin/dupeplus/version/1.4.2).
# [@Averageguyhehe's Issue](https://github.com/meme20200/dupeplus/issues/8)
- Bumped NBTEditor dependency to 7.20.3 (was 7.20.1)
# [@bobhenl's Issue](https://github.com/meme20200/dupeplus/issues/7)
- Fixed World message using Custom NBT Message
- Fixed bug where duping nothing would send a message
# FastStats
- DupePlus now uses [FastStats](https://faststats.dev) alongside keeping [bStats](https://bstats.org)
# List
- Fixed Blacklist shulker and bundle checks
# New Commands
- Added two new commands: "/dupeblock" and "/dupeblocklist"
- Added new subcommand for convenience:
/dupeplus issues
# Permission Updates
- Made the
dupeplus.cooldownpermission actually do something dupeplus.blocklist->dupeplus.admin.blocklistdupeplus.block->dupeplus.admin.blockdupeplus.admin.*gives all the admin permissions
> If you have any issues with the plugin or want to request a feature, then please report it at the [DupePlus GitHub Repository Issue](https://github.com/meme20200/dupeplus/issues)
> If your server version is under 1.21.2 then use [NOBUNDLES](https://modrinth.com/plugin/dupeplus/version/AD84l65D), otherwise if your server version is above or equal to 1.21.2 then use this.
# [@Averageguyhehe's Issue](https://github.com/meme20200/dupeplus/issues/8)
- Bumped NBTEditor dependency to 7.20.3 (was 7.20.1)
# [@bobhenl's Issue](https://github.com/meme20200/dupeplus/issues/7)
- Fixed World message using Custom NBT Message
- Fixed bug where duping nothing would send a message
# FastStats
- DupePlus now uses [FastStats](https://faststats.dev) alongside keeping [bStats](https://bstats.org)
# Bundles
- Added Bundle Support
- Fixed Blacklist shulker and bundle checks
# New Commands
- Added two new commands: "/dupeblock" and "/dupeblocklist"
- Added new subcommand for convenience:
/dupeplus issues
# Permission Updates
- Made the
dupeplus.cooldownpermission actually do something dupeplus.blocklist->dupeplus.admin.blocklistdupeplus.block->dupeplus.admin.blockdupeplus.admin.*gives all the admin permissions
> If you have any issues with the plugin or want to request a feature, then please report it at the [DupePlus GitHub Repository Issue](https://github.com/meme20200/dupeplus/issues)
## Now doesn't break on 1.21.10 and 1.21.9
DupePlus now works on 1.21.10 and 1.21.9 without any known issues.
[@RenegadeActual's issue](https://github.com/meme20200/dupeplus/issues/6)
## Custom Commands Notice
If you changed the custom command for dupe and reloaded the configuration, then players must rejoin to see the changes.
## Improvement on blocklist
/dupeplus blocklistDupePlus now has a Blocklist Menu, which allows you to add and remove items from the blocklist, and make an item undupeable. And turn off and on the whitelist/blacklist from the menu with ease.
## Make your item undupeable fast
/dupeplus blockAdds the dupenotallowed tag on your item.
(small fix)
> If you have any issues with the plugin or want to request a feature, then please report it at the [DupePlus GitHub Repository Issue](https://github.com/meme20200/dupeplus/issues/new/choose)
DupePlus will no longer support versions below
1.20## Custom Command
You can now customise the
/dupe command. You can change the name of the command /<name>, and the aliases of the command (Another way of using /dupe).[@8Ad8's feature](https://github.com/meme20200/dupeplus/issues/4)
[CommandAPI](https://docs.commandapi.dev/)
## PlaceholderAPI Support
You can now use PlaceholderAPI in the customizable messages in
config.yml.[PlaceholderAPI available placeholders](https://api.extendedclip.com/all/)
## New change to Variables
Instead of using
% for variables. You will need to use < > (for PlaceholderAPI, use the regular %).## Worlds
You can now block or allow /dupe in specific worlds.
## Changes to Blacklist
You are now able to whitelist or blacklist worlds or items. Whitelist blocks everything and allows the worlds/items in the list. Blacklist does the opposite.
[@Sonicscream's suggestion](https://github.com/meme20200/dupeplus/issues/1#issuecomment-2417843029)
## Bugfixes
- Fixed an issue where duplicating items would send an error instead of the dupe message.
- Removed the Checking Key in console. (i forgot to remove it after releasing it)
## Small change
Changed com.galaxydevnetwork into net.meme20200
Turned off cooldown by default. [@ziadhashimeh80-eng's issue](https://github.com/meme20200/dupeplus/issues/5)
Added a way to list all ItemsAdder items by using itemsadder:*
> If you have any issues with the plugin or want to request a feature then please report it at the [DupePlus GitHub Repository Issue](https://github.com/meme20200/dupeplus/issues/new/choose)
## Custom NBT Item
Block items from being duplicated by adding the
{"dupenotallowed":true} to the item.### 1.20.5 and above
In the new change, Minecraft changed NBTs into components, and they also changed how custom tag works, it has to be in the custom_data.
Example:
``
/give @p minecraft:diamond_sword[minecraft:custom_data={dupenotallowed:true}]
`
The command gives you a diamond sword with the undupeable tag in the Component format.
### 1.20.4 and below
Instead of using components, you have to use NBT which is JSON formatted, instead of including the custom tag into the custom_data, you don't have to put it anywhere.
`
/give @p minecraft:diamond_sword{dupenotallowed:true}
`
The command gives you a diamond sword with the undupeable tag in the NBT format.
## Cooldown Permission
Let some players/groups off the cooldown by adding the permission dupeplus.cooldown
## Times Max Value
Have multiple max values for players/groups, for an example the max-value for VIP is 8.
Add vip: 8 in the max-values then give the permission dupeplus.times.max.vip to the group/player.
## one-time-message
Sometimes the times can be spammy for chat, if this option is enabled then whenever you use times, it will only send the message once.
## Lore
Add lore to a duplicated item to show that it's duplicated, the original item will not be affected by the lore feature.
## Item Identifier
A Custom Item Identifier for blacklist, instead of TRIDENT it will be minecraft:trident, this also supports itemsadder:<id>.
## ItemsAdder Support (Blacklist)
Block some ItemsAdder items from being duplicated, use itemsadder:<Item's ID>, if you want to disable itemsadder support then disable it from the integrations
## New Placeholders
%dupe_item% is now replaced by %item_name%.
%raw_dupe_item% is removed.
- %item_type%
- %item_name%
- %old_item_count%
- %new_item_count%
- %item_count%
## config.yml
<details>
<summary>config.yml</summary>
`yml
# DupePlus's Settings
# Message Variables
# %item_type% = The Duplicated item
# %item_name% = The Item's Display Name
# %old_item_count% = The Item Count before dupe
# %new_item_count% = The Item Count after dupe
# %item_count% = Item Count
# %prefix% = The default prefix or the prefix you set
# %max% = The maximum
# %min% = The minimum
# Use this website to help you customize your messages
# https://webui.advntr.dev
dupe:
# The prefix for you to use
prefix: "<green>DupePlus</green>"
# Make it false to let everyone allowed to use this command (Default: false)
# Permission: dupeplus.dupe
permission: false
# The message sent to the player when try to execute dupe or reloadconfig no permission (Only if the above is true) (Default: "%prefix% <dark_gray>|</dark_gray> <red>You are not allowed to use this command</red>")
# Leave blank for no message
permission-message: "%prefix% <dark_gray>|</dark_gray> <red>You are not allowed to use this command</red>"
# The message sent to the player when you duplicate an item. (Default: "%prefix% <dark_gray>|</dark_gray> <gray>Duped %item_name%</gray>")
# Allowed Message Variables: %prefix%, %item_type%, %item_name%, %old_item_count%, %new_item_count%
message: "%prefix% <dark_gray>|</dark_gray> <gray>Duped %item_name%</gray>"
# The message sent whenever the player tries to dupe nothing (Air) (Default: "")
# Leave blank for no message
duping-nothing-message: ""
# Checks if the item has a NBT Tag of "dupenotallowed", if it has, it will not dupe the item.
custom-nbt-item:
# Make it false to disable the Custom NBT feature, make it true to enable it (Default: true)
enabled: true
# Allowed message variable: %prefix%, %item_type%, %item_name%, %item_count% (Default: "%prefix% <dark_gray>|</dark_gray> <red>The item is blocked from being duped!</red>")
# Leave blank for no message
blocked-message: "%prefix% <dark_gray>|</dark_gray> <red>The item is blocked from being duped!</red>"
# When using /dupe, in which hand will it dupe? (Default: MainHand)
# OffHand
# MainHand
dupe-on: MainHand
# Message to the sender if they try to dupe as a non-player (Default: "DupePlus | You can't do that!")
console-message: "DupePlus | You can't do that!"
# Settings for blacklist
blacklist:
# Make it false to disable the blacklist, make it true to enable it (Default: false)
enabled: false
# If the player tries to dupe an item that is in (Default: "%prefix% <dark_gray>|</dark_gray> <red>The item is blocked from being duped!</red>")
# Allowed message variable: %prefix%, %item_type%, %item_name%, %item_count%
# Leave blank for no message
blocked-message: "%prefix% <dark_gray>|</dark_gray> <red>The item is blocked from being duped!</red>"
# Add or remove items to block them from being duped, also do not include spaces. (NO: "diamond block" YES: "diamond_block")
# Begin the item's id with minecraft: to check the item's type only, it will ignore if the item is part of a custom plugin. (Default: - minecraft:barrier)
# Begin the item's id with itemsadder: if you want to check if the item's itemsadder id, it will not check for the namespace.
items:
- minecraft:barrier
# Settings for the cooldown of /dupe
cooldown:
# Make it false to disable the cooldown, make it true to enable it. (Default: false)
enabled: false
# How many seconds for the cooldowns to be. (Default: 3)
seconds: 3
# If the player tries to dupe while the cooldown is set. (Default: "%prefix% <dark_gray>|</dark_gray> <red>Please wait %duration%.</red>")
# Allowed message variable: %prefix%, %duration%
# Leave blank for no message
wait-message: "%prefix% <dark_gray>|</dark_gray> <red>Please wait %duration%.</red>"
# Make it true if you want players with the permission to ignore the cooldown, make it false if you want everyone to have cooldown. (Default: false)
# Permission: dupeplus.cooldown
permission: true
# Settings for this (ignore if you don't want this) players can still run /dupe
# /dupe <times>
times:
# Make it false to disable this feature, make it true to enable this feature (Default: false)
enabled: false
# Set it to 0 to disable the times (Default: 5) (Recommended: 5)
# Permission to let a player/group have no maximum regardless of this option: dupeplus.times.max.unlimited
# dupeplus.times.max.<name>
max-values:
pro: 10
vip: 8
default: 5 # Default permission or players without the permission who are using the dupe times.
# If the player puts the value above the maximum then what's the message? (Default: "%prefix% <dark_gray>|</dark_gray> <red>This is higher than maximum! Do something lower than %max%</red>")
# Allowed message variable: %prefix%, %max%, %min%
# Leave blank for no message
max-message: "%prefix% <dark_gray>|</dark_gray> <red>This is higher than maximum! Do something lower than %max%</red>"
# 0 for no minimum amount of times the player can run (Default: 0) (Recommended: 0)
# Permission to let a player/group have no minimum regardless of this option: dupeplus.times.min.unlimited
# It is recommended to just keep this at 0
min: 0
# If the player puts the value below the minimum (Default: "%prefix% <dark_gray>|</dark_gray> <red>This is lower than minimum! Do something higher than %min%</red>")
# Allowed message variable: %prefix%, %max%, %min%
# Leave blank for no message
min-message: "%prefix% <dark_gray>|</dark_gray> <red>This is lower than minimum! Do something higher than %min%</red>"
# Instead of sending the dupe message for every time it duplicates, it sends it one time to stop spam. (Default: true)
one-time-message: true
# Make it false to let everyone allowed to use this command (Default: false)
# Permission: dupeplus.times
permission: false
# Adds lore to the duplicated item.
lore:
# Enables or disables this feature. (Default: false)
enabled: false
# The lore added to the duplicated item. (Default: "<dark_red>*</dark_red> <red>Duplicated Item</red>")
text: "<dark_red>*</dark_red> <red>Duplicated Item</red>"
# The modes on how the plugin will add the lore. (Default: set)
# append: Checks if the dupe lore exists or not, if it doesn't exist then it adds after the last lore or just adds the lore if no lore is present.
# set: Checks if the dupe lore exists or not, if it doesn't exist then it will replace the existing lore with the dupe lore, otherwise it just ignores. (Recommended)
mode: set
# The Integrations that this plugin connects with.
integrations:
# Enables ItemsAdder Integration (Default: true)
itemsadder: true
# Checks for updates using the set API (Modrinth or SpigotMC),
updates:
# Checks on startup for updates, disable if you do not wish to update DupePlus.
checkupdate: true
# Which Service should the Check Update use? (Default: Modrinth)
# Modrinth
# SpigotMC
api: Modrinth
notify:
# Notify players with the permission to update the plugin to the latest version.
player-notify: true
# The message sent to everyone who has the permission (Default: "%prefix% <dark_gray>|</dark_gray> <white><green>DupePlus</green> is outdated, please update at: <blue>%link%</blue>")
# (Permission: dupeplus.updates.notify)
# Allowed message variable: %prefix%, %link%, %currentversion%, %newversion%
notify-message: "%prefix% <dark_gray>|</dark_gray> <white><green>DupePlus</green> is outdated, please update at: <blue>%link%</blue>"
# Send message to the console for the server owner to update the plugin.
console-notify: true
# The message sent to the console (Default: "%prefix% | Update DupePlus at %link%")
# Allowed message variable: %prefix%, %link%, %currentversion%, %newversion%
console-notify-message: "%prefix% | Update DupePlus at %link%"
# Don't edit this
# Previous: 1.2
# config-version: 1.3
config-version: 1.3
``</details>
## Notes
As this is a SpigotMC 1.17 plugin, this will support all versions from 1.17 from 1.21.4 including newer ones, this plugin will work on all major forks of SpigotMC like PaperMC & Purpur (Fork of PaperMC)
##
config.ymlMade a large change to
config.yml<details>
<summary>config.yml</summary>
``
yml
# The command's settings
# Message Variables
# %dupe_item% = The Duplicated item
# %prefix% = The default prefix or the prefix you set
# %max% = The maximum
# %min% = The minimum
# Use this website to help you customize your messages
# https://webui.advntr.dev
dupe:
# The prefix for you to use
prefix: "<green>DupePlus</green>"
# Make it false to let everyone allowed to use this command (Default: false)
# Permission: dupeplus.dupe
permission: false
# The message sent to the player when try to execute dupe or reloadconfig no permission (Only if the above is true) (Default: "%prefix% <dark_gray>|</dark_gray> <red>You are not allowed to use this command</red>")
permission-message: "%prefix% <dark_gray>|</dark_gray> <red>You are not allowed to use this command</red>"
# Leave blank for no message (Default: "%prefix% <dark_gray>|</dark_gray> <gray>Duped %dupe_item%</gray>")
# Allowed Message Variables: %prefix%, %raw_dupe_item%, %dupe_item%
message: "%prefix% <dark_gray>|</dark_gray> <gray>Duped %dupe_item%</gray>"
# The message sent whenever the player tries to dupe nothing (Air) (Default: "")
# Leave blank for no message
duping-nothing-message: ""
# When using /dupe, in which hand will it dupe? (Default: MainHand)
# OffHand
# MainHand
dupe-on: MainHand
# Message to the sender if they try to dupe as a non-player (Default: "DupePlus | You can't do that!")
console-message: "DupePlus | You can't do that!"
# Settings for blacklist
blacklist:
# Make it false to disable the blacklist, make it true to enable it (Default: false)
enabled: false
# If the player tries to dupe an item that is in (Default: "%prefix% <dark_gray>|</dark_gray> <red>The item is blocked from being duped!</red>")
# Allowed message variable: %prefix%, %dupe_item%
blocked-message: "%prefix% <dark_gray>|</dark_gray> <red>The item is blocked from being duped!</red>"
# Add or remove items to block them from being duped, also do not include spaces, for an example (NO: "diamond block" YES: "diamond_block")
items:
- barrier
# Settings for the cooldown of /dupe
cooldown:
# Make it false to disable the cooldown, make it true to enable it. (Default: false)
enable: false
# How many seconds for the cooldowns to be.
seconds: 3
# If the player tries to dupe while the cooldown is set. (Default: "%prefix% <dark_gray>|</dark_gray> <red>Please wait %duration%.</red>")
# Allowed message variable: %prefix%, %duration%
wait-message: "%prefix% <dark_gray>|</dark_gray> <red>Please wait %duration%.</red>"
# Settings for this (ignore if you don't want this) players can still run /dupe
# /dupe <times>
times:
# Make it false to disable this feature, make it true to enable this feature (Default: false)
enabled: false
# 0 for no maximum amount of times the player can run (Default: 5) (Recommended: 5)
# Permission to let a player/group have no maximum regardless of this option: dupeplus.times.max.unlimited
max: 5
# If the player puts the value above the maximum then what's the message? (Default: "%prefix% <dark_gray>|</dark_gray> <red>This is higher than maximum! Do something lower than %max%</red>")
# Allowed message variable: %prefix%, %max%, %min%
max-message: "%prefix% <dark_gray>|</dark_gray> <red>This is higher than maximum! Do something lower than %max%</red>"
# 0 for no minimum amount of times the player can run (Default: 0) (Recommended: 0)
# Permission to let a player/group have no minimum regardless of this option: dupeplus.times.min.unlimited
min: 0
# If the player puts the value below the minimum (Default: "%prefix% <dark_gray>|</dark_gray> <red>This is lower than minimum! Do something higher than %min%</red>")
# Allowed message variable: %prefix%, %max%, %min%
min-message: "%prefix% <dark_gray>|</dark_gray> <red>This is lower than minimum! Do something higher than %min%</red>"
# Make it false to let everyone allowed to use this command (Default: false)
# Permission: dupeplus.times
permission: false
# Checks for updates using the set API (Modrinth or SpigotMC),
updates:
# Checks on startup for updates, disable if you do not wish to update DupePlus.
checkupdate: true
# Which Service should the Check Update use? (Default: Modrinth)
# Modrinth
# SpigotMC
api: Modrinth
notify:
# Notify players with the permission to update the plugin to the latest version.
player-notify: true
# The message sent to everyone who has the permission (Default: "%prefix% <dark_gray>|</dark_gray> <white><green>DupePlus</green> is outdated, please update at: <blue>%link%</blue>")
# (Permission: dupeplus.updates.notify)
# Allowed message variable: %prefix%, %link%, %currentversion%, %newversion%
notify-message: "%prefix% <dark_gray>|</dark_gray> <white><green>DupePlus</green> is outdated, please update at: <blue>%link%</blue>"
# Send message to the console for the server owner to update the plugin.
console-notify: true
# The message sent to the console (Default: "%prefix% | Update DupePlus at %link%")
# Allowed message variable: %prefix%, %link%, %currentversion%, %newversion%
console-notify-message: "%prefix% | Update DupePlus at %link%"
# Don't edit this
# Previous: 1.1
# config-version: 1.2
config-version: 1.2
`
</details>
## Update Checker
Using either the Modrinth API or the SpigotMC API, you can be sure that you are in the new version.
## Cooldown
Add a cooldown to the /dupe`, by default it's turned off. ## Additional Updates
- %dupe_item% is now %raw_dupe_item%, Example: %raw_dupe_item%: TRIDENT however %dupe_item% will be Trident for better clarity.
/dupeplus blacklist <item>, Permission for the command is dupe.admin.blacklistBlacklisted Items are the only feature in this update, if you want new features then please request them in the Github Repository.