Changelog
- It is now supported to update old Fetchr installations to the current release
- Updating version 5.0.1 and prior is not supported and will print error messages
- It is now always supported to change the Minecraft version without re-downloading Fetchr
- Added Quick Actions dialog
- Credits for people that do not have a player head block now have a profile icon next to their name on the sign if their Minecraft in-game name is known.
- It is now fully supported for extension packs to alter or add to the lobby.
- Images in the resourcepack are saved more efficiently now and have metadata stripped
- The topmost item pool display chest is no longer forced to be a double chest, and may be a single chest depending on the item pool now
- Compatibility warning spam will show in all past and future versions now, even if the future version has changes that would normally prevent the datapack from loading
- Most of the data and resource pack are now disabled when playing in an unsupported version
- The only exception to this is the languages from the resource pack, and the ticking function which is responsible for posting the error message
- The HUD now updates after every reload and applies changes to selected components of players. New components are currently not automatically added. to existing player's HUDs
Updating a previous installation
Always do a backup of your world before updating! There is a chance of corruption
- Download the world download
- Unzip the zip file
- Copy and replace all files from the world download in your save file
When updating, player-placed blocks are preserved if possible, and dropped if the original block has changed compared to the new lobby version. If the part of the lobby has been entirely removed (like the machinery), blocks are dropped at the lobby spawn, otherwise they are dropped were they used to be placed.
For Fetchr versions that still had the machinery, the lobby will be moved slightly. In case there is a player-placed structure that partially intersects with the bounding box of a lobby section, the lobby section including that part of the player-placed structure will be moved, slicing the player-placed structure.
If you create a backup, you can safely test how the lobby update treats your lobby.
Entities that were changed will have their changed data updated, while preserving any changes that may have been made by the player (like switching the armor of an armor stand)
Quick Actions Dialog
A static quick actions dialog can now be accessed when pressing G by default
(see “Quick Actions” keybind in the Miscellenaeous section).
The Quick Actions dialog is only available when playing in Minecraft version 1.21.6 or later.
Quick actions allow:
- Genreate a random card
- A confirmation dialog to end the game will be shown if the player is currently in a game
- Genreate a card from seed
- A confirmation dialog to end the game will be shown if the player is currently in a game
- Return to Lobby or Join Game
- If the player is in the lobby, attempts to join a game, otherwise returns to the lobby
- Enter Spectator Mode
- During the game, allows to enter spectator mode
- Move Players to Lobby or Spawn Preview
- During an active game, moves all players to the lobby
- When the spawn preview is ready, moves all players to the spawn preview
- Reveal Bingo Card
- During a Concealed Card run, reveals the Bingo Card.
Since there is no way to make the Quick Actions screen dynamic, all options will always be shown, even if they are not releveant.
You can also access the Quick Actions from the Pause Screen, after clicking
“Fetchr Options”. The Quick Actions screen navigated to from this screen behaves differently and is dynamically generated with only relevant actions visible.
Profile pictures in the credits room
All signs mentioning player names now display a profile picture if the in-game name of the creditee is known, and they don't already have a player head associated with them.
Technical Changes
- During a lobby update, all marker entities inside a lobby structure may be deleted.
- Everything in the build datapack and resoucepack is now part of an overlay and no longer inside the root
dataandassetsdirectories, with the exception of language files.
Registering a lobby structure
-
Use fetchr:registries structures
-
id- (namespaced id) The id of your structure file -
override_id(optional, namespaced id) Should be left empty for structures you define. Can be used to override a structure from a foreign pack (e.g. vanilla Fetchr) with a different structure file you define. -
version(int) The numeric version of the structure. Should be changed when your structure file is updated, so that the lobby can be updated.This should be unique for the combination of
idandoverride_id. -
entrance_positionint array of length 3. Indicates the position of this structure's entrance. If the x position is set higher than 1, it is currently not supported to have any blocks in front of the entrance. -
after_structure(optional, namespaced id) The id of the structure to place this structure after. This can be used to insert a structure after another known structure. If set, this structure will be placed after the existing structure, or a structure that has set the sameafter_structure.This should not be set to a structure of your own pack. The order of your structures will be preserved. If you want to insert a structure after one of your own structures, simply set it to the same
after_structureas the other structure and register it later.
Removing a structure after it has been added is fully supported (e.g. if your pack is uninstalled).
#fetchr:lobby_update/manipulate_special_block & #fetchr:has_special_lobby_update_behavior tags
During a lobby update, if a block was changed in your structure, this change will be applied to the existing structure. In case this block has been altered by the player, it will be dropped. This will do a strict comparision, including nbt data and block states.
In some cases this can be too strict. For example, vanilla fetchr handles doors and player heads specially, and makes sure doors that were only opened or closed, and player heads that have additional data from a previous minecraft version when profile data was still resolved and saved on the block are treated equally.
You can add blocks you want to handle specially to the
#fetchr:has_special_lobby_update_behavior block tag. If you do this, in case
this block is detected altered, functions in the function tag
#fetchr:lobby_update/manipulate_special_block will be called.
#fetchr:lobby_update/manipulate_special_block context:
- location: This function will be executed at the location of the old block that has changed and will be dropped if there is a difference between this block and the previous unaltered structure
- macro arguments:
reference_x: The x location of the reference. The reference is an unaltered version of the lobby. This location will contain the unaltered block
You may alter either the block at the reference or the block that is compared against to make them equal, preventing the block in the lobby from being dropped.
You should check whether both the block in the reference and the old block are a block you want to handle.
#fetchr:lobby_update/manipulate_updated_entity
This function tag can be used to do additional changes to an entity after it has been updated.
Context:
- current entity (@s): The entity that has been updated
- location: The location of the entity
@e[tag=fetchr.current_new]: The unaltered new entity as it is defined in your structure
#fetchr:lobby_update/add_legacy_structures
This function tag can be used to update a lobby of an older version of fetchr.
You do not need this for updating structures when using this version of Fetchr or beyond. This is only for updating lobbies from 5.1-beta1 - 5.3-beta5.
Add the structures that would have been there in your version configured correctly to storage io.fetchr:structures structures.
id should be the namespaced id of the structure which matches the structure file of the new structure.
entrance_position should be the entrance position according to the old structure
legacy_id should be the id of the structure file which produces the structure as it has been part of the old lobby
#fetchr:lobby/generated
This function tag is called after the lobby has been genreated either for the first time, or a lobby update has been completed.
Use this to e.g. spawn marker entities. Make sure your marker entity doesn't exist already from a previous generation.
You should also run this function when your datapack is loaded for the first time and the score $lobby_genreated in fetchr.state equals 4.
Other new function tags
-
#fetchr:goal_and_item_detection/achieved_goal: Any goal has been achieved@s: Player who got the last item@a[tag=fetchr.in_current_team]: Players who are in the team achieving the goal
-
#fetchr:goal_and_item_detection/achieved_20_no_bingo@s: Player who got the last item@a[tag=fetchr.in_current_team]: Players who are in the team achieving the 20 no bingo
-
#fetchr:goal_and_item_detection/achieved_bingo@s: Player who got the last item@a[tag=fetchr.in_current_team]: Players who are in the team achieving the bingo
-
#fetchr:goal_and_item_detection/achieved_blackout@s: Player who got the last item@a[tag=fetchr.in_current_team]: Players who are in the team achieving the blackout
-
#fetchr:goal_and_item_detection/achieved_lockout@s: Player who got the last item@a[tag=fetchr.in_current_team]: Players who are in a team winning the lockout race. Maybe players of multiple teams in case of a tie.
-
#fetchr:goal_and_item_detection/finished_points_race: The points race ended.@a[tag=fetchr.in_current_team]: All players who were in a winning team
-
#fetchr:goal_and_item_detection/item_gotten: A player got an item that is on
the card@s: The player who got the item@a[tag=fetchr.in_current_team]: All players who are in@s' team- Macro parameter
color: The color of the team
-
#fetchr:goal_and_item_detection/item_gotten_and_card_updated: Player @s got
an item that is on the card. Will be called after the card has been updated, and potentially a goal has been detected and announced.@s: The player who got the item@a[tag=fetchr.in_current_team]: All players who are in@s' team- Macro parameter
color: The color of the team
-
#fetchr:game/tickTicking function that is called while a game is in
progress -
#fetchr:lobby/tick: Ticking function that is called while the lobby is
loaded by at least one player -
#fetchr:spawn_preview/tick: Ticking function that is called while the spawn
preview is available -
#fetchr:player_tick: Ticking function that is called for every player@s: The current player who is in the lobby- Position: Function is executed at the player's location
-
#fetchr:game/player_tick: Ticking function that is called for every player
in a running game@s: The current player who is playing in the game- Position: Function is executed at the player's location
-
#fetchr:lobby/player_tick: Ticking function that is called for every player
in the lobby@s: The current player who is in the lobby- Position: Function is executed at the player's location
-
#fetchr:spawn_preview/created: The spawn preview area has been created -
#fetchr:spawn_preview/player_entered: Player@sentered the spawn preview
area -
#fetchr:spawn_preview/teleported_all_players: All players have been
forcefully teleported to the spawn preview area -
#fetchr:spawn_preview/joined_team: During the spawn preview phase, a player
has joined a team. -
#fetchr:start_sequence/start_sequence: The “start game” sign has just been
activated, and the spawn sequence starts -
#fetchr:start_sequence/players_start_falling: Players start falling as part
of the spawn sequence -
#fetchr:start_sequence/all_players_landed: Players landed as part of the
start sequence -
#fetchr:start_sequence/advance_countdown: Countdown before a game starts
decreases -
#fetchr:start_sequence/countdown_ended: The countdown ended and the game
starts -
#fetchr:game/ended: A card generation was requested, and the current game
has ended (players returned to lobby, game state changed, etc). The card generation will take place after this tag has been called. -
#fetchr:game/revealed_concealed_card: While the concealed card setting is
active, player@shas revealed the card. -
#fetchr:game/joined_as_spectator: Player@shas entered a running game as
a spectator -
#fetchr:dialog/add_to_quick_actions: The dynamic Quick Actions dialog
acessible from the pause menu under Fetchr Options is about to be generated.Use this tag to add your own Quick Actions.
Note that this is not related to the Quick Actions dialog accessible from the
Ghotkey- storage
io.fetchr:dialog dialog: The dialog to show to the user. This is always a typemulti_actiondialog.
- storage
-
#fetchr:lobby/player_returned: Player@shas returned to the lobby -
#fetchr:lobby/teleported_all_players: All players have been forcefully
teleported to the lobby -
#fetchr:confirmed_operator_status: Player@shas successfully confirmed
their operator status -
#fetchr:lobby/before_item_pool_chest_incremented: During item pool chest
generation, a new chest is about to be added -
#fetchr:lobby/item_pool_chest_incremented: During item pool chest
generation, a new chest has been added -
#fetchr:lobby/item_pool_chests_generated: The item pool chest generation has
completed -
#fetchr:hud_component_updated: A HUD component has been updated after a
reload. You can do custom updates for your components here to support older versions of your pack being updated -
#fetchr:item_pool_changed: The item pool has changed.
Bug Fixes
- Fixed compass player position icon showing colors that are slightly off (due to the image using an outdated palette)
- Fixed “This setting will only take affect after generating a new card” hint showing an incorrect non-existing translation key. (#302)
- Fixed scaffoldings dropping when reloading (or regenerating the item pool display) if the item pool exceeds a certain size (#301)