lishid / Orebfuscator

Orebfuscator - The definitive Anti X-Ray plugin for CraftBukkit
http://dev.bukkit.org/bukkit-plugins/orebfuscator/
GNU General Public License v3.0
115 stars 112 forks source link

Competing obfuscation; proximity hider wins #134

Closed ProgrammerDan closed 7 years ago

ProgrammerDan commented 7 years ago

I have CHEST and similar items in both Proximity Hider and Orebfuscation lists. Currently these chests and other similar items in both lists are revealed by Proximity, even if fully enclosed (e.g. they should still be hidden via Engine Mode obfuscation).

Ideal behavior is if a block if Orebfuscated due to full enclosure, it remains Orebfuscated unless revealed via block break / explosion / engine update, never via Proximity.

RoboMWM commented 7 years ago

Oh interesting, so chests can be orebfuscated as well? (Provided they're fully enclosed.) Just curious because previously Aleksey-Terzi stated that block entities couldn't be hidden without proximity hider.

ProgrammerDan commented 7 years ago

I believe that was enabled alongside the Sign obfuscation, although I could be mistaken. I added Chests to the Engine Obfuscation list on his advice, but until now hadn't gotten confirmation on behavior...

Aleksey-Terzi commented 7 years ago

@ProgrammerDan

Ideal behavior is if a block if Orebfuscated due to full enclosure, it remains Orebfuscated unless revealed via block break / explosion / engine update, never via Proximity.

Yes, this is how it supposed to work. ProximityHider is consuming more resources than Engine Mode obfuscation, so Engine Mode definitely should have highest priority. I will check this issue later and then provide response.

@RoboMWM

Oh interesting, so chests can be orebfuscated as well? (Provided they're fully enclosed.) Just curious because previously Aleksey-Terzi stated that block entities couldn't be hidden without proximity hider.

If I really told this - then sorry for confusion, blocks-TileEntities could be obfuscated. There was bug related to signs previously but it is already fixed and sign obfuscation (both Engine Mode and proximity hider) is working ok.

@ProgrammerDan

I believe that was enabled alongside the Sign obfuscation, although I could be mistaken. I added Chests to the Engine Obfuscation list on his advice, but until now hadn't gotten confirmation on behavior...

This should work, if not - then this is probably bug. I will make sure it is working correctly.

Aleksey-Terzi commented 7 years ago

@ProgrammerDan

I did the following test which is demonstrating that Engine Mode is winning competition: https://youtu.be/blmqBF7lUzg

Would be good if you could provide step by step description of how to reproduce problem. Also would be good to have config file and version of Orebf.

Draw attention that maybe chest covered by "transparent" blocks and therefore Engine Mode cannot obfuscate chest.

ProgrammerDan commented 7 years ago

Can you repeat your experiment, but using a buried doublechest instead of a singlechest?

ProgrammerDan commented 7 years ago

So ShadedJon repeated your test but with DoubleChest, and confirmed that it is deobfuscated with proximity and not orebfuscation update: https://www.reddit.com/r/Devoted/comments/5fz1bi/orefubscator_bug_being_fixed_please_read/

Aleksey-Terzi commented 7 years ago

Yes you are right - this will not work double chest because of:

1) Each part of chest is considered as separate block

2) Chest is considered as transparent block and therefore neighbor chest block will be considered as not fully covered by solid blocks and therefore will not be obfuscated by Engine Mode

So this is not bug but feature :)

This could be fixed by marking chest as non-transparent block in the config file. But this is not very nice solution since could make "bad visual effects" especially with Engine Mode 2 because of chest is actually transparent.

Another option - we could introduce "chest" fix in obfuscation algorithm - if block's neighbor block has the same type and meta and this block is "block to obfuscate" then such neighbor block is considered as non-transparent.

This still could have bad visual effects when one part of the chest is covered by solid blocks and the second is not. So probably we could introduce new config option which allows to disable new function for those who don't like it, but maybe not.

Please let me know your thoughts.

ProgrammerDan commented 7 years ago

We'll try the config option first, if it's not too bad then we'll just stick with it.

ProgrammerDan commented 7 years ago

So the configuration based option appears to produce the desired effect; not sure total scope of secondary impacts but nothing observed so far. I'd recommend that adding chests at least to the non-transparent list might be a good candidate for default config.