CptSpaceToaster / CptsModdingLight

Do What The F*ck You Want To Public License
39 stars 15 forks source link

Lightvalues can be overridden in the new engine #39

Open CptSpaceToaster opened 9 years ago

CptSpaceToaster commented 9 years ago

This is most noticeable with redstone torches and a bright light source (I tested with white glowstone) I was able to place a redstone torch, and a block of white glowstone so their light would overlap at the edge.

Breaking the white light would kill a bit of the redstone torch's light where they overlapped until a light update was called again.

If the white glowstone light overlapped the redstone torch and the white lamp had a light value that was GREATER than the torch's value at the torch's location, then breaking the glowstone snuffs out the torch completely.

CptSpaceToaster commented 9 years ago

I fixed the first issue, and now edge lights are interacting with each other as expected.

Now, if a bright white light completely envelopes a redstone torch, there's nothing in the lighting engine that marks the redstone torch's location for an update when the white light is destroyed.

As the white light has its light eaten by the lighting engine, no one noticed the insignificant redstone torch, and it was forever destroyed in the lighting engine.

TODO: Find a way to cleanly detect source blocks with a light value (torches, glowstone, etc), and mark them for an update, regardless if they do anything at the time they were processed.

Also TODO: cleanup my nop()

CptSpaceToaster commented 9 years ago

I think this is fixed, I'm going to mess with the latest DynamicLights to be sure: http://coloredlightscore.us.to:8080/job/ColoredLightsCore%20v1.7.10-Dev/20/