From 0104c97d554e6c16b017f7e41dbc736e94c3d83b Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Wed, 12 Feb 2025 13:16:25 +0100 Subject: [PATCH] Copycant - Fixed copycat models not returning correct values for getAppearance() on contraptions - Fixed bogey drive belt obj not loading in --- .../render/ContraptionRenderInfo.java | 18 ++++++++++++++++++ .../contraptions/render/ContraptionVisual.java | 8 -------- .../decoration/copycat/CopycatBlock.java | 8 ++++---- .../copycat/FilteredBlockAndTintGetter.java | 9 ++++++--- .../WrappedBlockAndTintGetter.java | 7 +++++++ .../block/track/bogey/bogey_drive_belt.json | 2 +- 6 files changed, 36 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionRenderInfo.java b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionRenderInfo.java index ea0113fc0d..fd4987bd5d 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionRenderInfo.java +++ b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionRenderInfo.java @@ -1,6 +1,7 @@ package com.simibubi.create.content.contraptions.render; import org.apache.commons.lang3.tuple.Pair; +import org.jetbrains.annotations.Nullable; import com.mojang.blaze3d.vertex.PoseStack; import com.simibubi.create.content.contraptions.Contraption; @@ -22,9 +23,11 @@ import net.minecraft.core.BlockPos; import net.minecraft.util.RandomSource; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.RenderShape; +import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; import net.neoforged.neoforge.client.model.data.ModelData; +import net.neoforged.neoforge.client.model.data.ModelDataManager; public class ContraptionRenderInfo { public static final SuperByteBufferCache.Compartment> CONTRAPTION = new SuperByteBufferCache.Compartment<>(); @@ -86,10 +89,25 @@ public class ContraptionRenderInfo { int minBuildHeight = contraptionWorld.getMinBuildHeight(); int height = contraptionWorld.getHeight(); VirtualRenderWorld renderWorld = new VirtualRenderWorld(level, minBuildHeight, height, origin) { + @Override public boolean supportsVisualization() { return VisualizationManager.supportsVisualization(level); } + + @Override + public ModelData getModelData(BlockPos pos) { + BlockEntity blockEntity = getBlockEntity(pos); + if (blockEntity == null) + return super.getModelData(pos); + return blockEntity.getModelData(); + } + + @Override + public @Nullable ModelDataManager getModelDataManager() { + return null; + } + }; renderWorld.setBlockEntities(c.presentBlockEntities.values()); diff --git a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java index 163033e4ed..68e371c421 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java +++ b/src/main/java/com/simibubi/create/content/contraptions/render/ContraptionVisual.java @@ -48,7 +48,6 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplate; -import net.neoforged.neoforge.client.model.data.ModelData; public class ContraptionVisual extends AbstractEntityVisual implements DynamicVisual, TickableVisual, LightUpdatedVisual, ShaderLightVisual { protected static final int LIGHT_PADDING = 1; @@ -92,13 +91,6 @@ public class ContraptionVisual extends Abst public BlockState getBlockState(BlockPos pos) { return blocks.lookup().apply(pos); } - @Override - public ModelData getModelData(BlockPos pos) { - BlockEntity blockEntity = getBlockEntity(pos); - if (blockEntity == null) - return super.getModelData(pos); - return blockEntity.getModelData(); - } }; model = new MultiBlockModelBuilder(modelWorld, blocks.positions()) diff --git a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlock.java b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlock.java index 2cbebcab5c..8e816ebffe 100644 --- a/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlock.java +++ b/src/main/java/com/simibubi/create/content/decoration/copycat/CopycatBlock.java @@ -47,7 +47,7 @@ import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import net.neoforged.api.distmarker.Dist; import net.neoforged.api.distmarker.OnlyIn; -import net.neoforged.neoforge.client.model.data.ModelDataManager; +import net.neoforged.neoforge.client.model.data.ModelData; public abstract class CopycatBlock extends Block implements IBE, IWrenchable { @@ -252,10 +252,10 @@ public abstract class CopycatBlock extends Block implements IBE