Merge pull request #3467 from refinedmods/develop

v1.11.5
This commit is contained in:
Raoul
2023-02-12 10:23:51 +01:00
committed by GitHub
11 changed files with 65 additions and 20 deletions

View File

@@ -83,3 +83,9 @@ jobs:
consumer-secret: ${{ secrets.TWITTER_CONSUMER_API_SECRET }}
access-token: ${{ secrets.TWITTER_ACCESS_TOKEN }}
access-token-secret: ${{ secrets.TWITTER_ACCESS_TOKEN_SECRET }}
- name: Announce to Mastodon
uses: rzr/fediverse-action@master
with:
access-token: ${{ secrets.MASTODON_TOKEN }}
host: 'anvil.social'
message: "Refined Storage ${{ env.GIT_TAG_NAME }} has been released! ${{ env.RELEASE_URL }}"

View File

@@ -0,0 +1,13 @@
name: Lock resolved issues and PRs
on:
schedule:
- cron: '0 0 * * *'
jobs:
lock:
runs-on: ubuntu-latest
steps:
- uses: dessant/lock-threads@v2
with:
github-token: ${{ github.token }}
issue-lock-inactive-days: '30'
pr-lock-inactive-days: '30'

View File

@@ -9,6 +9,15 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
### Fixed
- Fixed some craftable items not showing as craftable in JEI
- Fixed Grid crashing on exit if JEI mod is not used
- Fixed rare multithreading crash
- Fixed Constructor being able to drop more than the maximum stack size for an item
## [v1.11.4] - 2022-12-20
### Fixed
- Fixed duplication bug in the Interface.
## [v1.11.3] - 2022-12-20
@@ -48,6 +57,20 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
- Ported to Minecraft 1.19.2.
## [v1.10.4] - 2022-12-20
### Fixed
- Fixed external storage cache being de-synced from the network cache.
- Fixed external storage using an out of date block entity for getting handler.
- Fixed chained crafters not taking over the name of the root crafter.
- Made Refined Storage more robust against crashes when moving network blocks by unconventional means.
- Fixed duplication bug in the Interface.
### Changed
- Increased packet size limit.
## [v1.10.3] - 2022-08-06
### Fixed

View File

@@ -1,6 +1,6 @@
# The MIT License (MIT)
Copyright © 2015 - 2022 Refined Mods
Copyright © 2015 - 2023 Refined Mods
Permission is hereby granted, free of charge, to any person
obtaining a copy of this software and associated documentation

View File

