Port to 25w06a ()

* Port to 25w06a

* Bump version
This commit is contained in:
modmuss 2025-02-05 18:40:41 +00:00 committed by GitHub
parent 4d6a78a820
commit 52a0a3850a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
11 changed files with 64 additions and 68 deletions
fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment
fabric-item-api-v1/src/testmod/java/net/fabricmc/fabric/test/item
fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder
fabric-rendering-v1/src/testmodClient/java/net/fabricmc/fabric/test/rendering/client
fabric-transfer-api-v1/src
main/java/net/fabricmc/fabric/impl/transfer/item
test/java/net/fabricmc/fabric/test/transfer/unittests
testmodClient/java/net/fabricmc/fabric/test/transfer/ingame/client
fabric-transitive-access-wideners-v1/src/main/resources
gradle.properties

View file

@ -23,13 +23,13 @@ import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import net.minecraft.class_10741;
import net.minecraft.registry.DynamicRegistryManager;
import net.minecraft.registry.RegistryKey;
import net.minecraft.registry.entry.RegistryEntry;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.world.MutableWorldProperties;
import net.minecraft.world.PersistentStateType;
import net.minecraft.world.World;
import net.minecraft.world.dimension.DimensionType;
@ -65,7 +65,7 @@ abstract class ServerWorldMixin extends World implements AttachmentTargetImpl {
private void createAttachmentsPersistentState(CallbackInfo ci) {
// Force persistent state creation
ServerWorld world = (ServerWorld) (Object) this;
var type = new class_10741<>(
var type = new PersistentStateType<>(
AttachmentPersistentState.ID,
() -> new AttachmentPersistentState(world),
AttachmentPersistentState.codec(world),

View file

@ -16,19 +16,22 @@
package net.fabricmc.fabric.test.item;
import org.jetbrains.annotations.Nullable;
import net.minecraft.block.BlockState;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.AttributeModifierSlot;
import net.minecraft.component.type.AttributeModifiersComponent;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.attribute.EntityAttributeModifier;
import net.minecraft.entity.attribute.EntityAttributes;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.util.Hand;
import net.minecraft.util.Identifier;
import net.minecraft.world.World;
public class UpdatingItem extends Item {
private static final Identifier PLUS_FIVE_ID = Identifier.of("fabric-item-api-v1-testmod", "plus_five");
@ -48,7 +51,7 @@ public class UpdatingItem extends Item {
}
@Override
public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) {
public void inventoryTick(ItemStack stack, ServerWorld world, Entity entity, @Nullable EquipmentSlot equipmentSlot) {
if (!world.isClient) {
stack.set(ItemUpdateAnimationTest.TICKS, Math.max(0, stack.getOrDefault(ItemUpdateAnimationTest.TICKS, 0) + 1));
}

View file

@ -21,9 +21,9 @@ import java.util.Objects;
import com.mojang.serialization.Codec;
import com.mojang.serialization.codecs.RecordCodecBuilder;
import net.minecraft.class_10741;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.world.PersistentState;
import net.minecraft.world.PersistentStateType;
import net.fabricmc.api.ModInitializer;
import net.fabricmc.fabric.api.event.lifecycle.v1.ServerTickEvents;
@ -49,7 +49,7 @@ public class PersistentStateManagerTest implements ModInitializer {
private static final Codec<TestState> CODEC = RecordCodecBuilder.create(instance -> instance.group(
Codec.STRING.fieldOf("value").forGetter(TestState::getValue)
).apply(instance, TestState::new));
private static final class_10741<TestState> TYPE = new class_10741<>(ObjectBuilderTestConstants.id("test_state").toString().replace(":", "_"), TestState::new, CODEC, null);
private static final PersistentStateType<TestState> TYPE = new PersistentStateType<>(ObjectBuilderTestConstants.id("test_state").toString().replace(":", "_"), TestState::new, CODEC, null);
public static TestState getOrCreate(ServerWorld world) {
return world.getPersistentStateManager().getOrCreate(TestState.TYPE);

View file

@ -21,7 +21,6 @@ import org.joml.Matrix4f;
import net.minecraft.client.gl.ShaderProgramKeys;
import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.BufferRenderer;
import net.minecraft.client.render.DimensionEffects;
import net.minecraft.client.render.Tessellator;
import net.minecraft.client.render.VertexFormat;
@ -76,7 +75,8 @@ public class DimensionalRenderingTest implements ClientModInitializer {
bufferBuilder.vertex(matrix4f, -100.0f, 100.0f, 100.0f).texture(0.0F, 1.0F).color(255, 255, 255, 255);
bufferBuilder.vertex(matrix4f, -100.0f, -100.0f, 100.0f).texture(1.0F, 1.0F).color(255, 255, 255, 255);
bufferBuilder.vertex(matrix4f, -100.0f, -100.0f, -100.0f).texture(1.0F, 0.0F).color(255, 255, 255, 255);
BufferRenderer.drawWithGlobalProgram(bufferBuilder.end());
// TODO 1.21.5
// BufferRenderer.drawWithGlobalProgram(bufferBuilder.end());
RenderSystem.depthMask(true);
RenderSystem.disableBlend();

View file

@ -23,10 +23,8 @@ import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gl.Defines;
import net.minecraft.client.gl.ShaderProgramKey;
import net.minecraft.client.gl.ShaderProgramKeys;
import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.BufferRenderer;
import net.minecraft.client.render.Tessellator;
import net.minecraft.client.render.VertexFormat;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.VertexFormats;
import net.minecraft.client.util.Window;
import net.minecraft.util.Identifier;
@ -55,12 +53,15 @@ public class HudAndShaderTest implements ClientModInitializer {
RenderSystem.setShader(TEST_SHADER);
RenderSystem.setShaderColor(0f, 1f, 0f, 1f);
Matrix4f positionMatrix = drawContext.getMatrices().peek().getPositionMatrix();
BufferBuilder buffer = Tessellator.getInstance().begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION);
buffer.vertex(positionMatrix, x, y, 50);
buffer.vertex(positionMatrix, x, y + 10, 50);
buffer.vertex(positionMatrix, x + 10, y + 10, 50);
buffer.vertex(positionMatrix, x + 10, y, 50);
BufferRenderer.drawWithGlobalProgram(buffer.end());
drawContext.draw(vertexConsumerProvider -> {
VertexConsumer buffer = vertexConsumerProvider.getBuffer(RenderLayer.getGui());
buffer.vertex(positionMatrix, x, y, 50).color(255, 255, 255, 255);
buffer.vertex(positionMatrix, x, y + 10, 50).color(255, 255, 255, 255);
buffer.vertex(positionMatrix, x + 10, y + 10, 50).color(255, 255, 255, 255);
buffer.vertex(positionMatrix, x + 10, y, 50).color(255, 255, 255, 255);
});
// Reset shader color
RenderSystem.setShaderColor(1f, 1f, 1f, 1f);
});

View file

@ -21,12 +21,8 @@ import com.mojang.blaze3d.systems.RenderSystem;
import net.minecraft.block.Blocks;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gl.ShaderProgramKeys;
import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.BufferRenderer;
import net.minecraft.client.render.OverlayTexture;
import net.minecraft.client.render.Tessellator;
import net.minecraft.client.render.VertexFormat;
import net.minecraft.client.render.VertexFormats;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.VertexRendering;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.math.BlockPos;
@ -65,8 +61,6 @@ public class WorldRenderEventsTests implements ClientModInitializer {
private static void renderAfterTranslucent(WorldRenderContext context) {
MatrixStack matrices = context.matrixStack();
Vec3d camera = context.camera().getPos();
Tessellator tessellator = RenderSystem.renderThreadTesselator();
BufferBuilder buffer = tessellator.begin(VertexFormat.DrawMode.TRIANGLE_STRIP, VertexFormats.POSITION_COLOR);
matrices.push();
matrices.translate(-camera.x, -camera.y, -camera.z);
@ -76,8 +70,7 @@ public class WorldRenderEventsTests implements ClientModInitializer {
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
VertexRendering.drawFilledBox(matrices, buffer, 0, 100, 0, 1, 101, 1, 0, 1, 0, 0.5f);
BufferRenderer.drawWithGlobalProgram(buffer.end());
VertexRendering.drawFilledBox(matrices, context.consumers().getBuffer(RenderLayer.getDebugFilledBox()), 0, 100, 0, 1, 101, 1, 0, 1, 0, 0.5f);
matrices.pop();
RenderSystem.disableBlend();

View file

@ -85,10 +85,10 @@ class PlayerInventoryStorageImpl extends InventoryStorageImpl implements PlayerI
@Override
public SingleSlotStorage<ItemVariant> getHandSlot(Hand hand) {
if (Objects.requireNonNull(hand) == Hand.MAIN_HAND) {
if (PlayerInventory.isValidHotbarIndex(playerInventory.selectedSlot)) {
return getSlot(playerInventory.selectedSlot);
if (PlayerInventory.isValidHotbarIndex(playerInventory.method_67532())) {
return getSlot(playerInventory.method_67532());
} else {
throw new RuntimeException("Unexpected player selected slot: " + playerInventory.selectedSlot);
throw new RuntimeException("Unexpected player selected slot: " + playerInventory.method_67532());
}
} else if (hand == Hand.OFF_HAND) {
return getSlot(PlayerInventory.OFF_HAND_SLOT);

View file

@ -23,6 +23,7 @@ import java.util.function.Function;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import net.minecraft.entity.EntityEquipment;
import net.minecraft.entity.player.PlayerInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.item.Items;
@ -52,16 +53,16 @@ public class PlayerInventoryStorageTests extends AbstractTransferApiTest {
private void testStacking(Function<PlayerInventoryStorage, InsertionFunction> inserterBuilder) {
// A bit hacky... but nothing should try using the null player entity as long as we don't call drop.
PlayerInventory inv = new PlayerInventory(null);
PlayerInventory inv = new PlayerInventory(null, new EntityEquipment());
InsertionFunction inserter = inserterBuilder.apply(PlayerInventoryStorage.of(inv));
// Fill everything with stone besides the first two inventory slots.
inv.selectedSlot = 3;
inv.main.set(3, new ItemStack(Items.STONE, 63));
inv.offHand.set(0, new ItemStack(Items.STONE, 62));
inv.setSelectedSlot(3);
inv.method_67531(new ItemStack(Items.STONE, 63));
inv.setStack(PlayerInventory.OFF_HAND_SLOT, new ItemStack(Items.STONE, 62));
for (int i = 4; i < PlayerInventory.MAIN_SIZE; ++i) {
inv.main.set(i, new ItemStack(Items.STONE, 61));
inv.setStack(i, new ItemStack(Items.STONE, 61));
}
ItemVariant stone = ItemVariant.of(Items.STONE);
@ -70,15 +71,15 @@ public class PlayerInventoryStorageTests extends AbstractTransferApiTest {
assertEquals(1L, inserter.insert(stone, 1, tx));
// Should have gone into the main stack
assertEquals(64, inv.main.get(3).getCount());
assertEquals(64, inv.getStack(3).getCount());
}
try (Transaction tx = Transaction.openOuter()) {
assertEquals(2L, inserter.insert(stone, 2, tx));
// Should have gone into the main and offhand stacks.
assertEquals(64, inv.main.get(3).getCount());
assertEquals(63, inv.offHand.get(0).getCount());
assertEquals(64, inv.getStack(3).getCount());
assertEquals(63, inv.getStack(PlayerInventory.OFF_HAND_SLOT).getCount());
}
long toInsertStacking = 1 + 2 + (PlayerInventory.MAIN_SIZE - 4) * 3;
@ -87,22 +88,22 @@ public class PlayerInventoryStorageTests extends AbstractTransferApiTest {
try (Transaction tx = Transaction.openOuter()) {
assertEquals(toInsertStacking, inserter.insert(stone, toInsertStacking, tx));
assertEquals(64, inv.main.get(3).getCount());
assertEquals(64, inv.offHand.get(0).getCount());
assertEquals(64, inv.getStack(3).getCount());
assertEquals(64, inv.getStack(PlayerInventory.OFF_HAND_SLOT).getCount());
for (int i = 4; i < PlayerInventory.MAIN_SIZE; ++i) {
assertEquals(64, inv.main.get(i).getCount());
assertEquals(64, inv.getStack(i).getCount());
}
for (int i = 0; i < 3; ++i) {
assertEquals(true, inv.main.get(i).isEmpty());
assertEquals(true, inv.getStack(i).isEmpty());
}
// Now insertion should fill the remaining stacks
assertEquals(150L, inserter.insert(stone, 150, tx));
assertEquals(64, inv.main.get(0).getCount());
assertEquals(64, inv.main.get(1).getCount());
assertEquals(22, inv.main.get(2).getCount());
assertEquals(64, inv.getStack(0).getCount());
assertEquals(64, inv.getStack(1).getCount());
assertEquals(22, inv.getStack(2).getCount());
// Only 64 - 22 = 42 room left!
assertEquals(42L, inserter.insert(stone, Long.MAX_VALUE, tx));

View file

@ -19,19 +19,16 @@ package net.fabricmc.fabric.test.transfer.ingame.client;
import java.util.List;
import com.mojang.blaze3d.systems.RenderSystem;
import org.joml.Matrix4f;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.font.TextRenderer;
import net.minecraft.client.gl.ShaderProgramKeys;
import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.render.BufferBuilder;
import net.minecraft.client.render.BufferRenderer;
import net.minecraft.client.render.Tessellator;
import net.minecraft.client.render.VertexFormat;
import net.minecraft.client.render.VertexFormats;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.texture.Sprite;
import net.minecraft.client.texture.SpriteAtlasTexture;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.fluid.Fluids;
import net.minecraft.text.Text;
@ -86,15 +83,12 @@ public class FluidVariantRenderTest implements ClientModInitializer {
private static void drawFluidInGui(DrawContext drawContext, Sprite sprite, int color, int i, int j) {
if (sprite == null) return;
RenderSystem.setShaderTexture(0, SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE);
float r = ((color >> 16) & 255) / 255f;
float g = ((color >> 8) & 255) / 255f;
float b = (color & 255) / 255f;
RenderSystem.disableDepthTest();
RenderSystem.setShader(ShaderProgramKeys.POSITION_TEX_COLOR);
BufferBuilder bufferBuilder = Tessellator.getInstance().begin(VertexFormat.DrawMode.QUADS, VertexFormats.POSITION_TEXTURE_COLOR);
float x0 = (float) i;
float y0 = (float) j;
float x1 = x0 + 16;
@ -104,12 +98,14 @@ public class FluidVariantRenderTest implements ClientModInitializer {
float v0 = sprite.getMinV();
float u1 = sprite.getMaxU();
float v1 = sprite.getMaxV();
Matrix4f model = drawContext.getMatrices().peek().getPositionMatrix();
bufferBuilder.vertex(model, x0, y1, z).color(r, g, b, 1).texture(u0, v1);
bufferBuilder.vertex(model, x1, y1, z).color(r, g, b, 1).texture(u1, v1);
bufferBuilder.vertex(model, x1, y0, z).color(r, g, b, 1).texture(u1, v0);
bufferBuilder.vertex(model, x0, y0, z).color(r, g, b, 1).texture(u0, v0);
BufferRenderer.drawWithGlobalProgram(bufferBuilder.end());
MatrixStack.Entry matrixEntry = drawContext.getMatrices().peek();
drawContext.draw(vertexConsumerProvider -> {
VertexConsumer vertexConsumer = vertexConsumerProvider.getBuffer(RenderLayer.getGuiTextured(SpriteAtlasTexture.BLOCK_ATLAS_TEXTURE));
vertexConsumer.vertex(matrixEntry, x0, y1, z).color(r, g, b, 1).texture(u0, v1);
vertexConsumer.vertex(matrixEntry, x1, y1, z).color(r, g, b, 1).texture(u1, v1);
vertexConsumer.vertex(matrixEntry, x1, y0, z).color(r, g, b, 1).texture(u1, v0);
vertexConsumer.vertex(matrixEntry, x0, y0, z).color(r, g, b, 1).texture(u0, v0);
});
RenderSystem.enableDepthTest();
}

View file

@ -148,6 +148,7 @@ transitive-accessible method net/minecraft/block/BarrierBlock <init> (Lnet/minec
transitive-accessible method net/minecraft/block/BigDripleafBlock <init> (Lnet/minecraft/block/AbstractBlock$Settings;)V
transitive-accessible method net/minecraft/block/BigDripleafStemBlock <init> (Lnet/minecraft/block/AbstractBlock$Settings;)V
transitive-accessible method net/minecraft/block/BlastFurnaceBlock <init> (Lnet/minecraft/block/AbstractBlock$Settings;)V
transitive-accessible method net/minecraft/block/BushBlock <init> (Lnet/minecraft/block/AbstractBlock$Settings;)V
transitive-accessible method net/minecraft/block/ButtonBlock <init> (Lnet/minecraft/block/BlockSetType;ILnet/minecraft/block/AbstractBlock$Settings;)V
transitive-accessible method net/minecraft/block/CactusBlock <init> (Lnet/minecraft/block/AbstractBlock$Settings;)V
transitive-accessible method net/minecraft/block/CakeBlock <init> (Lnet/minecraft/block/AbstractBlock$Settings;)V
@ -351,6 +352,7 @@ transitive-accessible field net/minecraft/client/render/RenderPhase LIGHTNING_PR
transitive-accessible field net/minecraft/client/render/RenderPhase TRIPWIRE_PROGRAM Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
transitive-accessible field net/minecraft/client/render/RenderPhase END_PORTAL_PROGRAM Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
transitive-accessible field net/minecraft/client/render/RenderPhase END_GATEWAY_PROGRAM Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
transitive-accessible field net/minecraft/client/render/RenderPhase field_56584 Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
transitive-accessible field net/minecraft/client/render/RenderPhase CLOUDS_PROGRAM Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
transitive-accessible field net/minecraft/client/render/RenderPhase LINES_PROGRAM Lnet/minecraft/client/render/RenderPhase$ShaderProgram;
transitive-accessible field net/minecraft/client/render/RenderPhase GUI_PROGRAM Lnet/minecraft/client/render/RenderPhase$ShaderProgram;

View file

@ -1,8 +1,8 @@
org.gradle.jvmargs=-Xmx2560M
org.gradle.parallel=true
version=0.115.2
minecraft_version=25w05a
version=0.115.3
minecraft_version=25w06a
yarn_version=+build.1
loader_version=0.16.10
installer_version=1.0.1
@ -23,14 +23,14 @@ fabric-command-api-v2-version=2.2.44
fabric-commands-v0-version=0.2.82
fabric-content-registries-v0-version=10.0.3
fabric-crash-report-info-v1-version=0.3.7
fabric-data-attachment-api-v1-version=1.5.4
fabric-data-attachment-api-v1-version=1.5.5
fabric-data-generation-api-v1-version=22.2.11
fabric-dimensions-v1-version=4.0.11
fabric-entity-events-v1-version=2.0.16
fabric-events-interaction-v0-version=4.0.6
fabric-game-rule-api-v1-version=1.0.65
fabric-gametest-api-v1-version=3.0.2
fabric-item-api-v1-version=11.1.20
fabric-item-api-v1-version=11.1.21
fabric-item-group-api-v1-version=4.1.29
fabric-key-binding-api-v1-version=1.0.58
fabric-keybindings-v0-version=0.2.56
@ -40,7 +40,7 @@ fabric-loot-api-v3-version=1.0.27
fabric-message-api-v1-version=6.0.28
fabric-model-loading-api-v1-version=4.2.4
fabric-networking-api-v1-version=4.3.13
fabric-object-builder-api-v1-version=19.0.3
fabric-object-builder-api-v1-version=19.0.4
fabric-particles-v1-version=4.0.17
fabric-recipe-api-v1-version=8.0.11
fabric-registry-sync-v0-version=6.1.10
@ -48,15 +48,15 @@ fabric-renderer-api-v1-version=5.0.6
fabric-renderer-indigo-version=2.0.6
fabric-rendering-data-attachment-v1-version=0.3.58
fabric-rendering-fluids-v1-version=3.1.22
fabric-rendering-v1-version=11.0.1
fabric-rendering-v1-version=11.0.2
fabric-resource-conditions-api-v1-version=5.0.16
fabric-resource-loader-v0-version=3.0.16
fabric-screen-api-v1-version=2.0.41
fabric-screen-handler-api-v1-version=1.3.117
fabric-sound-api-v1-version=1.0.33
fabric-tag-api-v1-version=1.0.8
fabric-transfer-api-v1-version=5.4.14
fabric-transitive-access-wideners-v1-version=6.3.5
fabric-transfer-api-v1-version=5.4.15
fabric-transitive-access-wideners-v1-version=6.3.6
fabric-convention-tags-v1-version=2.1.17
fabric-convention-tags-v2-version=2.12.1
fabric-client-tags-api-v1-version=1.1.32