# v1.3.0
> 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)
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }