* Add an API for Sound P2P listing updated channels any time p2ps are connected/disconnected from that p2p's network
* Run onSoundP2PAttach() on block updates too, to allow GT meta tiles to work
---------
Co-authored-by: Martin Robertz <dream-master@gmx.net>
* Lazily fill out the ItemList for network delta updates
* Implement a new api for looking up a single stored item to optimize network monitor updates
* Update buildscript
* Add Nonnull annotation to the argument
* Add enough API to make NEE no longer require asming into ae2
* spotlessApply (#327)
Co-authored-by: GitHub GTNH Actions <>
---------
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Update buildscript and set gradle project name
* Implement fullscreen mode for the crafting tree view
* Tall crafting list view
* Default to tallMode = true
* Enable Jabel and generic injection
* Use RoundingMode enum values
* Use enhanced for loops
* Use diamond operator where appropriate
* Deprecate ChainedIterator
* spotless
* Collapse identical catch blocks
* Use try with resources
* Use List.sort where possible
* Anonymous type->lambda
* Loop -> removeIf
* Simplifiable map operations
* Use enhanced instanceof
* Use enhanced switch
* Use bulk operations
* Use zero-sized arrays in toArray
* Add early exits
* Remove redundant addAll
* Fix missing reflection generic types
* More missed language migration aids
* Redundant type arguments
* Redundant type casts
* Fix compilation errors
* Use Arrays.fill
* Fix some missing generic types
- Sets a configurable limit on the number of simulation steps and the size of the serialized tree to prevent DDOS
- Culls invisible parts of the tree when rendering, tested to maintain high fps on requests with 200k+ individual steps
- Displays the machines that are responsible for crafting via interfaces, with an API to override the displayed itemstack (for GT hatches to point to their multiblock when implemented)
More features, such as searching, filtering the tree etc. might come in future PRs.
* Remove unnecessary SideOnly CLIENT annotations for getting item names
* Split off the crafting context log message to avoid an additional concatenation
* Make emitable match simulatemissing again, and add fulfilled amounts to the debug log
* Better craft debug logging
* Fix wrong actuallyNeeded calculation (the key holds all requested items, not per single craft)
* Add a test for the previously failing recipe
* Fix subtle bugs in partial refunds of crafting requests, the code is easier to read now too
* Test for the complex recipe chain from Discord
* Add readable names to itemstacks where possible in crafting logs
* Remove redundant line
* Update buildscript
* Add a simple gt5u tool crafting unittest
* Fix child requests going missing when duplicates of the same item are present in the pattern
* Fix typo causing complex patterns to never attempt simulation
* Add a heuristic to better avoid requesting duplicate gt tools
* Add more complex tool crafting tests for the scenarios in <https://github.com/GTNewHorizons/GT-New-Horizons-Modpack/issues/12685>
* Fix getContainerItem to match vanilla in max damage handling
* Use the shared ae2 getContainerItem instead of a custom copy
* Fix infinite recursion when handling pattern cycles
* Add a test for not using renamed items in strict patterns
* Rename local variables in ContainerCraftConfirm to be readable
* Handle tool/bucket crafting table recipes correctly
* Don't show byproduct-extracted items in the plan, it's confusing
(and potentially other inventories that limit per-operation stack size).
Also because of the possibility of pushing that may need multiple ticks to complete, take that into account when requesting quicker ticking, otherwise pushing e.g. 512 wool to a ME chest takes a minute instead of seconds.
* Add a unittest mod that runs on server start in the dev environment
* Integrate JUnit 5 into functionalTests
* Byte cost adjustment api for ae2fc, fix byproduct refund handling
* Output an XML of the test run for debugging
* Add enough mock wrappers for a simple crafting test with no patterns
* Add processing pattern mocking support and a test for it
* Add mock item storage and tests for crafting with items stored
* Add a test for crafting chests from different log types
* Add a test for a mixed log chest crafting, change report format to more readable legacy xml
* Fix wrong generic argument in registerByteAmountAdjuster
* Add an explanation javadoc of byproduct separation
* Fix NPE
* Fix derp, didn't update one of the arrays which caused things to never get cancelled in subsimulations
* No-op on nulls instead of throwing
* Update NEI
* Update buildscript
* Crafting Calculator V2 [WIP]
* Implement refunds
* Add a config option to switch crafting calculators, default to v2
* Initial AE2 glue code
* Fix scheduling as a Future
* The simplest of crafting now works
* Fix crafting cpu picking up the wrong pattern fuzzy matches
* Revert "use as substitute" changes in the old crafting calculator.
* Update buildscript
* Make meteorite locations independent of chunk loading order by using a grid-based system for location randomization
* Refactor MeteoritePlacer and related worldgen to be fully deterministic.
Also move around some initialization code into constructors to make it easier to read.
* Update buildscript
* Allow "use substitutions" patterns to request crafting of substituted components
Previously only existing substitution items would be used, but crafting new ones wouldn't be requested.
This may not be 100% reliable when multiple alternative patterns exist and only some are craftable, as not all possible crafting permutations are explored.
* Make patterns eligible for substitution crafting optional
* Add a gui button to toggle whether patterns can be used as crafting substitutions
* Fix potential missed updates in the level emitter.
This makes the emitter tickable, but sleeping most of the time so the performance impact should be minimal.
If an update is ignored due to the configured delay, ticking is scheduled to make sure that the update happens if no further network updates happen until the next delay period.
* Attempt #2: Delay the first tick of the level emitter on load
* Revert "NetworkMonitor optimization - do not rebuild cache more than once per tick"
This reverts commit 09b253109c.
* spaces->tabs to match existing code
* Factor out the cpu table clientside widget
* Recursive GuiSync support
* Factor out container, add back cpu cycling via the big button
* Add busy cpu preference
* Use CPU table in craft confirmation dialog