minecraft-src/net/minecraft/world/level/redstone/DefaultRedstoneWireEvaluator.java
2025-07-04 02:00:41 +03:00

42 lines
1.4 KiB
Java

package net.minecraft.world.level.redstone;
import com.google.common.collect.Sets;
import java.util.Set;
import net.minecraft.core.BlockPos;
import net.minecraft.core.Direction;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.RedStoneWireBlock;
import net.minecraft.world.level.block.state.BlockState;
import org.jetbrains.annotations.Nullable;
public class DefaultRedstoneWireEvaluator extends RedstoneWireEvaluator {
public DefaultRedstoneWireEvaluator(RedStoneWireBlock redStoneWireBlock) {
super(redStoneWireBlock);
}
@Override
public void updatePowerStrength(Level level, BlockPos blockPos, BlockState blockState, @Nullable Orientation orientation, boolean bl) {
int i = this.calculateTargetStrength(level, blockPos);
if ((Integer)blockState.getValue(RedStoneWireBlock.POWER) != i) {
if (level.getBlockState(blockPos) == blockState) {
level.setBlock(blockPos, blockState.setValue(RedStoneWireBlock.POWER, i), 2);
}
Set<BlockPos> set = Sets.<BlockPos>newHashSet();
set.add(blockPos);
for (Direction direction : Direction.values()) {
set.add(blockPos.relative(direction));
}
for (BlockPos blockPos2 : set) {
level.updateNeighborsAt(blockPos2, this.wireBlock);
}
}
}
private int calculateTargetStrength(Level level, BlockPos blockPos) {
int i = this.getBlockSignal(level, blockPos);
return i == 15 ? i : Math.max(i, this.getIncomingWireSignal(level, blockPos));
}
}