feat: dynamic round disc model generation

- Cursed, but it works :)
This commit is contained in:
Martin Prokoph
2025-01-26 00:55:03 +01:00
parent 16f558644c
commit 0a905a79d1
71 changed files with 107 additions and 2162 deletions

View File

@@ -13,11 +13,7 @@ import net.minecraft.client.render.VertexConsumerProvider;
import net.minecraft.client.render.WorldRenderer;
import net.minecraft.client.render.block.entity.BlockEntityRenderer;
import net.minecraft.client.render.block.entity.BlockEntityRendererFactory;
import net.minecraft.client.render.model.json.ModelTransformationMode;
import net.minecraft.client.util.math.MatrixStack;
import net.minecraft.component.ComponentMap;
import net.minecraft.component.DataComponentTypes;
import net.minecraft.component.type.CustomModelDataComponent;
import net.minecraft.item.ItemStack;
import net.minecraft.registry.Registries;
import net.minecraft.state.property.Properties;
@@ -57,7 +53,7 @@ public class JukeboxBlockEntityRenderer implements BlockEntityRenderer<JukeboxBl
discItem = Identifier.of(String.valueOf(SoundTest.getSound(blockEntity.getPos())).replace(".", "_"));
// Tries to get the disc item from the registry //
if (Registries.ITEM.getOrEmpty(discItem).isPresent()) {
if (Registries.ITEM.getOptionalValue(discItem).isPresent()) {
record = new ItemStack(Registries.ITEM.get(discItem));
}
else {
@@ -73,15 +69,13 @@ public class JukeboxBlockEntityRenderer implements BlockEntityRenderer<JukeboxBl
}
if (!record.isEmpty()) {
//record.setCount(2);
record.applyComponentsFrom(ComponentMap.builder().add(DataComponentTypes.CUSTOM_MODEL_DATA, new CustomModelDataComponent(710)).build());
matrices.push();
matrices.translate(0.5f, 1.03f, 0.5f);
matrices.scale(0.75f, 0.75f, 0.75f);
matrices.multiply(new Quaternionf(new AxisAngle4f(Math.toRadians(Util.getMeasuringTimeMs() / 9.0f), 0, 1, 0)));
MinecraftClient.getInstance().getItemRenderer().renderItem(record, ModelTransformationMode.GROUND, lightAbove, overlay, matrices, vertexConsumers, blockEntity.getWorld(), 0);
RoundDiscRenderer.render(record.getItem(), lightAbove, overlay, matrices, vertexConsumers);
matrices.pop();
}
if (VOConfig.jukebox_fake_block && !blockEntity.getWorld().getBlockState(blockEntity.getPos().up()).isSideSolid(blockEntity.getWorld(),blockEntity.getPos().up(), Direction.DOWN, SideShapeType.FULL)) {

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,12 @@
package eu.midnightdust.visualoverhaul.mixin;
import net.minecraft.client.render.item.ItemRenderState;
import net.minecraft.item.ModelTransformationMode;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.gen.Accessor;
@Mixin(ItemRenderState.class)
public interface ItemRenderStateAccessor {
@Accessor("modelTransformationMode")
void setModelTransformationMode(ModelTransformationMode modelTransformationMode);
}