Ground-breaking Excavation

- Update and scale icons
- Fixed Display Boards updating instantly only at 256rpm Clockwise, not CCW
- Fixed Pulley ropes able to break unbreakable blocks
- Fixed encasing belts not playing a place sound
This commit is contained in:
simibubi 2024-08-25 12:47:09 +02:00
parent 9f6307c355
commit e40b844aa1
7 changed files with 49 additions and 19 deletions

View File

@ -23,7 +23,7 @@ use_parchment = true
# dependency versions
registrate_version = MC1.18.2-1.1.3
flywheel_minecraft_version = 1.18.2
flywheel_version = 0.6.10-105
flywheel_version = 0.6.10-106
jei_minecraft_version = 1.18.2
jei_version = 9.7.2.277
curios_minecraft_version = 1.18.2

View File

@ -18,6 +18,7 @@ import com.simibubi.create.foundation.advancement.AllAdvancements;
import com.simibubi.create.foundation.blockEntity.behaviour.BlockEntityBehaviour;
import com.simibubi.create.foundation.blockEntity.behaviour.CenteredSideValueBoxTransform;
import com.simibubi.create.foundation.blockEntity.behaviour.ValueBoxTransform;
import com.simibubi.create.foundation.utility.Iterate;
import com.simibubi.create.foundation.utility.NBTHelper;
import com.simibubi.create.infrastructure.config.AllConfigs;
@ -194,28 +195,42 @@ public class PulleyBlockEntity extends LinearActuatorBlockEntity implements Thre
if (offset > 0) {
BlockPos magnetPos = worldPosition.below((int) offset);
FluidState ifluidstate = level.getFluidState(magnetPos);
level.destroyBlock(magnetPos, level.getBlockState(magnetPos)
.getCollisionShape(level, magnetPos)
.isEmpty());
level.setBlock(magnetPos, AllBlocks.PULLEY_MAGNET.getDefaultState()
.setValue(BlockStateProperties.WATERLOGGED,
Boolean.valueOf(ifluidstate.getType() == Fluids.WATER)),
66);
if (level.getBlockState(magnetPos)
.getDestroySpeed(level, magnetPos) != -1) {
level.destroyBlock(magnetPos, level.getBlockState(magnetPos)
.getCollisionShape(level, magnetPos)
.isEmpty());
level.setBlock(magnetPos, AllBlocks.PULLEY_MAGNET.getDefaultState()
.setValue(BlockStateProperties.WATERLOGGED,
Boolean.valueOf(ifluidstate.getType() == Fluids.WATER)),
66);
}
}
boolean[] waterlog = new boolean[(int) offset];
for (int i = 1; i <= ((int) offset) - 1; i++) {
BlockPos ropePos = worldPosition.below(i);
FluidState ifluidstate = level.getFluidState(ropePos);
waterlog[i] = ifluidstate.getType() == Fluids.WATER;
level.destroyBlock(ropePos, level.getBlockState(ropePos)
.getCollisionShape(level, ropePos)
.isEmpty());
for (boolean destroyPass : Iterate.trueAndFalse) {
for (int i = 1; i <= ((int) offset) - 1; i++) {
BlockPos ropePos = worldPosition.below(i);
if (level.getBlockState(ropePos)
.getDestroySpeed(level, ropePos) == -1)
continue;
if (destroyPass) {
FluidState ifluidstate = level.getFluidState(ropePos);
waterlog[i] = ifluidstate.getType() == Fluids.WATER;
level.destroyBlock(ropePos, level.getBlockState(ropePos)
.getCollisionShape(level, ropePos)
.isEmpty());
continue;
}
level.setBlock(worldPosition.below(i), AllBlocks.ROPE.getDefaultState()
.setValue(BlockStateProperties.WATERLOGGED, waterlog[i]), 66);
}
}
for (int i = 1; i <= ((int) offset) - 1; i++)
level.setBlock(worldPosition.below(i), AllBlocks.ROPE.getDefaultState()
.setValue(BlockStateProperties.WATERLOGGED, waterlog[i]), 66);
}
if (movedContraption != null && mirrorParent == null)

View File

@ -60,6 +60,7 @@ import net.minecraft.world.level.block.Block;
import net.minecraft.world.level.block.Blocks;
import net.minecraft.world.level.block.RenderShape;
import net.minecraft.world.level.block.Rotation;
import net.minecraft.world.level.block.SoundType;
import net.minecraft.world.level.block.entity.BlockEntity;
import net.minecraft.world.level.block.entity.BlockEntityType;
import net.minecraft.world.level.block.state.BlockState;
@ -304,12 +305,24 @@ public class BeltBlock extends HorizontalKineticBlock
if (AllBlocks.BRASS_CASING.isIn(heldItem)) {
withBlockEntityDo(world, pos, be -> be.setCasingType(CasingType.BRASS));
updateCoverProperty(world, pos, world.getBlockState(pos));
SoundType soundType = AllBlocks.BRASS_CASING.getDefaultState()
.getSoundType(world, pos, player);
world.playSound(null, pos, soundType.getPlaceSound(), SoundSource.BLOCKS,
(soundType.getVolume() + 1.0F) / 2.0F, soundType.getPitch() * 0.8F);
return InteractionResult.SUCCESS;
}
if (AllBlocks.ANDESITE_CASING.isIn(heldItem)) {
withBlockEntityDo(world, pos, be -> be.setCasingType(CasingType.ANDESITE));
updateCoverProperty(world, pos, world.getBlockState(pos));
SoundType soundType = AllBlocks.ANDESITE_CASING.getDefaultState()
.getSoundType(world, pos, player);
world.playSound(null, pos, soundType.getPlaceSound(), SoundSource.BLOCKS,
(soundType.getVolume() + 1.0F) / 2.0F, soundType.getPitch() * 0.8F);
return InteractionResult.SUCCESS;
}

View File

@ -111,7 +111,7 @@ public class FlapDisplayBlockEntity extends KineticBlockEntity {
if ((!level.isClientSide || !isRunning) && !isVirtual())
return;
int activeFlaps = 0;
boolean instant = getSpeed() > 128;
boolean instant = Math.abs(getSpeed()) > 128;
for (FlapDisplayLayout line : lines)
for (FlapDisplaySection section : line.getSections())
activeFlaps += section.tick(instant);

View File

@ -108,6 +108,8 @@ public class CreateMainMenuScreen extends AbstractSimiScreen {
.render(ms);
ms.popPose();
}
RenderSystem.enableBlend();
ms.pushPose();
ms.translate(width / 2 - 32, 32, -10);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 73 KiB