mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-03-04 06:44:40 +01:00
Copycant
- Fixed copycat models not returning correct values for getAppearance() on contraptions - Fixed bogey drive belt obj not loading in
This commit is contained in:
parent
13582f508a
commit
0104c97d55
6 changed files with 36 additions and 16 deletions
|
@ -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<Pair<Contraption, RenderType>> 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());
|
||||
|
|
|
@ -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<E extends AbstractContraptionEntity> extends AbstractEntityVisual<E> implements DynamicVisual, TickableVisual, LightUpdatedVisual, ShaderLightVisual {
|
||||
protected static final int LIGHT_PADDING = 1;
|
||||
|
@ -92,13 +91,6 @@ public class ContraptionVisual<E extends AbstractContraptionEntity> 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())
|
||||
|
|
|
@ -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<CopycatBlockEntity>, IWrenchable {
|
||||
|
||||
|
@ -252,10 +252,10 @@ public abstract class CopycatBlock extends Block implements IBE<CopycatBlockEnti
|
|||
if (isIgnoredConnectivitySide(level, state, side, pos, queryPos))
|
||||
return state;
|
||||
|
||||
ModelDataManager modelDataManager = Minecraft.getInstance().level.getModelDataManager();
|
||||
if (modelDataManager == null)
|
||||
ModelData modelData = level.getModelData(pos);
|
||||
if (modelData == ModelData.EMPTY)
|
||||
return getMaterial(level, pos);
|
||||
return CopycatModel.getMaterial(modelDataManager.getAt(pos));
|
||||
return CopycatModel.getMaterial(modelData);
|
||||
}
|
||||
|
||||
public boolean isIgnoredConnectivitySide(BlockAndTintGetter reader, BlockState state, Direction face,
|
||||
|
|
|
@ -2,8 +2,6 @@ package com.simibubi.create.content.decoration.copycat;
|
|||
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.core.Direction;
|
||||
import net.minecraft.world.level.BlockAndTintGetter;
|
||||
|
@ -14,7 +12,7 @@ import net.minecraft.world.level.block.state.BlockState;
|
|||
import net.minecraft.world.level.lighting.LevelLightEngine;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.minecraft.world.level.material.Fluids;
|
||||
import net.neoforged.neoforge.client.model.data.ModelDataManager;
|
||||
import net.neoforged.neoforge.client.model.data.ModelData;
|
||||
|
||||
public class FilteredBlockAndTintGetter implements BlockAndTintGetter {
|
||||
|
||||
|
@ -66,4 +64,9 @@ public class FilteredBlockAndTintGetter implements BlockAndTintGetter {
|
|||
return wrapped.getBlockTint(pBlockPos, pColorResolver);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelData getModelData(BlockPos pPos) {
|
||||
return filter.test(pPos) ? wrapped.getModelData(pPos) : ModelData.EMPTY;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -8,6 +8,7 @@ import net.minecraft.world.level.block.entity.BlockEntity;
|
|||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.lighting.LevelLightEngine;
|
||||
import net.minecraft.world.level.material.FluidState;
|
||||
import net.neoforged.neoforge.client.model.data.ModelData;
|
||||
|
||||
public class WrappedBlockAndTintGetter implements BlockAndTintGetter {
|
||||
protected final BlockAndTintGetter wrapped;
|
||||
|
@ -55,4 +56,10 @@ public class WrappedBlockAndTintGetter implements BlockAndTintGetter {
|
|||
public int getBlockTint(BlockPos pBlockPos, ColorResolver pColorResolver) {
|
||||
return wrapped.getBlockTint(pBlockPos, pColorResolver);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ModelData getModelData(BlockPos pPos) {
|
||||
return wrapped.getModelData(pPos);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"parent": "create:block/track/bogey/textures",
|
||||
"loader": "forge:obj",
|
||||
"loader": "neoforge:obj",
|
||||
"flip_v": true,
|
||||
"model": "create:models/block/track/bogey/bogey_drive_belt.obj"
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue