IC2 Classic

IC2 Classic

2M Downloads

CF Walls retextured with the Obscurator have a missing texture for a split second when joining

coderbot16 opened this issue ยท 5 comments

commented

Issue stated in title.

This appears to just be an issue from the BlockWallTextured block entities not getting update packets in time. However, this makes these blocks less useful for purposes such as making one-way windows, as their location is revealed whenever you open the world / join the server.

It seems like it is possible to send BlockEntity update packets with the initial chunk packets, like in the case of vanilla tile entities such as banners, which don't suffer from any pop-in issues, even with patterns that require NBT data. Perhaps this can be applied to IC2C machines as well, as it seems that they either delay their update packets or use delayed PluginMessage packets.

While joining:
2018-09-29_14 26 31_2

After loaded in:
2018-09-29_14 26 32

commented

Yeah, IC2 Blocks request a Data packet when they get loaded and then they get the data. Thats ment for so that less NBTData is send over and only things that are actually needed get over. (Saving mcs memory overhead).
That is sadly the cost of such a feature, but honestly the whole mod is based around this.

Sry but not a bug, just a slowness on the data you receive.

commented

Ah. I was already aware that the issue is that IC2 doesn't appear to use the standard vanilla BE sync methods. I was just curious if the foam walls could get an exemption because their texture is a lot more critical than the things that the optimization is meant to exclude, such as block rotations.

commented

Well ic2cs sync system has a bit based compression system where i can actually control how much data is being send and don't send a lot of junk with it.
MC chests actually send the entire inventory with it. And now you have backpacks with backpacks in them you start to send gigabytes of data over just because they got loaded (extreme case ofc).
MC and a lot of mods are very inefficient with data being send over to the clients. At least TileEntity wise,
thats why you gain a lot of lag when you join a large area with a lot of TileEntities.
I rather have this issue then having that inperformance in such critical things.
(Remember the issues that Carpenters blocks had)

Anyway thanks for the report and sry that i couldn't help with it.

commented

Alright. Regarding your point about chests, I think that the inventory is only sent when you open the chest, not when it is loaded. That's why WDL can't save chests you haven't opened. Vanilla actually doesn't send a whole lot of NBT data on chunk load, but I do see your point about inefficient mods.

commented

Yes you are right regarding the vanilla TileEntities, they dont send all TileEntityData over but still plenty.
And mods on the other hand in a lot of cases do. (Reborn mods do especially).

Anyway i can't change this because of mentioned efficiency problems but also because it would take litterly at least twice as much memory to send that stuff over since NBTData requires a String to be send over with instead of just sending the data in order over and read it ordered back.
Especially since i have to send over data for 6 different sides and also some extra data.