Merge pull request #3267 from refinedmods/develop

v1.10.2
This commit is contained in:
Raoul
2022-03-26 12:26:18 +01:00
committed by GitHub
17 changed files with 125 additions and 60 deletions

View File

@@ -35,7 +35,7 @@ body:
description: | description: |
If your Minecraft version isn't listed here, it means that it's no longer supported. In that case, don't create an issue. If your Minecraft version isn't listed here, it means that it's no longer supported. In that case, don't create an issue.
options: options:
- Minecraft 1.18.1 - Minecraft 1.18.2
- Minecraft 1.16.5 - Minecraft 1.16.5
validations: validations:
required: true required: true

View File

@@ -42,6 +42,8 @@ jobs:
run: ./gradlew publish run: ./gradlew publish
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CREEPERHOST_MAVEN_USERNAME: ${{ secrets.CREEPERHOST_MAVEN_USERNAME }}
CREEPERHOST_MAVEN_TOKEN: ${{ secrets.CREEPERHOST_MAVEN_TOKEN }}
RELEASE: ${{ steps.tagName.outputs.tag }} RELEASE: ${{ steps.tagName.outputs.tag }}
- name: Retrieve changelog - name: Retrieve changelog
id: changelog_reader id: changelog_reader

View File

@@ -7,9 +7,15 @@ to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased] ## [Unreleased]
### Changed
- Ported to Minecraft 1.18.2.
## [v1.10.1] - 2022-03-26
### Fixed ### Fixed
- Fixed crash when opening alternatives screen - Fixed crash when opening alternatives screen.
## [v1.10.0] - 2022-01-25 ## [v1.10.0] - 2022-01-25

View File

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

View File

@@ -33,7 +33,7 @@ apply plugin: 'maven-publish'
group = 'com.refinedmods' group = 'com.refinedmods'
archivesBaseName = 'refinedstorage' archivesBaseName = 'refinedstorage'
version = '1.10.1' version = '1.10.2'
if (System.getenv('GITHUB_SHA') != null) { if (System.getenv('GITHUB_SHA') != null) {
version += '+' + System.getenv('GITHUB_SHA').substring(0, 7) version += '+' + System.getenv('GITHUB_SHA').substring(0, 7)
@@ -50,7 +50,7 @@ tasks.withType(JavaCompile) {
} }
minecraft { minecraft {
mappings channel: 'official', version: '1.18.1' mappings channel: 'official', version: '1.18.2'
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg') accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
runs { runs {
@@ -102,17 +102,17 @@ processResources {
} }
dependencies { dependencies {
minecraft 'net.minecraftforge:forge:1.18.1-39.0.59' minecraft 'net.minecraftforge:forge:1.18.2-40.0.32'
compileOnly fg.deobf("mezz.jei:jei-1.18.1:9.1.0.41:api") compileOnly fg.deobf("mezz.jei:jei-1.18.2:9.5.4.171:api")
runtimeOnly fg.deobf("mezz.jei:jei-1.18.1:9.1.0.41") runtimeOnly fg.deobf("mezz.jei:jei-1.18.2:9.5.4.171")
compileOnly fg.deobf('curse.maven:mouse-tweaks-60089:3546383') compileOnly fg.deobf('curse.maven:mouse-tweaks-60089:3578801')
compileOnly fg.deobf('curse.maven:crafting-tweaks-233071:3545611') compileOnly fg.deobf('curse.maven:crafting-tweaks-233071:3584842')
runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:1.18-5.0.2.4") runtimeOnly fg.deobf("top.theillusivec4.curios:curios-forge:1.18.2-5.0.6.3")
compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:1.18-5.0.2.4:api") compileOnly fg.deobf("top.theillusivec4.curios:curios-forge:1.18.2-5.0.6.3:api")
} }
jar { jar {
@@ -137,7 +137,7 @@ if (System.getenv("CURSEFORGE_TOKEN") != null) {
changelog = System.getenv("CHANGELOG") changelog = System.getenv("CHANGELOG")
changelogType = 'markdown' changelogType = 'markdown'
releaseType = project.version.toString().contains('beta') ? 'beta' : (project.version.toString().contains('alpha') ? 'alpha' : 'release') releaseType = project.version.toString().contains('beta') ? 'beta' : (project.version.toString().contains('alpha') ? 'alpha' : 'release')
addGameVersion "1.18.1" addGameVersion "1.18.2"
mainArtifact(jar) { mainArtifact(jar) {
displayName = "v$project.version" displayName = "v$project.version"
} }
@@ -157,6 +157,14 @@ publishing {
password = System.getenv("GITHUB_TOKEN") password = System.getenv("GITHUB_TOKEN")
} }
} }
maven {
name = "CreeperHost"
url = uri("https://maven.creeperhost.net/release")
credentials {
username = System.getenv("CREEPERHOST_MAVEN_USERNAME")
password = System.getenv("CREEPERHOST_MAVEN_TOKEN")
}
}
} }
publications { publications {
gpr(MavenPublication) { gpr(MavenPublication) {

View File

@@ -48,7 +48,6 @@ public final class RS {
RSBlocks.register(); RSBlocks.register();
RSItems.register(); RSItems.register();
RSLootFunctions.register();
FMLJavaModLoadingContext.get().getModEventBus().addListener(CommonSetup::onCommonSetup); FMLJavaModLoadingContext.get().getModEventBus().addListener(CommonSetup::onCommonSetup);
FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(BlockEntityType.class, CommonSetup::onRegisterBlockEntities); FMLJavaModLoadingContext.get().getModEventBus().addGenericListener(BlockEntityType.class, CommonSetup::onRegisterBlockEntities);

View File

@@ -10,9 +10,9 @@ import com.refinedmods.refinedstorage.util.ColorMap;
import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.ItemTags; import net.minecraft.tags.ItemTags;
import net.minecraft.tags.TagKey;
import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.BlockItem;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraftforge.common.Tags;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.registries.DeferredRegister; import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
@@ -58,7 +58,7 @@ public final class RSItems {
public static final Map<UpgradeItem.Type, RegistryObject<UpgradeItem>> UPGRADE_ITEMS = new EnumMap<>(UpgradeItem.Type.class); public static final Map<UpgradeItem.Type, RegistryObject<UpgradeItem>> UPGRADE_ITEMS = new EnumMap<>(UpgradeItem.Type.class);
public static final Map<Tags.IOptionalNamedTag<Item>, ColorMap<BlockItem>> COLORED_ITEM_TAGS = new HashMap<>(); public static final Map<TagKey<Item>, ColorMap<BlockItem>> COLORED_ITEM_TAGS = new HashMap<>();
private static final List<Runnable> LATE_REGISTRATION = new ArrayList<>(); private static final List<Runnable> LATE_REGISTRATION = new ArrayList<>();
@@ -162,7 +162,7 @@ public final class RSItems {
) )
)); ));
COLORED_ITEM_TAGS.put(ItemTags.createOptional(new ResourceLocation(RS.ID, CONTROLLER.get(ColorMap.DEFAULT_COLOR).getId().getPath())), CONTROLLER); COLORED_ITEM_TAGS.put(ItemTags.create(new ResourceLocation(RS.ID, CONTROLLER.get(ColorMap.DEFAULT_COLOR).getId().getPath())), CONTROLLER);
LATE_REGISTRATION.add(() -> { LATE_REGISTRATION.add(() -> {
RSBlocks.CONTROLLER.forEach((color, block) -> { RSBlocks.CONTROLLER.forEach((color, block) -> {

View File

@@ -7,8 +7,7 @@ import com.refinedmods.refinedstorage.item.PatternItem;
import net.minecraft.core.NonNullList; import net.minecraft.core.NonNullList;
import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.FluidTags; import net.minecraft.tags.TagKey;
import net.minecraft.tags.ItemTags;
import net.minecraft.world.inventory.CraftingContainer; import net.minecraft.world.inventory.CraftingContainer;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
@@ -17,9 +16,12 @@ import net.minecraft.world.item.crafting.RecipeType;
import net.minecraft.world.level.Level; import net.minecraft.world.level.Level;
import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluid;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.tags.IReverseTag;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
public class CraftingPatternFactory { public class CraftingPatternFactory {
public static final CraftingPatternFactory INSTANCE = new CraftingPatternFactory(); public static final CraftingPatternFactory INSTANCE = new CraftingPatternFactory();
@@ -102,7 +104,13 @@ public class CraftingPatternFactory {
possibilities.add(input.copy()); possibilities.add(input.copy());
if (allowedTagList != null) { if (allowedTagList != null) {
Collection<ResourceLocation> tagsOfItem = ItemTags.getAllTags().getMatchingTags(input.getItem()); Collection<ResourceLocation> tagsOfItem = ForgeRegistries.ITEMS
.tags()
.getReverseTag(input.getItem())
.stream()
.flatMap(IReverseTag::getTagKeys)
.map(TagKey::location)
.collect(Collectors.toSet());
Set<ResourceLocation> declaredAllowedTags = allowedTagList.getAllowedItemTags().get(i); Set<ResourceLocation> declaredAllowedTags = allowedTagList.getAllowedItemTags().get(i);
for (ResourceLocation declaredAllowedTag : declaredAllowedTags) { for (ResourceLocation declaredAllowedTag : declaredAllowedTags) {
@@ -115,7 +123,8 @@ public class CraftingPatternFactory {
) )
); );
} else { } else {
for (Item element : ItemTags.getAllTags().getTag(declaredAllowedTag).getValues()) { TagKey<Item> tagKey = TagKey.create(ForgeRegistries.ITEMS.getRegistryKey(), declaredAllowedTag);
for (Item element : ForgeRegistries.ITEMS.tags().getTag(tagKey)) {
possibilities.add(new ItemStack(element, input.getCount())); possibilities.add(new ItemStack(element, input.getCount()));
} }
} }
@@ -141,7 +150,13 @@ public class CraftingPatternFactory {
possibilities.add(input.copy()); possibilities.add(input.copy());
if (allowedTagList != null) { if (allowedTagList != null) {
Collection<ResourceLocation> tagsOfFluid = FluidTags.getAllTags().getMatchingTags(input.getFluid()); Collection<ResourceLocation> tagsOfFluid = ForgeRegistries.FLUIDS
.tags()
.getReverseTag(input.getFluid())
.stream()
.flatMap(IReverseTag::getTagKeys)
.map(TagKey::location)
.collect(Collectors.toSet());
Set<ResourceLocation> declaredAllowedTags = allowedTagList.getAllowedFluidTags().get(i); Set<ResourceLocation> declaredAllowedTags = allowedTagList.getAllowedFluidTags().get(i);
for (ResourceLocation declaredAllowedTag : declaredAllowedTags) { for (ResourceLocation declaredAllowedTag : declaredAllowedTags) {
@@ -154,7 +169,8 @@ public class CraftingPatternFactory {
) )
); );
} else { } else {
for (Fluid element : FluidTags.getAllTags().getTag(declaredAllowedTag).getValues()) { TagKey<Fluid> tagKey = TagKey.create(ForgeRegistries.FLUIDS.getRegistryKey(), declaredAllowedTag);
for (Fluid element : ForgeRegistries.FLUIDS.tags().getTag(tagKey)) {
possibilities.add(new FluidStack(element, input.getAmount())); possibilities.add(new FluidStack(element, input.getAmount()));
} }
} }

View File

@@ -37,7 +37,7 @@ public class RecipeGenerator extends RecipeProvider {
RSItems.CRAFTING_GRID.forEach((color, item) -> ShapelessRecipeBuilder.shapeless(item.get()) RSItems.CRAFTING_GRID.forEach((color, item) -> ShapelessRecipeBuilder.shapeless(item.get())
.requires(RSItems.GRID.get(color).get()) .requires(RSItems.GRID.get(color).get())
.requires(RSItems.PROCESSORS.get(ProcessorItem.Type.ADVANCED).get()) .requires(RSItems.PROCESSORS.get(ProcessorItem.Type.ADVANCED).get())
.requires(ItemTags.bind("refinedstorage:crafting_tables")) .requires(ItemTags.create(new ResourceLocation(RS.ID, "crafting_tables")))
.unlockedBy(GRID_ID, InventoryChangeTrigger.TriggerInstance.hasItems(RSItems.GRID.get(ColorMap.DEFAULT_COLOR).get())) .unlockedBy(GRID_ID, InventoryChangeTrigger.TriggerInstance.hasItems(RSItems.GRID.get(ColorMap.DEFAULT_COLOR).get()))
.save(recipeAcceptor, new ResourceLocation(RS.ID, "crafting_grid/" + item.getId().getPath())) .save(recipeAcceptor, new ResourceLocation(RS.ID, "crafting_grid/" + item.getId().getPath()))
); );

View File

@@ -18,6 +18,7 @@ import net.minecraft.world.level.block.Block;
import net.minecraftforge.common.Tags; import net.minecraftforge.common.Tags;
import net.minecraftforge.common.util.Size2i; import net.minecraftforge.common.util.Size2i;
import net.minecraftforge.registries.ForgeRegistries; import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.tags.ITag;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.ArrayList; import java.util.ArrayList;
@@ -47,7 +48,8 @@ public class CoverCraftingCategoryExtension implements ICustomCraftingCategoryEx
} }
} }
} }
ingredients.setInputLists(VanillaTypes.ITEM, Arrays.asList(Tags.Items.NUGGETS_IRON.getValues().stream().map(ItemStack::new).collect(Collectors.toList()), input)); ITag<Item> nuggets = ForgeRegistries.ITEMS.tags().getTag(Tags.Items.NUGGETS_IRON);
ingredients.setInputLists(VanillaTypes.ITEM, Arrays.asList(nuggets.stream().map(ItemStack::new).collect(Collectors.toList()), input));
ingredients.setOutputs(VanillaTypes.ITEM, output); ingredients.setOutputs(VanillaTypes.ITEM, output);
} }
@@ -65,13 +67,14 @@ public class CoverCraftingCategoryExtension implements ICustomCraftingCategoryEx
@Override @Override
public void setRecipe(IRecipeLayout recipeLayout, IIngredients ingredients) { public void setRecipe(IRecipeLayout recipeLayout, IIngredients ingredients) {
ITag<Item> nuggets = ForgeRegistries.ITEMS.tags().getTag(Tags.Items.NUGGETS_IRON);
ItemStack stack = recipeLayout.getFocus(VanillaTypes.ITEM).getValue(); ItemStack stack = recipeLayout.getFocus(VanillaTypes.ITEM).getValue();
if (stack.getItem() instanceof CoverItem) { if (stack.getItem() instanceof CoverItem) {
recipeLayout.getIngredientsGroup(VanillaTypes.ITEM).set(4, Tags.Items.NUGGETS_IRON.getValues().stream().map(ItemStack::new).collect(Collectors.toList())); recipeLayout.getIngredientsGroup(VanillaTypes.ITEM).set(4, nuggets.stream().map(ItemStack::new).collect(Collectors.toList()));
recipeLayout.getIngredientsGroup(VanillaTypes.ITEM).set(5, CoverItem.getItem(stack)); recipeLayout.getIngredientsGroup(VanillaTypes.ITEM).set(5, CoverItem.getItem(stack));
recipeLayout.getIngredientsGroup(VanillaTypes.ITEM).set(0, stack); recipeLayout.getIngredientsGroup(VanillaTypes.ITEM).set(0, stack);
} else { } else {
recipeLayout.getIngredientsGroup(VanillaTypes.ITEM).set(4, Tags.Items.NUGGETS_IRON.getValues().stream().map(ItemStack::new).collect(Collectors.toList())); recipeLayout.getIngredientsGroup(VanillaTypes.ITEM).set(4, nuggets.stream().map(ItemStack::new).collect(Collectors.toList()));
recipeLayout.getIngredientsGroup(VanillaTypes.ITEM).set(5, stack); recipeLayout.getIngredientsGroup(VanillaTypes.ITEM).set(5, stack);
ItemStack output = new ItemStack(RSItems.COVER.get()); ItemStack output = new ItemStack(RSItems.COVER.get());
CoverItem.setItem(output, stack); CoverItem.setItem(output, stack);

View File

@@ -18,20 +18,19 @@ import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TextComponent;
import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.FluidTags; import net.minecraft.tags.TagKey;
import net.minecraft.tags.ItemTags;
import net.minecraft.world.entity.player.Player; import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item; import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.material.Fluid; import net.minecraft.world.level.material.Fluid;
import net.minecraftforge.fluids.FluidAttributes; import net.minecraftforge.fluids.FluidAttributes;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.tags.IReverseTag;
import org.lwjgl.glfw.GLFW; import org.lwjgl.glfw.GLFW;
import java.util.ArrayList; import java.util.*;
import java.util.HashSet; import java.util.stream.Collectors;
import java.util.List;
import java.util.Set;
public class AlternativesScreen extends BaseScreen<AlternativesContainerMenu> { public class AlternativesScreen extends BaseScreen<AlternativesContainerMenu> {
private static final int VISIBLE_ROWS = 5; private static final int VISIBLE_ROWS = 5;
@@ -78,14 +77,21 @@ public class AlternativesScreen extends BaseScreen<AlternativesContainerMenu> {
if (item != null) { if (item != null) {
lines.add(new ItemLine(item)); lines.add(new ItemLine(item));
for (ResourceLocation owningTag : ItemTags.getAllTags().getMatchingTags(item.getItem())) { Collection<TagKey<Item>> tagsOfItem = ForgeRegistries.ITEMS
lines.add(new TagLine(owningTag, GridBlockEntity.ALLOWED_ITEM_TAGS.getValue().get(slot).contains(owningTag))); .tags()
.getReverseTag(item.getItem())
.stream()
.flatMap(IReverseTag::getTagKeys)
.collect(Collectors.toSet());
for (TagKey<Item> owningTag : tagsOfItem) {
lines.add(new TagLine(owningTag.location(), GridBlockEntity.ALLOWED_ITEM_TAGS.getValue().get(slot).contains(owningTag.location())));
int itemCount = 0; int itemCount = 0;
ItemListLine line = new ItemListLine(); ItemListLine line = new ItemListLine();
for (Item itemInTag : ItemTags.getAllTags().getTag(owningTag).getValues()) { for (Item itemInTag : ForgeRegistries.ITEMS.tags().getTag(owningTag)) {
if (itemCount > 0 && itemCount % 8 == 0) { if (itemCount > 0 && itemCount % 8 == 0) {
lines.add(line); lines.add(line);
line = new ItemListLine(); line = new ItemListLine();
@@ -101,14 +107,21 @@ public class AlternativesScreen extends BaseScreen<AlternativesContainerMenu> {
} else if (fluid != null) { } else if (fluid != null) {
lines.add(new FluidLine(fluid)); lines.add(new FluidLine(fluid));
for (ResourceLocation owningTag : FluidTags.getAllTags().getMatchingTags(fluid.getFluid())) { Collection<TagKey<Fluid>> tagsOfFluid = ForgeRegistries.FLUIDS
lines.add(new TagLine(owningTag, GridBlockEntity.ALLOWED_FLUID_TAGS.getValue().get(slot).contains(owningTag))); .tags()
.getReverseTag(fluid.getFluid())
.stream()
.flatMap(IReverseTag::getTagKeys)
.collect(Collectors.toSet());
for (TagKey<Fluid> owningTag : tagsOfFluid) {
lines.add(new TagLine(owningTag.location(), GridBlockEntity.ALLOWED_FLUID_TAGS.getValue().get(slot).contains(owningTag.location())));
int fluidCount = 0; int fluidCount = 0;
FluidListLine line = new FluidListLine(); FluidListLine line = new FluidListLine();
for (Fluid fluidInTag : FluidTags.getAllTags().getTag(owningTag).getValues()) { for (Fluid fluidInTag : ForgeRegistries.FLUIDS.tags().getTag(owningTag)) {
if (fluidCount > 0 && fluidCount % 8 == 0) { if (fluidCount > 0 && fluidCount % 8 == 0) {
lines.add(line); lines.add(line);
line = new FluidListLine(); line = new FluidListLine();

View File

@@ -11,13 +11,18 @@ import net.minecraft.client.resources.language.I18n;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TextComponent;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.FluidTags; import net.minecraft.tags.TagKey;
import net.minecraftforge.fluids.FluidStack; import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.tags.IReverseTag;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.*; import java.util.List;
import java.util.Set;
import java.util.UUID;
import java.util.stream.Collectors;
public class FluidGridStack implements IGridStack { public class FluidGridStack implements IGridStack {
private static final String ERROR_PLACEHOLDER = "<Error>"; private static final String ERROR_PLACEHOLDER = "<Error>";
@@ -121,11 +126,14 @@ public class FluidGridStack implements IGridStack {
@Override @Override
public Set<String> getTags() { public Set<String> getTags() {
if (cachedTags == null) { if (cachedTags == null) {
cachedTags = new HashSet<>(); cachedTags = ForgeRegistries.FLUIDS
.tags()
for (ResourceLocation owningTag : FluidTags.getAllTags().getMatchingTags(stack.getFluid())) { .getReverseTag(stack.getFluid())
cachedTags.add(owningTag.getPath()); .stream()
} .flatMap(IReverseTag::getTagKeys)
.map(TagKey::location)
.map(ResourceLocation::getPath)
.collect(Collectors.toSet());
} }
return cachedTags; return cachedTags;

View File

@@ -10,15 +10,18 @@ import net.minecraft.client.resources.language.I18n;
import net.minecraft.network.chat.Component; import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.TextComponent; import net.minecraft.network.chat.TextComponent;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
import net.minecraft.tags.ItemTags; import net.minecraft.tags.TagKey;
import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.ItemStack;
import net.minecraftforge.fml.ModContainer; import net.minecraftforge.fml.ModContainer;
import net.minecraftforge.fml.ModList; import net.minecraftforge.fml.ModList;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.tags.IReverseTag;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import javax.annotation.Nullable; import javax.annotation.Nullable;
import java.util.*; import java.util.*;
import java.util.stream.Collectors;
public class ItemGridStack implements IGridStack { public class ItemGridStack implements IGridStack {
private static final String ERROR_PLACEHOLDER = "<Error>"; private static final String ERROR_PLACEHOLDER = "<Error>";
@@ -133,11 +136,14 @@ public class ItemGridStack implements IGridStack {
@Override @Override
public Set<String> getTags() { public Set<String> getTags() {
if (cachedTags == null) { if (cachedTags == null) {
cachedTags = new HashSet<>(); cachedTags = ForgeRegistries.ITEMS
.tags()
for (ResourceLocation owningTag : ItemTags.getAllTags().getMatchingTags(stack.getItem())) { .getReverseTag(stack.getItem())
cachedTags.add(owningTag.getPath()); .stream()
} .flatMap(IReverseTag::getTagKeys)
.map(TagKey::location)
.map(ResourceLocation::getPath)
.collect(Collectors.toSet());
} }
return cachedTags; return cachedTags;

View File

@@ -2,6 +2,7 @@ package com.refinedmods.refinedstorage.setup;
import com.refinedmods.refinedstorage.RS; import com.refinedmods.refinedstorage.RS;
import com.refinedmods.refinedstorage.RSBlocks; import com.refinedmods.refinedstorage.RSBlocks;
import com.refinedmods.refinedstorage.RSLootFunctions;
import com.refinedmods.refinedstorage.api.network.NetworkType; import com.refinedmods.refinedstorage.api.network.NetworkType;
import com.refinedmods.refinedstorage.api.network.grid.GridType; import com.refinedmods.refinedstorage.api.network.grid.GridType;
import com.refinedmods.refinedstorage.api.network.node.INetworkNode; import com.refinedmods.refinedstorage.api.network.node.INetworkNode;
@@ -30,6 +31,11 @@ import com.refinedmods.refinedstorage.apiimpl.storage.disk.factory.ItemStorageDi
import com.refinedmods.refinedstorage.apiimpl.storage.externalstorage.FluidExternalStorageProvider; import com.refinedmods.refinedstorage.apiimpl.storage.externalstorage.FluidExternalStorageProvider;
import com.refinedmods.refinedstorage.apiimpl.storage.externalstorage.ItemExternalStorageProvider; import com.refinedmods.refinedstorage.apiimpl.storage.externalstorage.ItemExternalStorageProvider;
import com.refinedmods.refinedstorage.block.BlockListener; import com.refinedmods.refinedstorage.block.BlockListener;
import com.refinedmods.refinedstorage.blockentity.*;
import com.refinedmods.refinedstorage.blockentity.craftingmonitor.CraftingMonitorBlockEntity;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationManager;
import com.refinedmods.refinedstorage.blockentity.grid.GridBlockEntity;
import com.refinedmods.refinedstorage.blockentity.grid.portable.PortableGridBlockEntity;
import com.refinedmods.refinedstorage.container.*; import com.refinedmods.refinedstorage.container.*;
import com.refinedmods.refinedstorage.container.factory.*; import com.refinedmods.refinedstorage.container.factory.*;
import com.refinedmods.refinedstorage.integration.craftingtweaks.CraftingTweaksIntegration; import com.refinedmods.refinedstorage.integration.craftingtweaks.CraftingTweaksIntegration;
@@ -38,11 +44,6 @@ import com.refinedmods.refinedstorage.item.blockitem.PortableGridBlockItem;
import com.refinedmods.refinedstorage.recipe.CoverRecipe; import com.refinedmods.refinedstorage.recipe.CoverRecipe;
import com.refinedmods.refinedstorage.recipe.HollowCoverRecipe; import com.refinedmods.refinedstorage.recipe.HollowCoverRecipe;
import com.refinedmods.refinedstorage.recipe.UpgradeWithEnchantedBookRecipeSerializer; import com.refinedmods.refinedstorage.recipe.UpgradeWithEnchantedBookRecipeSerializer;
import com.refinedmods.refinedstorage.blockentity.*;
import com.refinedmods.refinedstorage.blockentity.craftingmonitor.CraftingMonitorBlockEntity;
import com.refinedmods.refinedstorage.blockentity.data.BlockEntitySynchronizationManager;
import com.refinedmods.refinedstorage.blockentity.grid.GridBlockEntity;
import com.refinedmods.refinedstorage.blockentity.grid.portable.PortableGridBlockEntity;
import net.minecraft.core.BlockPos; import net.minecraft.core.BlockPos;
import net.minecraft.nbt.CompoundTag; import net.minecraft.nbt.CompoundTag;
import net.minecraft.resources.ResourceLocation; import net.minecraft.resources.ResourceLocation;
@@ -158,6 +159,9 @@ public final class CommonSetup {
@SubscribeEvent @SubscribeEvent
public static void onRegisterBlockEntities(RegistryEvent.Register<BlockEntityType<?>> e) { public static void onRegisterBlockEntities(RegistryEvent.Register<BlockEntityType<?>> e) {
// Register here, there seems to be no specific register event for loot function types.
RSLootFunctions.register();
e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new ControllerBlockEntity(NetworkType.NORMAL, pos, state), RSBlocks.CONTROLLER.getBlocks()).build(null).setRegistryName(RS.ID, "controller"))); e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new ControllerBlockEntity(NetworkType.NORMAL, pos, state), RSBlocks.CONTROLLER.getBlocks()).build(null).setRegistryName(RS.ID, "controller")));
e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new ControllerBlockEntity(NetworkType.CREATIVE, pos, state), RSBlocks.CREATIVE_CONTROLLER.getBlocks()).build(null).setRegistryName(RS.ID, "creative_controller"))); e.getRegistry().register(registerSynchronizationParameters(BlockEntityType.Builder.of((pos, state) -> new ControllerBlockEntity(NetworkType.CREATIVE, pos, state), RSBlocks.CREATIVE_CONTROLLER.getBlocks()).build(null).setRegistryName(RS.ID, "creative_controller")));
e.getRegistry().register(BlockEntityType.Builder.of(CableBlockEntity::new, RSBlocks.CABLE.get()).build(null).setRegistryName(RS.ID, "cable")); e.getRegistry().register(BlockEntityType.Builder.of(CableBlockEntity::new, RSBlocks.CABLE.get()).build(null).setRegistryName(RS.ID, "cable"));

View File

@@ -87,7 +87,7 @@ public class ColorMap<T extends IForgeRegistryEntry<? super T>> {
map.put(color, registerBlockItemFor(block, color, originalBlock)); map.put(color, registerBlockItemFor(block, color, originalBlock));
} }
})); }));
RSItems.COLORED_ITEM_TAGS.put(ItemTags.createOptional(new ResourceLocation(RS.ID, blockMap.get(DEFAULT_COLOR).getId().getPath())), (ColorMap<BlockItem>) this); RSItems.COLORED_ITEM_TAGS.put(ItemTags.create(new ResourceLocation(RS.ID, blockMap.get(DEFAULT_COLOR).getId().getPath())), (ColorMap<BlockItem>) this);
} }
private <S extends BaseBlock> RegistryObject<T> registerBlockItemFor(RegistryObject<S> block, DyeColor color, RegistryObject<S> translationBlock) { private <S extends BaseBlock> RegistryObject<T> registerBlockItemFor(RegistryObject<S> block, DyeColor color, RegistryObject<S> translationBlock) {

View File

@@ -1,5 +1,5 @@
modLoader = "javafml" modLoader = "javafml"
loaderVersion = "[39,)" loaderVersion = "[40,)"
issueTrackerURL = "https://github.com/refinedmods/refinedstorage" issueTrackerURL = "https://github.com/refinedmods/refinedstorage"
license="MIT" license="MIT"
[[mods]] [[mods]]

View File

@@ -1,6 +1,6 @@
{ {
"pack": { "pack": {
"description": "Refined Storage resources", "description": "Refined Storage resources",
"pack_format": 8 "pack_format": 9
} }
} }