@@ -33,7 +33,7 @@ apply plugin: 'maven-publish'
group = 'com.refinedmods'
archivesBaseName = 'refinedstorage'
version = '1.11.4'
version = '1.11.5'
if (System.getenv('GITHUB_SHA') != null) {
version += '+' + System.getenv('GITHUB_SHA').substring(0, 7)

View File

@@ -134,7 +134,8 @@ public class ConstructorNetworkNode extends NetworkNode implements IComparable,
}
private void extractAndDropItem(ItemStack stack) {
ItemStack took = network.extractItem(stack, upgrades.getStackInteractCount(), compare, Action.PERFORM);
int dropCount = Math.min(upgrades.getStackInteractCount(), stack.getMaxStackSize());
ItemStack took = network.extractItem(stack, dropCount, compare, Action.PERFORM);
if (!took.isEmpty()) {
DefaultDispenseItemBehavior.spawnItem(level, took, 6, getDirection(), new PositionImpl(getDispensePositionX(), getDispensePositionY(), getDispensePositionZ()));

View File

@@ -62,6 +62,10 @@ public class ItemExternalStorageCache {
ItemStack cached = cache.get(i);
//ItemStack.EMPTY can be accidentally modified by other mods on any thread. This makes sure we ignore that.
if (actual == ItemStack.EMPTY && actual == cached)
continue;
if (!cached.isEmpty() && actual.isEmpty()) { // REMOVED
network.getItemStorageCache().remove(cached, cached.getCount(), true);

View File

@@ -4,7 +4,6 @@ import com.refinedmods.refinedstorage.RSItems;
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.refinedmods.refinedstorage.item.CoverItem;
import com.refinedmods.refinedstorage.recipe.CoverRecipe;
import mezz.jei.api.constants.VanillaTypes;
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.builder.IRecipeSlotBuilder;
import mezz.jei.api.gui.ingredient.ICraftingGridHelper;
@@ -55,8 +54,8 @@ public class CoverCraftingCategoryExtension implements ICraftingCategoryExtensio
List<List<ItemStack>> inputs = new ArrayList<>(Collections.nCopies(9, new ArrayList<>()));
inputs.set(3, nuggets);
inputs.set(4, input);
List<IRecipeSlotBuilder> inputSlots = craftingGridHelper.createAndSetInputs(builder, VanillaTypes.ITEM_STACK, inputs, 3, 3);
IRecipeSlotBuilder outputSlot = craftingGridHelper.createAndSetOutputs(builder, VanillaTypes.ITEM_STACK, output);
List<IRecipeSlotBuilder> inputSlots = craftingGridHelper.createAndSetInputs(builder, inputs, 3, 3);
IRecipeSlotBuilder outputSlot = craftingGridHelper.createAndSetOutputs(builder, output);
builder.createFocusLink(inputSlots.get(4), outputSlot);
}

View File

@@ -8,7 +8,6 @@ import com.refinedmods.refinedstorage.network.grid.GridCraftingPreviewRequestMes
import com.refinedmods.refinedstorage.network.grid.GridProcessingTransferMessage;
import com.refinedmods.refinedstorage.network.grid.GridTransferMessage;
import com.refinedmods.refinedstorage.screen.grid.GridScreen;
import mezz.jei.api.constants.VanillaTypes;
import mezz.jei.api.forge.ForgeTypes;
import mezz.jei.api.gui.ingredient.IRecipeSlotView;
import mezz.jei.api.gui.ingredient.IRecipeSlotsView;
@@ -67,7 +66,7 @@ public class GridRecipeTransferHandler implements IRecipeTransferHandler<GridCon
Ingredient.IngredientList ingredientList = new Ingredient.IngredientList();
for (IRecipeSlotView slotView : recipeSlots.getSlotViews(RecipeIngredientRole.INPUT)) {
Optional<ItemStack> firstStack = slotView.getIngredients(VanillaTypes.ITEM_STACK).findAny();
Optional<ItemStack> firstStack = slotView.getItemStacks().findAny();
ingredientList.add(new Ingredient(slotView, firstStack.map(ItemStack::getCount).orElse(0)));
}
@@ -139,10 +138,10 @@ public class GridRecipeTransferHandler implements IRecipeTransferHandler<GridCon
List<List<ItemStack>> inputs = recipeSlotsView.getSlotViews(RecipeIngredientRole.INPUT).stream().map(view -> {
//Creating a mutable list
List<ItemStack> stacks = view.getIngredients(VanillaTypes.ITEM_STACK).collect(Collectors.toCollection(ArrayList::new));
List<ItemStack> stacks = view.getItemStacks().collect(Collectors.toCollection(ArrayList::new));
//moving the displayed stack to first
Optional<ItemStack> displayStack = view.getDisplayedIngredient(VanillaTypes.ITEM_STACK);
Optional<ItemStack> displayStack = view.getDisplayedItemStack();
displayStack.ifPresent(stack -> {
int index = stacks.indexOf(stack);
if (index > -1) {
@@ -185,11 +184,11 @@ public class GridRecipeTransferHandler implements IRecipeTransferHandler<GridCon
}
private void handleItemIngredient(List<ItemStack> list, IRecipeSlotView slotView, GridContainerMenu gridContainer, Player player) {
if (slotView != null && slotView.getIngredients(VanillaTypes.ITEM_STACK).findAny().isPresent()) {
ItemStack stack = IngredientTracker.getTracker(gridContainer).findBestMatch(gridContainer, player, slotView.getIngredients(VanillaTypes.ITEM_STACK).toList());
if (slotView != null && slotView.getItemStacks().findAny().isPresent()) {
ItemStack stack = IngredientTracker.getTracker(gridContainer).findBestMatch(gridContainer, player, slotView.getItemStacks().toList());
if (stack.isEmpty() && slotView.getDisplayedIngredient(VanillaTypes.ITEM_STACK).isPresent()) {
stack = slotView.getDisplayedIngredient(VanillaTypes.ITEM_STACK).get();
if (stack.isEmpty() && slotView.getDisplayedItemStack().isPresent()) {
stack = slotView.getDisplayedItemStack().get();
}
if (!stack.isEmpty()) {
list.add(stack);

View File

@@ -4,7 +4,6 @@ import com.refinedmods.refinedstorage.RSItems;
import com.refinedmods.refinedstorage.apiimpl.network.node.cover.CoverManager;
import com.refinedmods.refinedstorage.item.CoverItem;
import com.refinedmods.refinedstorage.recipe.HollowCoverRecipe;
import mezz.jei.api.constants.VanillaTypes;
import mezz.jei.api.gui.builder.IRecipeLayoutBuilder;
import mezz.jei.api.gui.builder.IRecipeSlotBuilder;
import mezz.jei.api.gui.ingredient.ICraftingGridHelper;
@@ -52,8 +51,8 @@ public class HollowCoverCraftingCategoryExtension implements ICraftingCategoryEx
}
stacks.set(4, input);
List<IRecipeSlotBuilder> inputSlots = craftingGridHelper.createAndSetInputs(builder, VanillaTypes.ITEM_STACK, stacks, 0, 0);
IRecipeSlotBuilder outputSlot = craftingGridHelper.createAndSetOutputs(builder, VanillaTypes.ITEM_STACK, output);
List<IRecipeSlotBuilder> inputSlots = craftingGridHelper.createAndSetInputs(builder, stacks, 0, 0);
IRecipeSlotBuilder outputSlot = craftingGridHelper.createAndSetOutputs(builder, output);
builder.createFocusLink(inputSlots.get(4), outputSlot);
}

View File

@@ -12,7 +12,6 @@ import com.refinedmods.refinedstorage.screen.grid.stack.IGridStack;
import com.refinedmods.refinedstorage.screen.grid.stack.ItemGridStack;
import com.refinedmods.refinedstorage.screen.grid.view.IGridView;
import com.refinedmods.refinedstorage.util.ItemStackKey;
import mezz.jei.api.constants.VanillaTypes;
import net.minecraft.client.Minecraft;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.inventory.CraftingContainer;
@@ -162,9 +161,11 @@ public class IngredientTracker {
//Gather available Stacks
for (Ingredient ingredient : ingredientList.ingredients) {
ingredient.getSlotView().getIngredients(VanillaTypes.ITEM_STACK).takeWhile(stack -> !ingredient.isAvailable()).forEach(stack -> {
ingredient.getSlotView().getItemStacks().takeWhile(stack -> !ingredient.isAvailable()).forEach(stack -> {
ingredient.setCraftStackId(craftableItems.get(new ItemStackKey(stack)));
if(ingredient.getCraftStackId() == null) {
ingredient.setCraftStackId(craftableItems.get(new ItemStackKey(stack)));
}
// Check grid crafting slots
if (gridContainer.getGrid().getGridType().equals(GridType.CRAFTING)) {
CraftingContainer craftingMatrix = gridContainer.getGrid().getCraftingMatrix();