Skip to content

Commit

Permalink
fix: potential load order issues
Browse files Browse the repository at this point in the history
PlatformApi may not be available yet on Fabric.
  • Loading branch information
raoulvdberge committed Jun 20, 2024
1 parent 1e5d463 commit 1841375
Show file tree
Hide file tree
Showing 9 changed files with 32 additions and 58 deletions.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,10 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

### Fixed

- Potential load order issues on Fabric.

## [0.1.1] - 2024-06-16

### Fixed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import java.util.List;
import java.util.stream.Stream;

import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
import com.refinedmods.refinedstorage2.platform.api.support.resource.PlatformResourceKey;
import com.refinedmods.refinedstorage2.platform.api.support.resource.RecipeModIngredientConverter;
import com.refinedmods.refinedstorage2.platform.common.Platform;
import com.refinedmods.refinedstorage2.platform.common.support.AbstractBaseScreen;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.AbstractResourceContainerMenu;
Expand All @@ -19,12 +19,6 @@

class DraggableStackVisitorImpl
implements DraggableStackVisitor<AbstractBaseScreen<? extends AbstractResourceContainerMenu>> {
private final RecipeModIngredientConverter ingredientConverter;

DraggableStackVisitorImpl(final RecipeModIngredientConverter ingredientConverter) {
this.ingredientConverter = ingredientConverter;
}

@Override
public Stream<BoundsProvider> getDraggableAcceptingBounds(
final DraggingContext<AbstractBaseScreen<? extends AbstractResourceContainerMenu>> context,
Expand All @@ -34,7 +28,7 @@ public Stream<BoundsProvider> getDraggableAcceptingBounds(
final var menu = screen.getMenu();
final var value = stack.getStack().getValue();
final List<BoundsProvider> bounds = new ArrayList<>();
ingredientConverter.convertToResource(value).ifPresent(resource -> {
PlatformApi.INSTANCE.getIngredientConverter().convertToResource(value).ifPresent(resource -> {
for (final ResourceSlot slot : menu.getResourceSlots()) {
if (slot.isFilter() && slot.isValid(resource)) {
bounds.add(BoundsProvider.ofRectangle(toRectangle(screen, slot)));
Expand All @@ -52,7 +46,7 @@ public DraggedAcceptorResult acceptDraggedStack(
final var screen = context.getScreen();
final var menu = screen.getMenu();
final Object value = stack.getStack().getValue();
return ingredientConverter.convertToResource(value)
return PlatformApi.INSTANCE.getIngredientConverter().convertToResource(value)
.map(resource -> accept(context, menu, screen, resource))
.orElse(DraggedAcceptorResult.PASS);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage.rei.fabric;

import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
import com.refinedmods.refinedstorage2.platform.api.support.resource.PlatformResourceKey;
import com.refinedmods.refinedstorage2.platform.api.support.resource.RecipeModIngredientConverter;
import com.refinedmods.refinedstorage2.platform.common.grid.screen.AbstractGridScreen;
import dev.architectury.event.CompoundEventResult;
import me.shedaniel.math.Point;
Expand All @@ -10,12 +10,6 @@
import net.minecraft.client.gui.screens.Screen;

class GridFocusedStackProvider implements FocusedStackProvider {
private final RecipeModIngredientConverter converter;

GridFocusedStackProvider(final RecipeModIngredientConverter converter) {
this.converter = converter;
}

@Override
public CompoundEventResult<EntryStack<?>> provide(final Screen screen, final Point mouse) {
if (!(screen instanceof AbstractGridScreen<?> gridScreen)) {
Expand All @@ -25,7 +19,9 @@ public CompoundEventResult<EntryStack<?>> provide(final Screen screen, final Poi
if (resource == null) {
return CompoundEventResult.pass();
}
final Object converted = converter.convertToIngredient(resource).orElse(null);
final Object converted = PlatformApi.INSTANCE.getIngredientConverter()
.convertToIngredient(resource)
.orElse(null);
if (converted instanceof EntryStack<?> stack) {
return CompoundEventResult.interruptTrue(stack);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,9 @@
public class ReiClientPlugin implements REIClientPlugin {
@Override
public void registerScreens(final ScreenRegistry registry) {
final RecipeModIngredientConverter converter = PlatformApi.INSTANCE.getIngredientConverter();
registry.registerFocusedStack(new GridFocusedStackProvider(converter));
registry.registerFocusedStack(new ResourceFocusedStackProvider(converter));
registry.registerDraggableStackVisitor(new DraggableStackVisitorImpl(converter));
registry.registerFocusedStack(new GridFocusedStackProvider());
registry.registerFocusedStack(new ResourceFocusedStackProvider());
registry.registerDraggableStackVisitor(new DraggableStackVisitorImpl());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage.rei.fabric;

import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
import com.refinedmods.refinedstorage2.platform.api.support.resource.PlatformResourceKey;
import com.refinedmods.refinedstorage2.platform.api.support.resource.RecipeModIngredientConverter;
import com.refinedmods.refinedstorage2.platform.common.support.AbstractBaseScreen;
import dev.architectury.event.CompoundEventResult;
import me.shedaniel.math.Point;
Expand All @@ -10,12 +10,6 @@
import net.minecraft.client.gui.screens.Screen;

class ResourceFocusedStackProvider implements FocusedStackProvider {
private final RecipeModIngredientConverter converter;

ResourceFocusedStackProvider(final RecipeModIngredientConverter converter) {
this.converter = converter;
}

@Override
public CompoundEventResult<EntryStack<?>> provide(final Screen screen, final Point mouse) {
if (!(screen instanceof AbstractBaseScreen<?> baseScreen)) {
Expand All @@ -25,7 +19,9 @@ public CompoundEventResult<EntryStack<?>> provide(final Screen screen, final Poi
if (hoveredResource == null) {
return CompoundEventResult.pass();
}
final Object converted = converter.convertToIngredient(hoveredResource).orElse(null);
final Object converted = PlatformApi.INSTANCE.getIngredientConverter()
.convertToIngredient(hoveredResource)
.orElse(null);
if (converted instanceof EntryStack<?> stack) {
return CompoundEventResult.interruptTrue(stack);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import java.util.List;
import java.util.stream.Stream;

import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
import com.refinedmods.refinedstorage2.platform.api.support.resource.PlatformResourceKey;
import com.refinedmods.refinedstorage2.platform.api.support.resource.RecipeModIngredientConverter;
import com.refinedmods.refinedstorage2.platform.common.Platform;
import com.refinedmods.refinedstorage2.platform.common.support.AbstractBaseScreen;
import com.refinedmods.refinedstorage2.platform.common.support.containermenu.AbstractResourceContainerMenu;
Expand All @@ -19,12 +19,6 @@

class DraggableStackVisitorImpl
implements DraggableStackVisitor<AbstractBaseScreen<? extends AbstractResourceContainerMenu>> {
private final RecipeModIngredientConverter ingredientConverter;

DraggableStackVisitorImpl(final RecipeModIngredientConverter ingredientConverter) {
this.ingredientConverter = ingredientConverter;
}

@Override
public Stream<BoundsProvider> getDraggableAcceptingBounds(
final DraggingContext<AbstractBaseScreen<? extends AbstractResourceContainerMenu>> context,
Expand All @@ -34,7 +28,7 @@ public Stream<BoundsProvider> getDraggableAcceptingBounds(
final var menu = screen.getMenu();
final var value = stack.getStack().getValue();
final List<BoundsProvider> bounds = new ArrayList<>();
ingredientConverter.convertToResource(value).ifPresent(resource -> {
PlatformApi.INSTANCE.getIngredientConverter().convertToResource(value).ifPresent(resource -> {
for (final ResourceSlot slot : menu.getResourceSlots()) {
if (slot.isFilter() && slot.isValid(resource)) {
bounds.add(BoundsProvider.ofRectangle(toRectangle(screen, slot)));
Expand All @@ -52,7 +46,7 @@ public DraggedAcceptorResult acceptDraggedStack(
final var screen = context.getScreen();
final var menu = screen.getMenu();
final Object value = stack.getStack().getValue();
return ingredientConverter.convertToResource(value)
return PlatformApi.INSTANCE.getIngredientConverter().convertToResource(value)
.map(resource -> accept(context, menu, screen, resource))
.orElse(DraggedAcceptorResult.PASS);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage.rei.forge;

import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
import com.refinedmods.refinedstorage2.platform.api.support.resource.PlatformResourceKey;
import com.refinedmods.refinedstorage2.platform.api.support.resource.RecipeModIngredientConverter;
import com.refinedmods.refinedstorage2.platform.common.grid.screen.AbstractGridScreen;
import dev.architectury.event.CompoundEventResult;
import me.shedaniel.math.Point;
Expand All @@ -10,12 +10,6 @@
import net.minecraft.client.gui.screens.Screen;

class GridFocusedStackProvider implements FocusedStackProvider {
private final RecipeModIngredientConverter converter;

GridFocusedStackProvider(final RecipeModIngredientConverter converter) {
this.converter = converter;
}

@Override
public CompoundEventResult<EntryStack<?>> provide(final Screen screen, final Point mouse) {
if (!(screen instanceof AbstractGridScreen<?> gridScreen)) {
Expand All @@ -25,7 +19,9 @@ public CompoundEventResult<EntryStack<?>> provide(final Screen screen, final Poi
if (underlyingResource == null) {
return CompoundEventResult.pass();
}
final Object converted = converter.convertToIngredient(underlyingResource).orElse(null);
final Object converted = PlatformApi.INSTANCE.getIngredientConverter()
.convertToIngredient(underlyingResource)
.orElse(null);
if (converted instanceof EntryStack<?> stack) {
return CompoundEventResult.interruptTrue(stack);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,9 @@
public class ReiClientPlugin implements REIClientPlugin {
@Override
public void registerScreens(final ScreenRegistry registry) {
final RecipeModIngredientConverter converter = PlatformApi.INSTANCE.getIngredientConverter();
registry.registerFocusedStack(new GridFocusedStackProvider(converter));
registry.registerFocusedStack(new ResourceFocusedStackProvider(converter));
registry.registerDraggableStackVisitor(new DraggableStackVisitorImpl(converter));
registry.registerFocusedStack(new GridFocusedStackProvider());
registry.registerFocusedStack(new ResourceFocusedStackProvider());
registry.registerDraggableStackVisitor(new DraggableStackVisitorImpl());
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.refinedmods.refinedstorage.rei.forge;

import com.refinedmods.refinedstorage2.platform.api.PlatformApi;
import com.refinedmods.refinedstorage2.platform.api.support.resource.PlatformResourceKey;
import com.refinedmods.refinedstorage2.platform.api.support.resource.RecipeModIngredientConverter;
import com.refinedmods.refinedstorage2.platform.common.support.AbstractBaseScreen;
import dev.architectury.event.CompoundEventResult;
import me.shedaniel.math.Point;
Expand All @@ -10,12 +10,6 @@
import net.minecraft.client.gui.screens.Screen;

class ResourceFocusedStackProvider implements FocusedStackProvider {
private final RecipeModIngredientConverter converter;

ResourceFocusedStackProvider(final RecipeModIngredientConverter converter) {
this.converter = converter;
}

@Override
public CompoundEventResult<EntryStack<?>> provide(final Screen screen, final Point mouse) {
if (!(screen instanceof AbstractBaseScreen<?> baseScreen)) {
Expand All @@ -25,7 +19,9 @@ public CompoundEventResult<EntryStack<?>> provide(final Screen screen, final Poi
if (hoveredResource == null) {
return CompoundEventResult.pass();
}
final Object converted = converter.convertToIngredient(hoveredResource).orElse(null);
final Object converted = PlatformApi.INSTANCE.getIngredientConverter()
.convertToIngredient(hoveredResource)
.orElse(null);
if (converted instanceof EntryStack<?> stack) {
return CompoundEventResult.interruptTrue(stack);
}
Expand Down

0 comments on commit 1841375

Please sign in to comment.