diff options
author | MuXiu1997 <MuXiu1997@Gmail.com> | 2022-04-08 21:41:30 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-08 15:41:30 +0200 |
commit | 1a7e8f13d7253d1b14dab2eeb99d406234e2485f (patch) | |
tree | 5ae385baa3ff4404d59ea311c448fab868c7b9dd /src/main/java/gregtech/api | |
parent | 6c517bd58bacb055cddb0ae49667e0daa3ea346a (diff) | |
download | GT5-Unofficial-1a7e8f13d7253d1b14dab2eeb99d406234e2485f.tar.gz GT5-Unofficial-1a7e8f13d7253d1b14dab2eeb99d406234e2485f.tar.bz2 GT5-Unofficial-1a7e8f13d7253d1b14dab2eeb99d406234e2485f.zip |
Allows sorting of configuration circuits (#1012)
* Allows sorting of configuration circuits
* Fix things
Diffstat (limited to 'src/main/java/gregtech/api')
-rw-r--r-- | src/main/java/gregtech/api/GregTech_API.java | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/src/main/java/gregtech/api/GregTech_API.java b/src/main/java/gregtech/api/GregTech_API.java index d38c9181dd..b4f1e0fcd8 100644 --- a/src/main/java/gregtech/api/GregTech_API.java +++ b/src/main/java/gregtech/api/GregTech_API.java @@ -2,8 +2,10 @@ package gregtech.api; import com.google.common.collect.Multimap; import com.google.common.collect.Multimaps; +import cpw.mods.fml.common.registry.GameRegistry; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import gregtech.GT_Mod; import gregtech.api.enums.Materials; import gregtech.api.enums.Textures; import gregtech.api.interfaces.IDamagableItem; @@ -31,6 +33,7 @@ import gregtech.api.util.GT_ModHandler; import gregtech.api.util.GT_OreDictUnificator; import gregtech.api.util.GT_Utility; import gregtech.api.world.GT_Worldgen; +import gregtech.common.items.GT_IntegratedCircuit_Item; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; @@ -44,6 +47,7 @@ import net.minecraftforge.fluids.Fluid; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; import java.util.LinkedHashMap; @@ -684,7 +688,24 @@ public class GregTech_API { * DO NOT MODIFY THE ItemStacks! */ public static List<ItemStack> getConfigurationCircuitList(int machineTier) { - return Collections.unmodifiableList(sConfigurationLists.computeIfAbsent(machineTier, (t) -> sRealConfigurationList.entries().stream().filter(e -> e.getKey() <= machineTier).map(Map.Entry::getValue).collect(Collectors.toList()))); + return Collections.unmodifiableList( + sConfigurationLists.computeIfAbsent(machineTier, (t) -> sRealConfigurationList.entries().stream().filter(e -> e.getKey() <= machineTier).map(Map.Entry::getValue).collect(Collectors.toList())) + .stream() + .sorted(getConfigurationCircuitsComparator()) + .collect(Collectors.toList()) + ); + } + + public static Comparator<ItemStack> getConfigurationCircuitsComparator() { + return Comparator + .comparingInt((ItemStack is) -> { + // By default, the Programmed Circuit should be the earliest configuration circuit to which the player is exposed + if (GT_Mod.gregtechproxy.mCircuitsOrder.isEmpty()) + return is.getItem() instanceof GT_IntegratedCircuit_Item ? 0 : 1; + return GT_Mod.gregtechproxy.mCircuitsOrder.getOrDefault(GameRegistry.findUniqueIdentifierFor(is.getItem()).toString(), Integer.MAX_VALUE); + }) + .thenComparing(ItemStack::getUnlocalizedName) + .thenComparing(ItemStack::getItemDamage); } public static void registerCircuitProgrammer(ItemStack stack, boolean ignoreNBT, boolean useContainer) { |