Skip to content

Commit

Permalink
feat: crafting requests on the side of the preview
Browse files Browse the repository at this point in the history
  • Loading branch information
raoulvdberge committed Sep 10, 2024
1 parent 8b656f1 commit cc10fdf
Show file tree
Hide file tree
Showing 27 changed files with 418 additions and 81 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
- Resources in the Grid that are autocraftable now display an orange backdrop and tooltip to indicate whether the resource is autocraftable at a glance.
- Slots used in the Pattern Grid for pattern encoding and Crafting Grid crafting matrix slots now display an orange backdrop and tooltip to indicate whether the item is autocraftable at a glance. This checks patterns from your network and from your inventory.
- Added help tooltip for filtering based on recipe items in the Crafting Grid.
- The crafting amount and crafting preview screens have been merged. Changing the amount will update the live preview.
- The numbers on the crafting preview screen are now compacted with units.
- When requesting autocrafting multiple resources at once, which can happen via a recipe mod, all the crafting requests are now listed on the side of the GUI.

### Fixed

Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -206,5 +206,5 @@ EnergyStorage asBlockItemEnergyStorage(

Optional<Pattern> getPattern(ItemStack stack, Level level);

void openCraftingPreview(List<ResourceAmount> resources);
void openCraftingPreview(List<ResourceAmount> requests);
}
Original file line number Diff line number Diff line change
Expand Up @@ -404,8 +404,8 @@ public Optional<Pattern> getPattern(final ItemStack stack, final Level level) {
}

