
A Spigot/Paper plugin for defining 3D trigger volumes with automated actions on player entry and exit!
A powerful Spigot/Paper plugin for creating 3D trigger volumes with customizable actions that execute when players enter or leave defined areas.
PLAYER_COMMAND: Execute commands as the playerCONSOLE_COMMAND: Execute commands from consoleMESSAGE: Send colored messages to playersTELEPORT: Teleport players to specific coordinatesTriggerVolumes-1.0.4.jarplugins/ folderplugins/TriggerVolumes/config.yml)# Language Configuration
language:
default: en # Available: en, de, fr, pl, ru, ja, es
# Particle Settings
particles:
update-interval: 5 # Ticks between particle updates
density: 0.5 # Distance between particles (blocks)
visualization-duration: 30 # Duration in seconds
# Cooldown System
cooldowns:
enabled: true
default-cooldown: 3 # Cooldown in seconds
# Selection Tool
selection-tool:
material: WOODEN_HOE
name: "&6Selection Tool"
lore:
- "&7Left-click: Set position 1"
- "&7Right-click: Set position 2"
Edit config.yml and change the language setting:
language:
default: de # Change to your preferred language code
Then reload: /trigger reload
| Command | Description | Permission |
|---|---|---|
/trigger tool |
Get the selection tool | triggervolumes.admin |
/trigger create <name> |
Create volume from selection | triggervolumes.admin |
/trigger define <name> <x1> <y1> <z1> <x2> <y2> <z2> |
Create volume with coordinates | triggervolumes.admin |
/trigger delete <name> |
Delete a volume | triggervolumes.admin |
/trigger clone [source] [name] |
Clone volume or create from selection | triggervolumes.admin |
/trigger copypaste <copy> <paste> |
Copy actions between volumes | triggervolumes.admin |
/trigger list |
List all volumes | triggervolumes.admin |
/trigger info <name> |
Show volume details and groups | triggervolumes.admin |
/trigger reload |
Reload configurations | triggervolumes.admin |
/trigger help |
Show help message | triggervolumes.admin |
| Command | Description | Permission |
|---|---|---|
/trigger setaction <name> enter <type> <value> |
Add enter action | triggervolumes.admin |
/trigger setaction <name> leave <type> <value> |
Add leave action | triggervolumes.admin |
/trigger clearactions <name> [enter|leave|all] |
Clear actions | triggervolumes.admin |
| Command | Description | Permission |
|---|---|---|
/trigger creategroup <name> <vol1> <vol2> [...] |
Create volume group (min 2) | triggervolumes.admin |
/trigger deletegroup <name> |
Delete group (volumes remain) | triggervolumes.admin |
/trigger groupadd <group> <volume> |
Add volume to existing group | triggervolumes.admin |
/trigger groupremove <group> <volume> |
Remove volume from group | triggervolumes.admin |
/trigger setaction <group> <trigger> <type> <value> |
Apply action to all volumes in group | triggervolumes.admin |
/trigger clearactions <group> [enter|leave|all] |
Clear actions from group | triggervolumes.admin |
| Command | Description | Permission |
|---|---|---|
/trigger visualize <name> |
Show volume particles (30s) | triggervolumes.admin |
/trigger hide <name> |
Stop showing particles | triggervolumes.admin |
Executes a command as if the player typed it.
Examples:
/trigger setaction MyVolume enter PLAYER_COMMAND /heal
/trigger setaction MyVolume enter PLAYER_COMMAND /spawn
/trigger setaction MyVolume leave PLAYER_COMMAND /back
Note: The player must have permission to execute the command!
Executes a command from the console (with OP privileges).
Examples:
/trigger setaction MyVolume enter CONSOLE_COMMAND give %player% diamond 1
/trigger setaction MyVolume enter CONSOLE_COMMAND effect give %player% speed 30 1
/trigger setaction MyVolume leave CONSOLE_COMMAND clear %player%
Placeholders:
%player% - Player's name%uuid% - Player's UUIDSends a colored message to the player.
Examples:
/trigger setaction MyVolume enter MESSAGE &aWelcome to the safe zone!
/trigger setaction MyVolume enter MESSAGE &6You are now in the &cDanger Zone&6!
/trigger setaction MyVolume leave MESSAGE &7You left the protected area.
Color Codes:
&0-9, a-f - Standard Minecraft colors&l - Bold, &o - Italic, &n - Underline&m - Strikethrough, &k - Obfuscated&r - Reset formattingTeleports the player to specified coordinates.
Format: x y z [yaw] [pitch]
Examples:
/trigger setaction MyVolume enter TELEPORT 100 64 200
/trigger setaction MyVolume enter TELEPORT 0 70 0 90 0
/trigger setaction MyVolume leave TELEPORT -50 65 -50 180 45
Note: Teleport coordinates are in the same world as the volume!
# Get the selection tool
/trigger tool
# Select two corners by clicking blocks
# Left-click for position 1
# Right-click for position 2
# Create the volume
/trigger create MyFirstVolume
# Define volume with exact coordinates
/trigger define MyFirstVolume 100 60 100 150 80 150
# Send a welcome message
/trigger setaction MyFirstVolume enter MESSAGE &aWelcome!
# Give the player an item
/trigger setaction MyFirstVolume enter CONSOLE_COMMAND give %player% diamond 1
# Apply a potion effect
/trigger setaction MyFirstVolume enter CONSOLE_COMMAND effect give %player% speed 30 1
# Send a goodbye message
/trigger setaction MyFirstVolume leave MESSAGE &cGoodbye!
# Remove potion effects
/trigger setaction MyFirstVolume leave CONSOLE_COMMAND effect clear %player%
# Teleport player back
/trigger setaction MyFirstVolume leave TELEPORT 0 64 0
# Visualize the volume with particles
/trigger visualize MyFirstVolume
# Walk into the volume - enter actions will execute
# Walk out of the volume - leave actions will execute
# Stop visualization
/trigger hide MyFirstVolume
# View all volumes
/trigger list
# Check volume details
/trigger info MyFirstVolume
# Clear specific actions
/trigger clearactions MyFirstVolume enter # Clear only enter actions
/trigger clearactions MyFirstVolume leave # Clear only leave actions
/trigger clearactions MyFirstVolume all # Clear all actions
# Delete volume
/trigger delete MyFirstVolume
Create a safe zone that heals players and prevents PvP:
/trigger create SafeZone
/trigger setaction SafeZone enter MESSAGE &a&lYou entered a safe zone!
/trigger setaction SafeZone enter CONSOLE_COMMAND effect give %player% regeneration 999999 1 true
/trigger setaction SafeZone enter CONSOLE_COMMAND effect give %player% resistance 999999 4 true
/trigger setaction SafeZone leave MESSAGE &cYou left the safe zone!
/trigger setaction SafeZone leave CONSOLE_COMMAND effect clear %player%
Display information when entering a shop:
/trigger create ShopEntrance
/trigger setaction ShopEntrance enter MESSAGE &6&l=== SHOP ===
/trigger setaction ShopEntrance enter MESSAGE &eWelcome to the market!
/trigger setaction ShopEntrance enter MESSAGE &7Type /shop to browse items
/trigger setaction ShopEntrance enter PLAYER_COMMAND /shop
Warn players entering a dangerous area:
/trigger create DangerZone
/trigger setaction DangerZone enter MESSAGE &c&l⚠ WARNING ⚠
/trigger setaction DangerZone enter MESSAGE &cYou entered a dangerous area!
/trigger setaction DangerZone enter MESSAGE &cProceed with caution!
/trigger setaction DangerZone enter CONSOLE_COMMAND playsound entity.ender_dragon.growl player %player%
/trigger setaction DangerZone leave MESSAGE &aYou are now safe.
Create a portal that teleports players:
/trigger create TeleportHub
/trigger setaction TeleportHub enter MESSAGE &6Teleporting to spawn...
/trigger setaction TeleportHub enter TELEPORT 0 64 0 0 0
Give players items when entering a mining area:
/trigger create MiningZone
/trigger setaction MiningZone enter MESSAGE &6You received mining equipment!
/trigger setaction MiningZone enter CONSOLE_COMMAND give %player% iron_pickaxe 1
/trigger setaction MiningZone enter CONSOLE_COMMAND give %player% torch 16
/trigger setaction MiningZone leave MESSAGE &7Your mining equipment was removed.
/trigger setaction MiningZone leave CONSOLE_COMMAND clear %player% iron_pickaxe
/trigger setaction MiningZone leave CONSOLE_COMMAND clear %player% torch
Clone a volume's actions to a new area:
# Select new area with the tool
/trigger tool
# Left-click and right-click to select
# Clone an existing volume to the new selection
/trigger clone SafeZone MySafeZone2
# This creates MySafeZone2 with all actions from SafeZone
# Or create a volume without actions
/trigger clone
# Creates volume_1, volume_2, etc.
# Or clone with auto-generated name
/trigger clone SafeZone
# Creates SafeZone_clone, SafeZone_clone1, etc.
Copy actions from one volume to another without selection:
# Copy all actions from DangerZone to AnotherDangerZone
/trigger copypaste DangerZone AnotherDangerZone
# Both enter and leave actions are copied
Manage multiple volumes as a group:
# Create a group of shop volumes
/trigger creategroup AllShops Shop1 Shop2 Shop3
# Add more volumes to the group later
/trigger groupadd AllShops Shop4
/trigger groupadd AllShops Shop5
# Apply actions to all volumes in the group at once
/trigger setaction AllShops enter MESSAGE &6Welcome to the shop!
/trigger setaction AllShops enter CONSOLE_COMMAND effect give %player% glowing 10
/trigger setaction AllShops leave MESSAGE &7Thanks for visiting!
# Remove a volume from the group
/trigger groupremove AllShops Shop1
# Clear actions from all volumes in group
/trigger clearactions AllShops all
# Delete the group (volumes remain intact)
/trigger deletegroup AllShops
# Note: If a group has less than 2 volumes after removal, it's automatically deleted
triggervolumes.admin - Access to all commands (default: OP)triggervolumes.use - Trigger actions when entering/leaving volumes (default: all players)Using LuckPerms:
# Give admin permission to specific player
/lp user PlayerName permission set triggervolumes.admin true
# Give admin permission to a group
/lp group admin permission set triggervolumes.admin true
# Remove trigger permission from guest group
/lp group guest permission set triggervolumes.use false
Using PermissionsEx:
# Give admin permission
/pex user PlayerName add triggervolumes.admin
# Give to group
/pex group admin add triggervolumes.admin
The cooldown system prevents actions from being triggered too frequently when players repeatedly enter/exit volumes.
config.ymlcooldowns:
enabled: true # Enable/disable cooldown system
default-cooldown: 3 # Cooldown duration in seconds
Volumes can be visualized with colored particle effects to help with positioning and verification.
particles:
update-interval: 5 # Ticks between updates (20 ticks = 1 second)
density: 0.5 # Block spacing between particles
visualization-duration: 30 # Auto-hide after X seconds
# Show particles for 30 seconds
/trigger visualize MyVolume
# Stop showing particles
/trigger hide MyVolume
The plugin uses spatial hashing to efficiently handle hundreds or thousands of volumes without performance impact.
| Number of Volumes | Without Optimization | With Spatial Hashing | Speedup |
|---|---|---|---|
| 10 volumes | 10 checks | 2-3 checks | 3-5× faster |
| 100 volumes | 100 checks | 5-8 checks | 12-20× faster |
| 1000 volumes | 1000 checks | 5-10 checks | 100-200× faster |
plugins/TriggerVolumes/
├── config.yml # Main configuration
├── triggervolumes.yml # Stored volumes and actions
└── lang/ # Language files
├── en.yml # English (default)
├── de.yml # German
├── fr.yml # French
├── pl.yml # Polish
├── ru.yml # Russian
├── ja.yml # Japanese
└── es.yml # Spanish
Volume groups allow you to manage multiple volumes as a single unit, making it easy to apply the same actions to multiple areas.
# Create a group with at least 2 volumes
/trigger creategroup MyGroup Volume1 Volume2 Volume3
Groups can be used wherever you would use a volume name:
# Apply actions to all volumes in a group
/trigger setaction MyGroup enter MESSAGE &aWelcome!
/trigger setaction MyGroup leave MESSAGE &cGoodbye!
# Clear actions from all volumes in a group
/trigger clearactions MyGroup enter
/trigger clearactions MyGroup all
# Add a volume to an existing group
/trigger groupadd MyGroup NewVolume
# Remove a volume from a group
/trigger groupremove MyGroup OldVolume
# View which groups a volume belongs to
/trigger info Volume1
# Shows: "Groups: MyGroup, AnotherGroup"
# Delete a group (volumes are not deleted)
/trigger deletegroup MyGroup
Important Notes:
Volumes and groups are stored in triggervolumes.yml:
volumes:
MyVolume:
world: world
minX: 100.0
minY: 60.0
minZ: 100.0
maxX: 150.0
maxY: 80.0
maxZ: 150.0
enterActions:
0:
type: MESSAGE
value: "&aWelcome!"
1:
type: CONSOLE_COMMAND
value: "effect give %player% speed 30 1"
leaveActions:
0:
type: MESSAGE
value: "&cGoodbye!"
groups:
MyGroup:
name: MyGroup
volumes:
- Volume1
- Volume2
- Volume3
Problem: Player walks through volume but nothing happens
Solutions:
triggervolumes.use/trigger info <name>/trigger visualize <name> to verify boundariesProblem: Clicks don't register positions
Solutions:
triggervolumes.admin permission/trigger toolProblem: /trigger visualize doesn't show particles
Solutions:
/trigger info <name>Problem: Commands return errors or don't work
Solutions:
triggervolumes.admin for setup commands/trigger setaction MyVolume enter MESSAGE "Hello World"Problem: Server lag with many volumes
Solutions:
config.ymlAll actions support these placeholders:
%player% - Player's name%uuid% - Player's UUIDExample:
/trigger setaction Welcome enter CONSOLE_COMMAND tellraw @a {"text":"Player %player% entered spawn!","color":"gold"}
Volumes support unlimited actions per trigger type:
/trigger setaction MyVolume enter MESSAGE &aWelcome!
/trigger setaction MyVolume enter MESSAGE &eEnjoy your stay!
/trigger setaction MyVolume enter CONSOLE_COMMAND give %player% diamond 1
/trigger setaction MyVolume enter PLAYER_COMMAND /heal
All actions execute in the order they were added.
Players can be in multiple volumes simultaneously. Each volume's actions will trigger independently when the player enters/leaves.
Volumes are world-specific. A volume in "world" won't trigger for players in "world_nether".
Use groups to organize related volumes:
# Group all spawn protection zones
/trigger creategroup SpawnZones SpawnSafe1 SpawnSafe2 SpawnSafe3
# Group all shop areas
/trigger creategroup Shops MainShop ArmorShop FoodShop
# Apply consistent actions across related areas
/trigger setaction SpawnZones enter MESSAGE &aYou are now in spawn!
Groups can be modified after creation:
# Create initial group
/trigger creategroup ActiveShops Shop1 Shop2
# Add new shops as they're built
/trigger groupadd ActiveShops Shop3
/trigger groupadd ActiveShops Shop4
# Remove shops temporarily (e.g., during renovation)
/trigger groupremove ActiveShops Shop2
# Add them back when ready
/trigger groupadd ActiveShops Shop2
# If you remove volumes until less than 2 remain, the group auto-deletes
/trigger groupremove ActiveShops Shop1 # Group still exists (3 volumes)
/trigger groupremove ActiveShops Shop3 # Group still exists (2 volumes)
/trigger groupremove ActiveShops Shop4 # Group auto-deleted (would have 1 volume)
Clone: Creates a new volume from your selection + copies actions
CopyPaste: Copies actions between existing volumes
Simply copy the triggervolumes.yml file to backup or transfer volumes to another server. Groups are also saved in this file.
<dependency>
<groupId>de.zfzfg</groupId>
<artifactId>TriggerVolumes</artifactId>
<version>1.0.4</version>
<scope>provided</scope>
</dependency>
TriggerVolumesPlugin plugin = (TriggerVolumesPlugin) Bukkit.getPluginManager().getPlugin("TriggerVolumes");
TriggerVolumeManager manager = plugin.getVolumeManager();
List<TriggerVolume> volumes = manager.getVolumesAtLocation(location);
if (!volumes.isEmpty()) {
// Location is in at least one volume
}
TriggerVolumeManager manager = plugin.getVolumeManager();
manager.createVolume("MyVolume", "world", 0, 60, 0, 100, 80, 100);
// Add actions
TriggerAction action = new TriggerAction(ActionType.MESSAGE, "&aHello!");
manager.addEnterAction("MyVolume", action);
When reporting bugs, please include:
Have an idea? Open an issue on GitHub with:
This plugin is provided as-is for private and public Minecraft servers.
Made by zfzfg
For updates and more plugins, visit our GitHub Repository.