Port to 1.18.2

This commit is contained in:
raoulvdberge
2022-03-26 10:25:38 +01:00
parent 7a2f3e22f9
commit d5ddd38ba5
16 changed files with 112 additions and 59 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

@@ -7,11 +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 ## [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

@@ -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"
} }

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
} }
} }