Render the pattern on beds with nbt

This commit is contained in:
Sollace 2023-11-25 03:05:45 +00:00
parent 3ab4159125
commit 515efb93cb
No known key found for this signature in database
GPG key ID: E52FACE7B5C773DB
2 changed files with 19 additions and 1 deletions

View file

@ -25,6 +25,7 @@ import com.minelittlepony.unicopia.client.render.spell.SpellRendererFactory;
import com.minelittlepony.unicopia.entity.mob.UEntities;
import com.minelittlepony.unicopia.item.ChameleonItem;
import com.minelittlepony.unicopia.item.EnchantableItem;
import com.minelittlepony.unicopia.item.FancyBedItem;
import com.minelittlepony.unicopia.item.UItems;
import com.minelittlepony.unicopia.particle.UParticles;
import com.terraformersmc.terraform.boat.api.client.TerraformBoatClientHelper;
@ -127,7 +128,9 @@ public interface URenderers {
@SuppressWarnings("unchecked")
private static void renderBedItem(ItemStack stack, ModelTransformationMode mode, MatrixStack matrices, VertexConsumerProvider vertices, int light, int overlay) {
MinecraftClient.getInstance().getBlockEntityRenderDispatcher().renderEntity(((Supplier<BlockEntity>)stack.getItem()).get(), matrices, vertices, light, overlay);
BlockEntity entity = ((Supplier<BlockEntity>)stack.getItem()).get();
((FancyBedBlock.Tile)entity).setPattern(FancyBedItem.getPattern(stack));
MinecraftClient.getInstance().getBlockEntityRenderDispatcher().renderEntity(entity, matrices, vertices, light, overlay);
}
private static void renderJarItem(ItemStack stack, ModelTransformationMode mode, MatrixStack matrices, VertexConsumerProvider vertices, int light, int overlay) {

View file

@ -2,12 +2,18 @@ package com.minelittlepony.unicopia.item;
import java.util.function.Supplier;
import org.jetbrains.annotations.Nullable;
import com.google.common.base.Suppliers;
import com.minelittlepony.unicopia.block.FancyBedBlock;
import net.minecraft.block.Block;
import net.minecraft.block.BlockEntityProvider;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.item.BedItem;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NbtCompound;
import net.minecraft.nbt.NbtElement;
import net.minecraft.util.math.BlockPos;
public class FancyBedItem extends BedItem implements Supplier<BlockEntity> {
@ -23,4 +29,13 @@ public class FancyBedItem extends BedItem implements Supplier<BlockEntity> {
public BlockEntity get() {
return renderEntity.get();
}
public static FancyBedBlock.SheetPattern getPattern(ItemStack stack) {
@Nullable
NbtCompound blockEntityNbt = getBlockEntityNbt(stack);
if (blockEntityNbt == null || !blockEntityNbt.contains("pattern", NbtElement.STRING_TYPE)) {
return FancyBedBlock.SheetPattern.NONE;
}
return FancyBedBlock.SheetPattern.byId(blockEntityNbt.getString("pattern"));
}
}