Skip to content

Commit

Permalink
Change stencils to be identified by actual IDs because DAMN was that …
Browse files Browse the repository at this point in the history
…other stuff a pain to use if you wanted to identify one.
  • Loading branch information
bonii-xx committed Oct 22, 2014
1 parent 035cc45 commit b9efa73
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 48 deletions.
27 changes: 15 additions & 12 deletions src/main/java/tconstruct/library/crafting/StencilBuilder.java
Expand Up @@ -9,7 +9,7 @@ public class StencilBuilder
public static StencilBuilder instance = new StencilBuilder();

public List<ItemStack> blanks = new LinkedList<ItemStack>(); // i wish ItemStack would support equals so i could use a Set here...
public List<ItemStack> stencils = new ArrayList<ItemStack>();
public Map<Integer, ItemStack> stencils = new TreeMap<Integer, ItemStack>();

/**
* Returns whether the given ItemStack is a blank pattern and therefore usable for stencil crafting.
Expand All @@ -28,37 +28,40 @@ public static void registerBlankStencil (ItemStack itemStack)
instance.blanks.add(itemStack);
}

public static void registerStencil (Item item, int meta)
public static void registerStencil (int id, Item item, int meta)
{
instance.stencils.add(new ItemStack(item, 1, meta));
registerStencil(id, new ItemStack(item, 1, meta));
}

public static void registerStencil (ItemStack pattern)
public static void registerStencil (int id, ItemStack pattern)
{
instance.stencils.add(pattern);
if(instance.stencils.containsKey(id))
throw new IllegalArgumentException("[TCon API] Stencil ID " + id + " is already occupied by " + instance.stencils.get(id).getDisplayName());

instance.stencils.put(id, pattern);
}

public static List<ItemStack> getStencils ()
public static Collection<ItemStack> getStencils ()
{
return instance.stencils;
return instance.stencils.values();
}

/**
* Returns the index of the given stencil. If no stencil is found, returns -1.
*/
public static int getIndex (ItemStack stencil)
public static int getId(ItemStack stencil)
{
for (int i = 0; i < instance.stencils.size(); i++)
if (OreDictionary.itemMatches(stencil, getStencil(i), false))
return i;
for(Map.Entry<Integer, ItemStack> entry : instance.stencils.entrySet())
if (OreDictionary.itemMatches(stencil, entry.getValue(), false))
return entry.getKey();

return -1;
}

