Added README.md and updated the global rule guis.
This commit is contained in:
571
Documentation.md
571
Documentation.md
@@ -1,128 +1,3 @@
|
||||
|
||||
# DupeAlias - An Advanced Dupe Plugin
|
||||
**Make your server stand out by switching to DupeAlias, a powerful dupe plugin with niche features for unique servers.**
|
||||
|
||||
---
|
||||
|
||||
## 🌟 Why Choose DupeAlias?
|
||||
|
||||
DupeAlias isn't just another dupe plugin - it's a complete ecosystem for managing item behavior on your server. Whether you're running a creative build server, a unique survival experience, or a custom game mode. DupeAlias gives you unprecedented control over how items behave.
|
||||
|
||||
### ✨ Key Features
|
||||
|
||||
**🎯 Smart Item Tagging System**
|
||||
- **UNIQUE** - Prevent specific items from being duplicated
|
||||
- **FINAL** - Lock items against any modifications
|
||||
- **INFINITE** - Create truly infinite resources that never run out
|
||||
- **PROTECTED** - Make items completely inert and unusable
|
||||
|
||||
**🔧 Advanced Global Rules Engine**
|
||||
- Create complex rules based on item properties
|
||||
- Match by material, enchantments, name patterns, lore, and more
|
||||
- Support for armor trims, potion effects, attributes, and custom model data
|
||||
- Flexible matching modes (AND, OR, NAND, XOR)
|
||||
|
||||
**🖥️ Multiple Duplication Interfaces**
|
||||
- **Replicator GUI** - Single-item duplication with visual feedback
|
||||
- **Chest GUI** - Multi-item container-style duplication
|
||||
- **Inventory GUI** - Mirror your entire inventory for easy access
|
||||
- **Menu GUI** - Central hub for all duplication options
|
||||
|
||||
**⚡ Performance & Customization**
|
||||
- Per-permission refresh rates and cooldowns
|
||||
- Extensive configuration options
|
||||
- Session persistence (optional)
|
||||
- Beautiful, modern GUIs with progress indicators
|
||||
|
||||
---
|
||||
|
||||
## 🎮 Perfect For These Server Types
|
||||
|
||||
- **Creative Servers** - Give builders infinite blocks while protecting special items
|
||||
- **Survival+** - Create unique economies with controlled item flow
|
||||
- **Minigames** - Provide infinite consumables while preventing exploitation
|
||||
- **RPG Servers** - Protect quest items and create unbreakable gear
|
||||
- **Prison Servers** - Control contraband while allowing resource flow
|
||||
|
||||
---
|
||||
|
||||
## 📸 Screenshots
|
||||
|
||||
*[Image: Main admin panel showing the clean, modern interface with gradient backgrounds and intuitive navigation]*
|
||||
|
||||
*[Image: Global rules editor displaying the complex criteria system with material selection, enchantment matching, and tag application]*
|
||||
|
||||
*[Image: Replicator GUI in action showing the animated rings, progress bars, and real-time item duplication]*
|
||||
|
||||
*[Image: Held item management interface demonstrating individual tag application with conflict warnings]*
|
||||
|
||||
*[Image: Configuration menu showcasing the extensive customization options and color-coded settings]*
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Quick Setup
|
||||
|
||||
1. Drop `DupeAlias.jar` into your plugins folder
|
||||
2. Restart your server
|
||||
3. Use `/da` to open the admin panel
|
||||
4. Configure your global rules and permissions
|
||||
5. Let your players use `/dupe` to start duplicating!
|
||||
|
||||
---
|
||||
|
||||
## 🔑 Permissions Overview
|
||||
|
||||
- `dupealias.admin` - Access to admin panel and configuration
|
||||
- `dupealias.dupe` - Basic duplication command access
|
||||
- `dupealias.gui.*` - Access to specific GUI types
|
||||
- `dupealias.*.bypass` - Bypass tag restrictions (use carefully!)
|
||||
- Permission-based refresh rates: `dupealias.gui.replicator.refresh.1`
|
||||
|
||||
---
|
||||
|
||||
## 💡 Advanced Use Cases
|
||||
|
||||
**Crate Key Protection**
|
||||
Create a global rule that makes all items containing "key" in their name both UNIQUE and PROTECTED, preventing duplication and accidental use.
|
||||
|
||||
**Infinite Building Materials**
|
||||
Set up INFINITE tags on common building blocks, giving your builders unlimited resources while maintaining server economy balance.
|
||||
|
||||
**Quest Item Security**
|
||||
Use FINAL tags on story items to prevent players from renaming or modifying important quest objects.
|
||||
|
||||
**Admin Tool Management**
|
||||
Combine PROTECTED and UNIQUE tags to create admin-only items that can't be duplicated or used by regular players.
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Developer-Friendly
|
||||
|
||||
Built on the robust Alias Development Framework with:
|
||||
- Clean, documented API
|
||||
- Event-driven architecture
|
||||
- Extensive configuration options
|
||||
- JSON-based data storage
|
||||
- Full backward compatibility
|
||||
|
||||
---
|
||||
|
||||
## 📋 Requirements
|
||||
|
||||
- **Minecraft Version**: 1.21+
|
||||
- **Server Software**: Paper, Purpur, or compatible
|
||||
- **Java Version**: 17+
|
||||
|
||||
---
|
||||
|
||||
## 🤝 Support & Updates
|
||||
|
||||
DupeAlias is actively maintained with regular updates and feature additions. Join our community for support, suggestions, and to see what's coming next!
|
||||
|
||||
**Get DupeAlias today and revolutionize how items work on your server!**
|
||||
|
||||
---
|
||||
|
||||
# DupeAlias Documentation
|
||||
|
||||
## Table of Contents
|
||||
@@ -135,17 +10,15 @@ DupeAlias is actively maintained with regular updates and feature additions. Joi
|
||||
6. [Permissions System](#permissions-system)
|
||||
7. [Configuration](#configuration)
|
||||
8. [Commands](#commands)
|
||||
9. [Common Scenarios](#common-scenarios)
|
||||
10. [Troubleshooting](#troubleshooting)
|
||||
|
||||
---
|
||||
9. [Troubleshooting](#troubleshooting)
|
||||
|
||||
---
|
||||
## Installation & Setup
|
||||
|
||||
### Prerequisites
|
||||
- Minecraft 1.21 or higher
|
||||
- Paper, Purpur, or compatible server software
|
||||
- Java 17 or higher
|
||||
- Minecraft 1.21.5
|
||||
- Paper server software
|
||||
- Java 21 or higher
|
||||
|
||||
### Installation Steps
|
||||
1. Download the DupeAlias JAR file
|
||||
@@ -159,8 +32,7 @@ DupeAlias is actively maintained with regular updates and feature additions. Joi
|
||||
3. Navigate to Configuration → Common Config to customize colors and branding
|
||||
4. Set up your first global rules or start tagging items manually
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
## Core Concepts
|
||||
|
||||
### Item Tags
|
||||
@@ -178,8 +50,7 @@ Individual item tags **always override** global rules. This allows for fine-grai
|
||||
- **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
|
||||
@@ -191,13 +62,9 @@ Individual item tags **always override** global rules. This allows for fine-grai
|
||||
- Admin-only equipment
|
||||
- Currency items
|
||||
|
||||
**Conflicts**: Cannot be combined with INFINITE (creates a logical paradox)
|
||||
**Conflicts**: Cannot be combined with INFINITE.
|
||||
|
||||
**Example**: A crate key that should never be duplicated
|
||||
```
|
||||
Individual: Right-click key in hand → Apply UNIQUE tag
|
||||
Global: All items with "key" in name → Apply UNIQUE tag
|
||||
```
|
||||
|
||||
### FINAL Tag
|
||||
**Purpose**: Prevents any modification to the item
|
||||
@@ -214,12 +81,6 @@ Global: All items with "key" in name → Apply UNIQUE tag
|
||||
- Rank kits that shouldn't be modified
|
||||
- Event rewards with special formatting
|
||||
|
||||
**Example**: A quest sword that must keep its name
|
||||
```
|
||||
Individual: Apply FINAL tag to specific sword
|
||||
Global: All items with "Quest" in lore → Apply FINAL tag
|
||||
```
|
||||
|
||||
### INFINITE Tag
|
||||
**Purpose**: Maintains maximum stack size and refills items
|
||||
|
||||
@@ -230,17 +91,11 @@ Global: All items with "Quest" in lore → Apply FINAL tag
|
||||
|
||||
**Use Cases**:
|
||||
- Creative-style building materials
|
||||
- Infinite arrows for archery ranges
|
||||
- "Infinity" enchantment for tipped arrows
|
||||
- Unlimited consumables for events
|
||||
|
||||
**Conflicts**: Cannot be combined with UNIQUE or PROTECTED
|
||||
|
||||
**Example**: Infinite building blocks for creative areas
|
||||
```
|
||||
Individual: Apply INFINITE to held stone blocks
|
||||
Global: All concrete blocks → Apply INFINITE tag
|
||||
```
|
||||
|
||||
### PROTECTED Tag
|
||||
**Purpose**: Makes items completely inert and unusable
|
||||
|
||||
@@ -260,14 +115,7 @@ Global: All concrete blocks → Apply INFINITE tag
|
||||
|
||||
**Conflicts**: Cannot be combined with INFINITE
|
||||
|
||||
**Example**: A decorative trophy that can't be used
|
||||
```
|
||||
Individual: Apply PROTECTED to specific trophy
|
||||
Global: All items with "Display" in name → Apply PROTECTED tag
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
## Global Rules Engine
|
||||
|
||||
### Creating Global Rules
|
||||
@@ -289,92 +137,64 @@ Select which tags this rule will apply to matching items. Multiple tags can be s
|
||||
- **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
|
||||
- **WHITELIST**: Only apply to selected materials
|
||||
- **BLACKLIST**: Apply to all except selected materials
|
||||
- **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
|
||||
```
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
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
|
||||
```
|
||||
|
||||
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
|
||||
Name Regex: ".*[Kk]ey.*"
|
||||
Lore Regex: ".*[Cc]rate.*"
|
||||
```
|
||||
|
||||
``` 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.
|
||||
```
|
||||
|
||||
``` 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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
``` 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
|
||||
**Access**: `/dupe replicator` or through main menu
|
||||
**Permissions**:
|
||||
- `dupealias.gui.replicator`: Main Access
|
||||
- `dupealias.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
|
||||
@@ -391,13 +211,18 @@ Material Mode: WHITELIST Materials: STONE, DIRT, WOOD, CONCRETE variants
|
||||
**Best For**: Quick duplication of single item types
|
||||
|
||||
### Chest GUI
|
||||
**Access**: `/dupe chest` or through main menu
|
||||
**Access**: `/dupe chest` or through main menu
|
||||
**Permissions**:
|
||||
- `dupealias.gui.chest`: Main Access
|
||||
- `dupealias.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 (if enabled)
|
||||
- Session persistence (doesn't persist over reboots)
|
||||
|
||||
**How to Use**:
|
||||
1. Open the GUI
|
||||
@@ -405,10 +230,13 @@ Material Mode: WHITELIST Materials: STONE, DIRT, WOOD, CONCRETE variants
|
||||
3. Take duplicated copies from the right 4 columns
|
||||
4. Items refresh based on configured delays
|
||||
|
||||
**Best For**: Bulk duplication of multiple item types
|
||||
**Best For**: Duplication of items you'll commonly need through session persistence.
|
||||
|
||||
### Inventory GUI
|
||||
**Access**: `/dupe inventory` or through main menu
|
||||
**Access**: `/dupe inventory` or through main menu
|
||||
**Permissions**:
|
||||
- `dupealias.gui.chest`: Main Access
|
||||
- `dupealias.gui.chest.refresh.<integer>`: Sets the amount of ticks for the output items to restock
|
||||
|
||||
**Features**:
|
||||
- Mirror of your actual inventory
|
||||
@@ -425,7 +253,8 @@ Material Mode: WHITELIST Materials: STONE, DIRT, WOOD, CONCRETE variants
|
||||
**Best For**: Easy access to copies of everything you're carrying
|
||||
|
||||
### Menu GUI
|
||||
**Access**: `/dupe gui` or `/dupe` (if set as default)
|
||||
**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
|
||||
@@ -437,167 +266,170 @@ Material Mode: WHITELIST Materials: STONE, DIRT, WOOD, CONCRETE variants
|
||||
2. Click on the GUI type you want to use
|
||||
3. Access is controlled by permissions
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
## Permissions System
|
||||
|
||||
### Core Permissions
|
||||
|
||||
#### Admin Access
|
||||
```yaml
|
||||
dupealias.admin: true # Access to admin panel and configuration
|
||||
```
|
||||
|
||||
```yaml
|
||||
dupealias.admin: true # Access to admin panel and configuration
|
||||
```
|
||||
#### Basic Duplication
|
||||
```yaml
|
||||
dupealias.dupe: true # Access to /dupe command
|
||||
dupealias.dupe.cooldown.<integer>: false # Cooldown for command duping (milliseconds)
|
||||
```
|
||||
|
||||
```yaml
|
||||
dupealias.dupe: true # Access to /dupe command
|
||||
dupealias.dupe.cooldown.<integer>: false # Cooldown for command duping (milliseconds)
|
||||
```
|
||||
#### GUI Access
|
||||
```yaml
|
||||
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
|
||||
```
|
||||
|
||||
```yaml
|
||||
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
|
||||
```yaml
|
||||
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
|
||||
```
|
||||
|
||||
```yaml
|
||||
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
|
||||
```yaml
|
||||
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
|
||||
```
|
||||
|
||||
```yaml
|
||||
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!)
|
||||
```yaml
|
||||
dupealias.unique.bypass: false # Can dupe UNIQUE items
|
||||
```yaml
|
||||
dupealias.unique.bypass: false # Can dupe UNIQUE items
|
||||
dupealias.final.bypass: false # Can modify FINAL items
|
||||
dupealias.protected.bypass: false # Can use PROTECTED items
|
||||
```
|
||||
|
||||
dupealias.protected.bypass: false # Can use PROTECTED items
|
||||
```
|
||||
#### Special Permissions
|
||||
```yaml
|
||||
dupealias.infinite: true # Can use INFINITE items
|
||||
```
|
||||
|
||||
```yaml
|
||||
dupealias.infinite: true # Can use INFINITE items
|
||||
```
|
||||
### Permission Hierarchy
|
||||
|
||||
The plugin 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.
|
||||
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
|
||||
```yaml
|
||||
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
|
||||
```
|
||||
|
||||
```yaml
|
||||
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
|
||||
```yaml
|
||||
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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
```yaml
|
||||
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
|
||||
```json
|
||||
{
|
||||
"dupeCooldownMillis": 1000, // Command cooldown in milliseconds
|
||||
"defaultDupeGui": "REPLICATOR" // Default GUI (REPLICATOR/INVENTORY/CHEST/MENU)
|
||||
}
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"dupeCooldownMillis": 1000, // Command cooldown in milliseconds
|
||||
"defaultDupeGui": "REPLICATOR" // Default GUI (REPLICATOR/INVENTORY/CHEST/MENU)
|
||||
}
|
||||
```
|
||||
#### GUI Refresh Rates
|
||||
```json
|
||||
{
|
||||
"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
|
||||
}}
|
||||
```
|
||||
```json
|
||||
{
|
||||
"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
|
||||
```json
|
||||
{
|
||||
"finalCommandRegex": [
|
||||
"\"(?:itemname|iname)\"gmi", // Block item naming commands "\"(?:itemlore|lore)\"gmi" // Block lore modification commands ]}
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"finalCommandRegex": [
|
||||
"\"(?:itemname|iname)\"gmi", // Block item naming commands
|
||||
"\"(?:itemlore|lore)\"gmi" // Block lore modification commands
|
||||
]
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
#### Tag Lore Customization (MiniMessage)
|
||||
```json
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"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
|
||||
```json
|
||||
{
|
||||
"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
|
||||
}
|
||||
```
|
||||
|
||||
```json
|
||||
{
|
||||
"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
|
||||
```json
|
||||
{
|
||||
"debugMode": false, // Enable debug output
|
||||
"debuggerExclusions": [] // Methods to exclude from debug
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
```json
|
||||
{
|
||||
"debugMode": false, // Enable debug output
|
||||
"debuggerExclusions": [] // Methods to exclude from debug
|
||||
}
|
||||
|
||||
```
|
||||
---
|
||||
## Commands
|
||||
|
||||
### Administrative Commands
|
||||
|
||||
#### `/dupealias` (Aliases: `/da`)
|
||||
**Permission**: `dupealias.admin`
|
||||
**Permission**: `dupealias.admin`
|
||||
**Description**: Main administrative command
|
||||
|
||||
**Subcommands**:
|
||||
@@ -625,7 +457,7 @@ groups:
|
||||
### Player Commands
|
||||
|
||||
#### `/dupe`
|
||||
**Permission**: `dupealias.dupe`
|
||||
**Permission**: `dupealias.dupe`
|
||||
**Description**: Main duplication command
|
||||
|
||||
**Usage**:
|
||||
@@ -642,35 +474,35 @@ groups:
|
||||
### Common Issues
|
||||
|
||||
#### "You cannot dupe unique items"
|
||||
**Cause**: Item has UNIQUE tag or matches global rule
|
||||
**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 remove` to remove individual tag
|
||||
|
||||
#### Items not refreshing in GUI
|
||||
**Cause**: Long refresh delay or permission issues
|
||||
**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
|
||||
**Cause**: Item has FINAL tag blocking modifications
|
||||
**Solution**:
|
||||
- Check item tags in admin panel
|
||||
- Use `/da tag FINAL remove` if needed
|
||||
- Grant `dupealias.final.bypass` permission for admins
|
||||
|
||||
#### Global rules not applying
|
||||
**Cause**: Rule criteria not matching or individual tags overriding
|
||||
**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
|
||||
**Cause**: Missing permissions or plugin conflicts
|
||||
**Solution**:
|
||||
- Verify player has `dupealias.gui` permission
|
||||
- Check for inventory plugin conflicts
|
||||
@@ -678,26 +510,19 @@ groups:
|
||||
|
||||
### Debug Mode
|
||||
|
||||
Enable debug mode to troubleshoot issues:
|
||||
```
|
||||
/da debug toggle
|
||||
```
|
||||
|
||||
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>
|
||||
```
|
||||
|
||||
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
|
||||
@@ -706,19 +531,17 @@ Exclude noisy methods:
|
||||
- Limit the number of active global rules
|
||||
|
||||
#### GUI Optimization
|
||||
- Set appropriate refresh rates based on server performance
|
||||
- Consider disabling session persistence for busy servers
|
||||
- Use cooldowns to prevent spam
|
||||
|
||||
---
|
||||
|
||||
---
|
||||
### Getting Help
|
||||
|
||||
If you encounter issues not covered in this documentation:
|
||||
|
||||
1. Enable debug mode and check console logs
|
||||
2. Test with a minimal permission set
|
||||
3. Verify your global rules are correctly configured
|
||||
4. Check for conflicts with other plugins
|
||||
2. Verify your global rules are correctly configured
|
||||
3. Check for conflicts with other plugins
|
||||
4. Join the [Alias Development](https://trouper.me/alias) 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.
|
||||
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.
|
||||
Reference in New Issue
Block a user