diff --git a/docs/modules/blocks/structures.mdx b/docs/modules/blocks/structures.mdx
index d535d9d8..e53e7f97 100644
--- a/docs/modules/blocks/structures.mdx
+++ b/docs/modules/blocks/structures.mdx
@@ -45,6 +45,7 @@ Structures are a very powerful feature that can be used to implement an endless
| `trigger` | PropertyRequiredDynamic filter which triggers placement and clearing of structures. | [Dynamic Filter](/docs/modules/mechanics/filters#dynamic-filters) |
| `location` | The location to place the structure at. The structure's `origin` will be at this point.
*Mutually exclusive with `offset`.* | X,Y,Z |
| `offset` | Relative position to place the structure at. The structure will be translated by this amount from its original location.
*Mutually exclusive with `location`.* | X,Y,Z | `0,0,0` *(structure placed at its original location)* |
+| `update` | Placed blocks will update upon interaction, e.g., redstone, and invalid block placements such as floating ladders, "popping" off. *May impact performance for large fills.* | true/false | true |
### Examples
diff --git a/docs/modules/mechanics/actions-triggers.mdx b/docs/modules/mechanics/actions-triggers.mdx
index f3c919f2..4f61558c 100644
--- a/docs/modules/mechanics/actions-triggers.mdx
+++ b/docs/modules/mechanics/actions-triggers.mdx
@@ -17,6 +17,7 @@ In the future, some features that are currently used in Kits may be transferred
|---|---|
| ` ` | A group of actions running in a sequence. |
| ` ` | Changes the scope that an action applies to. |
+| ` ` | Loop actions without recursions. |
| `` | A message that is sent to the player. |
| `` | A sound that is played for the player. |
| `` | Sets a new value for a [Variable](/docs/modules/mechanics/variables). |
@@ -25,6 +26,7 @@ In the future, some features that are currently used in Kits may be transferred
| `` | Places blocks in a block-bounded region. |
| `` | Places a structure at a specified location when triggered. |
| ` ` | Finds and replaces certain items. |
+| ` ` | Enchants the targeted item. |
| ` ` | Allow players to pay with items in their inventory to trigger an action. |
| `` | A player-scoped kit that applies velocity to the player. |
| `` | Teleport a player to a specific location. |
@@ -46,6 +48,13 @@ In the future, some features that are currently used in Kits may be transferred
| `inner` | Specify the scope of the inner action. | `player`, `team`, or `match` |
| `outer` | Specify the scope outside of an action.
*In some cases, this can be omitted as PGM will automatically infer the outer scope.* | `player`, `team`, or `match` |
+### Repeat Attributes
+
+| Attribute | Description | Value |
+|---|---|---|
+| `times` | The amount of time to repeat.
*Non-whole numbers will be rounded down. Negative numbers will cause no iterations.* | Expression |
+| `filter` | Filters when this loop should be active. This will be checked as many time as the loop is ran. | [Filter](/docs/modules/mechanics/filters) |
+
### Message Attributes
| Attribute | Description | Value | Default |
@@ -62,20 +71,36 @@ In the future, some features that are currently used in Kits may be transferred
| Element | Description | Value |
|---|---|---|
-| `` | A list of replacements.
**Note:** In the future, more replacements such as player names will be supported. | Replacements Sub-elements |
+| `` | A list of replacements.
**Note:** In the future, more replacements will be supported. | Replacements Sub-elements |
| Sub-element | Description |
|---|---|
| `` | A numerical placeholder. |
+| `` | A player's name placeholder. |
##### Decimal Attributes
| Attribute | Description | Value |
|---|---|---|
-| `id` | Unique identifier used to reference this decimal from other places in the XML. | String |
+| `id` | Unique identifier used to reference this decimal placeholder from other places in the XML. | String |
| `value` | RequiredThe variable this decimal should evaluate. It can be used with formulas. | Expression |
| `format` | Customize how the decimal should be displayed, e.g. `#.00`. | [Java DecimalFormat pattern](https://docs.oracle.com/javase/8/docs/api/java/text/DecimalFormat.html) |
+##### Player Attributes
+
+| Attribute | Description | Value | Default |
+|---|---|---|---|
+| `id` | RequiredUnique identifier used to reference this player placeholder from other places in the XML. | String |
+| `var` | RequiredThe exclusive player-scoped variable to check for. | [Variable](/docs/modules/mechanics/variables) |
+| `style` | The style to display the player's name in. | `plain`, `color`,
`fancy`, `verbose` | `verbose` |
+| `fallback` | If no player has been assigned this variable, set the text to display instead. | String |
+
+###### Style Examples
+
+| Description | Screenshot
+|---|---|
+| `plain` - no formatting at all.
`simple_color` **(discouraged)** - team color formatting without click-to-teleport hover.
`color` - the player's name with team color with click-to-teleport hover.
`fancy` - contains fancy formatting, flairs, colors, click-to-teleport hover, and special formatting from Community or third-party plugins.
`tab` **(discouraged)** - formatted as a tablist entry with team color, flairs, death status, self, etc.
`verbose` - like `fancy`, but includes full nickname of nicked users to server operators. | ![Unnicked player placeholder in chat](/img/player-replacement-action-chat-unnicked.png 'Unnicked player placeholder in chat')
![Server operator perspective of the player placeholder in chat](/img/player-replacement-action-chat-op.png 'Server operator perspective of the player placeholder in chat') |
+
### Sound Attributes
| Attribute | Description | Value | Default |
@@ -107,17 +132,19 @@ In the future, some features that are currently used in Kits may be transferred
| `material` | RequiredThe filling material. | [Single Material Pattern](/docs/reference/items/inventory#material-matchers) |
| `filter` | Filters which blocks get affected. *May impact performance for large fills.* | [Filter](/docs/modules/mechanics/filters) |
| `events` | Calls events for block placements and removals, which will make it affected by other filters and PGM features. *May impact performance for large fills.* | true/false | false |
+| `update` | Placed blocks will update upon interaction, e.g., redstone, and invalid block placements such as floating ladders, "popping" off. *May impact performance for large fills.* | true/false | true |
### Paste-Structure Attributes
-| Attribute | Description | Value |
-|---|---|---|
+| Attribute | Description | Value | Default |
+|---|---|---|---|
| `x` | The X coordinate of the location to paste the structure, measured in east-west. | Expression |
| `y` | The Y coordinate of the location to paste the structure, measured in altitude. | Expression |
| `z` | The Z coordinate of the location to paste the structure, measured in north-south. | Expression |
| `structure` | The structure to paste. | [Structure ID](/docs/modules/blocks/structures) |
+| `update` | Placed blocks will update upon interaction, e.g., redstone, and invalid block placements such as floating ladders, "popping" off. *May impact performance for large fills.* | true/false | true |
-### Replace Item
+### Replace-Item
#### Sub-elements
@@ -135,6 +162,14 @@ In the future, some features that are currently used in Kits may be transferred
| `ignore-metadata` | Filters which entities to remove. | true/false |
| `amount` | Match for item stacks that have a certain amount of items in a range. | Range |
+### Enchant-Item Attributes
+
+| Attribute | Description | Value |
+|---|---|--|
+| `enchantment` | An item enchantment. | [Enchantment Name](/docs/reference/items/enchantments) |
+| `level` | The specified enchantment's level. | Expression |
+| `ignore-metadata` | Filters which entities to remove. | true/false |
+
### Take-Payment
#### Sub-elements
diff --git a/docs/modules/objectives/monument-modes.mdx b/docs/modules/objectives/monument-modes.mdx
index e8ceb472..81799c55 100644
--- a/docs/modules/objectives/monument-modes.mdx
+++ b/docs/modules/objectives/monument-modes.mdx
@@ -22,9 +22,10 @@ Each `` has configurable characteristics that define it.
| Attribute | Description | Value | Default |
|---|---|---|---|
| `id` | Unique identifier used to reference this mode from other places in the XML. | String |
-| `name` | The custom mode display name, used for the mode change notification. | Formatted Text |
+| `name` | The custom mode display name, used for the mode change notification.
**Note:** This is required if `material` is not set. | Formatted Text |
| `filter` | Filter that triggers mode countdown. | [Dynamic Filter](/docs/modules/mechanics/filters#dynamic-filters) |
-| `material` | RequiredThe material the core/destroyable will change to. | [Single Material Pattern](/docs/reference/items/inventory#material-matchers) |
+| `action` | Trigger a specificed action when this mode is activated.
**Note:** This is required if `material` is not set. | [Action ID](/docs/modules/mechanics/actions-triggers)
+| `material` | The material the core/destroyable will change to. | [Single Material Pattern](/docs/reference/items/inventory#material-matchers) |
| `after` | RequiredThe time from the start of the match until this mode takes effect. If a filter is defined, then it will be the time since the filter passes `ALLOW`. | [Time Period](/docs/reference/misc/time-periods) |
| `show-before` | The time before a mode is transitioning to show it in the boss bar. If `show-before` is set to 0, the mode is not shown in the boss bar at all. | [Time Period](/docs/reference/misc/time-periods) | 1m |
diff --git a/static/img/player-replacement-action-chat-op.png b/static/img/player-replacement-action-chat-op.png
new file mode 100644
index 00000000..bba6f89a
Binary files /dev/null and b/static/img/player-replacement-action-chat-op.png differ
diff --git a/static/img/player-replacement-action-chat-unnicked.png b/static/img/player-replacement-action-chat-unnicked.png
new file mode 100644
index 00000000..cddae61d
Binary files /dev/null and b/static/img/player-replacement-action-chat-unnicked.png differ