From 47abdbbc1077c0606c02f00f227ed4641fdbcda6 Mon Sep 17 00:00:00 2001 From: tterrag1098 Date: Fri, 24 Apr 2015 17:05:12 -0400 Subject: [PATCH] Move CarvableHelper to API --- .../java/com/cricketcraft/chisel/Chisel.java | 9 + .../com/cricketcraft/chisel/Features.java | 7 +- .../chisel/api/ChiselAPIProps.java | 2 +- .../chisel/{compat/fmp => api}/FMPIMC.java | 2 +- .../cricketcraft/chisel/api/ICarvable.java | 2 +- .../java/com/cricketcraft/chisel/api/IMC.java | 7 +- .../{ => api}/carving/CarvableHelper.java | 48 ++--- .../chisel/api/carving/CarvingUtils.java | 168 ++++++++++++++---- .../chisel/api/carving/VariationInfoBase.java | 17 +- .../chisel/api/rendering/TextureType.java | 2 +- .../chisel/block/BlockCarvable.java | 2 +- .../chisel/block/BlockCarvableAntiBlock.java | 2 +- .../chisel/block/BlockCarvableGlass.java | 2 +- .../chisel/block/BlockCarvableIce.java | 2 +- .../chisel/block/BlockCarvableIceStairs.java | 2 +- .../chisel/block/BlockCarvablePackedIce.java | 2 +- .../block/BlockCarvablePackedIceStairs.java | 2 +- .../chisel/block/BlockCarvablePane.java | 2 +- .../chisel/block/BlockCarvablePumpkin.java | 2 +- .../chisel/block/BlockCarvableSand.java | 2 +- .../chisel/block/BlockCarvableStairs.java | 2 +- .../chisel/block/BlockCarvableTorch.java | 2 +- .../chisel/block/BlockMarbleCarpet.java | 2 +- .../chisel/block/BlockMarbleWall.java | 2 +- .../chisel/block/BlockMultiLayer.java | 2 +- .../chisel/block/BlockPresent.java | 2 +- .../chisel/block/CarvableStairsMaker.java | 2 +- .../chisel/block/IStairsCreator.java | 2 +- .../cricketcraft/chisel/carving/Carving.java | 9 +- .../chisel/carving/CarvingGroup.java | 75 -------- .../chisel/carving/CarvingVariation.java | 40 ----- .../cricketcraft/chisel/utils/General.java | 6 +- .../chisel/utils/GeneralClient.java | 6 - 33 files changed, 216 insertions(+), 220 deletions(-) rename src/main/java/com/cricketcraft/chisel/{compat/fmp => api}/FMPIMC.java (92%) rename src/main/java/com/cricketcraft/chisel/{ => api}/carving/CarvableHelper.java (83%) delete mode 100644 src/main/java/com/cricketcraft/chisel/carving/CarvingGroup.java delete mode 100644 src/main/java/com/cricketcraft/chisel/carving/CarvingVariation.java diff --git a/src/main/java/com/cricketcraft/chisel/Chisel.java b/src/main/java/com/cricketcraft/chisel/Chisel.java index 80205632..87304f64 100644 --- a/src/main/java/com/cricketcraft/chisel/Chisel.java +++ b/src/main/java/com/cricketcraft/chisel/Chisel.java @@ -7,12 +7,15 @@ import com.cricketcraft.chisel.entity.EntityChiselSnowman; import cpw.mods.fml.common.registry.EntityRegistry; import net.minecraft.block.Block; import net.minecraft.item.Item; +import net.minecraft.item.ItemCarrotOnAStick; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Configuration; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import com.cricketcraft.chisel.api.ChiselAPIProps; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.block.BlockCarvable; import com.cricketcraft.chisel.compat.Compatibility; import com.cricketcraft.chisel.compat.IMCHandler; @@ -20,6 +23,7 @@ import com.cricketcraft.chisel.compat.fmp.FMPCompat; import com.cricketcraft.chisel.config.Configurations; import com.cricketcraft.chisel.init.ChiselBlocks; import com.cricketcraft.chisel.init.ChiselTabs; +import com.cricketcraft.chisel.item.ItemCarvable; import com.cricketcraft.chisel.item.chisel.ChiselController; import com.cricketcraft.chisel.network.ChiselGuiHandler; import com.cricketcraft.chisel.network.PacketHandler; @@ -71,6 +75,11 @@ public class Chisel { @Instance(MOD_ID) public static Chisel instance; + + public Chisel() { + ChiselAPIProps.MOD_ID = MOD_ID; + CarvableHelper.itemCarvableClass = ItemCarvable.class; + } @SidedProxy(clientSide = "com.cricketcraft.chisel.proxy.ClientProxy", serverSide = "com.cricketcraft.chisel.proxy.CommonProxy") public static CommonProxy proxy; diff --git a/src/main/java/com/cricketcraft/chisel/Features.java b/src/main/java/com/cricketcraft/chisel/Features.java index 77cf080f..b2405ce6 100644 --- a/src/main/java/com/cricketcraft/chisel/Features.java +++ b/src/main/java/com/cricketcraft/chisel/Features.java @@ -14,12 +14,12 @@ import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.ShapedOreRecipe; import net.minecraftforge.oredict.ShapelessOreRecipe; +import com.cricketcraft.chisel.api.carving.CarvableHelper; +import com.cricketcraft.chisel.api.carving.CarvingUtils.SimpleCarvingGroup; import com.cricketcraft.chisel.api.carving.ICarvingVariation; import com.cricketcraft.chisel.api.carving.IVariationInfo; import com.cricketcraft.chisel.block.*; -import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.carving.Carving; -import com.cricketcraft.chisel.carving.CarvingGroup; import com.cricketcraft.chisel.client.render.SubmapManagerCarpetFloor; import com.cricketcraft.chisel.client.render.SubmapManagerFakeController; import com.cricketcraft.chisel.client.render.SubmapManagerSlab; @@ -46,6 +46,7 @@ import com.google.common.collect.Lists; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.registry.EntityRegistry; import cpw.mods.fml.common.registry.GameRegistry; + import static com.cricketcraft.chisel.init.ChiselBlocks.*; import static com.cricketcraft.chisel.utils.General.sGNames; @@ -1360,7 +1361,7 @@ public enum Features { @Override void addBlocks() { BlockLeaf leaves = (BlockLeaf) new BlockLeaf(Material.leaves).setCreativeTab(ChiselTabs.tabOtherChiselBlocks).setHardness(0.2F).setStepSound(Block.soundTypeGrass); - Carving.chisel.addGroup(new CarvingGroup("leaves") { + Carving.chisel.addGroup(new SimpleCarvingGroup("leaves") { public List getVariations() { if (Configurations.chiselBackToVanillaLeaves) { diff --git a/src/main/java/com/cricketcraft/chisel/api/ChiselAPIProps.java b/src/main/java/com/cricketcraft/chisel/api/ChiselAPIProps.java index 579b9a21..c4675cdb 100644 --- a/src/main/java/com/cricketcraft/chisel/api/ChiselAPIProps.java +++ b/src/main/java/com/cricketcraft/chisel/api/ChiselAPIProps.java @@ -3,5 +3,5 @@ package com.cricketcraft.chisel.api; public class ChiselAPIProps { public static final String VERSION = "0.0.2"; - + public static String MOD_ID = null; // Set by Chisel } diff --git a/src/main/java/com/cricketcraft/chisel/compat/fmp/FMPIMC.java b/src/main/java/com/cricketcraft/chisel/api/FMPIMC.java similarity index 92% rename from src/main/java/com/cricketcraft/chisel/compat/fmp/FMPIMC.java rename to src/main/java/com/cricketcraft/chisel/api/FMPIMC.java index 37b81e75..03f99c2c 100644 --- a/src/main/java/com/cricketcraft/chisel/compat/fmp/FMPIMC.java +++ b/src/main/java/com/cricketcraft/chisel/api/FMPIMC.java @@ -1,4 +1,4 @@ -package com.cricketcraft.chisel.compat.fmp; +package com.cricketcraft.chisel.api; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; diff --git a/src/main/java/com/cricketcraft/chisel/api/ICarvable.java b/src/main/java/com/cricketcraft/chisel/api/ICarvable.java index 11eee33f..8bee7462 100644 --- a/src/main/java/com/cricketcraft/chisel/api/ICarvable.java +++ b/src/main/java/com/cricketcraft/chisel/api/ICarvable.java @@ -3,9 +3,9 @@ package com.cricketcraft.chisel.api; import net.minecraft.item.ItemStack; import net.minecraft.world.IBlockAccess; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; import com.cricketcraft.chisel.api.rendering.ISubmapManager; -import com.cricketcraft.chisel.carving.CarvableHelper; /** * To be implemented on blocks that can be chiseled and need advanced metadata to variation mapping. Currently not very usable without internal classes. diff --git a/src/main/java/com/cricketcraft/chisel/api/IMC.java b/src/main/java/com/cricketcraft/chisel/api/IMC.java index 30f162c0..842f2de7 100644 --- a/src/main/java/com/cricketcraft/chisel/api/IMC.java +++ b/src/main/java/com/cricketcraft/chisel/api/IMC.java @@ -55,5 +55,10 @@ public enum IMC { /** * The modid of Chisel so you can easily send IMC to this mod. */ - public static final String CHISEL_MODID = Chisel.MOD_ID; + @Deprecated + public static final String CHISEL_MODID = "chisel"; + + public static final String getModid() { + return ChiselAPIProps.MOD_ID; + } } diff --git a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java b/src/main/java/com/cricketcraft/chisel/api/carving/CarvableHelper.java similarity index 83% rename from src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java rename to src/main/java/com/cricketcraft/chisel/api/carving/CarvableHelper.java index 7c40a72a..08438ee1 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/CarvableHelper.java +++ b/src/main/java/com/cricketcraft/chisel/api/carving/CarvableHelper.java @@ -1,30 +1,32 @@ -package com.cricketcraft.chisel.carving; +package com.cricketcraft.chisel.api.carving; import java.util.ArrayList; import java.util.List; import net.minecraft.block.Block; import net.minecraft.block.material.Material; +import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.client.renderer.texture.TextureMap; import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraftforge.oredict.OreDictionary; -import com.cricketcraft.chisel.Chisel; -import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.api.carving.VariationInfoBase; +import com.cricketcraft.chisel.api.ChiselAPIProps; +import com.cricketcraft.chisel.api.FMPIMC; import com.cricketcraft.chisel.api.rendering.ISubmapManager; import com.cricketcraft.chisel.api.rendering.TextureType; -import com.cricketcraft.chisel.compat.fmp.FMPIMC; -import com.cricketcraft.chisel.item.ItemCarvable; -import com.cricketcraft.chisel.utils.GeneralClient; import cpw.mods.fml.common.registry.GameRegistry; public class CarvableHelper { + + public static Class itemCarvableClass = null; + public static IIcon missingIcon = null; private Block theBlock; @@ -36,19 +38,19 @@ public class CarvableHelper { this.theBlock = block; } public void addVariation(String description, int metadata, ISubmapManager manager) { - addVariation(description, metadata, null, manager); + addVariation(description , metadata, null, manager); } public void addVariation(String description, int metadata, Block bb) { - addVariation(description, metadata, null, bb, 0, Chisel.MOD_ID); + addVariation(description, metadata, null, bb, 0, ChiselAPIProps.MOD_ID); } public void addVariation(String description, int metadata, Block bb, int blockMeta) { - addVariation(description, metadata, null, bb, blockMeta, Chisel.MOD_ID); + addVariation(description, metadata, null, bb, blockMeta, ChiselAPIProps.MOD_ID); } public void addVariation(String description, int metadata, Block bb, int blockMeta, Material material) { - addVariation(description, metadata, null, bb, blockMeta, Chisel.MOD_ID); + addVariation(description, metadata, null, bb, blockMeta, ChiselAPIProps.MOD_ID); } public void addVariation(String description, int metadata, String texture) { @@ -56,7 +58,7 @@ public class CarvableHelper { } public void addVariation(String description, int metadata, String texture, ISubmapManager manager) { - addVariation(description, metadata, texture, null, 0, Chisel.MOD_ID, manager); + addVariation(description, metadata, texture, null, 0, ChiselAPIProps.MOD_ID, manager); } public void addVariation(String description, int metadata, Block bb, String modid) { @@ -84,7 +86,7 @@ public class CarvableHelper { if (infoList.size() >= 16) return; - CarvingVariation var = new CarvingVariation(theBlock, metadata, metadata); + ICarvingVariation var = CarvingUtils.getDefaultVariationFor(theBlock, metadata, metadata); TextureType type = TextureType.getTypeFor(this, modid, texture); if (type == TextureType.CUSTOM && customManager == null) { throw new IllegalArgumentException(String.format("Could not find texture %s, and no custom texture manager was provided.", texture)); @@ -121,7 +123,7 @@ public class CarvableHelper { IVariationInfo info = infoMap[metadata]; if (info == null) - return GeneralClient.getMissingIcon(); + return getMissingIcon(); return info.getSubmapManager().getIcon(side, metadata); } @@ -134,25 +136,25 @@ public class CarvableHelper { IVariationInfo info = infoMap[metadata]; if (info == null) - return GeneralClient.getMissingIcon(); + return getMissingIcon(); return info.getSubmapManager().getIcon(world, x, y, z, side); } public void registerAll(Block block, String name) { - registerAll(block, name, ItemCarvable.class); + registerAll(block, name, itemCarvableClass); } public void registerBlock(Block block, String name) { - registerBlock(block, name, ItemCarvable.class); + registerBlock(block, name, itemCarvableClass); } - void registerBlock(Block block, String name, Class cl) { + void registerBlock(Block block, String name, Class cl) { block.setBlockName("chisel." + name); GameRegistry.registerBlock(block, cl, name); } - public void registerAll(Block block, String name, Class cl) { + public void registerAll(Block block, String name, Class cl) { registerBlock(block, name, cl); registerVariations(name, block); } @@ -166,7 +168,7 @@ public class CarvableHelper { public void registerVariation(String name, IVariationInfo info) { Block block = info.getVariation().getBlock(); - + if (block.renderAsNormalBlock() || block.isOpaqueCube() || block.isNormalCube()) { FMPIMC.registerFMP(block, info.getVariation().getBlockMeta()); } @@ -174,7 +176,7 @@ public class CarvableHelper { if (forbidChiseling) return; - Carving.chisel.addVariation(name, info.getVariation()); + CarvingUtils.getChiselRegistry().addVariation(name, info.getVariation()); } public void registerBlockIcons(String modName, Block block, IIconRegister register) { @@ -192,4 +194,8 @@ public class CarvableHelper { public void registerOre(String ore) { OreDictionary.registerOre(ore, infoList.get(0).getVariation().getBlock()); } + + public IIcon getMissingIcon() { + return ((TextureMap) Minecraft.getMinecraft().getTextureManager().getTexture(TextureMap.locationBlocksTexture)).getAtlasSprite("missingno"); + } } 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 0d687fa6..36fc02bf 100644 --- a/src/main/java/com/cricketcraft/chisel/api/carving/CarvingUtils.java +++ b/src/main/java/com/cricketcraft/chisel/api/carving/CarvingUtils.java @@ -1,9 +1,14 @@ package com.cricketcraft.chisel.api.carving; -import java.lang.reflect.Field; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import net.minecraft.block.Block; import net.minecraft.item.ItemStack; +import com.google.common.collect.Lists; + public class CarvingUtils { /** @@ -30,56 +35,141 @@ public class CarvingUtils { return new ItemStack(variation.getBlock(), 1, variation.getItemMeta()); } - private static Field _chisel; - private static boolean registryErrored = false; - private static final String CARVING_CLASS = "com.cricketcraft.chisel.carving.Carving"; - - private static Class _carvableHelper; - private static boolean helperErrored = false; - private static final String CARVABLE_HELPER_CLASS = "com.cricketcraft.carving.CarvableHelper"; + public static ICarvingRegistry chisel; /** * @return The instance of the chisel carving registry from the chisel mod. *

- * If chisel is not installed or some other error occurs this will return null. + * If chisel is not installed this will return null. */ public static ICarvingRegistry getChiselRegistry() { - if (registryErrored) { - return null; - } - - try { - if (_chisel == null) { - _chisel = Class.forName(CARVING_CLASS).getDeclaredField("chisel"); - } - return (ICarvingRegistry) _chisel.get(null); - } catch (Exception e) { - e.printStackTrace(); - registryErrored = true; - return getChiselRegistry(); - } + return chisel; } /** - * @return An instance of an {@link ICarvableHelper}. - *

- * If chisel is not installed or some other error occurs this will return null. + * Creates a standard {@link ICarvingVariation} for the given data. Use this if you do not need any custom behavior in your own variation. + * + * @param block + * The block of the variation + * @param metadata + * The metadata of both the block and item + * @param order + * The sorting order. + * @return A standard {@link ICarvingVariation} instance. */ - @SuppressWarnings("unchecked") - public static ICarvableHelper getCarvableHelperInstance() { - if (helperErrored) { - return null; + public static ICarvingVariation getDefaultVariationFor(Block block, int metadata, int order) { + return new SimpleCarvingVariation(block, metadata, order); + } + + /** + * Creates a standard {@link ICarvingGroup} for the given name. Use this if you do not need any custom behavior in your own group. + * + * @param name + * The name of the group. + * @return A standard {@link ICarvingGroup} instance. + */ + public static ICarvingGroup getDefaultGroupFor(String name) { + return new SimpleCarvingGroup(name); + } + + public static class SimpleCarvingVariation implements ICarvingVariation { + + private int order; + private Block block; + private int meta; + private int damage; + + public SimpleCarvingVariation(Block block, int metadata, int order) { + this.order = order; + this.block = block; + this.meta = metadata; + this.damage = metadata; } - try { - if (_carvableHelper == null) { - _carvableHelper = (Class) Class.forName(CARVABLE_HELPER_CLASS); - } - return _carvableHelper.newInstance(); - } catch (Exception e) { - e.printStackTrace(); - helperErrored = true; - return getCarvableHelperInstance(); + @Override + public Block getBlock() { + return block; + } + + @Override + public int getBlockMeta() { + return meta; + } + + @Override + public int getItemMeta() { + return damage; + } + + @Override + public int getOrder() { + return order; } } + + public static class SimpleCarvingGroup implements ICarvingGroup { + + private String name; + private String sound; + private String oreName; + + private List variations = Lists.newArrayList(); + + public SimpleCarvingGroup(String name) { + this.name = name; + } + + public List getVariations() { + return Lists.newArrayList(variations); + } + + @Override + public void addVariation(ICarvingVariation variation) { + variations.add(variation); + Collections.sort(variations, new Comparator() { + + @Override + public int compare(ICarvingVariation o1, ICarvingVariation o2) { + return CarvingUtils.compare(o1, o2); + } + }); + } + + @Override + public boolean removeVariation(ICarvingVariation variation) { + ICarvingVariation toRemove = null; + for (ICarvingVariation v : variations) { + if (v.getBlock() == variation.getBlock() && v.getBlockMeta() == variation.getBlockMeta()) { + toRemove = v; + } + } + return toRemove == null ? false : variations.remove(toRemove); + } + + @Override + public String getName() { + return name; + } + + @Override + public String getSound() { + return sound; + } + + @Override + public void setSound(String sound) { + this.sound = sound; + } + + @Override + public String getOreName() { + return oreName; + } + + @Override + public void setOreName(String oreName) { + this.oreName = oreName; + } + } + } diff --git a/src/main/java/com/cricketcraft/chisel/api/carving/VariationInfoBase.java b/src/main/java/com/cricketcraft/chisel/api/carving/VariationInfoBase.java index 7bd1aa86..2800001b 100644 --- a/src/main/java/com/cricketcraft/chisel/api/carving/VariationInfoBase.java +++ b/src/main/java/com/cricketcraft/chisel/api/carving/VariationInfoBase.java @@ -1,22 +1,23 @@ package com.cricketcraft.chisel.api.carving; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.util.StatCollector; + import com.cricketcraft.chisel.api.rendering.ISubmapManager; import com.cricketcraft.chisel.api.rendering.TextureType; -import net.minecraft.util.StatCollector; - public class VariationInfoBase implements IVariationInfo { private ICarvingVariation variation; private String unlocDesc; - private ISubmapManager manager; + private ISubmapManager manager; private TextureType type; - - public VariationInfoBase(ICarvingVariation variation, String unlocDesc, ISubmapManager manager) { + + public VariationInfoBase(ICarvingVariation variation, String unlocDesc, ISubmapManager manager) { this(variation, unlocDesc, manager, TextureType.CUSTOM); } - - public VariationInfoBase(ICarvingVariation variation, String unlocDesc, ISubmapManager manager, TextureType type) { + + public VariationInfoBase(ICarvingVariation variation, String unlocDesc, ISubmapManager manager, TextureType type) { this.variation = variation; this.unlocDesc = unlocDesc; this.manager = manager; @@ -34,7 +35,7 @@ public class VariationInfoBase implements IVariationInfo { } @Override - public ISubmapManager getSubmapManager() { + public ISubmapManager getSubmapManager() { return manager; } diff --git a/src/main/java/com/cricketcraft/chisel/api/rendering/TextureType.java b/src/main/java/com/cricketcraft/chisel/api/rendering/TextureType.java index 99fe0663..4988e5b3 100644 --- a/src/main/java/com/cricketcraft/chisel/api/rendering/TextureType.java +++ b/src/main/java/com/cricketcraft/chisel/api/rendering/TextureType.java @@ -15,8 +15,8 @@ import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Triple; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.ICarvingVariation; -import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.client.render.RenderBlocksCTM; import com.cricketcraft.chisel.client.render.RenderBlocksColumn; diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvable.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvable.java index b46dadc0..e40073f7 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvable.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvable.java @@ -13,8 +13,8 @@ import net.minecraft.world.IBlockAccess; import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.api.ICarvable; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.init.ChiselTabs; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableAntiBlock.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableAntiBlock.java index e4f1eb45..f7e96664 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableAntiBlock.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableAntiBlock.java @@ -6,7 +6,7 @@ import net.minecraft.world.IBlockAccess; import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.api.ICarvable; -import com.cricketcraft.chisel.carving.CarvableHelper; +import com.cricketcraft.chisel.api.carving.CarvableHelper; public class BlockCarvableAntiBlock extends BlockCarvableColor implements ICarvable { diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableGlass.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableGlass.java index 62fff018..10c14ec5 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableGlass.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableGlass.java @@ -13,8 +13,8 @@ import net.minecraft.world.IBlockAccess; import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.api.ICarvable; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.init.ChiselTabs; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIce.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIce.java index b47bdc35..d86bcea4 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIce.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIce.java @@ -15,8 +15,8 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import com.cricketcraft.chisel.api.ICarvable; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.carving.CarvableHelper; public class BlockCarvableIce extends BlockIce implements ICarvable { diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIceStairs.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIceStairs.java index 4b3ba12e..4f954edf 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIceStairs.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableIceStairs.java @@ -6,7 +6,7 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; -import com.cricketcraft.chisel.carving.CarvableHelper; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.init.ChiselBlocks; public class BlockCarvableIceStairs extends BlockCarvableStairs { diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIce.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIce.java index 9d86454d..f65caf59 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIce.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIce.java @@ -16,8 +16,8 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import com.cricketcraft.chisel.api.ICarvable; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.carving.CarvableHelper; public class BlockCarvablePackedIce extends Block implements ICarvable { diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIceStairs.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIceStairs.java index dcca7406..2cd199dd 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIceStairs.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePackedIceStairs.java @@ -6,7 +6,7 @@ import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.world.World; -import com.cricketcraft.chisel.carving.CarvableHelper; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.init.ChiselBlocks; public class BlockCarvablePackedIceStairs extends BlockCarvableStairs { diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePane.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePane.java index 44b8fe6f..57685247 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePane.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePane.java @@ -12,8 +12,8 @@ import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import com.cricketcraft.chisel.api.ICarvable; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.client.render.RendererCTMPane; import com.cricketcraft.chisel.init.ChiselTabs; diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePumpkin.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePumpkin.java index 24b5641a..14d21ff1 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePumpkin.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvablePumpkin.java @@ -12,8 +12,8 @@ import net.minecraft.world.World; import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.api.ICarvable; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.entity.EntityChiselSnowman; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableSand.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableSand.java index 839069de..8d0a2aa5 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableSand.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableSand.java @@ -13,8 +13,8 @@ import net.minecraft.world.IBlockAccess; import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.api.ICarvable; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.init.ChiselTabs; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableStairs.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableStairs.java index 5f02a7ba..891ce02c 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableStairs.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableStairs.java @@ -15,8 +15,8 @@ import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; import com.cricketcraft.chisel.api.ICarvable; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.client.render.RendererStairs; public class BlockCarvableStairs extends BlockStairs implements ICarvable { diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableTorch.java b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableTorch.java index f4e78143..29a3e3d5 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockCarvableTorch.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockCarvableTorch.java @@ -10,8 +10,8 @@ import net.minecraft.world.World; import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.api.ICarvable; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.init.ChiselTabs; import cpw.mods.fml.relauncher.Side; diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockMarbleCarpet.java b/src/main/java/com/cricketcraft/chisel/block/BlockMarbleCarpet.java index 4f1d127d..4a5629a9 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockMarbleCarpet.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockMarbleCarpet.java @@ -13,8 +13,8 @@ import net.minecraft.world.IBlockAccess; import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.api.ICarvable; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.carving.CarvableHelper; public class BlockMarbleCarpet extends BlockCarpet implements ICarvable { diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockMarbleWall.java b/src/main/java/com/cricketcraft/chisel/block/BlockMarbleWall.java index c9d71dbc..881d82ab 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockMarbleWall.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockMarbleWall.java @@ -9,7 +9,7 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.util.IIcon; -import com.cricketcraft.chisel.carving.CarvableHelper; +import com.cricketcraft.chisel.api.carving.CarvableHelper; public class BlockMarbleWall extends BlockWall { diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockMultiLayer.java b/src/main/java/com/cricketcraft/chisel/block/BlockMultiLayer.java index 54a0248b..1e60e6be 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockMultiLayer.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockMultiLayer.java @@ -12,8 +12,8 @@ import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import com.cricketcraft.chisel.api.ICarvable; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.carving.CarvableHelper; public class BlockMultiLayer extends BlockMultiLayerBase implements ICarvable { diff --git a/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java b/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java index 94439408..cb6a3ec0 100644 --- a/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java +++ b/src/main/java/com/cricketcraft/chisel/block/BlockPresent.java @@ -21,9 +21,9 @@ import net.minecraftforge.common.util.ForgeDirection; import com.cricketcraft.chisel.Chisel; import com.cricketcraft.chisel.api.ICarvable; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; import com.cricketcraft.chisel.block.tileentity.TileEntityPresent; -import com.cricketcraft.chisel.carving.CarvableHelper; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; diff --git a/src/main/java/com/cricketcraft/chisel/block/CarvableStairsMaker.java b/src/main/java/com/cricketcraft/chisel/block/CarvableStairsMaker.java index 5b417d11..dea80570 100644 --- a/src/main/java/com/cricketcraft/chisel/block/CarvableStairsMaker.java +++ b/src/main/java/com/cricketcraft/chisel/block/CarvableStairsMaker.java @@ -3,8 +3,8 @@ package com.cricketcraft.chisel.block; import net.minecraft.block.Block; import net.minecraft.item.ItemStack; +import com.cricketcraft.chisel.api.carving.CarvableHelper; import com.cricketcraft.chisel.api.carving.IVariationInfo; -import com.cricketcraft.chisel.carving.CarvableHelper; import com.cricketcraft.chisel.item.ItemCarvable; import cpw.mods.fml.common.registry.GameRegistry; diff --git a/src/main/java/com/cricketcraft/chisel/block/IStairsCreator.java b/src/main/java/com/cricketcraft/chisel/block/IStairsCreator.java index c3d91703..8d5d1641 100644 --- a/src/main/java/com/cricketcraft/chisel/block/IStairsCreator.java +++ b/src/main/java/com/cricketcraft/chisel/block/IStairsCreator.java @@ -2,7 +2,7 @@ package com.cricketcraft.chisel.block; import net.minecraft.block.Block; -import com.cricketcraft.chisel.carving.CarvableHelper; +import com.cricketcraft.chisel.api.carving.CarvableHelper; public interface IStairsCreator { diff --git a/src/main/java/com/cricketcraft/chisel/carving/Carving.java b/src/main/java/com/cricketcraft/chisel/carving/Carving.java index 03d889cb..0eaa2e5a 100644 --- a/src/main/java/com/cricketcraft/chisel/carving/Carving.java +++ b/src/main/java/com/cricketcraft/chisel/carving/Carving.java @@ -11,6 +11,7 @@ import net.minecraft.item.ItemStack; import net.minecraftforge.oredict.OreDictionary; import com.cricketcraft.chisel.Chisel; +import com.cricketcraft.chisel.api.carving.CarvingUtils; import com.cricketcraft.chisel.api.carving.ICarvingGroup; import com.cricketcraft.chisel.api.carving.ICarvingRegistry; import com.cricketcraft.chisel.api.carving.ICarvingVariation; @@ -21,6 +22,10 @@ public class Carving implements ICarvingRegistry { public static final ICarvingRegistry chisel = new Carving(); public static final Carving needle = new Carving(); + + static { + CarvingUtils.chisel = chisel; + } private Carving() { } @@ -152,7 +157,7 @@ public class Carving implements ICarvingRegistry { throw new NullPointerException("Cannot add variation in group " + groupName + " for null block."); } - ICarvingVariation variation = new CarvingVariation(block, metadata, order); + ICarvingVariation variation = CarvingUtils.getDefaultVariationFor(block, metadata, order); addVariation(groupName, variation); } @@ -167,7 +172,7 @@ public class Carving implements ICarvingRegistry { ICarvingGroup group = groups.getGroupByName(groupName); if (group == null) { - group = new CarvingGroup(groupName); + group = CarvingUtils.getDefaultGroupFor(groupName); addGroup(group); } diff --git a/src/main/java/com/cricketcraft/chisel/carving/CarvingGroup.java b/src/main/java/com/cricketcraft/chisel/carving/CarvingGroup.java deleted file mode 100644 index 6a1286d5..00000000 --- a/src/main/java/com/cricketcraft/chisel/carving/CarvingGroup.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.cricketcraft.chisel.carving; - -import java.util.Collections; -import java.util.Comparator; -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.Lists; - -public class CarvingGroup implements ICarvingGroup { - - private String name; - private String sound; - private String oreName; - - private List variations = Lists.newArrayList(); - - public CarvingGroup(String name) { - this.name = name; - } - - public List getVariations() { - return Lists.newArrayList(variations); - } - - @Override - public void addVariation(ICarvingVariation variation) { - variations.add(variation); - Collections.sort(variations, new Comparator() { - - @Override - public int compare(ICarvingVariation o1, ICarvingVariation o2) { - return CarvingUtils.compare(o1, o2); - } - }); - } - - @Override - public boolean removeVariation(ICarvingVariation variation) { - ICarvingVariation toRemove = null; - for (ICarvingVariation v : variations) { - if (v.getBlock() == variation.getBlock() && v.getBlockMeta() == variation.getBlockMeta()) { - toRemove = v; - } - } - return toRemove == null ? false : variations.remove(toRemove); - } - - @Override - public String getName() { - return name; - } - - @Override - public String getSound() { - return sound; - } - - @Override - public void setSound(String sound) { - this.sound = sound; - } - - @Override - public String getOreName() { - return oreName; - } - - @Override - public void setOreName(String oreName) { - this.oreName = oreName; - } -} diff --git a/src/main/java/com/cricketcraft/chisel/carving/CarvingVariation.java b/src/main/java/com/cricketcraft/chisel/carving/CarvingVariation.java deleted file mode 100644 index f3e8d3dd..00000000 --- a/src/main/java/com/cricketcraft/chisel/carving/CarvingVariation.java +++ /dev/null @@ -1,40 +0,0 @@ -package com.cricketcraft.chisel.carving; - -import net.minecraft.block.Block; - -import com.cricketcraft.chisel.api.carving.ICarvingVariation; - -public class CarvingVariation implements ICarvingVariation { - - private int order; - private Block block; - private int meta; - private int damage; - - public CarvingVariation(Block block, int metadata, int ord) { - this.order = ord; - this.block = block; - this.meta = metadata; - this.damage = metadata; - } - - @Override - public Block getBlock() { - return block; - } - - @Override - public int getBlockMeta() { - return meta; - } - - @Override - public int getItemMeta() { - return damage; - } - - @Override - public int getOrder() { - return order; - } -} diff --git a/src/main/java/com/cricketcraft/chisel/utils/General.java b/src/main/java/com/cricketcraft/chisel/utils/General.java index b2a5eab8..97938ae1 100644 --- a/src/main/java/com/cricketcraft/chisel/utils/General.java +++ b/src/main/java/com/cricketcraft/chisel/utils/General.java @@ -16,10 +16,10 @@ import net.minecraft.util.Vec3; import net.minecraft.world.World; import com.cricketcraft.chisel.api.IAdvancedChisel; +import com.cricketcraft.chisel.api.carving.CarvingUtils; import com.cricketcraft.chisel.api.carving.ICarvingVariation; import com.cricketcraft.chisel.api.carving.IChiselMode; import com.cricketcraft.chisel.carving.Carving; -import com.cricketcraft.chisel.carving.CarvingVariation; import com.cricketcraft.chisel.item.chisel.ChiselMode; public class General { @@ -143,9 +143,9 @@ public class General { initTag(chisel); chisel.stackTagCompound.setString(MODE_KEY, mode.name()); } - + public static ICarvingVariation getVariation(ItemStack stack) { ICarvingVariation v = Carving.chisel.getVariation(Block.getBlockFromItem(stack.getItem()), stack.getItemDamage()); - return v == null ? new CarvingVariation(Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 99) : v; + return v == null ? CarvingUtils.getDefaultVariationFor(Block.getBlockFromItem(stack.getItem()), stack.getItemDamage(), 99) : v; } } diff --git a/src/main/java/com/cricketcraft/chisel/utils/GeneralClient.java b/src/main/java/com/cricketcraft/chisel/utils/GeneralClient.java index 1243d993..4a1354f6 100644 --- a/src/main/java/com/cricketcraft/chisel/utils/GeneralClient.java +++ b/src/main/java/com/cricketcraft/chisel/utils/GeneralClient.java @@ -4,8 +4,6 @@ import java.util.HashMap; import java.util.Random; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.texture.TextureMap; -import net.minecraft.util.IIcon; import net.minecraft.util.ResourceLocation; import net.minecraft.world.World; @@ -19,10 +17,6 @@ public class GeneralClient { Minecraft.getMinecraft().theWorld.playSound(x + 0.5, y + 0.5, z + 0.5, sound, 0.3f + 0.7f * rand.nextFloat(), 0.6f + 0.4f * rand.nextFloat(), true); } - public static IIcon getMissingIcon() { - return ((TextureMap) Minecraft.getMinecraft().getTextureManager().getTexture(TextureMap.locationBlocksTexture)).getAtlasSprite("missingno"); - } - static HashMap resources = new HashMap(); public static void bind(String textureName) {