Minecraft 24w33a
As summer vacation ends, Mojang gives us one of the biggest snapshots ever. See the changelog.
Mobs
Mobs can now perform smash attacks with the mace, fixing MC-269428. The attack does the same damage and knockback as when a player performs a smash attack. The mob does not reset its momentum or accumulated fall distance, so the mob will take fall damage from the full height of the drop.
Mobs used to search for attackable targets within a 4 block vertical range of the mob’s hitbox. The vertical search range was changed to follow_range
blocks, fixing MC-121013.
New Variants
Mob | Width | Height | Eye Height | Spawn Chance |
---|---|---|---|---|
Baby Dolphin | 0.585 | 0.39 | 0.195 | 5% |
Baby (Glow) Squid | 0.4 | 0.4 | 0.2 | 5% |
Salmon Size | Spawn Chance |
---|---|
Small | 3/19 ≈ 15.789% |
Medium | 10/19 ≈ 52.316% |
Large | 6/19 ≈ 31.579% |
Salmon variants currently have the same hitbox size.
Bees
Bees now wander around randomly for 30 seconds instead of 2 minutes after exiting a nest/hive. Bees will spend 2 minutes instead of 30 seconds trying to return home before giving up.
“If a bee has a known nest/hive, it will travel less far from it” is incorrect. Bees now travel up to 24 blocks from a nest/hive instead of 22 blocks. However, bees are less likely to get lost since they must stray 48 blocks away from their nest/hive or flower before forgetting, instead of 32 blocks away.
Breeze
Breezes now remember mobs for 5 seconds after line of sight is lost, fixing MC-273076.
Drowned
If a drowned has a trident enchanted with Impaling, Loyalty, or Channeling, those enchantments will now function correctly. Riptide still does not work. Since Drowned do not keep track of item durability, the Unbreaking and Mending enchantments have no effect.
Zoglin
Zoglins spawned from spawn eggs have a 20% chance to be a baby.
Portals
Players stop “using” items (such as holding a shield or eating food) when they switch dimensions, fixing MC-86252 and MC-274372.
An entity cannot go through the end portal if any passenger is a player who has not seen the credits, fixing MC-272603.
Raids
When the raid wave countdown completes, there are 3 spawn attempt phases with 20 attempts per phase. Each spawn attempt now requires that the spawn position is within a certain vertical distance from the raid center (64 blocks in the first phase, 32 in the second phase, and 0 blocks in the third phase). If the chosen location is outside the vertical range, the spawn attempt fails.
Trial Chambers
The dispenser activated by tripwire in the parkour over dripstone trap (in encounter_4.nbt
) is not always an arrow. The dispenser pulls from the usual loot tale.
Structure Files
The following structure files were modified. Note that quadrant_1-4.nbt
is shorthand for quadrant_1.nbt
, quadrant_2.nbt
, etc. <color>_bed.nbt
is shorthand for the 16 structure files for each bed color.
chamber/
assembly.nbt
chamber_1.nbt
chamber_2.nbt
chamber_4.nbt
chamber_8.nbt
eruption.nbt
pedestal.nbt
slanted.nbt
addon/
full_corner_column.nbt
full_stacked_walkway.nbt
assembly/
left_staircase_1-2.nbt
right_staircase_1-2.nbt
eruption/
quadrant_5.nbt
slice_3.nbt
pedestal/
center_1.nbt
slanted/
hallway_2.nbt
hallway_3.nbt
- hallway_4.nbt
- hallway_5.nbt
quadrant_1-4.nbt
corridor/
atrium_1.nbt
end_2.nbt
entrance_1.nbt
straight_6.nbt
addon/
open_walkway_upper.nbt
reward_upper.nbt
decor/
+ <color>_bed.nbt
+ disposal.nbt
hallway/
corner_staircase.nbt
corner_staircase_down.nbt
+ encounter_1-5.nbt
left_corner.nbt
right_corner.nbt
straight_staircase.nbt
+ trapped_staircase.nbt
intersection/
intersection_1-3.nbt
Misc
Players can no longer fill cauldrons with lava or powder snow if the block above is water or a waterlogged block, fixing MC-203748 and MC-240948. Players can still place water on top of lava or powder snow cauldrons and push cauldrons underwater with pistons.
Experience caps at 2147483647 levels, fixing MC-3266.
Dedicated servers will not pause if a /tick sprint
is ongoing.
Redstone Experiment
See this post by SpaceWalkerRS for a technical breakdown of how the new redstone mechanics work.
Keep in mind that:
- The redstone changes are experimental with no target release version and subject to change
- Other components, such as repeaters, are still directional
- The experiment contains bugs that may complicate testing
Minecart Experiment
The minecartMaxSpeed
gamerule ranges from 1 to 1000.
Minecarts no longer snap to rails diagonally. Minecarts snap to the cardinal direction closest to the minecart’s velocity. The minecart always snaps to 0.1 blocks above if the rail is flat and 0.6 blocks above if the rail is sloped.
Minecarts with no passengers now have a drag coefficient of 0.975 instead of 0.96. Minecarts apply drag linearly every tick.
Minecarts used to pick up entities within a 1.02×1.02 horizontal square (0.02 blocks from the edge of the minecart). Now, minecarts pick up entities that it physically collides with.
Players and dispensers cannot place minecarts intersecting the hitbox of another minecart.
Fast-moving hopper minecarts may pull items multiple times per tick, but it can still miss containers at high speeds.
A TNT minecart now only explodes if a collision reduced its horizontal velocity from above 0.1 blocks/tick to below 0.1 blocks/tick.
Data
Damage Types
Added two new damage types: mace_smash
and ender_pearl
.
Added a new death message for when killed by a mace smash attack:
<victim>
was smashed by<attacker>
<victim>
was smashed by<attacker>
with<weapon>
Data Components
The use_duration
field in the instrument
data component is rounded down to the nearest tick (0.05 seconds).
The value
field in the enchantable
data component is the “enchantability” value.
Text Filtering
text-filtering-config
in server.properties
is used to implement Realms text filtering, though third-party servers can also set up their own text filtering service.
Added text-filtering-version
to server.properties
. It defaults to version 0 (the existing behavior). No changes were made to the existing behavior.
When text-filtering-version
is 1, text-filtering-config
is a JSON object with the following schema:
{
"apiServer": String, // The server which to send filtering requests to
"apiPath": String, // The path to the endpoint which to send filtering requests to
"scope": String, // The OAuth 2.0 scope from Entra ID
"serverId": String = "", // A string identifying this server
"applicationId": String, // `clientID` UUID from Entra ID
"tenantId": String, // `TenantID` from Entra ID (business apps only)
"roomId": String = "Java:Chat", // A "room ID" sent to the filtering service
"certificatePath": String, // The path to the X509 certificate file
"certificatePassword": String = "", // Password used if the certificate is password-protected
"hashesToDrop": int = -1, // See below
"maxConcurrentRequests": Integer = 7, // Thread pool size
"fullyFilteredEvents": String[], // See below
"connectionReadTimeoutMs": Integer = 2000 // Time to connect before timing out
}
apiPath
no longer requires a leading /
.
The server uses the Microsoft Authentication Library for Java to authenticate with Microsoft Entra ID:
String certificatePath = ...;
String certificatePassword = ...;
String applicationId = ...;
String tenantId = ...;
String scope = ...;
InputStream is = Files.newInputStream(Path.of(certificatePath));
IClientCertificate cert = ClientCredentialFactory.createFromCertificate(is, certificatePassword);
ConfidentialClientApplication client = ConfidentialClientApplication.builder(applicationId, cert)
.sendX5c(true)
.executorService(executorService)
.authority(String.format(Locale.ROOT, "https://login.microsoftonline.com/%s/", tenantId))
.build();
ClientCredentialParameters params = ClientCredentialParameters.builder(Set.of(scope)).build();
All future requests must be authenticated by setting the Authorization
header to:
"Bearer " + client.acquireToken(params).join()
The server sends a POST request to the text filtering endpoint with the following payload:
{
"userId": String, // UUID of player
"userDisplayName": String, // Username of player
"server": String, // `serverId` from config
"room": String, // `roomId` from config
"area": "JavaChatRealms",
"data": String, // Raw chat message text
"language": "*"
}
The text filtering service responds with the following format:
{
// If null, the entire message will be filtered and replaced with `*`
"result": {
// If false, the message will display unchanged
"filtered": Boolean = true,
// List of "events" (or rules) that were flagged by the filtering service
"events": Array[
{
"id": String
}
] = [],
// List of characters to filter and change to `*`
// Each integer is an index into the chat message string
"redactedTextIndex": Integer[] = []
} = null
}
If any event ID from the response matches an event ID found in fullyFilteredEvents
from the config, the entire message will be filtered.
If the number of characters filtered (size of redactedTextIndex
) is greater than or equal to hashesToDrop
from the config, the entire message will be filtered. Setting hashesToDrop
to -1 disables this behavior.
Edits
August 30 2024
- Fixed typo
September 5 2024
- Clarify raid mechanics
September 7 2024
- Clarify that powder snow cauldrons are included
September 10 2024
- Correct velocity required for TNT minecart explosion
- Fixed typo