From 6383078589fcc54bc5227ff69ed286ac858ea910 Mon Sep 17 00:00:00 2001 From: modmuss Date: Mon, 25 Nov 2024 18:12:28 +0000 Subject: [PATCH] Fix crash with custom signs. (#4240) --- .../object/builder/client/WoodTypeMixin.java | 36 +++++++++++++++++++ ...abric-object-builder-v1.client.mixins.json | 3 +- .../test/object/builder/TealSignTest.java | 2 ++ .../blockstates/teal_hanging_sign.json | 2 +- .../blockstates/teal_sign.json | 2 +- .../blockstates/teal_wall_hanging_sign.json | 2 +- .../blockstates/teal_wall_sign.json | 2 +- .../items/teal_hanging_sign.json | 6 ++++ .../items/teal_sign.json | 6 ++++ 9 files changed, 56 insertions(+), 5 deletions(-) create mode 100644 fabric-object-builder-api-v1/src/client/java/net/fabricmc/fabric/mixin/object/builder/client/WoodTypeMixin.java create mode 100644 fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/items/teal_hanging_sign.json create mode 100644 fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/items/teal_sign.json diff --git a/fabric-object-builder-api-v1/src/client/java/net/fabricmc/fabric/mixin/object/builder/client/WoodTypeMixin.java b/fabric-object-builder-api-v1/src/client/java/net/fabricmc/fabric/mixin/object/builder/client/WoodTypeMixin.java new file mode 100644 index 000000000..531cc7764 --- /dev/null +++ b/fabric-object-builder-api-v1/src/client/java/net/fabricmc/fabric/mixin/object/builder/client/WoodTypeMixin.java @@ -0,0 +1,36 @@ +/* + * Copyright (c) 2016, 2017, 2018, 2019 FabricMC + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package net.fabricmc.fabric.mixin.object.builder.client; + +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import net.minecraft.block.WoodType; +import net.minecraft.client.render.TexturedRenderLayers; +import net.minecraft.util.Identifier; + +@Mixin(WoodType.class) +public abstract class WoodTypeMixin { + @Inject(method = "register", at = @At("RETURN")) + private static void register(WoodType type, CallbackInfoReturnable cir) { + final Identifier identifier = Identifier.of(type.name()); + TexturedRenderLayers.SIGN_TYPE_TEXTURES.put(type, TexturedRenderLayers.createSignTextureId(identifier)); + TexturedRenderLayers.HANGING_SIGN_TYPE_TEXTURES.put(type, TexturedRenderLayers.createHangingSignTextureId(identifier)); + } +} diff --git a/fabric-object-builder-api-v1/src/client/resources/fabric-object-builder-v1.client.mixins.json b/fabric-object-builder-api-v1/src/client/resources/fabric-object-builder-v1.client.mixins.json index c02573969..d4c0b44a5 100644 --- a/fabric-object-builder-api-v1/src/client/resources/fabric-object-builder-v1.client.mixins.json +++ b/fabric-object-builder-api-v1/src/client/resources/fabric-object-builder-v1.client.mixins.json @@ -5,7 +5,8 @@ "client": [ "EntityModelLayersMixin", "HangingSignEditScreenMixin", - "TexturedRenderLayersMixin" + "TexturedRenderLayersMixin", + "WoodTypeMixin" ], "injectors": { "defaultRequire": 1 diff --git a/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/TealSignTest.java b/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/TealSignTest.java index 287b03e12..4d41c9e3c 100644 --- a/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/TealSignTest.java +++ b/fabric-object-builder-api-v1/src/testmod/java/net/fabricmc/fabric/test/object/builder/TealSignTest.java @@ -67,6 +67,8 @@ public class TealSignTest implements ModInitializer { Registry.register(Registries.ITEM, TEAL_HANGING_SIGN_KEY.getValue(), TEAL_HANGING_SIGN_ITEM); BlockEntityType.SIGN.addSupportedBlock(TEAL_SIGN); + BlockEntityType.SIGN.addSupportedBlock(TEAL_WALL_SIGN); BlockEntityType.HANGING_SIGN.addSupportedBlock(TEAL_HANGING_SIGN); + BlockEntityType.HANGING_SIGN.addSupportedBlock(TEAL_WALL_HANGING_SIGN); } } diff --git a/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_hanging_sign.json b/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_hanging_sign.json index c591d1edc..7db507326 100644 --- a/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_hanging_sign.json +++ b/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_hanging_sign.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "fabric-rendering-v1-testmod:block/teal_hanging_sign" + "model": "fabric-object-builder-api-v1-testmod:block/teal_sign" } } } diff --git a/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_sign.json b/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_sign.json index 1a05e4cfe..7db507326 100644 --- a/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_sign.json +++ b/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_sign.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "fabric-rendering-v1-testmod:block/teal_sign" + "model": "fabric-object-builder-api-v1-testmod:block/teal_sign" } } } diff --git a/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_wall_hanging_sign.json b/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_wall_hanging_sign.json index c591d1edc..7db507326 100644 --- a/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_wall_hanging_sign.json +++ b/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_wall_hanging_sign.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "fabric-rendering-v1-testmod:block/teal_hanging_sign" + "model": "fabric-object-builder-api-v1-testmod:block/teal_sign" } } } diff --git a/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_wall_sign.json b/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_wall_sign.json index 1a05e4cfe..7db507326 100644 --- a/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_wall_sign.json +++ b/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/blockstates/teal_wall_sign.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "fabric-rendering-v1-testmod:block/teal_sign" + "model": "fabric-object-builder-api-v1-testmod:block/teal_sign" } } } diff --git a/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/items/teal_hanging_sign.json b/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/items/teal_hanging_sign.json new file mode 100644 index 000000000..3204386d5 --- /dev/null +++ b/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/items/teal_hanging_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "fabric-object-builder-api-v1-testmod:item/teal_hanging_sign" + } +} diff --git a/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/items/teal_sign.json b/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/items/teal_sign.json new file mode 100644 index 000000000..83b88c2a7 --- /dev/null +++ b/fabric-object-builder-api-v1/src/testmod/resources/assets/fabric-object-builder-api-v1-testmod/items/teal_sign.json @@ -0,0 +1,6 @@ +{ + "model": { + "type": "minecraft:model", + "model": "fabric-object-builder-api-v1-testmod:item/teal_sign" + } +}