@Override
public void openCraftingPreview(final List<ResourceAmount> resources) {
ensureLoaded().openCraftingPreview(resources);
public void openCraftingPreview(final List<ResourceAmount> requests) {
ensureLoaded().openCraftingPreview(requests);
}

private RefinedStorageApi ensureLoaded() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import com.refinedmods.refinedstorage.api.grid.operations.GridExtractMode;
import com.refinedmods.refinedstorage.api.grid.view.GridResource;
import com.refinedmods.refinedstorage.api.grid.view.GridView;
import com.refinedmods.refinedstorage.api.resource.ResourceAmount;
import com.refinedmods.refinedstorage.common.api.grid.GridScrollMode;
import com.refinedmods.refinedstorage.common.api.grid.strategy.GridExtractionStrategy;
import com.refinedmods.refinedstorage.common.api.grid.strategy.GridScrollingStrategy;
Expand Down Expand Up @@ -47,6 +48,9 @@ void onScroll(GridScrollMode scrollMode,

List<ClientTooltipComponent> getExtractionHints(ItemStack carriedStack, GridView view);

@Nullable
ResourceAmount getAutocraftingRequest();

@Nullable
@API(status = API.Status.INTERNAL)
PlatformResourceKey getResourceForRecipeMods();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@
import com.refinedmods.refinedstorage.common.api.upgrade.UpgradeRegistry;
import com.refinedmods.refinedstorage.common.api.wirelesstransmitter.WirelessTransmitterRangeModifier;
import com.refinedmods.refinedstorage.common.autocrafting.preview.CraftingPreviewScreen;
import com.refinedmods.refinedstorage.common.autocrafting.preview.CraftingRequest;
import com.refinedmods.refinedstorage.common.grid.NoopGridSynchronizer;
import com.refinedmods.refinedstorage.common.grid.screen.hint.GridInsertionHintsImpl;
import com.refinedmods.refinedstorage.common.grid.screen.hint.ItemGridInsertionHint;
Expand Down Expand Up @@ -601,15 +602,19 @@ public Optional<Pattern> getPattern(final ItemStack stack, final Level level) {
}

@Override
public void openCraftingPreview(final List<ResourceAmount> resources) {
if (resources.isEmpty()) {
public void openCraftingPreview(final List<ResourceAmount> requests) {
if (requests.isEmpty()) {
return;
}
final Minecraft minecraft = Minecraft.getInstance();
if (minecraft.screen == null || minecraft.player == null) {
return;
}
final Inventory inventory = minecraft.player.getInventory();
minecraft.setScreen(new CraftingPreviewScreen(minecraft.screen, inventory, resources.getFirst().resource()));
minecraft.setScreen(new CraftingPreviewScreen(
minecraft.screen,
inventory,
requests.stream().map(CraftingRequest::of).toList()
));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@

import static com.refinedmods.refinedstorage.common.support.AbstractDirectionalBlock.tryExtractDirection;

// TODO: More energy usage for more patterns.
public class CrafterBlockEntity extends AbstractBaseNetworkNodeContainerBlockEntity<PatternProviderNetworkNode>
implements ExtendedMenuProvider<CrafterData>, BlockEntityWithDrops, PatternInventory.Listener {
static final int PATTERNS = 9;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import static com.refinedmods.refinedstorage.common.support.Sprites.LIGHT_ARROW_WIDTH;
import static com.refinedmods.refinedstorage.common.support.Sprites.SLOT;
import static com.refinedmods.refinedstorage.common.util.IdentifierUtil.createIdentifier;
import static java.util.Objects.requireNonNullElse;

class CraftingPatternClientTooltipComponent implements ClientTooltipComponent {
private static final long CYCLE_MS = 1000;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@
import static com.refinedmods.refinedstorage.common.support.Sprites.LIGHT_ARROW_HEIGHT;
import static com.refinedmods.refinedstorage.common.support.Sprites.LIGHT_ARROW_WIDTH;
import static com.refinedmods.refinedstorage.common.support.Sprites.SLOT;
import static java.util.Objects.requireNonNullElse;

class ProcessingPatternClientTooltipComponent implements ClientTooltipComponent {
private static final long CYCLE_MS = 1000;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@
import static com.refinedmods.refinedstorage.common.support.Sprites.LIGHT_ARROW;
import static com.refinedmods.refinedstorage.common.support.Sprites.LIGHT_ARROW_HEIGHT;
import static com.refinedmods.refinedstorage.common.support.Sprites.LIGHT_ARROW_WIDTH;
import static java.util.Objects.requireNonNullElse;

class SmithingTablePatternClientTooltipComponent implements ClientTooltipComponent {
private static final int ARROW_SPACING = 8;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,6 @@
import static com.refinedmods.refinedstorage.common.support.Sprites.LIGHT_ARROW_HEIGHT;
import static com.refinedmods.refinedstorage.common.support.Sprites.LIGHT_ARROW_WIDTH;
import static com.refinedmods.refinedstorage.common.support.Sprites.SLOT;
import static java.util.Objects.requireNonNullElse;

class StonecutterPatternClientTooltipComponent implements ClientTooltipComponent {
private static final int ARROW_SPACING = 8;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,26 @@
package com.refinedmods.refinedstorage.common.autocrafting.preview;

import com.refinedmods.refinedstorage.api.resource.ResourceAmount;
import com.refinedmods.refinedstorage.api.resource.ResourceKey;
import com.refinedmods.refinedstorage.common.api.support.resource.ResourceContainer;
import com.refinedmods.refinedstorage.common.support.containermenu.AbstractResourceContainerMenu;
import com.refinedmods.refinedstorage.common.support.containermenu.DisabledResourceSlot;
import com.refinedmods.refinedstorage.common.support.containermenu.ResourceSlotType;
import com.refinedmods.refinedstorage.common.support.resource.ResourceContainerImpl;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.annotation.Nullable;

import net.minecraft.network.chat.Component;

class CraftingPreviewContainerMenu extends AbstractResourceContainerMenu {
@Nullable
private CraftingPreview preview;
private final List<CraftingRequest> requests;

CraftingPreviewContainerMenu(final ResourceKey resource) {
private CraftingRequest currentRequest;

CraftingPreviewContainerMenu(final List<CraftingRequest> requests) {
super(null, 0);
final ResourceContainer resourceContainer = ResourceContainerImpl.createForFilter(1);
resourceContainer.set(0, new ResourceAmount(resource, 1));
resourceContainer.set(0, new ResourceAmount(requests.getFirst().getResource(), 1));
addSlot(new DisabledResourceSlot(
resourceContainer,
0,
Expand All @@ -30,16 +29,19 @@ class CraftingPreviewContainerMenu extends AbstractResourceContainerMenu {
48,
ResourceSlotType.FILTER
));
this.requests = Collections.unmodifiableList(requests);
this.currentRequest = requests.getFirst();
}

List<CraftingRequest> getRequests() {
return requests;
}

final List<CraftingPreviewItem> items = new ArrayList<>();
for (int i = 0; i < 31; ++i) {
items.add(new CraftingPreviewItem(resource, i, i % 2 == 0 ? 999 : 0, i % 2 == 0 ? 0 : 1000));
}
preview = new CraftingPreview(true, items);
CraftingRequest getCurrentRequest() {
return currentRequest;
}

@Nullable
public CraftingPreview getPreview() {
return preview;
void setCurrentRequest(final CraftingRequest request) {
this.currentRequest = request;
}
}
Loading

0 comments on commit cc10fdf

Please sign in to comment.