Skip to content

Commit

Permalink
fix more things...
Browse files Browse the repository at this point in the history
  • Loading branch information
WanionCane committed Jul 13, 2016
1 parent 5b95c94 commit a8876f2
Show file tree
Hide file tree
Showing 10 changed files with 75 additions and 90 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ plugins {
id "net.minecraftforge.gradle.forge" version "2.0.2"
}
*/
version = "1.10.2-1.2c"
version = "1.10.2-1.2d"
group= "wanion.unidict" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "UniDict"

Expand Down
17 changes: 5 additions & 12 deletions src/main/java/wanion/unidict/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,15 @@

public final class Config
{
private Config()
{
}
private Config() {}

// config
private static final Configuration config = new Configuration(new File("." + SLASH + "config" + SLASH + Reference.MOD_NAME + ".cfg"), Reference.MOD_VERSION);
public static final Set<String> keepOneEntryModBlackSet = Collections.unmodifiableSet(Sets.newLinkedHashSet(Arrays.asList(config.getStringList("keepOneEntryModBlackList", Configuration.CATEGORY_GENERAL, new String[]{}, "mods listed here will be blacklisted in keepOneEntry.\nmust be the exact modID."))));
// general configs
private static final String general = Configuration.CATEGORY_GENERAL;
public static final boolean keepOneEntry = config.getBoolean("keepOneEntry", general, false, "keep only one entry per ore dict entry?");
public static boolean autoHideInJEI;
public static final Set<String> hideInJEIBlackSet = Collections.unmodifiableSet(Sets.newLinkedHashSet(Arrays.asList(config.getStringList("autoHideInJEIBlackList", general, new String[]{"ore"}, "put here things that you don't want to hide in JEI.\nonly works if keepOneEntry is false."))));
// resource related stuff
private static final String resources = "resources";
Expand All @@ -54,10 +53,7 @@ private Config()
public static final boolean craftingIntegration = config.getBoolean("craftingIntegration", vanillaIntegrations, true, "Crafting Integration");
public static final boolean furnaceIntegration = config.getBoolean("furnaceIntegration", vanillaIntegrations, true, "Furnace Integration");
// ensure mod loaded
public static boolean foundry;
public static boolean ic2;
public static boolean tinkersConstruct;
public static boolean autoHideInJEI;
// integration
public static boolean abyssalCraft;
public static boolean baseMetalsIntegration;
Expand All @@ -75,11 +71,8 @@ static void init()
if (!config.getDefinedConfigVersion().equals(config.getLoadedConfigVersion()))
deleted = config.getConfigFile().delete();

// ensure mod loaded
foundry = isModLoaded("foundry");
//forestry = isModLoaded("forestry");
ic2 = isModLoaded("IC2");
tinkersConstruct = isModLoaded("tconstruct");

// general configs
autoHideInJEI = config.getBoolean("autoHideInJEI", general, true, "auto hide items in JEI?") && isModLoaded("JEI");
Expand All @@ -91,7 +84,7 @@ static void init()
//botaniaIntegration = config.getBoolean("botania", integrations, true, "Botania Integration.") && isModLoaded("Botania");
enderIOIntegration = config.getBoolean("enderIO", integrations, true, "Ender IO Integration.") && isModLoaded("EnderIO");
//forestryIntegration = config.getBoolean("forestry", integrations, true, "Forestry Integration.") && forestry;
foundryIntegration = config.getBoolean("foundry", integrations, true, "Foundry Integration.") && foundry;
foundryIntegration = config.getBoolean("foundry", integrations, true, "Foundry Integration.") && isModLoaded("foundry");
ic2Integration = config.getBoolean("industrialCraft2", integrations, true, "Industrial Craft 2 Integration.") && ic2;
techRebornIntegration = config.getBoolean("techReborn", integrations, true, "TechReborn Integration.") && isModLoaded("techreborn");
techyIntegration = config.getBoolean("techy", integrations, true, "Techy Integration.") && isModLoaded("Techy");
Expand All @@ -111,7 +104,7 @@ public static void saveIfHasChanged()
public static TObjectLongMap<String> getOwnerOfEveryKindMap(final long kind)
{
final String kindName = WordUtils.capitalize(Resource.getNameOfKind(kind));
final String[] ownerOfEveryKind = config.getStringList("ownerOfEvery" + kindName, resources, new String[]{"substratum", "minecraft", "IC2", "techreborn"}, "entries of kind \"" + kindName + "\" will be sorted according to the modID list below\nmust be the exact modID.\n");
final String[] ownerOfEveryKind = config.getStringList("ownerOfEvery" + kindName, resources, new String[]{"substratum", "minecraft", "ic2", "techreborn"}, "entries of kind \"" + kindName + "\" will be sorted according to the modID list below\nmust be the exact modID.\n");
final TObjectLongMap<String> ownerOfEveryThingMap = new TObjectLongHashMap<>(10, 1, Long.MAX_VALUE);
for (int i = 0; i < ownerOfEveryKind.length; i++)
ownerOfEveryThingMap.put(ownerOfEveryKind[i], i);
Expand All @@ -131,7 +124,7 @@ private static Map<String, Set<String>> getCustomUnifiedResourcesMap()
{
Map<String, Set<String>> customUnifiedResources = new THashMap<>();
Pattern splitPattern = Pattern.compile("\\|");
for (String customUnifiedResource : config.getStringList("customUnifiedResources", resources, new String[]{"Obsidian:dustTiny|dust"}, "Here you can put a list to custom unify them.\nmay break some recipes.\nmust be in this format \"ResourceName:kind1|kind2|...\".\nif you put gems here, be aware that it will include the \"block\" of that gem too.")) {
for (String customUnifiedResource : config.getStringList("customUnifiedResources", resources, new String[]{"Obsidian:dustTiny|dust"}, "Here you can put a list to custom unify them.\nmust be in this format \"ResourceName:kind1|kind2|...\".")) {
int baseSeparatorIndex;
Set<String> kindSet;
if ((baseSeparatorIndex = customUnifiedResource.indexOf(':')) != -1 && !(kindSet = Sets.newLinkedHashSet(Arrays.asList(splitPattern.split(customUnifiedResource.substring(baseSeparatorIndex + 1, customUnifiedResource.length()))))).isEmpty())
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/wanion/unidict/UniJEIPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,13 @@

import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

@JEIPlugin
public class UniJEIPlugin implements IModPlugin
{
private static final List<ItemStack> stacksToHideList = new ArrayList<>();
private static final List<ItemStack> stacksToHideList = Collections.synchronizedList(new ArrayList<>());
private IItemBlacklist itemBlackList;

public static void hide(final ItemStack itemStack)
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/wanion/unidict/common/Reference.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ public final class Reference
{
public static final String MOD_ID = "UniDict";
public static final String MOD_NAME = MOD_ID;
public static final String MOD_VERSION = "1.10.2-1.2c";
public static final String MOD_VERSION = "1.10.2-1.2d";
public static final char SLASH = separatorChar;
public static final String MC_VERSION = "[1.10.2]";

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,15 +25,16 @@ public final class SpecificKindItemStackComparator implements Comparator<ItemSta
private static TLongObjectMap<SpecificKindItemStackComparator> kindSpecificComparators = new TLongObjectHashMap<>();
private final TObjectLongMap<String> ownerOfKind;

public SpecificKindItemStackComparator(final long kind)
private SpecificKindItemStackComparator(final long kind)
{
if ((ownerOfKind = Config.getOwnerOfEveryKindMap(kind)) == null)
throw new RuntimeException("this exception should be called: ThisShouldNeverHappenException.");
kindSpecificComparators.put(kind, this);
}

public static SpecificKindItemStackComparator getComparatorFor(final long kind)
{
if (!kindSpecificComparators.containsKey(kind))
kindSpecificComparators.put(kind, new SpecificKindItemStackComparator(kind));
return kindSpecificComparators.get(kind);
}

Expand Down
3 changes: 1 addition & 2 deletions src/main/java/wanion/unidict/helper/RecipeHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -30,15 +30,14 @@ public final class RecipeHelper
{
public static final List<IRecipe> recipes = CraftingManager.getInstance().getRecipeList();
private static final char[] DEFAULT_RECIPE_CHARS = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'};
private static final char[][] SHAPE = {{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}};

private RecipeHelper() {}

@Nonnull
public static Object[] rawShapeToShape(@Nonnull final Object[] objects)
{
int f = 0;
final char[][] almostTheShape = new char[][]{Arrays.copyOf(SHAPE[0], 3), Arrays.copyOf(SHAPE[1], 3), Arrays.copyOf(SHAPE[2], 3)};
final char[][] almostTheShape = {{' ', ' ', ' '}, {' ', ' ', ' '}, {' ', ' ', ' '}};
final TObjectCharMap<Object> thingToCharMap = new TObjectCharHashMap<>();
final Map<Integer, ItemStack> keyStackMap = new THashMap<>();
boolean done = false;
Expand Down
32 changes: 0 additions & 32 deletions src/main/java/wanion/unidict/resource/Resource.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,9 +14,6 @@
import gnu.trove.map.TObjectLongMap;
import gnu.trove.map.hash.TLongObjectHashMap;
import gnu.trove.map.hash.TObjectLongHashMap;
import gnu.trove.set.TLongSet;
import gnu.trove.set.hash.TLongHashSet;
import wanion.unidict.Config;

import javax.annotation.Nonnull;
import java.util.ArrayList;
Expand Down Expand Up @@ -101,7 +98,6 @@ public void updateEntries()
children &= ~kindId;
childrenIterator.remove();
}
cleanEverything();
}

@Override
Expand Down Expand Up @@ -129,34 +125,6 @@ Resource setSortOfChildren(final boolean sort)
return this;
}

private void cleanEverything()
{
hideInNEI();
keepOneEntry();
}

private void hideInNEI()
{
if (!Config.autoHideInJEI)
return;
if (!Config.keepOneEntry) {
TLongSet blackSet = new TLongHashSet();
for (String blackThing : Config.hideInJEIBlackSet)
blackSet.add(Resource.getKindOfName(blackThing));
for (long kind : childrenMap.keys())
if (!blackSet.contains(kind))
childrenMap.get(kind).removeBadEntriesFromNEI();
} else
childrenMap.valueCollection().forEach(UniResourceContainer::removeBadEntriesFromNEI);
}

private void keepOneEntry()
{
if (!Config.keepOneEntry)
return;
childrenMap.valueCollection().forEach(UniResourceContainer::keepOneEntry);
}

public static List<Resource> getResources(@Nonnull final Collection<Resource> resources, final String... kinds)
{
long kindsId = 0;
Expand Down
69 changes: 45 additions & 24 deletions src/main/java/wanion/unidict/resource/UniResourceContainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,15 @@

import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import wanion.unidict.Config;
import wanion.unidict.UniJEIPlugin;
import wanion.unidict.UniOreDictionary;
import wanion.unidict.common.SpecificKindItemStackComparator;
import wanion.unidict.common.Util;

import java.util.*;

import static wanion.unidict.Config.enableSpecificKindSort;
import static wanion.unidict.Config.*;

public final class UniResourceContainer
{
Expand All @@ -27,57 +28,75 @@ public final class UniResourceContainer
private final List<ItemStack> entries;
private final int initialSize;
private boolean sort = false;
private boolean updated = false;
private Item mainEntryItem;
private int mainEntryMeta;

public UniResourceContainer(String name, long kind) {
public UniResourceContainer(String name, long kind)
{
if ((entries = UniOreDictionary.get(this.id = UniOreDictionary.getId(this.name = name))) == null)
throw new RuntimeException("Something may have broken the Ore Dictionary!");
this.kind = kind;
initialSize = entries.size();
}

public ItemStack getMainEntry() {
public ItemStack getMainEntry()
{
return new ItemStack(mainEntryItem, 1, mainEntryMeta);
}

public ItemStack getMainEntry(int size) {
public ItemStack getMainEntry(int size)
{
return new ItemStack(mainEntryItem, size, mainEntryMeta);
}

public List<ItemStack> getEntries() {
public List<ItemStack> getEntries()
{
return UniOreDictionary.getUn(id);
}

void keepOneEntry() {
if (!sort || entries.size() == 1)
boolean updateEntries()
{
if (entries.isEmpty())
return false;
if (updated)
return true;
if (sort && initialSize != entries.size())
sort();
ItemStack mainEntry = entries.get(0);
mainEntryMeta = (mainEntryItem = mainEntry.getItem()).getDamage(mainEntry);
if (sort) {
if (autoHideInJEI)
removeBadEntriesFromNEI();
if (keepOneEntry)
keepOneEntry();
}
return updated = true;
}

private void keepOneEntry()
{
if (entries.size() == 1)
return;
Set<ItemStack> keepOneEntryBlackSet = ResourceHandler.keepOneEntryBlackSet;
final Set<ItemStack> keepOneEntryBlackSet = ResourceHandler.keepOneEntryBlackSet;
if (!keepOneEntryBlackSet.isEmpty()) {
for (Iterator<ItemStack> keepOneEntryIterator = entries.subList(1, entries.size()).iterator(); keepOneEntryIterator.hasNext(); )
if (!keepOneEntryBlackSet.contains(keepOneEntryIterator.next()))
keepOneEntryIterator.remove();
} else entries.subList(1, entries.size()).clear();
}

void removeBadEntriesFromNEI()
private void removeBadEntriesFromNEI()
{
if (sort)
if (entries.size() > 1)
if (entries.size() > 1)
if (Config.keepOneEntry)
entries.subList(1, entries.size()).forEach(UniJEIPlugin::hide);
else if (!UniResourceHandler.getKindBlackSet().contains(kind))
entries.subList(1, entries.size()).forEach(UniJEIPlugin::hide);
}

boolean updateEntries() {
if (entries.isEmpty())
return false;
if (sort && initialSize != entries.size())
sort();
ItemStack mainEntry = entries.get(0);
mainEntryMeta = (mainEntryItem = mainEntry.getItem()).getDamage(mainEntry);
return true;
}

public Comparator<ItemStack> getComparator() {
public Comparator<ItemStack> getComparator()
{
return (enableSpecificKindSort) ? SpecificKindItemStackComparator.getComparatorFor(kind) : Util.itemStackComparatorByModName;
}

Expand All @@ -94,14 +113,16 @@ void setSort(final boolean sort)
sort();
}

public void sort() {
public void sort()
{
final Comparator<ItemStack> itemStackComparator = getComparator();
if (itemStackComparator != null)
Collections.sort(entries, itemStackComparator);
}

@Override
public String toString() {
public String toString()
{
return name;
}
}
Loading

0 comments on commit a8876f2

Please sign in to comment.