You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: _posts/2025-06-15-1216.md
+76-76Lines changed: 76 additions & 76 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,14 +22,14 @@ The following modules have been merged into other modules for simplicity:
22
22
*`fabric-client-tags-api-v1` was merged into `fabric-tag-api-v1` ([#4647](https://github.com/FabricMC/fabric/pull/4647))
23
23
*`fabric-blockrenderlayer-v1` was merged into `fabric-rendering-v1` ([#4675](https://github.com/FabricMC/fabric/pull/4675))
24
24
25
-
The tag api changes are technically breaking for some developers who explicitly depend on these modules. The removal and merging of these modules has been done to help improve peformance when setting up a new development environment.
25
+
The tag API changes are technically breaking for some developers who explicitly depend on these modules. The removal and merging of these modules has been done to help improve peformance when setting up a new development environment.
26
26
27
27
The Fabric Rendering API previously provided a Material API, to allow modders more control of the way their models rendered. This has been removed.
28
28
> Materials were removed ... because they were deemed to be an unnecessary part of the API design, and the breaking change induced by changes in 1.21.6 was related to materials, which made this the perfect time to remove them - PepperCode1
29
29
30
-
See [#4675](https://github.com/FabricMC/fabric/pull/4675) for more info.
30
+
See ([#4675](https://github.com/FabricMC/fabric/pull/4675)) for more info.
31
31
32
-
In addition to being relocated, the `BlockRenderLayerMap` API was also updated to be more consistent out current api style:
32
+
In addition to being relocated, the `BlockRenderLayerMap` API was also updated to be more consistent out current API style:
@@ -40,7 +40,7 @@ In addition to being relocated, the `BlockRenderLayerMap` API was also updated t
40
40
See ([#4664](https://github.com/FabricMC/fabric/pull/4664)) for more info.
41
41
### Breaking changes
42
42
43
-
Fabric's brand new HUD api had to be tottaly rewritten in 1.21.6. The new `HudElementRegistry` provides all of the functionality provided by the old API. The following basic example shows how you can draw text after all of the vanilla HUD layers.
43
+
Fabric's brand new HUD API had to be totally rewritten in 1.21.6. The new `HudElementRegistry` provides all of the functionality provided by the old API. The following basic example shows how you can draw text after all of the vanilla HUD layers:
Since `Item#appendTooltip` has become deprecated, Fabric API now provides the `ComponentTooltipAppenderRegistry`. This registry provides `addAfter`, `addBefore`, `addFirst`, and `addLast` to allow you to position your tooltips relative to vanilla and other mods.
61
+
Since `Item#appendTooltip` has become deprecated, Fabric API now provides the `ComponentTooltipAppenderRegistry`. This registry provides `addAfter`, `addBefore`, `addFirst`, and `addLast` to allow you to position your tooltips relative to vanilla and other mods.
62
62
```java
63
-
record MyAmazingComponent() implements TooltipAppender {
Any `ItemStack` that has your component applied will call your components appendTooltip method, allowing you to append as you wish. ([#4587](https://github.com/FabricMC/fabric/pull/4587))
75
+
Any `ItemStack` that has your component applied will call your component's `appendTooltip` method, allowing you to append as you wish. ([#4587](https://github.com/FabricMC/fabric/pull/4587))
76
76
77
-
The LootTable API has been expanded to make certain extreme usages more convenient. The `LootTableEvents.MODIFY_DROPS` event allows modders to customize the collective output of `LootTable`s. The `LootTableEvents.MODIFY` event should still be preferred when possible, for mod compatibility reasons. This event may also recurse if you generate loot from within a listener. ([#4643](https://github.com/FabricMC/fabric/pull/4643))
77
+
The LootTable API has been expanded to make certain extreme usages more convenient. The `LootTableEvents.MODIFY_DROPS` event allows modders to customize the collective output of `LootTable`s. The `LootTableEvents.MODIFY` event should still be preferred when possible, for mod compatibility reasons. This event may also recurse if you generate loot from within a listener. ([#4643](https://github.com/FabricMC/fabric/pull/4643))
78
78
```java
79
79
var matchGetter =ServerRecipeManager.createCachedMatchGetter(RecipeType.SMELTING);
Continuing with our conventional tag api, We added new biome tags, allowing modders to differentiate biomes based on their primary wood type.
99
-
The `ServerChunkEvents.CHUNK_LEVEL_TYPE_CHANGE` was added to allow more control over the timing of chunk events. This event fires for changes in chunk loading level, to react to changes not previously possible without mixins. ([#4541](https://github.com/FabricMC/fabric/pull/4541))
96
+
```
97
+
Continuing with our conventional tag API, we added new biome tags, allowing modders to differentiate biomes based on their primary wood type.
98
+
The `ServerChunkEvents.CHUNK_LEVEL_TYPE_CHANGE`event was added to allow more control over the timing of chunk events. This event fires for changes in chunk loading level, to react to changes not previously possible without mixins. ([#4541](https://github.com/FabricMC/fabric/pull/4541))
100
99
101
100
An event was added for attachment changes, allowing reaction to an attachment value changing. This event can be recursive in nature, as if you set an attachment value from within a listener, the event will be invoked again. Modders should use proper recursion techniques to prevent infinite recursion. ([#4606](https://github.com/FabricMC/fabric/pull/4606))
102
101
103
102
104
-
Still more events were added for Players leaving and joining the game:
103
+
Two more events were added for players joining and leaving the game:
105
104
```java
106
-
AttachmentType<Instant>JOINED_TIME=/**/;
105
+
AttachmentType<Instant>JOINED_TIME=/*...*/;
107
106
ServerPlayerEvents.JOIN.register(player -> {
108
-
// runs on the main thread, no need to use player.getServer().execute(() -> ...);
109
-
player.setAttached(JOINED_TIME, Instant.now());
107
+
// runs on the main thread, no need to use player.getServer().execute(() -> ...);
These events are designed for initializing and de-initializing state related to players, and run along vanilla code with the same purpose on the main thread, unlike the current events. ([#4642](https://github.com/FabricMC/fabric/pull/4642))
117
116
@@ -126,78 +125,79 @@ public static final ModelKey<BlockStateModel> HALF_RED_SAND_MODEL_KEY = ModelKey
`FabricTrackedDataRegistry` has been added to allow registering of tracked data handlers for entities. This removes conflicts between mods registering tracked data handlers and ensures that the order is consistent between the client and server. If you previouly used the vanilla API the following 1 line change is all you need to take advantage of thisnew API:
145
+
`FabricTrackedDataRegistry` has been added to allow registering tracked data handlers for entities. This removes conflicts between mods registering tracked data handlers and ensures that the order is consistent between the client and server. If you previously used the vanilla API the following 1 line change is all you need to take advantage of this new API:
Due to diligent developers and players, Many bugs in FabricAPI were reported and patched during this update cycle. See [TheFabricGithub](https://github.com/FabricMC/fabric/pulls?q=is%3Apr+is%3Aclosed+label%3Abug) for more info.
153
+
Thanks to the diligent developers and players, many bugs in Fabric API were reported and patched during this update cycle. See [The Fabric Github](https://github.com/FabricMC/fabric/pulls?q=is%3Apr+is%3Aclosed+label%3Abug) for more info.
154
154
## Minecraft changes
155
155
### Rendering
156
156
Mojang is currently working on separating Minecraft's rendering pipeline into two stages:
157
157
1. The extraction stage, where all renderable data is seperated from the game
158
158
2. The render phase, where the previously extracted data is rendered.
159
159
160
-
This process began in 1.21.2, and is still incomplete as of this update. Chunk rendering, GUI rendering and HUD rendering have all been converted to use the new separate rendering style. The ultimate goal of this separation is to enable the game to render one frame while the next is being extracted.
160
+
This process began in 1.21.2, and is still incomplete as of this update. Chunk, GUI and HUD rendering have all been converted to use the new separate rendering style. The ultimate goal of this separation is to enable the game to render one frame while the next is being extracted.
161
161
162
-
Many methods in `RenderSystem` have been removed without direct replacement. In most cases, there isn't a one-to-one translation from the old code to the new, but the same capabilities exist by combining the new `RenderPipline`s with `RenderLayer`s
162
+
Many methods in `RenderSystem` have been removed without direct replacement. In most cases, there isn't a one-to-one translation from the old code to the new, but the same capabilities exist by combining the new `RenderPipeline`s with `RenderLayer`s.
163
163
164
164
### NBT
165
165
166
-
`BlockEntity`s now abstract saving to NBT through `(Read|Write)View`s. These views are responsible for storing errors from encoding / decoding, and keeping track of registries throughout the serialization process. You can read from a `ReadView` using the `read` method, passing in a `Codec` for the desired type. Likewise, you can write to a `WriteView` by using the `put` method, passing in a `Codec` for the type, and the value in question. there are also methods for primitives, under `get(Int, Short, Boolean, ...)` and `put(Int, Short, Boolean, ...)`.TheView also provides methods for working with lists, nullable types, and nested objects.
166
+
`BlockEntity`s now abstract saving to NBT through `ReadView`s and `WriteView`s. These views are responsible for storing errors from encoding / decoding, and keeping track of registries throughout the serialization process. You can read from a `ReadView` using the `read` method, passing in a `Codec` for the desired type. Likewise, you can write to a `WriteView` by using the `put` method, passing in a `Codec` for the type, and the value in question. there are also methods for primitives, under `get(Int, Short, Boolean, ...)` and `put(Int, Short, Boolean, ...)`. The View also provides methods for working with lists, nullable types, and nested objects.
0 commit comments