Add another helper method for redstone
This commit is contained in:
parent
29245e45cf
commit
65a21bcefc
2 changed files with 27 additions and 3 deletions
|
@ -53,7 +53,7 @@ mod_name=Zontreck's Library Mod
|
|||
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
|
||||
mod_license=GPLv3
|
||||
# The mod version. See https://semver.org/
|
||||
mod_version=1201.13.043024.0247
|
||||
mod_version=1201.13.043024.0307
|
||||
# The group ID for the mod. It is only important when publishing as an artifact to a Maven repository.
|
||||
# This should match the base package used for the mod sources.
|
||||
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
|
||||
|
|
|
@ -9,6 +9,7 @@ import net.minecraft.world.level.LevelReader;
|
|||
import net.minecraft.world.level.block.Block;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
import net.minecraft.world.level.block.state.StateDefinition;
|
||||
import net.minecraft.world.level.block.state.properties.BlockStateProperties;
|
||||
import net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
|
@ -17,6 +18,7 @@ import java.util.List;
|
|||
public abstract class RedstoneBlock extends RotatableBlock
|
||||
{
|
||||
public static final BooleanProperty INPUT_POWER = BooleanProperty.create("inputpower");
|
||||
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||
private List<Direction> sides;
|
||||
|
||||
protected RedstoneBlock(Properties pProperties, Direction... validSides) {
|
||||
|
@ -26,13 +28,13 @@ public abstract class RedstoneBlock extends RotatableBlock
|
|||
|
||||
@Override
|
||||
public BlockState getStateForPlacement(BlockPlaceContext pContext) {
|
||||
return super.getStateForPlacement(pContext).setValue(INPUT_POWER, false);
|
||||
return super.getStateForPlacement(pContext).setValue(INPUT_POWER, false).setValue(POWERED, false);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> pBuilder) {
|
||||
super.createBlockStateDefinition(pBuilder);
|
||||
pBuilder.add(INPUT_POWER);
|
||||
pBuilder.add(INPUT_POWER, POWERED);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -48,24 +50,46 @@ public abstract class RedstoneBlock extends RotatableBlock
|
|||
else return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSignal(BlockState p_60483_, BlockGetter p_60484_, BlockPos p_60485_, Direction p_60486_) {
|
||||
if(!sides.contains(p_60486_)) return 0;
|
||||
|
||||
if(p_60483_.getValue(POWERED))
|
||||
return 15;
|
||||
else return 0;
|
||||
}
|
||||
|
||||
protected abstract void onRedstone(LevelReader level, BlockPos pos, boolean on);
|
||||
protected abstract void onRedstoneInputChanged(LevelReader level, BlockPos pos, boolean on);
|
||||
|
||||
@Override
|
||||
public void onNeighborChange(BlockState state, LevelReader level, BlockPos pos, BlockPos neighbor) {
|
||||
onRedstone(level, pos, redstoneIsActivated(level, pos));
|
||||
boolean inp = state.getValue(INPUT_POWER);
|
||||
state.setValue(INPUT_POWER, redstoneIsActivated(level, pos));
|
||||
|
||||
if(inp != redstoneIsActivated(level,pos))
|
||||
onRedstoneInputChanged(level, pos, state.getValue(INPUT_POWER));
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos other, boolean unknown) {
|
||||
onRedstone(level, pos, redstoneIsActivated(level, pos));
|
||||
boolean inp = state.getValue(INPUT_POWER);
|
||||
state.setValue(INPUT_POWER, redstoneIsActivated(level, pos));
|
||||
|
||||
if(inp != redstoneIsActivated(level,pos))
|
||||
onRedstoneInputChanged(level, pos, state.getValue(INPUT_POWER));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlace(BlockState state, Level level, BlockPos pos, BlockState p_60569_, boolean p_60570_) {
|
||||
onRedstone(level, pos, redstoneIsActivated(level, pos));
|
||||
boolean inp = state.getValue(INPUT_POWER);
|
||||
state.setValue(INPUT_POWER, redstoneIsActivated(level, pos));
|
||||
|
||||
if(inp != redstoneIsActivated(level,pos))
|
||||
onRedstoneInputChanged(level, pos, state.getValue(INPUT_POWER));
|
||||
}
|
||||
}
|
||||
|
|
Reference in a new issue