Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions docs/content/Modpacks/Changes/v8.0.0.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,11 @@ A few regexes for fixing all the MCMeta files is follows, run them in order:
## IRecipeHandler nullability
Previously, `handleRecipeInner` should return `null` when there's nothing left to process. This has been changed to requiring an empty list (e.g. the list of remaining ingredients). Returning `null` is now wrong and will crash (NPE).

## Painted ME Stocking Input Buses/Hatches
Multiple ME Stocking buses/hatches on a single machine cannot contain the same input, unless one of the buses is set to
Distinct. This update alters that behavior to allow Stocking buses/hatches with different Paint colors to contain the
same inputs, allowing those inputs to be present in multiple distinct paint groups.

## Empty content check for recipe capabilities
As a recipe-matching optimization, input handlers whose `getTotalContentAmount()` returns `0` are now skipped during recipe handling. If your `RecipeCapability` has handlers that legitimately report a total content amount of `0` but can still satisfy a recipe (e.g. rate-based capabilities like computation/CWU, where nothing is "stored" but the handler can still provide), you must now override `RecipeCapability#skipEmptyContentCheck()` to return `true`, otherwise these capabilities will break (their handlers will never be run).

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -158,11 +158,14 @@ public boolean testConfiguredInOtherPart(@Nullable GenericStack config) {

// Otherwise, we need to test for if the item is configured
// in any stocking bus in the multi (besides ourselves).
// Duplicate configurations are allowed for Distinct Buses, and Painted Buses of different colors.
for (MultiblockControllerMachine controller : getControllers()) {
for (IMultiPart part : controller.getParts()) {
if (part instanceof MEStockingBusPartMachine bus) {
// We don't need to check for ourselves, as this case is handled elsewhere.
if (bus == this || bus.isDistinct()) continue;
if (bus == this || bus.isDistinct() ||
(bus.getPaintingColor() != this.getPaintingColor()))
continue;
if (bus.aeItemHandler.hasStackInConfig(config, false)) {
return true;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -147,11 +147,14 @@ public IConfigurableSlotList getSlotList() {
public boolean testConfiguredInOtherPart(@Nullable GenericStack config) {
if (config == null) return false;
if (!isFormed()) return false;

// Test for if the fluid is configured in any stocking hatch in the multi (besides ourselves).
// Duplicate configurations are allowed for Painted Hatches of different colors.
for (MultiblockControllerMachine controller : getControllers()) {
for (IMultiPart part : controller.getParts()) {
if (part instanceof MEStockingHatchPartMachine hatch) {
if (hatch == this) continue;
if (hatch == this ||
(hatch.getPaintingColor() != this.getPaintingColor()))
continue;
if (hatch.aeFluidHandler.hasStackInConfig(config, false)) {
return true;
}
Expand Down
Loading