Fixed Sign Mixin errors

This commit is contained in:
Frank 2022-10-25 23:09:19 +02:00
parent 95ea99e44d
commit bfebba6791
4 changed files with 33 additions and 28 deletions

View file

@ -0,0 +1,12 @@
package org.betterx.bclib.complexmaterials;
import net.minecraft.world.level.block.state.properties.WoodType;
public class BCLWoodType extends WoodType {
private String modID;
protected BCLWoodType(String modID, String string) {
super(string);
this.modID = modID;
}
}

View file

@ -19,6 +19,7 @@ import net.minecraft.world.item.Items;
import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockBehaviour;
import net.minecraft.world.level.block.state.properties.WoodType;
import net.minecraft.world.level.material.MaterialColor; import net.minecraft.world.level.material.MaterialColor;
import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings; import net.fabricmc.fabric.api.object.builder.v1.block.FabricBlockSettings;
@ -53,6 +54,8 @@ public class WoodenComplexMaterial extends ComplexMaterial {
public final MaterialColor planksColor; public final MaterialColor planksColor;
public final MaterialColor woodColor; public final MaterialColor woodColor;
public final WoodType woodType;
public WoodenComplexMaterial( public WoodenComplexMaterial(
String modID, String modID,
String baseName, String baseName,
@ -63,6 +66,7 @@ public class WoodenComplexMaterial extends ComplexMaterial {
super(modID, baseName, receipGroupPrefix); super(modID, baseName, receipGroupPrefix);
this.planksColor = planksColor; this.planksColor = planksColor;
this.woodColor = woodColor; this.woodColor = woodColor;
this.woodType = WoodType.register(new BCLWoodType(modID, baseName));
} }
@Override @Override

View file

@ -5,7 +5,7 @@ import org.betterx.bclib.client.render.BaseSignBlockEntityRenderer;
import com.mojang.blaze3d.vertex.PoseStack; import com.mojang.blaze3d.vertex.PoseStack;
import com.mojang.blaze3d.vertex.VertexConsumer; import com.mojang.blaze3d.vertex.VertexConsumer;
import net.minecraft.client.gui.screens.Screen; import net.minecraft.client.gui.screens.inventory.AbstractSignEditScreen;
import net.minecraft.client.gui.screens.inventory.SignEditScreen; import net.minecraft.client.gui.screens.inventory.SignEditScreen;
import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.blockentity.SignRenderer; import net.minecraft.client.renderer.blockentity.SignRenderer;
@ -14,22 +14,17 @@ import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.entity.SignBlockEntity; import net.minecraft.world.level.block.entity.SignBlockEntity;
import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.BlockState;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique; import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.At.Shift;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.ModifyArg; import org.spongepowered.asm.mixin.injection.ModifyArg;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
@Mixin(SignEditScreen.class) @Mixin(SignEditScreen.class)
public abstract class SignEditScreenMixin extends Screen { public abstract class SignEditScreenMixin extends AbstractSignEditScreen {
@Shadow
@Final
private SignBlockEntity sign;
@Shadow @Shadow
private SignRenderer.SignModel signModel; private SignRenderer.SignModel signModel;
@Unique @Unique
@ -37,27 +32,21 @@ public abstract class SignEditScreenMixin extends Screen {
@Unique @Unique
private boolean bclib_isSign; private boolean bclib_isSign;
protected SignEditScreenMixin(Component component) { public SignEditScreenMixin(SignBlockEntity signBlockEntity, boolean bl) {
super(component); super(signBlockEntity, bl);
} }
@Inject(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;IIF)V", locals = LocalCapture.CAPTURE_FAILSOFT, at = @At(ordinal = 1, public SignEditScreenMixin(
value = "INVOKE", SignBlockEntity signBlockEntity,
target = "Lcom/mojang/blaze3d/vertex/PoseStack;pushPose()V",
shift = Shift.BEFORE
))
private void bclib_checkOffset(
PoseStack poseStack,
int i,
int j,
float f,
CallbackInfo ci,
float g,
BlockState blockState,
boolean bl, boolean bl,
boolean bl2, Component component
float h
) { ) {
super(signBlockEntity, bl, component);
}
@Inject(method = "offsetSign", at = @At("TAIL"))
private void bclib_offsetSign(PoseStack poseStack, BlockState blockState, CallbackInfo ci) {
bclib_isSign = blockState.getBlock() instanceof BaseSignBlock; bclib_isSign = blockState.getBlock() instanceof BaseSignBlock;
if (bclib_isSign) { if (bclib_isSign) {
bclib_renderStick = blockState.getValue(BaseSignBlock.FLOOR); bclib_renderStick = blockState.getValue(BaseSignBlock.FLOOR);
@ -67,8 +56,8 @@ public abstract class SignEditScreenMixin extends Screen {
} }
} }
@ModifyArg(method = "render(Lcom/mojang/blaze3d/vertex/PoseStack;IIF)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/geom/ModelPart;render(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;II)V"), index = 1) @ModifyArg(method = "renderSignBackground", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/model/geom/ModelPart;render(Lcom/mojang/blaze3d/vertex/PoseStack;Lcom/mojang/blaze3d/vertex/VertexConsumer;II)V"), index = 1)
private VertexConsumer bclib_signRender(VertexConsumer consumer) { private VertexConsumer bclib_renderSignBackground(VertexConsumer consumer) {
if (bclib_isSign) { if (bclib_isSign) {
signModel.stick.visible = bclib_renderStick; signModel.stick.visible = bclib_renderStick;
Block block = sign.getBlockState().getBlock(); Block block = sign.getBlockState().getBlock();

View file

@ -22,6 +22,6 @@ accessible method net/minecraft/world/entity/ai/village/poi/PoiTypes register (L
accessible method net/minecraft/world/level/levelgen/SurfaceRules$SequenceRuleSource <init> (Ljava/util/List;)V accessible method net/minecraft/world/level/levelgen/SurfaceRules$SequenceRuleSource <init> (Ljava/util/List;)V
accessible method net/minecraft/core/Registry registerSimple (Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/core/Registry$RegistryBootstrap;)Lnet/minecraft/core/Registry; accessible method net/minecraft/core/Registry registerSimple (Lnet/minecraft/resources/ResourceKey;Lnet/minecraft/core/Registry$RegistryBootstrap;)Lnet/minecraft/core/Registry;
accessible method net/minecraft/world/entity/SpawnPlacements register (Lnet/minecraft/world/entity/EntityType;Lnet/minecraft/world/entity/SpawnPlacements$Type;Lnet/minecraft/world/level/levelgen/Heightmap$Types;Lnet/minecraft/world/entity/SpawnPlacements$SpawnPredicate;)V accessible method net/minecraft/world/entity/SpawnPlacements register (Lnet/minecraft/world/entity/EntityType;Lnet/minecraft/world/entity/SpawnPlacements$Type;Lnet/minecraft/world/level/levelgen/Heightmap$Types;Lnet/minecraft/world/entity/SpawnPlacements$SpawnPredicate;)V
accessible method net/minecraft/world/level/block/state/properties/WoodType register (Lnet/minecraft/world/level/block/state/properties/WoodType;)Lnet/minecraft/world/level/block/state/properties/WoodType;
#Fields #Fields
accessible field net/minecraft/world/entity/ai/village/poi/PoiTypes TYPE_BY_STATE Ljava/util/Map; accessible field net/minecraft/world/entity/ai/village/poi/PoiTypes TYPE_BY_STATE Ljava/util/Map;