FoxGuard - Flexible World Protection
What is it?
FoxGuard is a plugin to act as general world protection. While it takes inspiration from sk89q’s WorldGuard (I practically worship him and his projects), It is written completely from scratch without any reference. Feel free to confirm that for yourself. The large defining difference is that FoxGuard separates regions, which define areas, from handlers which provide the actual control for a protected zone. To make them work, one must create a region to enclose an area, create a handler for that region, and then link the regions and handlers together.
Why so complicated?
This plugin is meant to be flexible, allowing varying complexities for both regions and handlers. When developing this plugin I was dissatisfied with how restrictive many world protection plugins were with the shapes of their protection areas (i.e. only cuboids allowed). I was also dissatisfied with how when specifying rules for regions, sometimes they would be much too complicated for the task, and other times much too simple. By allowing users to choose the appropriate Region and Handler types, this plugin can solve both extremely complex and really simple tasks, depending on what is needed.
Features
Current:
The current feature set is limited as most of the code I have written thus far has been backend code. (SQL, commands, etc.)
- Protect Rectangular and cuboid areas.
- Set build height limits.
- Control movement in and out of areas.
- Stop PVP
- Prevent specific players from building according to a clean flag and handler structure.
- Can make use of permissions plugins like PEX for easy build permission management.
- Extensive and robust command interface. It’s very tolerant of bad formatting, such as extra spaces. It also has a powerful tab completion engine.
- Point and click interface through clickable text output.
- All commands can be run from the console.
- Saves all objects in their own folders for easy navigation, with many configs in human editable format.
- Blocks indirect events as well. (Such as mob spawns.)
Upcoming
This list is only partial and contains only the major features that WILL be a part of a release. Feel free to toss suggestions at me. Information on that below.
- Importing object files.
- More commands. (Including presets to jump-start use.)
- More Region shapes
- More Handler types.
- Finer handling for passive events like fire tick, mob griefing, snow, etc.
- Moderator reporting for specific configurable events. (Such as someone lighting tnt.)
- Lot’s of bugfixes.
Links (Downloads)
PLUGIN MAY BREAK IN BETWEEN VERSIONS AS IT IS BEING DEVELOPED!!!
I APOLOGIZE IN ADVANCE IF FOXGUARD OBJECTS DISAPPEAR BETWEEN PLUGIN UPDATES.
Wiki can be found at https://github.com/FoxDenStudio/FoxGuard-Sponge/wiki
Code can be found at https://github.com/FoxDenStudio/FoxGuard-Sponge
Releases can be found at https://github.com/FoxDenStudio/FoxGuard-Sponge/releases
These are plugin builds that are reasonably stable. At least more so than the others. The jar files just go directly into the mods folder. Releases marked with “api5” are built against SpongeAPI 5.x. These releases also work with SpongeAPI 6.x.
FoxGuard requires FoxCore. Downloads can be found at https://github.com/FoxDenStudio/FoxCore-Sponge/releases
If you are installing on a server, please grab the -server.jar. If you are installing the CUI on a client, please grab the -client.jar. If you also want the plugin on the client, please install SpongeForge.
PLEASE LEAVE THE UNLABLED JAR AND -SOURCES.JAR ALONE, THEY ARE FOR DEVELOPERS.
Thank you.
Video
I made a video demonstrating how to use this plugin. See me flail about:
Interact With Me
You can find me on Discord and occasionally IRC.
Discord link: FoxDev
Note: I am no longer actively on IRC, due to Discord far surpassing it in capabilities, but mostly because I don’t have a bouncer to stay connected. Meanwhile on Discord I get push notifications and can use my phone and stuff.
IP: irc.esper.net
Channel: #foxden
Quickstart
Here is a quick way to make a rectangular protected region. You need to be a player with correct permissions to do this. (It isn’t the only method btw.)
- Move to the first corner of the region and type
/foxguard position
. - Repeat for the second.
- Type
/foxguard create worldregion myregionname rectangular
. This defines the area you are protecting. You can replace “myregionname” with your own name. - Type
/foxguard create handler myhandlername basic easy
. This makes a new set of protection rules that can be used for any region. Naming is the same. - Type
/foxguard modify handler myhandlername flags default add block change =false
. This prevents outside players from performing block actions such as breaking and placing blocks. - Finally, type
/foxguard link myregionname myhandlername
. This links the two together so that the area defined by the region is now under the rules of the handler.
The full Quickstart can be found at https://github.com/FoxDenStudio/FoxGuard-Sponge/wiki/Quickstart
It’s much more detailed and should help familiarize you with more of the commands.
Developers
FoxCore and FoxGuard both offer functionality that may be useful to other plugins, such as command parsing and selecting things, and wands, and a bunch of other stuff.
I have a maven repo now, so you can access it if you want to use my plugins as dependencies:
VERSION can be one of two formats:
- A release build - A fully qualified version for a specific release. They usually are in the format
version-suffix-build
. Eg.0.20.0-api5-347
- A snapshot build - The branch name of the build followed by
-SNAPSHOT
. For exampleapi5-SNAPSHOT
Maven
Repository:
<repository>
<id>FoxDenStudio</id>
<url>http://repo.foxdenstudio.net/repository/maven-public</url>
</repository>
FoxCore:
<dependency>
<groupId>net.foxdenstudio.sponge</groupId>
<artifactId>foxcore</artifactId>
<version>VERSION</version>
<scope>compile</scope>
</dependency>
FoxGuard:
<dependency>
<groupId>net.foxdenstudio.sponge</groupId>
<artifactId>foxguard</artifactId>
<version>VERSION</version>
<scope>compile</scope>
</dependency>
Gradle
Repository:
maven {
name 'FoxDenStudio'
url 'http://repo.foxdenstudio.net/repository/maven-public/'
}
FoxCore:
compile group: 'net.foxdenstudio.sponge', name: 'foxcore', version: 'VERSION'
FoxGuard:
compile group: 'net.foxdenstudio.sponge', name: 'foxguard', version: 'VERSION'
If you want to add interoperability with any of my plugins, I will happily make a special API just for you that I will never rename or break. Just contact me and tell me what you need, and I’ll add it for you.
These are the plugins that currently use FoxGuard for added functionality:
Bug Reports and Suggestions
If you want to report a bug or make a suggestion, go to https://github.com/FoxDenStudio/FoxGuard-Sponge/issues and make a new issue there. Try to be descriptive, as I DO have to read and understand it for it to be considered. Use common sense, and be detailed. The only exeption to this rule is if you have somehow talked to me directly and I’ve told you to make a new issue. In that case I already know the details and the issue serves as a reminder.
PLEASE DO NOT ASK QUESTIONS THROUGH GITHUB ISSUES!!! I WILL NOT ANSWER QUESTIONS THERE!!! IT IS ANNOYING FOR ME AND WASTES BOTH YOUR TIME AND MY TIME. Instead ask any questions in this thread or on IRC (info above).
Donations
Working on the plugin takes a lot of time, and unfortunately, I’m a poor college student.
If you feel like you have some money to spare, throwing it my way gives me a lot of motivation to get things done. Even small amounts help. You’d be surprised how much code a cup of coffee produces.
Paypal-me: PayPal.Me
I’ll have an actual donation button at some point.