- Thread starter
- #1
It's finally here - they're both here! After two years of development, here is an update packed with fun new stuff and major re-architecturing so we can do even cooler stuff in the future (hint: achievements).
If you experience any issues completing maps, please tell us immedatiely.
TL;DR
- Parties
- /challenge suspend
- /chat hide
- Completely new timers
Forgive me if I screw anything up, I'm very tired as of right now. Here's a summary:
Maps, Checkpoints, and Challenges
The map completion message has been overhauled.
Better map and challenge complete messages
- now shows the time's rank always
- shows whether it was a PB or Server Record
- If the player is white, it shows how many points they have to go 'til blue
- If blue and in HC, it shows how many maps left
- If you beat HC, it shows a nice new message
- If you get a cosmetic for beating a challenge, it now tells you that.
Mid checkpoints can now give food.
/checkpoint ffa and /checkpoint hc have changed functions. These now kill you. They will cause you to respawn at the relevant checkpoint. To facilitate the transition, /checkpoint ffa requires you to accept a warning when invoked. This will be removed later once people had adjusted.
Checkpoint modes have been removed in favour of a "current map", which informs where you will respawn at.
In order to be able to better track when players are in maps and to implement these other features, /call and /bring have been changed slightly. /call-ing into a map will now consider you "in" that map, which will reset you (incl gamemode). We know this isn't ideal for spectating, but spectating needs an overhaul anyway, which will happen sometime in future. On the plus side, whites and blues can now use /bring.
Maps can now be assigned a resource pack. This will be applied to the user upon map join, and will be removed when they leave. Note that, as always, server-supplied resource packs are voluntary and the client may reject them.
Player health, max health, food, saturation, fire status and status effects are now reset on player reset.
Player reset occurs when you join a map (through /c join, join signs or clicking cp0 for the first time) or do /spawn.
Players are no longer considered to be in a map when doing /spawn. Respawning at a checkpoint will cause a player to be considered in that map.
Players' completion percentage in /checkpoint points and the chat messages that show up when crossing a threshold are now consistent with the rarity tiers.
Hexa progress is now announced on every x66th stage, not just 66, 166 and 266.
You can edit signs with a feather. Just click on a sign with a feather to edit it. You must be able to build (in survival/creative & have permissions) in order to edit it. Note that due to a vanilla bug, colours are lost when editing.
You can now suspend challenges with /challenge suspend. There are a few caveats, but in general you can go and play maps, build. participate in events, and more safely while your challenge is suspended. Also added /challenge restart.
Added a new challenge modifier: No Damage.
- Reworked /checkpoint completed & merged /checkpoint ffa into /checkpoint completed.
- Similar functionality as /challenge completed.
- Two flavors:
- /checkpoint completed [player <player>] [page <page>] [comparing <compare-mode>]
- Lists a player's completed maps at a given page, sorted by a given compare-mode.
- /checkpoint completed [player <player>] map <map-name>
- Shows whether the player has completed the specified map.
- Reworked /checkpoint uncompleted [player <player>] [page <page>] [comparing <compare-mode>]
- Similar functionality as /challenge uncompleted.
- Shows the uncompleted maps of a given player at a given page, sorted by a given compare-mode.
- Added /challenge completed
- Similar functionality as /checkpoint completed.
- Two flavors:
- /challenge completed [player <player>] [page <page>] [comparing <compare-mode>]
- Lists a player's completed challenges at a given page, sorted by a given compare-mode.
- /challenge completed [player <player>] challenge <challenge-name>
- Shows whether the player has completed the specified challenge.
- Removed /challenge list in favor of this command.
- Added /challenge uncompleted [player <player>] [page <page>] [comparing <compare-mode>]
- Similar functionality as /checkpoint uncompleted.
- Shows the uncompleted challenge of a given player at a given page, sorted by a given compare-mode.
Timers
Timers have been completely rewritten.
There are now multiple types of timers: Map, Challenge, Custom, and Special.
Map and Challenge timers are per-map/challenge. They only work on the map/challenge they were created for.
Custom timers are created and managed by scripts with the 'timer' namespace..
Timer terminology has been clarified:
"invalidated" now specifically means that the timer is completely invalid and the run is void.
"nullified" now means the timer will report no time but the run is still valid (previously called an "invalidated time").
Timer invalidation is a bit stricter (so we can track people better).
The time format has been modified:
It is mm:ss.mmm when the time is less than an hour.
It is HHh mm:ss.mmm when the time is less than a day.
It is DDd HHh mm:ss.mmm otherwise.
These changes are intended to help human parsability.
Chat
Chat channels have been added. These are generally only used when in parties, but they also apply to team chat as well (which now uses the new system).
You can use /chat say <channel> <message> to send a message in a particular channel, or use /xchat <message> as a shorthand (e.g. /gchat = global chat, /pchat = party chat, /tchat = team chat). To have your messages go to a particular channel by default, use /chat setchannel <channel>. Note that these commands cannot be used in scripts, to prevent impersonation.
/chatpling was renamed to /chat ping enable|disable and is now no longer a toggle.
You can now hide chat:
The server now respects your chat options. When you set chat (in Chat Settings) to Commands Only, you will now only receive command and system messages (including scripts). /chat hide (inverse: /chat show) also hides global chat, but allows you to continue talking in party chat. You can also turn chat colours off, if you, like, really want to.
Despite being system messages, join/quit messages are also suppressed on Commands Only (only - not /chat hide) for true zen. Your own join and quit messages are exempt however.
Parties
You can now create parties with /party create. The creator of the party becomes the party leader. The party leader can invite others players to join with /party invite <player>. Party members get their only private chat channel that they can communicate in. You can also see the death messages of your fellow party members. When a party leader joins a map or challenge, all the party members will be warped to that map. If you don't like that, you can turn it off with /party warp false. The party leader can also summon all party members to their current map or challenge at any time with /party summon.
Dealing with players
You can now /unhide players you have previously /hide-n.
By popular demand, /hide all and /unhide all have also been added.
You can now /block and /unblock (non-staff) players.
Mute and ban messages have been greatly improved. They will now show you the time remaining (where applicable) in a human readable format (e.g. 3 days, 18 hours) instead of an incomprehensible timestamp. The chat announcement messages for mutes, kicks and bans have also been cleaned up.
Scripts
Player#canSee(Player) has been added to scripts - it returns true only if the player can see the other player (e.g. /hide and /block cause it to fail).
Player constructors will now return null instead of throwing an exception if they do not find a player.
There is also a new Player constructor - Player(String name, Player visibleTo). It will return null if a player was found but is not visible to visibleTo. This does not apply when using UUIDs. You can use this to prevent players from checking if staff are online.
Player#invalidate() and Player#invalidateTime() have been removed, as they do not make sense anymore. Usages of these functions on Zero will be converted by staff.
You can obtain timers using timer::getMapTimer(Player player, String mapcode), timer::getChallengeTimer(Player player, String challengecode), timer::getCustomTimer(Player player, String tag), and timer::getSpecialTimer(Player player, String tag). These will return map, challenge, custom, and special timers respectively, or null if no such timer exists on the player.
You can remove custom timers with timer::removeCustomTimer(Player player, String tag). You should do this when you don't need a timer anymore.
You can construct custom timers by instantiating the timer::Timer type. You have the option to set whether the timer will send messages to the player when started or finished, and whether the timer can be invalidated by stuff like /warp.
Never store a Timer instance in a namespace variable. It will break on you silently. ALWAYS use timer::getCustomTimer().
Timers have a handful of methods which sould be useful. They should be self-explanatory; just use /type methods timer Timer to have a look. Most of the methods that modify the timer won't work on non-custom timers.
You can format a time into a string using String timer::formatTime(Long time).
Added a minr namespace. It has a Map and a Challenge type, that allows you to get the ranks and times of players.
/namespace functions and /type methods now have added colour for parsability.
Added filtering in /namespace variables, /namespace functions, /type methods, /type fields.
- You can now filter the results of the above commands by adding additional search terms after the command. For example, /type methods Vector3[] value int will only return methods that cantain "value" and "int".
Bugfixes
/reply now no longer silently fails if the target (who is a player) has relogged without messaging you after the fact. This bug has been present since 2015.
Fixed a discrepancy between chat and Discord for first-time join messages.
The default prompt expiration message is now correctly coloured and the extra space was removed.
This is honestly only like 30% of the changes that went into this update. Once again, if you find any bugs, please tell us immedatiely. We hope you enjoy.
If you experience any issues completing maps, please tell us immedatiely.
TL;DR
- Parties
- /challenge suspend
- /chat hide
- Completely new timers
Forgive me if I screw anything up, I'm very tired as of right now. Here's a summary:
Maps, Checkpoints, and Challenges
The map completion message has been overhauled.
Better map and challenge complete messages
- now shows the time's rank always
- shows whether it was a PB or Server Record
- If the player is white, it shows how many points they have to go 'til blue
- If blue and in HC, it shows how many maps left
- If you beat HC, it shows a nice new message
- If you get a cosmetic for beating a challenge, it now tells you that.
Mid checkpoints can now give food.
/checkpoint ffa and /checkpoint hc have changed functions. These now kill you. They will cause you to respawn at the relevant checkpoint. To facilitate the transition, /checkpoint ffa requires you to accept a warning when invoked. This will be removed later once people had adjusted.
Checkpoint modes have been removed in favour of a "current map", which informs where you will respawn at.
In order to be able to better track when players are in maps and to implement these other features, /call and /bring have been changed slightly. /call-ing into a map will now consider you "in" that map, which will reset you (incl gamemode). We know this isn't ideal for spectating, but spectating needs an overhaul anyway, which will happen sometime in future. On the plus side, whites and blues can now use /bring.
Maps can now be assigned a resource pack. This will be applied to the user upon map join, and will be removed when they leave. Note that, as always, server-supplied resource packs are voluntary and the client may reject them.
Player health, max health, food, saturation, fire status and status effects are now reset on player reset.
Player reset occurs when you join a map (through /c join, join signs or clicking cp0 for the first time) or do /spawn.
Players are no longer considered to be in a map when doing /spawn. Respawning at a checkpoint will cause a player to be considered in that map.
Players' completion percentage in /checkpoint points and the chat messages that show up when crossing a threshold are now consistent with the rarity tiers.
Hexa progress is now announced on every x66th stage, not just 66, 166 and 266.
You can edit signs with a feather. Just click on a sign with a feather to edit it. You must be able to build (in survival/creative & have permissions) in order to edit it. Note that due to a vanilla bug, colours are lost when editing.
You can now suspend challenges with /challenge suspend. There are a few caveats, but in general you can go and play maps, build. participate in events, and more safely while your challenge is suspended. Also added /challenge restart.
Added a new challenge modifier: No Damage.
- Reworked /checkpoint completed & merged /checkpoint ffa into /checkpoint completed.
- Similar functionality as /challenge completed.
- Two flavors:
- /checkpoint completed [player <player>] [page <page>] [comparing <compare-mode>]
- Lists a player's completed maps at a given page, sorted by a given compare-mode.
- /checkpoint completed [player <player>] map <map-name>
- Shows whether the player has completed the specified map.
- Reworked /checkpoint uncompleted [player <player>] [page <page>] [comparing <compare-mode>]
- Similar functionality as /challenge uncompleted.
- Shows the uncompleted maps of a given player at a given page, sorted by a given compare-mode.
- Added /challenge completed
- Similar functionality as /checkpoint completed.
- Two flavors:
- /challenge completed [player <player>] [page <page>] [comparing <compare-mode>]
- Lists a player's completed challenges at a given page, sorted by a given compare-mode.
- /challenge completed [player <player>] challenge <challenge-name>
- Shows whether the player has completed the specified challenge.
- Removed /challenge list in favor of this command.
- Added /challenge uncompleted [player <player>] [page <page>] [comparing <compare-mode>]
- Similar functionality as /checkpoint uncompleted.
- Shows the uncompleted challenge of a given player at a given page, sorted by a given compare-mode.
Timers
Timers have been completely rewritten.
There are now multiple types of timers: Map, Challenge, Custom, and Special.
Map and Challenge timers are per-map/challenge. They only work on the map/challenge they were created for.
Custom timers are created and managed by scripts with the 'timer' namespace..
Timer terminology has been clarified:
"invalidated" now specifically means that the timer is completely invalid and the run is void.
"nullified" now means the timer will report no time but the run is still valid (previously called an "invalidated time").
Timer invalidation is a bit stricter (so we can track people better).
The time format has been modified:
It is mm:ss.mmm when the time is less than an hour.
It is HHh mm:ss.mmm when the time is less than a day.
It is DDd HHh mm:ss.mmm otherwise.
These changes are intended to help human parsability.
Chat
Chat channels have been added. These are generally only used when in parties, but they also apply to team chat as well (which now uses the new system).
You can use /chat say <channel> <message> to send a message in a particular channel, or use /xchat <message> as a shorthand (e.g. /gchat = global chat, /pchat = party chat, /tchat = team chat). To have your messages go to a particular channel by default, use /chat setchannel <channel>. Note that these commands cannot be used in scripts, to prevent impersonation.
/chatpling was renamed to /chat ping enable|disable and is now no longer a toggle.
You can now hide chat:
The server now respects your chat options. When you set chat (in Chat Settings) to Commands Only, you will now only receive command and system messages (including scripts). /chat hide (inverse: /chat show) also hides global chat, but allows you to continue talking in party chat. You can also turn chat colours off, if you, like, really want to.
Despite being system messages, join/quit messages are also suppressed on Commands Only (only - not /chat hide) for true zen. Your own join and quit messages are exempt however.
Parties
You can now create parties with /party create. The creator of the party becomes the party leader. The party leader can invite others players to join with /party invite <player>. Party members get their only private chat channel that they can communicate in. You can also see the death messages of your fellow party members. When a party leader joins a map or challenge, all the party members will be warped to that map. If you don't like that, you can turn it off with /party warp false. The party leader can also summon all party members to their current map or challenge at any time with /party summon.
Dealing with players
You can now /unhide players you have previously /hide-n.
By popular demand, /hide all and /unhide all have also been added.
You can now /block and /unblock (non-staff) players.
Mute and ban messages have been greatly improved. They will now show you the time remaining (where applicable) in a human readable format (e.g. 3 days, 18 hours) instead of an incomprehensible timestamp. The chat announcement messages for mutes, kicks and bans have also been cleaned up.
Scripts
Player#canSee(Player) has been added to scripts - it returns true only if the player can see the other player (e.g. /hide and /block cause it to fail).
Player constructors will now return null instead of throwing an exception if they do not find a player.
There is also a new Player constructor - Player(String name, Player visibleTo). It will return null if a player was found but is not visible to visibleTo. This does not apply when using UUIDs. You can use this to prevent players from checking if staff are online.
Player#invalidate() and Player#invalidateTime() have been removed, as they do not make sense anymore. Usages of these functions on Zero will be converted by staff.
You can obtain timers using timer::getMapTimer(Player player, String mapcode), timer::getChallengeTimer(Player player, String challengecode), timer::getCustomTimer(Player player, String tag), and timer::getSpecialTimer(Player player, String tag). These will return map, challenge, custom, and special timers respectively, or null if no such timer exists on the player.
You can remove custom timers with timer::removeCustomTimer(Player player, String tag). You should do this when you don't need a timer anymore.
You can construct custom timers by instantiating the timer::Timer type. You have the option to set whether the timer will send messages to the player when started or finished, and whether the timer can be invalidated by stuff like /warp.
Never store a Timer instance in a namespace variable. It will break on you silently. ALWAYS use timer::getCustomTimer().
Timers have a handful of methods which sould be useful. They should be self-explanatory; just use /type methods timer Timer to have a look. Most of the methods that modify the timer won't work on non-custom timers.
You can format a time into a string using String timer::formatTime(Long time).
Added a minr namespace. It has a Map and a Challenge type, that allows you to get the ranks and times of players.
/namespace functions and /type methods now have added colour for parsability.
Added filtering in /namespace variables, /namespace functions, /type methods, /type fields.
- You can now filter the results of the above commands by adding additional search terms after the command. For example, /type methods Vector3[] value int will only return methods that cantain "value" and "int".
Bugfixes
/reply now no longer silently fails if the target (who is a player) has relogged without messaging you after the fact. This bug has been present since 2015.
Fixed a discrepancy between chat and Discord for first-time join messages.
The default prompt expiration message is now correctly coloured and the extra space was removed.
This is honestly only like 30% of the changes that went into this update. Once again, if you find any bugs, please tell us immedatiely. We hope you enjoy.
Last edited: