2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
2
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -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
|
||||||
|
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -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
|
||||||
|
@@ -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
|
||||||
|
|
||||||
|
@@ -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
|
||||||
|
28
build.gradle
28
build.gradle
@@ -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) {
|
||||||
|
@@ -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);
|
||||||
|
@@ -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) -> {
|
||||||
|
@@ -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()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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()))
|
||||||
);
|
);
|
||||||
|
@@ -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);
|
||||||
|
@@ -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();
|
||||||
|
@@ -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;
|
||||||
|
@@ -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;
|
||||||
|
@@ -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"));
|
||||||
|
@@ -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) {
|
||||||
|
@@ -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]]
|
||||||
|
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"pack": {
|
"pack": {
|
||||||
"description": "Refined Storage resources",
|
"description": "Refined Storage resources",
|
||||||
"pack_format": 8
|
"pack_format": 9
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user