Javadoc the sunlight regen rules
import org.terasology.world.propagation.PropagationComparison;
/**
+ * Defines and interfaces how sunlight values regenerate per block
*/
public class SunlightRegenPropagationRules extends CommonLightPropagationRules {
+ /**
+ * Sunlight has no fixed value per block
+ * <p>
+ * {@inheritDoc}
+ */
@Override
public byte getFixedValue(Block block, Vector3i pos) {
return 0;
}
+ /**
+ * Sunlight goes to zero unless leaving via the bottom face.
+ * In that case it increases up until the maximum value in {@link ChunkConstants#MAX_SUNLIGHT_REGEN}
+ * <p>
+ * {@inheritDoc}
+ */
@Override
public byte propagateValue(byte existingValue, Side side, Block from) {
if (side == Side.BOTTOM) {
@@ -39,6 +51,11 @@ public byte propagateValue(byte existingValue, Side side, Block from) {
return 0;
}
+ /**
+ * The maximum value of sunlight is given by {@link ChunkConstants#MAX_SUNLIGHT_REGEN}
+ * <p>
+ * {@inheritDoc}
+ */
@Override
public byte getMaxValue() {
return ChunkConstants.MAX_SUNLIGHT_REGEN;
@@ -59,6 +76,11 @@ public void setValue(LitChunk chunk, Vector3i pos, byte value) {
chunk.setSunlightRegen(pos, value);
}
+ /**
+ * In all non-vertical sides the propagation is unchanged
+ * <p>
+ * {@inheritDoc}
+ */
@Override
public PropagationComparison comparePropagation(Block newBlock, Block oldBlock, Side side) {
if (!side.isVertical()) {
@@ -67,11 +89,21 @@ public PropagationComparison comparePropagation(Block newBlock, Block oldBlock,
return super.comparePropagation(newBlock, oldBlock, side);
}
+ /**
+ * Sunlight can only spread out of the bottom of a non-liquid block
+ * <p>
+ * {@inheritDoc}
+ */
@Override
public boolean canSpreadOutOf(Block block, Side side) {
return side == Side.BOTTOM && !block.isLiquid() && (super.canSpreadOutOf(block, side));
}
+ /**
+ * Sunlight can spread if the block is not a liquid
+ * <p>
+ * {@inheritDoc}
+ */
@Override
public boolean canSpreadInto(Block block, Side side) {
return !block.isLiquid() && super.canSpreadInto(block, side);