// returns the stencil with the given index
public static ItemStack getStencil (int num)
{
if (num >= instance.stencils.size())
if (!instance.stencils.containsKey(num))
return null;

return instance.stencils.get(num).copy();
Expand Down
60 changes: 30 additions & 30 deletions src/main/java/tconstruct/tools/TinkerTools.java
Expand Up @@ -897,36 +897,36 @@ private void registerStencils ()
StencilBuilder.registerBlankStencil(new ItemStack(TinkerTools.blankPattern));

// we register this manually because we want that specific order
StencilBuilder.registerStencil(TinkerTools.woodPattern, 1); // tool rod
StencilBuilder.registerStencil(TinkerTools.woodPattern, 9); // binding
StencilBuilder.registerStencil(TinkerTools.woodPattern, 14); // large tool rod
StencilBuilder.registerStencil(TinkerTools.woodPattern, 15); // large binding

StencilBuilder.registerStencil(TinkerTools.woodPattern, 2); // pickaxe head
StencilBuilder.registerStencil(TinkerTools.woodPattern, 3); // shovel head
StencilBuilder.registerStencil(TinkerTools.woodPattern, 4); // hatchet head
StencilBuilder.registerStencil(TinkerTools.woodPattern, 18); // scythe

StencilBuilder.registerStencil(TinkerTools.woodPattern, 21); // hammer head
StencilBuilder.registerStencil(TinkerTools.woodPattern, 19); // excavator head
StencilBuilder.registerStencil(TinkerTools.woodPattern, 17); // lumberaxe head
StencilBuilder.registerStencil(TinkerTools.woodPattern, 16); // large plate

StencilBuilder.registerStencil(TinkerTools.woodPattern, 10); // frying pan
StencilBuilder.registerStencil(TinkerTools.woodPattern, 11); // battlesign
StencilBuilder.registerStencil(TinkerTools.woodPattern, 13); // chisel

StencilBuilder.registerStencil(TinkerTools.woodPattern, 12); // knifeblade
StencilBuilder.registerStencil(TinkerTools.woodPattern, 5); // swordblade
StencilBuilder.registerStencil(TinkerTools.woodPattern, 20); // cleaver blade

StencilBuilder.registerStencil(TinkerTools.woodPattern, 8); // crossbar
StencilBuilder.registerStencil(TinkerTools.woodPattern, 7); // small guard
StencilBuilder.registerStencil(TinkerTools.woodPattern, 6); // wide guard

StencilBuilder.registerStencil(TinkerTools.woodPattern, 25); // arrow head
StencilBuilder.registerStencil(TinkerTools.woodPattern, 24); // fletchling
StencilBuilder.registerStencil(TinkerTools.woodPattern, 23); // bowstring
StencilBuilder.registerStencil(0, TinkerTools.woodPattern, 1); // tool rod
StencilBuilder.registerStencil(1, TinkerTools.woodPattern, 9); // binding
StencilBuilder.registerStencil(2, TinkerTools.woodPattern, 14); // large tool rod
StencilBuilder.registerStencil(3, TinkerTools.woodPattern, 15); // large binding

StencilBuilder.registerStencil(4, TinkerTools.woodPattern, 2); // pickaxe head
StencilBuilder.registerStencil(5, TinkerTools.woodPattern, 3); // shovel head
StencilBuilder.registerStencil(6, TinkerTools.woodPattern, 4); // hatchet head
StencilBuilder.registerStencil(7, TinkerTools.woodPattern, 18); // scythe

StencilBuilder.registerStencil(8, TinkerTools.woodPattern, 21); // hammer head
StencilBuilder.registerStencil(9, TinkerTools.woodPattern, 19); // excavator head
StencilBuilder.registerStencil(10, TinkerTools.woodPattern, 17); // lumberaxe head
StencilBuilder.registerStencil(11, TinkerTools.woodPattern, 16); // large plate

StencilBuilder.registerStencil(12, TinkerTools.woodPattern, 10); // frying pan
StencilBuilder.registerStencil(13, TinkerTools.woodPattern, 11); // battlesign
StencilBuilder.registerStencil(14, TinkerTools.woodPattern, 13); // chisel

StencilBuilder.registerStencil(15, TinkerTools.woodPattern, 12); // knifeblade
StencilBuilder.registerStencil(16, TinkerTools.woodPattern, 5); // swordblade
StencilBuilder.registerStencil(17, TinkerTools.woodPattern, 20); // cleaver blade

StencilBuilder.registerStencil(18, TinkerTools.woodPattern, 8); // crossbar
StencilBuilder.registerStencil(19, TinkerTools.woodPattern, 7); // small guard
StencilBuilder.registerStencil(20, TinkerTools.woodPattern, 6); // wide guard

StencilBuilder.registerStencil(21, TinkerTools.woodPattern, 25); // arrow head
StencilBuilder.registerStencil(22, TinkerTools.woodPattern, 24); // fletchling
StencilBuilder.registerStencil(23, TinkerTools.woodPattern, 23); // bowstring
}

public static final class MaterialID
Expand Down
9 changes: 4 additions & 5 deletions src/main/java/tconstruct/tools/ToolProxyClient.java
Expand Up @@ -345,16 +345,15 @@ void addStencilButtons ()
};

int i = 0;
for (ItemStack stack : StencilBuilder.getStencils())
for (int[] icon : icons)
{
// spacer
while (icons[i].length == 0)
if(icon.length == 0)
{
addStencilButton(0, 0, -1);
i++;
}
addStencilButton(icons[i][0], icons[i][1], StencilBuilder.getIndex(stack));
i++;
else
addStencilButton(icon[0], icon[1], i++);
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/tconstruct/tools/gui/StencilTableGui.java
Expand Up @@ -92,7 +92,7 @@ public void initGui ()
ItemStack stack;
if (logic.getStackInSlot(1) != null)
{
activeButton = StencilBuilder.getIndex(logic.getStackInSlot(1));
activeButton = StencilBuilder.getId(logic.getStackInSlot(1));
setActiveButton(activeButton);
stack = StencilBuilder.getStencil(((GuiButtonStencil) this.buttonList.get(activeButton)).element.stencilIndex);
}
Expand Down

0 comments on commit b9efa73

Please sign in to comment.