ldtteam / aequivaleo Goto Github PK
View Code? Open in Web Editor NEWAnalysis engine and mediator mod for analyzing recipes and equivalencies of items, blockstates and other game objects in minecraft.
License: GNU General Public License v3.0
Analysis engine and mediator mod for analyzing recipes and equivalencies of items, blockstates and other game objects in minecraft.
License: GNU General Public License v3.0
I was told to redirect the issue here, MercuriusXeno/Goo#122
MC 1.16.5
Forge 36.2.2
GraalVM Java8
Everytime I load a world, the FPS drops to literal 0 for quite some time (it takes really long) before returning to normal. Looking at the console, somehow aequivaleo and goo are trying to "scan" every single dimension present. It does not matter if the world is previously saved or is just a newly created worldJust wanna ask if this is normal behavior or is there something probably wrong?
This is an extremely large modpack, but still, I find it somewhat absurd that loading every world would require a full 20 minute hiccup before I can actually start playing.
Console logs (only showing the point where aequivaleo tries to scan every dimension):
https://gist.github.com/Cynix32/2a5750c055062106b396c4ef0010fc51
At the moment it looks like the analyzer and compound values are hard coded to be double
.
I consider this somewhat risky, as some Minecraft players and mods LOVE huge numbers, which might result in weird float arithmetic errors down the line when adding small numbers to big numbers (which might be an interesting game mechanic on its own, but is probably not desired here).
I'd prefer something like BigFraction
. So I'd recommend to not have it hard coded, but allow for the number type to be changeable without rewriting everything.
When a value is only provided through a locked source, the cache currently does not take that value into account, resulting in items with a value provided in such a manner losing their value when loading values from Cache.
IResultsInformationCache
and all methods deprecated and made to extend IEquivalencyResults
IEquivalencyResults
having methods dataFor
as replacement for getFor
IEquivalencyResults
having methods mappedDataFor
as replacement for getCacheFor
IEquivalencyResults
having method getAllMappedDataOf
as replacement for getAllCachedDataOf
IAequivaleoAPI
having method getResultsInformationCache
deprecatedIAequivaleoAPI
new method public IEquivalencyResults getEquivalencyResults
ICompoundTypeGroup
having methods convertToCacheEntry
deprecated in favor of mapEntry
I wanted to play around with the analyzer algorithm and maybe write some tests to see how it works, but I found it very hard (=impossible for me) to run it in isolation.
I could replace the World
-Object with a RegistryKey<World>
-Object, which was easier to create in a Test, but ran into other issues then, that indicated I somehow need to initialize forge, which is outside of my comfort zone right now, as I'm a bit rusty in Minecraft programming.
I think it would be a little easier if the JGraphTBasedCompoundAnalyzer
was instantiated with instances of ILockedCompoundInformationRegistry
, etc. instead of requesting them on demand.
That would also save a lot of getInstance
-Calls.
I think having junit tests makes it a lot easier and robust to develop an algorithm like this, as you can just keep coming up with new test setups and confirm the old tests still work as expected.
Can't use Goo without more recent jars.
Output produced by datagen can seed non-deterministic key value pairs [names unsorted, won't necessarily be in the same order when run twice] causing git to flag the file for deltas, and other minor reasons why this behavior is less desirable.
Orion already identified that a hashset was being used where a sorted set would nip this.
Issue ported from discord for convenience.
I am running 1.16.4 modpack (Direwolf20 1.16 modpack with goo and aequivaleo added) with "aequivaleo-0.1.16-ALPHA" and "Goo-1.16.3-0.8.0.2" however no items are getting assigned values. The minecraft log is filled with "Failed to process recipe:" to the point I struggled to find a paste tool allowing the file to be accepted due to its size.
The log is in the attached archive:
debug-5.log.gz
The error.log file in aequivaleo folder is empty but there is a single archive with an error file which I've attached. After restarting minecraft I didn't get a new error so it may be unrelated.
2021-01-02-1.error.gz
When creating a new world with the Create
minecraft mod installed, I see log lines such as:
[04Jul2021 20:44:56.106] [ForkJoinPool.commonPool-worker-2/ERROR] [com.ldtteam.aequivaleo.vanilla.VanillaAequivaleoPlugin/]: Failed to process recipe: create:splashing/ice See ingredient error logs for more information.
This informs me that I should check the logs\aequivaleo\ingredient\error.log
file for further information, but that file is empty (exists but zero bytes).
Minecraft 1.16.5
, Forge 36.1.32
, launched via MultiMC 5 (0.6.12-1530
)
Mod list:
aequivaleo-0.1.35-ALPHA-universal.jar # aequivaleo
appleskin-forge-mc1.16.x-2.0.0.jar
create-mc1.16.5_v0.3.1c.jar
FastLeafDecay-v25.jar
Goo-1.16.5-0.8.3.8.jar # goo
gravestone-1.16.5-1.0.6.jar
inventorysorter-1.16.1-18.1.0.jar
jei-1.16.5-7.7.0.107.jar
JustEnoughResources-1.16.5-0.12.1.121.jar
Patchouli-1.16.4-53.1.jar
StorageDrawers-1.16.3-8.2.2.jar
theoneprobe-1.16-3.1.4.jar
Xaeros_Minimap_21.12.2_Forge_1.16.5.jar
XaerosWorldMap_1.14.4_Forge_1.16.5.jar
Please find attached the debug.log and latest.log.
When Aequivaleo aequivaleo-1.18.2-0.1.94-ALPHA-universal is run with Mine Colonies, there's a memory leak that will eventually consume all available allocated RAM. (I have 8GB allocated, and it will use all of that until java crashes.)
If I remove Aequivaleo, memory usage returns to normal.
From the Java Memory Analyzer tool:
Thread Stack Aequivaleo analysis runner: 1 at java.util.ArrayList.indexOfRange(Ljava/lang/Object;II)I (ArrayList.java:298) at java.util.ArrayList.indexOf(Ljava/lang/Object;)I (ArrayList.java:286) at java.util.ArrayList.contains(Ljava/lang/Object;)Z (ArrayList.java:275) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:172) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.circuit(Ljava/lang/Integer;I)Z (HawickJamesSimpleCycles.java:158) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.analyzeCircuits()V (HawickJamesSimpleCycles.java:288) at com.ldtteam.shaded.jgrapht.alg.cycle.HawickJamesSimpleCycles.findSimpleCycles()Ljava/util/List; (HawickJamesSimpleCycles.java:234) at com.ldtteam.aequivaleo.analysis.jgrapht.cycles.JGraphTCyclesReducer.reduceOnce(Lcom/ldtteam/shaded/jgrapht/Graph;)Z (JGraphTCyclesReducer.java:56) at com.ldtteam.aequivaleo.analysis.jgrapht.cycles.JGraphTCyclesReducer.reduce(Lcom/ldtteam/shaded/jgrapht/Graph;)V (JGraphTCyclesReducer.java:47) at com.ldtteam.aequivaleo.analysis.JGraphTBasedCompoundAnalyzer.reduceGraph(Lcom/ldtteam/aequivaleo/analysis/jgrapht/aequivaleo/IGraph;Lcom/ldtteam/aequivaleo/analysis/jgrapht/node/SourceNode;)Lcom/ldtteam/aequivaleo/analysis/jgrapht/aequivaleo/IGraph; (JGraphTBasedCompoundAnalyzer.java:241) at com.ldtteam.aequivaleo.analysis.JGraphTBasedCompoundAnalyzer.calculate()V (JGraphTBasedCompoundAnalyzer.java:289) at com.ldtteam.aequivaleo.analysis.JGraphTBasedCompoundAnalyzer.calculateAndGet()Ljava/util/Map; (JGraphTBasedCompoundAnalyzer.java:431) at com.ldtteam.aequivaleo.analysis.AequivaleoReloadListener$AequivaleoWorldAnalysisRunner.reloadEquivalencyData()V (AequivaleoReloadListener.java:692) at com.ldtteam.aequivaleo.analysis.AequivaleoReloadListener$AequivaleoWorldAnalysisRunner.run()V (AequivaleoReloadListener.java:647) at java.util.concurrent.CompletableFuture$AsyncRun.run()V (CompletableFuture.java:1804) at java.util.concurrent.ThreadPoolExecutor.runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V (ThreadPoolExecutor.java:1136) at java.util.concurrent.ThreadPoolExecutor$Worker.run()V (ThreadPoolExecutor.java:635) at java.lang.Thread.run()V (Thread.java:833)
Probably ideal as a single unsided method, having states akin to:
At minimum there is a need to distinguish between having no data available, processing data, and data being available; on both Server and Client.
How do you plan to make compound value sets comparable?
I think for the analysis to work and not result in immediate exploits it always has to choose the smallest value when there are multiple options. But "smallest value" is not really defined, when you have a vector of values and there's an infinite ways to define it.
E.g. compare weighted sum, distance to 0, compare compounds in a specific order, choose the minimum for each compound type independently, ...
I think at the moment this problem is avoided by just always using the first calculated value, but from my experience this will not always find the smallest number and makes the analyzer recipe-order dependent.
error.log
as title said, if needed il sed latest log too
An itemstack container (such as a bucket) can contain a fluidstack.
You can generate values for the fluids, and the container item, but Aequivaleo doesn't see the relationship between a bucket, BUCKET_VOLUME of a fluid (like water), and a water bucket (the product of those two things).
At the moment you can teach it these relationships manually, either by directly giving the items a hand-crafted value, or by registering a recipe type and supplementing those compound types.
If we could take this a step further, and make Aeq innately aware that buckets can contain fluids, Aeq could infer the value of liquid-and-container combos automatically.
I'm not certain this should extend to all FluidHandlers; I think ideally this wouldn't affect complex handlers like custom mod tanks; strictly bucket-items that have a non-variable quantity of liquid as part of their identity as an item (buckets being a prime example). Probably needs more thought/discussion. Feel free to ping me if this needs better wording.
Under certain, yet undetermined conditions, certain wrappers do not get assigned a value, or a preset value is overwritten.
Currently prevalent in:
Aequivaleo Version:
MC Version: 1.16.3
Forge Version: 32.1.17
aequivaleo version: 0.0.101-ALPHA
Crash report: https://gist.github.com/darkphan/1360a36032131d9bab237bc93e5e4b06
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.