package mods.eln.sixnode.electricallightsensor; import mods.eln.misc.Coordonate; import mods.eln.misc.Utils; import mods.eln.sim.IProcess; import net.minecraft.util.MathHelper; import net.minecraft.world.EnumSkyBlock; import net.minecraft.world.World; public class ElectricalLightSensorSlowProcess implements IProcess { ElectricalLightSensorElement element; int light = 0; double timeCounter = 0; static final double refreshPeriode = 0.2; public ElectricalLightSensorSlowProcess(ElectricalLightSensorElement element) { this.element = element; } @Override public void process(double time) { timeCounter += time; if (timeCounter > refreshPeriode) { timeCounter -= refreshPeriode; if (!element.sixNode.coordonate.getBlockExist()) return; Coordonate coord = element.sixNode.coordonate; //int light = coord.world().getSavedLightValue(EnumSkyBlock.Sky, coord.x, coord.y, coord.z) - coord.world().skylightSubtracted; // Utils.println("Light : " + light); World world = coord.world(); //if(element.descriptor.dayLightOnly) { if (!world.provider.hasNoSky) { int i1 = world.getSavedLightValue(EnumSkyBlock.Sky, coord.x, coord.y, coord.z) - world.skylightSubtracted; i1 = Math.max(0, i1); float f = world.getCelestialAngleRadians(1.0F); if (f < (float) Math.PI) { f += (0.0F - f) * 0.2F; } else { f += (((float) Math.PI * 2F) - f) * 0.2F; } i1 = Math.round((float) i1 * MathHelper.cos(f)); if (i1 < 0) { i1 = 0; } if (i1 > 15) { i1 = 15; } light = i1; } //} if (!element.descriptor.dayLightOnly) { // light = Math.max(light, (int)(world.getBlockLightValue(coord.x, coord.y, coord.z))); //light = 0; light = Math.max(light, Utils.getLight(world, EnumSkyBlock.Block, coord.x, coord.y, coord.z)); } element.outputGateProcess.setOutputNormalized(light / 15.0); } } }