This is a fairly large change with a fairly small (but long requested) new feature list.
Before we go any further..
BACK UP YOUR DOMAIN FOLDER BEFORE UPDATING I will provide whatever support I can via Discord if you're having issues, but if you don't back up the folder, I may be limited in what I can do to help.
New Features
MySQL support has been added
To use this, you MUST add the following to your config, and then alter to suit your requirements
Code (YAML):
# If you wish to save to MySQL database instead of file, make sure to fill this section in with the appropriate # information, and set use = true # If you have use set to true, your MySQL database MUST be accessible or Domain will error out # If you do not wish to use MySQL, leave use = false, and the Domain data will be saved in your data folder mysql: # If true, Bazaar will attempt to use the database use: false
# Your hostname/IP address host: "your_host" # Your MySQL port (default is 3306) port: 3306
# Your database name, defaults to "ibex" but can be any existing database # Database MUST exist before running database: "ibex" # Your username and password must have permission to your database username: "your_username" password: "your_password"
If your database is not accessible, Domain WILL error out.
With MySQL comes two new commands which can be run from console only.
/domain transfer_to_mysql
This will take all the currently loaded fields and save them to the database (assuming it is accessible), it does NOT remove the files from the Data folder.
After you run it, you should be able to stop the server, change the config to use mysql, and it will read from database on next startup.
NOTE: THIS WILL DELETE ANY ENTRIES FROM THE ibex_plugin TABLE IN THE DATABASE FOR DOMAIN BEFORE SAVING THE FIELDS
/domain transfer_to_file
This command does the opposite of above, it reads all the currently loaded fields and saves them to file. It does NOT remove the entries from the database.
NOTE: THIS WILL DELETE ANY DATA FILES FROM THE Data FOLDER BEFORE SAVING THE FIELDS
This command however could be useful for backing up the data from the database, or if you decide to stop using MySQL.
bStats Added
bStats collects anonymous usage data - and you can turn it off using the bStats config file, or, you can add the following to the Domain config.yml
Code (YAML):
allow_bstats: false
This will default to allowing bStats.
Other Updates
The package has changed from work.torp.domain to com.ibexmc.domain - If you are using the API, please make appropriate changes
I have stripped out most of the generic functions from Domain, including things like localization, sending messages, various string and number functions, inventory/item functions, etc.
These have all been moved to an internal library which is shared across all Ibex plugins moving forward.
This update necessitated MAJOR internal changes, and while I do not anticipate any issues, please let me know if something seems to work a little differently.
Domain Blueprints - The blueprint was the internal configuration for your blocks (griefprevent, city, etc.) - This has been retired and replaced with a LegacyFileConfig - note the use of the word Legacy here - as of this update, the old format is considered legacy - a new version will be coming in a future update. You won't need to worry about it as Domain will do all the conversions for you, but if you're hooking into Domain, you may see changes.
This has been one that has been requested a fair bit over the past few years, and finally added now. You can display the fields on your Dynmap with a custom icon and name, as well as field type specific overrides for color and opacity
This requires a new flag
SHOW_ON_DYNMAP
And will require some config.yml changes as outlined below (copy and paste into your existing file)
Code (YAML):
# Dynmap Support # enabled: true/false - If true, dynmap support is enabled if it exists on the server # line_hex_color: This is the default color of the outline for domain fields # fill_hex_color: This is the default color of the fill for domain fields # fill_opacity: This is the opacity of the fill for domain fields, from 0.0 to 1.0 with higher being more opaque # To get hex color codes, you can use a site such as https://htmlcolorcodes.com/ # show_marker: true/false - If true, will show a marker with the field name # marker_icon: The icon to use for the field - the marker will always show at the block location # To get valid icon names, see the Dynmap Wiki - https://github.com/webbukkit/dynmap/wiki/Using-Markers dynmap:
enabled: true
line_hex_color: 8B589C
fill_hex_color: F7E6FC
fill_opacity: 0.5
show_marker: true
marker_icon: default
The notes in the config file should explain it, but briefly, this is the default for all fields that have the SHOW_ON_DYNMAP flag - the line hex color is the outline color, fill hex color is the shading color, and fill opacity is how see-through or not shading is. Show marker will display an icon where the block itself is, and will include the name of the field when hovered over (see the image above), and the marker icon is the icon being used, the full list of which can be pulled from the Dynmap Wiki
You can also add the following to each block yml file if you want to, but you do not HAVE to - if you don't, the defaults from config.yml will be used
Code (YAML):
# Dynmap Support # These values are overrides from the entries in config.yml - If they are not included, the defaults will be used # To disable the field from showing on Dynmap, remove the SHOW_ON_DYNMAP flag # line_hex_color: This is the default color of the outline for domain fields # fill_hex_color: This is the default color of the fill for domain fields # fill_opacity: This is the opacity of the fill for domain fields, from 0.0 to 1.0 with higher being more opaque # To get hex color codes, you can use a site such as https://htmlcolorcodes.com/ # show_marker: true/false - If true, will show a marker with the field name # marker_icon: The icon to use for the field - the marker will always show at the block location # To get valid icon names, see the Dynmap Wiki - https://github.com/webbukkit/dynmap/wiki/Using-Markers dynmap:
line_hex_color: "FF9730" fill_hex_color: "FCD1A5" fill_opacity: 0.4
show_marker: true
marker_icon: "house"
As stated above, these are overrides - so if they exist, they will be used, if you leave them out, the defaults will be used. Don't forget to set the SHOW_ON_DYNMAP flag on each block type you want listed
Other Changes
Player interaction lookups have been cleaned up and no longer rely on version specific functions - this should make things a little more efficient
Cleaned up a bug where Vault wasn't installed was throwing a null error in console
As always - any issues or concerns, please reach out on Discord
Added 1.20 support New flag:
PREVENT_INTERACT_BOOKSHELF_BY_NONALLOWED - Prevents you placing books into, or removing books from a bookshelf
Added support for Bamboo and Cherry doors/signs/pressure plates etc.
Added support for Camel and Sniffer spawn eggs
Removed warning when a flag is not included in flags.yml (default values are used)
Bug fixes:
- Fixed support for CRIMSON and WARPED doors that were not working
Add the following to flags.yml
Code (YAML):
PREVENT_INTERACT_BOOKSHELF_BY_NONALLOWED:
name: "&bPrevent Bookshelf Access" lore: "&fPrevents a Non-Allowed player from|&faccessing bookshelves" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
This update addresses the deprecation of the TNTPrimed event in Paper - for versions 1.19+, Domain will use the Bukkit version of this event regardless. This deprecated (but working) event was causing warnings to appear in console
This update is the start of a larger shift towards Domain 2.0, with a large amount of code starting to be deprecated and replaced with new. In coming versions, this WILL impact the API, but, not today!
This update adds:
3 new flags
PlaceholderAPI support
Particle visualizations
Default naming for new fields
Bug fixes
New Flags
We have 3 new flags:
PREVENT_SPAWN_WARDEN - Which is pretty self explanatory - it prevents a warden being spawned in the field
ANIMAL_MAGNET and MONSTER_MAGNET
The magnet flags pull either animals or monsters towards a fixed point - This will help greatly with things like mob grinders - instead of using complex water traps, you can instead drop a magnet location to where your pit-drop or other is, or even just to gather them together to make it easier to kill them.
To use it, add either flag as needed to the field, and then right click the block with an open hand, go to Edit Field > Admin Commands > Magnet
This will give you a magnet wand
Left click the spot you want the mobs drawn to with the wand, then left click the Domain block with the wand to set
The mobs will be drawn to that spot continually (they MAY try and wander off, but they won't get far)
This can be especially powerful if you add the magnet flags to a Spawner block
You can now use %domain_total_blocks% and %domain_current_field% - these will update every x number of seconds as laid out in the config (more on that at the end of the update)
Particle Visualizations
Some people don't like the glass visualizations, some do. You can now have the best of both worlds and choose
This can be set in the block config (changes listed at end of update)
Default Naming for new fields
Previously, fields were automatically created using <player name>'s <type> field
You can now set a default name in the block config
Instructions VERY IMPORTANT!
These updates will require additional changes to your config files - none will be mandatory, but you're MUCH MUCH better off getting the changes in now
Add the following to flags.yml
Code (YAML):
PREVENT_SPAWN_WARDEN:
name: "&bPrevent Warden Spawning" lore: "&fPrevents Warden from spawning in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
ANIMAL_MAGNET:
name: "&dAnimal Magnet" lore: "&fSets a point in the field as an animal magnet" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
MONSTER_MAGNET:
name: "&dMonster Magnet" lore: "&fSets a point in the field as a monster magnet" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
Add the following to gui.yml
Code (YAML):
magnet:
material: IRON_INGOT
name: "&bMagnet" lore: "&fGives a magnet wand to set the|&fmagnet location of the field" enabled: true
magnet_disabled:
material: BARRIER
name: "&4Magnet disabled - Flag not set" lore: "&fYou must set a Magnet flag|&fin order to access the|&fmagnet to command" enabled: true
Add the following to lang.yml
Code (YAML):
saved_magnet_domainblock: "&aSUCCESS &f- Your magnet location has been set to <%location%>" magnet_set_cancel: "&4Magnet location setting has been cancelled" magnet_set_notset: "&4Magnet location has not been set. To cancel, right click the Domain Block with an open hand" magnet_set_ok: "&4Magnet location set. Left click the Domain Block with the wand to save" magnet_wand_given: "&aYou have been given a magnet wand. Left click the block you wish to set as the magnet. When selected, left click the Domain block with the wand to set the location" magnet_wand_lore: "&f&lInstructions|&fLeft click the location you wish to set as magnet|&fthen left click the Domain Block to save|&fRight click the Domain Block with an empty hand to cancel" magnet_wand_name: "&bDomain Magnet Wand" magnet_wand_not_given: "&cFAILED &f- Your main hand must be empty"
Add the following to config.yml
Code (YAML):
# PlaceholderAPI update time is the number of seconds that elapse between checking # for updated values. For example, if set to 10, every 10 seconds, every online # player will have their values updated for PlaceholderAPI enabled plugins to pull # from. # Default is 10 (seconds), if you don't use PlaceholderAPI, set to -1 or remove. papi_update_time: 10
# This is the number of blocks in which a magnet will pull from # This is the RADIUS - it will pull these blocks in all directions magnet_range: 5
Add the following to each block yml file (example. city.yml) be sure to set the visualization type you want.
Code (YAML):
# Visualization type. Only the following options will work, if none of these are selected, CUBE is chosen as default # CUBE, RING, CORNERS, PARTICLE_CUBE, PARTICLE_RING visualization: PARTICLE_CUBE
# Default name for new field. You can use & color codes, and can (but do not have to) use the following placeholders: # <%player%> - Player name of who created the field # <%type%> - The field type (from display_name above) default_new_name: "<%player%>'s <%type%> field"
In each file, you can now remove
visualize_corners
visualize_ring
Max volume size could return as 0 in some cases, this prevented proper resizing of field
Debug mode went full on Hotel California and you could check out any time you like, but you can never leave. This has been addressed and turning off debug mode now turns off debug mode.
Vouchers have been in the pipeline for a while, and are intended as a way to improve a Domain field without having to replace the entire block.
Here is a brief Vouchers FAQ
What are they? Vouchers are a piece of paper that you can right click a Domain block with, and the properties of the voucher are applied to the Domain block
What kind of properties? Vouchers can currently do two things
They can add additional space to a field - Each field has a maximum volume that your user can resize - with a voucher, you can apply additional space, either as a reward, or as a purchase the player makes.
Additional flags can be applied to a field - Each field is set up with a base set of flags, such as PREVENT_BREAK etc. You can apply additional flags with a voucher, so for example, if you wanted to give the a no-pvp option, you could give them the base field, and provide them an additional, voucher for PREVENT_PVP. You can apply multiple flags to a single voucher.
What if they already have that flag?
If the field already has the flag, the voucher is applied, but that flag will not be impacted
What if they break the field? Vouchers are set as either single use, or not single use. If single use, they can be applied once only and if the field is broken, they lose the voucher. If not single use, when the field is broken, the voucher is put in their inventory (or dropped on the ground if the inventory is full)
How do you set them up? Vouchers are very simple to set up, you simply need to create a yml in the Vouchers folder for it
Example:
Code (YAML):
# Name can use color, spaces, special characters. It is what the voucher item will be called # * REQUIRED FIELD name: "&fMiners haste"
# Lore is displayed when hovering over the voucher. Use | for a new line, and you can use colors and special characters lore: "&fA sample voucher that provides|&fminers haste in the field"
# Volume is how many blocks should be ADDED to the field when applied. If your field currently has a volume of 5000, setting to 1000 would give a total of 6000 volume: 0
# A list of flags that will be available on the block (defaulted to turned off, but available to the field owner to turn on) # If the field already has the flag, no changes are applied flags: - EFFECT_MINERS_HASTE_ALLOWED
# If true, when the block is removed, the voucher is destroyed. If false, removing the block will return the voucher to the user single_use: true
How do I get a voucher? As an admin, you can type
/domain voucher <voucher key>
Where <voucher key> is the name of the yml file without the .yml (for example, if you have minershaste.yml, the key is minershaste)
Can I remove a voucher without destroying the block? Not currently - that is planned for the future
Can I add multiple vouchers of the same type? No - This is deliberate in order to prevent out of control sized fields. However, depending on interest, I may add a max uses field
Do I HAVE to use vouchers? No - If you don't want to use them, just don't provide them to your players!
Can I as the admin disable a voucher? To remove a voucher from EVERYONE, simply remove the voucher from your Vouchers folder, when you reload, the benefits of the voucher will not be applied. However, any resize the player has done will NOT roll back, but they will be limited if they resize again.
Falling out of the world
An option has been added to the config which, if enabled, will prevent players from falling out of the world if they go below bedrock (not that they SHOULD be going beneath bedrock!) - This is a GLOBAL option, and is not applied by Domain field. If they drop outside the upper/lower height limits for the world, they will be teleported. You can specify where they teleport to in the config, if that is not a safe location, they will teleport to their bed, and if that is not available, will teleport to world spawn. The player will receive feather falling and slowness for 3 seconds in order to offset any potential downwards velocity that might make them go splat.
To enable this feature, add the following to your config.yml (with your own void_location)
Code (YAML):
# If true, when a player goes outside the upper and minimum heights of the world, they will be teleported # away. Either to void_location (below) if it is set, or their bed spawn if it exists, otherwise to # to the world spawn void_check: true
# Location to teleport the player to if they leave the upper/lower bounds of the world # MUST be in the format "WORLDNAME:X:Y:Z" for example: "world:-83:100:77" void_location: "world:-83:90:77"
Additional 1.19 Support
Added support for Mangrove doors, gates, trapdoors, buttons, and pressure plates
Added support for Tadpole buckets
Cleanup
- Removed deprecated command functions
- Removed deprecated API calls from 1.9.11
- Removed deprecated Vault functions
- Removed unused functions
- Corrected documentation of API functions
Finally..
If you use lang.yml to translate Domain, please add the following in the language of your choice
Code (YAML):
voucher_saved: "&2SUCCESS &f- Your voucher has been applied" voucher_invalid: "&4ERROR &f- Invalid voucher key" voucher_exists: "&4Sorry, this voucher is already applied" voucher_error: "&4Sorry, this voucher cannot be applied" voucher_singleuse: "&4You have not received your <%voucher%> back as it was single-use only" command_voucher_get_usage: "/domain voucher &b<key> &4- Gets the voucher with key specified"
With this change, PREVENT_BREAK no longer protects harvesting crops (use PREVENT_CROP_HARVEST_BY_NONALLOWED) and PREVENT_BUILD will no longer prevent crops from being planted (use PREVENT_CROP_PLANTING_BY_NONALLOWED)
Bug fixes include, but are not limited to console log spamming when working with permissions.
Added a new flag
PREVENT_CROP_HARVEST_BY_NONALLOWED
This flag prevents players who are not allowed in the field from harvesting crops. This differs from PREVENT_CROP_DAMAGE_BY_NONALLOWED which prevents them from stomping on the crops.
If you're updating, please add the following to your flags.yml
Code (YAML):
PREVENT_CROP_HARVEST_BY_NONALLOWED
crop_break_refused: "&4You cannot harvest crops in this field" PREVENT_CROP_HARVEST_BY_NONALLOWED:
name: "&bPrevent Crop Harvesting" lore: "&fPrevents Non-Allowed Players from harvesting crops" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
Domain Open Opens the current field the player is standing in if they are the owner
/domain open
Domain Resize Gives the player the resize wand for the field they are standing in if they are the owner (also puts the field into resize mode)
/domain resize
Domain Expand Expands the current field in the direction specified by the number of blocks requested Direction can be: north, east, south, west, up, down (or alternately: n, e, s, w, u, d) Blocks is the number of blocks in that direction the field will expand to, keeping in mind that the field is a cuboid, so it will expand for full width/height Note: Standard resize rules apply (block in field, max volume etc.)
/domain expand <direction> <blocks>
Domain Shrink Shrinks the current field in the direction specified by the number of blocks requested Direction can be: north, east, south, west, up, down (or alternately: n, e, s, w, u, d) Blocks is the number of blocks in that direction the field will shrink to, keeping in mind that the field is a cuboid, so it will shrink for full width/height Note: Standard resize rules apply (block in field, max volume etc.)
/domain shrink <direction> <blocks>
Bug Fixes
Unexpected error would occur in rare cases where the player was unable to open a domain block they own
Removed unnecessary looping within block checks
Minor code cleanup
Update Language File Add the following to lang.yml
Code (YAML):
usage_expand: "Usage: /domain expand &b <direction> <blocks>&r\nDirection is: north/east/south/west/up/down" usage_shrink: "Usage: /domain shrink &b <direction> <blocks>&r\nDirection is: north/east/south/west/up/down" no_field: "&4No Domain field found" unable_give_resize_wand: "&4Sorry, you must have an open inventory slot to get the resize wand"
This update allows Domain to play nicely with WorldGuard, in that when you try to place a Domain block in a WorldGuard protected region, it will not create the field even though the block is prevented.
Domain is, and will continue to be non-reliant on WorldGuard, however, this change has been requested by those who use both (remember - you can use Domain to protect your spawn areas too!)
This update adds a new option in the block configuration
Code (YAML):
snap_to_chunk: true
If true, snap to chunk will default the field to the dimensions of the chunk it is placed in. It is HIGHLY recommended that you set visualize_ring = true and visualize_corners = false in order to avoid lag displaying the field.
When snap to chunk is true, the default_radius, default_height_up, default_height_down, and ignore_y_axis will be disregarded.
Note that if you wish to retain this ONLY to the chunk it is placed in, also set prevent_resize = true.
This update addresses a bug where when crafting a Domain block, you may receive an error message stating that you can't craft WITH a domain block.
I've also added an additional command
/domain cancel
This command can be called while resizing a field, and will cancel the resize, remove the visualization and remove any resize wands you happen to have in your inventory.
We have a couple of new entries for the lang.yml file
Code (YAML):
command_resize_cancel: "&2Resize has been cancelled" command_resize_cancel_na: "&4You are not currently resizing a field"
The good news.. Domain should now work on 1.18 - I have not added any new flags for 1.18 at this time, these will be coming soon, and preferably by request via Discord.
The bad news.. Domain no longer supports 1.13 as of version 1.9.2 - Any critical bug fixes for 1.13 will be distributed via Discord upon request. I hate to remove support, but I've moved the Domain specific data from NBT tags to Persistent Data Containers, which has required me to bump it to 1.14.
Versions of Domain prior to 1.9.2 will still work on Minecraft 1.13, and I will continue support for a limited time. If you require a 1.13 working version of Domain, please contact me via Discord.
CAUTION: 1.9.0 REQUIRES Java 16. Do not update to 1.9.0 unless you have Java 16 installed. 1.8.8 is included in the zip file with this release which does not support 1.17 and does not require Java 16. This is the final non-Java 16 version that will be released, other than bug fixes - These will remain in the 1.8.* version numbers and will be available via Discord and will NOT be uploaded to spigot.org
Version 1.8.8 -
This update contains bug fixes which prevented the 'ring' visualization working, as well as turning field visualization off on new fields.
Version 1.9.0 -
This update marks Domain as 1.17 compatible
Also contains the fixes listed in 1.8.8
This update brings Idle kicking, the ability to kick players from the field, a new command to see your own fields, and the potential to teleport back to your own fields. It also includes an assortment of bug fixes.
Idle Kicking
If the config is set up to allow idle kicking,then having the
KICK_OUT_IDLE_NONALLOWED flag in the field will kick non-allowed players from the field.
You can force it to kick directly to spawn by setting
field_kick_direct_to_spawn to true in the config, if it is not set to true, then it will find the nearest corner of the field to the player and attempt to teleport them somewhere safe within a range of that corner that is NOT inside the field.
If for whatever reason it can't find a safe teleport location, it will try to send them to their last bed spawn, if that is not safe, it will revert to spawn.
In order to prevent players abusing this, the
new_field_kick_cooldown config option is available. This will prevent kicks if the field is less than that many minutes old (we don't want players placing a block down so they can bounce an idle player around)
To disable idle kicking completely, set idle_cycle_seconds to 0 in the config.
Who else is in field
This button in your Domain block previously displayed who was in the field and where. It has been expanded to show allowed players in green, not-allowed players in red. Location and distance from block is displayed in a hover-over, and if enabled in the block (allow_who_in_kick: true) - you can kick not-allowed players from the field. It uses the same rules as idle kicking above.
New Commands
/domain back
This command will teleport a player back to the field they were idle kicked from. It requires the domain.idle.back permission. It only works if they have been idle kicked, and only if they have not moved from where they were kicked to.
/domain me
This will display all the fields belonging to the player, and if allow_self_teleport_to_field is set to true in the config, will allow the player to teleport to the nearest safe location by the Domain Block
Bug Fixes
File generation errors on startup have been removed (‘Unable to create flags.yml as it already exists’ etc.)
When a block has the same base type and name, it will no longer default to the wrong block, instead it will use the NBT tag to determine type
Null error when players break blocks in an admin block area has been corrected
Other not player facing fixes
Finally..
As always - if you have any issues with Domain after this update, please reach out on Discord or via message in Spigot. Discord WILL be faster - I don't check messages here every day.
Please note that this will be the last feature update of Domain until after the 1.17 Spigot release. Bug fixes may be released still as needed.
Two new commands that will remain undocumented and unsupported. They toggle whether the events run or not. You must either have domain.admin permission or run from console
Toggle Creature Spawn Event
/domain spawnevent
Toggle Player Move Event
/domain playermove
Bug Fixes
Data files with worlds that no longer exist will NOT load and will generate an error on startup
The cow.yml file was not being included in the jar file which caused issues when the config.yml file did not exist. The missing file is now included, and additional checks are put in place to generate the default resource files as needed.
Update Language File Add the following to lang.yml
Code (YAML):
spawn_event_disabled: "Spawn event is disabled" spawn_event_enabled: "Spawn event is enabled" move_event_disabled: "Player Move event is disabled" move_event_enabled: "Player Move event is enabled"
It seems I've missed a couple of fairly obvious flags for a while now
PREVENT_ENDERMAN_AGGRESSION
This will prevent an enderman becoming hostile towards a player when they look at it (if the player is in the field, the enderman does NOT have to be in the same field at the time)
PREVENT_ENDERMAN_GRIEF
This will cancel the event if it is an enderman is changing the state of a block (picking it up)
Make the following additions to your flags.yml file:
Code (YAML):
PREVENT_ENDERMAN_AGGRESSION:
name: "&bPrevent Enderman Aggression" lore: "&fPrevents an enderman from becoming|&fhostile when a player looks at them" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ENDERMAN_GRIEF:
name: "&bPrevent Enderman Grief" lore: "&fPrevents an enderman from picking|&fup a block in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
Bug Fixes
Missing entries in flags.yml was causing an error on startup, replaced with a Warning message
No additional flags in a Domain field would cause a "not a config section" error on startup
Expiration checking was using not getting the time from the OfflinePlayer correctly (seems to be only an issue when using Spigot rather than Paper, but resolved)
Custom flag.yml files were not loading materials in correctly and were reverting to lime/red stained glass
This is a massive update for Domain - roughly 70% of the code has been rewritten from scratch, including the core DomainBlock classes, visualization, reading/writing from the yml files, and removal of a lot of duplicated code and classes.
Due to the extent of the change, please note the following:
BACKUP YOUR DOMAIN FOLDER AND JAR FILE NOW
If you have any issues with 1.8.0 please revert back to your backup. I may not be able to support issues caused by upgrading if there is not a backup available.
2) Massive amounts of back-end changes and bug fixes. You should see an increase in performance and things should generally run a lot nicer
3) Commands have been rewritten and some have been removed,
refer to documentation. In particular, /domain locate has been removed and is replaced with an expanded /domain search as it was already doing the same work.
4) Some 'staff' commands will not work and will not show in tab completions unless you are in domain bypass mode
5) Renting was rewritten from the ground up. You can read more about the renting process
here but the long and short of it is that any field with the config set to cost and days > 0 are rentable, there is a new gui in the menu where players can set the rent cost/days. Rent signs no longer need any interaction and will self-populate. Rented fields have their own name, welcome/farewell message and allowed lists. When the rent period is up, these get removed and it reverts the name/messages/allowed list back to what it was before renting.
6) Spawner Fields! - These are special types of Domain fields that can be used to spawn mobs, much like using a Mob spawner. You can read all about Spawner fields
here - but they're really cool and have some great advantages over using a spawner block
7) Members Only fields have been created, this is not documented or easily accessible in game, but, you can create a field where only those with a particular permission can enter. To apply, simply add:
Code (YAML):
members_only_perm: YOUR_PERMISSION_HERE
It works like a PREVENT_ACCESS_TO_NONALLOWED but is permission based.
8) When converting a field to an Admin Block, then owner field is now removed completely. You can now also convert an admin block back to a player block
Support Changes
It is worth mentioning changes to the support system.
Due to a number of charge-backs and paypal disputes, I've had the Discord modified to only show the #domain channel for registered buyers. Everyone can still talk in #general and can request help there, but will need to present their spigot username in order to receive any help from the development team. Trial copies are still available and will be supported as previously.
Changes to Domain files
Add or modify the following entries to the respective files:
Code (YAML):
admin_delete_block_success: "&aSUCCESS &f- Field has been &4removed" admin_disable_block_success: "&aSUCCESS &f- Field has been &4disabled" allow_player_alert_added: "&cYou have been given access to the <%name%> field by <%player%>" break_item_frame: "&cYou cannot break that here" clan_add_already_in: "&cUnable to add <%clan%> to this field, as it is already allowed" clan_remove_not_in: "&cUnable to remove <%clan%> from this field, it is not currently allowed" command_adminblock_back_success: "&2SUCCESS - Block has been converted from an Admin block" disallow_player_alert_removed: "&cYou have been removed from access to the <%name%> field by <%player%>" disallow_player_not_found: "&4Unable to disallow player. Player not found" disallow_player_not_found1: "&4Player disallow cancelled. You are now returned to chat." find_title: "<%player%> Owned Fields" gui_rent_title: "Rent" members_only: "&cSorry, this area is for members only" merge_error: "&4Unexpected error - Unable to merge field" remove_player_fail_not_allowed: "Unable to remove player, they are not allowed to the field" remove_wand: "&cWand not in use, removing it from inventory" rent_confirm: "Are you sure you want to rent this field? It costs &b$<%cost%> &rfor &b<%days%>&r days" rent_confirm_info: "&4Clicking YES will rent the field and debit your funds" rent_confirm_yes: " &f[&2YES - Rent the field&f]" rent_info_available: "Not currently rented out" rent_info_cost: "Cost $<%cost%> for <%days%> days" rent_info_na: "&4Field is not currently set as rentable" rent_info_rented: "Currently rented to <%renter%> until <%expires%>" rent_info_title: "\n&b************************************************\n&fRent Info\n&b************************************************" rent_na: "&4N/A" rent_own: "&4You cannot rent your own field" rent_set_cost: "Rent for this <%blocktype%> field has been set to $<%cost%>" rent_set_cost_info: "&eEnter the new rent cost in the chat. It must be a valid number and will not be visible to other players. Right click the Domain Block to cancel" rent_set_cost_zero: "This <%blocktype%> field is no longer available to rent. Set the cost to at least $1 to make available" rent_set_days: "Number of days in the rent period for this <%blocktype%> field has been set to <%days%>" rent_set_days_info: "&eEnter the new rent days in the chat. It must be a valid number and will not be visible to other players. Right click the Domain Block to cancel" rent_set_days_zero: "This <%blocktype%> field is no longer available to rent. Set the number of days in the rent period to at least 1 to make available" rent_unexpected_error: "Unable to rent field - Unexpected Error, please contact a member of staff" resize_wand_lore: "&f&lInstructions|&fLeft click corner 1 of desired field|&fRight click corner 2 of desired field|&fRight click domain block with wand to save" resize_wand_name: "&bDomain Resize Wand" search_hover_text: "Owner: <%owner%>\nType: <%blocktype%>\nLocation: <%location%>" sign_cost: "&lCost: &b&l$<%cost%>" sign_days: "&lDays: &b&l<%days%>" sign_rent: "&0&l[&d&lRent&0&l]" sign_rented: "&0&l[&b&lRented&0&l]" teleport_set_cancel: "&4Teleport location setting has been cancelled" teleport_set_notset: "&4Teleport location has not been set. To cancel, right click the Domain Block with an open hand" teleport_set_ok: "&4Teleport location set. Left click the Domain Block with the wand to save" teleport_set_unsafe: "&4Unable to set this location, it is unsafe for teleporting to" teleport_unsafe: "&4Unable to teleport. Location is unsafe" teleport_wand_lore: "&f&lInstructions|&fLeft click the location you wish to teleport to|&fthen left click the Domain Block to save|&fRight click the Domain Block with an empty hand to cancel" teleport_wand_name: "&bDomain Teleport Wand" usage_allow: "Usage: /domain allow &b<player name>&r" usage_clan: "Usage: /domain clan &ballow&f|&bdisallow &6<clan tag>" usage_disallow: "Usage: /domain disallow &b<player name>&r" usage_display: "Usage: /domain display &bclear&f|&bcorners&f|&bcube&f|&bring" usage_get: "Usage: /domain get &6<block type>" usage_give: "/domain give &6<player name> &6<block name>" usage_search: "Usage: /domain search &bowner&f|&btype&f|&bworld &6<search term>&r" version: "<%name%> - Version <%ver%>"
Code (YAML):
adminblock_set:
material: PLAYER_HEAD
name: "&4Admin Block" lore: "&fConvert back to a player block" enabled: true
flag_add:
material: LIME_CONCRETE
name: "&aAdd Flag" lore: "&fAdds a new flag to the field" rent_info:
material: BOOK
name: "&bRent Info" lore: "&fDisplays rent information for this field" rent_cost:
material: GOLD_INGOT
name: "&bRent Cost" lore: "&fSets the rent cost" rent_days:
material: CLOCK
name: "&bRent Days" lore: "&fSets the rent days"
Code (YAML):
SPAWN:
name: "&dMob Spawning" lore: "&fEnables mob spawning in the field" icon_on: SPAWNER
icon_off: BARRIER
locked: false
MEMBERS_ONLY:
name: "&bMembers Only Area" lore: "&fPrevents access to players without a set permission" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BREAK_PAINTING_BY_NONALLOWED:
name: "&bPrevent Break Painting" lore: "&fPrevents paintings being broken by Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BREAK_ITEM_FRAME_BY_NONALLOWED:
name: "&bPrevent Break Item Frame" lore: "&fPrevents item frames being broken by Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
If you set the field_display_secs value in your block config to -1, the field will NOT display when a new block is placed, but will default to 30 seconds when a resize is clicked.
Bug Fixes
Clicking a disabled gui function could still allow it to work even when it shows as disabled. For example, clicking who is in field, while disabled would still show who was in the field.
Not really a bug, but unintended lack of usage that is corrected. Using /domain allow <player name> only worked for the players Name, but not the display name (colored nicks etc.) - if the player is online, you can now use either to add them to the field.
API Access
The getAPI() call now exposes access to the new functions which replace the deprecated APIResponse calls.
Currently, if you have expire_blocks: true in your config file and a valid number in the block config for number of days, after the owner has been offline for that number of days, the field is deactivated, leaving a plain block. If the player rejoins, on the next reload, the field should mark as active again. However, with many players never coming back, there is the potential on busy servers for a large number of expired fields being read on startup.
As a player (with domain.admin permission) or console, you can now use:
/domain purge_list
This will output a list of fields that are not currently active into the console, like so:
You can then manually remove them if you feel you want to.
From the console however, you can use
/domain purge
This will automatically delete the files without further confirmation. This can ONLY be run from console, and CAN NOT BE UNDONE! It'll look something like this, so you'll have a log of what was removed.
I would very much recommend backing up your Domain folder before running either command. (Actually, I'd recommend pushing it out to a zip file or similar about once a week anyway)
Once the files are deleted, there is no going back, so if a player comes back 2 minutes after you purge.. their field will be gone.
Bug Fixes
While using a helpful servers Domain folder for my purge testing, I came across several errors during the load process where the world the field was created in doesn't exist. In this case, they have a world called spawn, and my test server did not, which resulted in numerous null errors. These have all been tightened up, if you delete a world and you had a field there, you'll now receive an error that looks like this, instead of a random null error
Locked_to was sometimes throwing an error as well, this was due to an invalid type cast, that has been corrected.
Finally, with debug mode on, rent_until was throwing an error if the field was not rentable, if it isn't rentable, it just won't add the fields now and the debug message is gone.
Upgrade Instructions:
Backup your Domain jar and your Domain folder (seriously, do it)
Replace your jar with the new copy, and add the following to the lang.yml file
Code (YAML):
command_purge_none: "&4There are no fields to purge" command_purge_list: "&4List of fields that can be purged has been sent to console" command_console_only: "&4Command can only be called from the console"
This update addresses an issue with adding players.
If you select to add a player to the field, and opt to type their name in, there was a chance you could be stuck in the add player option until you right clicked a player or typed in the valid name of a player, if neither happened, you could be locked out of chat.
Now when entering in an add player option, if you enter the name incorrectly, the add player entry will be canceled. You can then try again by going back into the Domain block.
Update instructions: Enter the Domain_1_7_4.jar
Add the following to lang.yml
Code (YAML):
allow_player_not_found1: "&4Player add cancelled. You are now returned to chat."
This permission is for staff that you don't want to have domain.admin permissions - currently it is used only for the /domain locate command, but will be expanded in future updates to allow lesser staff access
/domain locate <player name> now requires domain.locate and domain.admin OR domain.staff
The [TP] [Delete] [Disable] buttons will only be accessible to those with domain.admin
Other changes: Several translation issues from lang.yml have been resolved, If you translate Domain, please add the following to your lang.yml if you do not already have them in there.
Code (YAML):
interact_nonallowed_bypass: "Access to <%blocktype%> at <%location%> allowed due to bypass mode" teleport_wand_given: "&aYou have been given a teleport wand. Left click the block you wish to teleport to with the wand. When selected, left click the Domain block with the wand to set the location" teleport_wand_not_given: "&cFAILED &f- Your main hand must be empty" gui_command_onenter_enter: "&eEnter your command in the chat - The command will not be displayed to any other player but will be saved to the field. Do not include / in the command. Example: &5mvtp @p world_nether" saved_tpto_domainblock: "&aSUCCESS &f- Your teleport location has been set to <%location%>" cancel_tpto_domainblock: "&cCANCELLED &f- You have cancelled setting the Teleport location. Any existing teleport location has been cleared" invalid_tpto_domainblock: "&cERROR &f- You cannot set a Domain block as a teleport location" invalid_wand_tpto_domainblock: "&cInvalid Wand &f- You don't have a Domain block opened for setting the teleport location" sign_rented: "Rented" sign_rent: "Rent" sign_cost: "Cost: $" sign_days: "Days: "
This update addresses the ability for players to abuse any server lag to glitch through doors/gates/trapdoors by spamming right clicks.
When being refused interaction, the player will be teleported back to the location where they began the interaction immediately if the location changes prior to end of processing.
This update has been a long time coming, in that I've implemented a big back-end change that I've been waiting to do for a while (which may not make a huge amount of difference to you guys, but will make coding a lot easier).
The other BIG change is that Domain is now based on Paper rather than spigot jar - Spigot users will still be able to use it of course, and the bulk of all future changes will remain Spigot safe, however I'll be using some Paper features for some flags.
New Flags:
PREVENT_TNT_PRIMING
[PAPER ONLY] This flag prevents TNT from being primed at all, no matter what the source of the priming is. You can set the TNT on fire, you can shoot fire arrows at it, or you can even explode creepers next to it and it will not explode. As this flag is Paper supported only, setting this flag on your field will not do anything if you're running Spigot.
PREVENT_HEAL_ZOMBIE_VILLAGER_BY_NONALLOWED
This flag prevents non-allowed players in the field from converting zombie villagers into villagers.
Fixes:
PREVENT_INTERACT_SWEET_BERRY_BUSH_BY_NONALLOWED should now work to stop players from interacting with sweet berry bushes in fields they don't belong to
Add new flag screen should now work past page 4 (it had been replacing page 5 entries with page 6 entries)
Custom icons in flags.yml should now display properly in the flags page
Armor stands no longer get destroyed by explosions when you're preventing explosion damage
Crimson trapdoors are now included in PREVENT_INTERACT
Players can no longer saddle animals by right clicking them with a lead
Placed leads are now protected from other players if you have PREVENT_LEAD_BY_NONALLOWED turned on
Add the following to flags.yml
Code (YAML):
PREVENT_HEAL_ZOMBIE_VILLAGER_BY_NONALLOWED:
name: "&bPrevent Heal Zombie Villager by Non-Allowed" lore: "&fPrevents Non-Allowed players from healing|&fzombie villagers in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_TNT_PRIMING:
name: "&bPrevent TNT Priming" lore: "&fPrevents TNT from priming to explode in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
The API has been updated significantly - no more confusing APIResponse return values, so all old api functions have been deprecated and all but 2 have been replaced. Details as below:
Below is a list of old API functions on the left, and their replacements:
APIResponse checkPlayerFlag() - You can use FlagFunctions.flagAtLocation() for same functionality, just pass player Location instead of UUID
APIResponse playerAllowedAtLocation() - You can use PlayerFunctions.playerAllowedAtLocation and pass Player rather than UUID
As always, if you have any questions, concerns, bug reports, suggestions or whatever, pop on to the Discord (link is in my signature) and give me a shout.
This update addresses some bug fixes and adds some new flags to the plugin.
Fish buckets not working in PREVENT_SPAWN_EGG fields - This has been modified so buckets and spawn eggs have been separated.
Armor stands can no longer be broken in PREVENT_BUILD fields
New Flags:
PREVENT_SPAWN_FISH_FROM_BUCKET_BY_NONALLOWED - Prevents non-allowed players from placing fish buckets down
PREVENT_PROJECTILE_PAINTING - Prevents projectiles from breaking paintings
PREVENT_MOUNT_ANIMAL_BY_NONALLOWED - Prevents players from mounting animals
PREVENT_LEAD_BY_NONALLOWED - Prevents players from placing animals on a lead, or, attaching a lead that is already on an animal onto a fence
PREVENT_SADDLE_BY_NONALLOWED - Prevents players from saddling pigs
You can add any of these flags to your existing fields by updating the block config.
If you are not using a new install, you will need to update your lang.yml file and flags.yml file
Add the following to lang.yml
Code (YAML):
armorstand_break_deny: "&4You cannot break armor stands here" armorstand_break_deny_bypass: "&4You cannot break armor stands here, but have bypass mode enabled" armorstand_place_deny: "&4You cannot place armor stands here" armorstand_place_deny_bypass: "&4You cannot place armor stands here, but have bypass mode enabled" fishbucket_place_deny: "&4You cannot place fish here" fishbucket_place_deny_bypass: "&4You cannot place fish here, but have bypass mode enabled" vehicle_break_deny: "&cYou cannot break this vehicle here" vehicle_break_deny_bypass: "&cYou should not be able to break this vehicle here, but can due to Domain Bypass mode" lead_deny: "&4You cannot use a lead here" lead_deny_bypass: "&4You cannot use a lead here, but have Domain bypass enabled" mount_animal_deny: "&4You cannot mount animals here" mount_animal_deny_bypass: "&4You cannot mount animals here, but have Domain bypass enabled" saddle_deny: "&4You cannot use a saddle here" saddle_deny_bypass: "&4You cannot use a saddle here, but have Domain bypass enabled"
Add the following to flags.yml
Code (YAML):
PREVENT_SPAWN_FISH_FROM_BUCKET_BY_NONALLOWED:
name: "&bPrevent Spawn Fish by Non-Allowed" lore: "&fPrevents fish buckets being used|&fby non-allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PROJECTILE_PAINTING:
name: "&bPrevent Projectile/Painting Interaction" lore: "&fPrevents projectiles from damaging paintings" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_MOUNT_ANIMAL_BY_NONALLOWED:
name: "&bPrevent Non-Allowed from Mounting Animals" lore: "&fPrevents Non-allowed players from mounting animals" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_LEAD_BY_NONALLOWED:
name: "&bPrevent Non-Allowed from using Leads" lore: "&fPrevents Non-allowed players from using Leads" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_SADDLE_BY_NONALLOWED:
name: "&bPrevent Saddle by Non-Allowed" lore: "&fPrevents Non-Allowed players from|&fusing a saddle" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
The most pointless thing I ever type is "no more feature updates until.." as I tend to ignore my own rules.
This update has a new flag and mechanic, plus a couple of minor bug fixes.
Bug Fixes: Clicking to make a field an Admin block will no longer just tell you it is already an Admin block when it isn't.
locked_to code in the blocks is now more robust (less chance of a null error popping up if not set)
New Flag/Mechanic: PREVENT_BUILD_EXCEPT_DOMAINBLOCK
This flag allows you to prevent building in a field UNLESS what you're placing is a Domain block. This is intended and supported ONLY for admin fields and overrides PREVENT_BUILD.
The most obvious use for this would be to allow players to place their own field (for example, a shop field) down inside of a larger protected area (for example, your shopping district).
Example:
Create a shopping district field with a key of "shopping_district" that you do not want preset shop fields in. Right click the block, go to Edit, then Admin commands and select Admin block - this will convert the shopping district into an admin field. Add PREVENT_BUILD_EXCEPT_DOMAINBLOCK: true to the field, this will prevent players from building in the shopping district, but will allow them to place a Domain field.
Players can now be given or buy a shop Domain block - in the config for this block, set the locked_to: "shopping_district" and set the field_order to a higher number than the shopping district (if the shopping district field_order = 3, then you must choose a field order > 3).
This shop field can now ONLY be placed inside a shopping_district field. As the players place this field, they'll be able to build inside of their shopping field, but will still not be able to build outside of that.
Modify your files (if not a new install):
Add the following to flags.yml
Code (YAML):
PREVENT_BUILD_EXCEPT_DOMAINBLOCK:
name: "&bPrevent Build Except Domain Block" lore: "&fPrevents Non-Allowed players from building|But allows them to place Domain fields" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
Small feature update (which I wasn't going to do until 2.x. but here we are)
We have 4 new flags and 1 new command
New Flags:
PREVENT_BREAK_PAINTING_BY_NONALLOWED
- Prevents non-allowed players from breaking paintings in the field
PREVENT_INTERACT_CAKE_BY_NONALLOWED
- Prevents non-allowed players interacting (eating) cake in the field
PREVENT_INTERACT_REDSTONE_REPEATER_BY_NONALLOWED
- Prevents non-allowed players from modifying redstone repeaters in the field
PREVENT_VEHICLE_PLACE_BY_NONALLOWED
- Prevents non-allowed players from placing vehicles in the field
If you have an existing install, add the following to flags.yml
Code (YAML):
PREVENT_BREAK_PAINTING_BY_NONALLOWED:
name: "&bPrevent Break Painting" lore: "&fPrevents paintings being broken by Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_REDSTONE_REPEATER_BY_NONALLOWED:
name: "&bPrevent Redstone Repeater Interaction " lore: "&fPrevents redstone repeaters|being broken by Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_CAKE_BY_NONALLOWED:
name: "&bPrevent Cake Interaction" lore: "&fPrevents Non-Allowed players from |interacting/eating cakes|&fin the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_VEHICLE_PLACE_BY_NONALLOWED:
name: "&bPrevent Vehicle Place By Non-Allowed" lore: "&fPrevents Non-Players from placing vehicles" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
Add the following to lang.yml
Code (YAML):
break_painting: "&cYou cannot break paintings here" cake_interact_nonallowed: "&cYou cannot eat cake here" cake_interact_nonallowed_bypass: "Access to <%blocktype%> at <%location%> allowed due to bypass mode" glow_no_player: "&cInvalid Player" glow_set_off: "&aGlow disabled for <%player%>" glow_set_on: "&aGlow enabled for <%player%>" redstone_repeater_interact_nonallowed: "&cYou cannot access redstone repeaters here" redstone_repeater_interact_nonallowed_bypass: "Access to <%blocktype%> at <%location%> allowed due to bypass mode" vehicle_place_deny: "&cYou cannot place vehicles here"
And a new command which may or may not be helpful. It isn't actually a "Domain" function, but can help prevent issues caused by PVP Glowing
/domain glow <player name>
This command requires domain.admin (or op/console access) and will turn glow effect on/off for players
Any questions, please let me know in the Discord channel!
These flags prevent access to nonallowed players to lodestones or smithing tables in your field.
If you are just updating and not doing a new install, add the following to flags.yml
Code (YAML):
PREVENT_INTERACT_SMITHINGTABLE_BY_NONALLOWED:
name: "&bPrevent Smithing-Table Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fsmithing tables in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_LODESTONE_BY_NONALLOWED:
name: "&bPrevent Lodestone Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&flodestones in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
And add the following to your lang.yml file
Code (YAML):
smithingtable_interact_nonallowed: "You cannot access smithing tables here" lodestone_interact_nonallowed: "You cannot access lodestones here" interact_nonallowed_bypass: "Access to <%blocktype%> at <%location%> allowed due to bypass mode"
This also adds warped doors, gates, pressure plates, buttons and signs to Domain, so if you are preventing access to doors, warped doors are included, if you prevent access to buttons, warped buttons are included etc.
The new nether based mobs are also added PREVENT_SPAWNER_EGG flag.
If there is some other feature to 1.16 that you'd like to see Domain expand to, join the Discord and either leave a message in the Domain channel, or, send me a message.
Update forces a save-to-file when someone rents or extends their rent on a field. This prevents the field showing as unrented after a restart if further changes didn't force the save.
Renters can no longer access the Edit button in the Domain field
Fly warnings will now be displayed in the actionbar instead of spamming your chat
Added a new command:
/domain save <block id>
This can be run from console, or if you have domain.admin permission. It will force a save of the block to the file. (You can see the block ID from field information from the GUI)
Permission based limits will now look at the highest number per block (if a player has domain.<blockname>.limit.2 and domain.<blockname>.limit.3 [and appropriate setup in config]), it'll now only use the 2 if it can't find a higher number. In some cases it was looping through the permissions and applying the 2 after the 3.
1.16 prep continues - I'll be working to get Domain 1.16 ready as soon as the jar drops.
First an update:
This is the last intended feature update for Domain 1.* for the foreseeable future. I'm currently working on a fairly major rewrite of a large portion of the code that will be released as 2.0. Bug fixes for the 1.* branch will continue.
On to the 1.5.5 Updates.
A bug fix has been put in place that corrects an issue with some item frames being accessible
The PREVENT_INTERACT_ARMOR_STAND_BY_NONALLOWED flag has been activated in the code. It will prevent non-allowed players from taking from armor stands.
Please add the following to your lang.yml file if you wish to edit the default text:
Code (YAML):
armorstand_deny: "&4You cannot access armor stands here" armorstand_deny_bypass: "&4You cannot interact with armor stands here, but have bypass mode enabled"
A new API event has been created that is fired when a Domain field is resized.
public DomainBlock getDomainBlock() - Gets the Domain Block that is being resized
public Location getCorner1() - Gets Corner 1 from the Domain block being resized
public Location getCorner2() - Gets Corner 2 from the Domain block being resized
And a new API function to set the corners of the field
/* * Name: resizeField() * Description: Updates the corners for a field - forces update without checks * Parameters: * int domainBlockID - The domain block id to update * Location corner1 - The corner1 location to set * Location corner2 - The corner2 location to set * UUID playerUUID - The player unique identifier to alert if they are online, they will * also see an udpated visualization of the field. If null, no messages or visualization * will be shown to the player. * Return Type: void */
Returns an APIResponse with List<Block> of all the blocks within the field. Returns null if the Domain Block ID is invalid or if no blocks are found in the field.
Small update with rentable fields. To create a rent sign for a rentable block, right click on your Domain block with a sign, you can then place the sign with the topline [Domain] which will update the sign into a rent sign.
You must right click the Domain block for each rent sign you wish to create.
This works with either free standing or wall signs
This update includes a number of under-the-hood optimizations and bug fixes
Additional API functions have been exposed
work.torp.domain.api
getVersion() Returns the current version
checkPlayerFlag(UUID uuid, String flagName) Returns true if the flag specified is active where the player is
This checks all Domain fields in order of inheritance
Inputs:
UUID uuid - The UUID of the Player to check
String flagName - The flag to check
locationInField(Location location) Returns true if the location specified is in a Domain field
Inputs:
Location location - The location to check
playerAllowedAtLocation(Location location, Player player) Returns true if the player is allowed at the location they are standing in
Inputs:
Player player - The player to check
playerAllowedAtLocation(Location location, UUID uuid) Returns true if the player is allowed at the location they are standing in
Inputs:
UUID uuid - The UUID to convert to an online Player
playerFromUUIDString(String playerUUID) Returns a Player object from the player ID. Added by request for Skript functionality
Inputs:
String uuidValue
flagAtLocation(Flag.Type flag, Location location) Returns true if the flag is active at the specified location
Inputs:
Flag.Type flag - The flag type to check
Location location - The location to check
getFlags() Gets a list of all flags
flagFromName(String flagName) Gets a Flag.Type object from the String flag name provided
Inputs:
String flagName - The flag name to convert to a type
getDomainBlockItemStack(String blockKey) Returns an Itemstack of the specified Domain Block. Returns AIR if invalid block key
Inputs:
String blockKey
getPlacedDomainBlockByID(int domainBlockID) Returns a placed Domain block by its identifier. Returns null if no block exists
Inputs:
int domainBlockID - The domain block identifier to search on
getPlacedDomainBlocksSearch(String owner, String blockKey, String worldName) Searches for placed Domain Blocks by owner name, block key or world name
Search terms can be combined. Send "" for unused search criteria
Returns null if no blocks found
Inputs:
String owner - The player name to search for
String blockkey - The block key to search for
String worldName - The world to search
API Events
work.torp.domain.api.events.block
BlockBreakDomainEvent - Occurs when a block is broken in a Domain field
BlockBurnDomainEvent - Occurs when a block is burned in a Domain field
BlockFromDomainEvent - Occurs when water/lava flows from a Domain field
BlockGrowDomainEvent - Occurs when something grows in a Domain field
BlockIgniteDomainEvent - Occurs when something is ignited in a Domain field
BlockPlaceDomainEvent - Occurs when a block is placed in a Domain field
BlockSpreadDomainEvent - Occurs when fire spreads, chorus plants, kelp or bamboo grow in a Domain field
BlockToDomainEvent - Occurs when water or lava flows to a Domain field
PistonExtendDomainEvent - Occurs when a piston extends in a Domain Field
SignChangeDomainEvent - Occurs when a sign is changed in a Domain Field
SpongeAbsorbDomainEvent - Occurs when a sponge absorbs water in a Domain field
work.torp.domain.api.events.domain
DomainBypassChangeEvent - Occurs when a player changes bypass mode
DomainEnterEvent - Occurs when a player enters a Domain field
DomainEnterOwnEvent - Occurs when a player enters a Domain field that they own
DomainFieldCreateEvent - Occurs when a player creates a new Domain field
DomainLeaveEvent - Occurs when a player leaves a Domain field
DomainLeaveOwnEvent - Occurs when a player leaves their own Domain field
work.torp.domain.api.events.player
BucketEmpty - Occurs when a bucket is emptied in a Domain field
BucketFill - Occurs when a bucket is filled in a Domain field
CommandPreprocess - Occurs when a command is entered by a player in a Domain field
PlayerDrop - Occurs when a player drops an item in a Domain field
PlayerInteract - Occurs when a player interacts with something in a Domain field
PlayerInteractEntity - Occurs when a player right clicks entity in a Domain field
PlayerJoin - Occurs when a player joins the server (changes Domain bypass mode)
PlayerMove - Occurs when a player moves in a domain field
PlayerQuit - Occurs when a player quits the server (changes Domain bypass mode)
PlayerShear - Occurs when a player shears an entity in a Domain field
My apologies for the slow updates recently, I'm a bit bogged down at work, however, after receiving some issues regarding lag, I have tweaked some code to hopefully address this.
- For most events, a list of flags at the location are now calculated a single time if multiple checks take place. Previously, I was checking the flags at location each time (so if prevent phantoms, or prevent creepers or prevent skeletons etc.) which was adding a fair bit of overhead. Now it will pull the list of flags at the event once, and then check each condition without pulling the list again.
- A number of events will not be checked if the location of the event is not in a field
I've added a few new flags as well:
PREVENT_GROW_BAMBOO - Prevents bamboo growing in the field
PREVENT_GROW_CHORUS_PLANT - Prevents the chorus PLANT from growing, does not stop the flowers. PREVENT_GROW_CHORUS_FLOWER does that. Note: These are two different fields as PREVENT_GROW_CHORUS_FLOWER already exists, and I don't want to change the behavior in case it causes issues for anyone.
PREVENT_GROW_KELP - Prevents kelp from growing in the field
Please add the following to your flags.yml file (or if you don't have any translation, just delete the flags.yml file and it will automatically regenerate)
Code (YAML):
PREVENT_GROW_BAMBOO:
name: "&bPrevent Bamboo Growing" lore: "&fPrevents bamboo from growing in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_CHORUS_PLANT:
name: "&bPrevents Chorus Plant Growing" lore: "&fPrevents Chorus Plant from|&fgrowing in the field|&fDoes not stop the flower, just the plant" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_KELP:
name: "&bPrevents Kelp Growing" lore: "&fPrevents Kelp from|&fgrowing in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
As always, please let me know if you run into any issues!
If updating instead of a new install add the following to flags.yml
Code (YAML):
PREVENT_INTERACT_BEEHIVE_BY_NONALLOWED:
name: "&bPrevent Bee Hive Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fbee hives in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_BEENEST_BY_NONALLOWED:
name: "&bPrevent Bee Nest Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fbee nests in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
And the following to lang.yml
Code (Text):
beehive_interact_nonallowed: "You cannot access beehives here"
beehive_interact_nonallowed_bypass: "Access to <%blocktype%> at <%location%> allowed due to bypass mode"
beenest_interact_nonallowed: "You cannot access bee nests here"
beenest_interact_nonallowed_bypass: "Access to <%blocktype%> at <%location%> allowed due to bypass mode"
If this is a new install, these entries will automatically be entered
Following on from the positive potion effects in the last update, version 1.2.3 now includes 6 potion effects that will be applied to unwanted visitors.
Hunger (EFFECT_HUNGER_NONALLOWED) - Adds Hunger III
Weakness (EFFECT_WEAKNESS_NONALLOWED) - Adds Weakness III
Confusion (EFFECT_CONFUSION_NONALLOWED) - Adds Confusion III
Blindness (EFFECT_BLINDNESS_NONALLOWED) - Adds Blindness I
Slow Digging (EFFECT_SLOW_DIGGING_NONALLOWED) - Adds Slow Digging I
Wither Effect (EFFECT_WITHER_NONALLOWED) - Adds Wither I
These are applied to anyone who enters the field that is not allowed.
If not a new install, add the following to your flags.yml:
Code (YAML):
EFFECT_HUNGER_NONALLOWED:
name: "&bHunger" lore: "&fApplies Hunger potion effect to a|&fplayer not allowed to the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
EFFECT_WEAKNESS_NONALLOWED:
name: "&bWeakness" lore: "&fApplies Weakness potion effect to a|&fplayer not allowed to the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
EFFECT_CONFUSION_NONALLOWED:
name: "&bConfusion" lore: "&fApplies Confusion potion effect to a|&fplayer not allowed to the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
EFFECT_BLINDNESS_NONALLOWED:
name: "&bBlindness" lore: "&fApplies Blindness potion effect to a|&fplayer not allowed to the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
EFFECT_SLOW_DIGGING_NONALLOWED:
name: "&bSlow Digging" lore: "&fApplies Slow Digging potion effect to a|&fplayer not allowed to the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
EFFECT_WITHER_NONALLOWED:
name: "&bWither Effect" lore: "&fApplies Wither potion effect to a|&fplayer not allowed to the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
EFFECT_MINERS_HASTE_ALLOWED - Adds Miners Haste to any player allowed to the field
EFFECT_LEVITATION_ALLOWED- Adds Levitation to any player allowed to the field (careful - once levitation runs out, you may hit the ground before it kicking back in)
EFFECT_NIGHT_VISION_ALLOWED- Adds Night Vision to any player allowed to the field
EFFECT_WATER_BREATHING_ALLOWED- Adds Water Breathing to any player allowed to the field
flags.yml update is in the spoiler below - add these entries for language specific add-flag functionality
Code (YAML):
EFFECT_MINERS_HASTE_ALLOWED:
name: "&bMiners Haste" lore: "&fEnables Miners Haste for an allower player to the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
EFFECT_LEVITATION_ALLOWED:
name: "&bLevitation" lore: "&fEnables Levitation for an allower player to the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
EFFECT_NIGHT_VISION_ALLOWED:
name: "&bNight Vision" lore: "&fEnables Night Vision for an allower player to the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
EFFECT_WATER_BREATHING_ALLOWED:
name: "&bWater Breathing" lore: "&fEnables Water Breathing for an allower player to the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
This is the largest single update to Domain so far, there are a lot of changes (listed below) - If you are upgrading from an existing version, please be sure to backup your Domain folder before upgrading.
A LOT of under-the-hood changes to improve stability
Domain will no longer use a SQLite database for storing data, it will instead move to yml files in the Data folder
Domain.db data will automatically convert to the yml files - however, any blocks saved where the world no longer exists or some other important issue (missing required fields) may cause a conversion failure. It is VITALLY important that the Domain folder is backed up prior to the update. If you run into issues with some fields not updating, then roll back the change and contact me via Discord for assistance.
Once the server stops after first run after the update the Domain.db file will be renamed to prevent the plugin from attempting to re-convert the fields.
The users data is now saved to users.yml
The gui section of the config.yml has been moved to gui.yml in order to prevent the config.yml file from being cluttered
The flags section of the config.yml has been moved to flags.yml for the same reason
gui.yml and flags.yml will auto-generate on startup, if you have any translations in the existing config.yml file, you will need to manually copy these changes over
debug_log and debug_to_file have been removed from the default config.yml file. /domain debug is the preferred method for entering debug mode.
The blocks section has been removed from the config.yml file - instead all block configuration files in the Blocks folder will be loaded on startup
The Domain menu > Edit > Open for commands has been removed and replaced with Administrator commands. These commands require domain.admin permission. These options include, setting Teleport location, making the Domain block into an admin block, and setting enter/leave run commands.
/domain admin_block, /domain flag *, /domain enter_command, /domain leave_command, /domain tpto have all been disabled
/domain flag add * has been removed, instead admins can add new flags to a field by using the Add Flag button in the flag menu. This is the preferred method for creating custom blocks for administrator usage (ie. portals)
The following flags have been added: * PREVENT_SPAWN_HOSTILE - Prevents hostile mobs from spawning inside the field (zombies, skeletons etc.) * PREVENT_SPAWN_NONHOSTILE - Prevents non-hostile mobs from spawning inside the field (cows, pigs etc.) * PREVENT_SPAWN_PILLAGER - Prevents Pillagers from spawning inside the field * PREVENT_SPAWN_RAVAGER - Prevents Ravagers from spawning inside the field * PREVENT_SPAWN_EVOKER - Prevents Evokers from spawning inside the field * PREVENT_SPAWN_ILLUSIONER - Prevents Illusioners from spawning inside the field * PREVENT_SPAWN_VEX - Prevents Vexs from spawning inside the field * PREVENT_SPAWN_VINDICATOR - Prevents Vindicators from spanwing inside the field * PREVENT_SPAWN_WANDERING_TRADER - Prevents wandering traders & their llamas from spawning inside the field * PREVENT_BAZAAR_BUY_BY_NONALLOWED - Prevents non-allowed players buying from Bazaar chests inside the field * PREVENT_BAZAAR_CREATE_BY_NONALLOWED - Prevents non-allowed players creating new Bazaar chests inside the field * PREVENT_BAZAAR_REMOVE_BY_NONALLOWED - Prevents non-allowed players removing existing Bazaar chests inside the field * PREVENT_BAZAAR_SELL_BY_NONALLOWED - Prevents non-allowed players from selling to a Bazaar chest inside the field * HEAL_ALL_PLAYERS - Heals any player inside the field
Changes to any Domain fields will be saved immediately instead of waiting for the hourly check for edited fields
This is the final feature update that will include ShopChest integration, any future feature updates will support Bazaar for shop integration only
Update FAQ
I'm new to Domain, do I have to do anything with this change to .yml files?
- No, this is just for existing users. New users will just automatically use the flat file storage
What is this yml file thing?
- It is just a way to store files in a structured way, if you don't know what it is, don't worry about it
Why the change to .yml files?
- The Domain.db file could get stuck into a persistently locked state which could cause the server to crash as Domain was unable to write to the database. This became more urgent in 1.2.0 when immediate saves of the domain block changes was implemented (rather than startup + 1hr cycle).
Why not move to MySQL?
- Not everyone wants to use MySQL
But I do want to use MySQL!
- MySQL support IS coming, but not in this update. Future versions will support flat file and MySQL only.
What if the conversion from database file to flat-file doesn't convert all my blocks?
- It should, with a few notable exceptions. For example, any invalid block, such as those created in a world that doesn't exist will NOT copy over.
But I'll lose all those blocks that didn't convert if you stop using the Domain.db file, can't you just leave it?
- No, just so we don't keep trying to convert already converted data. This is why it is VERY important to backup your folder first. If you have issues with the conversion, roll the change back and let me know and I'll help with getting the files generated.
I can read and edit .yml files, right? So I can make changes directly in the file!
- You can, but I will not support manually edited files - I'll answer that a second time in bold just so it really sinks in.. I will NOT support manually edited files. If you break a file by editing it, your best bet is to delete the file and recreate the block in-game.
This is too complicated!
- Feel free to join the Discord and I'll be happy to try and help you out with the update
I used ShopChest, what happens in the next feature update?
- The next feature update will remove the SHOPCHEST_* flags - the blocks that have them will continue to work but will not actually do anything with those flags. Your shops will continue to work, but without the Domain restrictions for buying/selling etc.
Why are you removing ShopChest in the next feature release?
- Supporting third-party plugins adds complexity and increases development time. As Bazaar is now released, there is no need to support multiple shops.
I don't have Bazaar and I don't want to pay for it!
- Bazaar is NOT required for Domain, it is an optional extra only. Not sure that Bazaar is for you, contact me on Discord and I'll be happy to let you try it out
I don't want to install Domain as I'm not sure it is right for me!
- You can contact me on Discord for a free copy to test with (this is at my discretion and I reserve the right to refuse to provide a copy - test copies do NOT mean you are added to the Buyers list)
I found a bug!
- Please contact me with a message on Spigot or on Discord and I'll do my best to help you out.
Want to try Domain? You can test Domain on play.ibexmc.com - the official showcase for Domain, Bazaar and Myriad Clans - you might find some surprising uses for Domain that you've never really considered (portals, healing monuments, catching falling players, paying players for reaching an area etc.)
This is the largest single update to Domain so far, there are a lot of changes (listed below) - If you are upgrading from an existing version, please be sure to backup your Domain folder before upgrading.
A LOT of under-the-hood changes to improve stability
Domain will no longer use a SQLite database for storing data, it will instead move to yml files in the Data folder
Domain.db data will automatically convert to the yml files - however, any blocks saved where the world no longer exists or some other important issue (missing required fields) may cause a conversion failure. It is VITALLY important that the Domain folder is backed up prior to the update. If you run into issues with some fields not updating, then roll back the change and contact me via Discord for assistance.
Once the server stops after first run after the update the Domain.db file will be renamed to prevent the plugin from attempting to re-convert the fields.
The users data is now saved to users.yml
The gui section of the config.yml has been moved to gui.yml in order to prevent the config.yml file from being cluttered
The flags section of the config.yml has been moved to flags.yml for the same reason
gui.yml and flags.yml will auto-generate on startup, if you have any translations in the existing config.yml file, you will need to manually copy these changes over
debug_log and debug_to_file have been removed from the default config.yml file. /domain debug is the preferred method for entering debug mode.
The blocks section has been removed from the config.yml file - instead all block configuration files in the Blocks folder will be loaded on startup
The Domain menu > Edit > Open for commands has been removed and replaced with Administrator commands. These commands require domain.admin permission. These options include, setting Teleport location, making the Domain block into an admin block, and setting enter/leave run commands.
/domain admin_block, /domain flag *, /domain enter_command, /domain leave_command, /domain tpto have all been disabled
/domain flag add * has been removed, instead admins can add new flags to a field by using the Add Flag button in the flag menu. This is the preferred method for creating custom blocks for administrator usage (ie. portals)
The following flags have been added: * PREVENT_SPAWN_HOSTILE - Prevents hostile mobs from spawning inside the field (zombies, skeletons etc.) * PREVENT_SPAWN_NONHOSTILE - Prevents non-hostile mobs from spawning inside the field (cows, pigs etc.) * PREVENT_SPAWN_PILLAGER - Prevents Pillagers from spawning inside the field * PREVENT_SPAWN_RAVAGER - Prevents Ravagers from spawning inside the field * PREVENT_SPAWN_EVOKER - Prevents Evokers from spawning inside the field * PREVENT_SPAWN_ILLUSIONER - Prevents Illusioners from spawning inside the field * PREVENT_SPAWN_VEX - Prevents Vexs from spawning inside the field * PREVENT_SPAWN_VINDICATOR - Prevents Vindicators from spanwing inside the field * PREVENT_SPAWN_WANDERING_TRADER - Prevents wandering traders & their llamas from spawning inside the field * PREVENT_BAZAAR_BUY_BY_NONALLOWED - Prevents non-allowed players buying from Bazaar chests inside the field * PREVENT_BAZAAR_CREATE_BY_NONALLOWED - Prevents non-allowed players creating new Bazaar chests inside the field * PREVENT_BAZAAR_REMOVE_BY_NONALLOWED - Prevents non-allowed players removing existing Bazaar chests inside the field * PREVENT_BAZAAR_SELL_BY_NONALLOWED - Prevents non-allowed players from selling to a Bazaar chest inside the field * HEAL_ALL_PLAYERS - Heals any player inside the field
Changes to any Domain fields will be saved immediately instead of waiting for the hourly check for edited fields
This is the final feature update that will include ShopChest integration, any future feature updates will support Bazaar for shop integration only
Update FAQ
I'm new to Domain, do I have to do anything with this change to .yml files?
- No, this is just for existing users. New users will just automatically use the flat file storage
What is this yml file thing?
- It is just a way to store files in a structured way, if you don't know what it is, don't worry about it
Why the change to .yml files?
- The Domain.db file could get stuck into a persistently locked state which could cause the server to crash as Domain was unable to write to the database. This became more urgent in 1.2.0 when immediate saves of the domain block changes was implemented (rather than startup + 1hr cycle).
Why not move to MySQL?
- Not everyone wants to use MySQL
But I do want to use MySQL!
- MySQL support IS coming, but not in this update. Future versions will support flat file and MySQL only.
What if the conversion from database file to flat-file doesn't convert all my blocks?
- It should, with a few notable exceptions. For example, any invalid block, such as those created in a world that doesn't exist will NOT copy over.
But I'll lose all those blocks that didn't convert if you stop using the Domain.db file, can't you just leave it?
- No, just so we don't keep trying to convert already converted data. This is why it is VERY important to backup your folder first. If you have issues with the conversion, roll the change back and let me know and I'll help with getting the files generated.
I can read and edit .yml files, right? So I can make changes directly in the file!
- You can, but I will not support manually edited files - I'll answer that a second time in bold just so it really sinks in.. I will NOT support manually edited files. If you break a file by editing it, your best bet is to delete the file and recreate the block in-game.
This is too complicated!
- Feel free to join the Discord and I'll be happy to try and help you out with the update
I used ShopChest, what happens in the next feature update?
- The next feature update will remove the SHOPCHEST_* flags - the blocks that have them will continue to work but will not actually do anything with those flags. Your shops will continue to work, but without the Domain restrictions for buying/selling etc.
Why are you removing ShopChest in the next feature release?
- Supporting third-party plugins adds complexity and increases development time. As Bazaar is now released, there is no need to support multiple shops.
I don't have Bazaar and I don't want to pay for it!
- Bazaar is NOT required for Domain, it is an optional extra only. Not sure that Bazaar is for you, contact me on Discord and I'll be happy to let you try it out
I don't want to install Domain as I'm not sure it is right for me!
- You can contact me on Discord for a free copy to test with (this is at my discretion and I reserve the right to refuse to provide a copy - test copies do NOT mean you are added to the Buyers list)
I found a bug!
- Please contact me with a message on Spigot or on Discord and I'll do my best to help you out.
Want to try Domain? You can test Domain on play.ibexmc.com - the official showcase for Domain, Bazaar and Myriad Clans - you might find some surprising uses for Domain that you've never really considered (portals, healing monuments, catching falling players, paying players for reaching an area etc.)
This is the largest single update to Domain so far, there are a lot of changes (listed below) - If you are upgrading from an existing version, please be sure to backup your Domain folder before upgrading.
A LOT of under-the-hood changes to improve stability
Domain will no longer use a SQLite database for storing data, it will instead move to yml files in the Data folder
Domain.db data will automatically convert to the yml files - however, any blocks saved where the world no longer exists or some other important issue (missing required fields) may cause a conversion failure. It is VITALLY important that the Domain folder is backed up prior to the update. If you run into issues with some fields not updating, then roll back the change and contact me via Discord for assistance.
Once the server stops after first run after the update the Domain.db file will be renamed to prevent the plugin from attempting to re-convert the fields.
The users data is now saved to users.yml
The gui section of the config.yml has been moved to gui.yml in order to prevent the config.yml file from being cluttered
The flags section of the config.yml has been moved to flags.yml for the same reason
gui.yml and flags.yml will auto-generate on startup, if you have any translations in the existing config.yml file, you will need to manually copy these changes over
debug_log and debug_to_file have been removed from the default config.yml file. /domain debug is the preferred method for entering debug mode.
The blocks section has been removed from the config.yml file - instead all block configuration files in the Blocks folder will be loaded on startup
The Domain menu > Edit > Open for commands has been removed and replaced with Administrator commands. These commands require domain.admin permission. These options include, setting Teleport location, making the Domain block into an admin block, and setting enter/leave run commands.
/domain admin_block, /domain flag *, /domain enter_command, /domain leave_command, /domain tpto have all been disabled
/domain flag add * has been removed, instead admins can add new flags to a field by using the Add Flag button in the flag menu. This is the preferred method for creating custom blocks for administrator usage (ie. portals)
The following flags have been added: * PREVENT_SPAWN_HOSTILE - Prevents hostile mobs from spawning inside the field (zombies, skeletons etc.) * PREVENT_SPAWN_NONHOSTILE - Prevents non-hostile mobs from spawning inside the field (cows, pigs etc.) * PREVENT_SPAWN_PILLAGER - Prevents Pillagers from spawning inside the field * PREVENT_SPAWN_RAVAGER - Prevents Ravagers from spawning inside the field * PREVENT_SPAWN_EVOKER - Prevents Evokers from spawning inside the field * PREVENT_SPAWN_ILLUSIONER - Prevents Illusioners from spawning inside the field * PREVENT_SPAWN_VEX - Prevents Vexs from spawning inside the field * PREVENT_SPAWN_VINDICATOR - Prevents Vindicators from spanwing inside the field * PREVENT_SPAWN_WANDERING_TRADER - Prevents wandering traders & their llamas from spawning inside the field * PREVENT_BAZAAR_BUY_BY_NONALLOWED - Prevents non-allowed players buying from Bazaar chests inside the field * PREVENT_BAZAAR_CREATE_BY_NONALLOWED - Prevents non-allowed players creating new Bazaar chests inside the field * PREVENT_BAZAAR_REMOVE_BY_NONALLOWED - Prevents non-allowed players removing existing Bazaar chests inside the field * PREVENT_BAZAAR_SELL_BY_NONALLOWED - Prevents non-allowed players from selling to a Bazaar chest inside the field * HEAL_ALL_PLAYERS - Heals any player inside the field
Changes to any Domain fields will be saved immediately instead of waiting for the hourly check for edited fields
This is the final feature update that will include ShopChest integration, any future feature updates will support Bazaar for shop integration only
Update FAQ
I'm new to Domain, do I have to do anything with this change to .yml files?
- No, this is just for existing users. New users will just automatically use the flat file storage
What is this yml file thing?
- It is just a way to store files in a structured way, if you don't know what it is, don't worry about it
Why the change to .yml files?
- The Domain.db file could get stuck into a persistently locked state which could cause the server to crash as Domain was unable to write to the database. This became more urgent in 1.2.0 when immediate saves of the domain block changes was implemented (rather than startup + 1hr cycle).
Why not move to MySQL?
- Not everyone wants to use MySQL
But I do want to use MySQL!
- MySQL support IS coming, but not in this update. Future versions will support flat file and MySQL only.
What if the conversion from database file to flat-file doesn't convert all my blocks?
- It should, with a few notable exceptions. For example, any invalid block, such as those created in a world that doesn't exist will NOT copy over.
But I'll lose all those blocks that didn't convert if you stop using the Domain.db file, can't you just leave it?
- No, just so we don't keep trying to convert already converted data. This is why it is VERY important to backup your folder first. If you have issues with the conversion, roll the change back and let me know and I'll help with getting the files generated.
I can read and edit .yml files, right? So I can make changes directly in the file!
- You can, but I will not support manually edited files - I'll answer that a second time in bold just so it really sinks in.. I will NOT support manually edited files. If you break a file by editing it, your best bet is to delete the file and recreate the block in-game.
This is too complicated!
- Feel free to join the Discord and I'll be happy to try and help you out with the update
I used ShopChest, what happens in the next feature update?
- The next feature update will remove the SHOPCHEST_* flags - the blocks that have them will continue to work but will not actually do anything with those flags. Your shops will continue to work, but without the Domain restrictions for buying/selling etc.
Why are you removing ShopChest in the next feature release?
- Supporting third-party plugins adds complexity and increases development time. As Bazaar is now released, there is no need to support multiple shops.
I don't have Bazaar and I don't want to pay for it!
- Bazaar is NOT required for Domain, it is an optional extra only. Not sure that Bazaar is for you, contact me on Discord and I'll be happy to let you try it out
I don't want to install Domain as I'm not sure it is right for me!
- You can contact me on Discord for a free copy to test with (this is at my discretion and I reserve the right to refuse to provide a copy - test copies do NOT mean you are added to the Buyers list)
I found a bug!
- Please contact me with a message on Spigot or on Discord and I'll do my best to help you out.
Want to try Domain? You can test Domain on play.ibexmc.com - the official showcase for Domain, Bazaar and Myriad Clans - you might find some surprising uses for Domain that you've never really considered (portals, healing monuments, catching falling players, paying players for reaching an area etc.)
This update corrects a bug in the code that prevented players from changing the enabled status on flags that were on the second page of the flags available.
Thank you
@Fluxty for bringing that one to my attention!
Change Log 1.1.44 Opt-In Change - Feature update only
Bazaar Integration Bazaar is a new premium shop plugin that is designed to integrate with Domain & Myriad Clans - you can create player, admin or even clan shops.
ShopChest integration is now deprecated, and while there are no current plans to remove it from Domain, it will no longer receive feature updates within Domain.
Change adds 4 new flags:
PREVENT_BAZAAR_BUY_BY_NONALLOWED
PREVENT_BAZAAR_CREATE_BY_NONALLOWED
PREVENT_BAZAAR_REMOVE_BY_NONALLOWED
PREVENT_BAZAAR_SELL_BY_NONALLOWED
The following should be added to config.yml in the flags section:
Code (YAML):
PREVENT_BAZAAR_BUY_BY_NONALLOWED:
name: "&bPrevent Bazaar Shop Buy" lore: "&fPrevents Non-Allowed players from buying from Bazaar shops" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BAZAAR_CREATE_BY_NONALLOWED:
name: "&bPrevent Bazaar Shop Create" lore: "&fPrevents Non-Allowed players from creating Bazaar shops" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BAZAAR_REMOVE_BY_NONALLOWED:
name: "&bPrevent Bazaar Shop Remove" lore: "&fPrevents a Non-Allowed player from removing Bazaar shops" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BAZAAR_SELL_BY_NONALLOWED:
name: "&bPrevent Bazaar Shop Sell" lore: "&fPrevents a Non-Allowed player from selling to Bazaar shops" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
And the following should be added to the lang.yml file:
Code (YAML):
bazaar_prevent_buy: "&4ERROR &r- You cannot buy items here" bazaar_prevent_buy_bypass: "&4BYPASS WARNING &r- You are not allowed to buy items here, but have bypass enabled" bazaar_prevent_sell: "&4ERROR &r- You cannot sell items here" bazaar_prevent_sell_bypass: "&4BYPASS WARNING &r- You are not allowed to sell items here, but have bypass enabled" bazaar_prevent_create: "&4ERROR &r- You cannot create a Bazaar shop here" bazaar_prevent_create_bypass: "&4BYPASS WARNING &r- You are not allowed to create a Bazaar shop here, but have bypass enabled" bazaar_prevent_remove: "&4ERROR &r- You cannot remove a Bazaar shop here" bazaar_prevent_remove_bypass: "&4BYPASS WARNING &r- You are not allowed to remove a Bazaar shop here, but have bypass enabled"
Bazaar is currently awaiting moderation on Spigot so is not available for public downloads - contact me on Discord re: beta program.
This update contains a bug fix for teleport blocks.
When teleporting to a world created with Multiverse etc., Domain might record a null world name in the teleport to location when restarting the server.
This was caused by Domain running before Multiverse, so the world not existing in-game when the Location was set, causing the null error.
When a null world is found now, it will refer back to the tp locations original entry and pull the world name from there instead. If the world is still not found, the current world is expected.
SimpleClans Domain no longer supports SimpleClans - Myriad Clans is the supported clan plugin for Domain. It is available here [
https://www.spigotmc.org/resources/myriad-clans.68461/] and is free for anyone who has purchased Domain - just send me a message to be added to the buyers list.
If you are relying on SimpleClans support, do NOT update.
Domain Block Store
A Domain block store has been added - accessible via /domain buy
NOTE: You must have Vault and a Vault supported Economy plugin enabled to use the store.
The store defaults to being available, but can be turned on/off in the config file
Code (YAML):
# If domain_shop = true, then /domain buy will work, if domain_shop = false, then it will be disabled. If this entry is not included in the config file, it will default to true. domain_shop: true
The shop however will not include any blocks unless you add a cost to the block configuration files - in this way you can only include certain types of blocks as you wish.
Code (YAML):
# cost_to_buy is the price of the block in the Domain store (accessible via /domain buy) - if this is missing, the block will not be included. cost_to_buy: 500
Search A simple search function has been added for anyone with domain.admin permissions.
You can include only the search item you want, or you can combine them, for example:
/domain search owner:torpkev world:world_nether
Would search for any blocks owned by torpkev in the nether
/domain search type:city
Would search for any city blocks, regardless of owner or world.
Auto-Saving Domain field changes will be saved to the database every hour as well as when the server shuts down.
PREVENT_INTERACT Changes PREVENT_INTERACT now includes the 114 items that were previously accessible via their own flags, such as PREVENT_INTERACT_GRINDSTONE_BY_NONALLOWED
Teleport Blocks Teleport blocks have been added so that when a player enters the field they will be teleported directly to another place.
To activate the teleport block, add the TELEPORT_TO flag
Code (YAML):
flags:
TELEPORT_TO: true
To set the teleport location, open the Domain block by right clicking it then going to Edit, then select Open for Commands
Then go to the location you wish to teleport to and enter:
/domain tpto
This will set the location.
Having Bypass mode enabled will prevent the player from teleporting.
Bug Fixes A fix for the display_name config option which was not setting the prefix on messages correctly
As with all updates, please back up your Domain folder and jar BEFORE putting the new version in.
Looks like my goldfish walked over my keyboard prior to the last update resulting in a few unforeseen issues:
Domain blocks where the name of the file (without the .yml) didn't match the key exactly caused issues loading (for example, the default of griefprevent.yml with a key of grief_prevent).
Visualization was attempted when a block wasn't created yet.
SOMEBODY left some code in so that when a new field was created, it sent a message to the player saying that an event had been called.
Please report any other issues if they come up - a copy of your config file and the block configuration files would be extremely helpful with any bug report.
Fairly big update this time around, it addresses a number of configuration and customization changes.
The default Config will now include comments explaining each option
pvp_seconds is being deprecated and is replaced with pvp_glow_time and pvp_no_teleport_time. pvp_seconds will still work, but may be removed in a coming version.
Code (YAML):
# pvp_seconds is deprecated, but will continue to work in the absence of pvp_glow_time and pvp_no_teleport_time pvp_seconds: 30
# pvp_glow_time is the amount of seconds a player will glow after engaging in PVP in a # field with the GLOW_NONALLOWED_PLAYER_ON_PVP flag pvp_glow_time: 30
# pvp_no_teleport_time is the amount of seconds a player will not be allowed to teleport after engaging # in pvp in a field with PREVENT_PVP_TELEPORT_FROM or PREVENT_PVP_TELEPORT_TO flags pvp_no_teleport_time: 30
You can now assign a new default name, welcome message and farewell message to your fields:
Code (YAML):
# default_name is the name applied to a new field. You can use the following substitutions: # <%player%> = Player Name # <%type%> = Block Type default_name: "<%player%>'s <%type%> field"
# default_welcome is the welcome message applied to a new field. You can use the following substitutions: # <%player%> = Player Name # <%type%> = Block Type default_welcome: "Entering <%player%>'s <%type%> field"
# default_farewell is the farewell message applied to a new field. You can use the following substitutions: # <%player%> = Player Name # <%type%> = Block Type default_farewell: "Leaving <%player%>'s <%type%> field"
You can now assign a custom name, lore, enabled status and material to the Domain menus.
Below in the spoiler tag is the full gui section to add to the config file:
Code (YAML):
# The gui options below allow you to modify the look/feel of the GUI menus # Each isbroken out into 3-4 parts. gui.<type>.material, gui.<type>.name, gui.<type>.lore and gui.<type>.enabled (not in all options) # Material MUST be a valid Minecraft material. Lore can take a new line by using the | character. Both name and lore can use & color codes. # The enabled option is only available on gui options that do things such as resizing, visualizing etc. gui:
na:
material: BLACK_STAINED_GLASS_PANE
error:
material: RED_STAINED_GLASS_PANE
disabled:
material: BARRIER
lore: "&fThis option is not available" back:
material: NETHER_STAR
name: "&bBack" lore: "&fReturn to previous page" display_field:
material: BEACON
name: "&bDisplay Field" lore: "&fVisualize the field" enabled: true
edit_field:
material: ENCHANTING_TABLE
name: "&bEdit Field" lore: "&fAccess the Domain Edit Menu" enabled: true
edit_name:
material: NAME_TAG
name: "&bEdit Name" lore: "&fModifies the name of the field" enabled: true
edit_welcome:
material: WRITABLE_BOOK
name: "&bEdit Welcome Message" lore: "&fModifies the welcome message for the field" enabled: true
edit_farewell:
material: WRITABLE_BOOK
name: "&bEdit Farewell Message" lore: "&fModifies the farewell message for the field" enabled: true
edit_resize:
material: DAYLIGHT_DETECTOR
name: "&bResize" lore: "&fGives a Domain Resize wand so you|&fcan resize the field" enabled: true
edit_merge:
material: ANVIL
name: "&bMerge" lore: "&fAllows you to merge multiple Domain blocks|&ftogether in order to increase max volume" enabled: true
edit_commands:
material: COMMAND_BLOCK
name: "&bOpen for Commands" lore: "&fOpens the Domain block for commands which are|&faccessible through the /domain command" enabled: true
edit_take:
material: DIAMOND_PICKAXE
name: "&bTake" lore: "&fAllows you to remove the Domain block" enabled: true
edit_status:
material: LEVER
name: "&bEnable/Disable" lore: "&fAllows you to change the status of|&fthe Domain block. No flags will|&fbe applied if disabled" enabled: true
info:
material: KNOWLEDGE_BOOK
name: "&bField Information" lore: "&fOpens the Domain Information Menu" enabled: true
info_info:
material: PAPER
name: "&bField Information" lore: "&fDisplays information about your field" enabled: true
info_who:
material: ENDER_EYE
name: "&bWho else is in field?" lore: "&fDisplays a list of other players in your field" enabled: true
info_flags:
material: YELLOW_BANNER
name: "&bFlags" lore: "&fDisplays the flags currently assigned to this field" enabled: true
info_flags_previous:
material: LIGHT_BLUE_CONCRETE
name: "&bPrevious" lore: "&fGoes to the previous page" enabled: true
info_flags_previous_disabled:
material: GRAY_CONCRETE
name: "&4Previous" lore: "No previous pages found" enabled: true
info_flags_next:
material: ORANGE_CONCRETE
name: "&bNext" lore: "&fGoes to the next page" enabled: true
info_flags_next_disabled:
material: GRAY_CONCRETE
name: "&4Next" lore: "No more pages found" enabled: true
info_rent:
material: OAK_SIGN
name: "&bRent Info" lore: "&fDisplays any rent information for this field" enabled: true
permission:
material: PLAYER_HEAD
name: "&bPermissions" lore: "&fOpens the Domain Permissions menu|&eMay take a few moments to open" enabled: true
permission_add:
material: TOTEM_OF_UNDYING
name: "&bAdd Player" lore: "&fAllows you to add a player to the field" enabled: true
permission_make_owner:
material: END_CRYSTAL
name: "&bMake Owner" lore: "&fChanges ownership of the block to the player" enabled: true
permission_remove:
material: BARRIER
name: "&bRemove Player" lore: "&fRemoves the player from the field permissions" enabled: true
permission_previous:
material: LIGHT_BLUE_CONCRETE
name: "&bPrevious" lore: "&fGoes to the previous page" permission_previous_disabled:
material: GRAY_CONCRETE
name: "&4Previous" lore: "No previous pages found" permission_next:
material: ORANGE_CONCRETE
name: "&bNext" lore: "&fGoes to the next page" permission_next_disabled:
material: GRAY_CONCRETE
name: "&4Next" lore: "No more pages found" permission_edit_player_blank:
material: YELLOW_STAINED_GLASS_PANE
name: "" lore: "" permission_add_blank_1:
material: GREEN_STAINED_GLASS_PANE
name: "" lore: "" permission_add_blank_2:
material: LIME_STAINED_GLASS_PANE
name: "" lore: "" take_no:
material: RED_STAINED_GLASS_PANE
name: "&4No" lore: "&fCancels taking the Domain block" take_yes:
material: GREEN_STAINED_GLASS_PANE
name: "&2Yes" lore: "&fConfirms taking the Domain block" flag_allow:
material: LIME_STAINED_GLASS_PANE
name: "&2Allow" lore: "&fAllows this flag in the field" flag_deny:
material: RED_STAINED_GLASS_PANE
name: "&4Deny" lore: "&fDenies this flag in the filed"
And you can also customize the flags to have a custom name, lore, locked status and on/off material.
Locked Flag:
Below in the spoiler tag is the full flags section to add to your config:
Code (YAML):
# flags is a list of flags and replacement name, lore, locked status and icons to use in the menus # & colors codes can be used in name and lore - if you use a new line in the lore (use a | character) # you will need to reapply the color code for the new line # Formatted as follows: # flags: # <FLAG NAME>: # name: <Easy to read name> # lore: <Easy to read lore - use | for a new line> # icon_on: <the material to use for an enabled flag> # icon_off: <the material to use for a disabled flag> # locked: <true/false> # Example: # flags: # PREVENT_SPONGE_ABSORB: # name: "&bPrevent Sponge Absorb" # lore: "&fPrevents sponges from absorbing water|&fin the field" # icon_on: SPONGE # icon_off: BARRIER # locked: true # In this example, the PREVENT_SPONGE_ABSORB flag would be a sponge if enabled and a barrier if disabled, # but is locked so the user cannot change it unless they have Domain Bypass mode enabled. flags:
DISPLAY_FAREWELL:
name: "&bDisplay Farewell" lore: "&fDisplays a farewell message when|&fa player leaves the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
DISPLAY_WELCOME:
name: "&bDisplay Welcome" lore: "&fDisplays a welcome message when|&fa player enters the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
DROP_ALL_ON_PVP_TELEPORT:
name: "&bDrop All on PVP Teleport" lore: "&fCauses a player to drop all items|&fif they teleport after PVP" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
ENABLE_FLY_FOR_ALLOWED:
name: "&bEnable Fly for Allowed" lore: "&fEnables fly mode in the field for allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
EPIDEMIC_PREVENT_AFFLICT:
name: "&bPrevent Epidemic Affliction" lore: "&fPrevents a player from being afflicted|&fby Epidemic" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
EPIDEMIC_PREVENT_SYMPTOMS:
name: "&bPrevent Epidemic Symptoms" lore: "&fPrevents a player suffering from|&fsymptoms from Epidemic" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
FREEZE_ON_PVP_TELEPORT:
name: "&bFreeze on PVP Teleport" lore: "&fFreezes the player if they attempt to|&fteleport after PVP" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
GLOW_NONALLOWED_PLAYER_ON_PVP:
name: "&bGlow Non-Allowed Player on PVP" lore: "&fCauses a player to glow if they|&fattempt PVP while not allowed in|&fthe field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
HARM_NONALLOWED_PLAYER:
name: "&bHarm Non-Allowed Player" lore: "&fCauses a player not allowed in the field|&fto start taking damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
HEAL_ALLOWED_PLAYER:
name: "&bHeal Player" lore: "&fHeals players allowed in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
INSTANT_HEAL_ALLOWED_PLAYER:
name: "&bInstant Heal Allowed Player" lore: "&fInstantly heals an allowed player to the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_DOOR_ACCESS_BY_NONALLOWED:
name: "&bPrevent Door Access" lore: "&fPrevents a Non-Allowed player from accessing doors" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GATE_ACCESS_BY_NONALLOWED:
name: "&bPrevent Gate Access" lore: "&fPrevents a Non-Allowed player from accessing gates" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_TRAPDOOR_ACCESS_BY_NONALLOWED:
name: "&bPrevent Gate Access" lore: "&fPrevents a Non-Allowed player from accessing trapdoors" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BUTTON_ACCESS_BY_NONALLOWED:
name: "&bPrevent Button Access" lore: "&fPrevents a Non-Allowed player from accessing buttons" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PRESSURE_PLATE_ACCESS_BY_NONALLOWED:
name: "&bPrevent Pressure-Plate Access" lore: "&fPrevents a Non-Allowed player from accessing pressure plates" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_LEVER_BY_NONALLOWED:
name: "&bPrevent Lever Access" lore: "&fPrevents a Non-Allowed player from accessing levers" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ACCESS_BY_NONALLOWED:
name: "&bPrevent Access" lore: "&fPrevents a Non-Allowed player from entering a field|&frepeated attempts will cause them to return to spawn" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ALLOWED_PLAYER_CONTACT_DAMAGE:
name: "&bPrevent Contact Damage" lore: "&fPrevents players allowed to the field from taking|&fcontact damage (cactus, sweet berry bush etc.)" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ALLOWED_PLAYER_DROWN:
name: "&bPrevent Drown" lore: "&fPrevents players allowed to the field from taking|&fdrowning damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ALLOWED_PLAYER_EXPLOSION_DAMAGE:
name: "&bPrevent Explosion Damage" lore: "&fPrevents players allowed to the field from taking|&fexplosion damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ALLOWED_PLAYER_FALL_DAMAGE:
name: "&bPrevent Fall Damage" lore: "&fPrevents players allowed to the field from taking|&ffall damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ALLOWED_PLAYER_FIRE_DAMAGE:
name: "&bPrevent Fire Damage" lore: "&fPrevents players allowed to the field from taking|&ffire damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ALLOWED_PLAYER_WITHER_DAMAGE:
name: "&bPrevent Wither Damage" lore: "&fPrevents players allowed to the field from taking|&fwither damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ANIMAL_DAMAGE_BY_ALL:
name: "&bPrevent Animal Damage by All" lore: "&fPrevents any animal damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ANIMAL_DAMAGE_BY_ALLOWED:
name: "&bPrevent Animal Damage by Allowed" lore: "&fPrevents animal damage by Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ANIMAL_DAMAGE_BY_NONALLOWED:
name: "&bPrevent Animal Damage by Non-Allowed" lore: "&fPrevents animal damage by Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ANIMAL_DAMAGE_BY_NONPLAYER:
name: "&bPrevent Animal Damage by Non-Player" lore: "&fPrevents Non-Players from causing animal damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ARROW_INTERACT:
name: "&bPrevent Arrow Interaction" lore: "&fPrevents arrows from interacting with buttons and pressure plates" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BLOCK_BURN:
name: "&bPrevent Block Burn" lore: "&fPrevents blocks from burning away" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BREAK:
name: "&bPrevent Break" lore: "&fPrevents blocks being broken by Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BREAK_BOAT_BY_NONALLOWED:
name: "&bPrevent Boat Breaking by Non-Allowed" lore: "&fPrevents Non-Allowed players from breaking boats" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BREAK_MINECART_BY_NONALLOWED:
name: "&bPrevent Minecart Breaking by Non-Allowed" lore: "&fPrevents Non-Allowed players from breaking minecarts" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BREEDING:
name: "&bPrevent Breeding" lore: "&fPrevents mobs from breeding" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BUCKET_FILL_BY_NONALLOWED:
name: "&bPrevent Bucket-Fill" lore: "&fPrevents a Non-Allowed player from filling a bucket" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BUILD:
name: "&bPrevent Build" lore: "&fPrevents Non-Allowed players from building" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BUILD_IRON_GOLEM:
name: "&bPrevent Iron Golem" lore: "&fPrevents Iron Golems from being built" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_BUILD_SNOWMAN:
name: "&bPrevent Snowman" lore: "&fPrevent Snowmenfrom being built" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_CHORUSFRUIT_TO:
name: "&bPrevent Chorus Fruit To" lore: "&fPrevents Chorus Fruit teleporting to the field|&fby Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_COMMAND_CUSTOM1_BY_NONALLOWED:
name: "&bPrevent Custom Commands 1" lore: "&fPrevents certain commands being run in the|&ffield by Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_COMMAND_CUSTOM2_BY_NONALLOWED:
name: "&bPrevent Custom Commands 2" lore: "&fPrevents certain commands being run in the|&ffield by Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_COMMAND_CUSTOM3_BY_NONALLOWED:
name: "&bPrevent Custom Commands 3" lore: "&fPrevents certain commands being run in the|&ffield by Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_COMMAND_CUSTOM4_BY_NONALLOWED:
name: "&bPrevent Custom Commands 4" lore: "&fPrevents certain commands being run in the|&ffield by Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_COMMAND_HOME_BY_NONALLOWED:
name: "&bPrevent Home Commands" lore: "&fPrevents Home commands being run in the|&ffield by Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_COMMAND_TELEPORT_BY_NONALLOWED:
name: "&bPrevent Teleport Commands" lore: "&fPrevents Teleport commands being run in the|&ffield by Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_CROP_DAMAGE_BY_NONALLOWED:
name: "&bPrevent Crop Damage" lore: "&fPrevents crop damage by Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_CROP_DAMAGE_BY_NONPLAYER:
name: "&bPrevent Crop Damage by Mob" lore: "&fPrevents Non-Players from causing crop damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_DROP_ITEM_BY_NONALLOWED:
name: "&bPrevent Drop Item" lore: "&fPrevents Non-Allowed players from dropping items in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ELYTRA_GLIDING:
name: "&bPrevent Elytra Gliding" lore: "&fPrevents Elytra gliding in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_END_PORTAL_BY_NONALLOWED:
name: "&bPrevent End Portal Use" lore: "&fPrevents Non-Allowed players from using an End Portal|&fin the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ENDERPEARL_TO:
name: "&bPrevent Enderpearl To" lore: "&fPrevents Non-Allowed players from Enderpearl teleporting to the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_EXPLOSION_DAMAGE:
name: "&bPrevent Explosion Damage" lore: "&fPrevents blocks in the field from taking explosion damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_FIRE_IGNITE:
name: "&bPrevent Fire Ignite" lore: "&fPrevents fires from being ignited" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_FIRE_SPREAD:
name: "&bPrevent Fire Spread" lore: "&fPrevents fires from spreading in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_FIREWORK_LAUNCH_BY_NONALLOWED:
name: "&bPrevent Firework Launch" lore: "&fPrevents Non-Allowed players from launching|&ffireworks in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_BEETROOTS:
name: "&bPrevent Beetroot Growing" lore: "&fPrevents beetroots from growing in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_CACTUS:
name: "&bPrevent Cactus Growing" lore: "&fPrevents cactus from growing in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_CARROTS:
name: "&bPrevent Carrot Growing" lore: "&fPrevents carrots from growing in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_CHORUS_FLOWER:
name: "&bPrevents Chorus Flower Growing" lore: "&fPrevents Chorus Flowers from growing in the field|&fDoes not stop the plant, just the flower" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_COCOA:
name: "&bPrevent Cocoa Growing" lore: "&fPrevents Cocoa from growing in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_MELON:
name: "&bPrevent Melon Growing" lore: "&fPrevents Melons from growing in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_NETHER_WART:
name: "&bPrevent Nether Wart Growing" lore: "&fPrevents Nether Wart from growing in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_POTATOES:
name: "&bPrevent Potato Growing" lore: "&fPrevents potatoes from growing in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_PUMPKIN:
name: "&bPrevent Pumpkin Growing" lore: "&fPrevents pumpkins from growing in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_SUGAR_CANE:
name: "&bPrevent Sugar Cane Growing" lore: "&fPrevents sugar cane from growing in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_SWEET_BERRY_BUSH:
name: "&bPrevent Sweet Berry Bush Growing" lore: "&fPrevents Sweet Berry bushes from growing in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_TURTLE_EGG:
name: "&bPrevent Turtle Egg Growing" lore: "&fPrevents Turtle Eggs from growing in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_GROW_WHEAT:
name: "&bPrevent Wheat Growing" lore: "&fPrevents wheat from growing in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT:
name: "&bPrevent Interact" lore: "&fPrevents interaction with chests, shulker boxes, furnaces,|&fdroppers, buttons,|&fdoors, gates, switches, pressure plates, beds etc." icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_ANVIL_BY_NONALLOWED:
name: "&bPrevent Anvil Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fanvils in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_ARMOR_STAND_BY_NONALLOWED:
name: "&bPrevent Armor Stand Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&farmor stands in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_BARREL_BY_NONALLOWED:
name: "&bPrevent Barrel Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fbarrels in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_BED_BY_NONALLOWED:
name: "&bPrevent Bed Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fbeds in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_BELL_BY_NONALLOWED:
name: "&bPrevent Bell Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fbells in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_BLAST_FURNACE_BY_NONALLOWED:
name: "&bPrevent Blast Furnace Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fblast furnaces in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_BREWING_STAND_BY_NONALLOWED:
name: "&bPrevent Brewing Stand Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fbrewing stands in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_CAMPFIRE_BY_NONALLOWED:
name: "&bPrevent Campfire Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fcampfires in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_CARTOGRAPHY_TABLE_BY_NONALLOWED:
name: "&bPrevent Cartography Table Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fcartography tables in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_CHEST_BY_NONALLOWED:
name: "&bPrevent Chest Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fchests in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_COMPOSTER_BY_NONALLOWED:
name: "&bPrevent Composter Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fcomposters in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_CRAFTING_TABLE_BY_NONALLOWED:
name: "&bPrevent Crafting Table Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fcrafting tables in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_DISPENSER_BY_NONALLOWED:
name: "&bPrevent Dispenser Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fdispensers in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_DROPPER_BY_NONALLOWED:
name: "&bPrevent Dropper Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fdroppers in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_ENCHANTING_TABLE_BY_NONALLOWED:
name: "&bPrevent Enchanting Table Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fenchanting tables in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_ENDERCHEST_BY_NONALLOWED:
name: "&bPrevent EnderChest Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fenderchests in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_FLOWERPOT_BY_NONALLOWED:
name: "&bPrevent Flowerpot Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fflower pots in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_FURNACE_BY_NONALLOWED:
name: "&bPrevent Furnace Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&ffurnaces in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_GRINDSTONE_BY_NONALLOWED:
name: "&bPrevent Grindstone Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fanvils in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_HOPPER_BY_NONALLOWED:
name: "&bPrevent Hopper Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fhoppers in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_ITEM_FRAME_BY_NONALLOWED:
name: "&bPrevent Item Frame Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fitem frames in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_JUKEBOX_BY_NONALLOWED:
name: "&bPrevent Jukebox Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fjukeboxes in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_LECTERN_BY_NONALLOWED:
name: "&bPrevent Lectern Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&flecterns in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_LOOM_BY_NONALLOWED:
name: "&bPrevent Loom Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&flooms in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_SHULKERBOX_BY_NONALLOWED:
name: "&bPrevent Shulker Box Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fshulker boxes in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_SMOKER_BY_NONALLOWED:
name: "&bPrevent Smoker Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fsmokers in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_INTERACT_STONECUTTER_BY_NONALLOWED:
name: "&bPrevent Stonecutter Interaction" lore: "&fPrevents Non-Allowed players from interacting with|&fstonecutters in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ITEM_FRAME_ACCESS_BY_NONALLOWED:
name: "&bPrevent Item Frame Access" lore: "&fPrevents Non-Allowed players from accessing item frames in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ITEM_PICKUP_BY_NONALLOWED:
name: "&bPrevent Item Pickup" lore: "&fPrevents Non-Allowed players from picking up items in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_ITEM_PICKUP_BY_VILLAGER:
name: "&bPrevent Villager Item Pickup" lore: "&fPrevents Villagers from picking up items in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_LAVA_FLOW:
name: "&bPrevent Lava Flow" lore: "&fPrevents lava flow in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_LAVA_FLOW_TO:
name: "&bPrevent Lava Flow Into Field" lore: "&fPrevents lava from flowing into the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_LAVA_PLACE:
name: "&bPrevent Lava Place" lore: "&fPrevents Non-Allowed players from placing lava in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_LINGERINGPOTION_EFFECT:
name: "&bPrevent Lingering Potion Effect" lore: "&fPrevents lingering potion effects in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_MAGIC:
name: "&bPrevent Magic" lore: "&fPrevents Magic in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_MOB_CONTACT_DAMAGE:
name: "&bPrevent Mob Contact Damage" lore: "&fPrevents Non-Players from taking contact damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_MOB_DROWN:
name: "&bPrevent Mob Drown" lore: "&fPrevents Non-Players from drowning" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_MOB_EXPLOSION_DAMAGE:
name: "&bPrevent Mob Explosion Damage" lore: "&fPrevents Non-Players from taking explosion damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_MOB_FALL_DAMAGE:
name: "&bPrevent Mob Fall Damage" lore: "&fPrevents Non-Players from taking fall damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_MOB_FIRE_DAMAGE:
name: "&bPrevent Mob Fire Damage" lore: "&fPrevents Non-Players from taking fire damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_MOB_WITHER_DAMAGE:
name: "&bPrevent Mob Wither Damage" lore: "&fPrevents Non-Players from taking Wither damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_MONSTER_DAMAGE_BY_ALL:
name: "&bPrevent Monster Damage by All" lore: "&fPrevent monsters from taking damage from anyone" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_MONSTER_DAMAGE_BY_ALLOWED:
name: "&bPrevent Monster Damage by Allowed" lore: "&fPrevents Allowed players from damaging monsters" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_MONSTER_DAMAGE_BY_NONALLOWED:
name: "&bPrevent Monster Damage by Non-Allowed" lore: "&fPrevents Non-Allowed players from damaging monsters" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_MONSTER_DAMAGE_BY_NONPLAYER:
name: "&bPrevent Monster Damage by Non-Player" lore: "&fPrevents Non-Players from damaging monsters" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_NETHER_PORTAL_BY_NONALLOWED:
name: "&bPrevent Nether Portal Access" lore: "&fPrevents Non-Allowed players from using Nether Portals" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PISTON_MOVE_INTO_FIELD:
name: "&bPrevent Piston Move Into Field" lore: "&fPrevents a piston from moving a block into the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PISTON_MOVE_OUT_FIELD:
name: "&bPrevent Piston Move Out of Field" lore: "&fPrevents a piston from moving a block out of the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PLACE_BOAT_BY_NONALLOWED:
name: "&bPrevent Boat Place" lore: "&fPrevents Non-Allowed players from placing boats" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PLACE_MINECART_BY_NONALLOWED:
name: "&bPrevent Minecart Place" lore: "&fPrevents Non-Allowed players from placing minecarts" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PLACE_PAINTING_BY_NONALLOWED:
name: "&bPrevent Painting Place" lore: "&fPrevents Non-Allowed players from placing paintings" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PLAYER_ATTACK_DAMAGE_BY_CREATURE:
name: "&bPrevent Attack Damage" lore: "&fPrevent a player from taking attack damage from any creature" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PLAYER_CONTACT_DAMAGE:
name: "&bPrevent Contact Damage" lore: "&fPrevents a player from taking contact damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PLAYER_DROWN:
name: "&bPrevent Player Drown" lore: "&fPrevents a player from taking drowning damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PLAYER_EXPLOSION_DAMAGE:
name: "&bPrevent Player Explosion Damage" lore: "&fPrevents a player from taking explosion damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PLAYER_FALL_DAMAGE:
name: "&bPrevent Player Fall Damage" lore: "&fPrevents a player from taking fall damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PLAYER_FIRE_DAMAGE:
name: "&bPrevent Player Fire Damage" lore: "&fPrevents a player from taking fire damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PLAYER_WITHER_DAMAGE:
name: "&bPrevent Player Wither Damage" lore: "&fPrevents a player from taking wither damage" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PROJECTILE_ITEM_FRAME:
name: "&bPrevent Projectile/Item Frame Interaction" lore: "&fPrevents projectiles from damaging item frames" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PVP:
name: "&bPrevent PVP" lore: "&fPrevent a player from taking damage from another player (including projectiles)" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PVP_BY_NONALLOWED:
name: "&bPrevent PVP By Non-Allowed" lore: "&fPrevent a player from taking damage from another player (including|&fprojectiles) if the attacker is not allowed|&fin the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PVP_TELEPORT_FROM:
name: "&bPrevent PVP Teleport From" lore: "&fPrevents a player from teleporting from a field if they|&fengaged in PVP" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_PVP_TELEPORT_TO:
name: "&bPrevent PVP Teleport To" lore: "&fPrevents a player from teleporting to a field if|&fthey have engaged in PVP" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_SHEAR_BY_NONALLOWED:
name: "&bPrevent Shearing" lore: "&fPrevents Non-Allowed players from shearing animals" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_SHEEP_DYE:
name: "&bPrevent Sheep Dye" lore: "&fPrevents sheep from being dyed" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_SHEEP_REGROW_WOOL:
name: "&bPrevent Wool Growing" lore: "&fPrevents a sheep from regrowing its wool" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_SHOPCHEST_BUY_BY_NONALLOWED:
name: "&bPrevent ShopChest Buy" lore: "&fPrevents Non-Allowed players from buying from ShopChest chests" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_SHOPCHEST_CREATE_BY_NONALLOWED:
name: "&bPrevent ShopChest Create" lore: "&fPrevents Non-Allowed players from creating a ShopChest chest" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_SHOPCHEST_REMOVE_BY_NONALLOWED:
name: "&bPrevent ShopChest Remove" lore: "&fPrevents a Non-Allowed player from removing a ShopChest chest" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_SHOPCHEST_SELL_BY_NONALLOWED:
name: "&bPrevent ShopChest Sell" lore: "&fPrevents a Non-Allowed player from selling to a ShopChest chest" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_SPAWN:
name: "&bPrevent Spawn" lore: "&fPrevents mob spawning" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_SPAWNER_EGG:
name: "&bPrevent Spawner Eggs" lore: "&fPrevents Spawner Eggs from being used" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_SPLASHPOTION_EFFECT:
name: "&bPrevent Splash Potion effect" lore: "&fPrevents splash potion effects" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_SPONGE_ABSORB:
name: "&bPrevent Sponge Absorb" lore: "&fPrevents sponges from absorbing water" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_TAME_BY_NONALLOWED:
name: "&bPrevent Taming" lore: "&fPrevents Non-Allowed players from taming an animal" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_TELEPORT_TO:
name: "&bPrevent Teleport To" lore: "&fPrevents Non-Allowed players from teleporting to the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_VEHICLE_ENTER_ALL:
name: "&bPrevent Vehicle Enter for All" lore: "&fPrevent anyone from entering a vehicle" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_VEHICLE_ENTER_BY_NONALLOWED:
name: "&bPrevent Vehicle Enter by Non-Allowed" lore: "&fPrevents Non-Allowed players from entering vehicles" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_VEHICLE_ENTER_BY_NONPLAYER:
name: "&bPrevent Vehicle Enter By Non-Player" lore: "&fPrevents Non-Players from entering vehicles" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_VEHICLE_EXIT_ALL:
name: "&bPrevent Vehicle Exit for All" lore: "&fPrevent anyone from exiting a vehicle" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_VEHICLE_EXIT_BY_NONALLOWED:
name: "&bPrevent Vehicle Exit by Non-Allowed" lore: "&fPrevents Non-Allowed players from exiting vehicles" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_VEHICLE_EXIT_BY_NONPLAYER:
name: "&bPrevent Vehicle Exit By Non-Player" lore: "&fPrevents Non-Players from exiting vehicles" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_VILLAGER_DAMAGE_BY_ALL:
name: "&bPrevent Villager Damage by All" lore: "&fPrevent a villager from taking damage from anyone" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_VILLAGER_DAMAGE_BY_ALLOWED:
name: "&bPrevent Villager Damage by Allowed" lore: "&fPrevents a villager taking damage from Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_VILLAGER_DAMAGE_BY_NONALLOWED:
name: "&bPrevent Villager Damage by Non-Allowed" lore: "&fPrevents a villager taking damage from Non-Allowed players" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_VILLAGER_DAMAGE_BY_NONPLAYER:
name: "&bPrevent Villager Damage by Non-Player" lore: "&fPrevents a villager taking damage from a Non-Player" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_VILLAGER_FIRE:
name: "&bPrevent Villager Fire" lore: "&fPrevents Villagers being set on fire" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_VILLAGER_TRADE_BY_ALL:
name: "&bPrevent Villager Trade by All" lore: "&fPrevents anyone from trading with a villager" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_VILLAGER_TRADE_BY_NONALLOWED:
name: "&bPrevent Villager Trade by Non-Allowed" lore: "&fPrevents a Non-Allowed player from trading with a villager" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_WATER_FLOW:
name: "&bPrevent Water Flow" lore: "&f" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_WATER_FLOW_TO:
name: "&bPrevents water flow" lore: "&f" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
PREVENT_WATER_PLACE:
name: "&bPrevent Water Place" lore: "&fPrevents a Non-Allowed player from placing water in the field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
REMOVE_FIRED_ARROWS_BY_NONALLOWED:
name: "&bRemove Fired Arrows by Non-Allowed" lore: "&fRemoves any arrows fired by a Non-Allowed player" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
REMOVE_FIRED_FLAME_ARROWS_BY_NONALLOWED:
name: "&bRemoves Flame Arrows by Non-Allowed" lore: "&fRemoves flame arrows fired by a Non-Allowed player" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
REPAIR_MAIN_HAND_ITEM:
name: "&bRepair Item in Main Hand" lore: "&fRepairs the item in an Allowed players main hand" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
RUN_COMMAND:
name: "&bRun Command" lore: "&fRuns a command when a player enters or leaves a field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
SNITCH_ON_ENTER:
name: "&bSnitch on Enter" lore: "&fAlerts the owner (if online) if a non-allowed player enters the Domain field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
SNITCH_ON_LEAVE:
name: "&bSnitch on Leave" lore: "&fAlerts the owner (if online) if a non-allowed player leaves the Domain field" icon_on: LIME_STAINED_GLASS_PANE
icon_off: RED_STAINED_GLASS_PANE
locked: false
This update also includes a large number of under-the-hood updates, removing unused code, refactored code and a number of other changes.
A full copy of the SAMPLE configuration file is below. Be sure to review and modify as needed.
A new block configuration option has been added that will change the visualization method from a full cube outline to just the corners - this is intended for large fields that might otherwise cause lag on visualizing.
Code (YAML):
visualize_corners: true
The directional spurs will be green if it is a valid field and red if it is not.
This visualization defaults to false - full visualization is still the default.
Some optimizations have been put in place for regular visualizations and these will continue to be worked on in the upcoming releases.
Also disabled the merge option when prevent resize is true:
Myriad Clans support is now here. Myriad Clans is free upon request for anyone who has purchased Domain.
NOTE: Myriad Clans is the preferred Clan plugin for Domain. SimpleClans support will be removed from Domain soon! To add a clan to your field, right click your domain block, select Edit then open for commands. You can then use the following command to add the clan:
/domain clan allow <clan tag>
Or to remove the clan from your field:
/domain clan disallow <clan tag>
A GUI menu for Myriad Clans, as well as a number of other integration features will be coming soon.
This update also contains a change to the code that handles overlapping fields, it should significantly reduce the load on the server while checking for an overlapped fields. If you experience any issues with this change, please let me know asap.
This update prevents Domain blocks from being broken down for parts. For example, if you had a Diamond Block as your Domain block, and you put the Diamond block on the crafting table would give you 9 diamonds.
Doing so from version 1.1.28 onwards will result in an error being sent to the player and the block being non-craftable.
This update addresses two different reported issues.
PREVENT_PROJECTILE_ITEM_FRAME flag was preventing players from being able to remove items from item frames.
/domain locate could potentially throw a null exception which was not being picked up correctly when checking if the player was the owner of the field, due to some recent changes made to accommodate admin blocks.
This update introduces the ability to create Admin blocks. Any Domain block can be converted to an Admin block, and once it is, any player with the domain.admin permission will have access to the block as though they were the owner. It also resets the owner
To create an admin block, place the block as normal, then open the block for commands via the Edit menu and then type in:
/domain adminblock
The admin blocks will be receiving some further feature updates in the near future - if you have something specific in mind for an admin block, please let me know!
This command will list all the fields you have access to (you are either the owner or in bypass mode) at your current location. The list includes a link to open the field.
The list is in format: * <Domain field name> - <Domain block type> [Open]
Any questions or concerns with this new command, please let me know!
This update blocks players from seeing a player in vanish/spectator mode when they click to view players in the field. Players with bypass mode turned on will also not show in the list.
This update adds some new flags designed to allow more granular flags on their fields.
PREVENT_DOOR_ACCESS_BY_NONALLOWED
PREVENT_GATE_ACCESS_BY_NONALLOWED
PREVENT_TRAPDOOR_ACCESS_BY_NONALLOWED
PREVENT_BUTTON_ACCESS_BY_NONALLOWED
PREVENT_PRESSURE_PLATE_ACCESS_BY_NONALLOWED
PREVENT_INTERACT_LEVER_BY_NONALLOWED
The pressure plate event fires continually while a player stands on it - the code is set so the particle effect and message to the user will only be displayed about every 5 seconds while they stand on a pressure plate in a field with the flag. It will continue to block access to them during that time however.
This update also corrects an issue with creating new fields which might allow overlapping of fields.
PREVENT_ITEM_PICKUP_BY_NONALLOWED was ignoring if the player was allowed which was preventing item pickup.
Domain blocks with colored display names were not being placed correctly as the color code characters were not being converted to the color prior to checking.
A bug was found and corrected that could cause block duplication when certain events occurred together with WorldGuard regions & Domain.
When WorldGuard prevented a field from being placed, 'ghost' fields were being created (leading to orphan fields) - a change has been made to the code to run a check after the event to see if the block was actually created, only then is the field saved.
The "/domain locate" command has been updated to allow a players name to be added (for players with domain.admin permission only)
/domain locate <player name>
This will list all the fields belonging to the player, and will give you options to teleport to the block, disable the block or delete the block.
Domain now uses the standard color codes with the & symbol instead of the #COLOR.x# codes - they will still work, but will be phased out in future versions.
The & color codes can now be used in the welcome/farewell messages, you can also use @p for the players name that is entering/leaving the field
You can now complete change the [Domain] prefix at the start of the messages by altering the display_name value in the config.yml file - This impacts the square brackets around it, it also supports the color codes.
A request was placed to prevent a field from being resized.
This is now possible using the following in each block configuration:
<block>.yml
Code (YAML):
prevent_resize: true
This will default to false and is an opt-in change only. When prevent_resize is active, the field cannot be resized unless the player is in bypass mode.
This update addresses a change to the /domain give command, as well as corrects an uncaught null error that could be reported to console.
Domain Give
The "/domain give <optional block name>" has changed to:
/domain get <optional block name>
Running the command without the optional block name will open the menu just as "/domain give" did.
The "/domain give" command is now used to give blocks directly to other players.
/domain give <player name or UUID><optional block name>
Leaving the block name off will still open the menu, but selecting the Domain block from the menu will give the block to the player specified. You can use /domain give with your own name instead of /domain get if needed.
Note: The player MUST be online to receive the block in order to make sure that they have space in their inventory etc.
The domain.admin permission is required for both "/domain give" and "/domain get"
Bug Fix
The console could receive a null error starting like:
Reports were received about lag caused by Domain, specifically in 1.14/1.14.1. This issue appears to be caused by unloaded chunks being referenced by the orphaned field check (which was part of the cleanup process)
This feature has been disabled and is now only accessible by manually activating the check. A future release will see it become a command option only.
Some commands have been been added for troubleshooting purposes only and should NOT be used unless part of the troubleshooting process. These commands require the domain.admin permission and are are not considered part of the normal commands run, as such, are subject to change/removal
/domain blocklistener - Turns the listener for blocks moving from/to (for example, lava flow) on/off [default is on].
/domain spawnlistener - Turns the listener for mob spawning on/off [default is on]
/domain entitylistener - Turns the listeners for entity damage and entity interaction on/off[default is on]
/domain movelistener - Turns the listener for player movement on/off - with this off, welcome/farewell messages, custom commands etc. will not work.[default is on]
/domain flycheck - Turns on/off the automatic check to see if players are flying.[default is on]
/domain cleanup - Turns on/off the automated cleanup processes.[default is on]
/domain orphancheck - Turns on/off the orphan field check (may cause lag if activated) [default is off]
The maximum number of blocks has been modified slightly to allow better control of block counts.
max_blocks in the block configuration will be taken (defaulting to 999 if no entry for max_blocks is found)
then permission based limits will be taken (defaulting to 0 if no permission found)
The higher number between these will then be taken and that will be the maximum.
Example 1:
config.yml
Code (YAML):
perm_limit_by_block: true
<block>.yml
Code (YAML):
max_blocks = 0
permission:
Would allow a maximum of 3 blocks.
Example 2:
config.yml
Code (YAML):
perm_limit_by_block: true
<block>.yml
Code (YAML):
max_blocks = 5
permission:
Would allow a maximum of 5 blocks
Example 3:
config.yml
Code (YAML):
perm_limit_by_block: false
<block>.yml
Code (YAML):
max_blocks = 1
permission:
Would allow a maximum of 3 blocks
This code change also removes LLAMA_SPIT from the events that monitor projectile hits, which should reduce the amount of console spam in debug mode when standing near a llama
This update addresses an issue with checking if a block is a ShopChest shop where the ShopChest plugin exists, but has failed to load correctly. When this happens, the API exposed functions returned null and caused a console error. This error is now captured and prevents the console error issue.
This update adds a new feature and addresses 1 bug.
Custom Commands
You can now run a custom command when a player enters or leaves a field - this could be used to set a player into creative mode, teleport them to the nether or just any other command you run on your server.
These commands run as though they are coming from console, so only players with domain.admin permission can set them.
How to use Custom Commands
Add the following flag to your block configuration:
Code (YAML):
RUN_COMMAND: true
Once the RUN_COMMAND flag is in place, you can right click on your Domain block, select Edit Field, then Open the field to commands. Once that is done (the Domain block will turn into a beacon) you can set the commands. Note: Do not include the leading / in the command.
Code (Text):
/domain entercommand tp @p 200 65 100
Would teleport any player who enters the field to location 200 65 100
Code (Text):
/domain entercommand mvtp @p world_nether
Would use the Multiverse plugin to teleport a player to the nether
Code (Text):
/domain entercommand gamemode creative @p
You can set it up so anyone leaving the field has a command run with the "/domain leavecommand" command
Code (Text):
/domain leavecommand gamemode survival @p
Keep in mind, these commands are run when you move into or out of the field - they do NOT run when teleporting. (This is to reduce the chance of a teleport loop taking place)
@p = player name
@u = player UUID
Placing yourself in Domain Bypass mode (/domain bypass) will allow you to enter the field without the commands being run. This is helpful in the case where you set up an automatic teleport or similar and need to modify the block.
If you have any questions, please let me know.
Bug fix: Item frames can no longer be broken by projectiles if the PREVENT_PROJECTILE_ITEM_FRAME flag is applied to the field. This was allowing skeletons to shoot map walls.
Limits can be placed per block, or across all blocks using the new configuration option "perm_limit_by_block" - if true, it will apply permissions per block, if false, it will limit by all blocks. It will default to true if no entry is in the config.
Code (YAML):
perm_limit_by_block: true
When true, players with the permission "domain.<blockname>.limit.<number>" will be limited to the block with a maximum of the number set.
Block name is the "block_key" value in your block configuration
Code (YAML):
block_key: grief_prevent
For example, you could assign permissions to a group that allows 3 grief_prevent blocks, 1 city block but no no_fly_zone blocks.
1.14 Ready! (as of spigot-1.14-R0.1-SNAPSHOT.jar - 2019/05/01)
Adds the following flags:
1.13 and 1.14 PREVENT_GROW_WHEAT - Prevents wheat from growing
PREVENT_GROW_SUGAR_CANE - Prevents sugar cane from growing
PREVENT_GROW_CACTUS - Prevents cactus from growing
PREVENT_GROW_MELON - Prevents melon from growing
PREVENT_GROW_PUMPKIN - Prevents pumpkin from growing
PREVENT_GROW_TURTLE_EGG - Prevents turtle eggs from growing
PREVENT_GROW_COCOA - Prevents cocoa from growing
PREVENT_GROW_CARROTS - Prevents carrots from growing
PREVENT_GROW_POTATOES - Prevents potatoes from growing
PREVENT_GROW_BEETROOTS - Prevents beetroot from growing
PREVENT_GROW_NETHER_WART - Prevents nether wart from growing
PREVENT_GROW_CHORUS_FLOWER - Prevents chorus flowers from growing (does NOT stop the plant growing, just the flowers)
PREVENT_SPONGE_ABSORB - Prevents sponges absorbing water
PREVENT_TAME_BY_NONALLOWED - Prevents animal taming by non-allowed players
PREVENT_BREEDING - Prevents animals from breeding
PREVENT_FIREWORK_LAUNCH_BY_NONALLOWED - Prevents fireworks from being launched by non-allowed players
PREVENT_SHEAR_BY_NONALLOWED - Prevents non-allowed players shearing aniamls (sheep/mooshroom)
PREVENT_SHEEP_DYE - Prevents sheep being dyed
PREVENT_SHEEP_REGROW_WOOL - Prevents sheep regrowing their wool
PREVENT_BUCKET_FILL_BY_NONALLOWED - Prevents buckets from being filled
PREVENT_PLAYER_WITHER_DAMAGE - Prevents all players taking wither damage in the field
PREVENT_ALLOWED_PLAYER_WITHER_DAMAGE - Prevents allowed players from taking wither damage in the field
PREVENT_MOB_WITHER_DAMAGE - Prevents mobs taking wither damage in the field
PREVENT_PLAYER_CONTACT_DAMAGE - Prevents all players from taking contact damage in the field (cactus, sweet berry bush)
PREVENT_ALLOWED_PLAYER_CONTACT_DAMAGE - Prevents allowed players from taking contact damage in the field (cactus, sweet berry bush)
PREVENT_MOB_CONTACT_DAMAGE - Prevents mobs from taking contact damage in the field (cactus, sweet berry bush)
1.14 only PREVENT_GROW_SWEET_BERRY_BUSH - Prevents sweet berry bushes from growing
PREVENT_INTERACT_COMPOSTER_BY_NONALLOWED - Prevents interaction with a composter by a non-allowed player
PREVENT_INTERACT_LOOM_BY_NONALLOWED - Prevents interaction with a loom by a non-allowed player
PREVENT_INTERACT_BARREL_BY_NONALLOWED - Prevents interaction with a barrel by a non-allowed player
PREVENT_INTERACT_SMOKER_BY_NONALLOWED - Prevents interaction with a smoker by a non-allowed player
PREVENT_INTERACT_BLAST_FURNACE_BY_NONALLOWED - Prevents interaction with a blast-furnace by a non-allowed player
PREVENT_INTERACT_CARTOGRAPHY_TABLE_BY_NONALLOWED - Prevents interaction with a cartography table by a non-allowed player
PREVENT_INTERACT_GRINDSTONE_BY_NONALLOWED - Prevents interaction with a grindstone by a non-allowed player
PREVENT_INTERACT_STONECUTTER_BY_NONALLOWED - Prevents interaction with a stonecutter by a non-allowed player
PREVENT_INTERACT_BELL_BY_NONALLOWED - Prevents ringing a bell by a non-allowed player
PREVENT_INTERACT_CAMPFIRE_BY_NONALLOWED - Prevents interaction with a campfire by a non-allowed player
PREVENT_INTERACT_LECTERN_BY_NONALLOWED - Prevents interaction with a lectern by a non-allowed player
ShopChest soft-dependency added, and will allow you to prevent creating, removing, buying from or selling to a ShopChest chest. This is an optional dependency, and uses the following flags:
Added a new option in the block configuration that would ignore the Y axis when placing or resizing a field, with the Y axis automatically setting itself to 0 & max build height. This allows an area to be completely claimed all the way up to the sky and all the way down to bedrock, without needing to set the corners manually.
This is an opt-in change. To activate the change, add the following to the block configuration:
Code (YAML):
ignore_y_axis: true
If you modify an existing block configuration, any blocks already placed will only change during their next resize.
The 'volume' block configuration option should be set to a suitably high value to allow the number of blocks.
Also added an automatic visualization of the block when you place the field.
Minor fix only - Corrected a spurious console log message that had the potential to spam the console if another plugin cancels a block place or block break event before Domain caught the event.
Added the ability to disable blocks after x days that the owner is offline.
This change requires that the player has logged on after this update - each time they log in will now update the last_seen value in the plugin and this will be used to decide if the block should be allowed to expire.
If the player has not been online since the update, then the value used will the first time they logged in after Domain was installed. If this is more than the days set in the offline days, this will cause them their fields to expire immediately.
To turn this change on, make the following changes
Config File
Code (YAML):
expire_blocks: true
Block Configs:
Code (YAML):
offline_days: 30
If this is not a new install of Domain, it is HIGHLY RECOMMENDED that you set expire_blocks: false until all the players who own fields have been online (or for a set number of days)
When the block expires, the field will be disabled, removing any protection flags that are in place, but it will NOT remove the block. If the player logs back on, they can enable their field again. Currently, an expired block cannot be broken (this may become available upon request)
If you have any questions, please let me know and I'll be happy to go over this in more detail.
A couple of minor bug fixes:
- Pressure plates were occasionally causing some null errors to be displayed in the console
- Some old enable fly flag code removed from player teleport events
This is a fairly big update which covers a number of changes and new features.
Large amount of code has been refactored to improve performance and ease of maintenance and future updates
Player tracking code modified
Domain field resizing code rewritten
Leaving the game with a block open for commands or resize will take them out of that state ahead of the player rejoining
open_field_for_command has been removed from the config and dropped from the commands
verbose_logging has been removed from the config and all verbose logging features have been rerouted to debug logging
/domain perm * has been removed and using that command will inform you of the commands to use instead (/domain allow|disallow|allowed)
/domain allowed added to list allowed players
Domain Block GUI modified significantly to remove the reduce the need for commands.
Main Menu Updated
Added - Renaming field
Added - Changing welcome message
Added - Changing farewell message
Added - Flag modifications (Flags assigned to the field can now be turned on/off by the block owner using the GUI)
Added - Permissions management - can now add/remove players using the GUI
Instructions and screenshots will be included in the discussion page
Orphaned fields (an orphan field is a field that has no block) will now be removed from the list of blocks.
Some examples of how this could happen:
If the block was placed in a WorldGuard region, Domain may register the field before WorldGuard cancels the block place event. This causes a field to be created with no block.
If a block was placed and then WorldEdit is used and it removes the block using //set (or similar)
The block was created, then destroyed when Domain was not active (for whatever reason)
Removing the orphaned fields does not remove them from the database, so it is possible to fix an orphaned field by placing the block type back in the same location. When Domain starts, the console will report all the orphaned fields that have been removed.
If I was to place a diamond block (which is what is being used for a City field) back at location 224, 79, -505, then after the next restart, this would no longer be an orphaned field.
A future change will allow admins to purge an orphaned field from the database (not implemented yet).
Added the list of flags to the tab completion when checking, allowing or denying flags (/domain flag allow <flag name>, /domain flag deny <flag name>, /domain flag check <flag name>)
Also added list of all online participants to permissions when adding/removing (/domain perm add <player name>, /domain perm remove <player name>)
To reduce the chance of the Domain Bypass command causing issues with other plugins that use the Scoreboard, the Domain Bypass command display will no longer utilize the scoreboard at all, and will instead be displayed at the top of the screen.
So it is going from this:
To this:
Unfortunately, this change removes the list of players in Bypass mode that previously showed in the scoreboard.
To allow them to still be looked up, any player in Bypass mode that ALSO has the domain.bypass.snitch permission will receive a list of players in Bypass mode.
Alternately, if you have the domain.bypass.snitch permission, you can run /domain bypasscheck - This will return the same information.
If you wish to turn the automated list on/off (it is displayed once per minute) - you can set the following in the configuration:
To turn it on:
display_bypass_snitch: true
To turn it off:
display_bypass_snitch: false
As part of this change, the following configuration option is no longer needed:
This flag will allow players who are allowed access to the field to fly within it. This is handled via a timer, so leaving the field, teleporting away etc. will not allow the flying to be abused.
If the player is not within the a field with the flag, they will have a number of seconds to land before their flying ability is removed. They will be warned once a second until that time has expired. The default is 3 seconds, but can be changed in the config with the fly_warn_seconds option.
As always, if you have any questions, comments or concerns, please let me know!
Due to an issue with snakeyaml, the § character used in the minecraft color codes was not always reading in correctly. This was resulting in an unknown character showing in game instead of the actual color code.
Instead of using the special character, now using #COLOR.<color>#. For example, it is now #COLOR.RED# instead of §4
This resolves the issue and hopefully makes it more obvious what colors are being used, without the need to look them up each time.
All player facing messages are now configurable via the lang.yml file.
Any messages not found in your lang.yml file (which may occur after updates) will automatically populate inside the file after it is displayed the first time, so there is no need to update the lang.yml file completely after each update.
(However - As with all configuration files that take time to modify, I would recommend keeping a backup)
If you are using Domain in English, then the smoothest transition would be to delete your lang.yml file and it will recreate itself when the plugin starts.
Updates:
Created Bypass logging (phased implementation)
This will help server owners keep track of any bypass misuse by those with access.
Any actions performed in bypass mode will be logged to the console like below. This is a phased implementation, not all actions will be recorded this way immediately.
Added Flower pots and all potted flowers to PREVENT_INTERACT - Non-allowed players can no longer place flowers or remove flowers from pots where PREVENT_INTERACT is active.
Also beginning splitting PREVENT_INTERACT into its component parts to allow more granular flags.
Added new flags:
PREVENT_INTERACT_ANVIL_BY_NONALLOWED - Prevents anvil (Anvil, Chipped Anvil & Damaged Anvil) access by non-allowed players
PREVENT_INTERACT_BED_BY_NONALLOWED - Prevents bed (all colors) access by non-allowed players
PREVENT_INTERACT_BREWING_STAND_BY_NONALLOWED - Prevents brewing stand access by non-allowed players
PREVENT_INTERACT_CHEST_BY_NONALLOWED - Prevents chest (Chest, Minecart Chest & Trapped Chest) access by non-allowed players
PREVENT_INTERACT_DISPENSER_BY_NONALLOWED - Prevents dispenser access by non-allowed players
PREVENT_INTERACT_DROPPER_BY_NONALLOWED - Prevents dropper access by non-allowed players
PREVENT_INTERACT_ENCHANTING_TABLE_BY_NONALLOWED - Prevents enchanting table access by non-allowed players
PREVENT_INTERACT_ENDERCHEST_BY_NONALLOWED - Prevents enderchest access by non-allowed players
PREVENT_INTERACT_FURNACE_BY_NONALLOWED - Prevents furnace (Furnace & Furnace minecart) access by non-allowed players
PREVENT_INTERACT_HOPPER_BY_NONALLOWED - Prevents hopper (Hopper & Hopper minecart) access by non-allowed players
PREVENT_INTERACT_SHULKERBOX_BY_NONALLOWED - Prevents shulker box (all colors) access by non-allowed players
These new flags also include a particle effect and sound when access is denied
Fixes:
Players outside a field could open a chest within the field regardless of their allowed status. This was caused by Domain checking the position of the player when checking for access rather than the position of the block. This has been corrected.
Same issue (and fix) with placing lava buckets from outside the field.
Additional debug logging has been put in place around visualization
Added a new option in the block configuration files that allows for inheriting the permissions of the parent. This is an opt-in update - if you do not update your block configuration files then it will not be applied.
Add the following to the block configuration to enable permission inheritance:
inherit_perms: true
If inherit_perms is set to true, when checking permissions, if the block is a child of a parent (for example, a mob_allow field is a child of the city field) then the permissions set to city will be inherited to the child, which can also have its own permissions as well.
An example you may want to use this would be inheriting permissions to a mob_allow block, but not to a city plot that you rent or sell access to.
Please let me know if you have any questions or concerns regarding the use of permission inheritance.
You can now limit the number of types of block a player can place, as well as limiting the number of blocks they can merge into it.
To enable this feature, enter the following into the block configuration:
max_merge: <number>
max_blocks: <number>
For example, if you wanted a maximum of 3 City blocks to be merged into a City block (plus the original block), you'd enter:
max_merge: 3
into the Blocks\city.yml file.
Or if you wanted to allow only 2 city fields per player, you'd enter
max_blocks: 2
into the Blocks\city.yml file.
Please note that a merged block does NOT count towards the maximum number of blocks. So if you limited a city to 3 merge fields (plus original block) and 2 city blocks - the player could potentially have up to 8 (2 x 4 merged together)
Please let me know if you have any questions or concerns!