Changelog
[0.0.4.0-beta1] - 2024-05-25
Warning/Disclaimer: This update introduces breaking changes. Please make sure to back up your world before updating to this version. These changes are necessary to enable the new features and to make the mod scalable for future updates and keep it maintainable. Note that I'll try to keep these changes to a minimum in the future. But this will happen from time to time to enable new features and to improve the mod.
Breaking changes relate to:
-
the way region data is stored and thus the way it is read/written.
-
how the flags are handled - in particular, the way flags are inherited and overridden by parent regions
-
the structure and naming of some commands - which have changed to be more consistent
Added
- Add commands to copy and clear region properties
- Add enhanced flag management and messages
- Add flag inheritance and overriding for regions
- Add new Local Region shape: Sphere
- Add the Global Region. It's the parent region of all Dimensional Regions. One region to rule them all!
- API: New events for flag checks. You can now listen to flag checks and cancel them if needed and listen for the result of a check and manipulate the outcome.
- Add new config options
Copy region properties
-
Add new command to copy properties from one Local Region to another Local Region:
/wp dim <dim> <region> copy flags to-local <target-dim> <target-region>
: copy all flags fromregion
totarget-region
/wp dim <dim> <region> copy flags to-dim <target-dim>
: copy all flags fromregion
totarget-dim
/wp dim <dim> <region> copy state to-local <target-dim> <target-region>
: copy the region state fromregion
and apply it totarget-region
/wp dim <dim> <region> copy state to-dim <target-dim>
: copy the region state fromregion
and apply it totarget-dim
/wp dim <dim> <region> copy players to-local <target-dim> <target-region> [group]
: copy all players fromregion
totarget-region
. To copy only a specific group (members, owners) add it as optional parameter/wp dim <dim> <region> copy players to-dim <target-dim> [group]
: copy all players fromregion
totarget-dim
. To copy only a specific group (members, owners) add it as optional parameter
-
Add new commands to copy properties from one Dimensional Region to another Dimensional Region
/wp dim <dim> copy flags to-local <target-dim> <target-region>
: copy all flags fromdim
totarget-region
/wp dim <dim> copy flags to-dim <target-dim>
: copy all flags fromdim
totarget-dim
/wp dim <dim> copy state to-local <target-dim> <target-region>
: copy the region state fromdim
and apply it totarget-region
/wp dim <dim> copy state to-dim <target-dim>
: copy the region state fromdim
and apply it totarget-dim
/wp dim <dim> copy players to-local <target-dim> <target-region> [group]
: copy all players fromdim
totarget-region
. To copy only a specific group (members, owners) add it as optional parameter/wp dim <dim> copy players to-dim <target-dim> [group]
: copy all players fromdim
totarget-dim
. To copy only a specific group (members, owners) add it as optional parameter
Enhanced Flags
-
Flags now have their own dedicated flag message which is shown when the flag is triggered.
-
It's now possible to mute flag messages for each individual flag (disabling the alert of the region will still mute all flags for the region).
-
Flag messages can contain placeholders for:
{player}
- name of player{flag}
- name of triggered flag{region}
- name of involved region{dimension}
- name of dimension{pos}
- position of flag activation source [X=x, Y=y, Z=z]
-
Flag messages also can be formatted by using the minecraft default string formatting.
- For example
&c{player}&r tried to break a block in &9{region}&r!
will result in a red player name and a blue region name. - Take a look at this tool for reference as well as the minecraft wiki.
- For example
-
The flag message examples are listed in the language file to enable I18n support for the examples.
-
Flags now have a FlagState instead of just being present/absent. When you add a flag, it will have the denied state to keep the same behavior as before. The different flag states are described as follows:
- Allowed - The flag is allowed for the region and will be checked.
- Denied - The flag is denied for the region and will be checked.
- Disabled - The flag is disabled for the region and will not be checked.
- Undefined - The flag is not defined for the region.
-
Flags can be disabled to keep the flags in the region but disable the flag check. This is useful when you need to disable a flag but don't want to lose the flag settings (flag message, muted state, etc.).
-
Add commands for enhanced flag management:
/wp flag local <dim> <local> <flag> state <Allowed|Denied|Disabled>
- set the state for a flag/wp flag local <dim> <local> <flag> override <true|false>
- sets the flag to override the same flag in child regions/wp flag local <dim> <local> <flag> msg set <msg>
- set a new message for the flag. Check the wiki for a description of possible placeholders for messages./wp flag local <dim> <local> <flag> msg clear
.../wp flag local <dim> <local> <flag> msg mute
...
-
Also added a command to list the region flags to the flag command
/wp flag local <dim> <local>
- Lists all flags of the region
The same commands of course work for Dimensional and the Global Regions:
/wp flag dim ...
to manage flag properties for a Dimensional Region/wp flag global ...
to manage flag properties for the Global Region
Flag inheritance & overriding for regions
- Child regions now inherit the flags of their parent regions. This means that every region will also inherit the flags of the corresponding Dimensional region and the Global Region.
- Parent regions can now override flags of child regions to enforce flags onto them.
- Flag pagination now includes parent flags (links to parent flags and the parent itself are shown behind the flag name). The region type is indicated by an indicator. G for Global, D for Dimensional and L for Local Regions.
- Flag list links for regions now also show number of flags from parent regions, which are considered for region checks in parentheses.
- The commands to list the flags of a region (
/wp ... list flag
) are now prompting all responsible flags of the region, including the flags of the parent regions. - A new command has been added to only prompt the flags only of the supplied region
/wp ... list region-flag
- Flag pagination now sorts flags by flag state and then by alphabetical order.
- Green - allowed flags
- Red - denied flags
- Gray - disabled flags
- Flags now have an internal category. This info will also be added to the wiki. The categories are a change to allow some other features to be added in the future. The categories are not final and may still change.
Sphere Local Region
- Sphere Local Regions are now available. The sphere is defined by the center and the radius. The radius can either be defined by a BlockPos or the radius size. Note that the radius is not counting the center block. Because of this, it is only possible to create spheres with an odd diameter.
- A sphere with radius 0 will only cover the center block.
- Add commands to create a Sphere Local Region:
/wp local <dim> create <region-name> Sphere <center-pos> <radius-pos> [<parent-region>]
/wp local <dim> create <region-name> Sphere <center-pos> <radius> [<parent-region>]
- You can change the area type of the region area at any time from a Cuboid to a Sphere and back.
- Support to create Spherical Regions with the RegionMarker will be added soon
Config
yawp-common.toml
- Add new permission config:allow_region_tp
- Decides whether teleporting inside/outside a region is allowed for everyone. Useful when using Waystones in regions for example.disable_cmd_for_non_op
. Defines whether mod commands are disabled for non-OP players. This is useful when you want to use the mod only for OPs or players which have their UUID entry in the config. Enable this if you don't want the YAWP command to be seen by non-permitted users.hierarchy_ownership
: Defines whether the region hierarchy should be considered for region ownership. If enabled, ownership of parent regions will automatically (implicit) apply to child regions. By default, this is set to true.
yawp-flags.toml
- Add new flag configs:remove_entities_for_spawning_flags
: Toggles the de-spawning of entities when using thespawning-*
flags.
break_flag_entities
andbreak_flag_entity_tags
are now also used for theplace-blocks
flag.
Global Region
- The Global Region has the same properties as the Dimensional Regions but is not limited to one dimension. It is the parent region of all Dimensional Regions and considered everywhere for flag checks.
- Add new commands for management of the Global Region:
/wp global info
./wp global clear flags|players|teams|group
./wp global add player|team|flag
./wp global remove player|team|flag
./wp global list flag|region-flag|group|dim
./wp global state alert|enable
./wp global reset
./wp global ...
- Add interactive CLI support for the Global Region
API
- Add FlagCheckEvent. This event is fired before a flag is checked. It can be canceled and in the progress can be used to cancel the flag check entirely.
- Add FlagCheckResult as an event. This event is fired after a flag check. It can be used to manipulate the outcome of the flag check. This event cannot be canceled.
- Add UpdateArea event as subtype of RegionEvent. This event is fired whenever the area of a region is updated. It can be canceled to prevent the update.
- Add RenameRegion event as subtype of RegionEvent. This event is fired whenever a region is renamed. It can be canceled to prevent the renaming.
Commands
- You can now add multiple flags at once by using the new command syntax:
/wp ... add flags <flag1> <flag2> ... <flagN>
/wp ... add all-flags
- You can also remove multiple flags at once using the new command syntax:
/wp ... remove flags <flag1> <flag2> ... <flagN>
- Add interactive CLI support for enhanced flag management
- Add new command to expand the area of a Local Region:
/wp local <dim> <local> area expand Cuboid [yMin] [yMax]
.- The optional parameters can be used to set a specific height.
- Omitting the parameters will set the region area to the Minecraft version specific build limits
/wp local <dim> <local> area expand Sphere [<inc>]
.- The optional increment can be used to set increment the radius by a specific amount (negative or positive)
- Omitting the parameter will increase the radius by 1.
- Add new command to rename a Local Region:
/wp local <dim> <local> rename <newName>
. - Add new commands to add and remove offline players from/to regions.
/wp local <dim> <local> add player <group> by-name <player names separated by space>
./wp local <dim> <local> remove player <group> by-name <player names separated by space>
./wp local <dim> <local> add player <group> by-uuid <player uuid>
./wp local <dim> <local> remove player <group> by-uuid <player uuid>
.- Note that you can define multiple names for adding and removing but only one UUID at a time.
- Same goes for the Global and Dimensional Regions as well.
- There are new commands to clear players, teams, and flags for all region types.
/wp dim <dim> clear players|teams|flags|group ...
/wp global clear players|teams|flags|group ...
/wp local <dim> <region> clear players|teams|flags|group ...
- Add new command to enable/disable all Local Regions in a dimension:
/wp dim <dim> state enable-local true|false
- Add new command to enable/disable flag alert messages for all Local Regions in a dimension:
/wp dim <dim> state alert-local true|false
- Add new command to delete all Local Regions in a dimension:
/wp dim <dim> delete-all regions forever seriously
- Add new command to reset the Dimensional Region:
/wp dim <dim> reset dim
- Add new command to reset all Local Regions in a Dimensional Region:
/wp dim <dim> reset regions
Changed
- YAWP can now be used in single-player (open to LAN) worlds. It is still a server-side only mod, but now also works for integrated servers / LAN worlds and single player worlds.
- Reworked the layout and design of the CLI to be more user-friendly and consistent for Local, Dimensional and Global Region types where possible.
- Change flag pagination for regions to include a link to the flag info as well as some quick links.
- Dimensional Regions now can be muted (as well as their flags, all or individually)
- Change Dimensional Region CLI to include support for muting regions.
- Rename spatial properties to area properties. This change also involves some commands and language keys.
- Rearranged the area properties CLI page, trying to give a more concise overview.
- Change command to update Local Region area:
- Old:
/wp region <dim> <region> area Cuboid <pos1> <pos2>
- New:
/wp local <dim> <local> area set Cuboid <pos1> <pos2>
- Old:
- When creating a Local Region you can no longer supply the owner of the region. Instead, you can optionally supply the
region parent:
- e.g.:
/wp local <dim> create <region-name> Cuboid <center-pos> <radius-pos> [<parent-region>]
- The argument will try to suggest only owned regions that fully include the new region. This will also be checked when executing the command. If the provided region is invalid, the Dimensional Region will be used instead.
- Omitting the parent, will also set the Dimensional Region as parent
- e.g.:
- Creating a Local Region with the RegionMarker and the correlated command now also requires you to provide the parent
region.
- If there are multiple valid options available, you are required to select one.
- If no parent is provided, the Dimensional Region will be used as parent.
- Improved RegionMarker indicators for marked blocks. It's item name now shows colored indicators for
- the amount of blocks which needs to be marked for a valid area
- a selected teleport position
- The RegionMarker now also prompts feedback for marked blocks and a valid area to the player.
- Rename affiliation to groups. This change also involves some commands and language keys.
- Change commands to manage groups (former known as affiliations):
- Old:
/wp region <dim> <region> add|list|remove affiliate player|team <member|owner> ...
- New:
/wp local <dim> <local> add|list|remove group player|team <member|owner> ...
- Old:
- Change commands to manage Local Regions:
- Old:
/wp region <dim> <region> ...
- New:
/wp local <dim> <local> ...
- Old:
- The spawning flags no longer remove entities with the PersistanceRequired tag or a custom name.
- Renaming a Stick to create a RegionMarker is now disabled to prevent permission issues. This will come back in a future update with an overhaul of the RegionMarker.
- Moved the region name examples (used when creating a new region) to the language file to enable I18n support for the examples.
- Changed license from LGPL v3 to AGPL v3.
- Change Dimensional Region state CLI to toggle the state (enable and alert) of all Local Regions in the dimension.
- Rename config value
break_flag_entities
tocovered_block_entities
- Rename config value
break_flag_entity_tags
tocovered_block_entity_tags
- The region add flag command now has a new syntax. The state and override flag are optional and default to Denied and
false.
- Old:
/wp ... add flag <flag>
- New:
/wp ... add flag <flag> [state] [override]
- Old:
Removed
- Remove UpdateRegionEvent introduced in 0.0.3.0-beta1. This is replaced by the UpdateArea and RenameRegion events.
Fixed
- Fix some cli typos
- Fix parent - child hierarchy inconsistency when deleting children
- It is no longer possible to delete regions which have a Local Region as parent
- Lang key fixes... well more like a whole overhaul of the language keys
- Fix region teleport command not working properly for non-ops
- Fix entry point for ignite-explosive flag mixin
- Fix ignite-explosive flag not considering explosions not caused by players
- The command
/wp marker create ...
and/wp dim <dim> create local ...
now properly checks for permission for the parent region