Skip to content

Commit bceadbd

Browse files
committed
fix: Conduit facade break bug and fix ME controller Jade
Partial backport from ce6d39e
1 parent 6d14511 commit bceadbd

File tree

2 files changed

+9
-11
lines changed

2 files changed

+9
-11
lines changed

enderio-conduits/src/main/java/com/enderio/conduits/integration/jade/EIOConduitsJadePlugin.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public void registerClient(IWailaClientRegistration registration) {
2626
&& FacadeUtil.areFacadesVisible(blockAccessor.getPlayer())) {
2727
return registration.blockAccessor()
2828
.from(blockAccessor)
29-
.blockState(conduitBundle.getFacadeBlock().defaultBlockState())
29+
.fakeBlock(conduitBundle.getFacadeBlock().asItem().getDefaultInstance())
3030
.build();
3131
}
3232
}
Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,25 @@
11
package com.enderio.conduits.mixin;
22

33
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;
76
import net.minecraft.client.renderer.block.BlockRenderDispatcher;
8-
import net.minecraft.client.resources.model.BakedModel;
97
import net.minecraft.core.BlockPos;
108
import net.minecraft.world.level.BlockAndTintGetter;
119
import net.minecraft.world.level.block.state.BlockState;
10+
import net.neoforged.neoforge.client.model.data.ModelData;
1211
import org.spongepowered.asm.mixin.Mixin;
1312
import org.spongepowered.asm.mixin.injection.At;
13+
import org.spongepowered.asm.mixin.injection.ModifyVariable;
1414

1515
/**
1616
* 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.
1717
*/
1818
@Mixin(BlockRenderDispatcher.class)
1919
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;
2624
}
2725
}

0 commit comments

Comments
 (0)