Port to 25w09a ()

* Port to 25w09a

* Comment out FramebufferMixin for now

* Checkstyle

* Bump version
This commit is contained in:
modmuss 2025-02-26 22:00:24 +00:00 committed by GitHub
parent bc8ad11dc1
commit 02ca6796fb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 85 additions and 89 deletions
fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/input
fabric-data-attachment-api-v1/src
main/java/net/fabricmc/fabric
test/java/net/fabricmc/fabric/test/attachment
testmod/java/net/fabricmc/fabric/test/attachment/gametest
fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric
impl/registry/sync
mixin/registry/sync
fabric-rendering-v1/src/testmodClient/java/net/fabricmc/fabric/test/rendering/client
fabric-resource-loader-v0/src/client/java/net/fabricmc/fabric/mixin/resource/loader/client
fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/api/transfer/v1/storage/base
fabric-transitive-access-wideners-v1
gradle.properties

View file

@ -17,17 +17,12 @@
package net.fabricmc.fabric.mixin.client.gametest.input;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyVariable;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gl.Framebuffer;
import net.minecraft.client.util.Window;
import net.fabricmc.fabric.impl.client.gametest.util.WindowHooks;
@Mixin(Framebuffer.class)
public class FramebufferMixin {
/*
@ModifyVariable(method = {"draw", "drawInternal"}, at = @At("HEAD"), ordinal = 0, argsOnly = true)
private int modifyWidth(int width) {
Window window = MinecraftClient.getInstance().getWindow();
@ -49,4 +44,6 @@ public class FramebufferMixin {
return height;
}
*/
}

View file

