Skip to content

Commit

Permalink
lot of fixes, thanks johnc94 for the report.
Browse files Browse the repository at this point in the history
  • Loading branch information
WanionCane committed Jul 13, 2016
1 parent 409f67c commit 100c6e3
Show file tree
Hide file tree
Showing 13 changed files with 139 additions and 126 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.2"
version = "1.10.2-1.2b"
group= "wanion.unidict" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "UniDict"

Expand Down
11 changes: 10 additions & 1 deletion src/main/java/wanion/unidict/Config.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,10 @@

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."))));
Expand Down Expand Up @@ -99,6 +102,12 @@ static void init()
config.save();
}

public static void saveIfHasChanged()
{
if (config.hasChanged())
config.save();
}

public static TObjectLongMap<String> getOwnerOfEveryKindMap(final long kind)
{
final String kindName = WordUtils.capitalize(Resource.getNameOfKind(kind));
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/wanion/unidict/UniDict.java
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import org.apache.logging.log4j.Logger;
import wanion.unidict.api.UniDictAPI;
import wanion.unidict.common.Dependencies;
import wanion.unidict.common.SpecificKindItemStackComparator;
import wanion.unidict.integration.IntegrationModule;
import wanion.unidict.module.AbstractModule;
import wanion.unidict.module.ModuleHandler;
Expand Down Expand Up @@ -91,6 +92,7 @@ public void postInit(final FMLPostInitializationEvent event)
public void loadComplete(final FMLLoadCompleteEvent event)
{
moduleHandler.startModules(event);
SpecificKindItemStackComparator.nullify();
uniResourceHandler = null;
moduleHandler = null;
dependencies = null;
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.2";
public static final String MOD_VERSION = "1.10.2-1.2b";
public static final char SLASH = separatorChar;
public static final String MC_VERSION = "[1.10.2]";

Expand Down
6 changes: 3 additions & 3 deletions src/main/java/wanion/unidict/helper/RecipeHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
import java.util.List;
import java.util.Map;

public class RecipeHelper
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'};
Expand All @@ -38,7 +38,7 @@ private RecipeHelper() {}
public static Object[] rawShapeToShape(@Nonnull final Object[] objects)
{
int f = 0;
final char[][] almostTheShape = Arrays.copyOf(SHAPE, 3);
final char[][] almostTheShape = new char[][]{Arrays.copyOf(SHAPE[0], 3), Arrays.copyOf(SHAPE[1], 3), Arrays.copyOf(SHAPE[2], 3)};
final TObjectCharMap<Object> thingToCharMap = new TObjectCharHashMap<>();
final Map<Integer, ItemStack> keyStackMap = new THashMap<>();
boolean done = false;
Expand All @@ -60,7 +60,7 @@ public static Object[] rawShapeToShape(@Nonnull final Object[] objects)
int i = 0;
for (final Object object : thingToCharMap.keySet()) {
shape[3 + (2 * i)] = thingToCharMap.get(object);
shape[4 + (2 * i++)] = (object instanceof Integer) ? keyStackMap.get(object).copy() : object;
shape[4 + (2 * i++)] = (object instanceof Integer) ? keyStackMap.get(object) : object;
}
return shape;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ public String call()
{
try {
doTheResearch();
} catch (Exception e) { UniDict.getLogger().error(threadName + e); }
} catch (Exception e) { UniDict.getLogger().error(threadName + e); e.printStackTrace(); }
return threadName + "Why so many recipes? I had to deal with a lot of recipes.";
}

Expand Down
16 changes: 8 additions & 8 deletions src/main/java/wanion/unidict/recipe/ForgeResearcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,12 @@ public Class<ShapelessOreRecipe> getShapelessRecipeClass()
@Override
public ShapedOreRecipe getNewShapedRecipe(@Nonnull final IRecipe recipe, @Nonnull final ResourceHandler resourceHandler, @Nonnull final UniOreDictionary uniOreDictionary)
{
final Object[] newRecipeInputs = new Object[9];
final Object[] recipeInputs = ((ShapedOreRecipe)recipe).getInput();
String bufferOreName;
final Object[] newRecipeInputs = new Object[9];
for (int i = 0; i < 9; i++) {
Object input = i < recipeInputs.length ? recipeInputs[i] : null;
newRecipeInputs[i] = input != null ? (bufferOreName = uniOreDictionary.getName(input)) != null ? bufferOreName : input : null;
final Object input = i < recipeInputs.length ? recipeInputs[i] : null;
final String bufferOreName = input != null ? uniOreDictionary.getName(input) : null;
newRecipeInputs[i] = input != null ? bufferOreName != null ? bufferOreName : input : null;
}
return new ShapedOreRecipe(resourceHandler.getMainItemStack(recipe.getRecipeOutput()), RecipeHelper.rawShapeToShape(newRecipeInputs));
}
Expand All @@ -69,12 +69,12 @@ public ShapedOreRecipe getNewShapedRecipe(@Nonnull final IRecipe recipe, @Nonnul
@Override
public ShapedOreRecipe getNewShapedFromShapelessRecipe(@Nonnull final IRecipe recipe, @Nonnull final ResourceHandler resourceHandler, @Nonnull final UniOreDictionary uniOreDictionary)
{
final Object[] newRecipeInputs = new Object[9];
final Object[] recipeInputs = ((ShapelessOreRecipe)recipe).getInput().toArray();
String bufferOreName;
final Object[] newRecipeInputs = new Object[recipeInputs.length];
for (int i = 0; i < recipeInputs.length; i++) {
Object input = recipeInputs[i];
newRecipeInputs[i] = (bufferOreName = uniOreDictionary.getName(input)) != null ? bufferOreName : input;
final Object input = i < recipeInputs.length ? recipeInputs[i] : null;
final String bufferOreName = input != null ? uniOreDictionary.getName(input) : null;
newRecipeInputs[i] = input != null ? bufferOreName != null ? bufferOreName : input : null;
}
return new ShapedOreRecipe(resourceHandler.getMainItemStack(recipe.getRecipeOutput()), RecipeHelper.rawShapeToShape(newRecipeInputs));
}
Expand Down
14 changes: 8 additions & 6 deletions src/main/java/wanion/unidict/recipe/IC2Researcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -68,10 +68,11 @@ public ShapedOreRecipe getNewShapedRecipe(@Nonnull IRecipe recipe, @Nonnull fina
{
final Object[] newRecipeInputs = new Object[9];
final IRecipeInput[] recipeInputs = ((AdvRecipe)recipe).input;
String bufferOreName;
for (int i = 0; i < 9; i++) {
List<ItemStack> input = i < recipeInputs.length ? recipeInputs[i].getInputs() : null;
newRecipeInputs[i] = input != null ? ((bufferOreName = uniOreDictionary.getName(input)) != null) ? bufferOreName : input.get(0) : null;
final List<ItemStack> input = i < recipeInputs.length && !recipeInputs[i].getInputs().isEmpty() ? recipeInputs[i].getInputs() : null;
final String bufferOreName = input != null ? uniOreDictionary.getName(input) : null;
String secondaryBufferOreName;
newRecipeInputs[i] = input != null ? bufferOreName != null ? bufferOreName : (secondaryBufferOreName = uniOreDictionary.getName(input.get(0))) != null ? secondaryBufferOreName : null : null;
}
return new ShapedOreRecipe(resourceHandler.getMainItemStack(recipe.getRecipeOutput()), RecipeHelper.rawShapeToShape(newRecipeInputs));
}
Expand All @@ -82,10 +83,11 @@ public ShapedOreRecipe getNewShapedFromShapelessRecipe(@Nonnull IRecipe recipe,
{
final Object[] newRecipeInputs = new Object[9];
final IRecipeInput[] recipeInputs = ((AdvShapelessRecipe)recipe).input;
String bufferOreName;
for (int i = 0; i < recipeInputs.length; i++) {
List<ItemStack> input = recipeInputs[i].getInputs();
newRecipeInputs[i] = ((bufferOreName = uniOreDictionary.getName(input)) != null) ? bufferOreName : (input != null) ? input.get(0) : null;
final List<ItemStack> input = i < recipeInputs.length && !recipeInputs[i].getInputs().isEmpty() ? recipeInputs[i].getInputs() : null;
final String bufferOreName = input != null ? uniOreDictionary.getName(input) : null;
String secondaryBufferOreName;
newRecipeInputs[i] = input != null ? bufferOreName != null ? bufferOreName : (secondaryBufferOreName = uniOreDictionary.getName(input.get(0))) != null ? secondaryBufferOreName : null : null;
}
return new ShapedOreRecipe(resourceHandler.getMainItemStack(recipe.getRecipeOutput()), RecipeHelper.rawShapeToShape(newRecipeInputs));
}
Expand Down
6 changes: 3 additions & 3 deletions src/main/java/wanion/unidict/recipe/VanillaResearcher.java
Original file line number Diff line number Diff line change
Expand Up @@ -57,10 +57,10 @@ public ShapedOreRecipe getNewShapedRecipe(@Nonnull final IRecipe recipe, @Nonnul
{
final Object[] newRecipeInputs = new Object[9];
final ItemStack[] recipeInputs = ((ShapedRecipes) recipe).recipeItems;
String bufferOreName;
for (int i = 0; i < 9; i++) {
ItemStack input = i < recipeInputs.length ? recipeInputs[i] : null;
newRecipeInputs[i] = input != null ? (bufferOreName = resourceHandler.getContainerName(input)) != null ? bufferOreName : input : null;
final ItemStack input = i < recipeInputs.length ? recipeInputs[i] : null;
final String bufferOreName = resourceHandler.getContainerName(input);
newRecipeInputs[i] = input != null ? bufferOreName != null ? bufferOreName : input : null;
}
return new ShapedOreRecipe(resourceHandler.getMainItemStack(recipe.getRecipeOutput()), RecipeHelper.rawShapeToShape(newRecipeInputs));
}
Expand Down
90 changes: 59 additions & 31 deletions src/main/java/wanion/unidict/resource/Resource.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
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 All @@ -33,6 +36,7 @@ public class Resource
private final TLongObjectMap<UniResourceContainer> childrenMap = new TLongObjectHashMap<>();
private long children = 0;
private boolean updated;
private boolean sorted = false;

public Resource(@Nonnull final String name)
{
Expand Down Expand Up @@ -63,16 +67,6 @@ public UniResourceContainer getChild(final long kind)
return childrenMap.get(kind);
}

public TLongObjectMap<UniResourceContainer> getChildrenMap()
{
return new TUnmodifiableLongObjectMap<>(childrenMap);
}

Collection<UniResourceContainer> getChildrenCollection()
{
return childrenMap.valueCollection();
}

public Resource filteredClone(final long kinds)
{
final TLongObjectMap<UniResourceContainer> newChildrenMap = new TLongObjectHashMap<>();
Expand All @@ -94,15 +88,6 @@ public boolean addChild(@Nonnull final UniResourceContainer child)
return true;
}

public Resource setSortOfChildren(final boolean sort)
{
childrenMap.forEachValue(child -> {
child.setSort(sort);
return true;
});
return this;
}

public void updateEntries()
{
if (updated)
Expand All @@ -116,6 +101,7 @@ public void updateEntries()
children &= ~kindId;
childrenIterator.remove();
}
cleanEverything();
}

@Override
Expand All @@ -129,23 +115,46 @@ public String toString()
return output.toString();
}

public static void register(@Nonnull final String kindName)
TLongObjectMap<UniResourceContainer> getChildrenMap()
{
if (nameToKind.containsKey(kindName))
return new TUnmodifiableLongObjectMap<>(childrenMap);
}

Resource setSortOfChildren(final boolean sort)
{
childrenMap.forEachValue(child -> {
child.setSort(sort);
return true;
});
return this;
}

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

private void hideInNEI()
{
if (!Config.autoHideInJEI)
return;
final int kind = 1 << totalKindsRegistered++;
nameToKind.put(kindName, kind);
kindToName.put(kind, kindName);
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);
}

public static long registerAndGet(@Nonnull final String kindName)
private void keepOneEntry()
{
if (nameToKind.containsKey(kindName))
return nameToKind.get(kindName);
final int kind = 1 << totalKindsRegistered++;
nameToKind.put(kindName, kind);
kindToName.put(kind, kindName);
return kind;
if (!Config.keepOneEntry)
return;
childrenMap.valueCollection().forEach(UniResourceContainer::keepOneEntry);
}

public static List<Resource> getResources(@Nonnull final Collection<Resource> resources, final String... kinds)
Expand Down Expand Up @@ -203,4 +212,23 @@ public static boolean kindExists(@Nonnull final String... names)
return false;
return true;
}

static void register(@Nonnull final String kindName)
{
if (nameToKind.containsKey(kindName))
return;
final int kind = 1 << totalKindsRegistered++;
nameToKind.put(kindName, kind);
kindToName.put(kind, kindName);
}

static long registerAndGet(@Nonnull final String kindName)
{
if (nameToKind.containsKey(kindName))
return nameToKind.get(kindName);
final int kind = 1 << totalKindsRegistered++;
nameToKind.put(kindName, kind);
kindToName.put(kind, kindName);
return kind;
}
}
10 changes: 6 additions & 4 deletions src/main/java/wanion/unidict/resource/UniResourceContainer.java
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ public List<ItemStack> getEntries() {
}

void keepOneEntry() {
if (entries.size() == 1)
if (!sort || entries.size() == 1)
return;
Set<ItemStack> keepOneEntryBlackSet = ResourceHandler.keepOneEntryBlackSet;
if (!keepOneEntryBlackSet.isEmpty()) {
Expand All @@ -60,9 +60,11 @@ void keepOneEntry() {
} else entries.subList(1, entries.size()).clear();
}

void removeBadEntriesFromNEI() {
if (entries.size() > 1)
entries.subList(1, entries.size()).forEach(UniJEIPlugin::hide);
void removeBadEntriesFromNEI()
{
if (sort)
if (entries.size() > 1)
entries.subList(1, entries.size()).forEach(UniJEIPlugin::hide);
}

boolean updateEntries() {
Expand Down
Loading

0 comments on commit 100c6e3

Please sign in to comment.