17 KiB
DupeAlias Documentation
Table of Contents
- Installation & Setup
- Core Concepts
- Item Tags System
- Global Rules Engine
- Duplication GUIs
- Permissions System
- Configuration
- Commands
- Troubleshooting
Installation & Setup
Prerequisites
- Minecraft 1.21.5
- Paper server software
- Java 21 or higher
Installation Steps
- Download the DupeAlias JAR file
- Place it in your server's
plugins/directory - Restart your server
- The plugin will generate default configuration files in
plugins/DupeAlias/
First-Time Configuration
- Join your server as an operator
- Run
/dato open the admin panel - Navigate to Configuration → Common Config to customize colors and branding
- Set up your first global rules or start tagging items manually
Core Concepts
Item Tags
DupeAlias uses four primary tags that can be applied to items:
- UNIQUE: Prevents the item from being duplicated
- FINAL: Prevents the item from being modified in any way
- INFINITE: Keeps the item at maximum stack size (99)
- PROTECTED: Prevents the item from being used, consumed, or crafted with
Tag Priority System
Individual item tags always override global rules. This allows for fine-grained control where you can set global rules for item types while making exceptions for specific items.
Global Rules vs Individual Tags
- Individual Tags: Stored directly on the item's metadata, apply only to that specific item instance
- Global Rules: Server-wide rules that apply tags based on item properties like material, name, enchantments, etc.
Item Tags System
UNIQUE Tag
Purpose: Prevents item duplication through intended methods
Use Cases:
- Crate keys and special tokens
- Rare items and rewards
- Admin-only equipment
- Currency items
Conflicts: Cannot be combined with INFINITE.
Example: A crate key that should never be duplicated
FINAL Tag
Purpose: Prevents any modification to the item
Blocks:
- Renaming items
- Enchanting items
- Repairing items
- Anvil operations
- Any metadata changes
Use Cases:
- Quest items with specific names
- Rank kits that shouldn't be modified
- Event rewards with special formatting
INFINITE Tag
Purpose: Maintains maximum stack size and refills items
Behavior:
- Sets item stack to 99 (max stackable amount)
- Refills automatically after use
- Works with blocks, consumables, and projectiles
Use Cases:
- Creative-style building materials
- "Infinity" enchantment for tipped arrows
- Unlimited consumables for events
Conflicts: Cannot be combined with UNIQUE or PROTECTED
PROTECTED Tag
Purpose: Makes items completely inert and unusable
Blocks:
- Using items (right-click)
- Consuming food/potions
- Placing blocks
- Attacking with weapons
- Crafting with the item
- Trading with villagers
Use Cases:
- Display items
- Coupons and vouchers
- Decorative rewards
- Placeholder items
Conflicts: Cannot be combined with INFINITE
Global Rules Engine
Creating Global Rules
- Open admin panel with
/da - Navigate to Global Rules
- Click + Create New Rule
- Configure criteria and applied tags
- Save the rule
Rule Components
Applied Tags
Select which tags this rule will apply to matching items. Multiple tags can be selected for a single rule.
Match Mode
- AND: All criteria must match
- OR: Any criteria must match
- NAND: Not all criteria match
- XOR: Exactly one criteria matches
Note that if no criteria are selected, any material or ItemsAdder item will match.
Material Matching
- IGNORE: Apply to all materials and ItemsAdder items
- WHITELIST: Only apply to selected materials and ItemsAdder items
- BLACKLIST: Apply to all except selected materials and ItemsAdder items
Criteria Types
Name Regex
Match items based on display name patterns using regular expressions.
Example: ".*[Kk]ey.*" matches any item with "key" or "Key" in the name
Lore Regex
Match items based on lore content using regular expressions.
Example: ".*Special.*" matches items with "Special" anywhere in lore
Compound Tag Regex
Match an item based on its compound tag generated from ItemStack#getAsComponentString()
Example: ".*(nutrition).*|.*(saturation).*" Matches any custom food item
NBT Tag Regex
Match an item based on its NBT tag generated from ItemStack#getAsString()
Example: .*{dupenotallowed: 1b}.* matches items from DupePlus's blacklist
Enchantments
Match items that have specific enchantments at minimum levels.
Example: Sharpness V → matches items with Sharpness 5 or higher
Attributes
Match items with specific attribute modifiers.
Example: Attack Damage ≥ 10.0 → matches weapons with high damage
Potion Effects
Match potions/foods with specific effects and amplifiers.
Example: Strength II → matches items giving Strength 2 or higher
Model Data
Match items with specific custom model data values.
Example: 12345 → matches items with CustomModelData: 12345
Item Flags
Match items with specific visibility flags.
Example: HIDE_ENCHANTS → matches items that hide enchantments
Armor Trim
Match armor pieces with specific trim patterns or materials.
Example: Silence Pattern + Gold Material → matches gold silence trim armor
Example Rules
Protect All Crate Keys
Applied Tags: UNIQUE, PROTECTED, FINAL Match Mode: OR NBT Tag Regex: ".*excellentcrates.*" Lore Regex: ".*[Cc]rate.*"
Make Netherite Gear Unmodifiable
Applied Tags: FINAL Match Mode: AND Material Mode: WHITELIST Materials: NETHERITE_SWORD, NETHERITE_AXE, NETHERITE_PICKAXE, etc.
Infinite Creative Blocks
Applied Tags: INFINITE Match Mode: AND Material Mode: WHITELIST Materials: STONE, DIRT, WOOD, CONCRETE variants
Duplication GUIs
Replicator GUI
Access: /dupe replicator or through main menu
Permissions:
dupealias.gui.replicator: Main Accessdupealias.gui.replicator.cooldown.<integer>: Sets the input swap cooldown time (milliseconds).dupealias.gui.replicator.refresh.<integer>: Sets the amount of ticks it takes for the output item to restock.dupealias.gui.replicator.keep: Determines if the player should keep the items in the chest when they close it.
Features:
- Single-item focused duplication
- Animated visual feedback
- Input cooldown system
- Progress bars for item refresh
How to Use:
- Open the GUI
- Drag an item into the left input slot
- Take copies from the output slot
- Input refreshes after cooldown period
Best For: Quick duplication of single item types
Chest GUI
Access: /dupe chest or through main menu
Permissions:
dupealias.gui.chest: Main Accessdupealias.gui.chest.cooldown.<integer>: Sets the input swap cooldown time (milliseconds).dupealias.gui.chest.keep: Determines if the player should keep the items in the chest when they close it.dupealias.gui.chest.keepondeath: If set to false, all items in the chest will be dropped on the ground on death.
Features:
- Multi-item container interface
- 4 input columns, 4 output columns
- Individual item refresh timers
- Session persistence (doesn't persist over reboots)
How to Use:
- Open the GUI
- Place items in the left 4 columns
- Take duplicated copies from the right 4 columns
- Items refresh based on configured delays
Best For: Duplication of items you'll commonly need through session persistence.
Inventory GUI
Access: /dupe inventory or through main menu
Permissions:
dupealias.gui.chest: Main Accessdupealias.gui.chest.refresh.<integer>: Sets the amount of ticks for the output items to restock
Features:
- Mirror of your actual inventory
- Includes armor slots and offhand
- Real-time synchronization
- Individual slot refresh timers
How to Use:
- Open the GUI
- Your inventory is mirrored in the interface
- Take copies of any items you're carrying
- GUI updates as you change your inventory
Best For: Easy access to copies of everything you're carrying
Menu GUI
Access: /dupe gui or /dupe (if set as default)
Permission: dupealias.gui If granted, all other GUIs will be granted too unless specifically set to false.
Features:
- Central hub for all GUI types
- Permission-based access control
- Clean navigation interface
How to Use:
- Open the main menu
- Click on the GUI type you want to use
- Access is controlled by permissions
Permissions System
Core Permissions
Admin Access
dupealias.admin: true # Access to admin panel and configuration
Basic Duplication
dupealias.dupe: true # Access to /dupe command
dupealias.dupe.cooldown.<integer>: false # Cooldown for command duping (milliseconds)
GUI Access
dupealias.gui: true # Access to all GUIs
dupealias.gui.replicator: true # Access to replicator GUI
dupealias.gui.inventory: true # Access to inventory GUI
dupealias.gui.chest: true # Access to chest GUI
Advanced Permissions
Session Persistence
dupealias.gui.replicator.keep: false # Keep replicator items on close
dupealias.gui.chest.keep: false # Keep chest items on close
dupealias.gui.chest.keepondeath: false # Keep chest items on death
Permission Based Refresh Rates
dupealias.gui.replicator.refresh.<integer>: false # Ticks of refresh cooldown
dupealias.gui.replicator.cooldown.<integer>: false # Ticks of re-input cooldown
dupealias.gui.inventory.refresh.<integer>: false # Ticks of refresh cooldown
dupealias.gui.chest.refresh.<integer>: false # Ticks of refresh cooldown
Tag Bypasses (Use Carefully!)
dupealias.unique.bypass: false # Can dupe UNIQUE items
dupealias.final.bypass: false # Can modify FINAL items
dupealias.protected.bypass: false # Can use PROTECTED items
Special Permissions
dupealias.infinite: true # Can use INFINITE items
Permission Hierarchy
The plugin generally uses a "lowest value wins" system for numeric permissions. If a player has both refresh.20 and refresh.5, they will get the 5-tick refresh cooldown. There is an exception to this rule however. For the permission dupealias.dupe.limit.<integer>, it will take the highest value given. This is because I am lazy and did not add a default limit for non ranked players.
Example Permission Sets
VIP Player
groups:
vip:
permissions:
- dupealias.dupe
- dupealias.gui
- dupealias.gui.replicator.refresh.5 # Faster refresh
- dupealias.gui.replicator.cooldown.10 # Shorter cooldown
- dupealias.dupe.cooldown.0 # No command cooldown
Staff Member
groups:
staff:
permissions:
- dupealias.admin # Full admin access
- dupealias.gui.replicator.refresh.1 # Instant refresh
- dupealias.gui.*.keep # Session persistence
- dupealias.final.bypass # Can modify final items
Configuration
Main Configuration (config.json)
Duplication Settings
{
"dupeCooldownMillis": 1000, // Command cooldown in milliseconds
"defaultDupeGui": "REPLICATOR" // Default GUI (REPLICATOR/INVENTORY/CHEST/MENU)
}
GUI Refresh Rates
{
"replicator": {
"baseRefreshDelayTicks": 1, // Base item refresh delay
"baseInputCooldownTicks": 20 // Base input change cooldown
},
"chest": {
"baseRefreshDelayTicks": 1 // Base item refresh delay
},
"inventory": {
"baseRefreshDelayTicks": 1 // Base item refresh delay
}
}
Command Blocking
{
"finalCommandRegex": [
"\"(?:itemname|iname)\"gmi", // Block item naming commands
"\"(?:itemlore|lore)\"gmi" // Block lore modification commands
]
}
Tag Lore Customization (MiniMessage)
{
"trueTagLore": {
"UNIQUE": "<dark_blue><bold>|</bold><blue> Unique",
"FINAL": "<dark_red><bold>|</bold><red> Final",
"INFINITE": "<dark_green><bold>|</bold><green> Infinite",
"PROTECTED": "<dark_purple><bold>|</bold><light_purple> Protected"
},
"falseTagLore": {
"UNIQUE": "<dark_blue><bold>|</bold><blue> Dupeable",
"FINAL": "<dark_red><bold>|</bold><red> Mutable",
"INFINITE": "<dark_green><bold>|</bold><green> Finite",
"PROTECTED": "<dark_purple><bold>|</bold><light_purple> Unprotected"
}
}
Common Configuration (common.json)
Visual Customization
{
"mainColor": 11184895, // Primary color (hex: AAAAFF)
"secondaryColor": 909055, // Secondary color (hex: 00DDFF)
"pluginName": "DupeAlias", // Display name
"flatPrefix": "&9DupeAlias> &7", // Legacy chat prefix
"flat": false // Use legacy formatting
}
Debug Settings
{
"debugMode": false, // Enable debug output
"debuggerExclusions": [] // Methods to exclude from debug
}
Commands
Administrative Commands
/dupealias (Aliases: /da)
Permission: dupealias.admin
Description: Main administrative command
Subcommands:
/da- Open admin panel GUI/da gui- Open admin panel GUI/da debug toggle- Toggle debug mode/da debug exclude <method>- Exclude method from debugging/da debug include <method>- Include method in debugging
Tag Management
/da tag <tag> [material|global] [remove]- Manage item tags/da tag <tag>- Tag held item/da tag <tag> remove- Remove tag from held item/da tag <tag> false- Set tag to false on held item/da tag <tag> global- Create global rule for held item material/da tag <tag> <material>- Create global rule for specific material/da tag <tag> <material> remove- Remove global rule
Rule Management
/da rule create <tag>- Create new global rule/da rule list- List all global rules/da rule remove <index>- Remove rule by index/da rule info <index>- Show detailed rule information
Player Commands
/dupe
Permission: dupealias.dupe
Description: Main duplication command
Usage:
/dupe- Duplicate held item once OR open default GUI/dupe <amount>- Duplicate held item multiple times/dupe gui- Open main GUI menu/dupe replicator- Open replicator GUI/dupe inventory- Open inventory GUI/dupe chest- Open chest GUI
Troubleshooting
Common Issues
"You cannot dupe unique items"
Cause: Item has UNIQUE tag or matches global rule
Solution:
- Check
/da→ Held Item Actions to see current tags - Review global rules that might be applying UNIQUE tag
- Use
/da tag UNIQUE removeto remove individual tag
Items not refreshing in GUI
Cause: Long refresh delay or permission issues
Solution:
- Check player has appropriate GUI permissions
- Verify refresh rate permissions (lower numbers = faster)
- Ensure player isn't hitting cooldown limits
"You cannot modify final items"
Cause: Item has FINAL tag blocking modifications
Solution:
- Check item tags in admin panel
- Use
/da tag FINAL removeif needed - Grant
dupealias.final.bypasspermission for admins
Global rules not applying
Cause: Rule criteria not matching or individual tags overriding
Solution:
- Test rule criteria with
/da rule info <index> - Check match mode (AND vs OR)
- Remember individual tags override global rules
GUI won't open
Cause: Missing permissions or plugin conflicts
Solution:
- Verify player has
dupealias.guipermission - Check for inventory plugin conflicts
- Ensure player inventory isn't full
Debug Mode
Enable debug mode to troubleshoot issues: /da debug toggle
This will show detailed information about:
- Tag checking processes
- Global rule matching
- Permission calculations
- GUI state changes
Exclude noisy methods: /da debug exclude <method_name>
Performance Considerations
Large Player Counts
- Use session persistence sparingly
- Don't use GUI refresh or input cooldowns.
- Monitor server TPS with
/tps
Complex Global Rules
- Avoid overly complex regex patterns
- Use material whitelisting instead of complex criteria when possible
- Limit the number of active global rules
GUI Optimization
- Consider disabling session persistence for busy servers
- Use cooldowns to prevent spam
Getting Help
If you encounter issues not covered in this documentation:
- Enable debug mode and check console logs
- Verify your global rules are correctly configured
- Check for conflicts with other plugins
- Join the Alias Development discord
Remember that individual item tags always override global rules, and bypass permissions should be used carefully as they can compromise your server's item security system.