mirror of
https://github.com/loganintech/render-region-forcefield.git
synced 2026-05-30 22:31:15 +00:00
137 lines
3.8 KiB
Markdown
137 lines
3.8 KiB
Markdown
# RegionForcefield
|
|
|
|
A Minecraft plugin that renders visible particle forcefields around WorldGuard regions that players cannot enter.
|
|
|
|
## Features
|
|
|
|
- Automatically detects WorldGuard regions with `entry deny` flag
|
|
- Renders particle forcefields only visible to players who cannot enter
|
|
- Configurable particle color, size, spacing, and render distance
|
|
- Supports cuboid and polygonal region types
|
|
- Performance-optimized with distance-based rendering
|
|
- Clean, readable, and well-documented code
|
|
|
|
## Requirements
|
|
|
|
- Paper 1.21.8 or higher
|
|
- WorldGuard 7.0.14 or higher
|
|
- Java 21
|
|
|
|
## Installation
|
|
|
|
1. Build the plugin:
|
|
```bash
|
|
./gradlew build
|
|
```
|
|
|
|
2. Copy `build/libs/RegionForcefield-1.0.0.jar` to your server's `plugins/` folder
|
|
|
|
3. Restart your server
|
|
|
|
4. Configure the plugin by editing `plugins/RegionForcefield/config.yml`
|
|
|
|
## Usage
|
|
|
|
Once installed, the plugin automatically works with your existing WorldGuard regions:
|
|
|
|
1. Create a WorldGuard region: `/rg define myregion`
|
|
2. Set the entry flag to deny: `/rg flag myregion entry deny`
|
|
3. Players who cannot enter the region will see a purple forcefield around it
|
|
|
|
### Commands
|
|
|
|
- `/forcefield debug` or `/ff debug` - Toggle debug mode on/off
|
|
- `/forcefield reload` or `/ff reload` - Reload the configuration file
|
|
- `/forcefield status` or `/ff status` - View plugin status and settings
|
|
- `/forcefield info` or `/ff info` - View information about blocked regions nearby
|
|
- `/forcefield help` or `/ff help` - Show command help
|
|
|
|
### Permissions
|
|
|
|
Players who are members or owners of a region can enter it even if entry is denied for others. These players will not see the forcefield.
|
|
|
|
- `regionforcefield.*` - Grants all permissions (default: op)
|
|
- `regionforcefield.command` - Allows use of `/forcefield` command (default: true)
|
|
- `regionforcefield.debug` - Allows toggling debug mode (default: op)
|
|
- `regionforcefield.reload` - Allows reloading config (default: op)
|
|
- `regionforcefield.status` - Allows viewing status (default: op)
|
|
- `regionforcefield.info` - Allows viewing region info (default: true)
|
|
|
|
## Configuration
|
|
|
|
Edit `plugins/RegionForcefield/config.yml`:
|
|
|
|
```yaml
|
|
# Enable debug logging (useful for troubleshooting)
|
|
debug: false
|
|
|
|
# Update frequency (20 ticks = 1 second)
|
|
update-interval-ticks: 20
|
|
|
|
# Maximum render distance in blocks
|
|
max-render-distance: 100
|
|
|
|
# Spacing between particles
|
|
particle-spacing: 0.5
|
|
|
|
# Render walls or just edges
|
|
render-walls: true
|
|
|
|
# Particle color (RGB 0-255)
|
|
particle-color:
|
|
red: 147
|
|
green: 112
|
|
blue: 219
|
|
|
|
# Particle size (0.5-2.0 recommended)
|
|
particle-size: 1.0
|
|
```
|
|
|
|
## Performance Tips
|
|
|
|
- Reduce `max-render-distance` for servers with many regions
|
|
- Increase `particle-spacing` to reduce particle count
|
|
- Set `render-walls: false` to only show edges
|
|
- Increase `update-interval-ticks` if you don't need real-time updates
|
|
|
|
## Troubleshooting
|
|
|
|
### Forcefields not appearing
|
|
|
|
1. Enable debug mode: `/forcefield debug` or set `debug: true` in config.yml
|
|
2. Check the server console for debug messages
|
|
3. Use `/forcefield info` to see if regions are being detected
|
|
4. Verify the region has `entry deny` set: `/rg info <region>`
|
|
5. Check you're not a member/owner of the region
|
|
6. Ensure you're within render distance of the region (default: 100 blocks)
|
|
|
|
### Plugin won't load
|
|
|
|
1. Verify WorldGuard 7.0.14 or higher is installed
|
|
2. Check server logs for error messages
|
|
3. Ensure you're running Paper 1.21.8 or higher
|
|
4. Verify Java 21 is being used
|
|
|
|
### Performance issues
|
|
|
|
1. Increase `particle-spacing` (less particles)
|
|
2. Reduce `max-render-distance`
|
|
3. Set `render-walls: false` (edges only)
|
|
4. Increase `update-interval-ticks` (update less frequently)
|
|
|
|
## Building from Source
|
|
|
|
```bash
|
|
./gradlew build
|
|
```
|
|
|
|
The compiled JAR will be in `build/libs/`
|
|
|
|
## License
|
|
|
|
This project is provided as-is for educational purposes.
|
|
|
|
## Support
|
|
|
|
For issues or feature requests, please open an issue on the project repository.
|