From a110c4e8ef3e11fa3409a395d9fb79b225a4713a Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Thu, 15 Jan 2015 06:06:07 -0500 Subject: [PATCH] Clean up in Carving API, add support for new API classes in Carving --- .../cricketcraft/chisel/api/ICarvable.java | 11 ++++---- .../chisel/api/carving/CarvingUtils.java | 13 +++++++++ .../chisel/api/carving/ICarvingVariation.java | 20 +++++++++---- .../cricketcraft/chisel/carving/Carving.java | 28 +++++++++---------- .../chisel/carving/CarvingVariation.java | 5 ---- .../chisel/carving/GroupList.java | 11 ++++---- .../compat/nei/RecipeHandlerChisel.java | 3 +- 7 files changed, 53 insertions(+), 38 deletions(-) diff --git a/src/main/java/com/cricketcraft/chisel/api/ICarvable.java b/src/main/java/com/cricketcraft/chisel/api/ICarvable.java index acf6c33f..f842cb09 100644 --- a/src/main/java/com/cricketcraft/chisel/api/ICarvable.java +++ b/src/main/java/com/cricketcraft/chisel/api/ICarvable.java @@ -1,18 +1,17 @@ package com.cricketcraft.chisel.api; +import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.carving.CarvableVariation; public interface ICarvable { /** - * This grabs the variations possible + * Gets a {@link CarvableVariation} from this block, based on metadata. + *

+ * Typically you can refer this method to {@link CarvableHelper#getVariation(int)} but this method is provided for more complex metadata handling. * * @param metadata - * This is the metadata that a block will use and the basis of - * chisel Traditionally you make an instance of CarvableHelper - * ex. CarvableHelper carverHelper = new CarvableHelper(); In - * this method you return carverHelper.getVariation(metadata) and - * that should be all you need if you register it correctly. + * The metadata of the block */ public CarvableVariation getVariation(int metadata); } diff --git a/src/main/java/com/cricketcraft/chisel/api/carving/CarvingUtils.java b/src/main/java/com/cricketcraft/chisel/api/carving/CarvingUtils.java index f9950593..2074b512 100644 --- a/src/main/java/com/cricketcraft/chisel/api/carving/CarvingUtils.java +++ b/src/main/java/com/cricketcraft/chisel/api/carving/CarvingUtils.java @@ -1,5 +1,7 @@ package com.cricketcraft.chisel.api.carving; +import net.minecraft.item.ItemStack; + public class CarvingUtils { /** @@ -14,4 +16,15 @@ public class CarvingUtils { public static int compare(ICarvingVariation v1, ICarvingVariation v2) { return v1.getOrder() - v2.getOrder(); } + + /** + * Gets an {@link ItemStack} representing the passed {@link ICarvingVariation}. + * + * @param variation + * An {@link ICarvingVariation} + * @return An {@link ItemStack} + */ + public static ItemStack getStack(ICarvingVariation variation) { + return new ItemStack(variation.getBlock(), 1, variation.getItemMeta()); + } } diff --git a/src/main/java/com/cricketcraft/chisel/api/carving/ICarvingVariation.java b/src/main/java/com/cricketcraft/chisel/api/carving/ICarvingVariation.java index 6b09c259..bab294e5 100644 --- a/src/main/java/com/cricketcraft/chisel/api/carving/ICarvingVariation.java +++ b/src/main/java/com/cricketcraft/chisel/api/carving/ICarvingVariation.java @@ -1,7 +1,7 @@ package com.cricketcraft.chisel.api.carving; import net.minecraft.block.Block; -import net.minecraft.item.ItemStack; +import net.minecraft.item.Item; /** * Represents a variation of a chiselable block. @@ -11,18 +11,26 @@ import net.minecraft.item.ItemStack; */ public interface ICarvingVariation extends Comparable { + /** + * The base block of this variation. + * + * @return A {@link Block} that is the base of this variation + */ Block getBlock(); + /** + * The metadata of this variation + * + * @return An int representing the metadata of this variation's {@link Block} in the world. + */ int getBlockMeta(); - int getItemMeta(); - /** - * Gets an {@link ItemStack} representing this variation. + * The item metadata of this variation * - * @return An {@link ItemStack} to represent this variation + * @return An int representing the metadata of this variations's {@link Item}. */ - ItemStack getStack(); + int getItemMeta(); /** * The "order" of this variation. Represents its position in the list of variations. diff --git a/src/main/java/com/cricketcraft/chisel/carving/Carving.java b/src/main/java/com/cricketcraft/chisel/carving/Carving.java index 0a9e501b..078aed3f 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/Carving.java +++ b/src/main/java/com/cricketcraft/chisel/carving/Carving.java @@ -24,14 +24,6 @@ public class Carving { private Carving() { } - String key(Item item, int metadata) { - return Item.itemRegistry.getNameForObject(item) + "|" + metadata; - } - - String key(Block block, int metadata) { - return Block.blockRegistry.getNameForObject(block) + "|" + metadata; - } - public List getVariations(Block block, int metadata) { ICarvingGroup group = getGroup(block, metadata); if (group == null) @@ -105,20 +97,26 @@ public class Carving { return groups.getGroupByName(name); } - public CarvingVariation addVariation(String name, Block block, int metadata, int order) { + public void addVariation(String groupName, Block block, int metadata, int order) { - CarvingVariation variation = new CarvingVariation(block, metadata, order); + ICarvingVariation variation = new CarvingVariation(block, metadata, order); + addVariation(groupName, variation); + } - ICarvingGroup group = groups.getGroupByName(name); + public void addVariation(String groupName, ICarvingVariation variation) { + + ICarvingGroup group = groups.getGroupByName(groupName); if (group == null) { - group = new CarvingGroup(name); - groups.add(group); + group = new CarvingGroup(groupName); + addGroup(group); } - groups.addVariation(name, variation); + groups.addVariation(groupName, variation); + } - return variation; + public void addGroup(ICarvingGroup group) { + groups.add(group); } public void registerOre(String name, String oreName) { diff --git a/src/main/java/com/cricketcraft/chisel/carving/CarvingVariation.java b/src/main/java/com/cricketcraft/chisel/carving/CarvingVariation.java index 42cc6d59..7d63f1fb 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/CarvingVariation.java +++ b/src/main/java/com/cricketcraft/chisel/carving/CarvingVariation.java @@ -20,11 +20,6 @@ public class CarvingVariation implements ICarvingVariation { this.damage = metadata; } - @Override - public ItemStack getStack() { - return new ItemStack(block, 1, damage); - } - @Override public Block getBlock() { return block; diff --git a/src/main/java/com/cricketcraft/chisel/carving/GroupList.java b/src/main/java/com/cricketcraft/chisel/carving/GroupList.java index 80e0dc88..d57c8f8c 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/GroupList.java +++ b/src/main/java/com/cricketcraft/chisel/carving/GroupList.java @@ -69,11 +69,6 @@ public class GroupList implements Set { return data.getRight(); } - @Override - public ItemStack getStack() { - return null; - } - @Override public int getOrder() { return 0; @@ -127,6 +122,12 @@ public class GroupList implements Set { if (groups.containsKey(key)) { return false; } + for (ICarvingVariation v : group.getVariations()) { + ICarvingGroup g = lookup.get(v); + if (g == null) { + lookup.put(new VariationWrapper(v), group); + } + } groups.put(key, group); return true; } diff --git a/src/main/java/com/cricketcraft/chisel/compat/nei/RecipeHandlerChisel.java b/src/main/java/com/cricketcraft/chisel/compat/nei/RecipeHandlerChisel.java index 05c541e5..4a61a751 100644 --- a/src/main/java/com/cricketcraft/chisel/compat/nei/RecipeHandlerChisel.java +++ b/src/main/java/com/cricketcraft/chisel/compat/nei/RecipeHandlerChisel.java @@ -15,6 +15,7 @@ import codechicken.nei.NEIServerUtils; import codechicken.nei.PositionedStack; import codechicken.nei.recipe.TemplateRecipeHandler; +import com.cricketcraft.chisel.api.carving.CarvingUtils; import com.cricketcraft.chisel.api.carving.ICarvingGroup; import com.cricketcraft.chisel.api.carving.ICarvingVariation; import com.cricketcraft.chisel.carving.Carving; @@ -165,7 +166,7 @@ public class RecipeHandlerChisel extends TemplateRecipeHandler { private static List getVariationStacks(ICarvingGroup g) { List stacks = new ArrayList(); for (ICarvingVariation v : g.getVariations()) { - stacks.add(v.getStack()); + stacks.add(CarvingUtils.getStack(v)); } String oreName = g.getOreName(); if (oreName != null) {