Register full mirrored jars with their network once.#91
Register full mirrored jars with their network once.#91calmofthestorm wants to merge 1 commit intomakeo:masterfrom
Conversation
Currently, full mirrored jars will never register themselves with their network, meaning that if the server is restarted while a full mirrored jar is in the world (or if a player places a full mirrored jar for the first time since the server has started), the jar will be unable to share essentia with the rest of its network. This adds a check to register the jar even if it is full. The performance impact should be minimal since we only check each jar once per run.
|
Actually there's a much simpler reproduction:
|
|
Hey, thanks for adding this fix but as you can probably tell I'm currently not working on anything related to Minecraft and don't even have the tools installed to compile/build Gadomancy and I'm not interested in doing any of that. There is one options however: @HellFirePvP does that (I won't judge him if he doesn't do it because he spends his time on mods that are way more awesome and actually worth his time and skill) |
|
No worries; I figured the odds of this getting merged + a new release built with it were pretty negligible:-) I have a fix for the Rhythm of the Beating Anvil in Blood Magic for 1.7.10 in a similar situation:-) I mostly play SSP so I fix these for my own benefit, and then issue a pull request just in case:-) Thanks for an awesome mod, I really did have a lot of fun with the mirrored jars, and even the debugging was enjoyable. There's a jar with this fix at |
|
Sorry but I will remove your link to your build of gadomancy - u can post one on your own repo but I won't promote a build that is not from someone I trust |
|
Is there any chance for this PR to be included within Gadomancy? |
|
I suspect not, given new releases are not being cut and the general age of 1.7.10. Even if the PR were merged, new versions of the mod would not be built, even if they were, modpacks would not be updated, etc. If you just want to play with this fix on your own, or on a server where the admin is willing to trust it (they may not be; see below), the fork of this repo on my account, on the branch "binary" (not the one from this PR), there is a build of this mod with the fix, but no one, including me, will help with any issues encountered (though fwiw I played with it quite a bit myself without incident). I've been asked not to post a direct link, since Minecraft mods are computer programs which can do pretty much anything, so installing one that is malicious can do a lot of harm. Since makeo does not know me, they do not want to be seen as endorsing a program someone else wrote, since they have no way of knowing whether it is safe. This PR shows a safe change, but it would have been very easy for me to include some evil changes as well in the jar I built (or, in somewhat strange cases, some malware on my system doing it without my own knowledge -- see https://www.archive.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf for some history on that one), and rather challenging for anyone else to verify this did not occur. Basically all you have is me saying I didn't, and I'm just some random internet person. So you're welcome to download it if you want, but do understand there's a reason the link was removed. Not due to any actual evidence of harm, but because the original author cannot give any assurance of safety. It's a shame that I've I'd posted my various one-line fixes a few years earlier they'd have been ~zero effort for the authors to accept and roll out, but because it's late, the machinery no longer is working. I'm especially sad about my fix to Rhythm of the Beating Anvil from Blood Magic. But I knew when I wrote these they'd never make it upstream, and it was mostly just for me. Bits rot, all is dust, learn to love the void metal, embrace the warp, etc:-) Someday I'll move on from 1.7.10. Maybe. |
|
I am well aware of the need to be careful of the sources of jar's. I know how insecure JVM actually is. Even within docker a JVM can still break free of the container under certain conditions. Attempting to rebuild with the fix in place is..well... frustrating to say the least.
I tried that, but the fun of nodes, warp and my little void metal minion bodyguards with runic shielding keep calling me back to 1.7.10 |
|
I can provide you the jar I built awhile back if you like, though as I noted, I've been asked not to post a link here. Feel free to open an issue on my fork of this repo and I will post a link there. No guarantees, etc -- I don't have my setup to rebuild it, or really even remember how I did it. Something about gradlew. I don't know crap about Java. Offtopic: I always had issues with my golems, even made out of Thaumium and with runic shield, dying in grinders. Not, like, right away, but they were not reliable, and were pretty expensive. I think there may be a bug with golem armor in Thaumcraft itself, where the iron chestplate upgrade stops working (despite still being visible) after the golem is picked up with it on, or the chunk the golem is in reloads, as I noticed the armor as displayed in WAILA going from 6 or whatever to 1. I even would put lights on timers to give them a chance to heal, add a blood magic ritual to heal them, have the enemies drop nearly dead and then golems deal the killing blow, etc. I kind of wonder if it was uniques with thorns or something, idk. In general it's a shame how Thaumcraft's entity-based automation tended to bug out/be frustrating in various ways related to being non-invulnerable entities. I rather enjoyed them as a means of automation, but it was hard to justify. Much of my journey with 1.7.10 is trying to find more interesting alternatives to AE2 that aren't also super frustrating. Now I just play Factorio when I feel the automation itch, though I've yet to try it's Thaumcraft clone Thaumaturgic Machinations. |
Currently, full mirrored jars will never register themselves with their
network, meaning that if the server is restarted while a full mirrored
jar is in the world (or if a player places a full mirrored jar for the
first time since the server has started), the jar will be unable to
share essentia with the rest of its network.
This adds a check to register the jar even if it is full. The performance
impact should be minimal since we only check each jar once per run.
To reproduce the problem, link two mirrored jars. Place one in the world, and fill it to full essentia. Keep the second in your inventory. Restart the server, then place the second jar which is in your inventory. The first jar will remain full at 64, while the one you just placed will remain empty. Now use an essentia phial on the full jar, removing 8 essentia. Observe that this causes the jar to register itself with the network, and the remaining 56 essentia then redistributes itself evenly as expected.