diff --git a/src/main/java/com/cricketcraft/chisel/carving/CarvingGroup.java b/src/main/java/com/cricketcraft/chisel/carving/CarvingGroup.java index 08e64389..e29af8b1 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/CarvingGroup.java +++ b/src/main/java/com/cricketcraft/chisel/carving/CarvingGroup.java @@ -7,7 +7,6 @@ import java.util.List; import com.cricketcraft.chisel.api.carving.CarvingUtils; import com.cricketcraft.chisel.api.carving.ICarvingGroup; import com.cricketcraft.chisel.api.carving.ICarvingVariation; -import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; public class CarvingGroup implements ICarvingGroup { @@ -23,7 +22,7 @@ public class CarvingGroup implements ICarvingGroup { } public List getVariations() { - return ImmutableList.copyOf(variations); + return Lists.newArrayList(variations); } @Override diff --git a/src/main/java/com/cricketcraft/chisel/item/chisel/ChiselController.java b/src/main/java/com/cricketcraft/chisel/item/chisel/ChiselController.java index 4df6578c..d66368c0 100644 --- a/src/main/java/com/cricketcraft/chisel/item/chisel/ChiselController.java +++ b/src/main/java/com/cricketcraft/chisel/item/chisel/ChiselController.java @@ -7,9 +7,11 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.util.ForgeDirection; import net.minecraftforge.event.entity.player.PlayerInteractEvent; +import net.minecraftforge.oredict.OreDictionary; import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.api.IChiselItem; +import com.cricketcraft.chisel.api.carving.ICarvingGroup; import com.cricketcraft.chisel.api.carving.ICarvingVariation; import com.cricketcraft.chisel.carving.Carving; import com.cricketcraft.chisel.carving.CarvingVariation; @@ -48,10 +50,18 @@ public final class ChiselController { z = event.z; Block block = event.world.getBlock(x, y, z); int metadata = event.world.getBlockMetadata(x, y, z); - List list = Carving.chisel.getVariations(block, metadata); + ICarvingGroup group = Carving.chisel.getGroup(block, metadata); - if (list == null || list.isEmpty()) { - break; + List list = group.getVariations(); + + main: for (ItemStack stack : OreDictionary.getOres(group.getOreName())) { + ICarvingVariation v = General.getVariation(stack); + for (ICarvingVariation check : list) { + if (check.getBlock() == v.getBlock() && check.getBlockMeta() == v.getBlockMeta()) { + continue main; + } + } + list.add(General.getVariation(stack)); } ICarvingVariation[] variations = list.toArray(new CarvingVariation[] {}); @@ -73,6 +83,7 @@ public final class ChiselController { ICarvingVariation v = variations[i]; if (v.getBlock() == block && v.getBlockMeta() == metadata) { idx = (i + 1) % variations.length; // move to the next in the group + break; } } diff --git a/src/main/java/com/cricketcraft/chisel/utils/General.java b/src/main/java/com/cricketcraft/chisel/utils/General.java index 99ab77ac..5bff0697 100644 --- a/src/main/java/com/cricketcraft/chisel/utils/General.java +++ b/src/main/java/com/cricketcraft/chisel/utils/General.java @@ -17,6 +17,7 @@ import net.minecraft.world.World; import com.cricketcraft.chisel.api.carving.ICarvingVariation; import com.cricketcraft.chisel.carving.Carving; +import com.cricketcraft.chisel.carving.CarvingVariation; import com.cricketcraft.chisel.item.chisel.ChiselMode; public class General { @@ -137,6 +138,7 @@ public class General { } public static ICarvingVariation getVariation(ItemStack stack) { - return Carving.chisel.getVariation(Block.getBlockFromItem(stack.getItem()), stack.getItemDamage()); + ICarvingVariation v = Carving.chisel.getVariation(Block.getBlockFromItem(stack.getItem()), stack.getItemDamage()); + return v == null ? new CarvingVariation(Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 99) : v; } }