@ -65,9 +65,9 @@ public class AttachmentSerializingImpl {
@Nullable
public static IdentityHashMap<AttachmentType<?>, Object> deserializeAttachmentData(NbtCompound nbt, RegistryWrapper.WrapperLookup wrapperLookup) {
if (nbt.contains(AttachmentTarget.NBT_ATTACHMENT_KEY, NbtElement.COMPOUND_TYPE)) {
if (nbt.contains(AttachmentTarget.NBT_ATTACHMENT_KEY)) {
var attachments = new IdentityHashMap<AttachmentType<?>, Object>();
NbtCompound compound = nbt.getCompound(AttachmentTarget.NBT_ATTACHMENT_KEY);
NbtCompound compound = nbt.getCompound(AttachmentTarget.NBT_ATTACHMENT_KEY).orElseThrow();
for (String key : compound.getKeys()) {
AttachmentType<?> type = AttachmentRegistryImpl.get(Identifier.of(key));

View file

@ -26,7 +26,6 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.NbtElement;
import net.minecraft.registry.DynamicRegistryManager;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.math.ChunkPos;
@ -55,8 +54,11 @@ abstract class SerializedChunkMixin {
return;
}
if (nbt.contains(AttachmentTarget.NBT_ATTACHMENT_KEY, NbtElement.COMPOUND_TYPE)) {
((SerializedChunkMixin) (Object) serializer).attachmentNbtData = nbt.getCompound(AttachmentTarget.NBT_ATTACHMENT_KEY);
//noinspection SimplifyOptionalCallChains
NbtCompound attachmentNbtData = nbt.getCompound(AttachmentTarget.NBT_ATTACHMENT_KEY).orElse(null);
if (attachmentNbtData != null) {
((SerializedChunkMixin) (Object) serializer).attachmentNbtData = attachmentNbtData;
}
}
@ -75,7 +77,13 @@ abstract class SerializedChunkMixin {
private static void storeAttachmentNbtData(ServerWorld world, Chunk chunk, CallbackInfoReturnable<SerializedChunk> cir) {
var nbt = new NbtCompound();
((AttachmentTargetImpl) chunk).fabric_writeAttachmentsToNbt(nbt, world.getRegistryManager());
((SerializedChunkMixin) (Object) cir.getReturnValue()).attachmentNbtData = nbt.getCompound(AttachmentTarget.NBT_ATTACHMENT_KEY);
//noinspection SimplifyOptionalCallChains
NbtCompound attachmentNbtData = nbt.getCompound(AttachmentTarget.NBT_ATTACHMENT_KEY).orElse(null);
if (attachmentNbtData != null) {
((SerializedChunkMixin) (Object) cir.getReturnValue()).attachmentNbtData = attachmentNbtData;
}
}
@Inject(method = "serialize", at = @At("RETURN"))

View file

@ -46,7 +46,6 @@ import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.MarkerEntity;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.NbtElement;
import net.minecraft.nbt.NbtOps;
import net.minecraft.registry.DynamicRegistryManager;
import net.minecraft.registry.RegistryOps;
@ -156,8 +155,8 @@ public class CommonAttachmentTests {
var fakeSave = new NbtCompound();
AttachmentSerializingImpl.serializeAttachmentData(fakeSave, mockDRM(), map);
assertTrue(fakeSave.contains(AttachmentTarget.NBT_ATTACHMENT_KEY, NbtElement.COMPOUND_TYPE));
assertTrue(fakeSave.getCompound(AttachmentTarget.NBT_ATTACHMENT_KEY).contains(dummy.identifier().toString()));
assertTrue(fakeSave.contains(AttachmentTarget.NBT_ATTACHMENT_KEY));
assertTrue(fakeSave.getCompound(AttachmentTarget.NBT_ATTACHMENT_KEY).orElseThrow().contains(dummy.identifier().toString()));
map = AttachmentSerializingImpl.deserializeAttachmentData(fakeSave, mockDRM());
assertEquals(1, map.size());

View file

@ -76,7 +76,7 @@ public class BlockEntityTests {
if (nbt != null && nbt.contains(AttachmentTarget.NBT_ATTACHMENT_KEY)) {
// Note: this is a vanilla bug (it called createNbt, instead of the correct createComponentlessNbt)
throw context.createError("Packet NBT for " + entry + " had persistent data: " + nbt.asString());
throw context.createError("Packet NBT for " + entry + " had persistent data: " + nbt);
}
}

View file

@ -29,15 +29,15 @@ public class RegistryMapSerializer {
public static final int VERSION = 1;
public static Map<Identifier, Object2IntMap<Identifier>> fromNbt(NbtCompound nbt) {
NbtCompound mainNbt = nbt.getCompound("registries");
NbtCompound mainNbt = nbt.getCompound("registries").orElseThrow();
Map<Identifier, Object2IntMap<Identifier>> map = new LinkedHashMap<>();
for (String registryId : mainNbt.getKeys()) {
Object2IntMap<Identifier> idMap = new Object2IntLinkedOpenHashMap<>();
NbtCompound idNbt = mainNbt.getCompound(registryId);
NbtCompound idNbt = mainNbt.getCompound(registryId).orElseThrow();
for (String id : idNbt.getKeys()) {
idMap.put(Identifier.of(id), idNbt.getInt(id));
idMap.put(Identifier.of(id), idNbt.getInt(id, 0));
}
map.put(Identifier.of(registryId), idMap);

View file

@ -25,7 +25,7 @@ import net.minecraft.world.chunk.SerializedChunk;
@Mixin(SerializedChunk.class)
public class SerializedChunkMixin {
@Redirect(method = "readStructureReferences", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V", remap = false))
@Redirect(method = "method_68295", at = @At(value = "INVOKE", target = "Lorg/slf4j/Logger;warn(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)V", remap = false))
private static void log(Logger logger, String msg, Object identifier, Object chunkPos) {
// Drop to debug log level.
logger.debug(msg, identifier, chunkPos);

View file

@ -27,8 +27,8 @@ import net.minecraft.client.render.entity.model.EntityModelLayers;
import net.minecraft.client.render.entity.model.LoadedEntityModels;
import net.minecraft.client.render.item.model.special.SpecialModelRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.ItemDisplayContext;
import net.minecraft.item.ItemStack;
import net.minecraft.item.ModelTransformationMode;
import net.minecraft.util.Identifier;
import net.minecraft.util.Util;
import net.minecraft.util.math.RotationAxis;
@ -51,7 +51,7 @@ public class SpecialBlockRendererTest implements ClientModInitializer {
return new SpecialModelRenderer<>() {
@Override
public void render(@Nullable Object data, ModelTransformationMode modelTransformationMode, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay, boolean glint) {
public void render(@Nullable Object data, ItemDisplayContext displayContext, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay, boolean glint) {
matrices.push();
matrices.translate(0.5f, 0.0f, 0.5f);
matrices.translate(0, 1.46875f, 0);

View file

@ -65,13 +65,10 @@ public class WorldRenderEventsTests implements ClientModInitializer {
matrices.translate(-camera.x, -camera.y, -camera.z);
RenderSystem.setShaderColor(1f, 1f, 1f, 1f);
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
VertexRendering.drawFilledBox(matrices, context.consumers().getBuffer(RenderLayer.getDebugFilledBox()), 0, 100, 0, 1, 101, 1, 0, 1, 0, 0.5f);
matrices.pop();
RenderSystem.disableBlend();
}
@Override

View file

@ -35,7 +35,6 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import net.minecraft.client.option.GameOptions;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.NbtElement;
import net.minecraft.nbt.NbtIo;
import net.minecraft.nbt.NbtList;
import net.minecraft.nbt.NbtSizeTracker;
@ -81,10 +80,10 @@ public class GameOptionsMixin {
if (Files.exists(trackerFile)) {
try {
NbtCompound data = NbtIo.readCompressed(trackerFile, NbtSizeTracker.ofUnlimitedBytes());
NbtList values = data.getList("values", NbtElement.STRING_TYPE);
NbtList values = data.getList("values").orElseThrow();
for (int i = 0; i < values.size(); i++) {
trackedPacks.add(values.getString(i));
trackedPacks.add(values.getString(i).orElseThrow());
}
} catch (IOException e) {
LOGGER.warn("[Fabric Resource Loader] Could not read " + trackerFile.toAbsolutePath(), e);

View file

@ -174,7 +174,7 @@ public abstract class SingleVariantStorage<T extends TransferVariant<?>> extends
*/
public static <T extends TransferVariant<?>> void readNbt(SingleVariantStorage<T> storage, Codec<T> codec, Supplier<T> fallback, NbtCompound nbt, RegistryWrapper.WrapperLookup wrapperLookup) {
final RegistryOps<NbtElement> ops = wrapperLookup.getOps(NbtOps.INSTANCE);
final DataResult<T> result = codec.parse(ops, nbt.getCompound("variant"));
final DataResult<T> result = codec.parse(ops, nbt.getCompound("variant").orElseThrow());
if (result.error().isPresent()) {
LOGGER.debug("Failed to load an ItemVariant from NBT: {}", result.error().get());
@ -183,7 +183,7 @@ public abstract class SingleVariantStorage<T extends TransferVariant<?>> extends
storage.variant = result.result().get();
}
storage.amount = nbt.getLong("amount");
storage.amount = nbt.getLong("amount").orElseThrow();
}
/**

View file

@ -50,8 +50,8 @@ transitive-accessible class net/minecraft/client/model/ModelPart$Vertex
transitive-accessible class net/minecraft/client/model/ModelPart$Quad
# Creating custom render layers
transitive-accessible method net/minecraft/client/render/RenderLayer of (Ljava/lang/String;ILnet/minecraft/client/gl/ShaderProgramLayer;Lnet/minecraft/client/render/RenderLayer$MultiPhaseParameters;)Lnet/minecraft/client/render/RenderLayer$MultiPhase;
transitive-accessible method net/minecraft/client/render/RenderLayer of (Ljava/lang/String;IZZLnet/minecraft/client/gl/ShaderProgramLayer;Lnet/minecraft/client/render/RenderLayer$MultiPhaseParameters;)Lnet/minecraft/client/render/RenderLayer$MultiPhase;
transitive-accessible method net/minecraft/client/render/RenderLayer of (Ljava/lang/String;ILnet/minecraft/client/gl/ShaderPipeline;Lnet/minecraft/client/render/RenderLayer$MultiPhaseParameters;)Lnet/minecraft/client/render/RenderLayer$MultiPhase;
transitive-accessible method net/minecraft/client/render/RenderLayer of (Ljava/lang/String;IZZLnet/minecraft/client/gl/ShaderPipeline;Lnet/minecraft/client/render/RenderLayer$MultiPhaseParameters;)Lnet/minecraft/client/render/RenderLayer$MultiPhase;
transitive-accessible class net/minecraft/client/render/RenderLayer$MultiPhase
transitive-accessible class net/minecraft/client/render/RenderLayer$MultiPhaseParameters
transitive-accessible class net/minecraft/client/render/RenderLayer$OutlineMode
@ -272,8 +272,8 @@ transitive-accessible method net/minecraft/entity/decoration/DisplayEntity setGl
transitive-accessible method net/minecraft/entity/decoration/DisplayEntity getDisplayHeight ()F
transitive-accessible method net/minecraft/entity/decoration/DisplayEntity$ItemDisplayEntity getItemStack ()Lnet/minecraft/item/ItemStack;
transitive-accessible method net/minecraft/entity/decoration/DisplayEntity$ItemDisplayEntity setItemStack (Lnet/minecraft/item/ItemStack;)V
transitive-accessible method net/minecraft/entity/decoration/DisplayEntity$ItemDisplayEntity setTransformationMode (Lnet/minecraft/item/ModelTransformationMode;)V
transitive-accessible method net/minecraft/entity/decoration/DisplayEntity$ItemDisplayEntity getTransformationMode ()Lnet/minecraft/item/ModelTransformationMode;
transitive-accessible method net/minecraft/entity/decoration/DisplayEntity$ItemDisplayEntity setItemDisplayContext (Lnet/minecraft/item/ItemDisplayContext;)V
transitive-accessible method net/minecraft/entity/decoration/DisplayEntity$ItemDisplayEntity getItemDisplayContext ()Lnet/minecraft/item/ItemDisplayContext;
transitive-accessible method net/minecraft/entity/decoration/DisplayEntity$BlockDisplayEntity getBlockState ()Lnet/minecraft/block/BlockState;
transitive-accessible method net/minecraft/entity/decoration/DisplayEntity$BlockDisplayEntity setBlockState (Lnet/minecraft/block/BlockState;)V
transitive-accessible method net/minecraft/entity/decoration/DisplayEntity$TextDisplayEntity getText ()Lnet/minecraft/text/Text;
@ -305,17 +305,13 @@ transitive-accessible field net/minecraft/client/render/RenderPhase DISABLE_LIGH
transitive-accessible field net/minecraft/client/render/RenderPhase ENABLE_OVERLAY_COLOR Lnet/minecraft/client/render/RenderPhase$Overlay;
transitive-accessible field net/minecraft/client/render/RenderPhase DISABLE_OVERLAY_COLOR Lnet/minecraft/client/render/RenderPhase$Overlay;
transitive-accessible field net/minecraft/client/render/RenderPhase NO_LAYERING Lnet/minecraft/client/render/RenderPhase$Layering;
transitive-accessible field net/minecraft/client/render/RenderPhase POLYGON_OFFSET_LAYERING Lnet/minecraft/client/render/RenderPhase$Layering;
transitive-accessible field net/minecraft/client/render/RenderPhase VIEW_OFFSET_Z_LAYERING Lnet/minecraft/client/render/RenderPhase$Layering;
transitive-accessible field net/minecraft/client/render/RenderPhase VIEW_OFFSET_Z_LAYERING_FORWARD Lnet/minecraft/client/render/RenderPhase$Layering;
transitive-accessible field net/minecraft/client/render/RenderPhase WORLD_BORDER_LAYERING Lnet/minecraft/client/render/RenderPhase$Layering;
transitive-accessible field net/minecraft/client/render/RenderPhase MAIN_TARGET Lnet/minecraft/client/render/RenderPhase$Target;
transitive-accessible field net/minecraft/client/render/RenderPhase LIGHT_TEXTURE_TARGET Lnet/minecraft/client/render/RenderPhase$Target;
transitive-accessible field net/minecraft/client/render/RenderPhase OUTLINE_TARGET Lnet/minecraft/client/render/RenderPhase$Target;
transitive-accessible field net/minecraft/client/render/RenderPhase TRANSLUCENT_TARGET Lnet/minecraft/client/render/RenderPhase$Target;
transitive-accessible field net/minecraft/client/render/RenderPhase PARTICLES_TARGET Lnet/minecraft/client/render/RenderPhase$Target;
transitive-accessible field net/minecraft/client/render/RenderPhase WEATHER_TARGET Lnet/minecraft/client/render/RenderPhase$Target;
transitive-accessible field net/minecraft/client/render/RenderPhase CLOUDS_TARGET Lnet/minecraft/client/render/RenderPhase$Target;
transitive-accessible field net/minecraft/client/render/RenderPhase ITEM_ENTITY_TARGET Lnet/minecraft/client/render/RenderPhase$Target;
transitive-accessible field net/minecraft/client/render/RenderPhase FULL_LINE_WIDTH Lnet/minecraft/client/render/RenderPhase$LineWidth;

View file

@ -45,8 +45,8 @@ transitive-accessible class net/minecraft/client/model/ModelPart$Vertex
transitive-accessible class net/minecraft/client/model/ModelPart$Quad
# Creating custom render layers
transitive-accessible method net/minecraft/client/render/RenderLayer of (Ljava/lang/String;ILnet/minecraft/client/gl/ShaderProgramLayer;Lnet/minecraft/client/render/RenderLayer$MultiPhaseParameters;)Lnet/minecraft/client/render/RenderLayer$MultiPhase;
transitive-accessible method net/minecraft/client/render/RenderLayer of (Ljava/lang/String;IZZLnet/minecraft/client/gl/ShaderProgramLayer;Lnet/minecraft/client/render/RenderLayer$MultiPhaseParameters;)Lnet/minecraft/client/render/RenderLayer$MultiPhase;
transitive-accessible method net/minecraft/client/render/RenderLayer of (Ljava/lang/String;ILnet/minecraft/client/gl/ShaderPipeline;Lnet/minecraft/client/render/RenderLayer$MultiPhaseParameters;)Lnet/minecraft/client/render/RenderLayer$MultiPhase;
transitive-accessible method net/minecraft/client/render/RenderLayer of (Ljava/lang/String;IZZLnet/minecraft/client/gl/ShaderPipeline;Lnet/minecraft/client/render/RenderLayer$MultiPhaseParameters;)Lnet/minecraft/client/render/RenderLayer$MultiPhase;
transitive-accessible class net/minecraft/client/render/RenderLayer$MultiPhase
transitive-accessible class net/minecraft/client/render/RenderLayer$MultiPhaseParameters
transitive-accessible class net/minecraft/client/render/RenderLayer$OutlineMode

View file

@ -1,9 +1,9 @@
org.gradle.jvmargs=-Xmx2560M
org.gradle.parallel=true
version=0.118.0
minecraft_version=25w08a
yarn_version=+build.1
version=0.118.1
minecraft_version=25w09a
yarn_version=+build.2
loader_version=0.16.10
installer_version=1.0.1
@ -11,52 +11,52 @@ prerelease=true
curseforge_minecraft_version=1.21.5-Snapshot
# Do not manually update, use the bumpversions task:
fabric-api-base-version=0.4.61
fabric-api-lookup-api-v1-version=1.6.94
fabric-biome-api-v1-version=16.0.6
fabric-block-api-v1-version=1.0.36
fabric-block-view-api-v2-version=1.0.24
fabric-blockrenderlayer-v1-version=2.0.15
fabric-client-gametest-api-v1-version=4.1.6
fabric-command-api-v1-version=1.2.69
fabric-command-api-v2-version=2.2.48
fabric-commands-v0-version=0.2.86
fabric-content-registries-v0-version=10.0.10
fabric-crash-report-info-v1-version=0.3.11
fabric-data-attachment-api-v1-version=1.6.0
fabric-data-generation-api-v1-version=22.2.19
fabric-dimensions-v1-version=4.0.15
fabric-entity-events-v1-version=2.0.23
fabric-events-interaction-v0-version=4.0.10
fabric-game-rule-api-v1-version=1.0.69
fabric-gametest-api-v1-version=3.0.9
fabric-item-api-v1-version=11.3.0
fabric-item-group-api-v1-version=4.2.7
fabric-key-binding-api-v1-version=1.0.62
fabric-keybindings-v0-version=0.2.60
fabric-lifecycle-events-v1-version=2.5.12
fabric-loot-api-v2-version=3.0.46
fabric-loot-api-v3-version=1.0.34
fabric-message-api-v1-version=6.0.32
fabric-api-base-version=0.4.62
fabric-api-lookup-api-v1-version=1.6.95
fabric-biome-api-v1-version=16.0.7
fabric-block-api-v1-version=1.0.37
fabric-block-view-api-v2-version=1.0.25
fabric-blockrenderlayer-v1-version=2.0.16
fabric-client-gametest-api-v1-version=4.1.7
fabric-command-api-v1-version=1.2.70
fabric-command-api-v2-version=2.2.49
fabric-commands-v0-version=0.2.87
fabric-content-registries-v0-version=10.0.11
fabric-crash-report-info-v1-version=0.3.12
fabric-data-attachment-api-v1-version=1.6.1
fabric-data-generation-api-v1-version=22.2.20
fabric-dimensions-v1-version=4.0.16
fabric-entity-events-v1-version=2.0.24
fabric-events-interaction-v0-version=4.0.11
fabric-game-rule-api-v1-version=1.0.70
fabric-gametest-api-v1-version=3.0.10
fabric-item-api-v1-version=11.3.1
fabric-item-group-api-v1-version=4.2.8
fabric-key-binding-api-v1-version=1.0.63
fabric-keybindings-v0-version=0.2.61
fabric-lifecycle-events-v1-version=2.5.13
fabric-loot-api-v2-version=3.0.47
fabric-loot-api-v3-version=1.0.35
fabric-message-api-v1-version=6.0.33
fabric-model-loading-api-v1-version=4.3.0
fabric-networking-api-v1-version=4.3.17
fabric-object-builder-api-v1-version=20.0.6
fabric-particles-v1-version=4.0.21
fabric-recipe-api-v1-version=8.1.3
fabric-registry-sync-v0-version=6.1.16
fabric-networking-api-v1-version=4.3.18
fabric-object-builder-api-v1-version=20.0.7
fabric-particles-v1-version=4.0.22
fabric-recipe-api-v1-version=8.1.4
fabric-registry-sync-v0-version=6.1.17
fabric-renderer-api-v1-version=5.0.6
fabric-renderer-indigo-version=2.0.6
fabric-rendering-data-attachment-v1-version=0.3.62
fabric-rendering-fluids-v1-version=3.1.26
fabric-rendering-v1-version=11.1.6
fabric-resource-conditions-api-v1-version=5.0.20
fabric-resource-loader-v0-version=3.1.5
fabric-screen-api-v1-version=2.0.45
fabric-screen-handler-api-v1-version=1.3.123
fabric-sound-api-v1-version=1.0.37
fabric-tag-api-v1-version=1.0.15
fabric-transfer-api-v1-version=5.4.21
fabric-transitive-access-wideners-v1-version=6.3.12
fabric-convention-tags-v1-version=2.1.23
fabric-convention-tags-v2-version=2.13.0
fabric-client-tags-api-v1-version=1.1.36
fabric-rendering-data-attachment-v1-version=0.3.63
fabric-rendering-fluids-v1-version=3.1.27
fabric-rendering-v1-version=11.1.7
fabric-resource-conditions-api-v1-version=5.0.21
fabric-resource-loader-v0-version=3.1.6
fabric-screen-api-v1-version=2.0.46
fabric-screen-handler-api-v1-version=1.3.124
fabric-sound-api-v1-version=1.0.38
fabric-tag-api-v1-version=1.0.16
fabric-transfer-api-v1-version=5.4.22
fabric-transitive-access-wideners-v1-version=6.3.13
fabric-convention-tags-v1-version=2.1.24
fabric-convention-tags-v2-version=2.13.1
fabric-client-tags-api-v1-version=1.1.37