mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-23 17:09:19 +00:00
fix(client): 修复方块被活塞推动视觉问题
This commit is contained in:
@@ -3,6 +3,7 @@ package net.momirealms.craftengine.fabric;
|
||||
import net.fabricmc.api.ModInitializer;
|
||||
import net.fabricmc.loader.api.FabricLoader;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.piston.PistonBehavior;
|
||||
import net.minecraft.util.Identifier;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.shape.VoxelShape;
|
||||
@@ -41,7 +42,8 @@ public class CraftEngineFabricMod implements ModInitializer {
|
||||
replacedBlockId.getPath() + "_" + i,
|
||||
BlockUtils.canPassThrough(blockState),
|
||||
BlockUtils.getShape(blockState),
|
||||
BlockUtils.isTransparent(blockState)
|
||||
BlockUtils.isTransparent(blockState),
|
||||
BlockUtils.canPush(blockState)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import net.minecraft.block.AbstractBlock;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.block.TransparentBlock;
|
||||
import net.minecraft.block.piston.PistonBehavior;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.shape.VoxelShape;
|
||||
import net.minecraft.util.shape.VoxelShapes;
|
||||
@@ -73,4 +74,11 @@ public class BlockUtils {
|
||||
}
|
||||
return !state.isOpaque();
|
||||
}
|
||||
|
||||
public static int canPush(BlockState state) {
|
||||
if (state == null) return 0;
|
||||
if (state.getPistonBehavior() == PistonBehavior.NORMAL) return 1;
|
||||
if (state.getPistonBehavior() == PistonBehavior.PUSH_ONLY) return 2;
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ package net.momirealms.craftengine.fabric.util;
|
||||
|
||||
import net.minecraft.block.AbstractBlock;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.piston.PistonBehavior;
|
||||
import net.minecraft.registry.Registries;
|
||||
import net.minecraft.registry.Registry;
|
||||
import net.minecraft.registry.RegistryKey;
|
||||
@@ -16,8 +17,14 @@ import java.util.function.Function;
|
||||
|
||||
public class RegisterBlocks {
|
||||
@SuppressWarnings("UnusedReturnValue")
|
||||
public static Block register(String name, boolean canPassThrough, VoxelShape outlineShape, boolean isTransparent) {
|
||||
AbstractBlock.Settings settings = Block.Settings.create().nonOpaque().strength(-1.0F, 3600000.0F);
|
||||
public static Block register(String name, boolean canPassThrough,
|
||||
VoxelShape outlineShape, boolean isTransparent,
|
||||
int canPush) {
|
||||
AbstractBlock.Settings settings = Block.Settings.create()
|
||||
.nonOpaque()
|
||||
.strength(canPush != 0 ? 3600000.0F : -1.0F, 3600000.0F);
|
||||
if (canPush == 1) settings.pistonBehavior(PistonBehavior.NORMAL);
|
||||
if (canPush == 2) settings.pistonBehavior(PistonBehavior.PUSH_ONLY);
|
||||
VoxelShape collisionShape;
|
||||
if (canPassThrough) {
|
||||
collisionShape = VoxelShapes.empty();
|
||||
|
||||
Reference in New Issue
Block a user