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.
|
# The license of the mod. Review your options at https://choosealicense.com/. All Rights Reserved is the default.
|
||||||
mod_license=GPLv3
|
mod_license=GPLv3
|
||||||
# The mod version. See https://semver.org/
|
# 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.
|
# 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.
|
# This should match the base package used for the mod sources.
|
||||||
# See https://maven.apache.org/guides/mini/guide-naming-conventions.html
|
# 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.Block;
|
||||||
import net.minecraft.world.level.block.state.BlockState;
|
import net.minecraft.world.level.block.state.BlockState;
|
||||||
import net.minecraft.world.level.block.state.StateDefinition;
|
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 net.minecraft.world.level.block.state.properties.BooleanProperty;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
|
@ -17,6 +18,7 @@ import java.util.List;
|
||||||
public abstract class RedstoneBlock extends RotatableBlock
|
public abstract class RedstoneBlock extends RotatableBlock
|
||||||
{
|
{
|
||||||
public static final BooleanProperty INPUT_POWER = BooleanProperty.create("inputpower");
|
public static final BooleanProperty INPUT_POWER = BooleanProperty.create("inputpower");
|
||||||
|
public static final BooleanProperty POWERED = BlockStateProperties.POWERED;
|
||||||
private List<Direction> sides;
|
private List<Direction> sides;
|
||||||
|
|
||||||
protected RedstoneBlock(Properties pProperties, Direction... validSides) {
|
protected RedstoneBlock(Properties pProperties, Direction... validSides) {
|
||||||
|
@ -26,13 +28,13 @@ public abstract class RedstoneBlock extends RotatableBlock
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockState getStateForPlacement(BlockPlaceContext pContext) {
|
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
|
@Override
|
||||||
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> pBuilder) {
|
protected void createBlockStateDefinition(StateDefinition.Builder<Block, BlockState> pBuilder) {
|
||||||
super.createBlockStateDefinition(pBuilder);
|
super.createBlockStateDefinition(pBuilder);
|
||||||
pBuilder.add(INPUT_POWER);
|
pBuilder.add(INPUT_POWER, POWERED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -48,24 +50,46 @@ public abstract class RedstoneBlock extends RotatableBlock
|
||||||
else return false;
|
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 onRedstone(LevelReader level, BlockPos pos, boolean on);
|
||||||
|
protected abstract void onRedstoneInputChanged(LevelReader level, BlockPos pos, boolean on);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onNeighborChange(BlockState state, LevelReader level, BlockPos pos, BlockPos neighbor) {
|
public void onNeighborChange(BlockState state, LevelReader level, BlockPos pos, BlockPos neighbor) {
|
||||||
onRedstone(level, pos, redstoneIsActivated(level, pos));
|
onRedstone(level, pos, redstoneIsActivated(level, pos));
|
||||||
|
boolean inp = state.getValue(INPUT_POWER);
|
||||||
state.setValue(INPUT_POWER, redstoneIsActivated(level, pos));
|
state.setValue(INPUT_POWER, redstoneIsActivated(level, pos));
|
||||||
|
|
||||||
|
if(inp != redstoneIsActivated(level,pos))
|
||||||
|
onRedstoneInputChanged(level, pos, state.getValue(INPUT_POWER));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos other, boolean unknown) {
|
public void neighborChanged(BlockState state, Level level, BlockPos pos, Block block, BlockPos other, boolean unknown) {
|
||||||
onRedstone(level, pos, redstoneIsActivated(level, pos));
|
onRedstone(level, pos, redstoneIsActivated(level, pos));
|
||||||
|
boolean inp = state.getValue(INPUT_POWER);
|
||||||
state.setValue(INPUT_POWER, redstoneIsActivated(level, pos));
|
state.setValue(INPUT_POWER, redstoneIsActivated(level, pos));
|
||||||
|
|
||||||
|
if(inp != redstoneIsActivated(level,pos))
|
||||||
|
onRedstoneInputChanged(level, pos, state.getValue(INPUT_POWER));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlace(BlockState state, Level level, BlockPos pos, BlockState p_60569_, boolean p_60570_) {
|
public void onPlace(BlockState state, Level level, BlockPos pos, BlockState p_60569_, boolean p_60570_) {
|
||||||
onRedstone(level, pos, redstoneIsActivated(level, pos));
|
onRedstone(level, pos, redstoneIsActivated(level, pos));
|
||||||
|
boolean inp = state.getValue(INPUT_POWER);
|
||||||
state.setValue(INPUT_POWER, redstoneIsActivated(level, pos));
|
state.setValue(INPUT_POWER, redstoneIsActivated(level, pos));
|
||||||
|
|
||||||
|
if(inp != redstoneIsActivated(level,pos))
|
||||||
|
onRedstoneInputChanged(level, pos, state.getValue(INPUT_POWER));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue