diff --git a/deprecated/fabric-resource-loader-v0/src/main/resources/fabric.mod.json b/deprecated/fabric-resource-loader-v0/src/main/resources/fabric.mod.json index bcdf6ddabdc..4b07bc4a9d3 100644 --- a/deprecated/fabric-resource-loader-v0/src/main/resources/fabric.mod.json +++ b/deprecated/fabric-resource-loader-v0/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-resource-loader-v1": "*" }, "description": "Asset and data resource loading.", diff --git a/fabric-api-base/src/main/resources/fabric.mod.json b/fabric-api-base/src/main/resources/fabric.mod.json index f6e9ccc3abd..af4ceacda91 100644 --- a/fabric-api-base/src/main/resources/fabric.mod.json +++ b/fabric-api-base/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3" + "fabricloader": ">=0.18.4" }, "description": "Contains the essentials for Fabric API modules.", "custom": { diff --git a/fabric-api-lookup-api-v1/src/main/resources/fabric.mod.json b/fabric-api-lookup-api-v1/src/main/resources/fabric.mod.json index 2353276a4cf..c5df817a177 100644 --- a/fabric-api-lookup-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-api-lookup-api-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*", "fabric-lifecycle-events-v1": "*" }, diff --git a/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/NoiseChunkMixin.java b/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/NoiseChunkMixin.java index 3575ae32dd3..0e4f3662c5e 100644 --- a/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/NoiseChunkMixin.java +++ b/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/NoiseChunkMixin.java @@ -43,12 +43,12 @@ public class NoiseChunkMixin { private long seed; @Inject(method = "", at = @At("TAIL")) - private void init(int horizontalSize, RandomState randomState, int i, int j, NoiseSettings generationShapeConfig, DensityFunctions.BeardifierOrMarker arg, NoiseGeneratorSettings chunkGeneratorSettings, Aquifer.FluidPicker fluidLevelSampler, Blender blender, CallbackInfo ci) { + private void init(int cellCountXZ, RandomState randomState, int chunkMinBlockX, int chunkMinBlockZ, NoiseSettings noiseSettings, DensityFunctions.BeardifierOrMarker beardifier, NoiseGeneratorSettings settings, Aquifer.FluidPicker globalFluidPicker, Blender blender, CallbackInfo ci) { seed = ((MultiNoiseSamplerHooks) (Object) randomState.sampler()).fabric_getSeed(); } @Inject(method = "cachedClimateSampler", at = @At("RETURN")) - private void createMultiNoiseSampler(NoiseRouter noiseRouter, List list, CallbackInfoReturnable cir) { + private void createMultiNoiseSampler(NoiseRouter noises, List spawnTarget, CallbackInfoReturnable cir) { ((MultiNoiseSamplerHooks) (Object) cir.getReturnValue()).fabric_setSeed(seed); } } diff --git a/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/RandomStateMixin.java b/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/RandomStateMixin.java index b039e38897f..8c619c4be2c 100644 --- a/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/RandomStateMixin.java +++ b/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/RandomStateMixin.java @@ -38,7 +38,7 @@ public class RandomStateMixin { private Climate.Sampler sampler; @Inject(method = "", at = @At("TAIL")) - private void init(NoiseGeneratorSettings chunkGeneratorSettings, HolderGetter arg, long seed, CallbackInfo ci) { + private void init(NoiseGeneratorSettings settings, HolderGetter noises, long seed, CallbackInfo ci) { ((MultiNoiseSamplerHooks) (Object) sampler).fabric_setSeed(seed); } } diff --git a/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/TheEndBiomeSourceMixin.java b/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/TheEndBiomeSourceMixin.java index 0cfa5f2411d..17eaca74463 100644 --- a/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/TheEndBiomeSourceMixin.java +++ b/fabric-biome-api-v1/src/main/java/net/fabricmc/fabric/mixin/biome/TheEndBiomeSourceMixin.java @@ -49,7 +49,7 @@ public class TheEndBiomeSourceMixin extends BiomeSourceMixin { @Shadow @Mutable @Final - static MapCodec CODEC; + public static MapCodec CODEC; @Unique private Supplier overrides; @@ -92,7 +92,7 @@ private static void clearLookup(HolderGetter biomes, CallbackInfoReturnab * Uses the captured biome registry to set up the modded end biomes. */ @Inject(method = "", at = @At("RETURN")) - private void init(Holder centerBiome, Holder highlandsBiome, Holder midlandsBiome, Holder smallIslandsBiome, Holder barrensBiome, CallbackInfo ci) { + private void init(Holder end, Holder highlands, Holder midlands, Holder islands, Holder barrens, CallbackInfo ci) { HolderGetter biomes = TheEndBiomeData.biomeRegistry.get(); if (biomes == null) { @@ -105,8 +105,8 @@ private void init(Holder centerBiome, Holder highlandsBiome, Holde } @Inject(method = "getNoiseBiome", at = @At("RETURN"), cancellable = true) - private void getWeightedEndBiome(int biomeX, int biomeY, int biomeZ, Climate.Sampler noise, CallbackInfoReturnable> cir) { - cir.setReturnValue(overrides.get().pick(biomeX, biomeY, biomeZ, noise, cir.getReturnValue())); + private void getWeightedEndBiome(int quartX, int quartY, int quartZ, Climate.Sampler sampler, CallbackInfoReturnable> cir) { + cir.setReturnValue(overrides.get().pick(quartX, quartY, quartZ, sampler, cir.getReturnValue())); } @Override diff --git a/fabric-biome-api-v1/src/main/resources/fabric.mod.json b/fabric-biome-api-v1/src/main/resources/fabric.mod.json index 5fa116675fd..d410e84cbbb 100644 --- a/fabric-biome-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-biome-api-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "minecraft": ">=1.16.2" }, "description": "Hooks for adding biomes to the default world generator.", diff --git a/fabric-block-api-v1/src/main/java/net/fabricmc/fabric/mixin/block/LivingEntityMixin.java b/fabric-block-api-v1/src/main/java/net/fabricmc/fabric/mixin/block/LivingEntityMixin.java index 542a6f2f499..d53d94e2ee8 100644 --- a/fabric-block-api-v1/src/main/java/net/fabricmc/fabric/mixin/block/LivingEntityMixin.java +++ b/fabric-block-api-v1/src/main/java/net/fabricmc/fabric/mixin/block/LivingEntityMixin.java @@ -16,6 +16,8 @@ package net.fabricmc.fabric.mixin.block; +import com.llamalad7.mixinextras.expression.Definition; +import com.llamalad7.mixinextras.expression.Expression; import com.llamalad7.mixinextras.sugar.Local; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -32,13 +34,15 @@ @Mixin(LivingEntity.class) abstract class LivingEntityMixin { + @Definition(id = "getBlockState", method = "Lnet/minecraft/world/level/Level;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;") + @Expression("? = ?.getBlockState(?)") @Inject( method = "trapdoorUsableAsLadder", - at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/world/level/Level;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;"), + at = @At(value = "MIXINEXTRAS:EXPRESSION", shift = At.Shift.AFTER), allow = 1, cancellable = true ) - private void allowTaggedBlocksForTrapdoorClimbing(BlockPos pos, BlockState state, CallbackInfoReturnable info, @Local(ordinal = 1) BlockState belowState) { + private void allowTaggedBlocksForTrapdoorClimbing(BlockPos pos, BlockState state, CallbackInfoReturnable info, @Local(name = "belowState") BlockState belowState) { if (belowState.is(BlockFunctionalityTags.CAN_CLIMB_TRAPDOOR_ABOVE)) { if (belowState.getBlock() instanceof LadderBlock) { // Check that the ladder and trapdoor are placed in the same direction. diff --git a/fabric-block-api-v1/src/main/resources/fabric-block-api-v1.mixins.json b/fabric-block-api-v1/src/main/resources/fabric-block-api-v1.mixins.json index 87d6bba5ab7..faf9c6b7894 100644 --- a/fabric-block-api-v1/src/main/resources/fabric-block-api-v1.mixins.json +++ b/fabric-block-api-v1/src/main/resources/fabric-block-api-v1.mixins.json @@ -14,5 +14,8 @@ }, "overwrites": { "requireAnnotations": true + }, + "mixinextras": { + "minVersion": "0.5.0" } } diff --git a/fabric-block-api-v1/src/main/resources/fabric.mod.json b/fabric-block-api-v1/src/main/resources/fabric.mod.json index b2983d6120d..2d0aaf1008d 100644 --- a/fabric-block-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-block-api-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3" + "fabricloader": ">=0.18.4" }, "entrypoints": { }, diff --git a/fabric-block-view-api-v2/src/client/java/net/fabricmc/fabric/mixin/blockview/client/RenderRegionCacheMixin.java b/fabric-block-view-api-v2/src/client/java/net/fabricmc/fabric/mixin/blockview/client/RenderRegionCacheMixin.java index 694f7342e8a..20ff4d3ab18 100644 --- a/fabric-block-view-api-v2/src/client/java/net/fabricmc/fabric/mixin/blockview/client/RenderRegionCacheMixin.java +++ b/fabric-block-view-api-v2/src/client/java/net/fabricmc/fabric/mixin/blockview/client/RenderRegionCacheMixin.java @@ -50,7 +50,7 @@ public abstract class RenderRegionCacheMixin { private static final Logger LOGGER = LoggerFactory.getLogger(RenderRegionCacheMixin.class); @Inject(method = "createRegion", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/chunk/RenderRegionCache;getSectionDataCopy(Lnet/minecraft/world/level/Level;III)Lnet/minecraft/client/renderer/chunk/SectionCopy;")) - private void copyDataForChunk(Level level, long packedChunkPos, CallbackInfoReturnable cir, @Share("dataMap") LocalRef> mapRef, @Local(ordinal = 11) int x, @Local(ordinal = 10) int y, @Local(ordinal = 9) int z) { + private void copyDataForChunk(Level level, long sectionNode, CallbackInfoReturnable cir, @Share("dataMap") LocalRef> mapRef, @Local(name = "regionSectionX") int regionSectionX, @Local(name = "regionSectionY") int regionSectionY, @Local(name = "regionSectionZ") int regionSectionZ) { // Hash maps in chunks should generally not be modified outside of client thread // but does happen in practice, due to mods or inconsistent vanilla behaviors, causing // CMEs when we iterate the map. (Vanilla does not iterate these maps when it builds @@ -59,7 +59,7 @@ private void copyDataForChunk(Level level, long packedChunkPos, CallbackInfoRetu // We handle this simply by retrying until it works. Ugly but effective. while (true) { try { - mapRef.set(mapChunk(level.getChunk(x, z), SectionPos.of(packedChunkPos), mapRef.get())); + mapRef.set(mapChunk(level.getChunk(regionSectionX, regionSectionZ), SectionPos.of(sectionNode), mapRef.get())); break; } catch (ConcurrentModificationException e) { final int count = ERROR_COUNTER.incrementAndGet(); @@ -76,7 +76,7 @@ private void copyDataForChunk(Level level, long packedChunkPos, CallbackInfoRetu } @Inject(method = "createRegion", at = @At(value = "RETURN")) - private void createDataMap(Level level, long l, CallbackInfoReturnable cir, @Share("dataMap") LocalRef> mapRef) { + private void createDataMap(Level level, long sectionNode, CallbackInfoReturnable cir, @Share("dataMap") LocalRef> mapRef) { RenderSectionRegion rendererRegion = cir.getReturnValue(); Long2ObjectOpenHashMap map = mapRef.get(); diff --git a/fabric-block-view-api-v2/src/main/resources/fabric.mod.json b/fabric-block-view-api-v2/src/main/resources/fabric.mod.json index 2c1fd3f4b96..70bf30ddc3c 100644 --- a/fabric-block-view-api-v2/src/main/resources/fabric.mod.json +++ b/fabric-block-view-api-v2/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3" + "fabricloader": ">=0.18.4" }, "description": "Hooks for block views", "mixins": [ diff --git a/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/input/GlCommandEncoderMixin.java b/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/input/GlCommandEncoderMixin.java index 5ba1cb78874..cf9af15e9dd 100644 --- a/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/input/GlCommandEncoderMixin.java +++ b/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/input/GlCommandEncoderMixin.java @@ -32,8 +32,8 @@ @Mixin(GlCommandEncoder.class) public class GlCommandEncoderMixin { @WrapOperation(method = "presentTexture", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/opengl/DirectStateAccess;blitFrameBuffers(IIIIIIIIIIII)V")) - private void blitFrameBuffer(DirectStateAccess manager, int readFramebuffer, int drawFramebuffer, int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, int mask, int filter, Operation original, @Local(argsOnly = true) GpuTextureView gpuTextureView) { - if (gpuTextureView.texture() == Minecraft.getInstance().getMainRenderTarget().getColorTexture()) { + private void blitFrameBuffer(DirectStateAccess manager, int readFramebuffer, int drawFramebuffer, int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, int mask, int filter, Operation original, @Local(argsOnly = true, name = "textureView") GpuTextureView textureView) { + if (textureView.texture() == Minecraft.getInstance().getMainRenderTarget().getColorTexture()) { WindowHooks window = ((WindowHooks) (Object) Minecraft.getInstance().getWindow()); dstX1 = window.fabric_getRealFramebufferWidth(); dstY1 = window.fabric_getRealFramebufferHeight(); diff --git a/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/input/InputConstantsMixin.java b/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/input/InputConstantsMixin.java index 2a6cee557d0..e214c3516f3 100644 --- a/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/input/InputConstantsMixin.java +++ b/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/input/InputConstantsMixin.java @@ -29,8 +29,8 @@ @Mixin(InputConstants.class) public class InputConstantsMixin { @Inject(method = "isKeyDown", at = @At("HEAD"), cancellable = true) - private static void useGameTestInputForKeyDown(Window window, int keyCode, CallbackInfoReturnable cir) { - cir.setReturnValue(TestInputImpl.isKeyDown(keyCode)); + private static void useGameTestInputForKeyDown(Window window, int key, CallbackInfoReturnable cir) { + cir.setReturnValue(TestInputImpl.isKeyDown(key)); } @Inject(method = {"setupKeyboardCallbacks", "setupMouseCallbacks"}, at = @At("HEAD"), cancellable = true) diff --git a/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/input/WindowMixin.java b/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/input/WindowMixin.java index 7ce35a58ffa..ed214924b89 100644 --- a/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/input/WindowMixin.java +++ b/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/input/WindowMixin.java @@ -89,9 +89,9 @@ public abstract class WindowMixin implements WindowHooks { private int realFramebufferHeight; @Inject(method = "", at = @At("RETURN")) - private void onInit(WindowEventHandler eventHandler, DisplayData settings, String fullscreenVideoModeString, String title, GpuBackend[] backends, ShaderSource defaultShaderSource, GpuDebugOptions debugOptions, CallbackInfo ci) { - this.defaultWidth = settings.width(); - this.defaultHeight = settings.height(); + private void onInit(WindowEventHandler eventHandler, DisplayData displayData, String fullscreenVideoModeString, String title, GpuBackend[] backends, ShaderSource defaultShaderSource, GpuDebugOptions debugOptions, CallbackInfo ci) { + this.defaultWidth = displayData.width(); + this.defaultHeight = displayData.height(); this.realWidth = this.width; this.realHeight = this.height; this.realFramebufferWidth = this.framebufferWidth; @@ -107,16 +107,16 @@ private void cancelEvents(CallbackInfo ci) { } @Inject(method = "onResize", at = @At("HEAD"), cancellable = true) - private void cancelResize(long window, int width, int height, CallbackInfo ci) { - realWidth = width; - realHeight = height; + private void cancelResize(long handle, int newWidth, int newHeight, CallbackInfo ci) { + realWidth = newWidth; + realHeight = newHeight; ci.cancel(); } @Inject(method = "onFramebufferResize", at = @At("HEAD"), cancellable = true) - private void cancelFramebufferResize(long window, int width, int height, CallbackInfo ci) { - realFramebufferWidth = width; - realFramebufferHeight = height; + private void cancelFramebufferResize(long handle, int newWidth, int newHeight, CallbackInfo ci) { + realFramebufferWidth = newWidth; + realFramebufferHeight = newHeight; ci.cancel(); } diff --git a/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/threading/BlockableEventLoopMixin.java b/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/threading/BlockableEventLoopMixin.java index 836a052abef..fae303458ad 100644 --- a/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/threading/BlockableEventLoopMixin.java +++ b/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/threading/BlockableEventLoopMixin.java @@ -30,10 +30,10 @@ @Mixin(BlockableEventLoop.class) public class BlockableEventLoopMixin { @Inject(method = "schedule", at = @At("HEAD")) - private void onPacketHandlerSchedule(Runnable task, CallbackInfo ci) { + private void onPacketHandlerSchedule(Runnable r, CallbackInfo ci) { switch ((Object) this) { - case Minecraft $ -> NetworkSynchronizer.CLIENTBOUND.preTaskAdded(task); - case MinecraftServer $ -> NetworkSynchronizer.SERVERBOUND.preTaskAdded(task); + case Minecraft $ -> NetworkSynchronizer.CLIENTBOUND.preTaskAdded(r); + case MinecraftServer $ -> NetworkSynchronizer.SERVERBOUND.preTaskAdded(r); default -> { } } diff --git a/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/threading/ConnectionMixin.java b/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/threading/ConnectionMixin.java index 48e575d983b..44f2695c054 100644 --- a/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/threading/ConnectionMixin.java +++ b/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/threading/ConnectionMixin.java @@ -39,12 +39,12 @@ public class ConnectionMixin { private PacketFlow receiving; @WrapMethod(method = "channelRead0(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/protocol/Packet;)V") - private void onNettyReceivePacket(ChannelHandlerContext context, Packet packet, Operation original) { + private void onNettyReceivePacket(ChannelHandlerContext ctx, Packet packet, Operation original) { NetworkSynchronizer synchronizer = receiving == PacketFlow.CLIENTBOUND ? NetworkSynchronizer.CLIENTBOUND : NetworkSynchronizer.SERVERBOUND; synchronizer.preNettyHandlePacket(); try { - original.call(context, packet); + original.call(ctx, packet); } finally { synchronizer.postNettyHandlePacket(); } diff --git a/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/threading/MinecraftMixin.java b/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/threading/MinecraftMixin.java index 3a293fcb166..05294f93816 100644 --- a/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/threading/MinecraftMixin.java +++ b/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/threading/MinecraftMixin.java @@ -108,10 +108,10 @@ private void postRunTasksHook(CallbackInfo ci, @Share("ticksPerFrame") LocalIntR } @Inject(method = "doWorldLoad", at = @At("HEAD"), cancellable = true) - private void deferStartIntegratedServer(LevelStorageSource.LevelStorageAccess storageAccess, PackRepository dataPackManager, WorldStem worldStem, boolean newWorld, CallbackInfo ci) { + private void deferStartIntegratedServer(LevelStorageSource.LevelStorageAccess levelSourceAccess, PackRepository packRepository, WorldStem worldStem, boolean newWorld, CallbackInfo ci) { if (ThreadingImpl.taskToRun != null) { // don't start the integrated server (which busywaits) inside a task - deferredTask = () -> Minecraft.getInstance().doWorldLoad(storageAccess, dataPackManager, worldStem, newWorld); + deferredTask = () -> Minecraft.getInstance().doWorldLoad(levelSourceAccess, packRepository, worldStem, newWorld); ci.cancel(); } } @@ -124,10 +124,10 @@ private void onStartIntegratedServerBusyWait(CallbackInfo ci) { } @Inject(method = "disconnect(Lnet/minecraft/client/gui/screens/Screen;Z)V", at = @At("HEAD"), cancellable = true) - private void deferDisconnect(Screen disconnectionScreen, boolean transferring, CallbackInfo ci) { + private void deferDisconnect(Screen screen, boolean keepResourcePacks, CallbackInfo ci) { if (Minecraft.getInstance().getSingleplayerServer() != null && ThreadingImpl.taskToRun != null) { // don't disconnect (which busywaits) inside a task - deferredTask = () -> Minecraft.getInstance().disconnect(disconnectionScreen, transferring); + deferredTask = () -> Minecraft.getInstance().disconnect(screen, keepResourcePacks); ci.cancel(); } } diff --git a/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/world/CreateWorldScreenMixin.java b/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/world/CreateWorldScreenMixin.java index 0e1c43b5b83..89e2bf819b7 100644 --- a/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/world/CreateWorldScreenMixin.java +++ b/fabric-client-gametest-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/gametest/world/CreateWorldScreenMixin.java @@ -38,9 +38,9 @@ @Mixin(CreateWorldScreen.class) public class CreateWorldScreenMixin { @Inject(method = "onCreate", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/worldselection/WorldOpenFlows;confirmWorldCreation(Lnet/minecraft/client/Minecraft;Lnet/minecraft/client/gui/screens/worldselection/CreateWorldScreen;Lcom/mojang/serialization/Lifecycle;Ljava/lang/Runnable;Z)V"), cancellable = true) - private void createLevelDataForServers(CallbackInfo ci, @Local LayeredRegistryAccess registries, @Local PrimaryLevelData levelData) { + private void createLevelDataForServers(CallbackInfo ci, @Local(name = "finalLayers") LayeredRegistryAccess finalLayers, @Local(name = "worldData") PrimaryLevelData worldData) { if (DedicatedServerImplUtil.saveLevelDataTo != null) { - CompoundTag levelDatInner = levelData.createTag(registries.compositeAccess(), null); + CompoundTag levelDatInner = worldData.createTag(finalLayers.compositeAccess(), null); CompoundTag levelDat = new CompoundTag(); levelDat.put("Data", levelDatInner); diff --git a/fabric-client-gametest-api-v1/src/client/resources/fabric.mod.json b/fabric-client-gametest-api-v1/src/client/resources/fabric.mod.json index c157c4d68ac..78cf55efb8d 100644 --- a/fabric-client-gametest-api-v1/src/client/resources/fabric.mod.json +++ b/fabric-client-gametest-api-v1/src/client/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-resource-loader-v1": "*" }, "description": "Allows registration of client game tests.", diff --git a/fabric-command-api-v2/src/client/java/net/fabricmc/fabric/mixin/command/client/ClientPacketListenerMixin.java b/fabric-command-api-v2/src/client/java/net/fabricmc/fabric/mixin/command/client/ClientPacketListenerMixin.java index cbe27c445e1..16557b1fd5a 100644 --- a/fabric-command-api-v2/src/client/java/net/fabricmc/fabric/mixin/command/client/ClientPacketListenerMixin.java +++ b/fabric-command-api-v2/src/client/java/net/fabricmc/fabric/mixin/command/client/ClientPacketListenerMixin.java @@ -83,7 +83,7 @@ private void setLastReceivedCommandsPacket(ClientboundCommandsPacket packet, Cal } @Inject(method = "sendUnattendedCommand", at = @At("HEAD"), cancellable = true) - private void onSendCommand(String command, Screen screen, CallbackInfo info) { + private void onSendCommand(String command, Screen screenAfterCommand, CallbackInfo info) { if (ClientCommandInternals.executeCommand(command)) { info.cancel(); } diff --git a/fabric-command-api-v2/src/main/java/net/fabricmc/fabric/mixin/command/CommandsMixin.java b/fabric-command-api-v2/src/main/java/net/fabricmc/fabric/mixin/command/CommandsMixin.java index 1c36e9b8134..01872cd31e7 100644 --- a/fabric-command-api-v2/src/main/java/net/fabricmc/fabric/mixin/command/CommandsMixin.java +++ b/fabric-command-api-v2/src/main/java/net/fabricmc/fabric/mixin/command/CommandsMixin.java @@ -44,7 +44,7 @@ public abstract class CommandsMixin { * @reason Add commands before ambiguities are calculated. */ @Inject(at = @At(value = "INVOKE", target = "Lcom/mojang/brigadier/CommandDispatcher;setConsumer(Lcom/mojang/brigadier/ResultConsumer;)V"), method = "") - private void fabric_addCommands(Commands.CommandSelection selection, CommandBuildContext buildContext, CallbackInfo ci) { - CommandRegistrationCallback.EVENT.invoker().register(this.dispatcher, buildContext, selection); + private void fabric_addCommands(Commands.CommandSelection commandSelection, CommandBuildContext context, CallbackInfo ci) { + CommandRegistrationCallback.EVENT.invoker().register(this.dispatcher, context, commandSelection); } } diff --git a/fabric-command-api-v2/src/main/resources/fabric.mod.json b/fabric-command-api-v2/src/main/resources/fabric.mod.json index bc90a273500..83f7612c8f1 100644 --- a/fabric-command-api-v2/src/main/resources/fabric.mod.json +++ b/fabric-command-api-v2/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*", "minecraft": ">1.19-alpha.22.11.a" }, diff --git a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/AxeItemMixin.java b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/AxeItemMixin.java index 9d609e637de..e785e87d105 100644 --- a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/AxeItemMixin.java +++ b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/AxeItemMixin.java @@ -33,7 +33,7 @@ @Mixin(AxeItem.class) public class AxeItemMixin { @ModifyArg(method = "getStripped", at = @At(value = "INVOKE", target = "Ljava/util/Optional;map(Ljava/util/function/Function;)Ljava/util/Optional;")) - private Function handleCustomStrippingBehavior(Function mapper, @Local(argsOnly = true) BlockState state) { + private Function handleCustomStrippingBehavior(Function mapper, @Local(argsOnly = true, name = "state") BlockState state) { StrippableBlockRegistry.StrippingTransformer transformer = StrippableBlockRegistryImpl.getTransformer(state.getBlock()); if (transformer != null) { diff --git a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/FireBlockMixin.java b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/FireBlockMixin.java index cccffc6cfcb..6b6b7a09521 100644 --- a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/FireBlockMixin.java +++ b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/FireBlockMixin.java @@ -39,12 +39,12 @@ public class FireBlockMixin implements FireBlockHooks { private FlammableBlockRegistryImpl registry; @Shadow - private int getBurnOdds(BlockState block_1) { + private int getBurnOdds(BlockState state) { return 0; } @Shadow - private int getIgniteOdds(BlockState block_1) { + private int getIgniteOdds(BlockState state) { return 0; } @@ -53,13 +53,13 @@ private void afterConstruct(Block.Properties properties, CallbackInfo info) { registry = FlammableBlockRegistryImpl.getInstance((Block) (Object) this); } - @Inject(at = @At("HEAD"), method = "getIgniteOdds", cancellable = true) - private void getFabricBurnChance(BlockState block, CallbackInfoReturnable info) { - FlammableBlockRegistry.Entry entry = registry.getFabric(block.getBlock()); + @Inject(at = @At("HEAD"), method = "getIgniteOdds(Lnet/minecraft/world/level/block/state/BlockState;)I", cancellable = true) + private void getFabricBurnChance(BlockState state, CallbackInfoReturnable info) { + FlammableBlockRegistry.Entry entry = registry.getFabric(state.getBlock()); if (entry != null) { // TODO: use a (BlockState -> int) with this as the default impl - if (block.hasProperty(BlockStateProperties.WATERLOGGED) && block.getValue(BlockStateProperties.WATERLOGGED)) { + if (state.hasProperty(BlockStateProperties.WATERLOGGED) && state.getValue(BlockStateProperties.WATERLOGGED)) { info.setReturnValue(0); } else { info.setReturnValue(entry.getIgniteOdds()); @@ -68,12 +68,12 @@ private void getFabricBurnChance(BlockState block, CallbackInfoReturnable info) } @Inject(at = @At("HEAD"), method = "getBurnOdds", cancellable = true) - private void getFabricSpreadChance(BlockState block, CallbackInfoReturnable info) { - FlammableBlockRegistry.Entry entry = registry.getFabric(block.getBlock()); + private void getFabricSpreadChance(BlockState state, CallbackInfoReturnable info) { + FlammableBlockRegistry.Entry entry = registry.getFabric(state.getBlock()); if (entry != null) { // TODO: use a (BlockState -> int) with this as the default impl - if (block.hasProperty(BlockStateProperties.WATERLOGGED) && block.getValue(BlockStateProperties.WATERLOGGED)) { + if (state.hasProperty(BlockStateProperties.WATERLOGGED) && state.getValue(BlockStateProperties.WATERLOGGED)) { info.setReturnValue(0); } else { info.setReturnValue(entry.getBurnOdds()); diff --git a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/FuelValuesMixin.java b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/FuelValuesMixin.java index 57da5804d33..79eb8b1a81c 100644 --- a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/FuelValuesMixin.java +++ b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/FuelValuesMixin.java @@ -49,8 +49,8 @@ public abstract class FuelValuesMixin { ), allow = 1 ) - private static FuelValues.Builder build(FuelValues.Builder builder, TagKey tag, Operation operation, @Local(argsOnly = true) HolderLookup.Provider registries, @Local(argsOnly = true) FeatureFlagSet features, @Local(argsOnly = true) int baseSmeltTime) { - final var context = new FuelRegistryEventsContextImpl(registries, features, baseSmeltTime); + private static FuelValues.Builder build(FuelValues.Builder builder, TagKey tag, Operation operation, @Local(argsOnly = true, name = "registries") HolderLookup.Provider registries, @Local(argsOnly = true, name = "enabledFeatures") FeatureFlagSet enabledFeatures, @Local(argsOnly = true, name = "baseUnit") int baseUnit) { + final var context = new FuelRegistryEventsContextImpl(registries, enabledFeatures, baseUnit); FuelValueEvents.BUILD.invoker().build(builder, context); diff --git a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/PathfindingContextMixin.java b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/PathfindingContextMixin.java index 0f8d84dabf7..76e5d394859 100644 --- a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/PathfindingContextMixin.java +++ b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/PathfindingContextMixin.java @@ -16,6 +16,8 @@ package net.fabricmc.fabric.mixin.content.registry; +import com.llamalad7.mixinextras.expression.Definition; +import com.llamalad7.mixinextras.expression.Expression; import com.llamalad7.mixinextras.sugar.Local; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -34,7 +36,7 @@ @Mixin(PathfindingContext.class) public abstract class PathfindingContextMixin { @Shadow - public abstract BlockState getBlockState(BlockPos blockPos); + public abstract BlockState getBlockState(BlockPos pos); @Shadow public abstract CollisionGetter level(); @@ -42,8 +44,10 @@ public abstract class PathfindingContextMixin { /** * Overrides the node type for the specified position, if the position is found as neighbor block in a path. */ - @Inject(method = "getPathTypeFromState", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/core/BlockPos$MutableBlockPos;set(III)Lnet/minecraft/core/BlockPos$MutableBlockPos;"), cancellable = true) - private void onGetNodeType(int x, int y, int z, CallbackInfoReturnable cir, @Local BlockPos pos) { + @Definition(id = "set", method = "Lnet/minecraft/core/BlockPos$MutableBlockPos;set(III)Lnet/minecraft/core/BlockPos$MutableBlockPos;") + @Expression("? = ?.set(?, ?, ?)") + @Inject(method = "getPathTypeFromState", at = @At(value = "MIXINEXTRAS:EXPRESSION", shift = At.Shift.AFTER), cancellable = true) + private void onGetNodeType(int x, int y, int z, CallbackInfoReturnable cir, @Local(name = "pos") BlockPos pos) { final PathType neighborPathType = LandPathTypeRegistry.getPathType(getBlockState(pos), level(), pos, true); if (neighborPathType != null) { diff --git a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/PotionBrewingBuilderMixin.java b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/PotionBrewingBuilderMixin.java index dac630dc876..252b87f0b50 100644 --- a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/PotionBrewingBuilderMixin.java +++ b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/PotionBrewingBuilderMixin.java @@ -42,7 +42,7 @@ public abstract class PotionBrewingBuilderMixin implements FabricPotionBrewingBu private FeatureFlagSet enabledFeatures; @Shadow - private static void expectPotion(Item potionType) { + private static void expectPotion(Item from) { } @Shadow diff --git a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/WalkNodeEvaluatorMixin.java b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/WalkNodeEvaluatorMixin.java index 110592cf721..22cffad9461 100644 --- a/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/WalkNodeEvaluatorMixin.java +++ b/fabric-content-registries-v0/src/main/java/net/fabricmc/fabric/mixin/content/registry/WalkNodeEvaluatorMixin.java @@ -37,8 +37,8 @@ public class WalkNodeEvaluatorMixin { * Overrides the node type for the specified position, if the position is a direct target in a path. */ @Inject(method = "getPathTypeFromState", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;getBlock()Lnet/minecraft/world/level/block/Block;"), cancellable = true) - private static void getCommonNodeType(BlockGetter level, BlockPos pos, CallbackInfoReturnable cir, @Local BlockState state) { - PathType pathType = LandPathTypeRegistry.getPathType(state, level, pos, false); + private static void getCommonNodeType(BlockGetter level, BlockPos pos, CallbackInfoReturnable cir, @Local(name = "blockState") BlockState blockState) { + PathType pathType = LandPathTypeRegistry.getPathType(blockState, level, pos, false); if (pathType != null) { cir.setReturnValue(pathType); diff --git a/fabric-content-registries-v0/src/main/resources/fabric-content-registries-v0.mixins.json b/fabric-content-registries-v0/src/main/resources/fabric-content-registries-v0.mixins.json index 1c12e053527..7e5d409b7dd 100644 --- a/fabric-content-registries-v0/src/main/resources/fabric-content-registries-v0.mixins.json +++ b/fabric-content-registries-v0/src/main/resources/fabric-content-registries-v0.mixins.json @@ -27,5 +27,8 @@ }, "overwrites": { "requireAnnotations": true + }, + "mixinextras": { + "minVersion": "0.5.0" } } diff --git a/fabric-content-registries-v0/src/main/resources/fabric.mod.json b/fabric-content-registries-v0/src/main/resources/fabric.mod.json index 65899d31e88..527833d0f53 100644 --- a/fabric-content-registries-v0/src/main/resources/fabric.mod.json +++ b/fabric-content-registries-v0/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*", "fabric-lifecycle-events-v1": "*", "fabric-resource-loader-v1": "*" diff --git a/fabric-convention-tags-v2/src/datagen/resources/fabric.mod.json b/fabric-convention-tags-v2/src/datagen/resources/fabric.mod.json index 79928b5e9b5..0c9f7546824 100644 --- a/fabric-convention-tags-v2/src/datagen/resources/fabric.mod.json +++ b/fabric-convention-tags-v2/src/datagen/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "minecraft": ">=1.18.2" }, "description": "Contains common tags used by mods for vanilla things.", diff --git a/fabric-convention-tags-v2/src/main/resources/fabric.mod.json b/fabric-convention-tags-v2/src/main/resources/fabric.mod.json index 361137c03cc..1d83f012f6e 100644 --- a/fabric-convention-tags-v2/src/main/resources/fabric.mod.json +++ b/fabric-convention-tags-v2/src/main/resources/fabric.mod.json @@ -21,7 +21,7 @@ ] }, "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "minecraft": ">=1.20.5-beta.1", "fabric-lifecycle-events-v1": "*" }, diff --git a/fabric-crash-report-info-v1/src/main/java/net/fabricmc/fabric/mixin/crash/report/info/SystemReportMixin.java b/fabric-crash-report-info-v1/src/main/java/net/fabricmc/fabric/mixin/crash/report/info/SystemReportMixin.java index 06d3217048c..f4e16228588 100644 --- a/fabric-crash-report-info-v1/src/main/java/net/fabricmc/fabric/mixin/crash/report/info/SystemReportMixin.java +++ b/fabric-crash-report-info-v1/src/main/java/net/fabricmc/fabric/mixin/crash/report/info/SystemReportMixin.java @@ -35,7 +35,7 @@ @Mixin(SystemReport.class) public abstract class SystemReportMixin { @Shadow - public abstract void setDetail(String string, Supplier supplier); + public abstract void setDetail(String key, Supplier valueSupplier); @Inject(at = @At("RETURN"), method = "") private void fillSystemDetails(CallbackInfo info) { diff --git a/fabric-crash-report-info-v1/src/main/resources/fabric.mod.json b/fabric-crash-report-info-v1/src/main/resources/fabric.mod.json index bf8420fe7eb..e3db50e15d7 100644 --- a/fabric-crash-report-info-v1/src/main/resources/fabric.mod.json +++ b/fabric-crash-report-info-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3" + "fabricloader": ">=0.18.4" }, "description": "Adds Fabric-related debug info to crash reports.", "mixins": [ diff --git a/fabric-creative-tab-api-v1/src/client/java/net/fabricmc/fabric/mixin/creativetab/client/CreativeModeInventoryScreenMixin.java b/fabric-creative-tab-api-v1/src/client/java/net/fabricmc/fabric/mixin/creativetab/client/CreativeModeInventoryScreenMixin.java index 0d4e5e5b737..050473b100b 100644 --- a/fabric-creative-tab-api-v1/src/client/java/net/fabricmc/fabric/mixin/creativetab/client/CreativeModeInventoryScreenMixin.java +++ b/fabric-creative-tab-api-v1/src/client/java/net/fabricmc/fabric/mixin/creativetab/client/CreativeModeInventoryScreenMixin.java @@ -50,7 +50,7 @@ public CreativeModeInventoryScreenMixin(ItemPickerMenu menu, Inventory playerInv } @Shadow - protected abstract void selectTab(CreativeModeTab creativeModeTab_1); + protected abstract void selectTab(CreativeModeTab tab); @Shadow private static CreativeModeTab selectedTab; @@ -83,40 +83,40 @@ private void init(CallbackInfo info) { } @Inject(method = "selectTab", at = @At("HEAD"), cancellable = true) - private void setSelectedTab(CreativeModeTab creativeModeTab, CallbackInfo info) { - if (!isTabVisible(creativeModeTab)) { + private void setSelectedTab(CreativeModeTab tab, CallbackInfo info) { + if (!isTabVisible(tab)) { info.cancel(); } } @Inject(method = "checkTabHovering", at = @At("HEAD"), cancellable = true) - private void renderTabTooltipIfHovered(GuiGraphics graphics, CreativeModeTab creativeModeTab, int mx, int my, CallbackInfoReturnable info) { - if (!isTabVisible(creativeModeTab)) { + private void renderTabTooltipIfHovered(GuiGraphics graphics, CreativeModeTab tab, int xm, int ym, CallbackInfoReturnable info) { + if (!isTabVisible(tab)) { info.setReturnValue(false); } } @Inject(method = "checkTabClicked", at = @At("HEAD"), cancellable = true) - private void isClickInTab(CreativeModeTab creativeModeTab, double mx, double my, CallbackInfoReturnable info) { - if (!isTabVisible(creativeModeTab)) { + private void isClickInTab(CreativeModeTab tab, double xm, double ym, CallbackInfoReturnable info) { + if (!isTabVisible(tab)) { info.setReturnValue(false); } } @Inject(method = "renderTabButton", at = @At("HEAD"), cancellable = true) - private void renderTabIcon(GuiGraphics guiGraphics, int i, int j, CreativeModeTab creativeModeTab, CallbackInfo info) { - if (!isTabVisible(creativeModeTab)) { + private void renderTabIcon(GuiGraphics graphics, int mouseX, int mouseY, CreativeModeTab tab, CallbackInfo info) { + if (!isTabVisible(tab)) { info.cancel(); } } @Inject(method = "keyPressed", at = @At("HEAD"), cancellable = true) - private void keyPressed(KeyEvent context, CallbackInfoReturnable cir) { - if (context.key() == GLFW.GLFW_KEY_PAGE_UP) { + private void keyPressed(KeyEvent event, CallbackInfoReturnable cir) { + if (event.key() == GLFW.GLFW_KEY_PAGE_UP) { if (switchToPreviousPage()) { cir.setReturnValue(true); } - } else if (context.key() == GLFW.GLFW_KEY_PAGE_DOWN) { + } else if (event.key() == GLFW.GLFW_KEY_PAGE_DOWN) { if (switchToNextPage()) { cir.setReturnValue(true); } diff --git a/fabric-creative-tab-api-v1/src/main/java/net/fabricmc/fabric/mixin/creativetab/CreativeModeTabMixin.java b/fabric-creative-tab-api-v1/src/main/java/net/fabricmc/fabric/mixin/creativetab/CreativeModeTabMixin.java index 7016ac1a6fe..18bb4429a4b 100644 --- a/fabric-creative-tab-api-v1/src/main/java/net/fabricmc/fabric/mixin/creativetab/CreativeModeTabMixin.java +++ b/fabric-creative-tab-api-v1/src/main/java/net/fabricmc/fabric/mixin/creativetab/CreativeModeTabMixin.java @@ -53,7 +53,7 @@ abstract class CreativeModeTabMixin implements FabricCreativeModeTabImpl { @SuppressWarnings("ConstantConditions") @Inject(method = "buildContents", at = @At("TAIL")) - public void getStacks(CreativeModeTab.ItemDisplayParameters context, CallbackInfo ci) { + public void getStacks(CreativeModeTab.ItemDisplayParameters parameters, CallbackInfo ci) { final CreativeModeTab self = (CreativeModeTab) (Object) this; final ResourceKey resourceKey = BuiltInRegistries.CREATIVE_MODE_TAB.getResourceKey(self).orElseThrow(() -> new IllegalStateException("Unregistered creative mode tab : " + self)); @@ -69,10 +69,10 @@ public void getStacks(CreativeModeTab.ItemDisplayParameters context, CallbackInf // Convert the entries to lists var mutableDisplayStacks = new LinkedList<>(displayItems); var mutableSearchTabStacks = new LinkedList<>(displayItemsSearchTab); - var entries = new FabricCreativeModeTabOutput(context, mutableDisplayStacks, mutableSearchTabStacks); + var entries = new FabricCreativeModeTabOutput(parameters, mutableDisplayStacks, mutableSearchTabStacks); // Now trigger the events - if (resourceKey != CreativeModeTabs.OP_BLOCKS || context.hasPermissions()) { + if (resourceKey != CreativeModeTabs.OP_BLOCKS || parameters.hasPermissions()) { final Event modifyEntriesEvent = CreativeModeTabEventsImpl.getModifyOutputEvent(resourceKey); if (modifyEntriesEvent != null) { diff --git a/fabric-creative-tab-api-v1/src/main/resources/fabric.mod.json b/fabric-creative-tab-api-v1/src/main/resources/fabric.mod.json index 1a2e08f7708..eea2299178b 100644 --- a/fabric-creative-tab-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-creative-tab-api-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*", "fabric-resource-loader-v1": "*" }, diff --git a/fabric-data-attachment-api-v1/src/client/java/net/fabricmc/fabric/mixin/attachment/client/ClientPacketListenerMixin.java b/fabric-data-attachment-api-v1/src/client/java/net/fabricmc/fabric/mixin/attachment/client/ClientPacketListenerMixin.java index 6bcb427e91f..e3024244ac2 100644 --- a/fabric-data-attachment-api-v1/src/client/java/net/fabricmc/fabric/mixin/attachment/client/ClientPacketListenerMixin.java +++ b/fabric-data-attachment-api-v1/src/client/java/net/fabricmc/fabric/mixin/attachment/client/ClientPacketListenerMixin.java @@ -19,6 +19,7 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Slice; @@ -36,13 +37,14 @@ abstract class ClientPacketListenerMixin { method = "handleRespawn", at = @At( value = "FIELD", - target = "Lnet/minecraft/client/Minecraft;player:Lnet/minecraft/client/player/LocalPlayer;" + target = "Lnet/minecraft/client/Minecraft;player:Lnet/minecraft/client/player/LocalPlayer;", + opcode = Opcodes.PUTFIELD ), slice = @Slice( from = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/ClientPacketListener;startWaitingForNewLevel(Lnet/minecraft/client/player/LocalPlayer;Lnet/minecraft/client/multiplayer/ClientLevel;Lnet/minecraft/client/gui/screens/LevelLoadingScreen$Reason;)V") ) ) - private void copyAttachmentsOnClientRespawn(Minecraft client, LocalPlayer newPlayer, Operation init, ClientboundRespawnPacket packet, @Local(ordinal = 0) LocalPlayer oldPlayer) { + private void copyAttachmentsOnClientRespawn(Minecraft client, LocalPlayer newPlayer, Operation init, ClientboundRespawnPacket packet, @Local(name = "oldPlayer") LocalPlayer oldPlayer) { /* * The KEEP_ATTRIBUTES flag is not set on a death respawn, and set in all other cases */ diff --git a/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/EntityMixin.java b/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/EntityMixin.java index 717860d16eb..907c1923bb8 100644 --- a/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/EntityMixin.java +++ b/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/EntityMixin.java @@ -50,8 +50,8 @@ abstract class EntityMixin implements AttachmentTargetImpl { at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;readAdditionalSaveData(Lnet/minecraft/world/level/storage/ValueInput;)V"), method = "load" ) - private void readEntityAttachments(ValueInput data, CallbackInfo ci) { - this.fabric_readAttachmentsFromNbt(data); + private void readEntityAttachments(ValueInput input, CallbackInfo ci) { + this.fabric_readAttachmentsFromNbt(input); } @Inject( diff --git a/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/LevelChunkMixin.java b/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/LevelChunkMixin.java index 6ed0143f962..9a0e5e18274 100644 --- a/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/LevelChunkMixin.java +++ b/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/LevelChunkMixin.java @@ -47,13 +47,13 @@ abstract class LevelChunkMixin extends AttachmentTargetsMixin implements AttachmentTargetImpl { @Shadow @Final - Level level; + private Level level; @Shadow public abstract Map getBlockEntities(); @Inject(method = "(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/level/chunk/ProtoChunk;Lnet/minecraft/world/level/chunk/LevelChunk$PostLoadProcessor;)V", at = @At("TAIL")) - private void transferProtoChunkAttachment(ServerLevel level, ProtoChunk protoChunk, LevelChunk.PostLoadProcessor entityLoader, CallbackInfo ci) { + private void transferProtoChunkAttachment(ServerLevel level, ProtoChunk protoChunk, LevelChunk.PostLoadProcessor postLoad, CallbackInfo ci) { AttachmentTargetImpl.transfer(protoChunk, this, false); } diff --git a/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/PlayerChunkSenderMixin.java b/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/PlayerChunkSenderMixin.java index 17a23f918d6..4b33536f3fe 100644 --- a/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/PlayerChunkSenderMixin.java +++ b/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/PlayerChunkSenderMixin.java @@ -42,8 +42,8 @@ abstract class PlayerChunkSenderMixin { target = "Lnet/minecraft/server/network/PlayerChunkSender;sendChunk(Lnet/minecraft/server/network/ServerGamePacketListenerImpl;Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/level/chunk/LevelChunk;)V" ) ) - private void sendInitialAttachmentData(ServerGamePacketListenerImpl handler, ServerLevel level, LevelChunk chunk, Operation original, ServerPlayer player) { - original.call(handler, level, chunk); + private void sendInitialAttachmentData(ServerGamePacketListenerImpl connection, ServerLevel level, LevelChunk chunk, Operation original, ServerPlayer player) { + original.call(connection, level, chunk); // do a wrap operation so this packet is sent *after* the chunk ones List changes = new ArrayList<>(); ((AttachmentTargetImpl) chunk).fabric_computeInitialSyncChanges(player, changes::add); diff --git a/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/SerializableChunkDataMixin.java b/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/SerializableChunkDataMixin.java index 24187b5bbf1..86fa57193c7 100644 --- a/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/SerializableChunkDataMixin.java +++ b/fabric-data-attachment-api-v1/src/main/java/net/fabricmc/fabric/mixin/attachment/SerializableChunkDataMixin.java @@ -56,7 +56,7 @@ abstract class SerializableChunkDataMixin { private CompoundTag attachmentNbtData; @Inject(method = "parse", at = @At("RETURN")) - private static void storeAttachmentNbtData(LevelHeightAccessor heightLimitView, PalettedContainerFactory arg, CompoundTag chunkData, CallbackInfoReturnable cir, @Share("attachmentDataNbt") LocalRef attachmentDataNbt) { + private static void storeAttachmentNbtData(LevelHeightAccessor levelHeight, PalettedContainerFactory containerFactory, CompoundTag chunkData, CallbackInfoReturnable cir, @Share("attachmentDataNbt") LocalRef attachmentDataNbt) { final SerializableChunkData serializer = cir.getReturnValue(); if (serializer == null) { @@ -72,7 +72,7 @@ private static void storeAttachmentNbtData(LevelHeightAccessor heightLimitView, } @Inject(method = "read", at = @At("RETURN")) - private void setAttachmentDataInChunk(ServerLevel serverLevel, PoiManager pointOfInterestStorage, RegionStorageInfo storageKey, ChunkPos chunkPos, CallbackInfoReturnable cir) { + private void setAttachmentDataInChunk(ServerLevel level, PoiManager poiManager, RegionStorageInfo regionInfo, ChunkPos pos, CallbackInfoReturnable cir) { ProtoChunk chunk = cir.getReturnValue(); if (chunk != null && attachmentNbtData != null) { @@ -80,7 +80,7 @@ private void setAttachmentDataInChunk(ServerLevel serverLevel, PoiManager pointO attachmentNbtData.put(AttachmentTarget.NBT_ATTACHMENT_KEY, this.attachmentNbtData); try (ProblemReporter.ScopedCollector reporter = new ProblemReporter.ScopedCollector(LOGGER)) { - ValueInput input = TagValueInput.create(reporter, serverLevel.registryAccess(), attachmentNbtData); + ValueInput input = TagValueInput.create(reporter, level.registryAccess(), attachmentNbtData); ((AttachmentTargetImpl) chunk).fabric_readAttachmentsFromNbt(input); } } diff --git a/fabric-data-attachment-api-v1/src/main/resources/fabric.mod.json b/fabric-data-attachment-api-v1/src/main/resources/fabric.mod.json index 694aa3a871d..4838a9d4b98 100644 --- a/fabric-data-attachment-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-data-attachment-api-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-entity-events-v1": "*", "fabric-object-builder-api-v1": "*", "fabric-networking-api-v1": "*" diff --git a/fabric-data-generation-api-v1/src/client/java/net/fabricmc/fabric/mixin/datagen/client/ModelProviderMixin.java b/fabric-data-generation-api-v1/src/client/java/net/fabricmc/fabric/mixin/datagen/client/ModelProviderMixin.java index 8fcfaa41925..d52c95ba7f2 100644 --- a/fabric-data-generation-api-v1/src/client/java/net/fabricmc/fabric/mixin/datagen/client/ModelProviderMixin.java +++ b/fabric-data-generation-api-v1/src/client/java/net/fabricmc/fabric/mixin/datagen/client/ModelProviderMixin.java @@ -72,11 +72,11 @@ private void registerItemModels(ItemModelGenerators instance, Operation or } @Inject(method = "run", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/data/models/BlockModelGenerators;run()V")) - private void setFabricPackOutput(CachedOutput output, CallbackInfoReturnable> cir, - @Local ModelProvider.BlockStateGeneratorCollector blockStateGeneratorCollector, - @Local ModelProvider.ItemInfoCollector itemInfoCollectors) { - ((FabricModelProviderDefinitions) blockStateGeneratorCollector).setFabricPackOutput(fabricPackOutput); - ((FabricModelProviderDefinitions) itemInfoCollectors).setFabricPackOutput(fabricPackOutput); - ((FabricItemAssetDefinitions) itemInfoCollectors).fabric_setProcessedBlocks(blockStateGeneratorCollector.generators.keySet()); + private void setFabricPackOutput(CachedOutput cache, CallbackInfoReturnable> cir, + @Local(name = "blockStateGenerators") ModelProvider.BlockStateGeneratorCollector blockStateGenerators, + @Local(name = "itemModels") ModelProvider.ItemInfoCollector itemModels) { + ((FabricModelProviderDefinitions) blockStateGenerators).setFabricPackOutput(fabricPackOutput); + ((FabricModelProviderDefinitions) itemModels).setFabricPackOutput(fabricPackOutput); + ((FabricItemAssetDefinitions) itemModels).fabric_setProcessedBlocks(blockStateGenerators.generators.keySet()); } } diff --git a/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/DataProviderMixin.java b/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/DataProviderMixin.java index ee4ccf73c01..120ceeb5223 100644 --- a/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/DataProviderMixin.java +++ b/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/DataProviderMixin.java @@ -33,8 +33,8 @@ public interface DataProviderMixin { * Adjust the default sort order of some keys provided by Fabric API. */ @Inject(method = "lambda$static$0", at = @At("RETURN")) - private static void addFabricKeySortOrders(Object2IntOpenHashMap map, CallbackInfo ci) { - map.put(ResourceConditions.CONDITIONS_KEY, -100); // always at the beginning - map.put(CustomIngredientImpl.TYPE_KEY, 0); // mimic vanilla "type" + private static void addFabricKeySortOrders(Object2IntOpenHashMap m, CallbackInfo ci) { + m.put(ResourceConditions.CONDITIONS_KEY, -100); // always at the beginning + m.put(CustomIngredientImpl.TYPE_KEY, 0); // mimic vanilla "type" } } diff --git a/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/TagsProviderMixin.java b/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/TagsProviderMixin.java index 7c918e92817..bd0ce2f1d74 100644 --- a/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/TagsProviderMixin.java +++ b/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/TagsProviderMixin.java @@ -53,13 +53,13 @@ public class TagsProviderMixin { private PackOutput.PathProvider tagAliasPathResolver; @Inject(method = "(Lnet/minecraft/data/PackOutput;Lnet/minecraft/resources/ResourceKey;Ljava/util/concurrent/CompletableFuture;Ljava/util/concurrent/CompletableFuture;)V", at = @At("RETURN")) - private void initPathResolver(PackOutput output, ResourceKey> registryRef, CompletableFuture registriesFuture, CompletableFuture parentTagLookupFuture, CallbackInfo info) { - tagAliasPathResolver = output.createPathProvider(PackOutput.Target.DATA_PACK, TagAliasGenerator.getDirectory(registryRef)); + private void initPathResolver(PackOutput output, ResourceKey> registryKey, CompletableFuture lookupProvider, CompletableFuture parentProvider, CallbackInfo info) { + tagAliasPathResolver = output.createPathProvider(PackOutput.Target.DATA_PACK, TagAliasGenerator.getDirectory(registryKey)); } @ModifyArg(method = "lambda$run$5", at = @At(value = "INVOKE", target = "Lnet/minecraft/tags/TagFile;(Ljava/util/List;Z)V"), index = 1) - private boolean addReplaced(boolean replaced, @Local TagBuilder tagBuilder) { - if (tagBuilder instanceof FabricTagBuilder fabricTagBuilder) { + private boolean addReplaced(boolean replaced, @Local(name = "builder") TagBuilder builder) { + if (builder instanceof FabricTagBuilder fabricTagBuilder) { return fabricTagBuilder.fabric_isReplaced(); } @@ -68,20 +68,20 @@ private boolean addReplaced(boolean replaced, @Local TagBuilder tagBuilder) { @SuppressWarnings("unchecked") @WrapOperation(method = "lambda$run$2", at = @At(value = "INVOKE", target = "Ljava/util/concurrent/CompletableFuture;allOf([Ljava/util/concurrent/CompletableFuture;)Ljava/util/concurrent/CompletableFuture;")) - private CompletableFuture addTagAliasGroupBuilders(CompletableFuture[] futures, Operation> original, @Local(argsOnly = true) CachedOutput writer) { + private CompletableFuture addTagAliasGroupBuilders(CompletableFuture[] cfs, Operation> original, @Local(argsOnly = true, name = "cache") CachedOutput cache) { if ((Object) this instanceof FabricTagsProvider) { // Note: no pattern matching instanceof so that we can cast directly to FabricTagsProvider instead of a wildcard Map.AliasGroupBuilder> builders = ((FabricTagsProvider) (Object) this).getAliasGroupBuilders(); - CompletableFuture[] newFutures = Arrays.copyOf(futures, futures.length + builders.size()); - int index = futures.length; + CompletableFuture[] newFutures = Arrays.copyOf(cfs, cfs.length + builders.size()); + int index = cfs.length; for (Map.Entry.AliasGroupBuilder> entry : builders.entrySet()) { - newFutures[index++] = TagAliasGenerator.writeTagAlias(writer, tagAliasPathResolver, registryKey, entry.getKey(), entry.getValue().getTags()); + newFutures[index++] = TagAliasGenerator.writeTagAlias(cache, tagAliasPathResolver, registryKey, entry.getKey(), entry.getValue().getTags()); } return original.call((Object) newFutures); } else { - return original.call((Object) futures); + return original.call((Object) cfs); } } } diff --git a/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/AllCraftingRecipeJsonBuildersMixin.java b/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/AllCraftingRecipeJsonBuildersMixin.java index 070402b2078..8f22531a91c 100644 --- a/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/AllCraftingRecipeJsonBuildersMixin.java +++ b/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/AllCraftingRecipeJsonBuildersMixin.java @@ -37,8 +37,8 @@ TransmuteRecipeBuilder.class, }) abstract class AllCraftingRecipeJsonBuildersMixin { - @ModifyVariable(method = "save(Lnet/minecraft/data/recipes/RecipeOutput;Lnet/minecraft/resources/ResourceKey;)V", at = @At("HEAD"), argsOnly = true) - private ResourceKey> modifyRecipeKey(ResourceKey> recipeKey, RecipeOutput output) { - return ResourceKey.create(recipeKey.registryKey(), output.getRecipeIdentifier(recipeKey.identifier())); + @ModifyVariable(method = "save(Lnet/minecraft/data/recipes/RecipeOutput;Lnet/minecraft/resources/ResourceKey;)V", at = @At("HEAD"), argsOnly = true, name = "id") + private ResourceKey> modifyRecipeKey(ResourceKey> id, RecipeOutput output) { + return ResourceKey.create(id.registryKey(), output.getRecipeIdentifier(id.identifier())); } } diff --git a/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/SmithingTransformRecipeBuilderMixin.java b/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/SmithingTransformRecipeBuilderMixin.java index 9762f432cc5..13ac6dc4719 100644 --- a/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/SmithingTransformRecipeBuilderMixin.java +++ b/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/SmithingTransformRecipeBuilderMixin.java @@ -27,8 +27,8 @@ @Mixin(SmithingTransformRecipeBuilder.class) abstract class SmithingTransformRecipeBuilderMixin { - @ModifyVariable(method = "save(Lnet/minecraft/data/recipes/RecipeOutput;Lnet/minecraft/resources/ResourceKey;)V", at = @At("HEAD"), argsOnly = true) - private ResourceKey> modifyRecipeKey(ResourceKey> recipeKey, RecipeOutput output) { - return ResourceKey.create(recipeKey.registryKey(), output.getRecipeIdentifier(recipeKey.identifier())); + @ModifyVariable(method = "save(Lnet/minecraft/data/recipes/RecipeOutput;Lnet/minecraft/resources/ResourceKey;)V", at = @At("HEAD"), argsOnly = true, name = "id") + private ResourceKey> modifyRecipeKey(ResourceKey> id, RecipeOutput output) { + return ResourceKey.create(id.registryKey(), output.getRecipeIdentifier(id.identifier())); } } diff --git a/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/SmithingTrimRecipeBuilderMixin.java b/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/SmithingTrimRecipeBuilderMixin.java index 5e678576926..4830fbe9942 100644 --- a/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/SmithingTrimRecipeBuilderMixin.java +++ b/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/SmithingTrimRecipeBuilderMixin.java @@ -27,8 +27,8 @@ @Mixin(SmithingTrimRecipeBuilder.class) abstract class SmithingTrimRecipeBuilderMixin { - @ModifyVariable(method = "save(Lnet/minecraft/data/recipes/RecipeOutput;Lnet/minecraft/resources/ResourceKey;)V", at = @At("HEAD"), argsOnly = true) - private ResourceKey> modifyRecipeKey(ResourceKey> recipeKey, RecipeOutput output) { - return ResourceKey.create(recipeKey.registryKey(), output.getRecipeIdentifier(recipeKey.identifier())); + @ModifyVariable(method = "save(Lnet/minecraft/data/recipes/RecipeOutput;Lnet/minecraft/resources/ResourceKey;)V", at = @At("HEAD"), argsOnly = true, name = "id") + private ResourceKey> modifyRecipeKey(ResourceKey> id, RecipeOutput output) { + return ResourceKey.create(id.registryKey(), output.getRecipeIdentifier(id.identifier())); } } diff --git a/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/SpecialRecipeBuilderMixin.java b/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/SpecialRecipeBuilderMixin.java index d7e5279db9c..2009425dfc2 100644 --- a/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/SpecialRecipeBuilderMixin.java +++ b/fabric-data-generation-api-v1/src/main/java/net/fabricmc/fabric/mixin/datagen/recipe/SpecialRecipeBuilderMixin.java @@ -27,8 +27,8 @@ @Mixin(SpecialRecipeBuilder.class) abstract class SpecialRecipeBuilderMixin { - @ModifyVariable(method = "save(Lnet/minecraft/data/recipes/RecipeOutput;Lnet/minecraft/resources/ResourceKey;)V", at = @At("HEAD"), argsOnly = true) - private ResourceKey> modifyRecipeKey(ResourceKey> recipeKey, RecipeOutput output) { - return ResourceKey.create(recipeKey.registryKey(), output.getRecipeIdentifier(recipeKey.identifier())); + @ModifyVariable(method = "save(Lnet/minecraft/data/recipes/RecipeOutput;Lnet/minecraft/resources/ResourceKey;)V", at = @At("HEAD"), argsOnly = true, name = "id") + private ResourceKey> modifyRecipeKey(ResourceKey> id, RecipeOutput output) { + return ResourceKey.create(id.registryKey(), output.getRecipeIdentifier(id.identifier())); } } diff --git a/fabric-data-generation-api-v1/src/main/resources/fabric.mod.json b/fabric-data-generation-api-v1/src/main/resources/fabric.mod.json index 439fdbcd837..024b7272fdd 100644 --- a/fabric-data-generation-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-data-generation-api-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-convention-tags-v2": "*", "fabric-recipe-api-v1": "*", "fabric-registry-sync-v0": "*", diff --git a/fabric-dimensions-v1/src/main/java/net/fabricmc/fabric/mixin/dimension/TaggedChoiceTaggedChoiceTypeMixin.java b/fabric-dimensions-v1/src/main/java/net/fabricmc/fabric/mixin/dimension/TaggedChoiceTaggedChoiceTypeMixin.java index dce0ccf25e1..b495a0796db 100644 --- a/fabric-dimensions-v1/src/main/java/net/fabricmc/fabric/mixin/dimension/TaggedChoiceTaggedChoiceTypeMixin.java +++ b/fabric-dimensions-v1/src/main/java/net/fabricmc/fabric/mixin/dimension/TaggedChoiceTaggedChoiceTypeMixin.java @@ -54,10 +54,10 @@ public class TaggedChoiceTaggedChoiceTypeMixin implements TaggedChoiceTypeExt @Inject( method = "getMapCodec", at = @At("HEAD"), cancellable = true ) - private void onGetCodec(K k, CallbackInfoReturnable>> cir) { + private void onGetCodec(K key, CallbackInfoReturnable>> cir) { if (failSoft) { - if (!types.containsKey(k)) { - LOGGER.warn("Not recognizing key {}. Using pass-through codec. {}", k, this); + if (!types.containsKey(key)) { + LOGGER.warn("Not recognizing key {}. Using pass-through codec. {}", key, this); cir.setReturnValue(DataResult.success(MapCodec.assumeMapUnsafe(Codec.PASSTHROUGH))); } } diff --git a/fabric-dimensions-v1/src/main/resources/fabric.mod.json b/fabric-dimensions-v1/src/main/resources/fabric.mod.json index b11ab2021a9..dbeb6e8faa3 100644 --- a/fabric-dimensions-v1/src/main/resources/fabric.mod.json +++ b/fabric-dimensions-v1/src/main/resources/fabric.mod.json @@ -15,7 +15,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "minecraft": ">=1.16-rc.3", "fabric-api-base": "*" }, diff --git a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/EntityMixin.java b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/EntityMixin.java index 8060b9a788a..28e465e6683 100644 --- a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/EntityMixin.java +++ b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/EntityMixin.java @@ -35,9 +35,9 @@ abstract class EntityMixin { private Level level; @WrapOperation(method = "teleport", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;teleportCrossDimension(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/level/portal/TeleportTransition;)Lnet/minecraft/world/entity/Entity;")) - private Entity afterDimensionChanged(Entity instance, ServerLevel sourceLevel, ServerLevel targetWorld, TeleportTransition teleportTransition, Operation original) { + private Entity afterDimensionChanged(Entity instance, ServerLevel oldLevel, ServerLevel newLevel, TeleportTransition transition, Operation original) { // Ret will only have an entity if the teleport worked (entity not removed, teleportTarget was valid, entity was successfully created) - Entity ret = original.call(instance, sourceLevel, targetWorld, teleportTransition); + Entity ret = original.call(instance, oldLevel, newLevel, transition); if (ret != null) { ServerEntityLevelChangeEvents.AFTER_ENTITY_CHANGE_LEVEL.invoker().afterChangeLevel((Entity) (Object) this, ret, (ServerLevel) this.level, (ServerLevel) ret.level()); diff --git a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/LivingEntityMixin.java b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/LivingEntityMixin.java index 61f297b18b4..1d2c520fdfc 100644 --- a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/LivingEntityMixin.java +++ b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/LivingEntityMixin.java @@ -18,6 +18,8 @@ import java.util.Optional; +import com.llamalad7.mixinextras.expression.Definition; +import com.llamalad7.mixinextras.expression.Expression; import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; @@ -61,9 +63,9 @@ abstract class LivingEntityMixin { public abstract Optional getSleepingPos(); @WrapOperation(method = "die", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;killedEntity(Lnet/minecraft/server/level/ServerLevel;Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/damagesource/DamageSource;)Z")) - private boolean onEntityKilledOther(Entity entity, ServerLevel serverLevel, @Nullable LivingEntity attacker, DamageSource damageSource, Operation original) { - boolean result = original.call(entity, serverLevel, attacker, damageSource); - ServerEntityCombatEvents.AFTER_KILLED_OTHER_ENTITY.invoker().afterKilledOtherEntity(serverLevel, entity, attacker, damageSource); + private boolean onEntityKilledOther(Entity sourceEntity, ServerLevel level, @Nullable LivingEntity entity, DamageSource source, Operation original) { + boolean result = original.call(sourceEntity, level, entity, source); + ServerEntityCombatEvents.AFTER_KILLED_OTHER_ENTITY.invoker().afterKilledOtherEntity(level, sourceEntity, entity, source); return result; } @@ -73,27 +75,27 @@ private void notifyDeath(DamageSource source, CallbackInfo ci) { } @Redirect(method = "hurtServer", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;isDeadOrDying()Z", ordinal = 1)) - boolean beforeEntityKilled(LivingEntity livingEntity, ServerLevel level, DamageSource source, float amount) { - return isDeadOrDying() && ServerLivingEntityEvents.ALLOW_DEATH.invoker().allowDeath(livingEntity, source, amount); + boolean beforeEntityKilled(LivingEntity livingEntity, ServerLevel level, DamageSource source, float damage) { + return isDeadOrDying() && ServerLivingEntityEvents.ALLOW_DEATH.invoker().allowDeath(livingEntity, source, damage); } @Inject(method = "hurtServer", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/LivingEntity;isSleeping()Z"), cancellable = true) - private void beforeDamage(ServerLevel level, DamageSource source, float amount, CallbackInfoReturnable cir) { - if (!ServerLivingEntityEvents.ALLOW_DAMAGE.invoker().allowDamage((LivingEntity) (Object) this, source, amount)) { + private void beforeDamage(ServerLevel level, DamageSource source, float damage, CallbackInfoReturnable cir) { + if (!ServerLivingEntityEvents.ALLOW_DAMAGE.invoker().allowDamage((LivingEntity) (Object) this, source, damage)) { cir.setReturnValue(false); } } @Inject(method = "hurtServer", at = @At("TAIL")) - private void afterDamage(ServerLevel level, DamageSource source, float amount, CallbackInfoReturnable cir, @Local(ordinal = 1) float dealt, @Local(ordinal = 0) boolean blocked) { + private void afterDamage(ServerLevel level, DamageSource source, float damage, CallbackInfoReturnable cir, @Local(name = "originalDamage") float originalDamage, @Local(name = "blocked") boolean blocked) { if (!isDeadOrDying()) { - ServerLivingEntityEvents.AFTER_DAMAGE.invoker().afterDamage((LivingEntity) (Object) this, source, dealt, amount, blocked); + ServerLivingEntityEvents.AFTER_DAMAGE.invoker().afterDamage((LivingEntity) (Object) this, source, originalDamage, damage, blocked); } } @Inject(method = "startSleeping", at = @At("RETURN")) - private void onSleep(BlockPos pos, CallbackInfo info) { - EntitySleepEvents.START_SLEEPING.invoker().onStartSleeping((LivingEntity) (Object) this, pos); + private void onSleep(BlockPos bedPosition, CallbackInfo info) { + EntitySleepEvents.START_SLEEPING.invoker().onStartSleeping((LivingEntity) (Object) this, bedPosition); } @Inject(method = "stopSleeping", at = @At("HEAD")) @@ -108,9 +110,9 @@ private void onWakeUp(CallbackInfo info) { @Dynamic("lambda$checkBedExists$0: Synthetic lambda body for Optional.map in checkBedExists") @Inject(method = "lambda$checkBedExists$0", at = @At("RETURN"), cancellable = true) - private void onIsSleepingInBed(BlockPos sleepingPos, CallbackInfoReturnable info) { - BlockState bedState = ((LivingEntity) (Object) this).level().getBlockState(sleepingPos); - InteractionResult result = EntitySleepEvents.ALLOW_BED.invoker().allowBed((LivingEntity) (Object) this, sleepingPos, bedState, info.getReturnValueZ()); + private void onIsSleepingInBed(BlockPos bedPosition, CallbackInfoReturnable info) { + BlockState bedState = ((LivingEntity) (Object) this).level().getBlockState(bedPosition); + InteractionResult result = EntitySleepEvents.ALLOW_BED.invoker().allowBed((LivingEntity) (Object) this, bedPosition, bedState, info.getReturnValueZ()); if (result != InteractionResult.PASS) { info.setReturnValue(result.consumesAction()); @@ -118,17 +120,19 @@ private void onIsSleepingInBed(BlockPos sleepingPos, CallbackInfoReturnable operation) { - final Direction sleepingDirection = operation.call(level, sleepingPos); - return EntitySleepEvents.MODIFY_SLEEPING_DIRECTION.invoker().modifySleepDirection((LivingEntity) (Object) this, sleepingPos, sleepingDirection); + private Direction onGetSleepingDirection(BlockGetter level, BlockPos pos, Operation operation) { + final Direction sleepingDirection = operation.call(level, pos); + return EntitySleepEvents.MODIFY_SLEEPING_DIRECTION.invoker().modifySleepDirection((LivingEntity) (Object) this, pos, sleepingDirection); } // This is needed 1) so that the vanilla logic in wakeUp runs for modded beds and 2) for the injector below. // The injector is shared because lambda$stopSleeping$23 and sleep share much of the structure here. + @Definition(id = "getBlockState", method = "Lnet/minecraft/world/level/Level;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;") + @Expression("? = ?.getBlockState(?)") @Dynamic("lambda$stopSleeping$0: Synthetic lambda body for Optional.ifPresent in stopSleeping") - @ModifyVariable(method = {"lambda$stopSleeping$0", "startSleeping"}, at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/world/level/Level;getBlockState(Lnet/minecraft/core/BlockPos;)Lnet/minecraft/world/level/block/state/BlockState;")) - private BlockState modifyBedForOccupiedState(BlockState state, BlockPos sleepingPos) { - InteractionResult result = EntitySleepEvents.ALLOW_BED.invoker().allowBed((LivingEntity) (Object) this, sleepingPos, state, state.getBlock() instanceof BedBlock); + @ModifyVariable(method = {"lambda$stopSleeping$0", "startSleeping"}, at = @At(value = "MIXINEXTRAS:EXPRESSION", shift = At.Shift.AFTER)) + private BlockState modifyBedForOccupiedState(BlockState state, BlockPos bedPosition) { + InteractionResult result = EntitySleepEvents.ALLOW_BED.invoker().allowBed((LivingEntity) (Object) this, bedPosition, state, state.getBlock() instanceof BedBlock); // If a valid bed, replace with vanilla red bed so that the vanilla instanceof check succeeds. return result.consumesAction() ? Blocks.RED_BED.defaultBlockState() : state; @@ -137,19 +141,19 @@ private BlockState modifyBedForOccupiedState(BlockState state, BlockPos sleeping // The injector is shared because lambda$stopSleeping$23 and sleep share much of the structure here. @Dynamic("lambda$stopSleeping$0: Synthetic lambda body for Optional.ifPresent in stopSleeping") @Redirect(method = {"lambda$stopSleeping$0", "startSleeping"}, at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/Level;setBlock(Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;I)Z")) - private boolean setOccupiedState(Level level, BlockPos pos, BlockState state, int flags) { + private boolean setOccupiedState(Level level, BlockPos pos, BlockState blockState, int updateFlags) { // This might have been replaced by a red bed above, so we get it again. // Note that we *need* to replace it so the state.with(OCCUPIED, ...) call doesn't crash // when the bed doesn't have the property. BlockState originalState = level.getBlockState(pos); - boolean occupied = state.getValue(BedBlock.OCCUPIED); + boolean occupied = blockState.getValue(BedBlock.OCCUPIED); if (EntitySleepEvents.SET_BED_OCCUPATION_STATE.invoker().setBedOccupationState((LivingEntity) (Object) this, pos, originalState, occupied)) { return true; } else if (originalState.hasProperty(BedBlock.OCCUPIED)) { // This check is widened from (instanceof BedBlock) to a property check to allow modded blocks // that don't use the event. - return level.setBlock(pos, originalState.setValue(BedBlock.OCCUPIED, occupied), flags); + return level.setBlock(pos, originalState.setValue(BedBlock.OCCUPIED, occupied), updateFlags); } else { return false; } @@ -157,12 +161,12 @@ private boolean setOccupiedState(Level level, BlockPos pos, BlockState state, in @Dynamic("lambda$stopSleeping$0: Synthetic lambda body for Optional.ifPresent in stopSleeping") @Redirect(method = "lambda$stopSleeping$0", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/BedBlock;findStandUpPosition(Lnet/minecraft/world/entity/EntityType;Lnet/minecraft/world/level/CollisionGetter;Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/Direction;F)Ljava/util/Optional;")) - private Optional modifyWakeUpPosition(EntityType type, CollisionGetter level, BlockPos pos, Direction direction, float yaw) { + private Optional modifyWakeUpPosition(EntityType type, CollisionGetter level, BlockPos pos, Direction forward, float yaw) { Optional original = Optional.empty(); BlockState bedState = level.getBlockState(pos); if (bedState.getBlock() instanceof BedBlock) { - original = BedBlock.findStandUpPosition(type, level, pos, direction, yaw); + original = BedBlock.findStandUpPosition(type, level, pos, forward, yaw); } Vec3 newPos = EntitySleepEvents.MODIFY_WAKE_UP_POSITION.invoker().modifyWakeUpPosition((LivingEntity) (Object) this, pos, bedState, original.orElse(null)); diff --git a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/MobMixin.java b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/MobMixin.java index 3e40abd1c43..36ce543b34c 100644 --- a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/MobMixin.java +++ b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/MobMixin.java @@ -30,8 +30,8 @@ @Mixin(Mob.class) public class MobMixin { @ModifyArg(method = "convertTo(Lnet/minecraft/world/entity/EntityType;Lnet/minecraft/world/entity/ConversionParams;Lnet/minecraft/world/entity/EntitySpawnReason;Lnet/minecraft/world/entity/ConversionParams$AfterConversion;)Lnet/minecraft/world/entity/Mob;", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerLevel;addFreshEntity(Lnet/minecraft/world/entity/Entity;)Z")) - private Entity afterEntityConverted(Entity converted, @Local(argsOnly = true) ConversionParams conversionContext) { - ServerLivingEntityEvents.MOB_CONVERSION.invoker().onConversion((Mob) (Object) this, (Mob) converted, conversionContext); + private Entity afterEntityConverted(Entity converted, @Local(argsOnly = true, name = "params") ConversionParams params) { + ServerLivingEntityEvents.MOB_CONVERSION.invoker().onConversion((Mob) (Object) this, (Mob) converted, params); return converted; } } diff --git a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/PlayerListMixin.java b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/PlayerListMixin.java index 4d558e03a2d..eb19da74164 100644 --- a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/PlayerListMixin.java +++ b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/PlayerListMixin.java @@ -34,17 +34,17 @@ @Mixin(PlayerList.class) abstract class PlayerListMixin { @Inject(method = "respawn", at = @At("TAIL")) - private void afterRespawn(ServerPlayer oldPlayer, boolean alive, Entity.RemovalReason removalReason, CallbackInfoReturnable cir) { + private void afterRespawn(ServerPlayer serverPlayer, boolean keepAllPlayerData, Entity.RemovalReason removalReason, CallbackInfoReturnable cir) { ServerPlayer newPlayer = cir.getReturnValue(); - ServerPlayerEvents.AFTER_RESPAWN.invoker().afterRespawn(oldPlayer, newPlayer, alive); + ServerPlayerEvents.AFTER_RESPAWN.invoker().afterRespawn(serverPlayer, newPlayer, keepAllPlayerData); - if (oldPlayer.level() != newPlayer.level()) { - ServerEntityLevelChangeEvents.AFTER_PLAYER_CHANGE_LEVEL.invoker().afterChangeLevel(newPlayer, oldPlayer.level(), newPlayer.level()); + if (serverPlayer.level() != newPlayer.level()) { + ServerEntityLevelChangeEvents.AFTER_PLAYER_CHANGE_LEVEL.invoker().afterChangeLevel(newPlayer, serverPlayer.level(), newPlayer.level()); } } @Inject(method = "placeNewPlayer", at = @At("RETURN")) - private void firePlayerJoinEvent(Connection connection, ServerPlayer player, CommonListenerCookie clientData, CallbackInfo ci) { + private void firePlayerJoinEvent(Connection connection, ServerPlayer player, CommonListenerCookie cookie, CallbackInfo ci) { ServerPlayerEvents.JOIN.invoker().onJoin(player); } diff --git a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/ServerPlayerMixin.java b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/ServerPlayerMixin.java index 8d82f829250..ab417c4ea4c 100644 --- a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/ServerPlayerMixin.java +++ b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/ServerPlayerMixin.java @@ -80,13 +80,13 @@ private void notifyDeath(DamageSource source, CallbackInfo ci) { * This is called by {@code teleportTo}. */ @Inject(method = "triggerDimensionChangeTriggers(Lnet/minecraft/server/level/ServerLevel;)V", at = @At("TAIL")) - private void afterLevelChanged(ServerLevel origin, CallbackInfo ci) { - ServerEntityLevelChangeEvents.AFTER_PLAYER_CHANGE_LEVEL.invoker().afterChangeLevel((ServerPlayer) (Object) this, origin, this.level()); + private void afterLevelChanged(ServerLevel oldLevel, CallbackInfo ci) { + ServerEntityLevelChangeEvents.AFTER_PLAYER_CHANGE_LEVEL.invoker().afterChangeLevel((ServerPlayer) (Object) this, oldLevel, this.level()); } @Inject(method = "restoreFrom", at = @At("TAIL")) - private void onCopyFrom(ServerPlayer oldPlayer, boolean alive, CallbackInfo ci) { - ServerPlayerEvents.COPY_FROM.invoker().copyFromPlayer(oldPlayer, (ServerPlayer) (Object) this, alive); + private void onCopyFrom(ServerPlayer oldPlayer, boolean restoreAll, CallbackInfo ci) { + ServerPlayerEvents.COPY_FROM.invoker().copyFromPlayer(oldPlayer, (ServerPlayer) (Object) this, restoreAll); } @WrapOperation(method = "startSleepInBed", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;getValue(Lnet/minecraft/world/level/block/state/properties/Property;)Ljava/lang/Comparable;")) @@ -102,9 +102,9 @@ private Comparable redirectSleepDirection(BlockState instance, Property original) { - if (EntitySleepEvents.ALLOW_SETTING_SPAWN.invoker().allowSettingSpawn(player, spawnPoint.respawnData().pos())) { - original.call(player, spawnPoint, sendMessage); + private void onSetSpawnPoint(ServerPlayer player, ServerPlayer.RespawnConfig respawnConfig, boolean showMessage, Operation original) { + if (EntitySleepEvents.ALLOW_SETTING_SPAWN.invoker().allowSettingSpawn(player, respawnConfig.respawnData().pos())) { + original.call(player, respawnConfig, showMessage); } } diff --git a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/elytra/LivingEntityMixin.java b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/elytra/LivingEntityMixin.java index b45997f48a1..b8931438f6a 100644 --- a/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/elytra/LivingEntityMixin.java +++ b/fabric-entity-events-v1/src/main/java/net/fabricmc/fabric/mixin/entity/event/elytra/LivingEntityMixin.java @@ -16,6 +16,7 @@ package net.fabricmc.fabric.mixin.entity.event.elytra; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -61,7 +62,7 @@ void injectElytraTick(CallbackInfo info) { } @SuppressWarnings("ConstantConditions") - @Inject(at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/EquipmentSlot;VALUES:Ljava/util/List;"), method = "canGlide", allow = 1, cancellable = true) + @Inject(at = @At(value = "FIELD", target = "Lnet/minecraft/world/entity/EquipmentSlot;VALUES:Ljava/util/List;", opcode = Opcodes.GETSTATIC), method = "canGlide", allow = 1, cancellable = true) void injectElytraCheck(CallbackInfoReturnable cir) { LivingEntity self = (LivingEntity) (Object) this; diff --git a/fabric-entity-events-v1/src/main/resources/fabric-entity-events-v1.mixins.json b/fabric-entity-events-v1/src/main/resources/fabric-entity-events-v1.mixins.json index cdaf25957a6..6ab3f37be88 100644 --- a/fabric-entity-events-v1/src/main/resources/fabric-entity-events-v1.mixins.json +++ b/fabric-entity-events-v1/src/main/resources/fabric-entity-events-v1.mixins.json @@ -12,7 +12,12 @@ "elytra.LivingEntityMixin" ], "injectors": { - "defaultRequire": 1, - "maxShiftBy": 3 + "defaultRequire": 1 + }, + "overwrites": { + "requireAnnotations": true + }, + "mixinextras": { + "minVersion": "0.5.0" } } diff --git a/fabric-entity-events-v1/src/main/resources/fabric.mod.json b/fabric-entity-events-v1/src/main/resources/fabric.mod.json index 474cfde44a9..20790fa4727 100644 --- a/fabric-entity-events-v1/src/main/resources/fabric.mod.json +++ b/fabric-entity-events-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3" + "fabricloader": ">=0.18.4" }, "description": "Events to hook into entities.", "mixins": [ diff --git a/fabric-events-interaction-v0/src/client/java/net/fabricmc/fabric/mixin/event/interaction/client/MinecraftMixin.java b/fabric-events-interaction-v0/src/client/java/net/fabricmc/fabric/mixin/event/interaction/client/MinecraftMixin.java index cff74cf82d6..ff78a92873c 100644 --- a/fabric-events-interaction-v0/src/client/java/net/fabricmc/fabric/mixin/event/interaction/client/MinecraftMixin.java +++ b/fabric-events-interaction-v0/src/client/java/net/fabricmc/fabric/mixin/event/interaction/client/MinecraftMixin.java @@ -49,7 +49,7 @@ public abstract class MinecraftMixin { private boolean attackCancelled; @Shadow - private LocalPlayer player; + public LocalPlayer player; @Shadow public abstract ClientPacketListener getConnection(); @@ -74,12 +74,12 @@ public abstract class MinecraftMixin { method = "startUseItem", cancellable = true ) - private void injectUseEntityCallback(CallbackInfo ci, @Local InteractionHand hand, @Local EntityHitResult hitResult, @Local Entity entity) { - InteractionResult result = UseEntityCallback.EVENT.invoker().interact(player, player.level(), hand, entity, hitResult); + private void injectUseEntityCallback(CallbackInfo ci, @Local(name = "hand") InteractionHand hand, @Local(name = "entityHit") EntityHitResult entityHit, @Local(name = "entity") Entity entity) { + InteractionResult result = UseEntityCallback.EVENT.invoker().interact(player, player.level(), hand, entity, entityHit); if (result != InteractionResult.PASS) { if (result.consumesAction()) { - Vec3 hitVec = hitResult.getLocation().subtract(entity.getX(), entity.getY(), entity.getZ()); + Vec3 hitVec = entityHit.getLocation().subtract(entity.getX(), entity.getY(), entity.getZ()); getConnection().send(ServerboundInteractPacket.createInteractionPacket(entity, player.isShiftKeyDown(), hand, hitVec)); } @@ -121,7 +121,7 @@ private void injectDoAttackForCancelling(CallbackInfoReturnable cir) { } @Inject(method = "continueAttack", at = @At("HEAD"), cancellable = true) - private void injectHandleBlockBreakingForCancelling(boolean breaking, CallbackInfo ci) { + private void injectHandleBlockBreakingForCancelling(boolean down, CallbackInfo ci) { if (attackCancelled) { if (gameMode != null) { gameMode.stopDestroyBlock(); diff --git a/fabric-events-interaction-v0/src/client/java/net/fabricmc/fabric/mixin/event/interaction/client/MultiPlayerGameModeMixin.java b/fabric-events-interaction-v0/src/client/java/net/fabricmc/fabric/mixin/event/interaction/client/MultiPlayerGameModeMixin.java index beae01095a6..a214672e0a5 100644 --- a/fabric-events-interaction-v0/src/client/java/net/fabricmc/fabric/mixin/event/interaction/client/MultiPlayerGameModeMixin.java +++ b/fabric-events-interaction-v0/src/client/java/net/fabricmc/fabric/mixin/event/interaction/client/MultiPlayerGameModeMixin.java @@ -61,7 +61,7 @@ public abstract class MultiPlayerGameModeMixin { private ClientPacketListener connection; @Shadow - protected abstract void startPrediction(ClientLevel clientLevel, PredictiveAction predictiveAction); + protected abstract void startPrediction(ClientLevel level, PredictiveAction predictiveAction); @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/player/LocalPlayer;getAbilities()Lnet/minecraft/world/entity/player/Abilities;", ordinal = 0), method = "startDestroyBlock", cancellable = true) public void attackBlock(BlockPos pos, Direction direction, CallbackInfoReturnable info) { @@ -91,23 +91,23 @@ private void fabric_fireAttackBlockCallback(BlockPos pos, Direction direction, C } @Inject(method = "destroyBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/Block;destroy(Lnet/minecraft/world/level/LevelAccessor;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V")) - private void fabric$onBlockBroken(BlockPos pos, CallbackInfoReturnable cir, @Local BlockState blockState) { - ClientPlayerBlockBreakEvents.AFTER.invoker().afterBlockBreak(minecraft.level, minecraft.player, pos, blockState); + private void fabric$onBlockBroken(BlockPos pos, CallbackInfoReturnable cir, @Local(name = "oldState") BlockState oldState) { + ClientPlayerBlockBreakEvents.AFTER.invoker().afterBlockBreak(minecraft.level, minecraft.player, pos, oldState); } @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/MultiPlayerGameMode;startPrediction(Lnet/minecraft/client/multiplayer/ClientLevel;Lnet/minecraft/client/multiplayer/prediction/PredictiveAction;)V"), method = "useItemOn", cancellable = true) - public void interactBlock(LocalPlayer player, InteractionHand hand, BlockHitResult blockHitResult, CallbackInfoReturnable info) { + public void interactBlock(LocalPlayer player, InteractionHand hand, BlockHitResult blockHit, CallbackInfoReturnable info) { // hook interactBlock between the world border check and the actual block interaction to invoke the use block event first // this needs to be in interactBlock to avoid sending a packet in line with the event javadoc if (player.isSpectator()) return; // vanilla spectator check happens later, repeat it before the event to avoid false invocations - InteractionResult result = UseBlockCallback.EVENT.invoker().interact(player, player.level(), hand, blockHitResult); + InteractionResult result = UseBlockCallback.EVENT.invoker().interact(player, player.level(), hand, blockHit); if (result != InteractionResult.PASS) { if (result.consumesAction()) { // send interaction packet to the server with a new sequentially assigned id - startPrediction((ClientLevel) player.level(), id -> new ServerboundUseItemOnPacket(hand, blockHitResult, id)); + startPrediction((ClientLevel) player.level(), id -> new ServerboundUseItemOnPacket(hand, blockHit, id)); } info.setReturnValue(result); diff --git a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/PlayerAdvancementsMixin.java b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/PlayerAdvancementsMixin.java index 5dfff906910..aa984487a5f 100644 --- a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/PlayerAdvancementsMixin.java +++ b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/PlayerAdvancementsMixin.java @@ -35,15 +35,15 @@ public class PlayerAdvancementsMixin { private ServerPlayer player; @Inject(method = "setPlayer", at = @At("HEAD"), cancellable = true) - void preventOwnerOverride(ServerPlayer newOwner, CallbackInfo ci) { - if (newOwner instanceof FakePlayer) { + void preventOwnerOverride(ServerPlayer player, CallbackInfo ci) { + if (player instanceof FakePlayer) { // Prevent fake players with the same UUID as a real player from stealing the real player's advancement tracker. ci.cancel(); } } @Inject(method = "award", at = @At("HEAD"), cancellable = true) - void preventGrantCriterion(AdvancementHolder advancement, String criterionName, CallbackInfoReturnable ci) { + void preventGrantCriterion(AdvancementHolder holder, String criterion, CallbackInfoReturnable ci) { if (player instanceof FakePlayer) { // Prevent granting advancements to fake players. ci.setReturnValue(false); diff --git a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerGamePacketListenerImplMixin.java b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerGamePacketListenerImplMixin.java index 329e20e34cf..9ee3d1cebab 100644 --- a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerGamePacketListenerImplMixin.java +++ b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerGamePacketListenerImplMixin.java @@ -19,7 +19,6 @@ import com.llamalad7.mixinextras.injector.wrapoperation.Operation; import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import com.llamalad7.mixinextras.sugar.Local; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -39,16 +38,15 @@ @Mixin(ServerGamePacketListenerImpl.class) public abstract class ServerGamePacketListenerImplMixin { @Shadow - @Final - private ServerPlayer player; + public ServerPlayer player; @Shadow - private void tryPickItem(ItemStack stack) { + private void tryPickItem(ItemStack itemStack) { throw new AssertionError(); } @WrapOperation(method = "handlePickItemFromBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;getCloneItemStack(Lnet/minecraft/world/level/LevelReader;Lnet/minecraft/core/BlockPos;Z)Lnet/minecraft/world/item/ItemStack;")) - public ItemStack onPickItemFromBlock(BlockState state, LevelReader level, BlockPos pos, boolean includeData, Operation operation, @Local(argsOnly = true) ServerboundPickItemFromBlockPacket packet) { + public ItemStack onPickItemFromBlock(BlockState state, LevelReader level, BlockPos pos, boolean includeData, Operation operation, @Local(argsOnly = true, name = "packet") ServerboundPickItemFromBlockPacket packet) { ItemStack stack = PlayerPickItemEvents.BLOCK.invoker().onPickItemFromBlock(player, pos, state, packet.includeData()); if (stack == null) { @@ -62,7 +60,7 @@ public ItemStack onPickItemFromBlock(BlockState state, LevelReader level, BlockP } @WrapOperation(method = "handlePickItemFromEntity", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/entity/Entity;getPickResult()Lnet/minecraft/world/item/ItemStack;")) - public ItemStack onPickItemFromEntity(Entity entity, Operation operation, @Local(argsOnly = true) ServerboundPickItemFromEntityPacket packet) { + public ItemStack onPickItemFromEntity(Entity entity, Operation operation, @Local(argsOnly = true, name = "packet") ServerboundPickItemFromEntityPacket packet) { ItemStack stack = PlayerPickItemEvents.ENTITY.invoker().onPickItemFromEntity(player, entity, packet.includeData()); if (stack == null) { diff --git a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerGamePacketListenerInteractEntityHandlerMixin.java b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerGamePacketListenerInteractEntityHandlerMixin.java index fb7d21cf3a0..33c6c80868d 100644 --- a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerGamePacketListenerInteractEntityHandlerMixin.java +++ b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerGamePacketListenerInteractEntityHandlerMixin.java @@ -46,11 +46,11 @@ public abstract class ServerGamePacketListenerInteractEntityHandlerMixin impleme Entity val$target; @Inject(method = "onInteraction(Lnet/minecraft/world/InteractionHand;Lnet/minecraft/world/phys/Vec3;)V", at = @At(value = "HEAD"), cancellable = true) - public void onPlayerInteractEntity(InteractionHand hand, Vec3 hitPosition, CallbackInfo info) { + public void onPlayerInteractEntity(InteractionHand hand, Vec3 location, CallbackInfo info) { Player player = this.this$0.player; Level level = player.level(); - EntityHitResult hitResult = new EntityHitResult(val$target, hitPosition.add(val$target.getX(), val$target.getY(), val$target.getZ())); + EntityHitResult hitResult = new EntityHitResult(val$target, location.add(val$target.getX(), val$target.getY(), val$target.getZ())); InteractionResult result = UseEntityCallback.EVENT.invoker().interact(player, level, hand, val$target, hitResult); if (result != InteractionResult.PASS) { diff --git a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayerGameModeMixin.java b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayerGameModeMixin.java index 8bec43d30fd..fa2c2fede32 100644 --- a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayerGameModeMixin.java +++ b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayerGameModeMixin.java @@ -57,8 +57,8 @@ public class ServerPlayerGameModeMixin { protected ServerLevel level; @Inject(at = @At("HEAD"), method = "handleBlockBreakAction", cancellable = true) - public void startBlockBreak(BlockPos pos, ServerboundPlayerActionPacket.Action playerAction, Direction direction, int worldHeight, int i, CallbackInfo info) { - if (playerAction != ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK) return; + public void startBlockBreak(BlockPos pos, ServerboundPlayerActionPacket.Action action, Direction direction, int maxY, int sequence, CallbackInfo info) { + if (action != ServerboundPlayerActionPacket.Action.START_DESTROY_BLOCK) return; InteractionResult result = AttackBlockCallback.EVENT.invoker().interact(player, level, InteractionHand.MAIN_HAND, pos, direction); if (result != InteractionResult.PASS) { @@ -82,8 +82,8 @@ public void startBlockBreak(BlockPos pos, ServerboundPlayerActionPacket.Action p } @Inject(at = @At("HEAD"), method = "useItemOn", cancellable = true) - public void interactBlock(ServerPlayer player, Level level, ItemStack stack, InteractionHand hand, BlockHitResult blockHitResult, CallbackInfoReturnable info) { - InteractionResult result = UseBlockCallback.EVENT.invoker().interact(player, level, hand, blockHitResult); + public void interactBlock(ServerPlayer player, Level level, ItemStack itemStack, InteractionHand hand, BlockHitResult hitResult, CallbackInfoReturnable info) { + InteractionResult result = UseBlockCallback.EVENT.invoker().interact(player, level, hand, hitResult); if (result != InteractionResult.PASS) { info.setReturnValue(result); @@ -93,7 +93,7 @@ public void interactBlock(ServerPlayer player, Level level, ItemStack stack, Int } @Inject(at = @At("HEAD"), method = "useItem", cancellable = true) - public void interactItem(ServerPlayer player, Level level, ItemStack stack, InteractionHand hand, CallbackInfoReturnable info) { + public void interactItem(ServerPlayer player, Level level, ItemStack itemStack, InteractionHand hand, CallbackInfoReturnable info) { InteractionResult result = UseItemCallback.EVENT.invoker().interact(player, level, hand); if (result != InteractionResult.PASS) { @@ -104,18 +104,18 @@ public void interactItem(ServerPlayer player, Level level, ItemStack stack, Inte } @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/Block;playerWillDestroy(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/world/entity/player/Player;)Lnet/minecraft/world/level/block/state/BlockState;"), method = "destroyBlock", cancellable = true) - private void breakBlock(BlockPos pos, CallbackInfoReturnable cir, @Local BlockEntity entity, @Local BlockState state) { - boolean result = PlayerBlockBreakEvents.BEFORE.invoker().beforeBlockBreak(this.level, this.player, pos, state, entity); + private void breakBlock(BlockPos pos, CallbackInfoReturnable cir, @Local(name = "blockEntity") BlockEntity blockEntity, @Local(name = "state") BlockState state) { + boolean result = PlayerBlockBreakEvents.BEFORE.invoker().beforeBlockBreak(this.level, this.player, pos, state, blockEntity); if (!result) { - PlayerBlockBreakEvents.CANCELED.invoker().onBlockBreakCanceled(this.level, this.player, pos, state, entity); + PlayerBlockBreakEvents.CANCELED.invoker().onBlockBreakCanceled(this.level, this.player, pos, state, blockEntity); cir.setReturnValue(false); } } @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/Block;destroy(Lnet/minecraft/world/level/LevelAccessor;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)V"), method = "destroyBlock") - private void onBlockBroken(BlockPos pos, CallbackInfoReturnable cir, @Local BlockEntity entity, @Local BlockState state) { - PlayerBlockBreakEvents.AFTER.invoker().afterBlockBreak(this.level, this.player, pos, state, entity); + private void onBlockBroken(BlockPos pos, CallbackInfoReturnable cir, @Local(name = "blockEntity") BlockEntity blockEntity, @Local(name = "adjustedState") BlockState adjustedState) { + PlayerBlockBreakEvents.AFTER.invoker().afterBlockBreak(this.level, this.player, pos, adjustedState, blockEntity); } } diff --git a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayerMixin.java b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayerMixin.java index 2e3c7984bc4..d2db8418159 100644 --- a/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayerMixin.java +++ b/fabric-events-interaction-v0/src/main/java/net/fabricmc/fabric/mixin/event/interaction/ServerPlayerMixin.java @@ -34,9 +34,9 @@ @Mixin(ServerPlayer.class) public class ServerPlayerMixin { @Inject(method = "attack", at = @At("HEAD"), cancellable = true) - public void onPlayerInteractEntity(Entity target, CallbackInfo info) { + public void onPlayerInteractEntity(Entity entity, CallbackInfo info) { ServerPlayer player = (ServerPlayer) (Object) this; - InteractionResult result = AttackEntityCallback.EVENT.invoker().interact(player, player.level(), InteractionHand.MAIN_HAND, target, null); + InteractionResult result = AttackEntityCallback.EVENT.invoker().interact(player, player.level(), InteractionHand.MAIN_HAND, entity, null); if (result != InteractionResult.PASS) { info.cancel(); @@ -44,7 +44,7 @@ public void onPlayerInteractEntity(Entity target, CallbackInfo info) { } @Inject(method = "calculateGameModeForNewPlayer", at = @At("HEAD"), cancellable = true) - public void fakePlayerGameMode(GameType backupGameMode, CallbackInfoReturnable cir) { + public void fakePlayerGameMode(GameType loadedGameType, CallbackInfoReturnable cir) { // Set the default game mode of the fake player to survival, regardless of the servers forced game mode. if ((Object) this instanceof FakePlayer) { cir.setReturnValue(GameType.SURVIVAL); diff --git a/fabric-events-interaction-v0/src/main/resources/fabric.mod.json b/fabric-events-interaction-v0/src/main/resources/fabric.mod.json index 2c8976fcc25..b194b3c6d12 100644 --- a/fabric-events-interaction-v0/src/main/resources/fabric.mod.json +++ b/fabric-events-interaction-v0/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*", "fabric-networking-api-v1": "*", "minecraft": ">=1.15-alpha.19.37.a" diff --git a/fabric-game-rule-api-v1/src/client/java/net/fabricmc/fabric/mixin/gamerule/client/EditGameRulesScreenRuleListMixin.java b/fabric-game-rule-api-v1/src/client/java/net/fabricmc/fabric/mixin/gamerule/client/EditGameRulesScreenRuleListMixin.java index 726e89c6542..ee369849d66 100644 --- a/fabric-game-rule-api-v1/src/client/java/net/fabricmc/fabric/mixin/gamerule/client/EditGameRulesScreenRuleListMixin.java +++ b/fabric-game-rule-api-v1/src/client/java/net/fabricmc/fabric/mixin/gamerule/client/EditGameRulesScreenRuleListMixin.java @@ -59,10 +59,10 @@ private void initializeFabricGameruleCategories(EditGameRulesScreen screen, Game // Synthetic method @Inject(method = "lambda$new$1(Ljava/util/Map$Entry;)V", at = @At("HEAD"), cancellable = true) - private void ignoreKeysWithCustomCategories(Map.Entry, EditGameRulesScreen.RuleEntry> entry, CallbackInfo ci) { - final GameRule rule = entry.getKey(); + private void ignoreKeysWithCustomCategories(Map.Entry, EditGameRulesScreen.RuleEntry> v, CallbackInfo ci) { + final GameRule rule = v.getKey(); CustomGameRuleCategory.getCategory(rule).ifPresent(category -> { - this.fabricCategories.computeIfAbsent(category, c -> new ArrayList<>()).add(entry.getValue()); + this.fabricCategories.computeIfAbsent(category, c -> new ArrayList<>()).add(v.getValue()); ci.cancel(); }); } diff --git a/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/GameRuleCommandVisitorMixin.java b/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/GameRuleCommandVisitorMixin.java index 55d6f42872d..1a42081f76e 100644 --- a/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/GameRuleCommandVisitorMixin.java +++ b/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/GameRuleCommandVisitorMixin.java @@ -38,11 +38,11 @@ public abstract class GameRuleCommandVisitorMixin { LiteralArgumentBuilder val$base; @Inject(at = @At("HEAD"), method = "visit", cancellable = true) - private void onRegisterCommand(GameRule rule, CallbackInfo ci) { + private void onRegisterCommand(GameRule gameRule, CallbackInfo ci) { // Check if our type is a EnumRuleType - if (((RuleTypeExtensions) (Object) rule).fabric_getType() == FabricGameRuleType.ENUM) { + if (((RuleTypeExtensions) (Object) gameRule).fabric_getType() == FabricGameRuleType.ENUM) { //noinspection rawtypes,unchecked - EnumRuleCommand.register(this.val$base, (GameRule) rule); + EnumRuleCommand.register(this.val$base, (GameRule) gameRule); ci.cancel(); } } diff --git a/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/GameRulesServiceGameRuleUpdateMixin.java b/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/GameRulesServiceGameRuleUpdateMixin.java index 67490c9283e..812cf668ce3 100644 --- a/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/GameRulesServiceGameRuleUpdateMixin.java +++ b/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/GameRulesServiceGameRuleUpdateMixin.java @@ -57,8 +57,8 @@ public void setFabricType(FabricGameRuleType type) { } @Inject(method = "", at = @At("RETURN")) - private void updateFabricType(GameRule rule, Object value, CallbackInfo ci) { - FabricGameRuleType type = ((RuleTypeExtensions) (Object) rule).fabric_getType(); + private void updateFabricType(GameRule gameRule, Object value, CallbackInfo ci) { + FabricGameRuleType type = ((RuleTypeExtensions) (Object) gameRule).fabric_getType(); if (type == null) { return; diff --git a/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/MinecraftServerMixin.java b/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/MinecraftServerMixin.java index afcc73fb6c8..7aa0a6382e7 100644 --- a/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/MinecraftServerMixin.java +++ b/fabric-game-rule-api-v1/src/main/java/net/fabricmc/fabric/mixin/gamerule/MinecraftServerMixin.java @@ -31,8 +31,8 @@ @Mixin(MinecraftServer.class) public class MinecraftServerMixin { @Inject(method = "onGameRuleChanged", at = @At("RETURN")) - private void handleGameRuleUpdate(GameRule gameRule, T value, CallbackInfo ci) { - Event> event = GameRuleEventsImpl.getValueUpdate(gameRule); + private void handleGameRuleUpdate(GameRule rule, T value, CallbackInfo ci) { + Event> event = GameRuleEventsImpl.getValueUpdate(rule); if (event != null) { event.invoker().onGameRuleUpdated(value, (MinecraftServer) (Object) this); diff --git a/fabric-game-rule-api-v1/src/main/resources/fabric.mod.json b/fabric-game-rule-api-v1/src/main/resources/fabric.mod.json index ce0a1fe0366..0079bc3a038 100644 --- a/fabric-game-rule-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-game-rule-api-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3" + "fabricloader": ">=0.18.4" }, "description": "Allows registration of custom game rules.", "mixins": [ diff --git a/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/mixin/gametest/RegistryDataLoaderMixin.java b/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/mixin/gametest/RegistryDataLoaderMixin.java index daa8d0f3615..3c68c848398 100644 --- a/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/mixin/gametest/RegistryDataLoaderMixin.java +++ b/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/mixin/gametest/RegistryDataLoaderMixin.java @@ -42,8 +42,8 @@ public class RegistryDataLoaderMixin { private static final AtomicBoolean LOADING_DYNAMIC_REGISTRIES = new AtomicBoolean(false); @Inject(method = "load(Lnet/minecraft/server/packs/resources/ResourceManager;Ljava/util/List;Ljava/util/List;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;", at = @At("HEAD")) - private static void loadFromResources(ResourceManager resourceManager, List> registries, List> entries, Executor executor, CallbackInfoReturnable cir) { - LOADING_DYNAMIC_REGISTRIES.set(entries.stream().anyMatch(entry -> entry.key() == Registries.TEST_INSTANCE)); + private static void loadFromResources(ResourceManager resourceManager, List> contextRegistries, List> registriesToLoad, Executor executor, CallbackInfoReturnable cir) { + LOADING_DYNAMIC_REGISTRIES.set(registriesToLoad.stream().anyMatch(entry -> entry.key() == Registries.TEST_INSTANCE)); } @Inject( diff --git a/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/mixin/gametest/StructureTemplateManagerMixin.java b/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/mixin/gametest/StructureTemplateManagerMixin.java index 81c4bfee101..e379b4c284f 100644 --- a/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/mixin/gametest/StructureTemplateManagerMixin.java +++ b/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/mixin/gametest/StructureTemplateManagerMixin.java @@ -52,7 +52,7 @@ public abstract class StructureTemplateManagerMixin { private ResourceManager resourceManager; @Shadow - public abstract StructureTemplate readStructure(CompoundTag compoundTag); + public abstract StructureTemplate readStructure(CompoundTag tag); @Unique private Optional fabric_loadSnbtFromResource(Identifier id) { @@ -79,7 +79,7 @@ private Stream streamTemplatesFromResource() { } @Inject(method = "", at = @At(value = "INVOKE", target = "Lcom/google/common/collect/ImmutableList$Builder;add(Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList$Builder;", ordinal = 2, shift = At.Shift.AFTER)) - private void addFabricTemplateProvider(ResourceManager resourceManager, LevelStorageSource.LevelStorageAccess storageAccess, DataFixer dataFixer, HolderGetter blockLookup, CallbackInfo ci, @Local ImmutableList.Builder builder) { + private void addFabricTemplateProvider(ResourceManager resourceManager, LevelStorageSource.LevelStorageAccess storage, DataFixer fixerUpper, HolderGetter blockLookup, CallbackInfo ci, @Local(name = "builder") ImmutableList.Builder builder) { builder.add(new StructureTemplateManager.Source(this::fabric_loadSnbtFromResource, this::streamTemplatesFromResource)); } } diff --git a/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/mixin/gametest/server/MainMixin.java b/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/mixin/gametest/server/MainMixin.java index e95da801d8b..2df034cd901 100644 --- a/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/mixin/gametest/server/MainMixin.java +++ b/fabric-gametest-api-v1/src/main/java/net/fabricmc/fabric/mixin/gametest/server/MainMixin.java @@ -16,6 +16,8 @@ package net.fabricmc.fabric.mixin.gametest.server; +import com.llamalad7.mixinextras.expression.Definition; +import com.llamalad7.mixinextras.expression.Expression; import com.llamalad7.mixinextras.injector.ModifyExpressionValue; import com.llamalad7.mixinextras.sugar.Local; import org.spongepowered.asm.mixin.Mixin; @@ -37,10 +39,12 @@ private static boolean isEulaAgreedTo(boolean isEulaAgreedTo) { } // Inject after packRepository is stored - @Inject(method = "main", cancellable = true, at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/server/packs/repository/ServerPacksSource;createPackRepository(Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;)Lnet/minecraft/server/packs/repository/PackRepository;")) - private static void main(String[] args, CallbackInfo info, @Local LevelStorageSource.LevelStorageAccess storageAccess, @Local PackRepository packRepository) { + @Definition(id = "createPackRepository", method = "Lnet/minecraft/server/packs/repository/ServerPacksSource;createPackRepository(Lnet/minecraft/world/level/storage/LevelStorageSource$LevelStorageAccess;)Lnet/minecraft/server/packs/repository/PackRepository;") + @Expression("? = createPackRepository(?)") + @Inject(method = "main", cancellable = true, at = @At(value = "MIXINEXTRAS:EXPRESSION", shift = At.Shift.AFTER)) + private static void main(String[] args, CallbackInfo info, @Local(name = "access") LevelStorageSource.LevelStorageAccess access, @Local(name = "packRepository") PackRepository packRepository) { if (FabricGameTestRunner.ENABLED) { - FabricGameTestRunner.runHeadlessServer(storageAccess, packRepository); + FabricGameTestRunner.runHeadlessServer(access, packRepository); info.cancel(); // Do not progress in starting the normal dedicated server } } diff --git a/fabric-gametest-api-v1/src/main/resources/fabric-gametest-api-v1.mixins.json b/fabric-gametest-api-v1/src/main/resources/fabric-gametest-api-v1.mixins.json index a4a3f0cd991..889181fd0ae 100644 --- a/fabric-gametest-api-v1/src/main/resources/fabric-gametest-api-v1.mixins.json +++ b/fabric-gametest-api-v1/src/main/resources/fabric-gametest-api-v1.mixins.json @@ -11,7 +11,12 @@ "server.MainMixin" ], "injectors": { - "defaultRequire": 1, - "maxShiftBy": 2 + "defaultRequire": 1 + }, + "overwrites": { + "requireAnnotations": true + }, + "mixinextras": { + "minVersion": "0.5.0" } } diff --git a/fabric-gametest-api-v1/src/main/resources/fabric.mod.json b/fabric-gametest-api-v1/src/main/resources/fabric.mod.json index 05819626d19..e3928e05bc7 100644 --- a/fabric-gametest-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-gametest-api-v1/src/main/resources/fabric.mod.json @@ -21,7 +21,7 @@ ] }, "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-resource-loader-v1": "*" }, "description": "Allows registration of custom game tests.", diff --git a/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/ItemStackMixin.java b/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/ItemStackMixin.java index 70e0cacccc1..ec90ef66259 100644 --- a/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/ItemStackMixin.java +++ b/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/ItemStackMixin.java @@ -36,7 +36,7 @@ public abstract class ItemStackMixin { // Only target the second RETURN, the first RETURN is for no tooltip @Inject(method = "getTooltipLines", at = @At(value = "RETURN", ordinal = 1)) - private void getTooltip(Item.TooltipContext tooltipContext, @Nullable Player entity, TooltipFlag tooltipFlag, CallbackInfoReturnable> info) { - ItemTooltipCallback.EVENT.invoker().getTooltip((ItemStack) (Object) this, tooltipContext, tooltipFlag, info.getReturnValue()); + private void getTooltip(Item.TooltipContext context, @Nullable Player player, TooltipFlag tooltipFlag, CallbackInfoReturnable> info) { + ItemTooltipCallback.EVENT.invoker().getTooltip((ItemStack) (Object) this, context, tooltipFlag, info.getReturnValue()); } } diff --git a/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/MultiPlayerGameModeMixin.java b/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/MultiPlayerGameModeMixin.java index daf0e9f5839..617445e43fc 100644 --- a/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/MultiPlayerGameModeMixin.java +++ b/fabric-item-api-v1/src/client/java/net/fabricmc/fabric/mixin/item/client/MultiPlayerGameModeMixin.java @@ -49,8 +49,8 @@ public class MultiPlayerGameModeMixin { ), method = "sameDestroyTarget" ) - private boolean fabricItemContinueBlockBreakingInject(ItemStack stack, ItemStack otherStack) { - boolean stackUnchanged = ItemStack.isSameItemSameComponents(stack, this.destroyingItem); + private boolean fabricItemContinueBlockBreakingInject(ItemStack a, ItemStack b) { + boolean stackUnchanged = ItemStack.isSameItemSameComponents(a, this.destroyingItem); if (!stackUnchanged) { // The stack changed and vanilla is about to cancel block breaking progress. Check if the item wants to continue block breaking instead. diff --git a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/AbstractFurnaceBlockEntityMixin.java b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/AbstractFurnaceBlockEntityMixin.java index 992fa9065ef..99b7cdbcd71 100644 --- a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/AbstractFurnaceBlockEntityMixin.java +++ b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/AbstractFurnaceBlockEntityMixin.java @@ -36,8 +36,8 @@ public abstract class AbstractFurnaceBlockEntityMixin { private static final ThreadLocal REMAINDER_STACK = new ThreadLocal<>(); @Inject(method = "serverTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;getItem()Lnet/minecraft/world/item/Item;"), allow = 1) - private static void getStackRemainder(ServerLevel level, BlockPos pos, BlockState state, AbstractFurnaceBlockEntity blockEntity, CallbackInfo ci, @Local(ordinal = 0) ItemStack itemStack) { - REMAINDER_STACK.set(itemStack.getCraftingRemainder()); + private static void getStackRemainder(ServerLevel level, BlockPos pos, BlockState state, AbstractFurnaceBlockEntity entity, CallbackInfo ci, @Local(name = "fuel") ItemStack fuel) { + REMAINDER_STACK.set(fuel.getCraftingRemainder()); } @ModifyArg(method = "serverTick", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/NonNullList;set(ILjava/lang/Object;)Ljava/lang/Object;"), index = 1, allow = 1) diff --git a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/AnvilMenuMixin.java b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/AnvilMenuMixin.java index f339a4a2032..86b34937c89 100644 --- a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/AnvilMenuMixin.java +++ b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/AnvilMenuMixin.java @@ -47,7 +47,7 @@ abstract class AnvilMenuMixin extends ItemCombinerMenu { target = "Lnet/minecraft/world/item/enchantment/Enchantment;canEnchant(Lnet/minecraft/world/item/ItemStack;)Z" ) ) - private boolean callAllowEnchantingEvent(Enchantment instance, ItemStack stack, @Local Holder holder) { - return stack.canBeEnchantedWith(holder, EnchantingContext.ACCEPTABLE); + private boolean callAllowEnchantingEvent(Enchantment instance, ItemStack itemStack, @Local(name = "enchantmentHolder") Holder enchantmentHolder) { + return itemStack.canBeEnchantedWith(enchantmentHolder, EnchantingContext.ACCEPTABLE); } } diff --git a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/BrewingStandBlockEntityMixin.java b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/BrewingStandBlockEntityMixin.java index e75ca0f8c6e..5b06f6961bf 100644 --- a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/BrewingStandBlockEntityMixin.java +++ b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/BrewingStandBlockEntityMixin.java @@ -37,8 +37,8 @@ public class BrewingStandBlockEntityMixin { private static final ThreadLocal REMAINDER_STACK = new ThreadLocal<>(); @Inject(method = "doBrew", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;shrink(I)V", shift = At.Shift.AFTER)) - private static void captureItemStack(Level level, BlockPos pos, NonNullList slots, CallbackInfo ci, @Local ItemStack itemStack) { - REMAINDER_STACK.set(itemStack.getCraftingRemainder()); + private static void captureItemStack(Level level, BlockPos pos, NonNullList items, CallbackInfo ci, @Local(name = "ingredient") ItemStack ingredient) { + REMAINDER_STACK.set(ingredient.getCraftingRemainder()); } /** diff --git a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/DataComponentMapBuilderMixin.java b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/DataComponentMapBuilderMixin.java index 257a0730df5..b0e16c17a07 100644 --- a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/DataComponentMapBuilderMixin.java +++ b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/DataComponentMapBuilderMixin.java @@ -40,7 +40,7 @@ abstract class DataComponentMapBuilderMixin implements FabricComponentMapBuilder private Reference2ObjectMap, Object> map; @Shadow - public abstract DataComponentMap.Builder set(DataComponentType dataComponentType, @Nullable T object); + public abstract DataComponentMap.Builder set(DataComponentType type, @Nullable T value); @Override @SuppressWarnings("unchecked") diff --git a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/EnchantCommandMixin.java b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/EnchantCommandMixin.java index e31d528d0e2..15a73e282bf 100644 --- a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/EnchantCommandMixin.java +++ b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/EnchantCommandMixin.java @@ -37,7 +37,7 @@ abstract class EnchantCommandMixin { method = "enchant", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/enchantment/Enchantment;canEnchant(Lnet/minecraft/world/item/ItemStack;)Z") ) - private static boolean callAllowEnchantingEvent(Enchantment instance, ItemStack stack, CommandSourceStack source, Collection targets, Holder enchantment) { - return stack.canBeEnchantedWith(enchantment, EnchantingContext.ACCEPTABLE); + private static boolean callAllowEnchantingEvent(Enchantment instance, ItemStack itemStack, CommandSourceStack source, Collection targets, Holder enchantmentHolder) { + return itemStack.canBeEnchantedWith(enchantmentHolder, EnchantingContext.ACCEPTABLE); } } diff --git a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/EnchantRandomlyFunctionMixin.java b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/EnchantRandomlyFunctionMixin.java index 6332397304c..9a0a8461f61 100644 --- a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/EnchantRandomlyFunctionMixin.java +++ b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/EnchantRandomlyFunctionMixin.java @@ -33,7 +33,7 @@ abstract class EnchantRandomlyFunctionMixin { method = "lambda$run$1", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/enchantment/Enchantment;canEnchant(Lnet/minecraft/world/item/ItemStack;)Z") ) - private static boolean callAllowEnchantingEvent(Enchantment enchantment, ItemStack stack, boolean bl, ItemStack itemStack, Holder holder) { - return stack.canBeEnchantedWith(holder, EnchantingContext.ACCEPTABLE); + private static boolean callAllowEnchantingEvent(Enchantment enchantment, ItemStack itemStack, boolean shouldCheckCompatibility, ItemStack itemStack1, Holder candidate) { + return itemStack.canBeEnchantedWith(candidate, EnchantingContext.ACCEPTABLE); } } diff --git a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/EnchantmentHelperMixin.java b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/EnchantmentHelperMixin.java index 5a4da78ed0c..e4c15ecff46 100644 --- a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/EnchantmentHelperMixin.java +++ b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/EnchantmentHelperMixin.java @@ -33,7 +33,7 @@ abstract class EnchantmentHelperMixin { method = "lambda$getAvailableEnchantmentResults$0", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/enchantment/Enchantment;isPrimaryItem(Lnet/minecraft/world/item/ItemStack;)Z") ) - private static boolean useCustomEnchantingChecks(Enchantment instance, ItemStack stack, ItemStack itemStack, boolean bl, Holder holder) { - return stack.canBeEnchantedWith(holder, EnchantingContext.PRIMARY); + private static boolean useCustomEnchantingChecks(Enchantment instance, ItemStack item, ItemStack itemStack, boolean isBook, Holder enchantment) { + return item.canBeEnchantedWith(enchantment, EnchantingContext.PRIMARY); } } diff --git a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/ItemStackMixin.java b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/ItemStackMixin.java index 87173471625..cef2508b4b5 100644 --- a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/ItemStackMixin.java +++ b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/ItemStackMixin.java @@ -61,10 +61,10 @@ public abstract class ItemStackMixin implements FabricItemStack { public abstract Item getItem(); @Shadow - public abstract void shrink(int i); + public abstract void shrink(int amount); @WrapOperation(method = "hurtAndBreak(ILnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/world/entity/EquipmentSlot;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;hurtAndBreak(ILnet/minecraft/server/level/ServerLevel;Lnet/minecraft/server/level/ServerPlayer;Ljava/util/function/Consumer;)V")) - private void hookDamage(ItemStack instance, int amount, ServerLevel serverLevel, ServerPlayer serverPlayer, Consumer consumer, Operation original, @Local(argsOnly = true) LivingEntity entity, @Local(argsOnly = true) EquipmentSlot slot) { + private void hookDamage(ItemStack instance, int amount, ServerLevel level, ServerPlayer player, Consumer onBreak, Operation original, @Local(argsOnly = true, name = "owner") LivingEntity owner, @Local(argsOnly = true, name = "slot") EquipmentSlot slot) { CustomDamageHandler handler = ((ItemExtensions) getItem()).fabric_getCustomDamageHandler(); /* @@ -75,87 +75,87 @@ The other damage method (which original.call discards) handles the creative mode we preserve the pre-24w21a behavior of not calling in creative mode. */ - if (handler != null && !entity.hasInfiniteMaterials()) { + if (handler != null && !owner.hasInfiniteMaterials()) { // Track whether an item has been broken by custom handler MutableBoolean mut = new MutableBoolean(false); - amount = handler.hurtAndBreak((ItemStack) (Object) this, amount, entity, slot, () -> { + amount = handler.hurtAndBreak((ItemStack) (Object) this, amount, owner, slot, () -> { mut.setTrue(); this.shrink(1); - consumer.accept(this.getItem()); + onBreak.accept(this.getItem()); }); // If item is broken, there's no reason to call the original. if (mut.booleanValue()) return; } - original.call(instance, amount, serverLevel, serverPlayer, consumer); + original.call(instance, amount, level, player, onBreak); } @ModifyArg(method = "addDetailsToTooltip", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;addToTooltip(Lnet/minecraft/core/component/DataComponentType;Lnet/minecraft/world/item/Item$TooltipContext;Lnet/minecraft/world/item/component/TooltipDisplay;Ljava/util/function/Consumer;Lnet/minecraft/world/item/TooltipFlag;)V")) private DataComponentType preAppendComponentTooltip( DataComponentType componentType, - @Local(argsOnly = true) Item.TooltipContext context, - @Local(argsOnly = true) TooltipDisplay displayComponent, - @Local(argsOnly = true) TooltipFlag type, - @Local(argsOnly = true) Consumer componentConsumer, + @Local(argsOnly = true, name = "context") Item.TooltipContext context, + @Local(argsOnly = true, name = "display") TooltipDisplay display, + @Local(argsOnly = true, name = "tooltipFlag") TooltipFlag tooltipFlag, + @Local(argsOnly = true, name = "builder") Consumer builder, @Share("index") LocalIntRef index ) { - preAppendTooltip(componentType, context, displayComponent, componentConsumer, type, index); + preAppendTooltip(componentType, context, display, builder, tooltipFlag, index); return componentType; } @ModifyArg(method = "addDetailsToTooltip", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/component/TooltipDisplay;shows(Lnet/minecraft/core/component/DataComponentType;)Z")) private DataComponentType preShouldDisplay( DataComponentType componentType, - @Local(argsOnly = true) Item.TooltipContext context, - @Local(argsOnly = true) TooltipDisplay displayComponent, - @Local(argsOnly = true) TooltipFlag type, - @Local(argsOnly = true) Consumer componentConsumer, + @Local(argsOnly = true, name = "context") Item.TooltipContext context, + @Local(argsOnly = true, name = "display") TooltipDisplay display, + @Local(argsOnly = true, name = "tooltipFlag") TooltipFlag tooltipFlag, + @Local(argsOnly = true, name = "builder") Consumer builder, @Share("index") LocalIntRef index ) { - preAppendTooltip(componentType, context, displayComponent, componentConsumer, type, index); + preAppendTooltip(componentType, context, display, builder, tooltipFlag, index); return componentType; } @Inject(method = "addDetailsToTooltip", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;addAttributeTooltips(Ljava/util/function/Consumer;Lnet/minecraft/world/item/component/TooltipDisplay;Lnet/minecraft/world/entity/player/Player;)V")) private void preAttributeModifiers( Item.TooltipContext context, - TooltipDisplay displayComponent, + TooltipDisplay display, @Nullable Player player, - TooltipFlag type, - Consumer componentConsumer, + TooltipFlag tooltipFlag, + Consumer builder, CallbackInfo ci, @Share("index") LocalIntRef index ) { // Special case: attribute modifiers are extracted into a separate method - preAppendTooltip(DataComponents.ATTRIBUTE_MODIFIERS, context, displayComponent, componentConsumer, type, index); + preAppendTooltip(DataComponents.ATTRIBUTE_MODIFIERS, context, display, builder, tooltipFlag, index); } @Inject(method = "addDetailsToTooltip", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/DefaultedRegistry;getKey(Ljava/lang/Object;)Lnet/minecraft/resources/Identifier;")) private void postTooltipsAdvanced( Item.TooltipContext context, - TooltipDisplay displayComponent, + TooltipDisplay display, @Nullable Player player, - TooltipFlag type, - Consumer componentConsumer, + TooltipFlag tooltipFlag, + Consumer builder, CallbackInfo ci, @Share("index") LocalIntRef index ) { - preAppendTooltip(null, context, displayComponent, componentConsumer, type, index); + preAppendTooltip(null, context, display, builder, tooltipFlag, index); } @ModifyExpressionValue(method = "addDetailsToTooltip", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/TooltipFlag;isAdvanced()Z")) private boolean postTooltipsNonAdvanced( boolean isAdvanced, Item.TooltipContext context, - TooltipDisplay displayComponent, + TooltipDisplay display, @Nullable Player player, - TooltipFlag type, - Consumer componentConsumer, + TooltipFlag tooltipFlag, + Consumer builder, @Share("index") LocalIntRef index ) { if (!isAdvanced) { - preAppendTooltip(null, context, displayComponent, componentConsumer, type, index); + preAppendTooltip(null, context, display, builder, tooltipFlag, index); } return isAdvanced; @@ -165,8 +165,8 @@ private boolean postTooltipsNonAdvanced( private void preAppendTooltip( @Nullable DataComponentType componentType, Item.TooltipContext context, - TooltipDisplay displayComponent, - Consumer componentConsumer, + TooltipDisplay display, + Consumer builder, TooltipFlag tooltipFlag, LocalIntRef index ) { @@ -175,7 +175,7 @@ private void preAppendTooltip( } if (index.get() == 0) { - ItemComponentTooltipProviderRegistryImpl.onFirst((ItemStack) (Object) this, context, displayComponent, componentConsumer, tooltipFlag); + ItemComponentTooltipProviderRegistryImpl.onFirst((ItemStack) (Object) this, context, display, builder, tooltipFlag); } List> vanillaOrder = VanillaTooltipProviderOrder.getVanillaOrder(); @@ -191,7 +191,7 @@ private void preAppendTooltip( DataComponentType prevComponentInOrder = vanillaOrder.get(index.get() - 1); HashSet> cycleDetector = new HashSet<>(); cycleDetector.add(prevComponentInOrder); - ItemComponentTooltipProviderRegistryImpl.onAfter((ItemStack) (Object) this, prevComponentInOrder, context, displayComponent, componentConsumer, tooltipFlag, cycleDetector); + ItemComponentTooltipProviderRegistryImpl.onAfter((ItemStack) (Object) this, prevComponentInOrder, context, display, builder, tooltipFlag, cycleDetector); } if (index.get() == vanillaOrder.size()) { @@ -202,7 +202,7 @@ private void preAppendTooltip( DataComponentType componentInOrder = vanillaOrder.get(index.get()); HashSet> cycleDetector = new HashSet<>(); cycleDetector.add(componentInOrder); - ItemComponentTooltipProviderRegistryImpl.onBefore((ItemStack) (Object) this, componentInOrder, context, displayComponent, componentConsumer, tooltipFlag, cycleDetector); + ItemComponentTooltipProviderRegistryImpl.onBefore((ItemStack) (Object) this, componentInOrder, context, display, builder, tooltipFlag, cycleDetector); index.set(index.get() + 1); if (componentInOrder == componentType) { @@ -211,7 +211,7 @@ private void preAppendTooltip( } if (componentType == null) { - ItemComponentTooltipProviderRegistryImpl.onLast((ItemStack) (Object) this, context, displayComponent, componentConsumer, tooltipFlag); + ItemComponentTooltipProviderRegistryImpl.onLast((ItemStack) (Object) this, context, display, builder, tooltipFlag); } } } diff --git a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/LivingEntityMixin.java b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/LivingEntityMixin.java index 602f127df23..2840697ff26 100644 --- a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/LivingEntityMixin.java +++ b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/LivingEntityMixin.java @@ -31,11 +31,11 @@ @Mixin(LivingEntity.class) abstract class LivingEntityMixin { @Inject(method = "getEquipmentSlotForItem", at = @At(value = "HEAD"), cancellable = true) - private void onGetPreferredEquipmentSlot(ItemStack stack, CallbackInfoReturnable info) { - EquipmentSlotProvider equipmentSlotProvider = ((ItemExtensions) stack.getItem()).fabric_getEquipmentSlotProvider(); + private void onGetPreferredEquipmentSlot(ItemStack itemStack, CallbackInfoReturnable info) { + EquipmentSlotProvider equipmentSlotProvider = ((ItemExtensions) itemStack.getItem()).fabric_getEquipmentSlotProvider(); if (equipmentSlotProvider != null) { - info.setReturnValue(equipmentSlotProvider.getEquipmentSlotForItem((LivingEntity) (Object) this, stack)); + info.setReturnValue(equipmentSlotProvider.getEquipmentSlotForItem((LivingEntity) (Object) this, itemStack)); } } } diff --git a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/RegistryDataLoaderResourceManagerRegistryLoadTaskMixin.java b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/RegistryDataLoaderResourceManagerRegistryLoadTaskMixin.java index 7f541994517..4c9f30fad6e 100644 --- a/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/RegistryDataLoaderResourceManagerRegistryLoadTaskMixin.java +++ b/fabric-item-api-v1/src/main/java/net/fabricmc/fabric/mixin/item/RegistryDataLoaderResourceManagerRegistryLoadTaskMixin.java @@ -36,10 +36,10 @@ @Mixin(RegistryDataLoader.ResourceManagerRegistryLoadTask.class) public class RegistryDataLoaderResourceManagerRegistryLoadTaskMixin { @WrapOperation(method = "lambda$load$2", at = @At(value = "NEW", target = "net/minecraft/resources/RegistryDataLoader$PendingRegistration")) - private RegistryDataLoader.PendingRegistration modify(ResourceKey key, Either value, RegistrationInfo registrationInfo, Operation> original, @Local(argsOnly = true) Resource resource) { + private RegistryDataLoader.PendingRegistration modify(ResourceKey key, Either value, RegistrationInfo registrationInfo, Operation> original, @Local(argsOnly = true, name = "thunk") Resource thunk) { if (value.left().isPresent()) { if (value.left().get() instanceof Enchantment enchantment) { - Enchantment modified = EnchantmentUtil.modify((ResourceKey) key, enchantment, EnchantmentUtil.determineSource(resource)); + Enchantment modified = EnchantmentUtil.modify((ResourceKey) key, enchantment, EnchantmentUtil.determineSource(thunk)); if (modified != null) { // Clear the knownPackInfo to force the server to sync the data pack to the client diff --git a/fabric-item-api-v1/src/main/resources/fabric.mod.json b/fabric-item-api-v1/src/main/resources/fabric.mod.json index e87957cad5d..00e1a4ceeda 100644 --- a/fabric-item-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-item-api-v1/src/main/resources/fabric.mod.json @@ -23,7 +23,7 @@ } ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*", "fabric-resource-loader-v1": "*" }, diff --git a/fabric-key-mapping-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/keymapping/KeyMappingCategoryMixin.java b/fabric-key-mapping-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/keymapping/KeyMappingCategoryMixin.java index 6b685f8d589..ac6bbb56b60 100644 --- a/fabric-key-mapping-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/keymapping/KeyMappingCategoryMixin.java +++ b/fabric-key-mapping-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/keymapping/KeyMappingCategoryMixin.java @@ -34,7 +34,7 @@ abstract class KeyMappingCategoryMixin { @Shadow @Final - static List SORT_ORDER; + private static List SORT_ORDER; @Inject(method = "register(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/client/KeyMapping$Category;", at = @At("RETURN")) private static void onReturnRegister(Identifier id, CallbackInfoReturnable cir) { diff --git a/fabric-key-mapping-api-v1/src/client/resources/fabric.mod.json b/fabric-key-mapping-api-v1/src/client/resources/fabric.mod.json index ad5ea4e09f0..ac56dc3a75c 100644 --- a/fabric-key-mapping-api-v1/src/client/resources/fabric.mod.json +++ b/fabric-key-mapping-api-v1/src/client/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3" + "fabricloader": ">=0.18.4" }, "description": "Key Mapping registry API.", "mixins": [ diff --git a/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/ClientChunkCacheMixin.java b/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/ClientChunkCacheMixin.java index 192c4c41805..3e0c82b5e25 100644 --- a/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/ClientChunkCacheMixin.java +++ b/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/ClientChunkCacheMixin.java @@ -42,23 +42,23 @@ public abstract class ClientChunkCacheMixin { @Final @Shadow - ClientLevel level; + private ClientLevel level; @Inject(method = "replaceWithPacketData", at = @At("TAIL")) - private void onChunkLoad(int x, int z, FriendlyByteBuf friendlyByteBuf, Map highmap, Consumer consumer, CallbackInfoReturnable info) { + private void onChunkLoad(int chunkX, int chunkZ, FriendlyByteBuf readBuffer, Map heightmaps, Consumer blockEntities, CallbackInfoReturnable info) { ClientChunkEvents.CHUNK_LOAD.invoker().onChunkLoad(this.level, info.getReturnValue()); } - @Inject(method = "replaceWithPacketData", at = @At(value = "NEW", target = "net/minecraft/world/level/chunk/LevelChunk", shift = At.Shift.BEFORE)) - private void onChunkUnload(int x, int z, FriendlyByteBuf buf, Map highmap, Consumer consumer, CallbackInfoReturnable info, @Local LevelChunk levelChunk) { - if (levelChunk != null) { - ClientChunkEvents.CHUNK_UNLOAD.invoker().onChunkUnload(this.level, levelChunk); + @Inject(method = "replaceWithPacketData", at = @At(value = "NEW", target = "net/minecraft/world/level/chunk/LevelChunk")) + private void onChunkUnload(int chunkX, int chunkZ, FriendlyByteBuf readBuffer, Map heightmaps, Consumer blockEntities, CallbackInfoReturnable info, @Local(name = "chunk") LevelChunk chunk) { + if (chunk != null) { + ClientChunkEvents.CHUNK_UNLOAD.invoker().onChunkUnload(this.level, chunk); } } @Inject(method = "drop", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/multiplayer/ClientChunkCache$Storage;drop(ILnet/minecraft/world/level/chunk/LevelChunk;)V")) - private void onChunkUnload(ChunkPos pos, CallbackInfo ci, @Local LevelChunk chunk) { - ClientChunkEvents.CHUNK_UNLOAD.invoker().onChunkUnload(this.level, chunk); + private void onChunkUnload(ChunkPos pos, CallbackInfo ci, @Local(name = "currentChunk") LevelChunk currentChunk) { + ClientChunkEvents.CHUNK_UNLOAD.invoker().onChunkUnload(this.level, currentChunk); } @Inject( @@ -68,9 +68,9 @@ private void onChunkUnload(ChunkPos pos, CallbackInfo ci, @Local LevelChunk chun target = "Lnet/minecraft/client/multiplayer/ClientChunkCache$Storage;inRange(II)Z" ) ) - private void onUpdateLoadDistance(int loadDistance, CallbackInfo ci, @Local ClientChunkCache.Storage clientChunkCacheStorage, @Local LevelChunk oldChunk, @Local ChunkPos chunkPos) { - if (!clientChunkCacheStorage.inRange(chunkPos.x, chunkPos.z)) { - ClientChunkEvents.CHUNK_UNLOAD.invoker().onChunkUnload(this.level, oldChunk); + private void onUpdateLoadDistance(int viewRange, CallbackInfo ci, @Local(name = "newStorage") ClientChunkCache.Storage newStorage, @Local(name = "chunk") LevelChunk chunk, @Local(name = "pos") ChunkPos pos) { + if (!newStorage.inRange(pos.x, pos.z)) { + ClientChunkEvents.CHUNK_UNLOAD.invoker().onChunkUnload(this.level, chunk); } } } diff --git a/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/ClientConfigurationPacketListenerImplMixin.java b/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/ClientConfigurationPacketListenerImplMixin.java index 2282e24218e..690c4c0b80b 100644 --- a/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/ClientConfigurationPacketListenerImplMixin.java +++ b/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/ClientConfigurationPacketListenerImplMixin.java @@ -30,7 +30,7 @@ @Mixin(ClientConfigurationPacketListenerImpl.class) public class ClientConfigurationPacketListenerImplMixin { @Inject(method = "lambda$handleConfigurationFinished$0", at = @At(value = "RETURN")) - private void invokeTagsLoaded(ResourceProvider provider, CallbackInfoReturnable cir) { + private void invokeTagsLoaded(ResourceProvider knownPacksProvider, CallbackInfoReturnable cir) { CommonLifecycleEvents.TAGS_LOADED.invoker().onTagsLoaded(cir.getReturnValue(), true); } } diff --git a/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/LevelChunkMixin.java b/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/LevelChunkMixin.java index 68a621a2302..9ec1b54e80d 100644 --- a/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/LevelChunkMixin.java +++ b/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/LevelChunkMixin.java @@ -62,12 +62,12 @@ private V onLoadBlockEntity(V removedBlockEntity, BlockEntity blockEntity) { } @Inject(method = "setBlockEntity", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/entity/BlockEntity;setRemoved()V", shift = At.Shift.AFTER)) - private void onRemoveBlockEntity(BlockEntity blockEntity, CallbackInfo info, @Local(ordinal = 1) BlockEntity removedBlockEntity) { - if (removedBlockEntity != null) { + private void onRemoveBlockEntity(BlockEntity blockEntity, CallbackInfo info, @Local(name = "previousEntry") BlockEntity previousEntry) { + if (previousEntry != null) { if (this.getLevel() instanceof ServerLevel) { - ServerBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker().onUnload(removedBlockEntity, (ServerLevel) this.getLevel()); + ServerBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker().onUnload(previousEntry, (ServerLevel) this.getLevel()); } else if (this.getLevel() instanceof ClientLevel) { - ClientBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker().onUnload(removedBlockEntity, (ClientLevel) this.getLevel()); + ClientBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker().onUnload(previousEntry, (ClientLevel) this.getLevel()); } } } @@ -90,12 +90,12 @@ private Object onRemoveBlockEntity(Map map, K key) { } @Inject(method = "removeBlockEntity", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/entity/BlockEntity;setRemoved()V")) - private void onRemoveBlockEntity(BlockPos pos, CallbackInfo ci, @Local @Nullable BlockEntity removed) { - if (removed != null) { + private void onRemoveBlockEntity(BlockPos pos, CallbackInfo ci, @Local(name = "removeThis") @Nullable BlockEntity removeThis) { + if (removeThis != null) { if (this.getLevel() instanceof ServerLevel) { - ServerBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker().onUnload(removed, (ServerLevel) this.getLevel()); + ServerBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker().onUnload(removeThis, (ServerLevel) this.getLevel()); } else if (this.getLevel() instanceof ClientLevel) { - ClientBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker().onUnload(removed, (ClientLevel) this.getLevel()); + ClientBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker().onUnload(removeThis, (ClientLevel) this.getLevel()); } } } diff --git a/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/MinecraftMixin.java b/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/MinecraftMixin.java index 6b7c7988acd..5f5c36c2cd9 100644 --- a/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/MinecraftMixin.java +++ b/fabric-lifecycle-events-v1/src/client/java/net/fabricmc/fabric/mixin/event/lifecycle/client/MinecraftMixin.java @@ -16,6 +16,7 @@ package net.fabricmc.fabric.mixin.event.lifecycle.client; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; @@ -46,13 +47,13 @@ private void onStopping(CallbackInfo ci) { } // We inject after the thread field is set so `BlockableEventLoop#getRunningThread` will work - @Inject(at = @At(value = "FIELD", target = "Lnet/minecraft/client/Minecraft;gameThread:Ljava/lang/Thread;", shift = At.Shift.AFTER, ordinal = 0), method = "run") + @Inject(at = @At(value = "FIELD", target = "Lnet/minecraft/client/Minecraft;gameThread:Ljava/lang/Thread;", shift = At.Shift.AFTER, ordinal = 0, opcode = Opcodes.PUTFIELD), method = "run") private void onStart(CallbackInfo ci) { ClientLifecycleEvents.CLIENT_STARTED.invoker().onClientStarted((Minecraft) (Object) this); } - @Inject(method = "updateLevelInEngines", at = @At("TAIL")) - private void afterClientLevelChange(ClientLevel level, CallbackInfo ci) { + @Inject(method = "updateLevelInEngines(Lnet/minecraft/client/multiplayer/ClientLevel;Z)V", at = @At("TAIL")) + private void afterClientLevelChange(ClientLevel level, boolean stopSound, CallbackInfo ci) { if (level != null) { Minecraft client = (Minecraft) (Object) this; ClientLevelEvents.AFTER_CLIENT_LEVEL_CHANGE.invoker().afterLevelChange(client, level); diff --git a/fabric-lifecycle-events-v1/src/client/resources/fabric-lifecycle-events-v1.client.mixins.json b/fabric-lifecycle-events-v1/src/client/resources/fabric-lifecycle-events-v1.client.mixins.json index c7e179e5926..8bf5715dbd2 100644 --- a/fabric-lifecycle-events-v1/src/client/resources/fabric-lifecycle-events-v1.client.mixins.json +++ b/fabric-lifecycle-events-v1/src/client/resources/fabric-lifecycle-events-v1.client.mixins.json @@ -12,7 +12,9 @@ "LevelChunkMixin" ], "injectors": { - "defaultRequire": 1, - "maxShiftBy": 3 + "defaultRequire": 1 + }, + "overwrites": { + "requireAnnotations": true } } diff --git a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ChunkHolderMixin.java b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ChunkHolderMixin.java index fa871980d59..2d6ed619c62 100644 --- a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ChunkHolderMixin.java +++ b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ChunkHolderMixin.java @@ -68,7 +68,7 @@ private ChunkHolderMixin(ChunkPos pos) { * Handles INACCESSIBLE -> FULL for chunks that are immediately loaded and available. {@link ChunkStatusTasksMixin} handles the rest. */ @Inject(method = "updateFutures", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ChunkHolder;addSaveDependency(Ljava/util/concurrent/CompletableFuture;)V", shift = At.Shift.AFTER, ordinal = 0)) - private void updateFutures$inaccessibleToFull(ChunkMap chunkMap, Executor executor, CallbackInfo ci) { + private void updateFutures$inaccessibleToFull(ChunkMap scheduler, Executor mainThreadExecutor, CallbackInfo ci) { if (this.getChunkIfPresentUnchecked(ChunkStatus.FULL) instanceof LevelChunk && this.fabric_currentEventFullChunkStatus == INACCESSIBLE) { // prevent duplicate events with ChunkStatusTasksMixin ServerChunkEvents.FULL_CHUNK_STATUS_CHANGE.invoker().onFullChunkStatusChange((ServerLevel) levelHeightAccessor, (LevelChunk) this.getChunkIfPresentUnchecked(ChunkStatus.FULL), INACCESSIBLE, FULL); this.fabric_currentEventFullChunkStatus = FULL; @@ -79,7 +79,7 @@ private ChunkHolderMixin(ChunkPos pos) { * Handles FULL -> BLOCK_TICKING. */ @Inject(method = "updateFutures", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ChunkHolder;addSaveDependency(Ljava/util/concurrent/CompletableFuture;)V", shift = At.Shift.AFTER, ordinal = 1)) - private void updateFutures$fullToBlockTicking(ChunkMap chunkMap, Executor executor, CallbackInfo ci) { + private void updateFutures$fullToBlockTicking(ChunkMap scheduler, Executor mainThreadExecutor, CallbackInfo ci) { if (fabric_currentEventFullChunkStatus == FULL) { // if INACCESSIBLE->FULL did not fire immediately, then ChunkStatusTasksMixin will handle this later. ServerChunkEvents.FULL_CHUNK_STATUS_CHANGE.invoker().onFullChunkStatusChange((ServerLevel) levelHeightAccessor, (LevelChunk) this.getChunkIfPresentUnchecked(ChunkStatus.FULL), FULL, BLOCK_TICKING); this.fabric_currentEventFullChunkStatus = BLOCK_TICKING; @@ -90,7 +90,7 @@ private ChunkHolderMixin(ChunkPos pos) { * Handles BLOCK_TICKING -> ENTITY_TICKING. */ @Inject(method = "updateFutures", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ChunkHolder;addSaveDependency(Ljava/util/concurrent/CompletableFuture;)V", shift = At.Shift.AFTER, ordinal = 2)) - private void updateFutures$blockTickingToEntityTicking(ChunkMap chunkMap, Executor executor, CallbackInfo ci) { + private void updateFutures$blockTickingToEntityTicking(ChunkMap scheduler, Executor mainThreadExecutor, CallbackInfo ci) { if (fabric_currentEventFullChunkStatus == BLOCK_TICKING) { // if INACCESSIBLE->FULL->BLOCK_TICKING did not fire immediately, then ChunkStatusTasksMixin will handle this later. ServerChunkEvents.FULL_CHUNK_STATUS_CHANGE.invoker().onFullChunkStatusChange((ServerLevel) levelHeightAccessor, (LevelChunk) this.getChunkIfPresentUnchecked(ChunkStatus.FULL), BLOCK_TICKING, ENTITY_TICKING); this.fabric_currentEventFullChunkStatus = ENTITY_TICKING; @@ -101,11 +101,11 @@ private ChunkHolderMixin(ChunkPos pos) { * Fire right before onFullChunkStatusChange() is called. */ @Inject(method = "demoteFullChunk", at = @At("HEAD")) - private void decreaseLevel(ChunkMap chunkMap, FullChunkStatus target, CallbackInfo ci) { + private void decreaseLevel(ChunkMap scheduler, FullChunkStatus status, CallbackInfo ci) { FullChunkStatus previous = ChunkLevel.fullStatus(this.oldTicketLevel); ServerLevel serverLevel = (ServerLevel) levelHeightAccessor; - for (int i = previous.ordinal(); i > target.ordinal(); i--) { + for (int i = previous.ordinal(); i > status.ordinal(); i--) { FullChunkStatus oldStatus = fabric_FULL_CHUNK_STATUSES[i]; FullChunkStatus newStatus = fabric_FULL_CHUNK_STATUSES[i-1]; if (this.fabric_currentEventFullChunkStatus.isOrAfter(oldStatus)) { // if a promotion event got cancelled or never finished, then do _not_ fire an equivalent demotion event diff --git a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ChunkMapMixin.java b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ChunkMapMixin.java index 2f92b79b9a5..f830ff9d9e0 100644 --- a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ChunkMapMixin.java +++ b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ChunkMapMixin.java @@ -38,14 +38,14 @@ public abstract class ChunkMapMixin { @Shadow @Final - ServerLevel level; + private ServerLevel level; /** * Injection is inside of scheduleUnload. * We inject just after "setLoaded" is made false, since here the LevelChunk is guaranteed to be unloaded. */ @Inject(method = "lambda$scheduleUnload$0", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ChunkMap;save(Lnet/minecraft/world/level/chunk/ChunkAccess;)Z")) - private void onChunkUnload(ChunkHolder chunkHolder, CompletableFuture completableFuture, long l, CallbackInfo ci, @Local ChunkAccess chunk) { + private void onChunkUnload(ChunkHolder chunkHolder, CompletableFuture saveSyncFuture, long pos, CallbackInfo ci, @Local(name = "chunk") ChunkAccess chunk) { if (chunk instanceof LevelChunk levelChunk) { ServerChunkEvents.CHUNK_UNLOAD.invoker().onChunkUnload(this.level, levelChunk); } diff --git a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ChunkStatusTasksMixin.java b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ChunkStatusTasksMixin.java index 4d4545cd49b..df67e113a17 100644 --- a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ChunkStatusTasksMixin.java +++ b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ChunkStatusTasksMixin.java @@ -39,23 +39,23 @@ abstract class ChunkStatusTasksMixin { private static final FullChunkStatus[] fabric_FULL_CHUNK_STATUSES = FullChunkStatus.values(); // values() clones the internal array each call, so cache the return @Inject(method = "lambda$full$0", at = @At("TAIL")) - private static void onChunkLoad(ChunkAccess chunk, WorldGenContext worldGenContext, GenerationChunkHolder chunkHolder, CallbackInfoReturnable callbackInfoReturnable) { + private static void onChunkLoad(ChunkAccess chunk, WorldGenContext context, GenerationChunkHolder holder, CallbackInfoReturnable callbackInfoReturnable) { LevelChunk levelChunk = (LevelChunk) callbackInfoReturnable.getReturnValue(); // We fire the event at TAIL since the chunk is guaranteed to be a LevelChunk then. - ServerChunkEvents.CHUNK_LOAD.invoker().onChunkLoad(worldGenContext.level(), levelChunk); + ServerChunkEvents.CHUNK_LOAD.invoker().onChunkLoad(context.level(), levelChunk); if (!(chunk instanceof ImposterProtoChunk)) { - ServerChunkEvents.CHUNK_GENERATE.invoker().onChunkGenerate(worldGenContext.level(), levelChunk); + ServerChunkEvents.CHUNK_GENERATE.invoker().onChunkGenerate(context.level(), levelChunk); } // Handles the case where the chunk becomes accessible from being completely unloaded, only fires if chunkHolder has been set to at least that full chunk status - FullChunkStatusEventTracker chunkStatusTracker = (FullChunkStatusEventTracker) chunkHolder; + FullChunkStatusEventTracker chunkStatusTracker = (FullChunkStatusEventTracker) holder; - for (int i = chunkStatusTracker.fabric_getCurrentEventFullChunkStatus().ordinal(); i < chunkHolder.getFullStatus().ordinal(); i++) { + for (int i = chunkStatusTracker.fabric_getCurrentEventFullChunkStatus().ordinal(); i < holder.getFullStatus().ordinal(); i++) { FullChunkStatus oldStatus = fabric_FULL_CHUNK_STATUSES[i]; FullChunkStatus newStatus = fabric_FULL_CHUNK_STATUSES[i+1]; - ServerChunkEvents.FULL_CHUNK_STATUS_CHANGE.invoker().onFullChunkStatusChange(worldGenContext.level(), levelChunk, oldStatus, newStatus); + ServerChunkEvents.FULL_CHUNK_STATUS_CHANGE.invoker().onFullChunkStatusChange(context.level(), levelChunk, oldStatus, newStatus); chunkStatusTracker.fabric_setCurrentEventFullChunkStatus(newStatus); } } diff --git a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/LivingEntityMixin.java b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/LivingEntityMixin.java index 87671ffc3b2..eb8f6507d39 100644 --- a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/LivingEntityMixin.java +++ b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/LivingEntityMixin.java @@ -34,7 +34,7 @@ @Mixin(LivingEntity.class) public abstract class LivingEntityMixin { @Inject(method = "collectEquipmentChanges", at = @At(value = "INVOKE", target = "Ljava/util/Map;put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;")) - private void getEquipmentChanges(CallbackInfoReturnable<@Nullable Map> cir, @Local EquipmentSlot equipmentSlot, @Local(ordinal = 0) ItemStack previousStack, @Local(ordinal = 1) ItemStack currentStack) { - ServerEntityEvents.EQUIPMENT_CHANGE.invoker().onChange((LivingEntity) (Object) this, equipmentSlot, previousStack, currentStack); + private void getEquipmentChanges(CallbackInfoReturnable<@Nullable Map> cir, @Local(name = "slot") EquipmentSlot slot, @Local(name = "previous") ItemStack previous, @Local(name = "current") ItemStack current) { + ServerEntityEvents.EQUIPMENT_CHANGE.invoker().onChange((LivingEntity) (Object) this, slot, previous, current); } } diff --git a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/MinecraftServerMixin.java b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/MinecraftServerMixin.java index 37c2042c919..dd99d6c2b5e 100644 --- a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/MinecraftServerMixin.java +++ b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/MinecraftServerMixin.java @@ -64,12 +64,12 @@ private void afterShutdownServer(CallbackInfo info) { } @Inject(at = @At(value = "INVOKE", target = "Lnet/minecraft/server/MinecraftServer;tickChildren(Ljava/util/function/BooleanSupplier;)V"), method = "tickServer") - private void onStartTick(BooleanSupplier shouldKeepTicking, CallbackInfo ci) { + private void onStartTick(BooleanSupplier haveTime, CallbackInfo ci) { ServerTickEvents.START_SERVER_TICK.invoker().onStartTick((MinecraftServer) (Object) this); } @Inject(at = @At("TAIL"), method = "tickServer") - private void onEndTick(BooleanSupplier shouldKeepTicking, CallbackInfo info) { + private void onEndTick(BooleanSupplier haveTime, CallbackInfo info) { ServerTickEvents.END_SERVER_TICK.invoker().onEndTick((MinecraftServer) (Object) this); } @@ -82,17 +82,17 @@ private V onLoadWorld(Map levels, K dimension, V level, Operation collection, CallbackInfoReturnable> cir) { + private void startResourceReload(Collection packsToEnable, CallbackInfoReturnable> cir) { ServerLifecycleEvents.START_DATA_PACK_RELOAD.invoker().startDataPackReload((MinecraftServer) (Object) this, this.resources.resourceManager()); } @Inject(method = "reloadResources", at = @At("TAIL")) - private void endResourceReload(Collection collection, CallbackInfoReturnable> cir) { + private void endResourceReload(Collection packsToEnable, CallbackInfoReturnable> cir) { cir.getReturnValue().handleAsync((value, throwable) -> { // Hook into fail ServerLifecycleEvents.END_DATA_PACK_RELOAD.invoker().endDataPackReload((MinecraftServer) (Object) this, this.resources.resourceManager(), throwable == null); @@ -101,12 +101,12 @@ private void endResourceReload(Collection collection, CallbackInfoReturn } @Inject(method = "saveAllChunks", at = @At("HEAD")) - private void startSave(boolean suppressLogs, boolean flush, boolean force, CallbackInfoReturnable cir) { + private void startSave(boolean silent, boolean flush, boolean force, CallbackInfoReturnable cir) { ServerLifecycleEvents.BEFORE_SAVE.invoker().onBeforeSave((MinecraftServer) (Object) this, flush, force); } @Inject(method = "saveAllChunks", at = @At("TAIL")) - private void endSave(boolean suppressLogs, boolean flush, boolean force, CallbackInfoReturnable cir) { + private void endSave(boolean silent, boolean flush, boolean force, CallbackInfoReturnable cir) { ServerLifecycleEvents.AFTER_SAVE.invoker().onAfterSave((MinecraftServer) (Object) this, flush, force); } } diff --git a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/PlayerListMixin.java b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/PlayerListMixin.java index 6450630502b..40e4a6961b2 100644 --- a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/PlayerListMixin.java +++ b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/PlayerListMixin.java @@ -34,7 +34,7 @@ public class PlayerListMixin { method = "placeNewPlayer", at = @At(value = "NEW", target = "net/minecraft/network/protocol/game/ClientboundUpdateRecipesPacket") ) - private void hookOnPlayerConnect(Connection connection, ServerPlayer player, CommonListenerCookie arg, CallbackInfo ci) { + private void hookOnPlayerConnect(Connection connection, ServerPlayer player, CommonListenerCookie cookie, CallbackInfo ci) { ServerLifecycleEvents.SYNC_DATA_PACK_CONTENTS.invoker().onSyncDataPackContents(player, true); } diff --git a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ReloadableServerResourcesMixin.java b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ReloadableServerResourcesMixin.java index 2e4c7fb350a..1e837ff8c48 100644 --- a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ReloadableServerResourcesMixin.java +++ b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ReloadableServerResourcesMixin.java @@ -41,8 +41,8 @@ public class ReloadableServerResourcesMixin { private RegistryAccess layeredRegistries; @Inject(method = "", at = @At("TAIL")) - private void init(LayeredRegistryAccess layeredRegistries, HolderLookup.Provider registries, FeatureFlagSet enabledFeatures, Commands.CommandSelection environment, List pendingTagLoads, PermissionSet permissionPredicate, CallbackInfo ci) { - this.layeredRegistries = layeredRegistries.compositeAccess(); + private void init(LayeredRegistryAccess fullLayers, HolderLookup.Provider loadingContext, FeatureFlagSet enabledFeatures, Commands.CommandSelection commandSelection, List postponedTags, PermissionSet functionCompilationPermissions, CallbackInfo ci) { + this.layeredRegistries = fullLayers.compositeAccess(); } @Inject(method = "updateStaticRegistryTags", at = @At("TAIL")) diff --git a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ServerLevelMixin.java b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ServerLevelMixin.java index 42eb4e413cd..2bba3dd0297 100644 --- a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ServerLevelMixin.java +++ b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/ServerLevelMixin.java @@ -32,12 +32,12 @@ public abstract class ServerLevelMixin { // Make sure "insideBlockTick" is true before we call the start tick, so inject after it is set @Inject(method = "tick", at = @At(value = "FIELD", target = "Lnet/minecraft/server/level/ServerLevel;handlingTick:Z", opcode = Opcodes.PUTFIELD, ordinal = 0, shift = At.Shift.AFTER)) - private void startLevelTick(BooleanSupplier shouldKeepTicking, CallbackInfo ci) { + private void startLevelTick(BooleanSupplier haveTime, CallbackInfo ci) { ServerTickEvents.START_LEVEL_TICK.invoker().onStartTick((ServerLevel) (Object) this); } @Inject(method = "tick", at = @At(value = "TAIL")) - private void endLevelTick(BooleanSupplier shouldKeepTicking, CallbackInfo ci) { + private void endLevelTick(BooleanSupplier haveTime, CallbackInfo ci) { ServerTickEvents.END_LEVEL_TICK.invoker().onEndTick((ServerLevel) (Object) this); } } diff --git a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/server/LevelChunkMixin.java b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/server/LevelChunkMixin.java index 589c57f78ff..658a4bba6d5 100644 --- a/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/server/LevelChunkMixin.java +++ b/fabric-lifecycle-events-v1/src/main/java/net/fabricmc/fabric/mixin/event/lifecycle/server/LevelChunkMixin.java @@ -63,9 +63,9 @@ private V onLoadBlockEntity(V removedBlockEntity, BlockEntity blockEntity) { } @Inject(method = "setBlockEntity", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/entity/BlockEntity;setRemoved()V", shift = At.Shift.AFTER)) - private void onRemoveBlockEntity(BlockEntity blockEntity, CallbackInfo info, @Local(ordinal = 1) BlockEntity removedBlockEntity) { + private void onRemoveBlockEntity(BlockEntity blockEntity, CallbackInfo info, @Local(name = "previousEntry") BlockEntity previousEntry) { if (this.getLevel() instanceof ServerLevel) { - ServerBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker().onUnload(removedBlockEntity, (ServerLevel) this.getLevel()); + ServerBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker().onUnload(previousEntry, (ServerLevel) this.getLevel()); } } @@ -83,9 +83,9 @@ private Object onRemoveBlockEntity(Map map, K key) { } @Inject(method = "removeBlockEntity", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/entity/BlockEntity;setRemoved()V")) - private void onRemoveBlockEntity(BlockPos pos, CallbackInfo ci, @Local @Nullable BlockEntity removed) { - if (removed != null && this.getLevel() instanceof ServerLevel) { - ServerBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker().onUnload(removed, (ServerLevel) this.getLevel()); + private void onRemoveBlockEntity(BlockPos pos, CallbackInfo ci, @Local(name = "removeThis") @Nullable BlockEntity removeThis) { + if (removeThis != null && this.getLevel() instanceof ServerLevel) { + ServerBlockEntityEvents.BLOCK_ENTITY_UNLOAD.invoker().onUnload(removeThis, (ServerLevel) this.getLevel()); } } } diff --git a/fabric-lifecycle-events-v1/src/main/resources/fabric-lifecycle-events-v1.mixins.json b/fabric-lifecycle-events-v1/src/main/resources/fabric-lifecycle-events-v1.mixins.json index dbbe06d803f..e0aa2179d4d 100644 --- a/fabric-lifecycle-events-v1/src/main/resources/fabric-lifecycle-events-v1.mixins.json +++ b/fabric-lifecycle-events-v1/src/main/resources/fabric-lifecycle-events-v1.mixins.json @@ -18,7 +18,9 @@ "server.LevelChunkMixin" ], "injectors": { - "defaultRequire": 1, - "maxShiftBy": 3 + "defaultRequire": 1 + }, + "overwrites": { + "requireAnnotations": true } } diff --git a/fabric-lifecycle-events-v1/src/main/resources/fabric.mod.json b/fabric-lifecycle-events-v1/src/main/resources/fabric.mod.json index ca9b69fa409..8b593334d65 100644 --- a/fabric-lifecycle-events-v1/src/main/resources/fabric.mod.json +++ b/fabric-lifecycle-events-v1/src/main/resources/fabric.mod.json @@ -31,7 +31,7 @@ } ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*" }, "description": "Events for the game's lifecycle.", diff --git a/fabric-loot-api-v3/src/main/java/net/fabricmc/fabric/mixin/loot/LootTableMixin.java b/fabric-loot-api-v3/src/main/java/net/fabricmc/fabric/mixin/loot/LootTableMixin.java index 034185f3f2a..0011c5afaff 100644 --- a/fabric-loot-api-v3/src/main/java/net/fabricmc/fabric/mixin/loot/LootTableMixin.java +++ b/fabric-loot-api-v3/src/main/java/net/fabricmc/fabric/mixin/loot/LootTableMixin.java @@ -45,7 +45,7 @@ class LootTableMixin implements FabricLootTable { Holder holder = null; @WrapMethod(method = "getRandomItemsRaw(Lnet/minecraft/world/level/storage/loot/LootContext;Ljava/util/function/Consumer;)V") - private void fabric$modifyDrops(LootContext context, Consumer lootConsumer, Operation original) { + private void fabric$modifyDrops(LootContext context, Consumer output, Operation original) { if (holder == null) { this.holder = LootUtil.getEntryOrDirect(context.getLevel(), (LootTable) (Object) this); } @@ -57,7 +57,7 @@ class LootTableMixin implements FabricLootTable { context, list ); - list.forEach(lootConsumer); + list.forEach(output); } @Override diff --git a/fabric-loot-api-v3/src/main/java/net/fabricmc/fabric/mixin/loot/ReloadableServerRegistriesMixin.java b/fabric-loot-api-v3/src/main/java/net/fabricmc/fabric/mixin/loot/ReloadableServerRegistriesMixin.java index d6f9a68bb73..1e718f704d2 100644 --- a/fabric-loot-api-v3/src/main/java/net/fabricmc/fabric/mixin/loot/ReloadableServerRegistriesMixin.java +++ b/fabric-loot-api-v3/src/main/java/net/fabricmc/fabric/mixin/loot/ReloadableServerRegistriesMixin.java @@ -67,14 +67,14 @@ abstract class ReloadableServerRegistriesMixin { private static final WeakHashMap, HolderLookup.Provider> WRAPPERS = new WeakHashMap<>(); @WrapOperation(method = "reload", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/HolderLookup$Provider;createSerializationContext(Lcom/mojang/serialization/DynamicOps;)Lnet/minecraft/resources/RegistryOps;")) - private static RegistryOps storeOps(HolderLookup.Provider holder, DynamicOps ops, Operation> original) { - RegistryOps created = original.call(holder, ops); + private static RegistryOps storeOps(HolderLookup.Provider holder, DynamicOps parent, Operation> original) { + RegistryOps created = original.call(holder, parent); WRAPPERS.put(created, holder); return created; } @WrapOperation(method = "reload", at = @At(value = "INVOKE", target = "Ljava/util/concurrent/CompletableFuture;thenApplyAsync(Ljava/util/function/Function;Ljava/util/concurrent/Executor;)Ljava/util/concurrent/CompletableFuture;")) - private static CompletableFuture> removeOps(CompletableFuture>> future, Function>, ? extends LayeredRegistryAccess> fn, Executor executor, Operation>> original, @Local RegistryOps ops) { + private static CompletableFuture> removeOps(CompletableFuture>> future, Function>, ? extends LayeredRegistryAccess> fn, Executor executor, Operation>> original, @Local(name = "ops") RegistryOps ops) { return original.call(future.thenApply(v -> { WRAPPERS.remove(ops); return v; @@ -82,8 +82,8 @@ private static CompletableFuture> removeOps } @Inject(method = "lambda$scheduleRegistryLoad$0", at = @At(value = "INVOKE", target = "Ljava/util/Map;forEach(Ljava/util/function/BiConsumer;)V")) - private static void modifyLootTable(LootDataType lootDataType, ResourceManager resourceManager, RegistryOps registryOps, CallbackInfoReturnable> cir, @Local Map map) { - map.replaceAll((identifier, t) -> modifyLootTable(t, identifier, registryOps)); + private static void modifyLootTable(LootDataType type, ResourceManager manager, RegistryOps ops, CallbackInfoReturnable> cir, @Local(name = "elements") Map elements) { + elements.replaceAll((identifier, t) -> modifyLootTable(t, identifier, ops)); } @Unique @@ -114,12 +114,12 @@ private static T modifyLootTable(T value, Identifier id, RegistryOps void onLootTablesLoaded(LootDataType lootDataType, ResourceManager resourceManager, RegistryOps registryOps, CallbackInfoReturnable> cir) { - if (lootDataType != LootDataType.TABLE) return; + private static void onLootTablesLoaded(LootDataType type, ResourceManager manager, RegistryOps ops, CallbackInfoReturnable> cir) { + if (type != LootDataType.TABLE) return; Registry lootTableRegistry = (Registry) cir.getReturnValue(); - LootTableEvents.ALL_LOADED.invoker().onLootTablesLoaded(resourceManager, lootTableRegistry); + LootTableEvents.ALL_LOADED.invoker().onLootTablesLoaded(manager, lootTableRegistry); LootUtil.SOURCES.remove(); lootTableRegistry.listElements().forEach(reference -> ((FabricLootTable) reference.value()).fabric$setHolder(reference)); } diff --git a/fabric-loot-api-v3/src/main/java/net/fabricmc/fabric/mixin/loot/SimpleJsonResourceReloadListenerMixin.java b/fabric-loot-api-v3/src/main/java/net/fabricmc/fabric/mixin/loot/SimpleJsonResourceReloadListenerMixin.java index cfe73ccd52c..42398dc9942 100644 --- a/fabric-loot-api-v3/src/main/java/net/fabricmc/fabric/mixin/loot/SimpleJsonResourceReloadListenerMixin.java +++ b/fabric-loot-api-v3/src/main/java/net/fabricmc/fabric/mixin/loot/SimpleJsonResourceReloadListenerMixin.java @@ -19,6 +19,8 @@ import java.util.Map; import com.google.gson.JsonElement; +import com.llamalad7.mixinextras.expression.Definition; +import com.llamalad7.mixinextras.expression.Expression; import com.llamalad7.mixinextras.sugar.Local; import com.mojang.serialization.Codec; import com.mojang.serialization.DynamicOps; @@ -38,9 +40,11 @@ @Mixin(SimpleJsonResourceReloadListener.class) public class SimpleJsonResourceReloadListenerMixin { - @Inject(method = "scanDirectory(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/resources/FileToIdConverter;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/Codec;Ljava/util/Map;)V", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/resources/FileToIdConverter;fileToId(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/resources/Identifier;", shift = At.Shift.AFTER)) - private static void fillSourceMap(ResourceManager manager, FileToIdConverter fileToIdConverter, DynamicOps ops, Codec codec, Map result, CallbackInfo ci, @Local Map.Entry entry, @Local(ordinal = 1) Identifier id) { - final String dirName = ((FileToIdConverterAccessor) fileToIdConverter).getPrefix(); + @Definition(id = "fileToId", method = "Lnet/minecraft/resources/FileToIdConverter;fileToId(Lnet/minecraft/resources/Identifier;)Lnet/minecraft/resources/Identifier;") + @Expression("? = ?.fileToId(?)") + @Inject(method = "scanDirectory(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/resources/FileToIdConverter;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/Codec;Ljava/util/Map;)V", at = @At(value = "MIXINEXTRAS:EXPRESSION", shift = At.Shift.AFTER)) + private static void fillSourceMap(ResourceManager manager, FileToIdConverter lister, DynamicOps ops, Codec codec, Map result, CallbackInfo ci, @Local(name = "entry") Map.Entry entry, @Local(name = "id") Identifier id) { + final String dirName = ((FileToIdConverterAccessor) lister).getPrefix(); if (!LootDataType.TABLE.registryKey().identifier().getPath().equals(dirName)) return; LootUtil.SOURCES.get().put(id, LootUtil.determineSource(entry.getValue())); diff --git a/fabric-loot-api-v3/src/main/resources/fabric-loot-api-v3.mixins.json b/fabric-loot-api-v3/src/main/resources/fabric-loot-api-v3.mixins.json index 3dd7c5f13bd..68933ae23e3 100644 --- a/fabric-loot-api-v3/src/main/resources/fabric-loot-api-v3.mixins.json +++ b/fabric-loot-api-v3/src/main/resources/fabric-loot-api-v3.mixins.json @@ -17,5 +17,8 @@ }, "overwrites": { "requireAnnotations": true + }, + "mixinextras": { + "minVersion": "0.5.0" } } diff --git a/fabric-loot-api-v3/src/main/resources/fabric.mod.json b/fabric-loot-api-v3/src/main/resources/fabric.mod.json index f782daff4af..daf0e80f856 100644 --- a/fabric-loot-api-v3/src/main/resources/fabric.mod.json +++ b/fabric-loot-api-v3/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*", "fabric-resource-loader-v1": "*" }, diff --git a/fabric-menu-api-v1/src/main/java/net/fabricmc/fabric/mixin/menu/ServerPlayerMixin.java b/fabric-menu-api-v1/src/main/java/net/fabricmc/fabric/mixin/menu/ServerPlayerMixin.java index 93dc8908ed3..2897d9547c4 100644 --- a/fabric-menu-api-v1/src/main/java/net/fabricmc/fabric/mixin/menu/ServerPlayerMixin.java +++ b/fabric-menu-api-v1/src/main/java/net/fabricmc/fabric/mixin/menu/ServerPlayerMixin.java @@ -56,8 +56,8 @@ private ServerPlayerMixin(Level level, GameProfile gameProfile) { public abstract void closeContainer(); @Redirect(method = "openMenu(Lnet/minecraft/world/MenuProvider;)Ljava/util/OptionalInt;", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/level/ServerPlayer;closeContainer()V")) - private void fabric_closeContainerScreenIfAllowed(ServerPlayer player, MenuProvider factory) { - if (factory.shouldCloseCurrentScreen()) { + private void fabric_closeContainerScreenIfAllowed(ServerPlayer player, MenuProvider provider) { + if (provider.shouldCloseCurrentScreen()) { this.closeContainer(); } else { // Called by closeContainer in vanilla @@ -66,8 +66,8 @@ private void fabric_closeContainerScreenIfAllowed(ServerPlayer player, MenuProvi } @Inject(method = "openMenu(Lnet/minecraft/world/MenuProvider;)Ljava/util/OptionalInt;", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerGamePacketListenerImpl;send(Lnet/minecraft/network/protocol/Packet;)V")) - private void fabric_storeOpenedMenu(MenuProvider factory, CallbackInfoReturnable info, @Local AbstractContainerMenu menu) { - if (factory instanceof ExtendedMenuProvider || (factory instanceof SimpleMenuProvider simpleFactory && simpleFactory.menuConstructor instanceof ExtendedMenuProvider)) { + private void fabric_storeOpenedMenu(MenuProvider provider, CallbackInfoReturnable info, @Local(name = "menu") AbstractContainerMenu menu) { + if (provider instanceof ExtendedMenuProvider || (provider instanceof SimpleMenuProvider simpleFactory && simpleFactory.menuConstructor instanceof ExtendedMenuProvider)) { // Set the menu, so the factory method can access it through the player. containerMenu = menu; } else if (menu.getType() instanceof ExtendedMenuType) { @@ -77,12 +77,12 @@ private void fabric_storeOpenedMenu(MenuProvider factory, CallbackInfoReturnable } @Redirect(method = "openMenu(Lnet/minecraft/world/MenuProvider;)Ljava/util/OptionalInt;", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/network/ServerGamePacketListenerImpl;send(Lnet/minecraft/network/protocol/Packet;)V")) - private void fabric_replaceVanillaScreenPacket(ServerGamePacketListenerImpl networkHandler, Packet packet, MenuProvider factory) { - if (factory instanceof SimpleMenuProvider simpleProvider && simpleProvider.menuConstructor instanceof ExtendedMenuProvider extendedProvider) { - factory = extendedProvider; + private void fabric_replaceVanillaScreenPacket(ServerGamePacketListenerImpl networkHandler, Packet packet, MenuProvider provider) { + if (provider instanceof SimpleMenuProvider simpleProvider && simpleProvider.menuConstructor instanceof ExtendedMenuProvider extendedProvider) { + provider = extendedProvider; } - if (factory instanceof ExtendedMenuProvider extendedFactory) { + if (provider instanceof ExtendedMenuProvider extendedFactory) { AbstractContainerMenu handler = Objects.requireNonNull(containerMenu); if (handler.getType() instanceof ExtendedMenuType) { diff --git a/fabric-menu-api-v1/src/main/resources/fabric.mod.json b/fabric-menu-api-v1/src/main/resources/fabric.mod.json index 4d3d18ab437..043fe5044a9 100644 --- a/fabric-menu-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-menu-api-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*", "fabric-networking-api-v1": "*" }, diff --git a/fabric-message-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/message/ChatListenerMixin.java b/fabric-message-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/message/ChatListenerMixin.java index 458ea6c4932..9d7ac8781e0 100644 --- a/fabric-message-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/message/ChatListenerMixin.java +++ b/fabric-message-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/message/ChatListenerMixin.java @@ -39,22 +39,22 @@ @Mixin(ChatListener.class) public abstract class ChatListenerMixin { @Inject(method = "showMessageToPlayer", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Gui;getChat()Lnet/minecraft/client/gui/components/ChatComponent;", ordinal = 0), cancellable = true) - private void fabric_onSignedChatMessage(ChatType.Bound boundChatType, PlayerChatMessage message, Component decorated, GameProfile sender, boolean onlyShowSecureChat, Instant receptionTimestamp, CallbackInfoReturnable cir) { - fabric_onChatMessage(decorated, message, sender, boundChatType, receptionTimestamp, cir); + private void fabric_onSignedChatMessage(ChatType.Bound boundChatType, PlayerChatMessage message, Component decoratedMessage, GameProfile sender, boolean onlyShowSecure, Instant received, CallbackInfoReturnable cir) { + fabric_onChatMessage(decoratedMessage, message, sender, boundChatType, received, cir); } @Inject(method = "showMessageToPlayer", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Gui;getChat()Lnet/minecraft/client/gui/components/ChatComponent;", ordinal = 1), cancellable = true) - private void fabric_onFilteredSignedChatMessage(ChatType.Bound boundChatType, PlayerChatMessage message, Component decorated, GameProfile sender, boolean onlyShowSecureChat, Instant receptionTimestamp, CallbackInfoReturnable cir) { + private void fabric_onFilteredSignedChatMessage(ChatType.Bound boundChatType, PlayerChatMessage message, Component decoratedMessage, GameProfile sender, boolean onlyShowSecure, Instant received, CallbackInfoReturnable cir) { Component filtered = message.filterMask().applyWithFormatting(message.signedContent()); if (filtered != null) { - fabric_onChatMessage(boundChatType.decorate(filtered), message, sender, boundChatType, receptionTimestamp, cir); + fabric_onChatMessage(boundChatType.decorate(filtered), message, sender, boundChatType, received, cir); } } @Inject(method = "lambda$handleDisguisedChatMessage$0", at = @At("HEAD"), cancellable = true) - private void fabric_onProfilelessChatMessage(ChatType.Bound boundChatType, Component content, Instant receptionTimestamp, CallbackInfoReturnable cir) { - fabric_onChatMessage(boundChatType.decorate(content), null, null, boundChatType, receptionTimestamp, cir); + private void fabric_onProfilelessChatMessage(ChatType.Bound boundChatType, Component message, Instant received, CallbackInfoReturnable cir) { + fabric_onChatMessage(boundChatType.decorate(message), null, null, boundChatType, received, cir); } @Unique @@ -68,7 +68,7 @@ private void fabric_onChatMessage(Component message, @Nullable PlayerChatMessage } @Inject(method = "handleSystemMessage", at = @At("HEAD"), cancellable = true) - private void fabric_allowGameMessage(Component _message, boolean overlay, CallbackInfo ci, @Local(argsOnly = true) LocalRef message) { + private void fabric_allowGameMessage(Component _message, boolean overlay, CallbackInfo ci, @Local(argsOnly = true, name = "message") LocalRef message) { if (ClientReceiveMessageEvents.ALLOW_GAME.invoker().allowReceiveGameMessage(message.get(), overlay)) { message.set(ClientReceiveMessageEvents.MODIFY_GAME.invoker().modifyReceivedGameMessage(message.get(), overlay)); ClientReceiveMessageEvents.GAME.invoker().onReceiveGameMessage(message.get(), overlay); diff --git a/fabric-message-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/message/ClientPacketListenerMixin.java b/fabric-message-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/message/ClientPacketListenerMixin.java index 4a24de184e5..69b56f0766b 100644 --- a/fabric-message-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/message/ClientPacketListenerMixin.java +++ b/fabric-message-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/message/ClientPacketListenerMixin.java @@ -34,7 +34,7 @@ @Mixin(value = ClientPacketListener.class, priority = 800) public abstract class ClientPacketListenerMixin { @Inject(method = "sendChat", at = @At("HEAD"), cancellable = true) - private void fabric_allowSendChatMessage(String _content, CallbackInfo ci, @Local(argsOnly = true) LocalRef content) { + private void fabric_allowSendChatMessage(String _content, CallbackInfo ci, @Local(argsOnly = true, name = "content") LocalRef content) { if (ClientSendMessageEvents.ALLOW_CHAT.invoker().allowSendChatMessage(content.get())) { content.set(ClientSendMessageEvents.MODIFY_CHAT.invoker().modifySendChatMessage(content.get())); ClientSendMessageEvents.CHAT.invoker().onSendChatMessage(content.get()); @@ -45,7 +45,7 @@ private void fabric_allowSendChatMessage(String _content, CallbackInfo ci, @Loca } @Inject(method = "sendCommand", at = @At("HEAD"), cancellable = true) - private void fabric_allowSendCommandMessage(String _command, CallbackInfo ci, @Local(argsOnly = true) LocalRef command) { + private void fabric_allowSendCommandMessage(String _command, CallbackInfo ci, @Local(argsOnly = true, name = "command") LocalRef command) { if (ClientSendMessageEvents.ALLOW_COMMAND.invoker().allowSendCommandMessage(command.get())) { command.set(ClientSendMessageEvents.MODIFY_COMMAND.invoker().modifySendCommandMessage(command.get())); ClientSendMessageEvents.COMMAND.invoker().onSendCommandMessage(command.get()); diff --git a/fabric-message-api-v1/src/main/java/net/fabricmc/fabric/mixin/message/PlayerListMixin.java b/fabric-message-api-v1/src/main/java/net/fabricmc/fabric/mixin/message/PlayerListMixin.java index b08ab11c210..bf5a2436a5e 100644 --- a/fabric-message-api-v1/src/main/java/net/fabricmc/fabric/mixin/message/PlayerListMixin.java +++ b/fabric-message-api-v1/src/main/java/net/fabricmc/fabric/mixin/message/PlayerListMixin.java @@ -42,17 +42,17 @@ public abstract class PlayerListMixin { private MinecraftServer server; @Inject(method = "broadcastChatMessage(Lnet/minecraft/network/chat/PlayerChatMessage;Lnet/minecraft/server/level/ServerPlayer;Lnet/minecraft/network/chat/ChatType$Bound;)V", at = @At("HEAD"), cancellable = true) - private void onSendChatMessage(PlayerChatMessage message, ServerPlayer sender, ChatType.Bound boundChatType, CallbackInfo ci) { - if (!ServerMessageEvents.ALLOW_CHAT_MESSAGE.invoker().allowChatMessage(message, sender, boundChatType)) { + private void onSendChatMessage(PlayerChatMessage message, ServerPlayer sender, ChatType.Bound chatType, CallbackInfo ci) { + if (!ServerMessageEvents.ALLOW_CHAT_MESSAGE.invoker().allowChatMessage(message, sender, chatType)) { ci.cancel(); return; } - ServerMessageEvents.CHAT_MESSAGE.invoker().onChatMessage(message, sender, boundChatType); + ServerMessageEvents.CHAT_MESSAGE.invoker().onChatMessage(message, sender, chatType); } @Inject(method = "broadcastSystemMessage(Lnet/minecraft/network/chat/Component;Ljava/util/function/Function;Z)V", at = @At("HEAD"), cancellable = true) - private void onSendGameMessage(Component message, Function playerMessageFactory, boolean overlay, CallbackInfo ci) { + private void onSendGameMessage(Component message, Function playerMessages, boolean overlay, CallbackInfo ci) { if (!ServerMessageEvents.ALLOW_GAME_MESSAGE.invoker().allowGameMessage(this.server, message, overlay)) { ci.cancel(); return; @@ -62,12 +62,12 @@ private void onSendGameMessage(Component message, Function=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*" }, "description": "Adds message-related hooks.", diff --git a/fabric-model-loading-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/model/loading/BlockStateModelUnbakedMixin.java b/fabric-model-loading-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/model/loading/BlockStateModelUnbakedMixin.java index 50f4779d1ef..8dcd7b70b4e 100644 --- a/fabric-model-loading-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/model/loading/BlockStateModelUnbakedMixin.java +++ b/fabric-model-loading-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/model/loading/BlockStateModelUnbakedMixin.java @@ -36,12 +36,12 @@ @Mixin(BlockStateModel.Unbaked.class) interface BlockStateModelUnbakedMixin { @Redirect(method = "()V", at = @At(value = "INVOKE", target = "Lcom/mojang/serialization/Codec;flatComapMap(Ljava/util/function/Function;Ljava/util/function/Function;)Lcom/mojang/serialization/Codec;", ordinal = 0)) - private static Codec replaceWeightedCodec(Codec>> codec, Function to, Function from) { + private static Codec replaceWeightedCodec(Codec>> codec, Function _to, Function from) { return CustomUnbakedBlockStateModelRegistry.WEIGHTED_MODEL_CODEC; } @Redirect(method = "()V", at = @At(value = "INVOKE", target = "Lcom/mojang/serialization/Codec;flatComapMap(Ljava/util/function/Function;Ljava/util/function/Function;)Lcom/mojang/serialization/Codec;", ordinal = 1)) - private static Codec replaceCodec(Codec> codec, Function to, Function from) { + private static Codec replaceCodec(Codec> codec, Function _to, Function from) { return CustomUnbakedBlockStateModelRegistry.MODEL_CODEC; } } diff --git a/fabric-model-loading-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/model/loading/ModelBakeryMixin.java b/fabric-model-loading-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/model/loading/ModelBakeryMixin.java index 3efab53e3d0..020b2b3e264 100644 --- a/fabric-model-loading-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/model/loading/ModelBakeryMixin.java +++ b/fabric-model-loading-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/model/loading/ModelBakeryMixin.java @@ -53,11 +53,11 @@ abstract class ModelBakeryMixin { @Shadow @Final - static Logger LOGGER; + private static Logger LOGGER; @Shadow @Final - Map resolvedModels; + private Map resolvedModels; @Unique @Nullable @@ -83,7 +83,7 @@ private BiFunction hoo } @ModifyReturnValue(method = "bakeModels", at = @At("RETURN")) - private CompletableFuture withExtraModels(CompletableFuture models, @Local Executor executor, @Local ModelBakery.ModelBakerImpl baker) { + private CompletableFuture withExtraModels(CompletableFuture models, @Local(argsOnly = true, name = "taskExecutor") Executor taskExecutor, @Local(name = "baker") ModelBakery.ModelBakerImpl baker) { if (fabric_eventDispatcher == null) return models; CompletableFuture, Object>> extraModels = ParallelMapTransform.schedule(fabric_eventDispatcher.getExtraModels(), (key, model) -> { @@ -93,7 +93,7 @@ private CompletableFuture withExtraModels(CompletableF LOGGER.warn("Unable to bake extra model: '{}'", key, e); return null; } - }, executor); + }, taskExecutor); return models.thenCombine(extraModels, (res, extra) -> { ((BakedModelsHooks) (Object) res).fabric_setExtraModels(extra); return res; @@ -112,11 +112,11 @@ private static BlockStateModel wrapBlockModelBake(BlockStateModel.UnbakedRoot un } @WrapOperation(method = "lambda$bakeModels$1", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/item/ItemModel$Unbaked;bake(Lnet/minecraft/client/renderer/item/ItemModel$BakingContext;)Lnet/minecraft/client/renderer/item/ItemModel;")) - private ItemModel wrapItemModelBake(ItemModel.Unbaked unbakedModel, ItemModel.BakingContext bakeContext, Operation operation, @Local Identifier itemId) { + private ItemModel wrapItemModelBake(ItemModel.Unbaked unbakedModel, ItemModel.BakingContext bakeContext, Operation operation, @Local(argsOnly = true, name = "location") Identifier location) { if (fabric_eventDispatcher == null) { return operation.call(unbakedModel, bakeContext); } - return fabric_eventDispatcher.modifyItemModel(unbakedModel, itemId, bakeContext, operation); + return fabric_eventDispatcher.modifyItemModel(unbakedModel, location, bakeContext, operation); } } diff --git a/fabric-model-loading-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/model/loading/ModelManagerMixin.java b/fabric-model-loading-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/model/loading/ModelManagerMixin.java index a005305214f..8295481cfc8 100644 --- a/fabric-model-loading-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/model/loading/ModelManagerMixin.java +++ b/fabric-model-loading-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/model/loading/ModelManagerMixin.java @@ -69,8 +69,8 @@ abstract class ModelManagerMixin implements FabricModelManager { } @Inject(method = "reload", at = @At("HEAD")) - private void onHeadReload(PreparableReloadListener.SharedState sharedState, Executor prepareExecutor, PreparableReloadListener.PreparationBarrier synchronizer, Executor applyExecutor, CallbackInfoReturnable> cir) { - eventDispatcherFuture = ModelLoadingPluginManager.preparePlugins(sharedState, prepareExecutor).thenApplyAsync(ModelLoadingEventDispatcher::new, prepareExecutor); + private void onHeadReload(PreparableReloadListener.SharedState currentReload, Executor taskExecutor, PreparableReloadListener.PreparationBarrier preparationBarrier, Executor reloadExecutor, CallbackInfoReturnable> cir) { + eventDispatcherFuture = ModelLoadingPluginManager.preparePlugins(currentReload, taskExecutor).thenApplyAsync(ModelLoadingEventDispatcher::new, taskExecutor); } @ModifyReturnValue(method = "reload", at = @At("RETURN")) @@ -118,16 +118,16 @@ private Function withModelDispatcher(Function function) { @Inject(method = "discoverModelDependencies", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/resources/model/ModelDiscovery;resolve()Ljava/util/Map;")) private static void resolveExtraModels( - Map modelMap, BlockStateModelLoader.LoadedModels stateDefinition, ClientItemInfoLoader.LoadedClientInfos result, CallbackInfoReturnable cir, - @Local ModelDiscovery collector + Map allModels, BlockStateModelLoader.LoadedModels blockStateModels, ClientItemInfoLoader.LoadedClientInfos itemInfos, CallbackInfoReturnable cir, + @Local(name = "result") ModelDiscovery result ) { // We know eventDispatcherFuture is available, as it is required by the item and block models (hookModels). ModelLoadingEventDispatcher eventDispatcher = ModelLoadingEventDispatcher.CURRENT.get(); - if (eventDispatcher != null) eventDispatcher.getExtraModels().values().forEach(collector::addRoot); + if (eventDispatcher != null) eventDispatcher.getExtraModels().values().forEach(result::addRoot); } @Inject(method = "apply", at = @At(value = "RETURN")) - private void onReturnUpload(CallbackInfo ci, @Local ModelBakery.BakingResult bakedModels) { + private void onReturnUpload(CallbackInfo ci, @Local(name = "bakedModels") ModelBakery.BakingResult bakedModels) { extraModels = ((BakedModelsHooks) (Object) bakedModels).fabric_getExtraModels(); } @@ -144,7 +144,7 @@ private static BlockModel cancelVanillaDeserialize(Reader reader) { // code doesn't explicitly cast the model to BlockModel, and the enclosing method returns UnbakedModels per // its return type, it's safe to return an UnbakedModel here. @ModifyArg(method = "lambda$loadBlockModels$2(Ljava/util/Map$Entry;)Lcom/mojang/datafixers/util/Pair;", at = @At(value = "INVOKE", target = "Lcom/mojang/datafixers/util/Pair;of(Ljava/lang/Object;Ljava/lang/Object;)Lcom/mojang/datafixers/util/Pair;"), index = 1) - private static Object actuallyDeserializeModel(Object originalModel, @Local Reader reader) { + private static Object actuallyDeserializeModel(Object originalModel, @Local(name = "reader") Reader reader) { return UnbakedModelDeserializer.deserialize(reader); } } diff --git a/fabric-model-loading-api-v1/src/client/resources/fabric.mod.json b/fabric-model-loading-api-v1/src/client/resources/fabric.mod.json index 7dd0701a6dd..69a81c1004f 100644 --- a/fabric-model-loading-api-v1/src/client/resources/fabric.mod.json +++ b/fabric-model-loading-api-v1/src/client/resources/fabric.mod.json @@ -21,7 +21,7 @@ ] }, "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*", "fabric-renderer-api-v1": "*" }, diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/BundlePacketMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/BundlePacketMixin.java index 6f32e9f870d..7b947febf70 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/BundlePacketMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/BundlePacketMixin.java @@ -29,11 +29,11 @@ @Mixin(BundlePacket.class) public class BundlePacketMixin { - @ModifyVariable(method = "", at = @At("HEAD"), argsOnly = true) - private static Iterable> flattenBundlePackets(Iterable> value) { - var packets = new ArrayList>(); - iterateBundle(value, packets); - return packets; + @ModifyVariable(method = "", at = @At("HEAD"), argsOnly = true, name = "packets") + private static Iterable> flattenBundlePackets(Iterable> packets) { + var newPackets = new ArrayList>(); + iterateBundle(packets, newPackets); + return newPackets; } @Unique diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ClientboundCustomPayloadPacketMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ClientboundCustomPayloadPacketMixin.java index 9ad3d6967d6..3e8a62150e8 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ClientboundCustomPayloadPacketMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ClientboundCustomPayloadPacketMixin.java @@ -55,8 +55,8 @@ public class ClientboundCustomPayloadPacketMixin implements SplittablePacket, Ge ordinal = 0 ) ) - private static StreamCodec wrapPlayCodec(CustomPacketPayload.FallbackProvider unknownCodecFactory, List> types, Operation> original) { - StreamCodec codec = original.call(unknownCodecFactory, types); + private static StreamCodec wrapPlayCodec(CustomPacketPayload.FallbackProvider fallback, List> types, Operation> original) { + StreamCodec codec = original.call(fallback, types); FabricCustomPayloadStreamCodec fabricCodec = (FabricCustomPayloadStreamCodec) codec; fabricCodec.fabric_setCustomPayloadTypeProvider((buf, identifier) -> PayloadTypeRegistryImpl.CLIENTBOUND_PLAY.get(identifier)); return codec; @@ -70,8 +70,8 @@ private static StreamCodec wrapPla ordinal = 1 ) ) - private static StreamCodec wrapConfigCodec(CustomPacketPayload.FallbackProvider unknownCodecFactory, List> types, Operation> original) { - StreamCodec codec = original.call(unknownCodecFactory, types); + private static StreamCodec wrapConfigCodec(CustomPacketPayload.FallbackProvider fallback, List> types, Operation> original) { + StreamCodec codec = original.call(fallback, types); FabricCustomPayloadStreamCodec fabricCodec = (FabricCustomPayloadStreamCodec) codec; fabricCodec.fabric_setCustomPayloadTypeProvider((buf, identifier) -> PayloadTypeRegistryImpl.CLIENTBOUND_CONFIGURATION.get(identifier)); return codec; diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ClientboundCustomQueryPacketMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ClientboundCustomQueryPacketMixin.java index bede7a77a91..62bf27c4d48 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ClientboundCustomQueryPacketMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ClientboundCustomQueryPacketMixin.java @@ -38,7 +38,7 @@ public class ClientboundCustomQueryPacketMixin { private static int MAX_PAYLOAD_SIZE; @Inject(method = "readPayload", at = @At("HEAD"), cancellable = true) - private static void readPayload(Identifier id, FriendlyByteBuf buf, CallbackInfoReturnable cir) { - cir.setReturnValue(new FriendlyByteBufLoginQueryRequestPayload(id, PayloadHelper.read(buf, MAX_PAYLOAD_SIZE))); + private static void readPayload(Identifier id, FriendlyByteBuf input, CallbackInfoReturnable cir) { + cir.setReturnValue(new FriendlyByteBufLoginQueryRequestPayload(id, PayloadHelper.read(input, MAX_PAYLOAD_SIZE))); } } diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/CommandsMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/CommandsMixin.java index 02adbf9493e..d6f09315648 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/CommandsMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/CommandsMixin.java @@ -39,7 +39,7 @@ public class CommandsMixin { private CommandDispatcher dispatcher; @Inject(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/commands/BanIpCommands;register(Lcom/mojang/brigadier/CommandDispatcher;)V")) - private void init(Commands.CommandSelection environment, CommandBuildContext context, CallbackInfo ci) { + private void init(Commands.CommandSelection commandSelection, CommandBuildContext context, CallbackInfo ci) { if (SharedConstants.IS_RUNNING_IN_IDE) { // Command is registered when isDevelopment is set. return; diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ConnectionMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ConnectionMixin.java index 9b656d0ecf9..df977451f7a 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ConnectionMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ConnectionMixin.java @@ -24,6 +24,7 @@ import com.llamalad7.mixinextras.sugar.Local; import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -60,26 +61,26 @@ abstract class ConnectionMixin implements ChannelInfoHolder { private Map> playChannels; @Inject(method = "", at = @At("RETURN")) - private void initAddedFields(PacketFlow flow, CallbackInfo ci) { + private void initAddedFields(PacketFlow receiving, CallbackInfo ci) { this.playChannels = new ConcurrentHashMap<>(); } - @Inject(method = "sendPacket", at = @At(value = "FIELD", target = "Lnet/minecraft/network/Connection;sentPackets:I")) - private void checkPacket(Packet packet, ChannelFutureListener callback, boolean flush, CallbackInfo ci) { + @Inject(method = "sendPacket", at = @At(value = "FIELD", target = "Lnet/minecraft/network/Connection;sentPackets:I", opcode = Opcodes.GETFIELD)) + private void checkPacket(Packet packet, ChannelFutureListener listener, boolean flush, CallbackInfo ci) { if (this.packetListener instanceof PacketCallbackListener) { ((PacketCallbackListener) this.packetListener).sent(packet); } } @Inject(method = "validateListener", at = @At("HEAD")) - private void unwatchAddon(ProtocolInfo protocolInfo, PacketListener listener, CallbackInfo ci) { + private void unwatchAddon(ProtocolInfo protocol, PacketListener packetListener, CallbackInfo ci) { if (this.packetListener instanceof PacketListenerExtensions oldListener) { oldListener.getAddon().endSession(); } } @Inject(method = "channelInactive", at = @At("HEAD")) - private void disconnectAddon(ChannelHandlerContext channelHandlerContext, CallbackInfo ci) { + private void disconnectAddon(ChannelHandlerContext ctx, CallbackInfo ci) { if (packetListener instanceof PacketListenerExtensions extension) { extension.getAddon().handleDisconnect(); } @@ -93,22 +94,22 @@ private void disconnectAddon(CallbackInfo ci) { } @ModifyArg(method = "setupInboundProtocol", at = @At(value = "INVOKE", target = "Lio/netty/channel/Channel;writeAndFlush(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;")) - private Object injectFabricPacketSlitterHandlerInbound(Object transitioner, @Local(argsOnly = true) ProtocolInfo protocolInfo) { - PayloadTypeRegistryImpl payloadTypeRegistry = PayloadTypeRegistryImpl.get(protocolInfo); + private Object injectFabricPacketSlitterHandlerInbound(Object transitioner, @Local(argsOnly = true, name = "protocol") ProtocolInfo protocol) { + PayloadTypeRegistryImpl payloadTypeRegistry = PayloadTypeRegistryImpl.get(protocol); if (payloadTypeRegistry == null) { return transitioner; } return ((UnconfiguredPipelineHandler.InboundConfigurationTask) transitioner).andThen((context) -> { - FabricPacketMerger merger = new FabricPacketMerger(context.pipeline().get(PacketDecoder.class), payloadTypeRegistry, VanillaPacketTypes.get(protocolInfo)); + FabricPacketMerger merger = new FabricPacketMerger(context.pipeline().get(PacketDecoder.class), payloadTypeRegistry, VanillaPacketTypes.get(protocol)); context.pipeline().addAfter("decoder", "fabric:merger", merger); }); } @ModifyArg(method = "setupOutboundProtocol", at = @At(value = "INVOKE", target = "Lio/netty/channel/Channel;writeAndFlush(Ljava/lang/Object;)Lio/netty/channel/ChannelFuture;")) - private Object injectFabricPacketSlitterHandlerOutbound(Object transitioner, @Local(argsOnly = true) ProtocolInfo protocolInfo) { - PayloadTypeRegistryImpl payloadTypeRegistry = PayloadTypeRegistryImpl.get(protocolInfo); + private Object injectFabricPacketSlitterHandlerOutbound(Object transitioner, @Local(argsOnly = true, name = "protocol") ProtocolInfo protocol) { + PayloadTypeRegistryImpl payloadTypeRegistry = PayloadTypeRegistryImpl.get(protocol); if (payloadTypeRegistry == null) { return transitioner; diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/IdDispatchCodecMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/IdDispatchCodecMixin.java index df152cb818a..da47ae6d6cc 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/IdDispatchCodecMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/IdDispatchCodecMixin.java @@ -34,17 +34,17 @@ public abstract class IdDispatchCodecMixin implements StreamCodec { // Add the custom payload id to the error message @Inject(method = "encode(Lio/netty/buffer/ByteBuf;Ljava/lang/Object;)V", at = @At(value = "NEW", target = "(Ljava/lang/String;Ljava/lang/Throwable;)Lio/netty/handler/codec/EncoderException;")) - public void encode(B byteBuf, V packet, CallbackInfo ci, @Local(ordinal = 1) T packetType, @Local Exception e) { + public void encode(B output, V value, CallbackInfo ci, @Local(name = "type") T type, @Local(name = "e") Exception e) { CustomPacketPayload payload = null; - if (packet instanceof ServerboundCustomPayloadPacket customPayloadPacket) { + if (value instanceof ServerboundCustomPayloadPacket customPayloadPacket) { payload = customPayloadPacket.payload(); - } else if (packet instanceof ClientboundCustomPayloadPacket customPayloadPacket) { + } else if (value instanceof ClientboundCustomPayloadPacket customPayloadPacket) { payload = customPayloadPacket.payload(); } if (payload != null && payload.type() != null) { - throw new EncoderException("Failed to encode packet '%s' (%s)".formatted(packetType, payload.type().id().toString()), e); + throw new EncoderException("Failed to encode packet '%s' (%s)".formatted(type, payload.type().id().toString()), e); } } } diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/PacketEncoderMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/PacketEncoderMixin.java index 96c472806ea..59222e374fc 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/PacketEncoderMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/PacketEncoderMixin.java @@ -32,9 +32,9 @@ @Mixin(value = PacketEncoder.class, priority = 500) public class PacketEncoderMixin { @Inject(method = "encode(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/protocol/Packet;Lio/netty/buffer/ByteBuf;)V", at = @At("HEAD"), cancellable = true) - private void handlePassthroughPacket(ChannelHandlerContext channelHandlerContext, Packet packet, ByteBuf byteBuf, CallbackInfo ci) { + private void handlePassthroughPacket(ChannelHandlerContext ctx, Packet packet, ByteBuf output, CallbackInfo ci) { if (packet instanceof PassthroughPacket passthroughPacket) { - byteBuf.writeBytes(passthroughPacket.buf()); + output.writeBytes(passthroughPacket.buf()); ci.cancel(); } } diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/PlayerListMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/PlayerListMixin.java index 75a9891b07f..84b36ea2184 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/PlayerListMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/PlayerListMixin.java @@ -31,7 +31,7 @@ @Mixin(PlayerList.class) abstract class PlayerListMixin { @Inject(method = "placeNewPlayer", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/protocol/game/ClientboundPlayerAbilitiesPacket;(Lnet/minecraft/world/entity/player/Abilities;)V")) - private void handlePlayerConnection(Connection connection, ServerPlayer player, CommonListenerCookie arg, CallbackInfo ci) { + private void handlePlayerConnection(Connection connection, ServerPlayer player, CommonListenerCookie cookie, CallbackInfo ci) { ServerNetworkingImpl.getAddon(player.connection).onClientReady(); } } diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerCommonPacketListenerImplMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerCommonPacketListenerImplMixin.java index ba4c4f7afd0..12358b35a22 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerCommonPacketListenerImplMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerCommonPacketListenerImplMixin.java @@ -63,9 +63,9 @@ private void handleCustomPayloadReceivedAsync(ServerboundCustomPayloadPacket pac } @Inject(method = "handlePong", at = @At("HEAD")) - private void onPlayPong(ServerboundPongPacket packet, CallbackInfo ci) { + private void onPlayPong(ServerboundPongPacket serverboundPongPacket, CallbackInfo ci) { if (getAddon() instanceof ServerConfigurationNetworkAddon addon) { - addon.onPong(packet.getId()); + addon.onPong(serverboundPongPacket.getId()); } } } diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerConfigurationPacketListenerImplMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerConfigurationPacketListenerImplMixin.java index 2f71b02342f..c9ae7d369a2 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerConfigurationPacketListenerImplMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerConfigurationPacketListenerImplMixin.java @@ -54,7 +54,7 @@ public abstract class ServerConfigurationPacketListenerImplMixin extends ServerC private ConfigurationTask currentTask; @Shadow - protected abstract void finishCurrentTask(ConfigurationTask.Type key); + protected abstract void finishCurrentTask(ConfigurationTask.Type taskTypeToFinish); @Shadow @Final @@ -177,8 +177,8 @@ public void completeTask(ConfigurationTask.Type key) { } @WrapOperation(method = "handleConfigurationFinished", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/RegistryFriendlyByteBuf;decorator(Lnet/minecraft/core/RegistryAccess;)Ljava/util/function/Function;")) - private Function bindChannelInfo(RegistryAccess registryManager, Operation> original) { - return original.call(registryManager).andThen(registryByteBuf -> { + private Function bindChannelInfo(RegistryAccess registryAccess, Operation> original) { + return original.call(registryAccess).andThen(registryByteBuf -> { FabricRegistryFriendlyByteBuf fabricRegistryFriendlyByteBuf = (FabricRegistryFriendlyByteBuf) registryByteBuf; fabricRegistryFriendlyByteBuf.fabric_setSendableConfigurationChannels(Set.copyOf(addon.getSendableChannels())); return registryByteBuf; diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerGamePacketListenerImplMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerGamePacketListenerImplMixin.java index 20e8d1f11c5..b27bb18f22b 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerGamePacketListenerImplMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerGamePacketListenerImplMixin.java @@ -73,8 +73,8 @@ private void handleCustomPayloadReceivedAsync(ServerboundCustomPayloadPacket pac } @WrapOperation(method = "handleConfigurationAcknowledged", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/Connection;setupInboundProtocol(Lnet/minecraft/network/ProtocolInfo;Lnet/minecraft/network/PacketListener;)V")) - private void onAcknowledgeReconfiguration(Connection instance, ProtocolInfo protocolInfo, T packetListener, Operation original) { - original.call(instance, protocolInfo, packetListener); + private void onAcknowledgeReconfiguration(Connection instance, ProtocolInfo protocol, T packetListener, Operation original) { + original.call(instance, protocol, packetListener); ServerConfigurationPacketListenerImpl configPacketListener = (ServerConfigurationPacketListenerImpl) packetListener; ServerNetworkingImpl.getAddon(configPacketListener).setReconfiguring(); diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerLoginPacketListenerImplMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerLoginPacketListenerImplMixin.java index eae4c8e3298..6b74f889410 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerLoginPacketListenerImplMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerLoginPacketListenerImplMixin.java @@ -39,7 +39,7 @@ @Mixin(ServerLoginPacketListenerImpl.class) abstract class ServerLoginPacketListenerImplMixin implements PacketListenerExtensions, PacketCallbackListener { @Shadow - protected abstract void verifyLoginAndFinishConnectionSetup(GameProfile gameProfile); + protected abstract void verifyLoginAndFinishConnectionSetup(GameProfile profile); @Unique private ServerLoginNetworkAddon addon; diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerboundCustomPayloadPacketMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerboundCustomPayloadPacketMixin.java index fc9343f5700..3314edd6985 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerboundCustomPayloadPacketMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerboundCustomPayloadPacketMixin.java @@ -54,8 +54,8 @@ public class ServerboundCustomPayloadPacketMixin implements SplittablePacket, Ge target = "Lnet/minecraft/network/protocol/common/custom/CustomPacketPayload;codec(Lnet/minecraft/network/protocol/common/custom/CustomPacketPayload$FallbackProvider;Ljava/util/List;)Lnet/minecraft/network/codec/StreamCodec;" ) ) - private static StreamCodec wrapCodec(CustomPacketPayload.FallbackProvider unknownCodecFactory, List> types, Operation> original) { - StreamCodec codec = original.call(unknownCodecFactory, types); + private static StreamCodec wrapCodec(CustomPacketPayload.FallbackProvider fallback, List> types, Operation> original) { + StreamCodec codec = original.call(fallback, types); FabricCustomPayloadStreamCodec fabricCodec = (FabricCustomPayloadStreamCodec) codec; fabricCodec.fabric_setCustomPayloadTypeProvider((friendlyByteBuf, identifier) -> { // ServerboundCustomPayloadPacket does not have a separate codec for play/configuration. We know if the friendlyByteBuf is a FriendlyByteBuf we are in the play phase. diff --git a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerboundCustomQueryAnswerPacketMixin.java b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerboundCustomQueryAnswerPacketMixin.java index dc2583cd69f..219b3e56e8e 100644 --- a/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerboundCustomQueryAnswerPacketMixin.java +++ b/fabric-networking-api-v1/src/main/java/net/fabricmc/fabric/mixin/networking/ServerboundCustomQueryAnswerPacketMixin.java @@ -37,14 +37,14 @@ public class ServerboundCustomQueryAnswerPacketMixin { private static int MAX_PAYLOAD_SIZE; @Inject(method = "readPayload", at = @At("HEAD"), cancellable = true) - private static void readResponse(int queryId, FriendlyByteBuf buf, CallbackInfoReturnable cir) { - boolean hasPayload = buf.readBoolean(); + private static void readResponse(int transactionId, FriendlyByteBuf input, CallbackInfoReturnable cir) { + boolean hasPayload = input.readBoolean(); if (!hasPayload) { cir.setReturnValue(null); return; } - cir.setReturnValue(new FriendlyByteBufLoginQueryResponse(PayloadHelper.read(buf, MAX_PAYLOAD_SIZE))); + cir.setReturnValue(new FriendlyByteBufLoginQueryResponse(PayloadHelper.read(input, MAX_PAYLOAD_SIZE))); } } diff --git a/fabric-networking-api-v1/src/main/resources/fabric.mod.json b/fabric-networking-api-v1/src/main/resources/fabric.mod.json index b489bf723f9..4589af6865d 100644 --- a/fabric-networking-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-networking-api-v1/src/main/resources/fabric.mod.json @@ -26,7 +26,7 @@ }, "accessWidener": "fabric-networking-api-v1.accesswidener", "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*" }, "description": "Low-level, vanilla protocol oriented networking hooks.", diff --git a/fabric-object-builder-api-v1/src/client/java/net/fabricmc/fabric/mixin/object/builder/client/HangingSignEditScreenMixin.java b/fabric-object-builder-api-v1/src/client/java/net/fabricmc/fabric/mixin/object/builder/client/HangingSignEditScreenMixin.java index 2bc57ac409b..7b44a3c359e 100644 --- a/fabric-object-builder-api-v1/src/client/java/net/fabricmc/fabric/mixin/object/builder/client/HangingSignEditScreenMixin.java +++ b/fabric-object-builder-api-v1/src/client/java/net/fabricmc/fabric/mixin/object/builder/client/HangingSignEditScreenMixin.java @@ -33,12 +33,12 @@ private HangingSignEditScreenMixin(SignBlockEntity blockEntity, boolean filtered } @WrapOperation(method = "", at = @At(value = "INVOKE", target = "Lnet/minecraft/resources/Identifier;withDefaultNamespace(Ljava/lang/String;)Lnet/minecraft/resources/Identifier;")) - private Identifier init(String id, Operation original) { + private Identifier init(String path, Operation original) { if (woodType.name().indexOf(Identifier.NAMESPACE_SEPARATOR) != -1) { Identifier identifier = Identifier.parse(woodType.name()); - return identifier.withPath(path -> "textures/gui/hanging_signs/" + path + ".png"); + return identifier.withPath(p -> "textures/gui/hanging_signs/" + p + ".png"); } - return original.call(id); + return original.call(path); } } diff --git a/fabric-object-builder-api-v1/src/client/java/net/fabricmc/fabric/mixin/object/builder/client/SheetsMixin.java b/fabric-object-builder-api-v1/src/client/java/net/fabricmc/fabric/mixin/object/builder/client/SheetsMixin.java index 46da449642a..636d5f57c7c 100644 --- a/fabric-object-builder-api-v1/src/client/java/net/fabricmc/fabric/mixin/object/builder/client/SheetsMixin.java +++ b/fabric-object-builder-api-v1/src/client/java/net/fabricmc/fabric/mixin/object/builder/client/SheetsMixin.java @@ -37,12 +37,12 @@ private static void onReturnClinit(CallbackInfo ci) { } @Redirect(method = "createSignMaterial", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/MaterialMapper;defaultNamespaceApply(Ljava/lang/String;)Lnet/minecraft/client/resources/model/Material;")) - private static Material redirectSignVanillaId(MaterialMapper instance, String name) { - return instance.apply(Identifier.parse(name)); + private static Material redirectSignVanillaId(MaterialMapper instance, String path) { + return instance.apply(Identifier.parse(path)); } @Redirect(method = "createHangingSignMaterial", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/MaterialMapper;defaultNamespaceApply(Ljava/lang/String;)Lnet/minecraft/client/resources/model/Material;")) - private static Material redirectHangingVanillaId(MaterialMapper instance, String name) { - return instance.apply(Identifier.parse(name)); + private static Material redirectHangingVanillaId(MaterialMapper instance, String path) { + return instance.apply(Identifier.parse(path)); } } diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/BlockEntityTypeMixin.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/BlockEntityTypeMixin.java index f22242eafca..bb894ff8369 100644 --- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/BlockEntityTypeMixin.java +++ b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/BlockEntityTypeMixin.java @@ -42,7 +42,7 @@ public class BlockEntityTypeMixin implements FabricBlockE private Set validBlocks; @Inject(method = "", at = @At("RETURN")) - private void mutableBlocks(BlockEntityType.BlockEntitySupplier factory, Set blocks, CallbackInfo ci) { + private void mutableBlocks(BlockEntityType.BlockEntitySupplier factory, Set validBlocks, CallbackInfo ci) { if (!(this.validBlocks instanceof HashSet)) { this.validBlocks = new HashSet<>(this.validBlocks); } diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/DetectorRailBlockMixin.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/DetectorRailBlockMixin.java index 17bbdcfe4b1..0dd48a90b08 100644 --- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/DetectorRailBlockMixin.java +++ b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/DetectorRailBlockMixin.java @@ -38,7 +38,7 @@ @Mixin(DetectorRailBlock.class) public abstract class DetectorRailBlockMixin { @Shadow - protected abstract List getInteractingMinecartOfType(Level level, BlockPos blockPos, Class class_, Predicate predicate); + protected abstract List getInteractingMinecartOfType(Level level, BlockPos pos, Class type, Predicate containerEntitySelector); @Inject(at = @At("HEAD"), method = "getAnalogOutputSignal", cancellable = true) private void getCustomComparatorOutput(BlockState state, Level level, BlockPos pos, Direction direction, CallbackInfoReturnable cir) { diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/DimensionDataStorageMixin.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/DimensionDataStorageMixin.java index 6f8676efb5c..41e84c3cf3f 100644 --- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/DimensionDataStorageMixin.java +++ b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/DimensionDataStorageMixin.java @@ -32,11 +32,11 @@ class DimensionDataStorageMixin { * Handle mods passing a null DataFixTypes to a PersistentState.Type. */ @WrapOperation(method = "readTagFromDisk", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/datafix/DataFixTypes;update(Lcom/mojang/datafixers/DataFixer;Lnet/minecraft/nbt/CompoundTag;II)Lnet/minecraft/nbt/CompoundTag;")) - private CompoundTag handleNullDataFixType(DataFixTypes dataFixTypes, DataFixer dataFixer, CompoundTag nbt, int oldVersion, int newVersion, Operation original) { + private CompoundTag handleNullDataFixType(DataFixTypes dataFixTypes, DataFixer fixer, CompoundTag tag, int fromVersion, int toVersion, Operation original) { if (dataFixTypes == null) { - return nbt; + return tag; } - return original.call(dataFixTypes, dataFixer, nbt, oldVersion, newVersion); + return original.call(dataFixTypes, fixer, tag, fromVersion, toVersion); } } diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/EntityDataSerializersMixin.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/EntityDataSerializersMixin.java index 0d12128b134..e6b9e8341f6 100644 --- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/EntityDataSerializersMixin.java +++ b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/EntityDataSerializersMixin.java @@ -35,9 +35,9 @@ private static void storeVanillaHandlers(CallbackInfo ci) { } @Inject(method = "registerSerializer(Lnet/minecraft/network/syncher/EntityDataSerializer;)V", at = @At("HEAD")) - private static void onHeadRegister(EntityDataSerializer handler, CallbackInfo ci) { + private static void onHeadRegister(EntityDataSerializer serializer, CallbackInfo ci) { if (FabricEntityDataRegistryImpl.hasStoredVanillaHandlers() && FabricLoader.getInstance().isDevelopmentEnvironment()) { - throw new IllegalStateException("Tried to register entity data serializer " + handler + " using registerSerializer.registerSerializer. This is not allowed as it can lead to desynchronization issues; use FabricEntityDataRegistry.register instead."); + throw new IllegalStateException("Tried to register entity data serializer " + serializer + " using registerSerializer.registerSerializer. This is not allowed as it can lead to desynchronization issues; use FabricEntityDataRegistry.register instead."); } } } diff --git a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/EntityTypeBuilderMixin.java b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/EntityTypeBuilderMixin.java index ffd4da2c2fc..da128e2d248 100644 --- a/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/EntityTypeBuilderMixin.java +++ b/fabric-object-builder-api-v1/src/main/java/net/fabricmc/fabric/mixin/object/builder/EntityTypeBuilderMixin.java @@ -43,7 +43,7 @@ @Mixin(EntityType.Builder.class) public abstract class EntityTypeBuilderMixin implements FabricEntityType.Builder, FabricEntityTypeImpl.Builder { @Shadow - public abstract EntityType build(ResourceKey> resourceKey); + public abstract EntityType build(ResourceKey> name); @Unique @Nullable @@ -70,7 +70,7 @@ public EntityType.Builder canPotentiallyExecuteCommands(boolean canPotentiall } @Inject(method = "build", at = @At("RETURN")) - private void applyChildBuilders(ResourceKey> resourceKey, CallbackInfoReturnable> cir) { + private void applyChildBuilders(ResourceKey> name, CallbackInfoReturnable> cir) { if (!(cir.getReturnValue() instanceof FabricEntityTypeImpl entityType)) { throw new IllegalStateException(); } @@ -100,13 +100,13 @@ private static EntityType castMob( } @WrapOperation(method = "build", at = @At(value = "INVOKE", target = "Lnet/minecraft/util/Util;fetchChoiceType(Lcom/mojang/datafixers/DSL$TypeReference;Ljava/lang/String;)Lcom/mojang/datafixers/types/Type;")) - private @Nullable Type allowNoModdedDatafixers(DSL.TypeReference typeReference, String id, Operation> original, @Local(argsOnly = true) ResourceKey> resourceKey) { - if (!resourceKey.identifier().getNamespace().equals(Identifier.DEFAULT_NAMESPACE)) { + private @Nullable Type allowNoModdedDatafixers(DSL.TypeReference reference, String id, Operation> original, @Local(argsOnly = true, name = "name") ResourceKey> name) { + if (!name.identifier().getNamespace().equals(Identifier.DEFAULT_NAMESPACE)) { // Don't try to resolve the choice type for modded entities. return null; } - return original.call(typeReference, id); + return original.call(reference, id); } @Override diff --git a/fabric-object-builder-api-v1/src/main/resources/fabric.mod.json b/fabric-object-builder-api-v1/src/main/resources/fabric.mod.json index b35eb18652a..d7da8b86d4c 100644 --- a/fabric-object-builder-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-object-builder-api-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*", "fabric-registry-sync-v0": "*" }, diff --git a/fabric-particles-v1/src/client/java/net/fabricmc/fabric/mixin/client/particle/TerrainParticleMixin.java b/fabric-particles-v1/src/client/java/net/fabricmc/fabric/mixin/client/particle/TerrainParticleMixin.java index 4633dc23cf6..9a5fe5f584c 100644 --- a/fabric-particles-v1/src/client/java/net/fabricmc/fabric/mixin/client/particle/TerrainParticleMixin.java +++ b/fabric-particles-v1/src/client/java/net/fabricmc/fabric/mixin/client/particle/TerrainParticleMixin.java @@ -17,6 +17,7 @@ package net.fabricmc.fabric.mixin.client.particle; import com.llamalad7.mixinextras.sugar.Local; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -51,28 +52,29 @@ private TerrainParticleMixin() { at = @At("LOAD"), argsOnly = true, slice = @Slice( - from = @At(value = "FIELD", target = "Lnet/minecraft/client/particle/TerrainParticle;bCol:F", ordinal = 0), + from = @At(value = "FIELD", target = "Lnet/minecraft/client/particle/TerrainParticle;bCol:F", ordinal = 0, opcode = Opcodes.PUTFIELD), to = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;is(Ljava/lang/Object;)Z") ), - allow = 1 + allow = 1, + name = "blockState" ) - private BlockState removeUntintableParticles(BlockState state, @Local(argsOnly = true) ClientLevel level, @Local(argsOnly = true) BlockPos blockPos) { - if (!ParticleRenderEvents.ALLOW_TERRAIN_PARTICLE_TINT.invoker().allowTerrainParticleTint(state, level, blockPos)) { + private BlockState removeUntintableParticles(BlockState blockState, @Local(argsOnly = true, name = "level") ClientLevel level, @Local(argsOnly = true, name = "pos") BlockPos pos) { + if (!ParticleRenderEvents.ALLOW_TERRAIN_PARTICLE_TINT.invoker().allowTerrainParticleTint(blockState, level, pos)) { // As of 1.20.1, vanilla hardcodes grass block particles to not get tinted. return Blocks.GRASS_BLOCK.defaultBlockState(); } - return state; + return blockState; } @Redirect(method = "createTerrainParticle", at = @At(value = "NEW", target = "(Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/client/particle/TerrainParticle;")) - private static TerrainParticle constructTerrainParticle(ClientLevel level, double x, double y, double z, double velocityX, double velocityY, double velocityZ, BlockState state, BlockParticleOption parameters, ClientLevel world1, double x1, double y1, double z1, double velocityX1, double velocityY1, double velocityZ1) { - BlockPos blockPos = parameters.getBlockPos(); + private static TerrainParticle constructTerrainParticle(ClientLevel level, double x, double y, double z, double xa, double ya, double za, BlockState blockState, BlockParticleOption options, ClientLevel level1, double x1, double y1, double z1, double xAux, double yAux, double zAux) { + BlockPos blockPos = options.getBlockPos(); if (blockPos != null) { - return new TerrainParticle(level, x, y, z, velocityX, velocityY, velocityZ, state, blockPos); + return new TerrainParticle(level, x, y, z, xa, ya, za, blockState, blockPos); } else { - return new TerrainParticle(level, x, y, z, velocityX, velocityY, velocityZ, state); + return new TerrainParticle(level, x, y, z, xa, ya, za, blockState); } } } diff --git a/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/BrushItemMixin.java b/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/BrushItemMixin.java index 90e06f81b22..37810a4aa9c 100644 --- a/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/BrushItemMixin.java +++ b/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/BrushItemMixin.java @@ -33,7 +33,7 @@ @Mixin(BrushItem.class) abstract class BrushItemMixin { @ModifyExpressionValue(method = "spawnDustParticles", at = @At(value = "NEW", target = "(Lnet/minecraft/core/particles/ParticleType;Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/core/particles/BlockParticleOption;")) - private BlockParticleOption modifyBlockStateParticleOption(BlockParticleOption original, Level level, BlockHitResult hitResult, BlockState state, Vec3 userRotation, HumanoidArm arm) { + private BlockParticleOption modifyBlockStateParticleOption(BlockParticleOption original, Level level, BlockHitResult hitResult, BlockState state, Vec3 viewVector, HumanoidArm brushingArm) { ((BlockParticleOptionExtension) original).fabric_setBlockPos(hitResult.getBlockPos()); return original; } diff --git a/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/EntityMixin.java b/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/EntityMixin.java index e87e624e56a..cd048937565 100644 --- a/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/EntityMixin.java +++ b/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/EntityMixin.java @@ -30,8 +30,8 @@ @Mixin(Entity.class) abstract class EntityMixin { @ModifyExpressionValue(method = "spawnSprintParticle", at = @At(value = "NEW", target = "(Lnet/minecraft/core/particles/ParticleType;Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/core/particles/BlockParticleOption;")) - private BlockParticleOption modifyBlockStateParticleOption(BlockParticleOption original, @Local(ordinal = 0) BlockPos blockPos) { - ((BlockParticleOptionExtension) original).fabric_setBlockPos(blockPos); + private BlockParticleOption modifyBlockStateParticleOption(BlockParticleOption original, @Local(name = "pos") BlockPos pos) { + ((BlockParticleOptionExtension) original).fabric_setBlockPos(pos); return original; } } diff --git a/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/LivingEntityMixin.java b/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/LivingEntityMixin.java index 4092a6a7162..352f9618d7e 100644 --- a/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/LivingEntityMixin.java +++ b/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/LivingEntityMixin.java @@ -30,8 +30,8 @@ @Mixin(LivingEntity.class) abstract class LivingEntityMixin { @ModifyExpressionValue(method = "checkFallDamage", at = @At(value = "NEW", target = "(Lnet/minecraft/core/particles/ParticleType;Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/core/particles/BlockParticleOption;")) - private BlockParticleOption modifyBlockStateParticleOption(BlockParticleOption original, double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) { - ((BlockParticleOptionExtension) original).fabric_setBlockPos(landedPosition); + private BlockParticleOption modifyBlockStateParticleOption(BlockParticleOption original, double ya, boolean onGround, BlockState onState, BlockPos pos) { + ((BlockParticleOptionExtension) original).fabric_setBlockPos(pos); return original; } } diff --git a/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/ServerPlayerMixin.java b/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/ServerPlayerMixin.java index be25509efea..9044cec0c99 100644 --- a/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/ServerPlayerMixin.java +++ b/fabric-particles-v1/src/main/java/net/fabricmc/fabric/mixin/particle/ServerPlayerMixin.java @@ -30,8 +30,8 @@ @Mixin(ServerPlayer.class) abstract class ServerPlayerMixin { @ModifyExpressionValue(method = "checkFallDamage", at = @At(value = "NEW", target = "(Lnet/minecraft/core/particles/ParticleType;Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/core/particles/BlockParticleOption;")) - private BlockParticleOption modifyBlockStateParticleOption(BlockParticleOption original, double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) { - ((BlockParticleOptionExtension) original).fabric_setBlockPos(landedPosition); + private BlockParticleOption modifyBlockStateParticleOption(BlockParticleOption original, double ya, boolean onGround, BlockState onState, BlockPos pos) { + ((BlockParticleOptionExtension) original).fabric_setBlockPos(pos); return original; } } diff --git a/fabric-particles-v1/src/main/resources/fabric.mod.json b/fabric-particles-v1/src/main/resources/fabric.mod.json index 6efffbdb32b..b49a4acf74c 100644 --- a/fabric-particles-v1/src/main/resources/fabric.mod.json +++ b/fabric-particles-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-networking-api-v1": "*" }, "entrypoints": { diff --git a/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/RecipeManagerMixin.java b/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/RecipeManagerMixin.java index 3a905393a0f..b47355f10ec 100644 --- a/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/RecipeManagerMixin.java +++ b/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/RecipeManagerMixin.java @@ -48,8 +48,8 @@ public abstract class RecipeManagerMixin implements FabricRecipeManager { private SynchronizedRecipes synchronizedRecipes = SynchronizedRecipesImpl.EMPTY; @Inject(method = "apply(Lnet/minecraft/world/item/crafting/RecipeMap;Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/util/profiling/ProfilerFiller;)V", at = @At("HEAD")) - private void updateSynchronizedRecipes(RecipeMap preparedRecipes, ResourceManager resourceManager, ProfilerFiller profiler, CallbackInfo ci) { - this.synchronizedRecipes = new SynchronizedRecipesImpl(preparedRecipes); + private void updateSynchronizedRecipes(RecipeMap recipes, ResourceManager manager, ProfilerFiller profiler, CallbackInfo ci) { + this.synchronizedRecipes = new SynchronizedRecipesImpl(recipes); } @Override diff --git a/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/IngredientMixin.java b/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/IngredientMixin.java index 2f6718053dd..3a168f84d58 100644 --- a/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/IngredientMixin.java +++ b/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/IngredientMixin.java @@ -78,7 +78,7 @@ private static StreamCodec> useOpt return new OptionalCustomIngredientStreamCodec(original); } - @Inject(method = "", at = @At("TAIL"), cancellable = true) + @Inject(method = "", at = @At("TAIL")) private static void injectCodec(CallbackInfo ci) { Codec customIngredientCodec = CustomIngredientImpl.CODEC.dispatch( CustomIngredientImpl.TYPE_KEY, @@ -105,8 +105,8 @@ private static void onGetEntries(Ingredient ingredient, CallbackInfoReturnable cir) { - if (obj instanceof CustomIngredientImpl) { + private void onHeadEquals(Object o, CallbackInfoReturnable cir) { + if (o instanceof CustomIngredientImpl) { // This will only get called when this isn't custom and other is custom, in which case the // ingredients can never be equal. cir.setReturnValue(false); diff --git a/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/PacketEncoderMixin.java b/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/PacketEncoderMixin.java index d3c8c6ab9cd..c296e93fffb 100644 --- a/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/PacketEncoderMixin.java +++ b/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/PacketEncoderMixin.java @@ -39,8 +39,8 @@ public class PacketEncoderMixin { ), method = "encode(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/protocol/Packet;Lio/netty/buffer/ByteBuf;)V" ) - private void capturePacketEncoder(ChannelHandlerContext channelHandlerContext, Packet packet, ByteBuf byteBuf, CallbackInfo ci) { - ChannelHandler channelHandler = channelHandlerContext.pipeline().get("packet_handler"); + private void capturePacketEncoder(ChannelHandlerContext ctx, Packet packet, ByteBuf output, CallbackInfo ci) { + ChannelHandler channelHandler = ctx.pipeline().get("packet_handler"); if (channelHandler instanceof SupportedIngredientsConnection) { CustomIngredientSync.CURRENT_SUPPORTED_INGREDIENTS.set(((SupportedIngredientsConnection) channelHandler).fabric_getSupportedCustomIngredients()); @@ -64,7 +64,7 @@ private void capturePacketEncoder(ChannelHandlerContext channelHandlerContext, P }, method = "encode(Lio/netty/channel/ChannelHandlerContext;Lnet/minecraft/network/protocol/Packet;Lio/netty/buffer/ByteBuf;)V" ) - private void releasePacketEncoder(ChannelHandlerContext channelHandlerContext, Packet packet, ByteBuf byteBuf, CallbackInfo ci) { + private void releasePacketEncoder(ChannelHandlerContext ctx, Packet packet, ByteBuf output, CallbackInfo ci) { CustomIngredientSync.CURRENT_SUPPORTED_INGREDIENTS.set(null); } } diff --git a/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/ShapelessRecipeMixin.java b/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/ShapelessRecipeMixin.java index 590576875be..125109da3f1 100644 --- a/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/ShapelessRecipeMixin.java +++ b/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/ingredient/ShapelessRecipeMixin.java @@ -41,7 +41,7 @@ public class ShapelessRecipeMixin { @Final @Shadow - List ingredients; + private List ingredients; @Unique private boolean fabric_requiresTesting = false; @@ -56,12 +56,12 @@ private void cacheRequiresTesting(String group, CraftingBookCategory category, I } @Inject(at = @At("HEAD"), method = "matches(Lnet/minecraft/world/item/crafting/CraftingInput;Lnet/minecraft/world/level/Level;)Z", cancellable = true) - public void customIngredientMatch(CraftingInput recipeInput, Level level, CallbackInfoReturnable cir) { + public void customIngredientMatch(CraftingInput input, Level level, CallbackInfoReturnable cir) { if (fabric_requiresTesting) { - List nonEmptyStacks = new ArrayList<>(recipeInput.ingredientCount()); + List nonEmptyStacks = new ArrayList<>(input.ingredientCount()); - for (int i = 0; i < recipeInput.size(); ++i) { - ItemStack stack = recipeInput.getItem(i); + for (int i = 0; i < input.size(); ++i) { + ItemStack stack = input.getItem(i); if (!stack.isEmpty()) { nonEmptyStacks.add(stack); diff --git a/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/sync/RecipeMapMixin.java b/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/sync/RecipeMapMixin.java index 18f771123ca..6dd8c88b847 100644 --- a/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/sync/RecipeMapMixin.java +++ b/fabric-recipe-api-v1/src/main/java/net/fabricmc/fabric/mixin/recipe/sync/RecipeMapMixin.java @@ -57,12 +57,12 @@ private static void provideSerializerMap(Iterable> recipes, Call } @Inject(method = "create", at = @At(value = "INVOKE", target = "Lcom/google/common/collect/ImmutableMap$Builder;put(Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableMap$Builder;")) - private static void fillSerializerMap(Iterable> recipes, CallbackInfoReturnable cir, @Local RecipeHolder entry, + private static void fillSerializerMap(Iterable> recipes, CallbackInfoReturnable cir, @Local(name = "recipe") RecipeHolder recipe, @Share("bySerializer") LocalRef, List>>> bySerializer) { - List> list = bySerializer.get().get(entry.value().getSerializer()); + List> list = bySerializer.get().get(recipe.value().getSerializer()); if (list != null) { - list.add(entry); + list.add(recipe); } } diff --git a/fabric-recipe-api-v1/src/main/resources/fabric.mod.json b/fabric-recipe-api-v1/src/main/resources/fabric.mod.json index db780b5377a..8f9c5efb6aa 100644 --- a/fabric-recipe-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-recipe-api-v1/src/main/resources/fabric.mod.json @@ -24,7 +24,7 @@ ], "accessWidener": "fabric-recipe-api-v1.accesswidener", "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-networking-api-v1": "*", "fabric-lifecycle-events-v1": "*" }, diff --git a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/MinecraftMixin.java b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/MinecraftMixin.java index f9c0c14e2ba..efcbf389549 100644 --- a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/MinecraftMixin.java +++ b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/MinecraftMixin.java @@ -44,7 +44,7 @@ public class MinecraftMixin { // Unmap the registry before loading a new SP/MP setup. @Inject(at = @At("RETURN"), method = "disconnect(Lnet/minecraft/client/gui/screens/Screen;ZZ)V") - public void disconnectAfter(Screen disconnectionScreen, boolean bl, boolean bl2, CallbackInfo ci) { + public void disconnectAfter(Screen screen, boolean keepResourcePacks, boolean stopSound, CallbackInfo ci) { try { unmap(); } catch (RemapException e) { diff --git a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/RegistryDataCollectorMixin.java b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/RegistryDataCollectorMixin.java index 42c3953123b..66224b6be94 100644 --- a/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/RegistryDataCollectorMixin.java +++ b/fabric-registry-sync-v0/src/client/java/net/fabricmc/fabric/mixin/registry/sync/client/RegistryDataCollectorMixin.java @@ -42,8 +42,8 @@ public class RegistryDataCollectorMixin { * Keep the pre-24w04a behavior of removing empty registries, even if the client knows that registry. */ @WrapOperation(method = "loadNewElementsAndTags", at = @At(value = "FIELD", target = "Lnet/minecraft/resources/RegistryDataLoader;SYNCHRONIZED_REGISTRIES:Ljava/util/List;", opcode = Opcodes.GETSTATIC)) - private List> skipEmptyRegistries(Operation>> operation, ResourceProvider resourceFactory, @Coerce RegistryDataCollectorContentsCollectorAccessor storage, boolean bl) { - Map>, List> dynamicRegistries = storage.getElements(); + private List> skipEmptyRegistries(Operation>> operation, ResourceProvider knownDataSource, @Coerce RegistryDataCollectorContentsCollectorAccessor contentsCollector, boolean tagsForSynchronizedRegistriesOnly) { + Map>, List> dynamicRegistries = contentsCollector.getElements(); List> result = new ArrayList<>(operation.call()); result.removeIf(entry -> DynamicRegistriesImpl.SKIP_EMPTY_SYNC_REGISTRIES.contains(entry.key()) && !dynamicRegistries.containsKey(entry.key())); diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MappedRegistryMixin.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MappedRegistryMixin.java index cc919f28c34..51cdaa237d4 100644 --- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MappedRegistryMixin.java +++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/MappedRegistryMixin.java @@ -91,10 +91,10 @@ public abstract class MappedRegistryMixin implements WritableRegistry, Rem private Map, Holder.Reference> byKey; @Shadow - public abstract Optional> getResourceKey(T entry); + public abstract Optional> getResourceKey(T thing); @Shadow - public abstract @Nullable T getValue(@Nullable Identifier id); + public abstract @Nullable T getValue(@Nullable Identifier key); @Shadow public abstract ResourceKey> key(); @@ -117,7 +117,7 @@ public abstract class MappedRegistryMixin implements WritableRegistry, Rem private Map aliases = new HashMap<>(); @Shadow - public abstract boolean containsKey(Identifier id); + public abstract boolean containsKey(Identifier key); @Shadow public abstract String toString(); @@ -140,7 +140,7 @@ public Event> fabric_getRemapEvent() { } @Inject(method = "(Lnet/minecraft/resources/ResourceKey;Lcom/mojang/serialization/Lifecycle;Z)V", at = @At("RETURN")) - private void init(ResourceKey key, Lifecycle lifecycle, boolean intrusive, CallbackInfo ci) { + private void init(ResourceKey key, Lifecycle initialLifecycle, boolean intrusiveHolders, CallbackInfo ci) { fabric_addObjectEvent = EventFactory.createArrayBacked(RegistryEntryAddedCallback.class, (callbacks) -> (rawId, id, object) -> { for (RegistryEntryAddedCallback callback : callbacks) { @@ -183,13 +183,13 @@ private void onChange(ResourceKey resourceKey) { } @Inject(method = "register", at = @At("RETURN")) - private void set(ResourceKey key, T entry, RegistrationInfo arg, CallbackInfoReturnable> info) { + private void set(ResourceKey key, T value, RegistrationInfo registrationInfo, CallbackInfoReturnable> info) { // We need to restore the 1.19 behavior of binding the value to references immediately. // Unfrozen registries cannot be interacted with otherwise, because the references would throw when // trying to access their values. - info.getReturnValue().bindValue(entry); + info.getReturnValue().bindValue(value); - fabric_addObjectEvent.invoker().onEntryAdded(toId.getInt(entry), key.identifier(), entry); + fabric_addObjectEvent.invoker().onEntryAdded(toId.getInt(value), key.identifier(), value); onChange(key); } @@ -456,7 +456,7 @@ public void addAlias(Identifier old, Identifier newId) { method = { "get(Lnet/minecraft/resources/Identifier;)Ljava/util/Optional;", "getValue(Lnet/minecraft/resources/Identifier;)Ljava/lang/Object;", - "containsKey" + "containsKey(Lnet/minecraft/resources/Identifier;)Z" }, at = @At("HEAD"), argsOnly = true diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/RegistriesMixin.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/RegistriesMixin.java index 9bc5bf5c407..6be9723f7ca 100644 --- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/RegistriesMixin.java +++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/RegistriesMixin.java @@ -31,8 +31,8 @@ @Mixin(Registries.class) public class RegistriesMixin { @ModifyReturnValue(method = "elementsDirPath", at = @At("RETURN")) - private static String prependDirectoryWithNamespace(String original, @Local(argsOnly = true) ResourceKey> registryRef) { - Identifier id = registryRef.identifier(); + private static String prependDirectoryWithNamespace(String original, @Local(argsOnly = true, name = "registryKey") ResourceKey> registryKey) { + Identifier id = registryKey.identifier(); if (!id.getNamespace().equals(Identifier.DEFAULT_NAMESPACE)) { return id.getNamespace() + "/" + id.getPath(); @@ -42,8 +42,8 @@ private static String prependDirectoryWithNamespace(String original, @Local(args } @ModifyReturnValue(method = "tagsDirPath", at = @At("RETURN")) - private static String prependTagDirectoryWithNamespace(String original, @Local(argsOnly = true) ResourceKey> registryRef) { - Identifier id = registryRef.identifier(); + private static String prependTagDirectoryWithNamespace(String original, @Local(argsOnly = true, name = "registryKey") ResourceKey> registryKey) { + Identifier id = registryKey.identifier(); if (!id.getNamespace().equals(Identifier.DEFAULT_NAMESPACE)) { return "tags/" + id.getNamespace() + "/" + id.getPath(); diff --git a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/RegistrySynchronizationMixin.java b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/RegistrySynchronizationMixin.java index 8f837528397..3ae54ae4880 100644 --- a/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/RegistrySynchronizationMixin.java +++ b/fabric-registry-sync-v0/src/main/java/net/fabricmc/fabric/mixin/registry/sync/RegistrySynchronizationMixin.java @@ -42,10 +42,10 @@ abstract class RegistrySynchronizationMixin { */ @Dynamic("lambda$ownedNetworkableRegistries$0: Stream.filter in ownedNetworkableRegistries") @Inject(method = "lambda$ownedNetworkableRegistries$0", at = @At("HEAD"), cancellable = true) - private static void filterNonSyncedEntries(RegistryAccess.RegistryEntry entry, CallbackInfoReturnable cir) { - boolean canSkip = DynamicRegistriesImpl.SKIP_EMPTY_SYNC_REGISTRIES.contains(entry.key()); + private static void filterNonSyncedEntries(RegistryAccess.RegistryEntry e, CallbackInfoReturnable cir) { + boolean canSkip = DynamicRegistriesImpl.SKIP_EMPTY_SYNC_REGISTRIES.contains(e.key()); - if (canSkip && entry.value().size() == 0) { + if (canSkip && e.value().size() == 0) { cir.setReturnValue(false); } } @@ -55,7 +55,7 @@ private static void filterNonSyncedEntries(RegistryAccess.RegistryEntry entry */ @Dynamic("lambda$packRegistry$0: Optional.ifPresent in packRegistry") @Inject(method = "lambda$packRegistry$0", at = @At("HEAD"), cancellable = true) - private static void filterNonSyncedEntriesAgain(Set set, RegistryDataLoader.RegistryData entry, DynamicOps dynamicOps, BiConsumer biConsumer, Registry registry, CallbackInfo ci) { + private static void filterNonSyncedEntriesAgain(Set clientKnownPacks, RegistryDataLoader.RegistryData registryData, DynamicOps ops, BiConsumer output, Registry registry, CallbackInfo ci) { boolean canSkip = DynamicRegistriesImpl.SKIP_EMPTY_SYNC_REGISTRIES.contains(registry.key()); if (canSkip && registry.size() == 0) { diff --git a/fabric-registry-sync-v0/src/main/resources/fabric.mod.json b/fabric-registry-sync-v0/src/main/resources/fabric.mod.json index 97396071024..4c3a1fdd4d5 100644 --- a/fabric-registry-sync-v0/src/main/resources/fabric.mod.json +++ b/fabric-registry-sync-v0/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*", "fabric-networking-api-v1": "*" }, diff --git a/fabric-registry-sync-v0/src/testmod/java/net/fabricmc/fabric/test/registry/sync/mixin/ByteBufCodecsMixin.java b/fabric-registry-sync-v0/src/testmod/java/net/fabricmc/fabric/test/registry/sync/mixin/ByteBufCodecsMixin.java index 877a5ce3275..ed117c1512f 100644 --- a/fabric-registry-sync-v0/src/testmod/java/net/fabricmc/fabric/test/registry/sync/mixin/ByteBufCodecsMixin.java +++ b/fabric-registry-sync-v0/src/testmod/java/net/fabricmc/fabric/test/registry/sync/mixin/ByteBufCodecsMixin.java @@ -34,8 +34,8 @@ @Mixin(ByteBufCodecs.class) public interface ByteBufCodecsMixin { - @Inject(method = "registry", at = @At("HEAD")) - private static void checkSynced(ResourceKey> registry, Function, IdMap> registryTransformer, CallbackInfoReturnable> cir) { - RegistrySyncTest.checkSyncedRegistry(registry); + @Inject(method = "registry(Lnet/minecraft/resources/ResourceKey;Ljava/util/function/Function;)Lnet/minecraft/network/codec/StreamCodec;", at = @At("HEAD")) + private static void checkSynced(ResourceKey> registryKey, Function, IdMap> mapExtractor, CallbackInfoReturnable> cir) { + RegistrySyncTest.checkSyncedRegistry(registryKey); } } diff --git a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/model/SimpleModelWrapperMixin.java b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/model/SimpleModelWrapperMixin.java index 5181d20dbf1..293526b7bdc 100644 --- a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/model/SimpleModelWrapperMixin.java +++ b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/model/SimpleModelWrapperMixin.java @@ -54,7 +54,7 @@ abstract class SimpleModelWrapperMixin implements BlockModelPart { private boolean useAmbientOcclusion; @Inject(method = "bake(Lnet/minecraft/client/resources/model/ModelBaker;Lnet/minecraft/resources/Identifier;Lnet/minecraft/client/resources/model/ModelState;)Lnet/minecraft/client/renderer/block/model/BlockModelPart;", at = @At(value = "INVOKE", target = "net/minecraft/client/resources/model/QuadCollection.getAll()Ljava/util/List;")) - private static void validateMeshAtlas(final ModelBaker modelBakery, final Identifier location, final ModelState state, CallbackInfoReturnable cir, @Local QuadCollection geometry, @Local LocalRef> forbiddenSpritesRef) { + private static void validateMeshAtlas(final ModelBaker modelBakery, final Identifier location, final ModelState state, CallbackInfoReturnable cir, @Local(name = "geometry") QuadCollection geometry, @Local(name = "forbiddenSprites") LocalRef> forbiddenSpritesRef) { if (geometry instanceof MeshQuadCollection meshGeometry) { meshGeometry.getMesh().forEach(quad -> { if (quad.atlas() != QuadAtlas.BLOCK) { diff --git a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/particle/BlockMarkerMixin.java b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/particle/BlockMarkerMixin.java index 827e9c326ae..a3147a511e3 100644 --- a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/particle/BlockMarkerMixin.java +++ b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/particle/BlockMarkerMixin.java @@ -30,7 +30,7 @@ @Mixin(BlockMarker.class) abstract class BlockMarkerMixin { @Redirect(method = "(Lnet/minecraft/client/multiplayer/ClientLevel;DDDLnet/minecraft/world/level/block/state/BlockState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/block/BlockModelShaper;getParticleIcon(Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;")) - private static TextureAtlasSprite getParticleIconProxy(BlockModelShaper models, BlockState state, ClientLevel level, double x, double y, double z, BlockState state1) { - return models.getParticleIcon(state, level, BlockPos.containing(x, y, z)); + private static TextureAtlasSprite getParticleIconProxy(BlockModelShaper models, BlockState blockState, ClientLevel level, double x, double y, double z, BlockState state) { + return models.getParticleIcon(blockState, level, BlockPos.containing(x, y, z)); } } diff --git a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/particle/ScreenEffectRendererMixin.java b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/particle/ScreenEffectRendererMixin.java index a279f9b5757..889bf45c073 100644 --- a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/particle/ScreenEffectRendererMixin.java +++ b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/particle/ScreenEffectRendererMixin.java @@ -39,20 +39,20 @@ abstract class ScreenEffectRendererMixin { private static BlockPos pos; @Redirect(method = "renderScreenEffect", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/block/BlockModelShaper;getParticleIcon(Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;")) - private static TextureAtlasSprite getParticleIconProxy(BlockModelShaper models, BlockState state, @Local Player player) { + private static TextureAtlasSprite getParticleIconProxy(BlockModelShaper models, BlockState blockState, @Local(name = "player") Player player) { if (pos != null) { - TextureAtlasSprite sprite = models.getParticleIcon(state, player.level(), pos); + TextureAtlasSprite sprite = models.getParticleIcon(blockState, player.level(), pos); pos = null; return sprite; } - return models.getParticleIcon(state); + return models.getParticleIcon(blockState); } @Inject(method = "getViewBlockingState", at = @At("RETURN")) - private static void onReturnGetInWallBlockState(CallbackInfoReturnable<@Nullable BlockState> cir, @Local BlockPos.MutableBlockPos mutable) { + private static void onReturnGetInWallBlockState(CallbackInfoReturnable<@Nullable BlockState> cir, @Local(name = "testPos") BlockPos.MutableBlockPos testPos) { if (cir.getReturnValue() != null) { - pos = mutable.immutable(); + pos = testPos.immutable(); } else { pos = null; } diff --git a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/particle/TerrainParticleMixin.java b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/particle/TerrainParticleMixin.java index 0c934c04ee7..bc7045bac8a 100644 --- a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/particle/TerrainParticleMixin.java +++ b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/particle/TerrainParticleMixin.java @@ -30,7 +30,7 @@ @Mixin(TerrainParticle.class) abstract class TerrainParticleMixin { @Redirect(method = "(Lnet/minecraft/client/multiplayer/ClientLevel;DDDDDDLnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/BlockPos;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/block/BlockModelShaper;getParticleIcon(Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;")) - private static TextureAtlasSprite getParticleIconProxy(BlockModelShaper models, BlockState state, ClientLevel level, double x, double y, double z, double velocityX, double velocityY, double velocityZ, BlockState state1, BlockPos blockPos) { - return models.getParticleIcon(state, level, blockPos); + private static TextureAtlasSprite getParticleIconProxy(BlockModelShaper models, BlockState blockState, ClientLevel level, double x, double y, double z, double xa, double ya, double za, BlockState blockState1, BlockPos pos) { + return models.getParticleIcon(blockState, level, pos); } } diff --git a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/render/ItemFrameRendererMixin.java b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/render/ItemFrameRendererMixin.java index e943455ddf1..b0e9e4a91ad 100644 --- a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/render/ItemFrameRendererMixin.java +++ b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/render/ItemFrameRendererMixin.java @@ -33,10 +33,10 @@ @Mixin(ItemFrameRenderer.class) abstract class ItemFrameRendererMixin { // Provide the BlockState as context. - @Redirect(method = "submit", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitBlockModel(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;Lnet/minecraft/client/renderer/block/model/BlockStateModel;FFFIII)V")) - private void renderProxy(SubmitNodeCollector submitNodeCollector, PoseStack poseStack, RenderType renderType, BlockStateModel model, float r, float g, float b, int light, int overlay, int outlineColor, @Local BlockState blockState) { + @Redirect(method = "submit(Lnet/minecraft/client/renderer/entity/state/ItemFrameRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitBlockModel(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;Lnet/minecraft/client/renderer/block/model/BlockStateModel;FFFIII)V")) + private void renderProxy(SubmitNodeCollector submitNodeCollector, PoseStack poseStack, RenderType renderType, BlockStateModel model, float r, float g, float b, int light, int overlay, int outlineColor, @Local(name = "fakeBlockState") BlockState fakeBlockState) { // The vertex consumer is for a special layer that renders solid, but vanilla has no equivalent // cutout/translucent layers that we can use here without risking compatibility. - submitNodeCollector.submitBlockStateModel(poseStack, blockLayer -> renderType, model, r, g, b, light, overlay, outlineColor, EmptyBlockAndTintGetter.INSTANCE, BlockPos.ZERO, blockState); + submitNodeCollector.submitBlockStateModel(poseStack, blockLayer -> renderType, model, r, g, b, light, overlay, outlineColor, EmptyBlockAndTintGetter.INSTANCE, BlockPos.ZERO, fakeBlockState); } } diff --git a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/render/MushroomCowMushroomLayerMixin.java b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/render/MushroomCowMushroomLayerMixin.java index c8a7ae3e68d..371748bea01 100644 --- a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/render/MushroomCowMushroomLayerMixin.java +++ b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/render/MushroomCowMushroomLayerMixin.java @@ -34,7 +34,7 @@ abstract class MushroomCowMushroomLayerMixin { // Fix tinted quads being rendered completely black and provide the BlockState as context. @Redirect(method = "submitMushroomBlock", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitBlockModel(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;Lnet/minecraft/client/renderer/block/model/BlockStateModel;FFFIII)V")) - private void renderProxy(SubmitNodeCollector submitNodeCollector, PoseStack poseStack, RenderType renderType, BlockStateModel model, float r, float g, float b, int light, int overlay, int outlineColor, @Local BlockState blockState) { - submitNodeCollector.submitBlockStateModel(poseStack, _ -> renderType, model, 1, 1, 1, light, overlay, outlineColor, EmptyBlockAndTintGetter.INSTANCE, BlockPos.ZERO, blockState); + private void renderProxy(SubmitNodeCollector submitNodeCollector, PoseStack poseStack, RenderType renderType, BlockStateModel model, float r, float g, float b, int light, int overlay, int outlineColor, @Local(argsOnly = true, name = "mushroomBlockState") BlockState mushroomBlockState) { + submitNodeCollector.submitBlockStateModel(poseStack, _ -> renderType, model, 1, 1, 1, light, overlay, outlineColor, EmptyBlockAndTintGetter.INSTANCE, BlockPos.ZERO, mushroomBlockState); } } diff --git a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/render/SnowGolemHeadLayerMixin.java b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/render/SnowGolemHeadLayerMixin.java index cd036fd6c0e..24307ef0785 100644 --- a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/render/SnowGolemHeadLayerMixin.java +++ b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/block/render/SnowGolemHeadLayerMixin.java @@ -35,15 +35,15 @@ @Mixin(SnowGolemHeadLayer.class) abstract class SnowGolemHeadLayerMixin { - @Redirect(method = "submit", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitBlockModel(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;Lnet/minecraft/client/renderer/block/model/BlockStateModel;FFFIII)V")) - private void renderProxy(SubmitNodeCollector submitNodeCollector, PoseStack poseStack, RenderType renderType, BlockStateModel model, float r, float g, float b, int light, int overlay, int outlineColor, @Local SnowGolemRenderState renderState, @Local BlockState blockState) { + @Redirect(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/SnowGolemRenderState;FF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/SubmitNodeCollector;submitBlockModel(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/rendertype/RenderType;Lnet/minecraft/client/renderer/block/model/BlockStateModel;FFFIII)V")) + private void renderProxy(SubmitNodeCollector submitNodeCollector, PoseStack poseStack, RenderType renderType, BlockStateModel model, float r, float g, float b, int light, int overlay, int outlineColor, @Local(argsOnly = true, name = "state") SnowGolemRenderState state, @Local(name = "pumpkinBlockState") BlockState pumpkinBlockState) { // If true, the chunk layer is an outline chunk layer, and we want all geometry to use this chunk layer. - if (renderState.appearsGlowing() && renderState.isInvisible) { + if (state.appearsGlowing() && state.isInvisible) { // Fix tinted quads being rendered completely black and provide the BlockState as context. - submitNodeCollector.submitBlockStateModel(poseStack, _ -> renderType, model, 1, 1, 1, light, overlay, outlineColor, EmptyBlockAndTintGetter.INSTANCE, BlockPos.ZERO, blockState); + submitNodeCollector.submitBlockStateModel(poseStack, _ -> renderType, model, 1, 1, 1, light, overlay, outlineColor, EmptyBlockAndTintGetter.INSTANCE, BlockPos.ZERO, pumpkinBlockState); } else { // Support multi-chunk layer models, fix tinted quads being rendered completely black, and provide the BlockState as context. - submitNodeCollector.submitBlockStateModel(poseStack, ChunkSectionLayerHelper::getEntityBlockLayer, model, 1, 1, 1, light, overlay, outlineColor, EmptyBlockAndTintGetter.INSTANCE, BlockPos.ZERO, blockState); + submitNodeCollector.submitBlockStateModel(poseStack, ChunkSectionLayerHelper::getEntityBlockLayer, model, 1, 1, 1, light, overlay, outlineColor, EmptyBlockAndTintGetter.INSTANCE, BlockPos.ZERO, pumpkinBlockState); } } } diff --git a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/item/BlockModelWrapperMixin.java b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/item/BlockModelWrapperMixin.java index 1f6fd00b345..f673e5234b9 100644 --- a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/item/BlockModelWrapperMixin.java +++ b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/item/BlockModelWrapperMixin.java @@ -56,7 +56,7 @@ abstract class BlockModelWrapperMixin implements ItemModel, BlockModelWrapperExt private Mesh mesh; @Inject(method = "update", at = @At("RETURN")) - private void onReturnUpdate(final ItemStackRenderState output, final ItemStack item, final ItemModelResolver resolver, final ItemDisplayContext displayContext, final @Nullable ClientLevel level, final @Nullable ItemOwner owner, final int seed, CallbackInfo ci, @Local ItemStackRenderState.LayerRenderState layer) { + private void onReturnUpdate(final ItemStackRenderState output, final ItemStack item, final ItemModelResolver resolver, final ItemDisplayContext displayContext, final @Nullable ClientLevel level, final @Nullable ItemOwner owner, final int seed, CallbackInfo ci, @Local(name = "layer") ItemStackRenderState.LayerRenderState layer) { if (mesh != null) { // This logic matches that of ITEM_RENDER_TYPE_GETTER and BLOCK_RENDER_TYPE_GETTER ChunkSectionLayer defaultSectionLayer; diff --git a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/sprite/TextureAtlasMixin.java b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/sprite/TextureAtlasMixin.java index 9548f015b50..c7d38c1debf 100644 --- a/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/sprite/TextureAtlasMixin.java +++ b/fabric-renderer-api-v1/src/client/java/net/fabricmc/fabric/mixin/renderer/client/sprite/TextureAtlasMixin.java @@ -19,7 +19,6 @@ import java.util.Map; import org.jspecify.annotations.Nullable; -import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -40,10 +39,8 @@ @Mixin(TextureAtlas.class) abstract class TextureAtlasMixin implements FabricTextureAtlas { @Shadow - @Final private Map texturesByName; @Shadow - @Final @Nullable private TextureAtlasSprite missingSprite; @@ -52,10 +49,10 @@ abstract class TextureAtlasMixin implements FabricTextureAtlas { private volatile SpriteFinder spriteFinder; @Inject(at = @At("RETURN"), method = "upload") - private void uploadHook(SpriteLoader.Preparations stitchResult, CallbackInfo ci) { + private void uploadHook(SpriteLoader.Preparations preparations, CallbackInfo ci) { // Clear this atlas' old finder. If the finder was already initialized in the stitch result, reuse it for this // atlas. - spriteFinder = ((SpriteLoaderPreparationsExtension) (Object) stitchResult).fabric_spriteFinderNullable(); + spriteFinder = ((SpriteLoaderPreparationsExtension) (Object) preparations).fabric_spriteFinderNullable(); } @Override diff --git a/fabric-renderer-api-v1/src/client/resources/fabric.mod.json b/fabric-renderer-api-v1/src/client/resources/fabric.mod.json index de7abb4d0ad..c039ec23504 100644 --- a/fabric-renderer-api-v1/src/client/resources/fabric.mod.json +++ b/fabric-renderer-api-v1/src/client/resources/fabric.mod.json @@ -21,7 +21,7 @@ ] }, "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "minecraft": ">=1.21.5-beta.1", "fabric-api-base": "*", "fabric-rendering-v1": "*", diff --git a/fabric-renderer-indigo/src/client/java/net/fabricmc/fabric/mixin/client/indigo/renderer/BlockRenderDispatcherMixin.java b/fabric-renderer-indigo/src/client/java/net/fabricmc/fabric/mixin/client/indigo/renderer/BlockRenderDispatcherMixin.java index 68d8a3a2bad..eba9f95bde2 100644 --- a/fabric-renderer-indigo/src/client/java/net/fabricmc/fabric/mixin/client/indigo/renderer/BlockRenderDispatcherMixin.java +++ b/fabric-renderer-indigo/src/client/java/net/fabricmc/fabric/mixin/client/indigo/renderer/BlockRenderDispatcherMixin.java @@ -16,6 +16,8 @@ package net.fabricmc.fabric.mixin.client.indigo.renderer; +import com.llamalad7.mixinextras.expression.Definition; +import com.llamalad7.mixinextras.expression.Expression; import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.VertexConsumer; @@ -46,16 +48,18 @@ abstract class BlockRenderDispatcherMixin { @Final private ModelBlockRenderer modelRenderer; - @Inject(method = "renderBreakingTexture(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/BlockAndTintGetter;Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;)V", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/client/renderer/block/BlockModelShaper;getBlockModel(Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/client/renderer/block/model/BlockStateModel;", shift = At.Shift.AFTER), cancellable = true) - private void afterGetModel(BlockState blockState, BlockPos blockPos, BlockAndTintGetter level, PoseStack poseStack, VertexConsumer vertexConsumer, CallbackInfo ci, @Local BlockStateModel model) { - modelRenderer.render(level, model, blockState, blockPos, - poseStack, layer -> vertexConsumer, true, blockState.getSeed(blockPos), OverlayTexture.NO_OVERLAY); + @Definition(id = "getBlockModel", method = "Lnet/minecraft/client/renderer/block/BlockModelShaper;getBlockModel(Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/client/renderer/block/model/BlockStateModel;") + @Expression("? = ?.getBlockModel(?)") + @Inject(method = "renderBreakingTexture(Lnet/minecraft/world/level/block/state/BlockState;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/BlockAndTintGetter;Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;)V", at = @At(value = "MIXINEXTRAS:EXPRESSION", shift = At.Shift.AFTER), cancellable = true) + private void afterGetModel(BlockState state, BlockPos pos, BlockAndTintGetter level, PoseStack poseStack, VertexConsumer builder, CallbackInfo ci, @Local(name = "model") BlockStateModel model) { + modelRenderer.render(level, model, state, pos, + poseStack, layer -> builder, true, state.getSeed(pos), OverlayTexture.NO_OVERLAY); ci.cancel(); } @Redirect(method = "renderSingleBlock(Lnet/minecraft/world/level/block/state/BlockState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/MultiBufferSource;II)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/block/ModelBlockRenderer;renderModel(Lcom/mojang/blaze3d/vertex/PoseStack$Pose;Lcom/mojang/blaze3d/vertex/VertexConsumer;Lnet/minecraft/client/renderer/block/model/BlockStateModel;FFFII)V")) - private void renderProxy(PoseStack.Pose pose, VertexConsumer vertexConsumer, BlockStateModel model, float red, float green, float blue, int light, int overlay, BlockState state, PoseStack poseStack, MultiBufferSource bufferSource, int light1, int overlay1) { + private void renderProxy(PoseStack.Pose pose, VertexConsumer builder, BlockStateModel model, float r, float g, float b, int lightCoords, int overlayCoords, BlockState state, PoseStack poseStack, MultiBufferSource bufferSource, int lightCoords1, int overlayCoords1) { FabricModelBlockRenderer.render(pose, ChunkSectionLayerHelper.entityDelegate( - bufferSource), model, red, green, blue, light, overlay, EmptyBlockAndTintGetter.INSTANCE, BlockPos.ZERO, state); + bufferSource), model, r, g, b, lightCoords, overlayCoords, EmptyBlockAndTintGetter.INSTANCE, BlockPos.ZERO, state); } } diff --git a/fabric-renderer-indigo/src/client/java/net/fabricmc/fabric/mixin/client/indigo/renderer/ItemStackRenderStateMixin.java b/fabric-renderer-indigo/src/client/java/net/fabricmc/fabric/mixin/client/indigo/renderer/ItemStackRenderStateMixin.java index 73918ff1e27..9e2d2f58e5b 100644 --- a/fabric-renderer-indigo/src/client/java/net/fabricmc/fabric/mixin/client/indigo/renderer/ItemStackRenderStateMixin.java +++ b/fabric-renderer-indigo/src/client/java/net/fabricmc/fabric/mixin/client/indigo/renderer/ItemStackRenderStateMixin.java @@ -38,12 +38,12 @@ @Mixin(ItemStackRenderState.class) abstract class ItemStackRenderStateMixin { @Inject(method = "visitExtents(Ljava/util/function/Consumer;)V", at = @At(value = "NEW", target = "com/mojang/blaze3d/vertex/PoseStack$Pose")) - private void afterInitVecLoad(Consumer posConsumer, CallbackInfo ci, @Local Vector3f vec, @Share("pipe") LocalRef pipeRef) { - pipeRef.set(new QuadToPosPipe(posConsumer, vec)); + private void afterInitVecLoad(Consumer output, CallbackInfo ci, @Local(name = "scratch") Vector3f scratch, @Share("pipe") LocalRef pipeRef) { + pipeRef.set(new QuadToPosPipe(output, scratch)); } - @Inject(method = "visitExtents(Ljava/util/function/Consumer;)V", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack$Pose;setIdentity()V", shift = At.Shift.BEFORE)) - private void afterLayerLoad(Consumer posConsumer, CallbackInfo ci, @Local(ordinal = 0) Vector3f vec, @Local ItemStackRenderState.LayerRenderState layer, @Local Matrix4f matrix, @Share("pipe") LocalRef pipeRef) { + @Inject(method = "visitExtents(Ljava/util/function/Consumer;)V", at = @At(value = "INVOKE", target = "Lcom/mojang/blaze3d/vertex/PoseStack$Pose;setIdentity()V")) + private void afterLayerLoad(Consumer posConsumer, CallbackInfo ci, @Local(name = "scratch") Vector3f scratch, @Local(name = "layer") ItemStackRenderState.LayerRenderState layer, @Local(name = "poseTransform") Matrix4f matrix, @Share("pipe") LocalRef pipeRef) { MutableMeshImpl mutableMesh = ((AccessLayerRenderState) layer).fabric_getMutableMesh(); if (mutableMesh.size() > 0) { diff --git a/fabric-renderer-indigo/src/client/java/net/fabricmc/fabric/mixin/client/indigo/renderer/SectionCompilerMixin.java b/fabric-renderer-indigo/src/client/java/net/fabricmc/fabric/mixin/client/indigo/renderer/SectionCompilerMixin.java index 21f78f82730..fbd8c626dc8 100644 --- a/fabric-renderer-indigo/src/client/java/net/fabricmc/fabric/mixin/client/indigo/renderer/SectionCompilerMixin.java +++ b/fabric-renderer-indigo/src/client/java/net/fabricmc/fabric/mixin/client/indigo/renderer/SectionCompilerMixin.java @@ -72,25 +72,25 @@ abstract class SectionCompilerMixin { @Shadow protected abstract BufferBuilder getOrBeginLayer( - Map builders, + Map startedLayers, SectionBufferBuilderPack buffers, - ChunkSectionLayer layer + ChunkSectionLayer renderType ); @Inject(method = "compile", at = @At(value = "INVOKE", target = "Lnet/minecraft/core/BlockPos;betweenClosed(Lnet/minecraft/core/BlockPos;Lnet/minecraft/core/BlockPos;)Ljava/lang/Iterable;")) - private void hookBuild(SectionPos sectionPos, RenderSectionRegion region, VertexSorting sorter, - SectionBufferBuilderPack buffers, + private void hookBuild(SectionPos sectionPos, RenderSectionRegion region, VertexSorting vertexSorting, + SectionBufferBuilderPack builders, CallbackInfoReturnable cir, - @Local(ordinal = 0) BlockPos sectionOrigin, - @Local(ordinal = 0) PoseStack poseStack, - @Local(ordinal = 0) Map builderMap, - @Local(ordinal = 0) RandomSource random) { + @Local(name = "minPos") BlockPos minPos, + @Local(name = "poseStack") PoseStack poseStack, + @Local(name = "startedLayers") Map startedLayers, + @Local(name = "random") RandomSource random) { // hook just before iterating over the render chunk's blocks to capture the buffer builder map TerrainRenderContext renderer = TerrainRenderContext.POOL.get(); - renderer.prepare(region, sectionOrigin, - poseStack, random, layer -> getOrBeginLayer(builderMap, - buffers, layer)); + renderer.prepare(region, minPos, + poseStack, random, layer -> getOrBeginLayer(startedLayers, + builders, layer)); ((AccessRenderSectionRegion) region).fabric_setRenderer(renderer); } @@ -108,12 +108,12 @@ private void hookBuild(SectionPos sectionPos, RenderSectionRegion region, Vertex * which was specifically created to provide for enhanced terrain rendering. */ @Redirect(method = "compile", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/level/block/state/BlockState;getRenderShape()Lnet/minecraft/world/level/block/RenderShape;")) - private RenderShape hookBuildRenderBlock(BlockState blockState, SectionPos sectionPos, RenderSectionRegion renderRegion, VertexSorting vertexSorter, SectionBufferBuilderPack buffers, @Local(ordinal = 2) BlockPos blockPos) { + private RenderShape hookBuildRenderBlock(BlockState blockState, SectionPos sectionPos, RenderSectionRegion region, VertexSorting vertexSorting, SectionBufferBuilderPack builders, @Local(name = "pos") BlockPos pos) { RenderShape renderShape = blockState.getRenderShape(); if (renderShape == RenderShape.MODEL) { BlockStateModel model = blockRenderer.getBlockModel(blockState); - ((AccessRenderSectionRegion) renderRegion).fabric_getRenderer().bufferModel(model, blockState, blockPos); + ((AccessRenderSectionRegion) region).fabric_getRenderer().bufferModel(model, blockState, pos); return RenderShape.INVISIBLE; // Cancel the vanilla logic } @@ -124,8 +124,8 @@ private RenderShape hookBuildRenderBlock(BlockState blockState, SectionPos secti * Release all references. Probably not necessary but would be $#%! to debug if it is. */ @Inject(method = "compile", at = @At(value = "RETURN")) - private void hookBuildReturn(SectionPos sectionPos, RenderSectionRegion renderRegion, VertexSorting vertexSorter, SectionBufferBuilderPack buffers, CallbackInfoReturnable cir) { - ((AccessRenderSectionRegion) renderRegion).fabric_getRenderer().release(); - ((AccessRenderSectionRegion) renderRegion).fabric_setRenderer(null); + private void hookBuildReturn(SectionPos sectionPos, RenderSectionRegion region, VertexSorting vertexSorting, SectionBufferBuilderPack builders, CallbackInfoReturnable cir) { + ((AccessRenderSectionRegion) region).fabric_getRenderer().release(); + ((AccessRenderSectionRegion) region).fabric_setRenderer(null); } } diff --git a/fabric-renderer-indigo/src/client/resources/fabric-renderer-indigo.mixins.json b/fabric-renderer-indigo/src/client/resources/fabric-renderer-indigo.mixins.json index 9c8485c1b8d..57269de23ec 100644 --- a/fabric-renderer-indigo/src/client/resources/fabric-renderer-indigo.mixins.json +++ b/fabric-renderer-indigo/src/client/resources/fabric-renderer-indigo.mixins.json @@ -21,5 +21,8 @@ }, "overwrites": { "requireAnnotations": true + }, + "mixinextras": { + "minVersion": "0.5.0" } } diff --git a/fabric-renderer-indigo/src/client/resources/fabric.mod.json b/fabric-renderer-indigo/src/client/resources/fabric.mod.json index fc6a97f12e1..85fe5e75391 100644 --- a/fabric-renderer-indigo/src/client/resources/fabric.mod.json +++ b/fabric-renderer-indigo/src/client/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "minecraft": ">=1.21.5-beta.1", "fabric-api-base": "*", "fabric-renderer-api-v1": "*" diff --git a/fabric-rendering-fluids-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/fluid/LiquidBlockRendererMixin.java b/fabric-rendering-fluids-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/fluid/LiquidBlockRendererMixin.java index f6d97332da2..70812b195e0 100644 --- a/fabric-rendering-fluids-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/fluid/LiquidBlockRendererMixin.java +++ b/fabric-rendering-fluids-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/fluid/LiquidBlockRendererMixin.java @@ -23,6 +23,7 @@ import com.llamalad7.mixinextras.sugar.Share; import com.llamalad7.mixinextras.sugar.ref.LocalBooleanRef; import com.mojang.blaze3d.vertex.VertexConsumer; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -76,14 +77,14 @@ public void onResourceReloadReturn(CallbackInfo info) { } @Inject(method = "tesselate", at = @At("HEAD"), cancellable = true) - public void onHeadRender(BlockAndTintGetter view, BlockPos pos, VertexConsumer vertexConsumer, BlockState blockState, FluidState fluidState, CallbackInfo ci) { + public void onHeadRender(BlockAndTintGetter level, BlockPos pos, VertexConsumer builder, BlockState blockState, FluidState fluidState, CallbackInfo ci) { FluidRenderHandlerInfo info = FluidRenderingImpl.getCurrentInfo(); if (info.handler == null) { FluidRenderHandler handler = FluidRenderHandlerRegistry.INSTANCE.get(fluidState.getType()); if (handler != null) { - handler.renderFluid(pos, view, vertexConsumer, blockState, fluidState); + handler.renderFluid(pos, level, builder, blockState, fluidState); ci.cancel(); } } @@ -107,19 +108,19 @@ private TextureAtlasSprite getOrDefault(int index, TextureAtlasSprite original) @ModifyVariable( method = "tesselate", at = @At("STORE"), - ordinal = 0 + name = "stillSprite" ) - public TextureAtlasSprite modStill(TextureAtlasSprite original) { - return getOrDefault(0, original); + public TextureAtlasSprite modStill(TextureAtlasSprite stillSprite) { + return getOrDefault(0, stillSprite); } @ModifyVariable( method = "tesselate", at = @At("STORE"), - ordinal = 1 + name = "flowingSprite" ) - public TextureAtlasSprite modFlowing(TextureAtlasSprite original) { - return getOrDefault(1, original); + public TextureAtlasSprite modFlowing(TextureAtlasSprite flowingSprite) { + return getOrDefault(1, flowingSprite); } @ModifyExpressionValue( @@ -129,7 +130,7 @@ public TextureAtlasSprite modFlowing(TextureAtlasSprite original) { @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/BiomeColors;getAverageWaterColor(Lnet/minecraft/world/level/BlockAndTintGetter;Lnet/minecraft/core/BlockPos;)I") } ) - public int modTintColor(int original, BlockAndTintGetter level, BlockPos pos, VertexConsumer vertexConsumer, BlockState blockState, FluidState fluidState) { + public int modTintColor(int original, BlockAndTintGetter level, BlockPos pos, VertexConsumer builder, BlockState blockState, FluidState fluidState) { FluidRenderHandlerInfo info = FluidRenderingImpl.getCurrentInfo(); return info.handler != null ? info.handler.getFluidColor(level, pos, fluidState) : original; } @@ -140,21 +141,21 @@ public int modTintColor(int original, BlockAndTintGetter level, BlockPos pos, Ve @ModifyVariable( method = "tesselate", at = @At(value = "MIXINEXTRAS:EXPRESSION", ordinal = 0), - slice = @Slice(from = @At(value = "FIELD", target = "Lnet/minecraft/client/renderer/block/LiquidBlockRenderer;waterOverlay:Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;")), - ordinal = 2 + slice = @Slice(from = @At(value = "FIELD", target = "Lnet/minecraft/client/renderer/block/LiquidBlockRenderer;waterOverlay:Lnet/minecraft/client/renderer/texture/TextureAtlasSprite;", opcode = Opcodes.GETFIELD)), + name = "sprite" ) private TextureAtlasSprite modifyOverlaySprite( - TextureAtlasSprite waterOverlay, + TextureAtlasSprite sprite, BlockAndTintGetter level, - @Local(ordinal = 1) BlockPos neighborPos, - @Local(ordinal = 0) boolean isLava, - @Local(ordinal = 1) TextureAtlasSprite flowingSprite, + @Local(name = "tPos") BlockPos tPos, + @Local(name = "isLava") boolean isLava, + @Local(name = "flowingSprite") TextureAtlasSprite flowingSprite, @Share("useOverlay") LocalBooleanRef useOverlay ) { final FluidRenderHandlerInfo info = FluidRenderingImpl.getCurrentInfo(); boolean hasOverlay = info.handler != null ? info.hasOverlay : !isLava; - Block neighborBlock = level.getBlockState(neighborPos).getBlock(); + Block neighborBlock = level.getBlockState(tPos).getBlock(); useOverlay.set(hasOverlay && FluidRenderHandlerRegistry.INSTANCE.isBlockTransparent(neighborBlock)); if (useOverlay.get()) { diff --git a/fabric-rendering-fluids-v1/src/main/resources/fabric.mod.json b/fabric-rendering-fluids-v1/src/main/resources/fabric.mod.json index ab10651c646..9460c009d31 100644 --- a/fabric-rendering-fluids-v1/src/main/resources/fabric.mod.json +++ b/fabric-rendering-fluids-v1/src/main/resources/fabric.mod.json @@ -15,7 +15,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*" }, "description": "Hooks for registering fluid renders.", diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/CapeLayerMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/CapeLayerMixin.java index 5a0d4e747d5..34c438a547f 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/CapeLayerMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/CapeLayerMixin.java @@ -16,7 +16,6 @@ package net.fabricmc.fabric.mixin.client.rendering; -import com.llamalad7.mixinextras.sugar.Local; import com.mojang.blaze3d.vertex.PoseStack; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -32,7 +31,7 @@ @Mixin(CapeLayer.class) public class CapeLayerMixin { @Inject(at = @At(value = "HEAD"), method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/AvatarRenderState;FF)V", cancellable = true) - public void injectCapeRenderCheck(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, AvatarRenderState avatarRenderState, float f, float g, CallbackInfo ci, @Local(argsOnly = true) AvatarRenderState state) { + public void injectCapeRenderCheck(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, AvatarRenderState state, float yRot, float xRot, CallbackInfo ci) { if (!LivingEntityFeatureRenderEvents.ALLOW_CAPE_RENDER.invoker().allowCapeRender(state)) { ci.cancel(); } diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ClientLevelMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ClientLevelMixin.java index 87b361ce3d3..cee1fb0de76 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ClientLevelMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ClientLevelMixin.java @@ -45,9 +45,9 @@ public abstract class ClientLevelMixin { public abstract int calculateBlockTint(BlockPos pos, ColorResolver colorResolver); @Inject(method = "onChunkLoaded(Lnet/minecraft/world/level/ChunkPos;)V", at = @At("RETURN")) - private void onResetChunkColor(ChunkPos chunkPos, CallbackInfo ci) { + private void onResetChunkColor(ChunkPos pos, CallbackInfo ci) { for (BlockTintCache cache : customColorCache.values()) { - cache.invalidateForChunk(chunkPos.x, chunkPos.z); + cache.invalidateForChunk(pos.x, pos.z); } } diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ClientTooltipComponentMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ClientTooltipComponentMixin.java index a86f4e669f0..2050a6fb148 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ClientTooltipComponentMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ClientTooltipComponentMixin.java @@ -33,11 +33,11 @@ public interface ClientTooltipComponentMixin { at = @At("HEAD"), cancellable = true ) - private static void convertCustomTooltipComponent(TooltipComponent data, CallbackInfoReturnable cir) { - ClientTooltipComponent component = ClientTooltipComponentCallback.EVENT.invoker().getClientComponent(data); + private static void convertCustomTooltipComponent(TooltipComponent component, CallbackInfoReturnable cir) { + ClientTooltipComponent clientComponent = ClientTooltipComponentCallback.EVENT.invoker().getClientComponent(component); - if (component != null) { - cir.setReturnValue(component); + if (clientComponent != null) { + cir.setReturnValue(clientComponent); } } } diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/DebugOptionsScreenOptionListMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/DebugOptionsScreenOptionListMixin.java index 39b798a6873..6f8bf6bbc0f 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/DebugOptionsScreenOptionListMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/DebugOptionsScreenOptionListMixin.java @@ -33,14 +33,14 @@ @Mixin(targets = "net.minecraft.client.gui.screens.debug.DebugOptionsScreen$OptionList") public class DebugOptionsScreenOptionListMixin { @Redirect(method = "lambda$static$0", at = @At(value = "INVOKE", target = "Lnet/minecraft/resources/Identifier;compareTo(Lnet/minecraft/resources/Identifier;)I")) - private static int sort(Identifier o1, Identifier o2) { - return DebugOptionsComparator.INSTANCE.compare(o1, o2); + private static int sort(Identifier t, Identifier o) { + return DebugOptionsComparator.INSTANCE.compare(t, o); } @WrapOperation(method = "updateSearch", at = @At(value = "INVOKE", target = "Ljava/lang/String;contains(Ljava/lang/CharSequence;)Z")) - private boolean searchPath(String instance, CharSequence searchStrings, Operation original, @Local Map.Entry entry) { + private boolean searchPath(String instance, CharSequence s, Operation original, @Local(name = "entry") Map.Entry entry) { final String namespace = entry.getKey().getNamespace(); - return original.call(instance, searchStrings) - || (!Identifier.DEFAULT_NAMESPACE.equals(namespace) && namespace.contains(searchStrings)); + return original.call(instance, s) + || (!Identifier.DEFAULT_NAMESPACE.equals(namespace) && namespace.contains(s)); } } diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/EntityRenderDispatcherMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/EntityRenderDispatcherMixin.java index e30fdf466bc..1cd666d755d 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/EntityRenderDispatcherMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/EntityRenderDispatcherMixin.java @@ -31,7 +31,7 @@ @Mixin(EntityRenderDispatcher.class) class EntityRenderDispatcherMixin { @Inject(method = "onResourceManagerReload", at = @At("TAIL")) - private void createArmorRenderers(ResourceManager manager, CallbackInfo ci, @Local EntityRendererProvider.Context context) { + private void createArmorRenderers(ResourceManager resourceManager, CallbackInfo ci, @Local(name = "context") EntityRendererProvider.Context context) { ArmorRendererRegistryImpl.createArmorRenderers(context); } } diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/EntityRenderersMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/EntityRenderersMixin.java index 15bc8618e73..5467d75a218 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/EntityRenderersMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/EntityRenderersMixin.java @@ -56,12 +56,12 @@ private static void onRegisterRenderers(CallbackInfo info) { // synthetic lambda in reloadEntityRenderers @SuppressWarnings({"unchecked", "rawtypes"}) @Redirect(method = "lambda$createEntityRenderers$0", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/EntityRendererProvider;create(Lnet/minecraft/client/renderer/entity/EntityRendererProvider$Context;)Lnet/minecraft/client/renderer/entity/EntityRenderer;")) - private static EntityRenderer createEntityRenderer(EntityRendererProvider entityRendererProvider, EntityRendererProvider.Context context, ImmutableMap.Builder builder, EntityRendererProvider.Context context2, EntityType entityType) { + private static EntityRenderer createEntityRenderer(EntityRendererProvider entityRendererProvider, EntityRendererProvider.Context context, ImmutableMap.Builder result, EntityRendererProvider.Context context2, EntityType type) { EntityRenderer entityRenderer = entityRendererProvider.create(context); if (entityRenderer instanceof LivingEntityRenderer) { // Must be living for features LivingEntityRendererAccessor accessor = (LivingEntityRendererAccessor) entityRenderer; - LivingEntityRenderLayerRegistrationCallback.EVENT.invoker().registerLayers((EntityType) entityType, (LivingEntityRenderer) entityRenderer, new RegistrationHelperImpl(accessor::callAddLayer), context); + LivingEntityRenderLayerRegistrationCallback.EVENT.invoker().registerLayers((EntityType) type, (LivingEntityRenderer) entityRenderer, new RegistrationHelperImpl(accessor::callAddLayer), context); } return entityRenderer; @@ -69,8 +69,8 @@ private static void onRegisterRenderers(CallbackInfo info) { @SuppressWarnings({"unchecked", "rawtypes"}) @WrapOperation(method = "createAvatarRenderers", at = @At(value = "NEW", target = "(Lnet/minecraft/client/renderer/entity/EntityRendererProvider$Context;Z)Lnet/minecraft/client/renderer/entity/player/AvatarRenderer;")) - private static AvatarRenderer createAvatarRenderer(EntityRendererProvider.Context context, boolean slim, Operation original) { - AvatarRenderer entityRenderer = original.call(context, slim); + private static AvatarRenderer createAvatarRenderer(EntityRendererProvider.Context context, boolean slimSteve, Operation original) { + AvatarRenderer entityRenderer = original.call(context, slimSteve); LivingEntityRendererAccessor accessor = (LivingEntityRendererAccessor) entityRenderer; LivingEntityRenderLayerRegistrationCallback.EVENT.invoker().registerLayers(EntityType.PLAYER, (LivingEntityRenderer) entityRenderer, new RegistrationHelperImpl(accessor::callAddLayer), context); diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GameRendererMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GameRendererMixin.java index 67b12a3ba04..6cc4d856d1e 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GameRendererMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GameRendererMixin.java @@ -44,7 +44,7 @@ public class GameRendererMixin { private SubmitNodeStorage submitNodeStorage; @Inject(method = "", at = @At(value = "RETURN")) - private void guiRendererReady(Minecraft client, ItemInHandRenderer firstPersonHeldItemRenderer, RenderBuffers buffers, BlockRenderDispatcher blockRenderManager, CallbackInfo ci) { + private void guiRendererReady(Minecraft minecraft, ItemInHandRenderer itemInHandRenderer, RenderBuffers renderBuffers, BlockRenderDispatcher blockRenderer, CallbackInfo ci) { GuiRendererExtensions guiRenderer = (GuiRendererExtensions) this.guiRenderer; guiRenderer.fabric_onReady(this.submitNodeStorage); } diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GuiGraphicsMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GuiGraphicsMixin.java index 49c77ebb8ff..929921b1661 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GuiGraphicsMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GuiGraphicsMixin.java @@ -34,10 +34,10 @@ abstract class GuiGraphicsMixin { method = "renderItemDecorations(Lnet/minecraft/client/gui/Font;Lnet/minecraft/world/item/ItemStack;IILjava/lang/String;)V", at = @At("RETURN") ) - public void drawStackOverlay(Font font, ItemStack stack, int x, int y, @Nullable String stackCountText, CallbackInfo callback) { - if (!stack.isEmpty()) { + public void drawStackOverlay(Font font, ItemStack itemStack, int x, int y, @Nullable String countText, CallbackInfo callback) { + if (!itemStack.isEmpty()) { RenderItemDecorationsCallback.EVENT.invoker() - .onRenderItemDecorations((GuiGraphics) (Object) this, font, stack, x, y); + .onRenderItemDecorations((GuiGraphics) (Object) this, font, itemStack, x, y); } } } diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GuiMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GuiMixin.java index 8bf48981628..aa31dfb0fde 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GuiMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GuiMixin.java @@ -65,7 +65,7 @@ private void wrapCrosshair(Gui instance, GuiGraphics graphics, DeltaTracker delt } @WrapOperation(method = "renderHotbarAndDecorations", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/spectator/SpectatorGui;renderHotbar(Lnet/minecraft/client/gui/GuiGraphics;)V")) - private void wrapSpectatorMenu(SpectatorGui instance, GuiGraphics graphics, Operation renderVanilla, @Local(argsOnly = true) DeltaTracker deltaTracker) { + private void wrapSpectatorMenu(SpectatorGui instance, GuiGraphics graphics, Operation renderVanilla, @Local(argsOnly = true, name = "deltaTracker") DeltaTracker deltaTracker) { HudElementRegistryImpl.getRoot(VanillaHudElements.SPECTATOR_MENU).render( graphics, deltaTracker, (ctx, _) -> renderVanilla.call(instance, ctx)); @@ -79,31 +79,31 @@ private void wrapHotbar(Gui instance, GuiGraphics graphics, DeltaTracker deltaTr } @WrapOperation(method = "renderPlayerHealth", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Gui;renderArmor(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/world/entity/player/Player;IIII)V")) - private void wrapArmorBar(GuiGraphics graphics, Player player, int i, int j, int k, int x, Operation renderVanilla) { + private void wrapArmorBar(GuiGraphics graphics, Player player, int yLineBase, int numHealthRows, int healthRowHeight, int xLeft, Operation renderVanilla) { HudElementRegistryImpl.getRoot(VanillaHudElements.ARMOR_BAR).render( - graphics, minecraft.getDeltaTracker(), (ctx, _) -> renderVanilla.call(ctx, player, i, j, k, x)); + graphics, minecraft.getDeltaTracker(), (ctx, _) -> renderVanilla.call(ctx, player, yLineBase, numHealthRows, healthRowHeight, xLeft)); } @WrapOperation(method = "renderPlayerHealth", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Gui;renderHearts(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/world/entity/player/Player;IIIIFIIIZ)V")) - private void wrapHealthBar(Gui instance, GuiGraphics graphics, Player player, int x, int y, int lines, int regeneratingHeartIndex, float maxHealth, int lastHealth, int health, int absorption, boolean blinking, Operation renderVanilla) { + private void wrapHealthBar(Gui instance, GuiGraphics graphics, Player player, int xLeft, int yLineBase, int healthRowHeight, int heartOffsetIndex, float maxHealth, int currentHealth, int oldHealth, int absorption, boolean blink, Operation renderVanilla) { HudElementRegistryImpl.getRoot(VanillaHudElements.HEALTH_BAR).render( - graphics, minecraft.getDeltaTracker(), (ctx, _) -> renderVanilla.call(instance, ctx, player, x, y, lines, regeneratingHeartIndex, maxHealth, lastHealth, health, absorption, blinking)); + graphics, minecraft.getDeltaTracker(), (ctx, _) -> renderVanilla.call(instance, ctx, player, xLeft, yLineBase, healthRowHeight, heartOffsetIndex, maxHealth, currentHealth, oldHealth, absorption, blink)); } @WrapOperation(method = "renderPlayerHealth", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Gui;renderFood(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/world/entity/player/Player;II)V")) - private void wrapFoodBar(Gui instance, GuiGraphics graphics, Player player, int top, int right, Operation renderVanilla) { + private void wrapFoodBar(Gui instance, GuiGraphics graphics, Player player, int yLineBase, int xRight, Operation renderVanilla) { HudElementRegistryImpl.getRoot(VanillaHudElements.FOOD_BAR).render( - graphics, minecraft.getDeltaTracker(), (ctx, _) -> renderVanilla.call(instance, ctx, player, top, right)); + graphics, minecraft.getDeltaTracker(), (ctx, _) -> renderVanilla.call(instance, ctx, player, yLineBase, xRight)); } @WrapOperation(method = "renderPlayerHealth", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Gui;renderAirBubbles(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/world/entity/player/Player;III)V")) - private void wrapAirBar(Gui instance, GuiGraphics graphics, Player player, int heartCount, int top, int left, Operation renderVanilla) { + private void wrapAirBar(Gui instance, GuiGraphics graphics, Player player, int vehicleHearts, int yLineAir, int xRight, Operation renderVanilla) { HudElementRegistryImpl.getRoot(VanillaHudElements.AIR_BAR).render( - graphics, minecraft.getDeltaTracker(), (ctx, _) -> renderVanilla.call(instance, ctx, player, heartCount, top, left)); + graphics, minecraft.getDeltaTracker(), (ctx, _) -> renderVanilla.call(instance, ctx, player, vehicleHearts, yLineAir, xRight)); } @WrapOperation(method = "renderHotbarAndDecorations", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Gui;renderVehicleHealth(Lnet/minecraft/client/gui/GuiGraphics;)V")) - private void wrapMountHealth(Gui instance, GuiGraphics graphics, Operation renderVanilla, @Local(argsOnly = true) DeltaTracker deltaTracker) { + private void wrapMountHealth(Gui instance, GuiGraphics graphics, Operation renderVanilla, @Local(argsOnly = true, name = "deltaTracker") DeltaTracker deltaTracker) { HudElementRegistryImpl.getRoot(VanillaHudElements.MOUNT_HEALTH).render( graphics, deltaTracker, (ctx, _) -> renderVanilla.call(instance, ctx)); @@ -117,21 +117,21 @@ private void wrapRenderBar(ContextualBarRenderer instance, GuiGraphics graphics, } @WrapOperation(method = "renderHotbarAndDecorations", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/contextualbar/ContextualBarRenderer;renderExperienceLevel(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/gui/Font;I)V")) - private void wrapExperienceLevel(GuiGraphics graphics, Font font, int level, Operation renderVanilla, @Local(argsOnly = true) DeltaTracker deltaTracker) { + private void wrapExperienceLevel(GuiGraphics graphics, Font font, int experienceLevel, Operation renderVanilla, @Local(argsOnly = true, name = "deltaTracker") DeltaTracker deltaTracker) { HudElementRegistryImpl.getRoot(VanillaHudElements.EXPERIENCE_LEVEL).render( graphics, - deltaTracker, (ctx, _) -> renderVanilla.call(ctx, font, level)); + deltaTracker, (ctx, _) -> renderVanilla.call(ctx, font, experienceLevel)); } @WrapOperation(method = "renderHotbarAndDecorations", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Gui;renderSelectedItemName(Lnet/minecraft/client/gui/GuiGraphics;)V")) - private void wrapHeldItemTooltip(Gui instance, GuiGraphics graphics, Operation renderVanilla, @Local(argsOnly = true) DeltaTracker deltaTracker) { + private void wrapHeldItemTooltip(Gui instance, GuiGraphics graphics, Operation renderVanilla, @Local(argsOnly = true, name = "deltaTracker") DeltaTracker deltaTracker) { HudElementRegistryImpl.getRoot(VanillaHudElements.HELD_ITEM_TOOLTIP).render( graphics, deltaTracker, (ctx, _) -> renderVanilla.call(instance, ctx)); } @WrapOperation(method = "renderHotbarAndDecorations", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/components/spectator/SpectatorGui;renderAction(Lnet/minecraft/client/gui/GuiGraphics;)V")) - private void wrapRenderSpectatorGui(SpectatorGui instance, GuiGraphics graphics, Operation renderVanilla, @Local(argsOnly = true) DeltaTracker deltaTracker) { + private void wrapRenderSpectatorGui(SpectatorGui instance, GuiGraphics graphics, Operation renderVanilla, @Local(argsOnly = true, name = "deltaTracker") DeltaTracker deltaTracker) { HudElementRegistryImpl.getRoot(VanillaHudElements.SPECTATOR_TOOLTIP).render( graphics, deltaTracker, (ctx, _) -> renderVanilla.call(instance, ctx)); @@ -204,7 +204,7 @@ private void wrapPlayerList(Gui instance, GuiGraphics graphics, DeltaTracker del } @WrapOperation(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/Gui;renderSubtitleOverlay(Lnet/minecraft/client/gui/GuiGraphics;Z)V")) - private void wrapSubtitleOverlay(Gui instance, GuiGraphics graphics, boolean deferRendering, Operation renderVanilla, @Local(argsOnly = true) DeltaTracker deltaTracker) { + private void wrapSubtitleOverlay(Gui instance, GuiGraphics graphics, boolean deferRendering, Operation renderVanilla, @Local(argsOnly = true, name = "deltaTracker") DeltaTracker deltaTracker) { HudElementRegistryImpl.getRoot(VanillaHudElements.SUBTITLES).render( graphics, deltaTracker, (ctx, _) -> renderVanilla.call(instance, ctx, diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GuiRendererMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GuiRendererMixin.java index beb3f1c05de..68ccf33a05d 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GuiRendererMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/GuiRendererMixin.java @@ -72,7 +72,7 @@ abstract class GuiRendererMixin implements GuiRendererExtensions { private SubmitNodeCollector submitNodeStorage = null; @Inject(method = "", at = @At(value = "RETURN")) - private void mutableSpecialElementRenderers(GuiRenderState state, MultiBufferSource.BufferSource bufferSource, SubmitNodeCollector submitNodeCollector, FeatureRenderDispatcher renderDispatcher, List list, CallbackInfo ci) { + private void mutableSpecialElementRenderers(GuiRenderState renderState, MultiBufferSource.BufferSource bufferSource, SubmitNodeCollector submitNodeCollector, FeatureRenderDispatcher featureRenderDispatcher, List pictureInPictureRenderers, CallbackInfo ci) { this.pictureInPictureRenderers = new IdentityHashMap<>(this.pictureInPictureRenderers); } @@ -93,14 +93,14 @@ private void postPrepareSpecialElements(CallbackInfo ci) { pipRendererPools.values().forEach(PictureInPictureRendererPool::cleanUpUnusedRenderers); } - @ModifyVariable(method = "preparePictureInPictureState", at = @At("STORE")) - private PictureInPictureRenderer substituteSpecialElementRenderer(PictureInPictureRenderer original, T elementState) { - if (original == null || !hasFabricInitialized) { - return original; + @ModifyVariable(method = "preparePictureInPictureState", at = @At("STORE"), name = "renderer") + private PictureInPictureRenderer substituteSpecialElementRenderer(PictureInPictureRenderer renderer, T picturesInPictureState) { + if (renderer == null || !hasFabricInitialized) { + return renderer; } - PictureInPictureRendererPool rendererPool = (PictureInPictureRendererPool) pipRendererPools.computeIfAbsent(original.getRenderStateClass(), k -> new PictureInPictureRendererPool<>()); - return rendererPool.substitute(original, elementState, Minecraft.getInstance(), bufferSource, Objects.requireNonNull(submitNodeStorage, "renderDispatcher")); + PictureInPictureRendererPool rendererPool = (PictureInPictureRendererPool) pipRendererPools.computeIfAbsent(renderer.getRenderStateClass(), k -> new PictureInPictureRendererPool<>()); + return rendererPool.substitute(renderer, picturesInPictureState, Minecraft.getInstance(), bufferSource, Objects.requireNonNull(submitNodeStorage, "renderDispatcher")); } @Inject(method = "close", at = @At("RETURN")) diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/HumanoidArmorLayerMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/HumanoidArmorLayerMixin.java index 16b676bcc1d..0f6c16c75db 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/HumanoidArmorLayerMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/HumanoidArmorLayerMixin.java @@ -45,16 +45,16 @@ public HumanoidArmorLayerMixin(RenderLayerParent renderLayerParent) { } @Inject(method = "submit(Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;ILnet/minecraft/client/renderer/entity/state/HumanoidRenderState;FF)V", at = @At("HEAD")) - private void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int i, S bipedEntityRenderState, float f, float g, CallbackInfo ci) { - this.humanoidRenderState = bipedEntityRenderState; + private void render(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, int lightCoords, S state, float yRot, float xRot, CallbackInfo ci) { + this.humanoidRenderState = state; } @Inject(method = "renderArmorPiece", at = @At("HEAD"), cancellable = true) - private void renderArmor(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, ItemStack stack, EquipmentSlot armorSlot, int light, S bipedEntityRenderState, CallbackInfo ci) { - ArmorRenderer renderer = ArmorRendererRegistryImpl.get(stack.getItem()); + private void renderArmor(PoseStack poseStack, SubmitNodeCollector submitNodeCollector, ItemStack itemStack, EquipmentSlot slot, int lightCoords, S state, CallbackInfo ci) { + ArmorRenderer renderer = ArmorRendererRegistryImpl.get(itemStack.getItem()); if (renderer != null) { - renderer.render(poseStack, submitNodeCollector, stack, humanoidRenderState, armorSlot, light, (HumanoidModel) getParentModel()); + renderer.render(poseStack, submitNodeCollector, itemStack, humanoidRenderState, slot, lightCoords, (HumanoidModel) getParentModel()); ci.cancel(); } } diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/HumanoidMobRendererMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/HumanoidMobRendererMixin.java index 58f5ef1b549..d8c0c494875 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/HumanoidMobRendererMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/HumanoidMobRendererMixin.java @@ -34,7 +34,7 @@ @Mixin(HumanoidMobRenderer.class) abstract class HumanoidMobRendererMixin { @WrapOperation(method = "getEquipmentIfRenderable", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;shouldRender(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/EquipmentSlot;)Z")) - private static boolean permitArmorWithCustomRenderers(ItemStack stack, EquipmentSlot slot, Operation original) { - return original.call(stack, slot) || ArmorRendererRegistryImpl.get(stack.getItem()) != null; + private static boolean permitArmorWithCustomRenderers(ItemStack itemStack, EquipmentSlot slot, Operation original) { + return original.call(itemStack, slot) || ArmorRendererRegistryImpl.get(itemStack.getItem()) != null; } } diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/LayerDefinitionsMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/LayerDefinitionsMixin.java index e0b5c1cdd92..54e9fc7b5cb 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/LayerDefinitionsMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/LayerDefinitionsMixin.java @@ -36,13 +36,13 @@ @Mixin(LayerDefinitions.class) abstract class LayerDefinitionsMixin { @Inject(method = "createRoots", at = @At(value = "INVOKE", target = "Lcom/google/common/collect/ImmutableMap$Builder;build()Lcom/google/common/collect/ImmutableMap;")) - private static void registerExtraModelData(CallbackInfoReturnable> info, @Local ImmutableMap.Builder builder) { + private static void registerExtraModelData(CallbackInfoReturnable> info, @Local(name = "result") ImmutableMap.Builder result) { for (Map.Entry entry : ModelLayerImpl.PROVIDERS.entrySet()) { - builder.put(entry.getKey(), entry.getValue().createLayerDefinition()); + result.put(entry.getKey(), entry.getValue().createLayerDefinition()); } for (Map.Entry, ModelLayerRegistry.TexturedArmorModelSetProvider> entry : ModelLayerImpl.ARMOR_PROVIDERS.entrySet()) { - entry.getKey().putFrom(entry.getValue().createArmorModelSet(), builder); + entry.getKey().putFrom(entry.getValue().createArmorModelSet(), result); } } } diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/LevelRendererMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/LevelRendererMixin.java index 93d8e0348e4..a3f1c2a4857 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/LevelRendererMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/LevelRendererMixin.java @@ -25,6 +25,7 @@ import org.joml.Matrix4f; import org.joml.Vector4f; import org.jspecify.annotations.Nullable; +import org.objectweb.asm.Opcodes; import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -80,9 +81,9 @@ public abstract class LevelRendererMixin { private final LevelExtractionContextImpl extractionContext = new LevelExtractionContextImpl(); @Inject(method = "renderLevel", at = @At("HEAD")) - private void beforeRender(GraphicsResourceAllocator allocator, DeltaTracker deltaTracker, boolean renderBlockOutline, Camera camera, Matrix4f viewMatrix, Matrix4f projectionMatrix, Matrix4f cullProjectionMatrix, GpuBufferSlice fogBuffer, Vector4f fogColor, boolean renderSky, CallbackInfo ci) { + private void beforeRender(GraphicsResourceAllocator resourceAllocator, DeltaTracker deltaTracker, boolean renderOutline, Camera camera, Matrix4f modelViewMatrix, Matrix4f projectionMatrix, Matrix4f projectionMatrixForCulling, GpuBufferSlice terrainFog, Vector4f fogColor, boolean shouldRenderSky, CallbackInfo ci) { extractionContext.prepare(minecraft.gameRenderer, (LevelRenderer) (Object) this, levelRenderState, level, - deltaTracker, renderBlockOutline, camera, viewMatrix, cullProjectionMatrix); + deltaTracker, renderOutline, camera, modelViewMatrix, projectionMatrixForCulling); } @ModifyExpressionValue(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/LevelRenderer;prepareCullFrustum(Lorg/joml/Matrix4f;Lorg/joml/Matrix4f;Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/client/renderer/culling/Frustum;")) @@ -92,13 +93,13 @@ private Frustum onSetupFrustum(Frustum frustum) { } @Inject(method = "extractBlockOutline", at = @At("RETURN")) - private void afterBlockOutlineExtraction(Camera camera, LevelRenderState renderStates, CallbackInfo ci) { + private void afterBlockOutlineExtraction(Camera camera, LevelRenderState levelRenderState, CallbackInfo ci) { LevelRenderEvents.AFTER_BLOCK_OUTLINE_EXTRACTION.invoker().afterBlockOutlineExtraction(extractionContext, minecraft.hitResult); } @WrapOperation(method = "renderLevel", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/WorldBorderRenderer;extract(Lnet/minecraft/world/level/border/WorldBorder;FLnet/minecraft/world/phys/Vec3;DLnet/minecraft/client/renderer/state/WorldBorderRenderState;)V")) - private void onWorldBorderExtraction(WorldBorderRenderer instance, WorldBorder worldBorder, float tickProgress, Vec3 vec3d, double viewDistanceBlocks, WorldBorderRenderState worldBorderRenderState, Operation original) { - original.call(instance, worldBorder, tickProgress, vec3d, viewDistanceBlocks, worldBorderRenderState); + private void onWorldBorderExtraction(WorldBorderRenderer instance, WorldBorder border, float deltaPartialTick, Vec3 cameraPos, double renderDistance, WorldBorderRenderState state, Operation original) { + original.call(instance, border, deltaPartialTick, cameraPos, renderDistance, state); LevelRenderEvents.END_EXTRACTION.invoker().endExtraction(extractionContext); } @@ -146,10 +147,10 @@ private void beforeTranslucentRender(CallbackInfo ci) { LevelRenderEvents.BEFORE_TRANSLUCENT.invoker().beforeTranslucent(renderContext); } - @Inject(method = "renderBlockOutline", at = @At(value = "FIELD", target = "Lnet/minecraft/client/renderer/state/CameraRenderState;pos:Lnet/minecraft/world/phys/Vec3;"), cancellable = true) - private void beforeDrawBlockOutline(MultiBufferSource.BufferSource consumers, PoseStack poseStack, boolean bl, LevelRenderState worldRenderState, CallbackInfo ci) { + @Inject(method = "renderBlockOutline", at = @At(value = "FIELD", target = "Lnet/minecraft/client/renderer/state/CameraRenderState;pos:Lnet/minecraft/world/phys/Vec3;", opcode = Opcodes.GETFIELD), cancellable = true) + private void beforeDrawBlockOutline(MultiBufferSource.BufferSource bufferSource, PoseStack poseStack, boolean onlyTranslucentBlocks, LevelRenderState levelRenderState, CallbackInfo ci) { if (!LevelRenderEvents.BEFORE_BLOCK_OUTLINE.invoker().beforeBlockOutline(renderContext, renderContext.levelState().blockOutlineRenderState)) { - consumers.endLastBatch(); + bufferSource.endLastBatch(); ci.cancel(); } } diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/LivingEntityRendererMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/LivingEntityRendererMixin.java index 1b86dee224c..6741998cfb2 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/LivingEntityRendererMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/LivingEntityRendererMixin.java @@ -36,10 +36,10 @@ abstract class LivingEntityRendererMixin { method = "extractRenderState(Lnet/minecraft/world/entity/LivingEntity;Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;F)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/layers/HumanoidArmorLayer;shouldRender(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/entity/EquipmentSlot;)Z") ) - private boolean toggleDefaultHeadItem(ItemStack headStack, EquipmentSlot slot, Operation original, @Local(argsOnly = true) LivingEntity entity) { + private boolean toggleDefaultHeadItem(ItemStack itemStack, EquipmentSlot slot, Operation original, @Local(argsOnly = true, name = "entity") LivingEntity entity) { // Return value: true if the item isn't rendered - if (original.call(headStack, slot)) return true; - ArmorRenderer renderer = ArmorRendererRegistryImpl.get(headStack.getItem()); - return renderer != null && !renderer.shouldRenderDefaultHeadItem(entity, headStack); + if (original.call(itemStack, slot)) return true; + ArmorRenderer renderer = ArmorRendererRegistryImpl.get(itemStack.getItem()); + return renderer != null && !renderer.shouldRenderDefaultHeadItem(entity, itemStack); } } diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ModelMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ModelMixin.java index 24affcab598..b980230dcb3 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ModelMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/ModelMixin.java @@ -44,7 +44,7 @@ abstract class ModelMixin implements FabricModel { private final Map childPartMap = new Object2ObjectOpenHashMap<>(); @Inject(method = "", at = @At("TAIL")) - private void fillChildPartMap(ModelPart root, Function layerFactory, CallbackInfo ci) { + private void fillChildPartMap(ModelPart root, Function renderType, CallbackInfo ci) { ((ModelPartAccessor) (Object) root).fabric$callForEachChild(childPartMap::putIfAbsent); } diff --git a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/RenderPipelineSnippetMixin.java b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/RenderPipelineSnippetMixin.java index 97393054250..e1b2b34312e 100644 --- a/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/RenderPipelineSnippetMixin.java +++ b/fabric-rendering-v1/src/client/java/net/fabricmc/fabric/mixin/client/rendering/RenderPipelineSnippetMixin.java @@ -55,9 +55,9 @@ private String modifyToStringToIncludeFabricExtraData(String original) { method = "equals", at = @At("RETURN") ) - private boolean modifyEqualsToIncludeFabricExtraData(boolean original, Object other) { + private boolean modifyEqualsToIncludeFabricExtraData(boolean original, Object o) { return original - && other instanceof FabricRenderPipeline.Snippet otherSnippet + && o instanceof FabricRenderPipeline.Snippet otherSnippet && usePipelineDrawModeForGui().equals(otherSnippet.usePipelineDrawModeForGui()); } diff --git a/fabric-rendering-v1/src/client/resources/fabric.mod.json b/fabric-rendering-v1/src/client/resources/fabric.mod.json index 83a5ababb67..d11b399ce46 100644 --- a/fabric-rendering-v1/src/client/resources/fabric.mod.json +++ b/fabric-rendering-v1/src/client/resources/fabric.mod.json @@ -21,7 +21,7 @@ ] }, "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*", "fabric-lifecycle-events-v1": "*" }, diff --git a/fabric-rendering-v1/src/testmodClient/java/net/fabricmc/fabric/test/rendering/client/mixin/PigRendererMixin.java b/fabric-rendering-v1/src/testmodClient/java/net/fabricmc/fabric/test/rendering/client/mixin/PigRendererMixin.java index 6fca1708185..def243d6fe5 100644 --- a/fabric-rendering-v1/src/testmodClient/java/net/fabricmc/fabric/test/rendering/client/mixin/PigRendererMixin.java +++ b/fabric-rendering-v1/src/testmodClient/java/net/fabricmc/fabric/test/rendering/client/mixin/PigRendererMixin.java @@ -44,7 +44,7 @@ public class PigRendererMixin { private static final RenderStateDataKey MOVING_BLOCK = RenderStateDataKey.create(() -> "Moving block"); @Inject(method = "extractRenderState(Lnet/minecraft/world/entity/animal/pig/Pig;Lnet/minecraft/client/renderer/entity/state/PigRenderState;F)V", at = @At("TAIL")) - private void updateRenderStateData(Pig entity, PigRenderState state, float tickProgress, CallbackInfo ci) { + private void updateRenderStateData(Pig entity, PigRenderState state, float partialTicks, CallbackInfo ci) { BlockState blockState = entity.getBlockStateOn(); if (blockState.getRenderShape() != RenderShape.INVISIBLE) { @@ -59,11 +59,11 @@ private void updateRenderStateData(Pig entity, PigRenderState state, float tickP } @Inject(method = "submit(Lnet/minecraft/client/renderer/entity/state/PigRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/entity/MobRenderer;submit(Lnet/minecraft/client/renderer/entity/state/LivingEntityRenderState;Lcom/mojang/blaze3d/vertex/PoseStack;Lnet/minecraft/client/renderer/SubmitNodeCollector;Lnet/minecraft/client/renderer/state/CameraRenderState;)V")) - private void renderUsingRenderStateData(PigRenderState state, PoseStack poseStack, SubmitNodeCollector queue, CameraRenderState cameraRenderState, CallbackInfo ci) { + private void renderUsingRenderStateData(PigRenderState state, PoseStack poseStack, SubmitNodeCollector submitNodeCollector, CameraRenderState camera, CallbackInfo ci) { MovingBlockRenderState movingBlockRenderState = state.getData(MOVING_BLOCK); if (movingBlockRenderState != null) { - queue.submitMovingBlock(poseStack, movingBlockRenderState); + submitNodeCollector.submitMovingBlock(poseStack, movingBlockRenderState); } } } diff --git a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/DataProviderMixin.java b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/DataProviderMixin.java index ff17ae225fc..84667846a6d 100644 --- a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/DataProviderMixin.java +++ b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/DataProviderMixin.java @@ -34,7 +34,7 @@ public interface DataProviderMixin { @Dynamic("lambda method passed to Util.make") @Inject(method = "lambda$static$0", at = @At("HEAD")) - private static void fabric_injectResourceConditionsSortOrder(Object2IntOpenHashMap map, CallbackInfo ci) { - map.put(ResourceConditions.CONDITIONS_KEY, -100); + private static void fabric_injectResourceConditionsSortOrder(Object2IntOpenHashMap m, CallbackInfo ci) { + m.put(ResourceConditions.CONDITIONS_KEY, -100); } } diff --git a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/PackMixin.java b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/PackMixin.java index 608f02b4d21..15ffecf28b5 100644 --- a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/PackMixin.java +++ b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/PackMixin.java @@ -32,10 +32,10 @@ @Mixin(Pack.class) public class PackMixin { - @ModifyVariable(method = "readPackMetadata", at = @At("STORE")) - private static List applyOverlayConditions(List overlays, @Local PackResources resourcePack) throws IOException { - List appliedOverlays = new ArrayList<>(overlays); - OverlayConditionsMetadata overlayMetadata = resourcePack.getMetadataSection(OverlayConditionsMetadata.SERIALIZER); + @ModifyVariable(method = "readPackMetadata", at = @At("STORE"), name = "overlaySet") + private static List applyOverlayConditions(List overlaySet, @Local(name = "pack") PackResources pack) throws IOException { + List appliedOverlays = new ArrayList<>(overlaySet); + OverlayConditionsMetadata overlayMetadata = pack.getMetadataSection(OverlayConditionsMetadata.SERIALIZER); if (overlayMetadata != null) { appliedOverlays.addAll(overlayMetadata.appliedOverlays()); diff --git a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/RegistryDataLoaderPendingRegistrationMixin.java b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/RegistryDataLoaderPendingRegistrationMixin.java index 374e88b6a5e..7bc1dc612fd 100644 --- a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/RegistryDataLoaderPendingRegistrationMixin.java +++ b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/RegistryDataLoaderPendingRegistrationMixin.java @@ -35,8 +35,8 @@ @Mixin(RegistryDataLoader.PendingRegistration.class) public abstract class RegistryDataLoaderPendingRegistrationMixin { @Inject(method = "loadFromResource", at = @At(value = "INVOKE", target = "Lcom/mojang/serialization/Decoder;parse(Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult;"), cancellable = true) - private static void loadFromResource(Decoder elementDecoder, RegistryOps ops, ResourceKey elementKey, Resource thunk, CallbackInfoReturnable> cir, @Local JsonElement jsonElement) { - if (jsonElement.isJsonObject() && !ResourceConditionsImpl.applyResourceConditions(jsonElement.getAsJsonObject(), elementKey.registry().toString(), elementKey.identifier(), ops.lookupProvider)) { + private static void loadFromResource(Decoder elementDecoder, RegistryOps ops, ResourceKey elementKey, Resource thunk, CallbackInfoReturnable> cir, @Local(name = "json") JsonElement json) { + if (json.isJsonObject() && !ResourceConditionsImpl.applyResourceConditions(json.getAsJsonObject(), elementKey.registry().toString(), elementKey.identifier(), ops.lookupProvider)) { cir.setReturnValue(Either.right(ResourceConditionsImpl.DISABLED_RESOURCE_EXCEPTION)); } } diff --git a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/ReloadableServerResourcesMixin.java b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/ReloadableServerResourcesMixin.java index d5f4b348cb7..0f071aa6188 100644 --- a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/ReloadableServerResourcesMixin.java +++ b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/ReloadableServerResourcesMixin.java @@ -42,7 +42,7 @@ public class ReloadableServerResourcesMixin { method = "loadResources", at = @At("HEAD") ) - private static void hookReload(ResourceManager resourceManager, LayeredRegistryAccess dynamicRegistries, List> pendingTagLoads, FeatureFlagSet enabledFeatures, Commands.CommandSelection environment, PermissionSet permissionPredicate, Executor prepareExecutor, Executor applyExecutor, CallbackInfoReturnable> cir) { + private static void hookReload(ResourceManager resourceManager, LayeredRegistryAccess contextLayers, List> updatedContextTags, FeatureFlagSet enabledFeatures, Commands.CommandSelection commandSelection, PermissionSet functionCompilationPermissions, Executor backgroundExecutor, Executor mainThreadExecutor, CallbackInfoReturnable> cir) { ResourceConditionsImpl.currentFeatures = enabledFeatures; } } diff --git a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/SimpleJsonResourceReloadListenerMixin.java b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/SimpleJsonResourceReloadListenerMixin.java index 47005e6909c..14c03f36b2c 100644 --- a/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/SimpleJsonResourceReloadListenerMixin.java +++ b/fabric-resource-conditions-api-v1/src/main/java/net/fabricmc/fabric/mixin/resource/conditions/SimpleJsonResourceReloadListenerMixin.java @@ -48,8 +48,8 @@ public class SimpleJsonResourceReloadListenerMixin { @WrapOperation(method = "scanDirectory(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/resources/FileToIdConverter;Lcom/mojang/serialization/DynamicOps;Lcom/mojang/serialization/Codec;Ljava/util/Map;)V", at = @At(value = "INVOKE", target = "Lcom/mojang/serialization/Codec;parse(Lcom/mojang/serialization/DynamicOps;Ljava/lang/Object;)Lcom/mojang/serialization/DataResult;")) private static DataResult applyResourceConditions(Codec instance, DynamicOps dynamicOps, Object object, Operation> original, - @Local(argsOnly = true) FileToIdConverter resourceFinder, - @Local Map.Entry entry) { + @Local(argsOnly = true, name = "lister") FileToIdConverter lister, + @Local(name = "entry") Map.Entry entry) { final JsonElement resourceData = (JsonElement) object; RegistryOps.@Nullable RegistryInfoLookup registryInfo = null; @@ -60,7 +60,7 @@ private static DataResult applyResourceConditions(Codec instance, DynamicO if (resourceData.isJsonObject()) { JsonObject obj = resourceData.getAsJsonObject(); - final String dataType = ((FileToIdConverterAccessor) resourceFinder).getDirectoryName(); + final String dataType = ((FileToIdConverterAccessor) lister).getDirectoryName(); if (!ResourceConditionsImpl.applyResourceConditions(obj, dataType, entry.getKey(), registryInfo)) { return DataResult.success(SKIP_DATA_MARKER); @@ -72,8 +72,8 @@ private static DataResult applyResourceConditions(Codec instance, DynamicO // parse.ifSuccess @Inject(method = "lambda$scanDirectory$0", at = @At("HEAD"), cancellable = true) - private static void skipData(Map map, Identifier identifier, Object object, CallbackInfo ci) { - if (object == SKIP_DATA_MARKER) { + private static void skipData(Map result, Identifier id, Object parsed, CallbackInfo ci) { + if (parsed == SKIP_DATA_MARKER) { ci.cancel(); } } diff --git a/fabric-resource-conditions-api-v1/src/main/resources/fabric.mod.json b/fabric-resource-conditions-api-v1/src/main/resources/fabric.mod.json index 37e3145d6fa..5051cd9218d 100644 --- a/fabric-resource-conditions-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-resource-conditions-api-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3" + "fabricloader": ">=0.18.4" }, "description": "Allows conditionally loading resources.", "entrypoints": { diff --git a/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/BuiltInPackSourceMixin.java b/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/BuiltInPackSourceMixin.java index 57288292ee2..4028a004906 100644 --- a/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/BuiltInPackSourceMixin.java +++ b/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/BuiltInPackSourceMixin.java @@ -32,11 +32,11 @@ @Mixin(BuiltInPackSource.class) public class BuiltInPackSourceMixin { @Inject(method = "loadPacks", at = @At("RETURN")) - private void addBuiltinResourcePacks(Consumer consumer, CallbackInfo ci) { + private void addBuiltinResourcePacks(Consumer result, CallbackInfo ci) { // Register mod and built-in resource packs after the vanilla built-in resource packs are registered. // noinspection ConstantConditions if ((Object) this instanceof ClientPackSource) { - ModResourcePackCreator.CLIENT_RESOURCE_PACK_PROVIDER.loadPacks(consumer); + ModResourcePackCreator.CLIENT_RESOURCE_PACK_PROVIDER.loadPacks(result); } } } diff --git a/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/ClientTooltipComponentMixin.java b/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/ClientTooltipComponentMixin.java index 991643e928d..d53a1b5a575 100644 --- a/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/ClientTooltipComponentMixin.java +++ b/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/ClientTooltipComponentMixin.java @@ -30,8 +30,8 @@ @Mixin(ClientTooltipComponent.class) public interface ClientTooltipComponentMixin { @Inject(method = "create(Lnet/minecraft/world/inventory/tooltip/TooltipComponent;)Lnet/minecraft/client/gui/screens/inventory/tooltip/ClientTooltipComponent;", at = @At("HEAD"), cancellable = true) - private static void onCreate(TooltipComponent tooltipComponent, CallbackInfoReturnable cir) { - if (tooltipComponent instanceof PackTooltipComponent packTooltipComponent) { + private static void onCreate(TooltipComponent component, CallbackInfoReturnable cir) { + if (component instanceof PackTooltipComponent packTooltipComponent) { cir.setReturnValue(packTooltipComponent); } } diff --git a/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/CreateWorldScreenMixin.java b/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/CreateWorldScreenMixin.java index d40598de46c..57558790105 100644 --- a/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/CreateWorldScreenMixin.java +++ b/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/CreateWorldScreenMixin.java @@ -46,11 +46,12 @@ private CreateWorldScreenMixin() { } @ModifyVariable(method = "openCreateWorldScreen(Lnet/minecraft/client/Minecraft;Ljava/lang/Runnable;Ljava/util/function/Function;Lnet/minecraft/client/gui/screens/worldselection/WorldCreationContextMapper;Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/client/gui/screens/worldselection/CreateWorldCallback;)V", - at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/worldselection/CreateWorldScreen;createDefaultLoadConfig(Lnet/minecraft/server/packs/repository/PackRepository;Lnet/minecraft/world/level/WorldDataConfiguration;)Lnet/minecraft/server/WorldLoader$InitConfig;")) - private static PackRepository onCreateResManagerInit(PackRepository manager) { + at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/worldselection/CreateWorldScreen;createDefaultLoadConfig(Lnet/minecraft/server/packs/repository/PackRepository;Lnet/minecraft/world/level/WorldDataConfiguration;)Lnet/minecraft/server/WorldLoader$InitConfig;"), + name = "vanillaOnlyPackRepository") + private static PackRepository onCreateResManagerInit(PackRepository vanillaOnlyPackRepository) { // Add mod data packs to the initial res pack manager so they are active even if the user doesn't use custom data packs - manager.sources.add(new ModResourcePackCreator(PackType.SERVER_DATA)); - return manager; + vanillaOnlyPackRepository.sources.add(new ModResourcePackCreator(PackType.SERVER_DATA)); + return vanillaOnlyPackRepository; } @Redirect(method = "openCreateWorldScreen(Lnet/minecraft/client/Minecraft;Ljava/lang/Runnable;Ljava/util/function/Function;Lnet/minecraft/client/gui/screens/worldselection/WorldCreationContextMapper;Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/client/gui/screens/worldselection/CreateWorldCallback;)V", @@ -60,7 +61,7 @@ private static WorldDataConfiguration replaceDefaultSettings() { } @Inject(method = "getDataPackSelectionSettings", - at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/repository/PackRepository;reload()V", shift = At.Shift.BEFORE)) + at = @At(value = "INVOKE", target = "Lnet/minecraft/server/packs/repository/PackRepository;reload()V")) private void onScanPacks(CallbackInfoReturnable> cir) { // Allow to display built-in data packs in the data pack selection screen at world creation. this.tempDataPackRepository.sources.add(new ModResourcePackCreator(PackType.SERVER_DATA)); diff --git a/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/GameOptionsWriteVisitorMixin.java b/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/GameOptionsWriteVisitorMixin.java index 9f45d427342..f3d3599d1e2 100644 --- a/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/GameOptionsWriteVisitorMixin.java +++ b/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/GameOptionsWriteVisitorMixin.java @@ -53,8 +53,8 @@ private static List toPackListString(List packs) { @SuppressWarnings("unchecked") @ModifyArg(method = "process(Ljava/lang/String;Ljava/lang/Object;Ljava/util/function/Function;Ljava/util/function/Function;)Ljava/lang/Object;", at = @At(value = "INVOKE", target = "Ljava/util/function/Function;apply(Ljava/lang/Object;)Ljava/lang/Object;")) - private T skipHiddenPacks(T value, @Local String key) { - if ("resourcePacks".equals(key) && value instanceof List) { + private T skipHiddenPacks(T value, @Local(argsOnly = true, name = "name") String name) { + if ("resourcePacks".equals(name) && value instanceof List) { return (T) toPackListString((List) value); } diff --git a/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/PackSelectionModelMixin.java b/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/PackSelectionModelMixin.java index 873b77bd186..3e17ff05172 100644 --- a/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/PackSelectionModelMixin.java +++ b/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/PackSelectionModelMixin.java @@ -37,18 +37,18 @@ public class PackSelectionModelMixin { @Shadow @Final - List selected; + private List selected; @Shadow @Final - List unselected; + private List unselected; /** * Do not list hidden packs in either enabledPacks or disabledPacks. * They are managed entirely by PackRepository on save, and are invisible to client. */ @Inject(method = "", at = @At("TAIL")) - private void removeHiddenPacksInit(Consumer updateCallback, Function iconIdSupplier, PackRepository packRepository, Consumer applier, CallbackInfo ci) { + private void removeHiddenPacksInit(Consumer onListChanged, Function iconGetter, PackRepository repository, Consumer output, CallbackInfo ci) { this.selected.removeIf(profile -> ((FabricPack) profile).fabric$isHidden()); this.unselected.removeIf(profile -> ((FabricPack) profile).fabric$isHidden()); } diff --git a/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/TransferableSelectionListPackEntryMixin.java b/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/TransferableSelectionListPackEntryMixin.java index e276c8468d6..e77fdcd1402 100644 --- a/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/TransferableSelectionListPackEntryMixin.java +++ b/fabric-resource-loader-v1/src/client/java/net/fabricmc/fabric/mixin/resource/client/TransferableSelectionListPackEntryMixin.java @@ -60,7 +60,7 @@ class TransferableSelectionListPackEntryMixin { @Inject(method = "renderContent", at = @At("RETURN")) private void onRenderContent( - GuiGraphics graphics, int mouseX, int mouseY, boolean hovered, float tickDelta, CallbackInfo ci + GuiGraphics graphics, int mouseX, int mouseY, boolean hovered, float a, CallbackInfo ci ) { if (hovered) { Component name = null; diff --git a/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/DataPackCommandMixin.java b/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/DataPackCommandMixin.java index 0547ebc5be8..9ef86922e72 100644 --- a/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/DataPackCommandMixin.java +++ b/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/DataPackCommandMixin.java @@ -61,8 +61,8 @@ private static Stream filterDisabledPackSuggestions(Stream instance, return original.call(instance, predicate).filter(profile -> !((FabricPack) profile).fabric$isHidden()); } - @Inject(method = "getPack", at = @At(value = "INVOKE", target = "Ljava/util/Collection;contains(Ljava/lang/Object;)Z", shift = At.Shift.BEFORE)) - private static void errorOnInternalPack(CommandContext context, String name, boolean enable, CallbackInfoReturnable cir, @Local Pack profile) throws CommandSyntaxException { - if (((FabricPack) profile).fabric$isHidden()) throw INTERNAL_PACK_EXCEPTION.create(profile.getId()); + @Inject(method = "getPack", at = @At(value = "INVOKE", target = "Ljava/util/Collection;contains(Ljava/lang/Object;)Z")) + private static void errorOnInternalPack(CommandContext context, String name, boolean enabling, CallbackInfoReturnable cir, @Local(name = "pack") Pack pack) throws CommandSyntaxException { + if (((FabricPack) pack).fabric$isHidden()) throw INTERNAL_PACK_EXCEPTION.create(pack.getId()); } } diff --git a/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/MinecraftServerMixin.java b/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/MinecraftServerMixin.java index 03eeda4287c..2e9267de30e 100644 --- a/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/MinecraftServerMixin.java +++ b/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/MinecraftServerMixin.java @@ -61,12 +61,12 @@ public T getOrThrow(Key key) { } @Inject(method = "", at = @At("TAIL")) - private void init(Thread serverThread, LevelStorageSource.LevelStorageAccess storageAccess, PackRepository dataPackManager, WorldStem worldStem, Proxy proxy, DataFixer dataFixer, Services apiServices, LevelLoadListener chunkLoadProgress, CallbackInfo ci) { + private void init(Thread serverThread, LevelStorageSource.LevelStorageAccess storageSource, PackRepository packRepository, WorldStem worldStem, Proxy proxy, DataFixer fixerUpper, Services services, LevelLoadListener levelLoadListener, CallbackInfo ci) { this.originalKnownPacks = worldStem.resourceManager().listPacks().flatMap(pack -> pack.location().knownPackInfo().stream()).toList(); } @Redirect(method = "configurePackRepository(Lnet/minecraft/server/packs/repository/PackRepository;Lnet/minecraft/world/level/WorldDataConfiguration;ZZ)Lnet/minecraft/world/level/WorldDataConfiguration;", at = @At(value = "INVOKE", target = "Ljava/util/List;contains(Ljava/lang/Object;)Z")) - private static boolean onCheckDisabled(List list, Object o, PackRepository resourcePackManager) { + private static boolean onCheckDisabled(List list, Object o, PackRepository packRepository) { String profileId = (String) o; boolean contains = list.contains(profileId); @@ -74,7 +74,7 @@ private static boolean onCheckDisabled(List list, Object o, PackReposito return true; } - Pack profile = resourcePackManager.getPack(profileId); + Pack profile = packRepository.getPack(profileId); if (profile.getPackSource() instanceof BuiltinModPackSource) { try (PackResources pack = profile.open()) { diff --git a/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/MultiPackResourceManagerMixin.java b/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/MultiPackResourceManagerMixin.java index 234ab9e9f19..e9ae68330e9 100644 --- a/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/MultiPackResourceManagerMixin.java +++ b/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/MultiPackResourceManagerMixin.java @@ -36,7 +36,7 @@ public class MultiPackResourceManagerMixin implements FabricMultiPackResourceMan private PackType packType; @Inject(method = "", at = @At("TAIL")) - private void init(PackType type, List list, CallbackInfo ci) { + private void init(PackType type, List packs, CallbackInfo ci) { this.packType = type; } diff --git a/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/PackRepositoryMixin.java b/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/PackRepositoryMixin.java index ffc6d08bdb8..e5e3dc68580 100644 --- a/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/PackRepositoryMixin.java +++ b/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/PackRepositoryMixin.java @@ -61,7 +61,7 @@ public abstract class PackRepositoryMixin { private Map available; @Inject(method = "", at = @At("RETURN")) - public void construct(RepositorySource[] resourcePackProviders, CallbackInfo info) { + public void construct(RepositorySource[] sources, CallbackInfo info) { // Use a LinkedHashSet to preserve ordering this.sources = new LinkedHashSet<>(this.sources); @@ -83,24 +83,24 @@ public void construct(RepositorySource[] resourcePackProviders, CallbackInfo inf } } - @Inject(method = "rebuildSelected", at = @At(value = "INVOKE", target = "Lcom/google/common/collect/ImmutableList;copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList;", shift = At.Shift.BEFORE)) - private void handleAutoEnableDisable(Collection enabledNames, CallbackInfoReturnable> cir, @Local List enabledAfterFirstRun) { - ModPackResourcesUtil.refreshAutoEnabledPacks(enabledAfterFirstRun, this.available); + @Inject(method = "rebuildSelected", at = @At(value = "INVOKE", target = "Lcom/google/common/collect/ImmutableList;copyOf(Ljava/util/Collection;)Lcom/google/common/collect/ImmutableList;")) + private void handleAutoEnableDisable(Collection selectedNames, CallbackInfoReturnable> cir, @Local(name = "selectedAndPresent") List selectedAndPresent) { + ModPackResourcesUtil.refreshAutoEnabledPacks(selectedAndPresent, this.available); } @Inject(method = "addPack", at = @At(value = "INVOKE", target = "Ljava/util/List;add(Ljava/lang/Object;)Z", shift = At.Shift.AFTER)) - private void handleAutoEnable(String profile, CallbackInfoReturnable cir, @Local List newlyEnabled) { - if (ModResourcePackCreator.POST_CHANGE_HANDLE_REQUIRED.contains(profile)) { - ModPackResourcesUtil.refreshAutoEnabledPacks(newlyEnabled, this.available); + private void handleAutoEnable(String packId, CallbackInfoReturnable cir, @Local(name = "selectedCopy") List selectedCopy) { + if (ModResourcePackCreator.POST_CHANGE_HANDLE_REQUIRED.contains(packId)) { + ModPackResourcesUtil.refreshAutoEnabledPacks(selectedCopy, this.available); } } @Inject(method = "removePack", at = @At(value = "INVOKE", target = "Ljava/util/List;remove(Ljava/lang/Object;)Z")) - private void handleAutoDisable(String profile, CallbackInfoReturnable cir, @Local List enabled) { - if (ModResourcePackCreator.POST_CHANGE_HANDLE_REQUIRED.contains(profile)) { - Set currentlyEnabled = enabled.stream().map(Pack::getId).collect(Collectors.toSet()); - enabled.removeIf(p -> !((FabricPack) p).fabric$parentsEnabled(currentlyEnabled)); - LOGGER.debug("[Fabric] Internal pack auto-removed upon disabling {}, result: {}", profile, enabled.stream().map(Pack::getId).toList()); + private void handleAutoDisable(String packId, CallbackInfoReturnable cir, @Local(name = "selectedCopy") List selectedCopy) { + if (ModResourcePackCreator.POST_CHANGE_HANDLE_REQUIRED.contains(packId)) { + Set currentlyEnabled = selectedCopy.stream().map(Pack::getId).collect(Collectors.toSet()); + selectedCopy.removeIf(p -> !((FabricPack) p).fabric$parentsEnabled(currentlyEnabled)); + LOGGER.debug("[Fabric] Internal pack auto-removed upon disabling {}, result: {}", packId, selectedCopy.stream().map(Pack::getId).toList()); } } } diff --git a/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/ReloadableServerResourcesMixin.java b/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/ReloadableServerResourcesMixin.java index f1d87632b86..a0223501b21 100644 --- a/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/ReloadableServerResourcesMixin.java +++ b/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/ReloadableServerResourcesMixin.java @@ -50,16 +50,16 @@ public class ReloadableServerResourcesMixin implements FabricDataResourceStoreHo ) private static List onSetupDataReloaders( List reloaders, - @Local(argsOnly = true) ReloadableServerRegistries.LoadResult loadResult, - @Local(argsOnly = true) FeatureFlagSet featureSet, - @Local ReloadableServerResources dataPackContents + @Local(argsOnly = true, name = "fullRegistries") ReloadableServerRegistries.LoadResult fullRegistries, + @Local(argsOnly = true, name = "enabledFeatures") FeatureFlagSet enabledFeatures, + @Local(name = "result") ReloadableServerResources result ) { var list = new ArrayList<>(reloaders); list.addFirst( new SetupMarkerResourceReloader( - dataPackContents, - loadResult.lookupWithUpdatedTags(), - featureSet + result, + fullRegistries.lookupWithUpdatedTags(), + enabledFeatures ) ); return Collections.unmodifiableList(list); diff --git a/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/SimpleReloadInstanceMixin.java b/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/SimpleReloadInstanceMixin.java index 046606046b5..b70330e8207 100644 --- a/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/SimpleReloadInstanceMixin.java +++ b/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/SimpleReloadInstanceMixin.java @@ -40,7 +40,7 @@ public class SimpleReloadInstanceMixin { target = "Lnet/minecraft/server/packs/resources/SimpleReloadInstance;of(Lnet/minecraft/server/packs/resources/ResourceManager;Ljava/util/List;Ljava/util/concurrent/Executor;Ljava/util/concurrent/Executor;Ljava/util/concurrent/CompletableFuture;)Lnet/minecraft/server/packs/resources/ReloadInstance;" ) ) - private static List sortSimple(List reloaders, @Local(argsOnly = true) ResourceManager resourceManager) { + private static List sortSimple(List reloaders, @Local(argsOnly = true, name = "resourceManager") ResourceManager resourceManager) { if (resourceManager instanceof FabricMultiPackResourceManager flrm) { return ResourceLoaderImpl.sort(flrm.fabric$getPackType(), reloaders); } @@ -55,7 +55,7 @@ private static List sortSimple(List sortProfiled(List reloaders, @Local(argsOnly = true) ResourceManager resourceManager) { + private static List sortProfiled(List reloaders, @Local(argsOnly = true, name = "resourceManager") ResourceManager resourceManager) { if (resourceManager instanceof FabricMultiPackResourceManager flrm) { return ResourceLoaderImpl.sort(flrm.fabric$getPackType(), reloaders); } @@ -66,9 +66,10 @@ private static List sortProfiled(List requestedPacks; @Shadow - protected abstract void sendRegistries(Consumer> sender, Set commonKnownPacks); + protected abstract void sendRegistries(Consumer> connection, Set negotiatedPacks); @Inject(method = "handleResponse", at = @At("HEAD"), cancellable = true) - public void onSelectKnownPacks(List clientKnownPacks, Consumer> sender, CallbackInfo ci) { - if (new HashSet<>(this.requestedPacks).containsAll(clientKnownPacks)) { - this.sendRegistries(sender, Set.copyOf(clientKnownPacks)); + public void onSelectKnownPacks(List acceptedPacks, Consumer> connection, CallbackInfo ci) { + if (new HashSet<>(this.requestedPacks).containsAll(acceptedPacks)) { + this.sendRegistries(connection, Set.copyOf(acceptedPacks)); ci.cancel(); } } @Inject(method = "sendRegistries", at = @At("HEAD")) - public void syncRegistryAndTags(Consumer> sender, Set commonKnownPacks, CallbackInfo ci) { - LOGGER.debug("Synchronizing registries with common known packs: {}", commonKnownPacks); + public void syncRegistryAndTags(Consumer> connection, Set negotiatedPacks, CallbackInfo ci) { + LOGGER.debug("Synchronizing registries with common known packs: {}", negotiatedPacks); } @Inject(method = "start", at = @At("HEAD"), cancellable = true) - private void sendPacket(Consumer> sender, CallbackInfo ci) { + private void sendPacket(Consumer> connection, CallbackInfo ci) { if (this.requestedPacks.size() > ModResourcePackCreator.MAX_KNOWN_PACKS) { LOGGER.warn("Too many knownPacks: Found {}; max {}", this.requestedPacks.size(), ModResourcePackCreator.MAX_KNOWN_PACKS); - sender.accept(new ClientboundSelectKnownPacks(this.requestedPacks.subList(0, ModResourcePackCreator.MAX_KNOWN_PACKS))); + connection.accept(new ClientboundSelectKnownPacks(this.requestedPacks.subList(0, ModResourcePackCreator.MAX_KNOWN_PACKS))); ci.cancel(); } } diff --git a/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/server/LanguageMixin.java b/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/server/LanguageMixin.java index fc90c6409fb..45f61d28812 100644 --- a/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/server/LanguageMixin.java +++ b/fabric-resource-loader-v1/src/main/java/net/fabricmc/fabric/mixin/resource/server/LanguageMixin.java @@ -55,12 +55,12 @@ private static Map create(Map map) { } @Redirect(method = "parseTranslations(Ljava/util/function/BiConsumer;Ljava/lang/String;)V", at = @At(value = "INVOKE", target = "Ljava/lang/Class;getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;")) - private static InputStream readCorrectVanillaResource(Class instance, String path) throws IOException { + private static InputStream readCorrectVanillaResource(Class instance, String name) throws IOException { ModContainer mod = FabricLoader.getInstance().getModContainer("minecraft").orElseThrow(); - Path langPath = mod.findPath(path).orElse(null); + Path langPath = mod.findPath(name).orElse(null); if (langPath == null) { - throw new IOException("Could not read %s from minecraft ModContainer".formatted(path)); + throw new IOException("Could not read %s from minecraft ModContainer".formatted(name)); } else { return Files.newInputStream(langPath); } @@ -77,6 +77,6 @@ private static void loadFromPath(Path path, BiConsumer entryCons } @Shadow - public static void loadFromJson(InputStream inputStream, BiConsumer entryConsumer) { + public static void loadFromJson(InputStream stream, BiConsumer output) { } } diff --git a/fabric-resource-loader-v1/src/main/resources/fabric.mod.json b/fabric-resource-loader-v1/src/main/resources/fabric.mod.json index aadd36a7413..abc80a035f9 100644 --- a/fabric-resource-loader-v1/src/main/resources/fabric.mod.json +++ b/fabric-resource-loader-v1/src/main/resources/fabric.mod.json @@ -17,7 +17,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3" + "fabricloader": ">=0.18.4" }, "description": "Asset and data resource loading.", "accessWidener": "fabric-resource-loader-v1.accesswidener", diff --git a/fabric-resource-loader-v1/src/testmod/java/net/fabricmc/fabric/test/resource/loader/mixin/SynchronizeRegistriesTaskMixin.java b/fabric-resource-loader-v1/src/testmod/java/net/fabricmc/fabric/test/resource/loader/mixin/SynchronizeRegistriesTaskMixin.java index 0a8b8d0d797..cc303b718c0 100644 --- a/fabric-resource-loader-v1/src/testmod/java/net/fabricmc/fabric/test/resource/loader/mixin/SynchronizeRegistriesTaskMixin.java +++ b/fabric-resource-loader-v1/src/testmod/java/net/fabricmc/fabric/test/resource/loader/mixin/SynchronizeRegistriesTaskMixin.java @@ -40,11 +40,11 @@ public class SynchronizeRegistriesTaskMixin { private List requestedPacks; @Inject(method = "sendRegistries", at = @At("HEAD")) - public void syncRegistryAndTags(Consumer> sender, Set commonKnownPacks, CallbackInfo ci) { - BuiltinPackTestMod.LOGGER.info("Synchronizing registries with common known packs: {}", commonKnownPacks); + public void syncRegistryAndTags(Consumer> connection, Set negotiatedPacks, CallbackInfo ci) { + BuiltinPackTestMod.LOGGER.info("Synchronizing registries with common known packs: {}", negotiatedPacks); - if (!commonKnownPacks.containsAll(this.requestedPacks)) { - BuiltinPackTestMod.LOGGER.error("(Ignore when not local client) Not all server mod data packs known to client. Missing: {}", this.requestedPacks.stream().filter(knownPack -> !commonKnownPacks.contains(knownPack)).toList()); + if (!negotiatedPacks.containsAll(this.requestedPacks)) { + BuiltinPackTestMod.LOGGER.error("(Ignore when not local client) Not all server mod data packs known to client. Missing: {}", this.requestedPacks.stream().filter(knownPack -> !negotiatedPacks.contains(knownPack)).toList()); } } } diff --git a/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/AbstractContainerScreenMixin.java b/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/AbstractContainerScreenMixin.java index d2ece3b2891..2fd510cec0b 100644 --- a/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/AbstractContainerScreenMixin.java +++ b/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/AbstractContainerScreenMixin.java @@ -33,15 +33,15 @@ private AbstractContainerScreenMixin(Component title) { } @Inject(method = "mouseReleased", at = @At("HEAD"), cancellable = true) - private void callSuperMouseReleased(MouseButtonEvent ctx, CallbackInfoReturnable cir) { - if (super.mouseReleased(ctx)) { + private void callSuperMouseReleased(MouseButtonEvent event, CallbackInfoReturnable cir) { + if (super.mouseReleased(event)) { cir.setReturnValue(true); } } @Inject(method = "mouseDragged", at = @At("HEAD"), cancellable = true) - private void callSuperMouseReleased(MouseButtonEvent ctx, double deltaX, double deltaY, CallbackInfoReturnable cir) { - if (super.mouseDragged(ctx, deltaX, deltaY)) { + private void callSuperMouseReleased(MouseButtonEvent event, double dx, double dy, CallbackInfoReturnable cir) { + if (super.mouseDragged(event, dx, dy)) { cir.setReturnValue(true); } } diff --git a/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/GameRendererMixin.java b/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/GameRendererMixin.java index 7d24122c55a..5cf309c52c3 100644 --- a/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/GameRendererMixin.java +++ b/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/GameRendererMixin.java @@ -30,9 +30,9 @@ @Mixin(GameRenderer.class) abstract class GameRendererMixin { @WrapOperation(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;renderWithTooltipAndSubtitles(Lnet/minecraft/client/gui/GuiGraphics;IIF)V")) - private void onRenderScreen(Screen currentScreen, GuiGraphics graphics, int mouseX, int mouseY, float tickDelta, Operation operation) { - ScreenEvents.beforeRender(currentScreen).invoker().beforeRender(currentScreen, graphics, mouseX, mouseY, tickDelta); - operation.call(currentScreen, graphics, mouseX, mouseY, tickDelta); - ScreenEvents.afterRender(currentScreen).invoker().afterRender(currentScreen, graphics, mouseX, mouseY, tickDelta); + private void onRenderScreen(Screen currentScreen, GuiGraphics graphics, int mouseX, int mouseY, float a, Operation operation) { + ScreenEvents.beforeRender(currentScreen).invoker().beforeRender(currentScreen, graphics, mouseX, mouseY, a); + operation.call(currentScreen, graphics, mouseX, mouseY, a); + ScreenEvents.afterRender(currentScreen).invoker().afterRender(currentScreen, graphics, mouseX, mouseY, a); } } diff --git a/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/KeyboardHandlerMixin.java b/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/KeyboardHandlerMixin.java index 2137666d91e..15ff1515af1 100644 --- a/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/KeyboardHandlerMixin.java +++ b/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/KeyboardHandlerMixin.java @@ -30,23 +30,23 @@ @Mixin(KeyboardHandler.class) abstract class KeyboardHandlerMixin { @WrapOperation(method = "keyPress", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;keyPressed(Lnet/minecraft/client/input/KeyEvent;)Z")) - private boolean invokeKeyPressedEvents(Screen screen, KeyEvent ctx, Operation operation) { + private boolean invokeKeyPressedEvents(Screen screen, KeyEvent event, Operation operation) { // The screen passed to events is the same as the screen the handler method is called on, // regardless of whether the screen changes within the handler or event invocations. if (screen != null) { - if (!ScreenKeyboardEvents.allowKeyPress(screen).invoker().allowKeyPress(screen, ctx)) { + if (!ScreenKeyboardEvents.allowKeyPress(screen).invoker().allowKeyPress(screen, event)) { // Set this press action as handled return true; } - ScreenKeyboardEvents.beforeKeyPress(screen).invoker().beforeKeyPress(screen, ctx); + ScreenKeyboardEvents.beforeKeyPress(screen).invoker().beforeKeyPress(screen, event); } - boolean result = operation.call(screen, ctx); + boolean result = operation.call(screen, event); if (screen != null) { - ScreenKeyboardEvents.afterKeyPress(screen).invoker().afterKeyPress(screen, ctx); + ScreenKeyboardEvents.afterKeyPress(screen).invoker().afterKeyPress(screen, event); } return result; diff --git a/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/ScreenMixin.java b/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/ScreenMixin.java index 62758d002fa..e148d516ce3 100644 --- a/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/ScreenMixin.java +++ b/fabric-screen-api-v1/src/client/java/net/fabricmc/fabric/mixin/screen/ScreenMixin.java @@ -110,8 +110,8 @@ abstract class ScreenMixin implements ScreenExtensions { private Event afterMouseScrollEvent; @Inject(method = "renderWithTooltipAndSubtitles", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screens/Screen;renderBackground(Lnet/minecraft/client/gui/GuiGraphics;IIF)V", shift = At.Shift.AFTER)) - public final void renderWithTooltip(GuiGraphics graphics, int mouseX, int mouseY, float deltaTicks, CallbackInfo ci) { - ScreenEvents.afterBackground(((Screen) (Object) this)).invoker().afterBackground((Screen) (Object) this, graphics, mouseX, mouseY, deltaTicks); + public final void renderWithTooltip(GuiGraphics graphics, int mouseX, int mouseY, float a, CallbackInfo ci) { + ScreenEvents.afterBackground(((Screen) (Object) this)).invoker().afterBackground((Screen) (Object) this, graphics, mouseX, mouseY, a); } @Inject(method = "init(II)V", at = @At("HEAD")) diff --git a/fabric-screen-api-v1/src/client/resources/fabric.mod.json b/fabric-screen-api-v1/src/client/resources/fabric.mod.json index 7253b3e2363..ff543e3862a 100644 --- a/fabric-screen-api-v1/src/client/resources/fabric.mod.json +++ b/fabric-screen-api-v1/src/client/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*" }, "description": "Adds screen related hooks.", diff --git a/fabric-serialization-api-v1/src/main/resources/fabric.mod.json b/fabric-serialization-api-v1/src/main/resources/fabric.mod.json index 9741dc092c7..a9a052aa15e 100644 --- a/fabric-serialization-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-serialization-api-v1/src/main/resources/fabric.mod.json @@ -19,7 +19,7 @@ "fabric-serialization-api-v1.mixins.json" ], "depends": { - "fabricloader": ">=0.18.3" + "fabricloader": ">=0.18.4" }, "description": "Extensions for improved serialization.", "custom": { diff --git a/fabric-sound-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/sound/SoundEngineMixin.java b/fabric-sound-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/sound/SoundEngineMixin.java index c3b6aa0a148..774a12ac764 100644 --- a/fabric-sound-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/sound/SoundEngineMixin.java +++ b/fabric-sound-api-v1/src/client/java/net/fabricmc/fabric/mixin/client/sound/SoundEngineMixin.java @@ -36,7 +36,7 @@ public class SoundEngineMixin { target = "Lnet/minecraft/client/sounds/SoundBufferLibrary;getStream(Lnet/minecraft/resources/Identifier;Z)Ljava/util/concurrent/CompletableFuture;" ) ) - private CompletableFuture getStream(SoundBufferLibrary library, Identifier id, boolean looping, SoundInstance sound) { - return sound.getAudioStream(library, id, looping); + private CompletableFuture getStream(SoundBufferLibrary library, Identifier location, boolean looping, SoundInstance instance) { + return instance.getAudioStream(library, location, looping); } } diff --git a/fabric-sound-api-v1/src/client/resources/fabric.mod.json b/fabric-sound-api-v1/src/client/resources/fabric.mod.json index 35a93589fa8..d90ece09894 100644 --- a/fabric-sound-api-v1/src/client/resources/fabric.mod.json +++ b/fabric-sound-api-v1/src/client/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "minecraft": ">=1.19.2" }, "description": "Hooks for modifying Minecraft's sound system.", diff --git a/fabric-tag-api-v1/src/main/java/net/fabricmc/fabric/mixin/tag/MappedRegistryMixin.java b/fabric-tag-api-v1/src/main/java/net/fabricmc/fabric/mixin/tag/MappedRegistryMixin.java index 519a5ff9d55..2e30b950095 100644 --- a/fabric-tag-api-v1/src/main/java/net/fabricmc/fabric/mixin/tag/MappedRegistryMixin.java +++ b/fabric-tag-api-v1/src/main/java/net/fabricmc/fabric/mixin/tag/MappedRegistryMixin.java @@ -57,13 +57,13 @@ abstract class MappedRegistryMixin implements MappedRegistryExtension, TagAli private ResourceKey> key; @Shadow - MappedRegistry.TagSet allTags; + private MappedRegistry.TagSet allTags; @Shadow protected abstract HolderSet.Named createTag(TagKey tag); @Shadow - abstract void refreshTagsInHolders(); + protected abstract void refreshTagsInHolders(); @Shadow public abstract ResourceKey> key(); diff --git a/fabric-tag-api-v1/src/main/java/net/fabricmc/fabric/mixin/tag/ReloadableServerResourcesMixin.java b/fabric-tag-api-v1/src/main/java/net/fabricmc/fabric/mixin/tag/ReloadableServerResourcesMixin.java index 6a396633a9d..d3abc383236 100644 --- a/fabric-tag-api-v1/src/main/java/net/fabricmc/fabric/mixin/tag/ReloadableServerResourcesMixin.java +++ b/fabric-tag-api-v1/src/main/java/net/fabricmc/fabric/mixin/tag/ReloadableServerResourcesMixin.java @@ -44,8 +44,8 @@ abstract class ReloadableServerResourcesMixin { private LayeredRegistryAccess dynamicRegistriesByType; @Inject(method = "", at = @At("RETURN")) - private void storeDynamicRegistries(LayeredRegistryAccess dynamicRegistries, HolderLookup.Provider registries, FeatureFlagSet enabledFeatures, Commands.CommandSelection environment, List pendingTagLoads, PermissionSet permissionPredicate, CallbackInfo ci) { - dynamicRegistriesByType = dynamicRegistries; + private void storeDynamicRegistries(LayeredRegistryAccess fullLayers, HolderLookup.Provider loadingContext, FeatureFlagSet enabledFeatures, Commands.CommandSelection commandSelection, List postponedTags, PermissionSet functionCompilationPermissions, CallbackInfo ci) { + dynamicRegistriesByType = fullLayers; } @Inject(method = "updateStaticRegistryTags", at = @At("RETURN")) diff --git a/fabric-tag-api-v1/src/main/java/net/fabricmc/fabric/mixin/tag/TagLoaderMixin.java b/fabric-tag-api-v1/src/main/java/net/fabricmc/fabric/mixin/tag/TagLoaderMixin.java index 52f7fe5dd0c..77a7e48566c 100644 --- a/fabric-tag-api-v1/src/main/java/net/fabricmc/fabric/mixin/tag/TagLoaderMixin.java +++ b/fabric-tag-api-v1/src/main/java/net/fabricmc/fabric/mixin/tag/TagLoaderMixin.java @@ -37,7 +37,7 @@ public class TagLoaderMixin { // Fixes a likely vanilla bug causing loot table tags to not get loaded. @WrapOperation(method = "loadTagsForRegistry(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/core/WritableRegistry;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/tags/TagLoader;loadTagsForRegistry(Lnet/minecraft/server/packs/resources/ResourceManager;Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/tags/TagLoader$ElementLookup;)Ljava/util/Map;")) - private static Map, List>> loadTagsForRegistry(ResourceManager manager, ResourceKey> registryKey, TagLoader.ElementLookup> lookup, Operation, List>>> original, @Local(argsOnly = true) WritableRegistry registry) { + private static Map, List>> loadTagsForRegistry(ResourceManager manager, ResourceKey> registryKey, TagLoader.ElementLookup> lookup, Operation, List>>> original, @Local(argsOnly = true, name = "registry") WritableRegistry registry) { Map, List>> tags = original.call(manager, registryKey, lookup); registry.bindTags(tags); return tags; diff --git a/fabric-tag-api-v1/src/main/resources/fabric.mod.json b/fabric-tag-api-v1/src/main/resources/fabric.mod.json index 4552a0e1a9e..3e3e67bca2a 100644 --- a/fabric-tag-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-tag-api-v1/src/main/resources/fabric.mod.json @@ -19,7 +19,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-base": "*", "fabric-resource-loader-v1": "*" }, diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/AbstractFurnaceBlockEntityMixin.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/AbstractFurnaceBlockEntityMixin.java index 7b82425cca9..02ed8a5404c 100644 --- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/AbstractFurnaceBlockEntityMixin.java +++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/AbstractFurnaceBlockEntityMixin.java @@ -42,9 +42,9 @@ public abstract class AbstractFurnaceBlockEntityMixin extends BaseContainerBlock @Shadow protected NonNullList items; @Shadow - int cookingTimer; + private int cookingTimer; @Shadow - int cookingTotalTime; + private int cookingTotalTime; @Unique private boolean fabric_suppressSpecialLogic = false; @@ -54,9 +54,9 @@ protected AbstractFurnaceBlockEntityMixin(BlockEntityType blockEntityType, Bl } @Inject(at = @At("HEAD"), method = "setItem", cancellable = true) - public void setStackSuppressUpdate(int slot, ItemStack stack, CallbackInfo ci) { + public void setStackSuppressUpdate(int slot, ItemStack itemStack, CallbackInfo ci) { if (fabric_suppressSpecialLogic) { - items.set(slot, stack); + items.set(slot, itemStack); ci.cancel(); } } @@ -83,7 +83,7 @@ public void fabric_onFinalCommit(int slot, ItemStack oldStack, ItemStack newStac } @Shadow - private static int getTotalCookTime(ServerLevel level, AbstractFurnaceBlockEntity abstractFurnaceBlockEntity) { + private static int getTotalCookTime(ServerLevel level, AbstractFurnaceBlockEntity entity) { throw new AssertionError(); } } diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/BucketItemMixin.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/BucketItemMixin.java index fc5f065772b..f7c1e3c3fa1 100644 --- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/BucketItemMixin.java +++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/BucketItemMixin.java @@ -43,9 +43,9 @@ public class BucketItemMixin { @ModifyVariable( method = "playEmptySound", at = @At("STORE"), - index = 4 + name = "soundEvent" ) - private SoundEvent hookEmptyingSound(SoundEvent previous) { - return FluidVariantAttributes.getHandlerOrDefault(content).getEmptySound(FluidVariant.of(content)).orElse(previous); + private SoundEvent hookEmptyingSound(SoundEvent soundEvent) { + return FluidVariantAttributes.getHandlerOrDefault(content).getEmptySound(FluidVariant.of(content)).orElse(soundEvent); } } diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/ChiseledBookShelfBlockEntityMixin.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/ChiseledBookShelfBlockEntityMixin.java index f2aeb4ed118..cea721863d1 100644 --- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/ChiseledBookShelfBlockEntityMixin.java +++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/ChiseledBookShelfBlockEntityMixin.java @@ -16,6 +16,7 @@ package net.fabricmc.fabric.mixin.transfer; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Unique; @@ -39,6 +40,7 @@ @Mixin(ChiseledBookShelfBlockEntity.class) public class ChiseledBookShelfBlockEntityMixin implements SpecialLogicContainer { @Shadow + @Final private NonNullList items; @Shadow private int lastInteractedSlot; // last interacted slot @@ -51,9 +53,9 @@ public void fabric_setSuppress(boolean suppress) { } @Inject(at = @At("HEAD"), method = "setItem", cancellable = true) - public void setStackBypass(int slot, ItemStack stack, CallbackInfo ci) { + public void setStackBypass(int slot, ItemStack itemStack, CallbackInfo ci) { if (fabric_suppressSpecialLogic) { - items.set(slot, stack); + items.set(slot, itemStack); ci.cancel(); } } diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/CrafterBlockMixin.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/CrafterBlockMixin.java index 50b6bee4027..4e9de13a63f 100644 --- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/CrafterBlockMixin.java +++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/CrafterBlockMixin.java @@ -41,14 +41,14 @@ @Mixin(CrafterBlock.class) public class CrafterBlockMixin { // Inject after vanilla's attempts to insert the stack into an inventory. - @Inject(method = "dispenseItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;isEmpty()Z", shift = At.Shift.BEFORE)) - private void transferOrSpawnStack(ServerLevel level, BlockPos pos, CrafterBlockEntity blockEntity, ItemStack inputStack, BlockState state, RecipeHolder recipe, CallbackInfo ci, @Local Direction direction, @Local Container inventory, @Local(ordinal = 1) ItemStack itemStack) { - if (inventory != null) { + @Inject(method = "dispenseItem", at = @At(value = "INVOKE", target = "Lnet/minecraft/world/item/ItemStack;isEmpty()Z")) + private void transferOrSpawnStack(ServerLevel level, BlockPos pos, CrafterBlockEntity blockEntity, ItemStack results, BlockState blockState, RecipeHolder recipe, CallbackInfo ci, @Local(name = "direction") Direction direction, @Local(name = "into") Container into, @Local(name = "remaining") ItemStack remaining) { + if (into != null) { // Vanilla already found and tested an inventory, nothing else to do even if it failed to insert. return; } - if (itemStack.isEmpty()) { + if (remaining.isEmpty()) { // Nothing left to do, in theory should never get here. return; } @@ -58,10 +58,10 @@ private void transferOrSpawnStack(ServerLevel level, BlockPos pos, CrafterBlockE if (target != null) { // Attempt to move the entire stack, and decrement the size of success moves. try (Transaction transaction = Transaction.openOuter()) { - long moved = target.insert(ItemVariant.of(itemStack), inputStack.getCount(), transaction); + long moved = target.insert(ItemVariant.of(remaining), results.getCount(), transaction); if (moved > 0) { - itemStack.shrink((int) moved); + remaining.shrink((int) moved); transaction.commit(); } } diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/DropperBlockMixin.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/DropperBlockMixin.java index fceb7927c9f..f74574d1779 100644 --- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/DropperBlockMixin.java +++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/DropperBlockMixin.java @@ -50,7 +50,7 @@ public class DropperBlockMixin { cancellable = true, allow = 1 ) - public void hookDispense(ServerLevel level, BlockState blockState, BlockPos pos, CallbackInfo ci) { + public void hookDispense(ServerLevel level, BlockState state, BlockPos pos, CallbackInfo ci) { DispenserBlockEntity dispenser = (DispenserBlockEntity) level.getBlockEntity(pos); Direction direction = dispenser.getBlockState().getValue(DispenserBlock.FACING); diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/HopperBlockEntityMixin.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/HopperBlockEntityMixin.java index 9bf046de84c..4c1d768bde2 100644 --- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/HopperBlockEntityMixin.java +++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/HopperBlockEntityMixin.java @@ -16,6 +16,8 @@ package net.fabricmc.fabric.mixin.transfer; +import com.llamalad7.mixinextras.expression.Definition; +import com.llamalad7.mixinextras.expression.Expression; import com.llamalad7.mixinextras.sugar.Local; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; @@ -44,26 +46,25 @@ public class HopperBlockEntityMixin { @Shadow private Direction facing; + @Definition(id = "getAttachedContainer", method = "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;getAttachedContainer(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/entity/HopperBlockEntity;)Lnet/minecraft/world/Container;") + @Expression("? = getAttachedContainer(?, ?, ?)") @Inject( - at = @At( - value = "INVOKE_ASSIGN", - target = "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;getAttachedContainer(Lnet/minecraft/world/level/Level;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/entity/HopperBlockEntity;)Lnet/minecraft/world/Container;" - ), + at = @At(value = "MIXINEXTRAS:EXPRESSION", shift = At.Shift.AFTER), method = "ejectItems", cancellable = true ) - private static void hookInsert(Level level, BlockPos pos, HopperBlockEntity blockEntity, CallbackInfoReturnable cir, @Local Container targetInventory) { + private static void hookInsert(Level level, BlockPos blockPos, HopperBlockEntity self, CallbackInfoReturnable cir, @Local(name = "container") Container container) { // Let vanilla handle the transfer if it found an inventory. - if (targetInventory != null) return; + if (container != null) return; // Otherwise inject our transfer logic. - Direction direction = ((HopperBlockEntityMixin) (Object) blockEntity).facing; - BlockPos targetPos = pos.relative(direction); + Direction direction = ((HopperBlockEntityMixin) (Object) self).facing; + BlockPos targetPos = blockPos.relative(direction); Storage target = ItemStorage.SIDED.find(level, targetPos, direction.getOpposite()); if (target != null) { long moved = StorageUtil.move( - ContainerStorage.of(blockEntity, direction), + ContainerStorage.of(self, direction), target, iv -> true, 1, @@ -73,17 +74,16 @@ private static void hookInsert(Level level, BlockPos pos, HopperBlockEntity bloc } } + @Definition(id = "getSourceContainer", method = "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;getSourceContainer(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/level/block/entity/Hopper;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/world/Container;") + @Expression("? = getSourceContainer(?, ?, ?, ?)") @Inject( - at = @At( - value = "INVOKE_ASSIGN", - target = "Lnet/minecraft/world/level/block/entity/HopperBlockEntity;getSourceContainer(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/level/block/entity/Hopper;Lnet/minecraft/core/BlockPos;Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/world/Container;" - ), + at = @At(value = "MIXINEXTRAS:EXPRESSION", shift = At.Shift.AFTER), method = "suckInItems(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/level/block/entity/Hopper;)Z", cancellable = true ) - private static void hookExtract(Level level, Hopper hopper, CallbackInfoReturnable cir, @Local Container inputInventory) { + private static void hookExtract(Level level, Hopper hopper, CallbackInfoReturnable cir, @Local(name = "container") Container container) { // Let vanilla handle the transfer if it found an inventory. - if (inputInventory != null) return; + if (container != null) return; // Otherwise inject our transfer logic. BlockPos sourcePos = BlockPos.containing(hopper.getLevelX(), hopper.getLevelY() + 1.0D, hopper.getLevelZ()); diff --git a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/JukeboxBlockEntityMixin.java b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/JukeboxBlockEntityMixin.java index 87c31f2701b..3885fa9d7d8 100644 --- a/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/JukeboxBlockEntityMixin.java +++ b/fabric-transfer-api-v1/src/main/java/net/fabricmc/fabric/mixin/transfer/JukeboxBlockEntityMixin.java @@ -34,7 +34,7 @@ public abstract class JukeboxBlockEntityMixin implements SpecialLogicContainer { private ItemStack item; @Shadow - public abstract void setTheItem(ItemStack stack); + public abstract void setTheItem(ItemStack itemStack); @Unique private boolean fabric_suppressSpecialLogic = false; @@ -45,9 +45,9 @@ public void fabric_setSuppress(boolean suppress) { } @Inject(method = "setTheItem", at = @At("HEAD"), cancellable = true) - private void setStackBypass(ItemStack stack, CallbackInfo ci) { + private void setStackBypass(ItemStack itemStack, CallbackInfo ci) { if (fabric_suppressSpecialLogic) { - item = stack; + item = itemStack; ci.cancel(); } } diff --git a/fabric-transfer-api-v1/src/main/resources/fabric-transfer-api-v1.mixins.json b/fabric-transfer-api-v1/src/main/resources/fabric-transfer-api-v1.mixins.json index 14e1bef6dba..2115fd7957b 100644 --- a/fabric-transfer-api-v1/src/main/resources/fabric-transfer-api-v1.mixins.json +++ b/fabric-transfer-api-v1/src/main/resources/fabric-transfer-api-v1.mixins.json @@ -26,5 +26,8 @@ }, "overwrites": { "requireAnnotations": true + }, + "mixinextras": { + "minVersion": "0.5.0" } } diff --git a/fabric-transfer-api-v1/src/main/resources/fabric.mod.json b/fabric-transfer-api-v1/src/main/resources/fabric.mod.json index bb951cd1c10..f6e05b0a09c 100644 --- a/fabric-transfer-api-v1/src/main/resources/fabric.mod.json +++ b/fabric-transfer-api-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "fabric-api-lookup-api-v1": "*", "fabric-rendering-fluids-v1": "*" }, diff --git a/fabric-transitive-access-wideners-v1/src/main/resources/fabric.mod.json b/fabric-transitive-access-wideners-v1/src/main/resources/fabric.mod.json index 91154d14092..4e3e2bb39f8 100644 --- a/fabric-transitive-access-wideners-v1/src/main/resources/fabric.mod.json +++ b/fabric-transitive-access-wideners-v1/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3" + "fabricloader": ">=0.18.4" }, "description": "Contains transitive access wideners that provide access to otherwise inaccessible Minecraft code.", "accessWidener": "fabric-transitive-access-wideners-v1.accesswidener", diff --git a/gradle.properties b/gradle.properties index 08ebf5c359c..79f85d459ae 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ org.gradle.configuration-cache=false version=0.140.3 minecraft_version=26.1-snapshot-1 -loader_version=0.18.3 +loader_version=0.18.4 installer_version=1.0.1 prerelease=true diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 7c13bf63d83..2e91de0da31 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -16,7 +16,7 @@ "FabricMC" ], "depends": { - "fabricloader": ">=0.18.3", + "fabricloader": ">=0.18.4", "java": ">=25", "minecraft": "~26.1-" },