* 25w34b compiles

* Mixin fixes

* Disable a pair of rendering related mixins

* Bump version
This commit is contained in:
modmuss
2025-08-19 18:19:31 +01:00
committed by GitHub
parent 3bb756a7a2
commit e35f037e62
41 changed files with 112 additions and 122 deletions

View File

@@ -110,7 +110,7 @@ public class TestWorldBuilderImpl implements TestWorldBuilder {
private Path navigateCreateWorldScreen() {
Path saveDirectory = context.computeOnClient(client -> {
CreateWorldScreen.show(client, client.currentScreen);
CreateWorldScreen.show(client, null);
if (!(client.currentScreen instanceof CreateWorldScreen createWorldScreen)) {
throw new AssertionError("CreateWorldScreen.show did not set the current screen");

View File

@@ -106,7 +106,7 @@ public class AttachmentSync implements ModInitializer {
ServerPlayerEntity player = handler.player;
List<AttachmentChange> changes = new ArrayList<>();
// sync world attachments
((AttachmentTargetImpl) player.world()).fabric_computeInitialSyncChanges(player, changes::add);
((AttachmentTargetImpl) player.getEntityWorld()).fabric_computeInitialSyncChanges(player, changes::add);
// sync player's own persistent attachments that couldn't be synced earlier
((AttachmentTargetImpl) player).fabric_computeInitialSyncChanges(player, changes::add);

View File

@@ -44,7 +44,7 @@ abstract class EntityMixin implements AttachmentTargetImpl {
private int id;
@Shadow
public abstract World world();
public abstract World getEntityWorld();
@Inject(
at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/Entity;readCustomData(Lnet/minecraft/storage/ReadView;)V"),
@@ -69,7 +69,7 @@ abstract class EntityMixin implements AttachmentTargetImpl {
@Override
public void fabric_syncChange(AttachmentType<?> type, AttachmentSyncPayloadS2C payload) {
if (!this.world().isClient()) {
if (!this.getEntityWorld().isClient()) {
AttachmentSyncPredicate predicate = ((AttachmentTypeImpl<?>) type).syncPredicate();
if ((Object) this instanceof ServerPlayerEntity self && predicate.test(this, self)) {
@@ -88,11 +88,11 @@ abstract class EntityMixin implements AttachmentTargetImpl {
@Override
public boolean fabric_shouldTryToSync() {
return !this.world().isClient();
return !this.getEntityWorld().isClient();
}
@Override
public DynamicRegistryManager fabric_getDynamicRegistryManager() {
return this.world().getRegistryManager();
return this.getEntityWorld().getRegistryManager();
}
}

View File

@@ -145,7 +145,7 @@ public class SyncGametest implements FabricClientGameTest {
LOGGER.info("Testing synced attachments (1/2)");
context.runOnClient(client -> {
ClientWorld world = Objects.requireNonNull(client.world);
Entity villager = world.getEntity(state.villagerId);
Entity villager = world.method_66347(state.villagerId);
assertHasSyncedWithAll(world.getBlockEntity(state.furnacePos));
assertHasSyncedWithAll(villager);

View File

@@ -40,7 +40,7 @@ abstract class EntityMixin {
Entity ret = original.call(instance, sourceWorld, targetWorld, teleportTarget);
if (ret != null) {
ServerEntityWorldChangeEvents.AFTER_ENTITY_CHANGE_WORLD.invoker().afterChangeWorld((Entity) (Object) this, ret, (ServerWorld) this.world, (ServerWorld) ret.world());
ServerEntityWorldChangeEvents.AFTER_ENTITY_CHANGE_WORLD.invoker().afterChangeWorld((Entity) (Object) this, ret, (ServerWorld) this.world, (ServerWorld) ret.getEntityWorld());
}
return ret;

View File

@@ -109,7 +109,7 @@ abstract class LivingEntityMixin {
@Dynamic("method_18405: Synthetic lambda body for Optional.map in isSleepingInBed")
@Inject(method = "method_18405", at = @At("RETURN"), cancellable = true)
private void onIsSleepingInBed(BlockPos sleepingPos, CallbackInfoReturnable<Boolean> info) {
BlockState bedState = ((LivingEntity) (Object) this).world().getBlockState(sleepingPos);
BlockState bedState = ((LivingEntity) (Object) this).getEntityWorld().getBlockState(sleepingPos);
ActionResult result = EntitySleepEvents.ALLOW_BED.invoker().allowBed((LivingEntity) (Object) this, sleepingPos, bedState, info.getReturnValueZ());
if (result != ActionResult.PASS) {

View File

@@ -38,8 +38,8 @@ abstract class PlayerManagerMixin {
ServerPlayerEntity newPlayer = cir.getReturnValue();
ServerPlayerEvents.AFTER_RESPAWN.invoker().afterRespawn(oldPlayer, newPlayer, alive);
if (oldPlayer.world() != newPlayer.world()) {
ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.invoker().afterChangeWorld(newPlayer, oldPlayer.world(), newPlayer.world());
if (oldPlayer.getEntityWorld() != newPlayer.getEntityWorld()) {
ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.invoker().afterChangeWorld(newPlayer, oldPlayer.getEntityWorld(), newPlayer.getEntityWorld());
}
}

View File

@@ -53,7 +53,7 @@ import net.fabricmc.fabric.api.entity.event.v1.ServerPlayerEvents;
@Mixin(ServerPlayerEntity.class)
abstract class ServerPlayerEntityMixin extends LivingEntityMixin {
@Shadow
public abstract ServerWorld world();
public abstract ServerWorld getEntityWorld();
/**
* Minecraft by default does not call Entity#onKilledOther for a ServerPlayerEntity being killed.
@@ -66,8 +66,8 @@ abstract class ServerPlayerEntityMixin extends LivingEntityMixin {
// If the damage source that killed the player was an entity, then fire the event.
if (attacker != null) {
attacker.onKilledOther(this.world(), (ServerPlayerEntity) (Object) this, source);
ServerEntityCombatEvents.AFTER_KILLED_OTHER_ENTITY.invoker().afterKilledOtherEntity(this.world(), attacker, (ServerPlayerEntity) (Object) this);
attacker.onKilledOther(this.getEntityWorld(), (ServerPlayerEntity) (Object) this, source);
ServerEntityCombatEvents.AFTER_KILLED_OTHER_ENTITY.invoker().afterKilledOtherEntity(this.getEntityWorld(), attacker, (ServerPlayerEntity) (Object) this);
}
}
@@ -81,7 +81,7 @@ abstract class ServerPlayerEntityMixin extends LivingEntityMixin {
*/
@Inject(method = "worldChanged(Lnet/minecraft/server/world/ServerWorld;)V", at = @At("TAIL"))
private void afterWorldChanged(ServerWorld origin, CallbackInfo ci) {
ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.invoker().afterChangeWorld((ServerPlayerEntity) (Object) this, origin, this.world());
ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.invoker().afterChangeWorld((ServerPlayerEntity) (Object) this, origin, this.getEntityWorld());
}
@Inject(method = "copyFrom", at = @At("TAIL"))

View File

@@ -47,7 +47,7 @@ abstract class LivingEntityMixin extends Entity {
if (!EntityElytraEvents.ALLOW.invoker().allowElytraFlight(self)) {
// The entity is already fall flying by now, we just need to stop it.
if (!world().isClient()) {
if (!getEntityWorld().isClient()) {
setFlag(Entity.GLIDING_FLAG_INDEX, false);
}

View File

@@ -87,7 +87,7 @@ public final class EntityEventTests implements ModInitializer {
});
ServerPlayerEvents.AFTER_RESPAWN.register((oldPlayer, newPlayer, alive) -> {
LOGGER.info("Respawned {}, [{}, {}]", oldPlayer.getGameProfile().getName(), oldPlayer.world().getRegistryKey().getValue(), newPlayer.world().getRegistryKey().getValue());
LOGGER.info("Respawned {}, [{}, {}]", oldPlayer.getGameProfile().getName(), oldPlayer.getEntityWorld().getRegistryKey().getValue(), newPlayer.getEntityWorld().getRegistryKey().getValue());
});
// No fall damage if holding a feather in the main hand
@@ -144,7 +144,7 @@ public final class EntityEventTests implements ModInitializer {
EntitySleepEvents.START_SLEEPING.register((entity, sleepingPos) -> {
LOGGER.info("Entity {} sleeping at {}", entity, sleepingPos);
BlockState bedState = entity.world().getBlockState(sleepingPos);
BlockState bedState = entity.getEntityWorld().getBlockState(sleepingPos);
if (bedState.isOf(TEST_BED)) {
boolean shouldBeOccupied = !entity.getStackInHand(Hand.MAIN_HAND).isOf(Items.ORANGE_WOOL);
@@ -164,12 +164,12 @@ public final class EntityEventTests implements ModInitializer {
});
EntitySleepEvents.MODIFY_SLEEPING_DIRECTION.register((entity, sleepingPos, sleepingDirection) -> {
return entity.world().getBlockState(sleepingPos).isOf(TEST_BED) ? Direction.NORTH : sleepingDirection;
return entity.getEntityWorld().getBlockState(sleepingPos).isOf(TEST_BED) ? Direction.NORTH : sleepingDirection;
});
EntitySleepEvents.ALLOW_SLEEP_TIME.register((player, sleepingPos, vanillaResult) -> {
// Yellow wool allows to sleep during the day
if (player.world().isDay() && player.getStackInHand(Hand.MAIN_HAND).isOf(Items.YELLOW_WOOL)) {
if (player.getEntityWorld().isDay() && player.getStackInHand(Hand.MAIN_HAND).isOf(Items.YELLOW_WOOL)) {
return ActionResult.SUCCESS;
}

View File

@@ -99,7 +99,7 @@ public abstract class ClientPlayerInteractionManagerMixin {
if (player.isSpectator()) return; // vanilla spectator check happens later, repeat it before the event to avoid false invocations
ActionResult result = UseBlockCallback.EVENT.invoker().interact(player, player.world(), hand, blockHitResult);
ActionResult result = UseBlockCallback.EVENT.invoker().interact(player, player.getEntityWorld(), hand, blockHitResult);
if (result != ActionResult.PASS) {
if (result.isAccepted()) {
@@ -115,12 +115,12 @@ public abstract class ClientPlayerInteractionManagerMixin {
public void interactItem(PlayerEntity player, Hand hand, CallbackInfoReturnable<ActionResult> info) {
// hook interactBlock between the spectator check and sending the first packet to invoke the use item event first
// this needs to be in interactBlock to avoid sending a packet in line with the event javadoc
ActionResult result = UseItemCallback.EVENT.invoker().interact(player, player.world(), hand);
ActionResult result = UseItemCallback.EVENT.invoker().interact(player, player.getEntityWorld(), hand);
if (result != ActionResult.PASS) {
if (result == ActionResult.SUCCESS) {
// send interaction packet to the server with a new sequentially assigned id
sendSequencedPacket((ClientWorld) player.world(), id -> new PlayerInteractItemC2SPacket(hand, id, player.getYaw(), player.getPitch()));
sendSequencedPacket((ClientWorld) player.getEntityWorld(), id -> new PlayerInteractItemC2SPacket(hand, id, player.getYaw(), player.getPitch()));
}
info.setReturnValue(result);
@@ -129,7 +129,7 @@ public abstract class ClientPlayerInteractionManagerMixin {
@Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayNetworkHandler;sendPacket(Lnet/minecraft/network/packet/Packet;)V", ordinal = 0), method = "attackEntity", cancellable = true)
public void attackEntity(PlayerEntity player, Entity entity, CallbackInfo info) {
ActionResult result = AttackEntityCallback.EVENT.invoker().interact(player, player.world(), Hand.MAIN_HAND /* TODO */, entity, null);
ActionResult result = AttackEntityCallback.EVENT.invoker().interact(player, player.getEntityWorld(), Hand.MAIN_HAND /* TODO */, entity, null);
if (result != ActionResult.PASS) {
if (result == ActionResult.SUCCESS) {

View File

@@ -75,7 +75,7 @@ public abstract class MinecraftClientMixin {
cancellable = true
)
private void injectUseEntityCallback(CallbackInfo ci, @Local Hand hand, @Local EntityHitResult hitResult, @Local Entity entity) {
ActionResult result = UseEntityCallback.EVENT.invoker().interact(player, player.world(), hand, entity, hitResult);
ActionResult result = UseEntityCallback.EVENT.invoker().interact(player, player.getEntityWorld(), hand, entity, hitResult);
if (result != ActionResult.PASS) {
if (result.isAccepted()) {

View File

@@ -48,7 +48,7 @@ public abstract class ServerPlayNetworkHandlerInteractEntityHandlerMixin impleme
@Inject(method = "interactAt(Lnet/minecraft/util/Hand;Lnet/minecraft/util/math/Vec3d;)V", at = @At(value = "HEAD"), cancellable = true)
public void onPlayerInteractEntity(Hand hand, Vec3d hitPosition, CallbackInfo info) {
PlayerEntity player = field_28963.player;
World world = player.world();
World world = player.getEntityWorld();
EntityHitResult hitResult = new EntityHitResult(field_28962, hitPosition.add(field_28962.getX(), field_28962.getY(), field_28962.getZ()));
ActionResult result = UseEntityCallback.EVENT.invoker().interact(player, world, hand, field_28962, hitResult);
@@ -61,7 +61,7 @@ public abstract class ServerPlayNetworkHandlerInteractEntityHandlerMixin impleme
@Inject(method = "interact(Lnet/minecraft/util/Hand;)V", at = @At(value = "HEAD"), cancellable = true)
public void onPlayerInteractEntity(Hand hand, CallbackInfo info) {
PlayerEntity player = field_28963.player;
World world = player.world();
World world = player.getEntityWorld();
ActionResult result = UseEntityCallback.EVENT.invoker().interact(player, world, hand, field_28962, null);

View File

@@ -36,7 +36,7 @@ public class ServerPlayerEntityMixin {
@Inject(method = "attack", at = @At("HEAD"), cancellable = true)
public void onPlayerInteractEntity(Entity target, CallbackInfo info) {
ServerPlayerEntity player = (ServerPlayerEntity) (Object) this;
ActionResult result = AttackEntityCallback.EVENT.invoker().interact(player, player.world(), Hand.MAIN_HAND, target, null);
ActionResult result = AttackEntityCallback.EVENT.invoker().interact(player, player.getEntityWorld(), Hand.MAIN_HAND, target, null);
if (result != ActionResult.PASS) {
info.cancel();

View File

@@ -42,7 +42,7 @@ public class UseItemTests implements ModInitializer {
if (!player.isSpectator()) {
if (player.getStackInHand(hand).isOf(Items.BLAZE_ROD)) {
if (!world.isClient()) {
player.world().spawnEntity(new FireballEntity(player.world(), player, new Vec3d(0, 0, 0), 0));
player.getEntityWorld().spawnEntity(new FireballEntity(player.getEntityWorld(), player, new Vec3d(0, 0, 0), 0));
}
return ActionResult.SUCCESS;

View File

@@ -58,11 +58,11 @@ public final class DoubleRuleWidget extends EditGameRulesScreen.NamedRuleWidget
}
@Override
public void render(DrawContext drawContext, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) {
// FIXME: Param names nightmare
this.drawName(drawContext, y, x);
public void render(DrawContext drawContext, int mouseX, int mouseY, boolean hovered, float tickDelta) {
this.drawName(drawContext, this.method_73382(), this.method_73380());
this.textFieldWidget.setPosition(x + entryWidth - 44, y);
this.textFieldWidget.setX(this.method_73389() - 44);
this.textFieldWidget.setY(this.method_73382());
this.textFieldWidget.render(drawContext, mouseX, mouseY, tickDelta);
}
}

View File

@@ -54,11 +54,11 @@ public final class EnumRuleWidget<E extends Enum<E>> extends EditGameRulesScreen
}
@Override
public void render(DrawContext drawContext, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) {
// FIXME: Param names nightmare
this.drawName(drawContext, y, x);
public void render(DrawContext drawContext, int mouseX, int mouseY, boolean hovered, float tickDelta) {
this.drawName(drawContext, this.method_73382(), this.method_73380());
this.buttonWidget.setPosition(x + entryWidth - 89, y);
this.buttonWidget.setX(this.method_73389() - 89);
this.buttonWidget.setY(this.method_73382());
this.buttonWidget.render(drawContext, mouseX, mouseY, tickDelta);
}
}

View File

@@ -50,7 +50,7 @@ public class BakedModelFeatureRenderer<S extends LivingEntityRenderState, M exte
matrices.translate(-0.5F, 0.75F + aboveHead, -0.5F);
// FIXME 1.21.9
// FabricBlockModelRenderer.render(matrices.peek(), RenderLayerHelper.entityDelegate(vertexConsumers), model, 1, 1, 1, light, OverlayTexture.DEFAULT_UV, EmptyBlockRenderView.INSTANCE, BlockPos.ORIGIN, Blocks.AIR.getDefaultState());
commandQueue.pushBlockStateModel(matrices, TexturedRenderLayers.getEntityCutout(), model, 1, 1, 1, light, OverlayTexture.DEFAULT_UV);
commandQueue.method_73529(0).method_73484(matrices, TexturedRenderLayers.getEntityCutout(), model, 1, 1, 1, light, OverlayTexture.DEFAULT_UV, 0);
matrices.pop();
}
}

View File

@@ -109,7 +109,7 @@ public final class PlayerLookup {
*/
public static Collection<ServerPlayerEntity> tracking(Entity entity) {
Objects.requireNonNull(entity, "Entity cannot be null");
ChunkManager manager = entity.world().getChunkManager();
ChunkManager manager = entity.getEntityWorld().getChunkManager();
if (manager instanceof ServerChunkManager) {
ServerChunkLoadingManager chunkLoadingManager = ((ServerChunkManager) manager).chunkLoadingManager;

View File

@@ -51,8 +51,8 @@ final class ChannelList extends EntryListWidget<ChannelList.Entry> {
}
@Override
public void render(DrawContext drawContext, int index, int y, int x, int entryWidth, int entryHeight, int mouseX, int mouseY, boolean hovered, float tickDelta) {
drawContext.drawTooltip(ChannelList.this.client.textRenderer, Text.literal(this.channel.toString()).formatted(Formatting.WHITE), x, y);
public void render(DrawContext drawContext, int mouseX, int mouseY, boolean hovered, float tickDelta) {
drawContext.drawTooltip(ChannelList.this.client.textRenderer, Text.literal(this.channel.toString()).formatted(Formatting.WHITE), method_73380(), method_73382());
}
}
}

View File

@@ -79,13 +79,13 @@ public class TrackStackEntity extends MobEntity {
@Override
protected ActionResult interactMob(PlayerEntity player, Hand hand) {
GlobalPos globalPos = GlobalPos.create(player.world().getRegistryKey(), player.getBlockPos());
GlobalPos globalPos = GlobalPos.create(player.getEntityWorld().getRegistryKey(), player.getBlockPos());
this.dataTracker.set(GLOBAL_POS, globalPos);
Item item = player.getStackInHand(hand).getItem();
this.dataTracker.set(ITEM, item);
if (!player.world().isClient()) {
if (!player.getEntityWorld().isClient()) {
DyeColor[] colors = DyeColor.values();
Optional<DyeColor> color = Optional.of(colors[this.getRandom().nextBetweenExclusive(0, colors.length)]);
this.dataTracker.set(OPTIONAL_DYE_COLOR, color);

View File

@@ -50,7 +50,7 @@ public class TrackStackEntityRenderer extends MobEntityRenderer<TrackStackEntity
matrices.translate(0, -2, 0);
for (Text line : labelLines) {
entityRenderCommandQueue.pushLabel(matrices, renderState.nameLabelPos, line, !renderState.sneaking, renderState.light, renderState.squaredDistanceToCamera);
entityRenderCommandQueue.method_73529(0).method_73482(matrices, renderState.nameLabelPos, line, !renderState.sneaking, renderState.light, renderState.squaredDistanceToCamera);
matrices.translate(0, 0.25875f, 0);
}

View File

@@ -41,7 +41,7 @@ abstract class InGameOverlayRendererMixin {
@Redirect(method = "renderOverlays", at = @At(value = "INVOKE", target = "net/minecraft/client/render/block/BlockModels.getModelParticleSprite(Lnet/minecraft/block/BlockState;)Lnet/minecraft/client/texture/Sprite;"))
private static Sprite getModelParticleSpriteProxy(BlockModels models, BlockState state, @Local PlayerEntity playerEntity) {
if (pos != null) {
Sprite sprite = models.getModelParticleSprite(state, playerEntity.world(), pos);
Sprite sprite = models.getModelParticleSprite(state, playerEntity.getEntityWorld(), pos);
pos = null;
return sprite;
}

View File

@@ -27,12 +27,14 @@ import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import net.minecraft.block.BlockState;
import net.minecraft.class_11788;
import net.minecraft.class_11791;
import net.minecraft.client.render.OutlineVertexConsumerProvider;
import net.minecraft.client.render.OverlayTexture;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.block.BlockRenderManager;
import net.minecraft.client.render.entity.command.BatchingEntityRenderCommandQueue;
import net.minecraft.client.render.entity.command.FallingBlockCommandRenderer;
import net.minecraft.client.render.entity.state.FallingBlockEntityRenderState;
import net.minecraft.client.render.model.BlockStateModel;
import net.minecraft.client.util.math.MatrixStack;
@@ -46,16 +48,16 @@ abstract class FallingBlockCommandRendererMixin {
// Support multi-render layer models (FallingBlockCommand).
@Inject(method = "render", at = @At(value = "INVOKE", target = "java/util/Iterator.hasNext()Z", remap = false, ordinal = 0))
private void beforeRenderFallingBlocks(BatchingEntityRenderCommandQueue commandQueueImpl, VertexConsumerProvider.Immediate vertexConsumers, BlockRenderManager blockRenderManager, CallbackInfo ci, @Local Iterator<BatchingEntityRenderCommandQueue.FallingBlockCommand> iterator) {
private void beforeRenderFallingBlocks(class_11788 queue, VertexConsumerProvider.Immediate vertexConsumers, BlockRenderManager blockRenderManager, OutlineVertexConsumerProvider outlineVertexConsumerProvider, CallbackInfo ci, @Local Iterator<BatchingEntityRenderCommandQueue.class_11790> iterator) {
while (iterator.hasNext()) {
BatchingEntityRenderCommandQueue.FallingBlockCommand fallingBlockCommand = iterator.next();
FallingBlockEntityRenderState renderState = fallingBlockCommand.renderState();
BlockState blockState = renderState.blockState;
BatchingEntityRenderCommandQueue.class_11790 fallingBlockCommand = iterator.next();
class_11791 renderState = fallingBlockCommand.movingBlockRenderState();
BlockState blockState = renderState.field_62247;
BlockStateModel model = blockRenderManager.getModel(blockState);
long seed = blockState.getRenderingSeed(renderState.fallingBlockPos);
long seed = blockState.getRenderingSeed(renderState.field_62245);
matrices.push();
matrices.multiplyPositionMatrix(fallingBlockCommand.pose());
blockRenderManager.getModelRenderer().render(renderState, model, blockState, renderState.currentPos, matrices, RenderLayerHelper.movingDelegate(vertexConsumers), false, seed, OverlayTexture.DEFAULT_UV);
blockRenderManager.getModelRenderer().render(renderState, model, blockState, renderState.field_62246, matrices, RenderLayerHelper.movingDelegate(vertexConsumers), false, seed, OverlayTexture.DEFAULT_UV);
matrices.pop();
}
}

View File

@@ -16,23 +16,13 @@
package net.fabricmc.fabric.mixin.renderer.client.block.render;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;
import org.spongepowered.asm.mixin.Shadow;
import net.minecraft.block.BlockState;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.block.BlockRenderManager;
import net.minecraft.client.render.block.entity.PistonBlockEntityRenderer;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.fabricmc.fabric.api.renderer.v1.render.RenderLayerHelper;
@Mixin(PistonBlockEntityRenderer.class)
abstract class PistonBlockEntityRendererMixin {
/* TODO 1.21.9
@Shadow
@Final
private BlockRenderManager manager;
@@ -42,4 +32,6 @@ abstract class PistonBlockEntityRendererMixin {
private void renderModel(BlockPos pos, BlockState state, MatrixStack matrices, VertexConsumerProvider vertexConsumers, World world, boolean cull, int overlay) {
manager.getModelRenderer().render(world, manager.getModel(state), state, pos, matrices, RenderLayerHelper.movingDelegate(vertexConsumers), cull, state.getRenderingSeed(pos), overlay);
}
*/
}

View File

@@ -18,6 +18,7 @@ package net.fabricmc.fabric.impl.client.indigo.renderer;
import net.minecraft.block.BlockRenderType;
import net.minecraft.block.BlockState;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.block.BlockModelRenderer;
import net.minecraft.client.render.block.BlockRenderManager;
@@ -74,7 +75,7 @@ public class IndigoRenderer implements Renderer {
float green = (tint >> 8 & 255) / 255.0F;
float blue = (tint & 255) / 255.0F;
FabricBlockModelRenderer.render(matrices.peek(), RenderLayerHelper.entityDelegate(vertexConsumers), model, red, green, blue, light, overlay, blockView, pos, state);
((BlockRenderManagerAccessor) renderManager).getBlockEntityModelsGetter().get().render(state.getBlock(), ItemDisplayContext.NONE, matrices, vertexConsumers, light, overlay);
((BlockRenderManagerAccessor) renderManager).getBlockEntityModelsGetter().get().render(state.getBlock(), ItemDisplayContext.NONE, matrices, MinecraftClient.getInstance().gameRenderer.getEntityRenderCommandQueue(), light, overlay);
}
}

View File

@@ -16,27 +16,17 @@
package net.fabricmc.fabric.mixin.client.indigo.renderer;
import java.util.List;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.Redirect;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.item.ItemRenderState;
import net.minecraft.client.render.item.ItemRenderer;
import net.minecraft.client.render.model.BakedQuad;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.item.ItemDisplayContext;
import net.fabricmc.fabric.api.renderer.v1.render.FabricLayerRenderState;
import net.fabricmc.fabric.impl.client.indigo.renderer.accessor.AccessLayerRenderState;
import net.fabricmc.fabric.impl.client.indigo.renderer.mesh.MutableMeshImpl;
import net.fabricmc.fabric.impl.client.indigo.renderer.render.ItemRenderContext;
@Mixin(value = ItemRenderState.LayerRenderState.class)
abstract class ItemRenderStateLayerRenderStateMixin implements FabricLayerRenderState, AccessLayerRenderState {
@@ -48,6 +38,7 @@ abstract class ItemRenderStateLayerRenderStateMixin implements FabricLayerRender
mutableMesh.clear();
}
/* TODO 1.21.9
@Redirect(method = "render", at = @At(value = "INVOKE", target = "net/minecraft/client/render/item/ItemRenderer.renderItem(Lnet/minecraft/item/ItemDisplayContext;Lnet/minecraft/client/util/math/MatrixStack;Lnet/minecraft/client/render/VertexConsumerProvider;II[ILjava/util/List;Lnet/minecraft/client/render/RenderLayer;Lnet/minecraft/client/render/item/ItemRenderState$Glint;)V"))
private void renderItemProxy(ItemDisplayContext displayContext, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay, int[] tints, List<BakedQuad> quads, RenderLayer layer, ItemRenderState.Glint glint) {
if (mutableMesh.size() > 0) {
@@ -57,6 +48,8 @@ abstract class ItemRenderStateLayerRenderStateMixin implements FabricLayerRender
}
}
*/
@Override
public MutableMeshImpl fabric_getMutableMesh() {
return mutableMesh;

View File

@@ -84,7 +84,7 @@ public final class SpecialGuiElementRegistryImpl {
private static void registerVanillaFactories() {
// Vanilla creates its special element renderers in the GameRenderer constructor
REGISTERED_FACTORIES.put(EntityGuiElementRenderState.class, context -> new EntityGuiElementRenderer(context.vertexConsumers(), context.client().getEntityRenderDispatcher(), context.entityRenderDispatcher()));
REGISTERED_FACTORIES.put(EntityGuiElementRenderState.class, context -> new EntityGuiElementRenderer(context.vertexConsumers(), context.client().getEntityRenderDispatcher()));
REGISTERED_FACTORIES.put(PlayerSkinGuiElementRenderState.class, context -> new PlayerSkinGuiElementRenderer(context.vertexConsumers()));
REGISTERED_FACTORIES.put(BookModelGuiElementRenderState.class, context -> new BookModelGuiElementRenderer(context.vertexConsumers()));
REGISTERED_FACTORIES.put(BannerResultGuiElementRenderState.class, context -> new BannerResultGuiElementRenderer(context.vertexConsumers(), context.client().getAtlasManager()));

View File

@@ -38,6 +38,7 @@ import net.minecraft.client.gui.render.SpecialGuiElementRenderer;
import net.minecraft.client.gui.render.state.GuiRenderState;
import net.minecraft.client.gui.render.state.special.SpecialGuiElementRenderState;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.entity.command.EntityRenderCommandQueue;
import net.minecraft.client.render.entity.command.EntityRenderDispatcher;
import net.fabricmc.fabric.impl.client.rendering.GuiRendererExtensions;
@@ -62,7 +63,7 @@ abstract class GuiRendererMixin implements GuiRendererExtensions {
private EntityRenderDispatcher entityRenderDispatcher = null;
@Inject(method = "<init>", at = @At(value = "RETURN"))
private void mutableSpecialElementRenderers(GuiRenderState state, VertexConsumerProvider.Immediate vertexConsumers, List<SpecialGuiElementRenderer<?>> specialElementRenderers, CallbackInfo ci) {
private void mutableSpecialElementRenderers(GuiRenderState state, VertexConsumerProvider.Immediate vertexConsumers, EntityRenderCommandQueue entityRenderCommandQueue, EntityRenderDispatcher entityRenderDispatcher, List list, CallbackInfo ci) {
this.specialElementRenderers = new IdentityHashMap<>(this.specialElementRenderers);
}

View File

@@ -16,6 +16,7 @@
package net.fabricmc.fabric.test.rendering.client;
import net.minecraft.class_11785;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.render.OverlayTexture;
import net.minecraft.client.render.RenderLayer;
@@ -55,10 +56,11 @@ public class ArmorRenderingTests implements ClientModInitializer {
armorModel.rightArm.visible = slot == EquipmentSlot.CHEST;
armorModel.head.visible = slot == EquipmentSlot.HEAD;
entityRenderQueue.pushModel(armorModel, renderState, matrices, RenderLayer.getArmorCutoutNoCull(texture), light, OverlayTexture.DEFAULT_UV, 0xFFFFFFFF, null, 0, 0);
class_11785 class11785 = entityRenderQueue.method_73529(0);
class11785.method_73490(armorModel, renderState, matrices, RenderLayer.getArmorCutoutNoCull(texture), light, OverlayTexture.DEFAULT_UV, 0xFFFFFFFF, null, 0, null);
if (stack.hasGlint()) {
entityRenderQueue.pushModel(armorModel, renderState, matrices, RenderLayer.getArmorEntityGlint(), light, OverlayTexture.DEFAULT_UV, 0xFFFFFFFF, null, 0, 0);
class11785.method_73490(armorModel, renderState, matrices, RenderLayer.getArmorEntityGlint(), light, OverlayTexture.DEFAULT_UV, 0xFFFFFFFF, null, 0, null);
}
}

View File

@@ -79,7 +79,7 @@ public final class FeatureRendererTest implements ClientModInitializer {
// Translate to center above the player's head
matrices.translate(-0.5F, -state.height + 0.25F, -0.5F);
// Render a diamond block above the player's head
commandQueue.pushBlock(matrices, Blocks.DIAMOND_BLOCK.getDefaultState(), light, OverlayTexture.DEFAULT_UV);
commandQueue.method_73529(0).method_73481(matrices, Blocks.DIAMOND_BLOCK.getDefaultState(), light, OverlayTexture.DEFAULT_UV, 0);
matrices.pop();
}

View File

@@ -23,8 +23,8 @@ import org.jetbrains.annotations.Nullable;
import org.joml.Vector3f;
import net.minecraft.block.Blocks;
import net.minecraft.client.render.VertexConsumer;
import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.RenderLayer;
import net.minecraft.client.render.entity.command.EntityRenderCommandQueue;
import net.minecraft.client.render.entity.model.AllayEntityModel;
import net.minecraft.client.render.entity.model.EntityModelLayers;
import net.minecraft.client.render.item.model.special.SpecialModelRenderer;
@@ -53,15 +53,15 @@ public class SpecialBlockRendererTest implements ClientModInitializer {
return new SpecialModelRenderer<>() {
@Override
public void render(@Nullable Object data, ItemDisplayContext displayContext, MatrixStack matrices, VertexConsumerProvider vertexConsumers, int light, int overlay, boolean glint) {
public void render(@Nullable Object data, ItemDisplayContext displayContext, MatrixStack matrices, EntityRenderCommandQueue entityRenderCommandQueue, int light, int overlay, boolean glint) {
matrices.push();
matrices.translate(0.5f, 0.0f, 0.5f);
matrices.translate(0, 1.46875f, 0);
matrices.scale(1, -1, 1);
matrices.multiply(RotationAxis.POSITIVE_Y.rotation((float) (Util.getMeasuringTimeMs() * 0.001)));
matrices.translate(0, -1.46875f, 0);
VertexConsumer vertexConsumer = vertexConsumers.getBuffer(allayModel.getLayer(ALLAY_TEXTURE));
allayModel.render(matrices, vertexConsumer, light, overlay);
entityRenderCommandQueue.method_73529(0)
.method_73483(matrices, RenderLayer.getSolid(), (matricesEntry, vertexConsumer) -> allayModel.render(matrices, vertexConsumer, light, overlay));
matrices.pop();
}

View File

@@ -42,7 +42,7 @@ public class BannerGuiElementRenderer extends SpecialGuiElementRenderer<BannerGu
@Override
protected void render(BannerGuiElementRenderState state, MatrixStack matrices) {
client.gameRenderer.getDiffuseLighting().setShaderLights(DiffuseLighting.Type.ITEMS_FLAT);
BannerBlockEntityRenderer.renderCanvas(client.getAtlasManager(), matrices, vertexConsumers, 15728880, OverlayTexture.DEFAULT_UV, MinecraftClient.getInstance().getLoadedEntityModels().getModelPart(EntityModelLayers.STANDING_BANNER_FLAG).getChild("flag"), ModelBaker.BANNER_BASE, true, state.color(), BannerPatternsComponent.DEFAULT);
BannerBlockEntityRenderer.renderCanvas(client.getAtlasManager(), matrices, client.gameRenderer.getEntityRenderCommandQueue(), 15728880, OverlayTexture.DEFAULT_UV, MinecraftClient.getInstance().getLoadedEntityModels().getModelPart(EntityModelLayers.STANDING_BANNER_FLAG).getChild("flag"), ModelBaker.BANNER_BASE, true, state.color(), BannerPatternsComponent.DEFAULT);
}
@Override

View File

@@ -55,7 +55,7 @@ public class SpecialGuiElementRendererTestWithNewGuiRenderer implements ClientMo
ProjectionType orgProjectionType = RenderSystem.getProjectionType();
GpuBufferSlice orgShaderFog = RenderSystem.getShaderFog();
GuiRenderer guiRenderer = new GuiRenderer(newGuiRenderState, mc.getBufferBuilders().getEntityVertexConsumers(), Collections.emptyList());
GuiRenderer guiRenderer = new GuiRenderer(newGuiRenderState, mc.getBufferBuilders().getEntityVertexConsumers(), mc.gameRenderer.getEntityRenderCommandQueue(), mc.gameRenderer.getEntityRenderDispatcher(), Collections.emptyList());
FogRenderer fogRenderer = new FogRenderer();
guiRenderer.render(fogRenderer.getFogBuffer(FogRenderer.FogType.NONE));
fogRenderer.close();

View File

@@ -45,7 +45,7 @@ public abstract class CreateWorldScreenMixin extends Screen {
super(null);
}
@ModifyVariable(method = "show(Lnet/minecraft/client/MinecraftClient;Lnet/minecraft/client/gui/screen/Screen;Ljava/util/function/Function;Lnet/minecraft/client/world/GeneratorOptionsFactory;Lnet/minecraft/registry/RegistryKey;Lnet/minecraft/client/gui/screen/world/CreateWorldCallback;)V",
@ModifyVariable(method = "show(Lnet/minecraft/client/MinecraftClient;Ljava/lang/Runnable;Ljava/util/function/Function;Lnet/minecraft/client/world/GeneratorOptionsFactory;Lnet/minecraft/registry/RegistryKey;Lnet/minecraft/client/gui/screen/world/CreateWorldCallback;)V",
at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/world/CreateWorldScreen;createServerConfig(Lnet/minecraft/resource/ResourcePackManager;Lnet/minecraft/resource/DataConfiguration;)Lnet/minecraft/server/SaveLoading$ServerConfig;"))
private static ResourcePackManager onCreateResManagerInit(ResourcePackManager manager) {
// Add mod data packs to the initial res pack manager so they are active even if the user doesn't use custom data packs
@@ -53,7 +53,7 @@ public abstract class CreateWorldScreenMixin extends Screen {
return manager;
}
@Redirect(method = "show(Lnet/minecraft/client/MinecraftClient;Lnet/minecraft/client/gui/screen/Screen;Ljava/util/function/Function;Lnet/minecraft/client/world/GeneratorOptionsFactory;Lnet/minecraft/registry/RegistryKey;Lnet/minecraft/client/gui/screen/world/CreateWorldCallback;)V",
@Redirect(method = "show(Lnet/minecraft/client/MinecraftClient;Ljava/lang/Runnable;Ljava/util/function/Function;Lnet/minecraft/client/world/GeneratorOptionsFactory;Lnet/minecraft/registry/RegistryKey;Lnet/minecraft/client/gui/screen/world/CreateWorldCallback;)V",
at = @At(value = "FIELD", target = "Lnet/minecraft/resource/DataConfiguration;SAFE_MODE:Lnet/minecraft/resource/DataConfiguration;", ordinal = 0))
private static DataConfiguration replaceDefaultSettings() {
return ModResourcePackUtil.createDefaultDataConfiguration();

View File

@@ -48,7 +48,7 @@ public class ResourcePackOrganizerMixin {
* They are managed entirely by ResourcePackManager on save, and are invisible to client.
*/
@Inject(method = "<init>", at = @At("TAIL"))
private void removeHiddenPacksInit(Runnable updateCallback, Function iconIdSupplier, ResourcePackManager resourcePackManager, Consumer applier, CallbackInfo ci) {
private void removeHiddenPacksInit(Consumer<ResourcePackOrganizer.AbstractPack> updateCallback, Function iconIdSupplier, ResourcePackManager resourcePackManager, Consumer applier, CallbackInfo ci) {
this.enabledPacks.removeIf(profile -> ((FabricResourcePackProfile) profile).fabric_isHidden());
this.disabledPacks.removeIf(profile -> ((FabricResourcePackProfile) profile).fabric_isHidden());
}

View File

@@ -105,7 +105,7 @@ public final class FluidStorageUtil {
if (!fill && handItem == Items.POTION) sound = SoundEvents.ITEM_BOTTLE_EMPTY;
}
player.world().playSound(player, player.getX(), player.getEyeY(), player.getZ(), sound, SoundCategory.PLAYERS, 1, 1);
player.getEntityWorld().playSound(player, player.getX(), player.getEyeY(), player.getZ(), sound, SoundCategory.PLAYERS, 1, 1);
return true;
}

View File

@@ -77,7 +77,7 @@ class PlayerInventoryStorageImpl extends InventoryStorageImpl implements PlayerI
// Drop in the world on the server side (will be synced by the game with the client).
// Dropping items is server-side only because it involves randomness.
if (amount > 0 && !playerInventory.player.world().isClient()) {
if (amount > 0 && !playerInventory.player.getEntityWorld().isClient()) {
droppedStacks.addDrop(variant, amount, throwRandomly, retainOwnership, transaction);
}
}

View File

@@ -53,7 +53,7 @@ public class FluidVariantRenderTest implements ClientModInitializer {
for (FluidVariant variant : variants) {
Sprite[] sprites = FluidVariantRendering.getSprites(variant);
int color = FluidVariantRendering.getColor(variant, player.world(), player.getBlockPos());
int color = FluidVariantRendering.getColor(variant, player.getEntityWorld(), player.getBlockPos());
if (sprites != null) {
drawContext.drawSpriteStretched(RenderPipelines.GUI_TEXTURED, sprites[0], 0, renderY, 16, 16, color);

View File

@@ -186,7 +186,6 @@ transitive-accessible method net/minecraft/block/EndPortalBlock <init> (Lnet/min
transitive-accessible method net/minecraft/block/EndRodBlock <init> (Lnet/minecraft/block/AbstractBlock$Settings;)V
transitive-accessible method net/minecraft/block/EnderChestBlock <init> (Lnet/minecraft/block/AbstractBlock$Settings;)V
transitive-accessible method net/minecraft/block/FarmlandBlock <init> (Lnet/minecraft/block/AbstractBlock$Settings;)V
transitive-accessible method net/minecraft/block/FletchingTableBlock <init> (Lnet/minecraft/block/AbstractBlock$Settings;)V
transitive-accessible method net/minecraft/block/FlowerbedBlock <init> (Lnet/minecraft/block/AbstractBlock$Settings;)V
transitive-accessible method net/minecraft/block/FluidBlock <init> (Lnet/minecraft/fluid/FlowableFluid;Lnet/minecraft/block/AbstractBlock$Settings;)V
transitive-accessible method net/minecraft/block/FungusBlock <init> (Lnet/minecraft/registry/RegistryKey;Lnet/minecraft/block/Block;Lnet/minecraft/block/AbstractBlock$Settings;)V

View File

@@ -2,9 +2,9 @@ org.gradle.jvmargs=-Xmx2560M
org.gradle.parallel=true
org.gradle.configuration-cache=false
version=0.132.0
minecraft_version=25w33a
yarn_version=+build.5
version=0.132.1
minecraft_version=25w34b
yarn_version=+build.1
loader_version=0.17.0
installer_version=1.0.1
@@ -17,42 +17,42 @@ fabric-api-lookup-api-v1-version=1.6.103
fabric-biome-api-v1-version=16.0.13
fabric-block-api-v1-version=1.1.5
fabric-block-view-api-v2-version=1.0.33
fabric-client-gametest-api-v1-version=4.2.7
fabric-client-gametest-api-v1-version=4.2.8
fabric-command-api-v2-version=2.3.3
fabric-content-registries-v0-version=10.1.0
fabric-content-registries-v0-version=10.1.1
fabric-crash-report-info-v1-version=0.3.17
fabric-data-attachment-api-v1-version=1.8.15
fabric-data-generation-api-v1-version=23.2.9
fabric-data-attachment-api-v1-version=1.8.16
fabric-data-generation-api-v1-version=23.2.10
fabric-dimensions-v1-version=4.0.21
fabric-entity-events-v1-version=2.1.4
fabric-events-interaction-v0-version=4.0.26
fabric-game-rule-api-v1-version=1.0.75
fabric-gametest-api-v1-version=3.1.13
fabric-item-api-v1-version=11.5.2
fabric-item-group-api-v1-version=4.2.17
fabric-entity-events-v1-version=2.1.5
fabric-events-interaction-v0-version=4.0.27
fabric-game-rule-api-v1-version=1.0.76
fabric-gametest-api-v1-version=3.1.14
fabric-item-api-v1-version=11.5.3
fabric-item-group-api-v1-version=4.2.18
fabric-key-binding-api-v1-version=1.0.67
fabric-lifecycle-events-v1-version=2.6.6
fabric-loot-api-v2-version=3.0.59
fabric-loot-api-v3-version=2.0.6
fabric-loot-api-v2-version=3.0.60
fabric-loot-api-v3-version=2.0.7
fabric-message-api-v1-version=6.1.4
fabric-model-loading-api-v1-version=5.2.10
fabric-networking-api-v1-version=5.0.4
fabric-object-builder-api-v1-version=21.1.11
fabric-particles-v1-version=4.1.11
fabric-recipe-api-v1-version=8.1.17
fabric-registry-sync-v0-version=6.1.30
fabric-renderer-api-v1-version=7.0.7
fabric-renderer-indigo-version=4.0.7
fabric-model-loading-api-v1-version=5.2.11
fabric-networking-api-v1-version=5.0.5
fabric-object-builder-api-v1-version=21.1.12
fabric-particles-v1-version=4.1.12
fabric-recipe-api-v1-version=8.1.18
fabric-registry-sync-v0-version=6.1.31
fabric-renderer-api-v1-version=7.0.8
fabric-renderer-indigo-version=4.0.8
fabric-rendering-fluids-v1-version=3.1.34
fabric-rendering-v1-version=14.0.2
fabric-rendering-v1-version=14.0.3
fabric-resource-conditions-api-v1-version=5.0.27
fabric-resource-loader-v0-version=3.1.15
fabric-resource-loader-v0-version=3.1.16
fabric-screen-api-v1-version=2.1.3
fabric-screen-handler-api-v1-version=1.3.139
fabric-screen-handler-api-v1-version=1.3.140
fabric-serialization-api-v1-version=1.0.0
fabric-sound-api-v1-version=1.0.44
fabric-tag-api-v1-version=1.2.5
fabric-transfer-api-v1-version=6.0.9
fabric-transitive-access-wideners-v1-version=6.4.3
fabric-tag-api-v1-version=1.2.6
fabric-transfer-api-v1-version=6.0.10
fabric-transitive-access-wideners-v1-version=6.4.4
fabric-convention-tags-v1-version=2.1.43
fabric-convention-tags-v2-version=2.15.8