|
1 | 1 | package com.enderio.conduits.mixin; |
2 | 2 |
|
3 | 3 | import com.enderio.conduits.common.conduit.bundle.ConduitBundleBlockEntity; |
4 | | -import com.llamalad7.mixinextras.injector.wrapoperation.Operation; |
5 | | -import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; |
6 | | -import net.minecraft.client.renderer.block.BlockModelShaper; |
| 4 | +import com.mojang.blaze3d.vertex.PoseStack; |
| 5 | +import com.mojang.blaze3d.vertex.VertexConsumer; |
7 | 6 | import net.minecraft.client.renderer.block.BlockRenderDispatcher; |
8 | | -import net.minecraft.client.resources.model.BakedModel; |
9 | 7 | import net.minecraft.core.BlockPos; |
10 | 8 | import net.minecraft.world.level.BlockAndTintGetter; |
11 | 9 | import net.minecraft.world.level.block.state.BlockState; |
| 10 | +import net.neoforged.neoforge.client.model.data.ModelData; |
12 | 11 | import org.spongepowered.asm.mixin.Mixin; |
13 | 12 | import org.spongepowered.asm.mixin.injection.At; |
| 13 | +import org.spongepowered.asm.mixin.injection.ModifyVariable; |
14 | 14 |
|
15 | 15 | /** |
16 | 16 | * This fixes the block breaking overlay when a facade is attached to use the model of the facade. Without this, it will use the model of the conduit, and be invisible in most cases. |
17 | 17 | */ |
18 | 18 | @Mixin(BlockRenderDispatcher.class) |
19 | 19 | public class BlockRenderDispatcherMixin { |
20 | | - @WrapOperation(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;Lnet/neoforged/neoforge/client/model/data/ModelData;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/renderer/block/BlockModelShaper;getBlockModel(Lnet/minecraft/world/level/block/state/BlockState;)Lnet/minecraft/client/resources/model/BakedModel;")) |
21 | | - public BakedModel enderio$checkFacades(BlockModelShaper instance, BlockState state, Operation<BakedModel> original, |
22 | | - BlockState localState, BlockPos pos, BlockAndTintGetter level) { |
23 | | - BlockState facadeState = ConduitBundleBlockEntity.FACADES.getOrDefault(pos.asLong(), null); |
24 | | - |
25 | | - return original.call(instance, facadeState == null ? state : facadeState); |
| 20 | + @ModifyVariable(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;Lnet/neoforged/neoforge/client/model/data/ModelData;)V", at = @At("HEAD"), ordinal = 0, argsOnly = true) |
| 21 | + private BlockState enderio$getFacade(BlockState state, BlockState argState, BlockPos argPos, BlockAndTintGetter argLevel, PoseStack argPoseStack, VertexConsumer argConsumer, ModelData argModelData) { |
| 22 | + BlockState facadeState = ConduitBundleBlockEntity.FACADES.getOrDefault(argPos.asLong(), null); |
| 23 | + return facadeState == null ? state : facadeState; |
26 | 24 | } |
27 | 25 | } |
0 commit comments