Hi,
in my mod in Minecraft 1.15.2, i added a new type of wood and i want to create the sign for it, but when i place down the block, it has no texture and the GUI don't open.
I'm missing something that i don't know?
Here is the TileEntityClass
public class JapaneseCherrySignTileEntity extends SignTileEntity {
public JapaneseCherrySignTileEntity() {
super();
}
@Override
public TileEntityType<?> getType() {
return TileEntityInit.INSTANCE.getJapCherrySignTileEntity();
}
}
The Block initialization
public class BlockInit {
public static final DeferredRegister<Block> blocks = DeferredRegister.create(ForgeRegistries.BLOCKS, MoreStuffMod.MODID);
public static final RegistryObject<Block> japCherrySign = blocks.register("jap_cherry_sign", () -> new JapaneseCherrySignBlock(Block.Properties.create(Material.WOOD).doesNotBlockMovement().hardnessAndResistance(1.0F).sound(SoundType.WOOD), null));
}
The tile entities initialization
public class TileEntityInit {
public static final DeferredRegister<TileEntityType<?>> tileEntities = DeferredRegister.create(ForgeRegistries.TILE_ENTITIES, MoreStuffMod.MODID);
public static final RegistryObject<TileEntityType<JapaneseCherrySignTileEntity>> japCherrySignTileEntity = tileEntities.register("jap_cherry_sign", () -> TileEntityType.Builder.create(JapaneseCherrySignTileEntity::new, BlockInit.japCherrySign.get()).build(null));
}
And the TileEntityRenderer
@OnlyIn(Dist.CLIENT)
public class JapaneseCherrySignTileEntityRenderer extends SignTileEntityRenderer {
private final SignTileEntityRenderer.SignModel model = new SignTileEntityRenderer.SignModel();
public JapaneseCherrySignTileEntityRenderer(TileEntityRendererDispatcher rendererDispatcherIn) {
super(rendererDispatcherIn);
}
@Override
public void render(SignTileEntity tileEntityIn, float partialTicks, MatrixStack matrixStackIn, IRenderTypeBuffer bufferIn, int combinedLightIn, int combinedOverlayIn) {
BlockState blockstate = tileEntityIn.getBlockState();
matrixStackIn.push();
float f = 0.6666667F;
if (blockstate.getBlock() instanceof StandingSignBlock) {
matrixStackIn.translate(0.5D, 0.5D, 0.5D);
float f1 = -((float)(blockstate.get(StandingSignBlock.ROTATION) * 360) / 16.0F);
matrixStackIn.rotate(Vector3f.YP.rotationDegrees(f1));
this.model.signStick.showModel = true;
} else {
matrixStackIn.translate(0.5D, 0.5D, 0.5D);
float f4 = -blockstate.get(WallSignBlock.FACING).getHorizontalAngle();
matrixStackIn.rotate(Vector3f.YP.rotationDegrees(f4));
matrixStackIn.translate(0.0D, -0.3125D, -0.4375D);
this.model.signStick.showModel = false;
}
matrixStackIn.push();
matrixStackIn.scale(0.6666667F, -0.6666667F, -0.6666667F);
RenderMaterial rendermaterial = getMaterial(blockstate.getBlock());
IVertexBuilder ivertexbuilder = rendermaterial.getBuffer(bufferIn, this.model::getRenderType);
this.model.signBoard.render(matrixStackIn, ivertexbuilder, combinedLightIn, combinedOverlayIn);
this.model.signStick.render(matrixStackIn, ivertexbuilder, combinedLightIn, combinedOverlayIn);
matrixStackIn.pop();
FontRenderer fontrenderer = this.renderDispatcher.getFontRenderer();
float f2 = 0.010416667F;
matrixStackIn.translate(0.0D, (double)0.33333334F, (double)0.046666667F);
matrixStackIn.scale(0.010416667F, -0.010416667F, 0.010416667F);
int i = tileEntityIn.getTextColor().getTextColor();
double d0 = 0.4D;
int j = (int)((double) NativeImage.getRed(i) * 0.4D);
int k = (int)((double)NativeImage.getGreen(i) * 0.4D);
int l = (int)((double)NativeImage.getBlue(i) * 0.4D);
int i1 = NativeImage.getCombined(0, l, k, j);
int j1 = 20;
for(int k1 = 0; k1 < 4; ++k1) {
ITextProperties itextproperties = tileEntityIn.func_235677_a_(k1, (p_239309_1_) -> {
List<ITextProperties> list = fontrenderer.func_238420_b_().func_238362_b_(p_239309_1_, 90, Style.EMPTY);
return list.isEmpty() ? ITextProperties.field_240651_c_ : list.get(0);
});
if (itextproperties != null) {
float f3 = (float)(-fontrenderer.func_238414_a_(itextproperties) / 2);
fontrenderer.func_238416_a_(itextproperties, f3, (float)(k1 * 10 - 20), i1, false, matrixStackIn.getLast().getMatrix(), bufferIn, false, 0, combinedLightIn);
}
}
matrixStackIn.pop();
}
public static RenderMaterial getMaterial(Block blockIn) {
return new RenderMaterial(Atlases.SIGN_ATLAS, new ResourceLocation(MoreStuffMod.MODID, "textures/entity/signs/jap_cherry.png"));
}
}
And the setup event
private void setup(final FMLCommonSetupEvent event)
{
ClientRegistry.bindTileEntityRenderer(TileEntityInit.japCherrySignTileEntity.get(), JapaneseCherrySignTileEntityRenderer::new);
}