mirror of
https://github.com/GTNewHorizons/Chisel.git
synced 2026-11-11 15:57:31 +00:00
Merge branch 'dev' of https://github.com/TheCricket/Chisel-2.git into dev
This commit is contained in:
commit
685b6fd2d1
20 files changed
+531
-192
No files matched your search
@@ -43,8 +43,8 @@ import com.cricketcraft.chisel.block.BlockLavastone;
|
||||
import com.cricketcraft.chisel.block.BlockLeaf;
|
||||
import com.cricketcraft.chisel.block.BlockMarbleBookshelf;
|
||||
import com.cricketcraft.chisel.block.BlockMarbleCarpet;
|
||||
import com.cricketcraft.chisel.block.BlockMarbleStairsMaker;
|
||||
import com.cricketcraft.chisel.block.BlockMarbleStairsMakerCreator;
|
||||
import com.cricketcraft.chisel.block.CarvableStairsMaker;
|
||||
import com.cricketcraft.chisel.block.IStairsCreator;
|
||||
import com.cricketcraft.chisel.block.BlockMarbleTexturedOre;
|
||||
import com.cricketcraft.chisel.block.BlockPresent;
|
||||
import com.cricketcraft.chisel.block.BlockRoadLine;
|
||||
@@ -134,14 +134,11 @@ public enum Features {
|
||||
antiBlock.carverHelper.setChiselBlockName("Anti Block");
|
||||
|
||||
for (int i = 0; i < 16; i++) {
|
||||
final String blockName = "antiBlock" + ItemDye.field_150921_b[i];
|
||||
String oreName = "antiBlock" + ItemDye.field_150921_b[i];
|
||||
|
||||
antiBlock.carverHelper.addVariation("tile.antiBlock." + ItemDye.field_150921_b[i] + ".desc", i, "antiblock/" + ItemDye.field_150921_b[i] + "-antiBlock");
|
||||
Carving.chisel.registerOre(blockName, oreName);
|
||||
}
|
||||
|
||||
antiBlock.carverHelper.register(antiBlock, "antiBlock");
|
||||
Carving.chisel.registerOre("antiBlock", "antiBlock");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -317,8 +314,7 @@ public enum Features {
|
||||
carpet_block.carverHelper.addVariation("tile.carpet_block.15.desc", 15, "carpet/black");
|
||||
carpet_block.carverHelper.forbidChiseling = true;
|
||||
carpet_block.carverHelper.register(carpet_block, "carpet_block");
|
||||
OreDictionary.registerOre("carpet", carpet_block);
|
||||
Carving.chisel.registerOre("carpet_block", "carpet");
|
||||
OreDictionary.registerOre("blockCarpet", carpet_block);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -361,12 +357,13 @@ public enum Features {
|
||||
for (int i = 0; i < 16; i++) {
|
||||
String group = "carpet." + i;
|
||||
|
||||
Carving.needle.addVariation(group, Blocks.carpet, i, 0);
|
||||
Carving.needle.addVariation(group, carpet, i, 2);
|
||||
Carving.needle.addVariation(group, carpet_block, i, 1);
|
||||
// TODO needle stuff
|
||||
// Carving.needle.addVariation(group, Blocks.carpet, i, 0);
|
||||
// Carving.needle.addVariation(group, carpet, i, 2);
|
||||
// Carving.needle.addVariation(group, carpet_block, i, 1);
|
||||
}
|
||||
|
||||
Carving.chisel.registerOre("carpet", "carpet");
|
||||
OreDictionary.registerOre("carpet", carpet);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1045,7 +1042,6 @@ public enum Features {
|
||||
ice_pillar.carverHelper.addVariation("tile.icePillar.5.desc", 5, "icepillar/carved");
|
||||
ice_pillar.carverHelper.addVariation("tile.icePillar.6.desc", 6, "icepillar/ornamental");
|
||||
ice_pillar.carverHelper.register(ice_pillar, "ice_pillar");
|
||||
Carving.chisel.setGroupClass("ice_pillar", "ice");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1058,7 +1054,7 @@ public enum Features {
|
||||
|
||||
@Override
|
||||
void addBlocks() {
|
||||
BlockMarbleStairsMaker makerIceStairs = new BlockMarbleStairsMaker(Blocks.ice);
|
||||
CarvableStairsMaker makerIceStairs = new CarvableStairsMaker(Blocks.ice);
|
||||
makerIceStairs.carverHelper.setChiselBlockName("Ice Stairs");
|
||||
makerIceStairs.carverHelper.addVariation("tile.iceStairs.0.desc", 0, Blocks.ice);
|
||||
makerIceStairs.carverHelper.addVariation("tile.iceStairs.1.desc", 1, "ice/a1-ice-light");
|
||||
@@ -1076,14 +1072,14 @@ public enum Features {
|
||||
makerIceStairs.carverHelper.addVariation("tile.iceStairs.13.desc", 13, "ice/zelda");
|
||||
makerIceStairs.carverHelper.addVariation("tile.iceStairs.14.desc", 14, "ice/bismuth");
|
||||
makerIceStairs.carverHelper.addVariation("tile.iceStairs.15.desc", 15, "ice/poison");
|
||||
makerIceStairs.create(new BlockMarbleStairsMakerCreator() {
|
||||
makerIceStairs.create(new IStairsCreator() {
|
||||
|
||||
@Override
|
||||
public BlockCarvableStairs create(Block block, int meta, CarvableHelper helper) {
|
||||
return new BlockCarvableIceStairs(block, meta, helper);
|
||||
}
|
||||
}, "ice_stairs", ChiselBlocks.iceStairs);
|
||||
Carving.chisel.registerOre("iceStairs", "iceStairs");
|
||||
Carving.chisel.registerOre("ice_stairs", "iceStairs");
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1311,7 +1307,7 @@ public enum Features {
|
||||
registerSlabTop(limestone_slab, limestone_slab.top);
|
||||
Carving.chisel.registerOre("limestone_slab", "limestone_slab");
|
||||
|
||||
BlockMarbleStairsMaker makerLimestoneStairs = new BlockMarbleStairsMaker(limestone);
|
||||
CarvableStairsMaker makerLimestoneStairs = new CarvableStairsMaker(limestone);
|
||||
makerLimestoneStairs.carverHelper.setChiselBlockName("Limestone Stairs");
|
||||
makerLimestoneStairs.carverHelper.addVariation("tile.limestoneStairs.0.desc", 0, "limestone");
|
||||
makerLimestoneStairs.carverHelper.addVariation("tile.limestoneStairs.1.desc", 1, "limestone/terrain-cobbsmalltilelight");
|
||||
@@ -1389,7 +1385,7 @@ public enum Features {
|
||||
registerSlabTop(marble_slab, marble_slab.top);
|
||||
Carving.chisel.registerOre("marble_slab", "marble_slab");
|
||||
|
||||
BlockMarbleStairsMaker makerMarbleStairs = new BlockMarbleStairsMaker(marble);
|
||||
CarvableStairsMaker makerMarbleStairs = new CarvableStairsMaker(marble);
|
||||
makerMarbleStairs.carverHelper.setChiselBlockName("Marble Stairs");
|
||||
makerMarbleStairs.carverHelper.addVariation("tile.marbleStairs.0.desc", 0, "marble");
|
||||
makerMarbleStairs.carverHelper.addVariation("tile.marbleStairs.6.desc", 1, "marbleslab/a1-stoneornamental-marblebrick");
|
||||
@@ -1465,7 +1461,6 @@ public enum Features {
|
||||
marble_pillar.carverHelper.addVariation("tile.marblePillar.15.desc", 15, "marblepillar/ornamental");
|
||||
}
|
||||
marble_pillar.carverHelper.register(marble_pillar, "marble_pillar");
|
||||
Carving.chisel.setGroupClass("marble_pillar", "marble");
|
||||
|
||||
BlockCarvableSlab marble_pillar_slab = (BlockCarvableSlab) new BlockCarvableSlab(marble_pillar).setCreativeTab(ChiselTabs.tabStoneChiselBlocks).setHardness(2.0F).setResistance(10F)
|
||||
.setStepSound(Block.soundTypeStone);
|
||||
@@ -1639,7 +1634,6 @@ public enum Features {
|
||||
packedice_pillar.carverHelper.addVariation("tile.packedicePillar.5.desc", 5, "icepillar/carved");
|
||||
packedice_pillar.carverHelper.addVariation("tile.packedicePillar.6.desc", 6, "icepillar/ornamental");
|
||||
packedice_pillar.carverHelper.register(packedice_pillar, "packedice_pillar");
|
||||
Carving.chisel.setGroupClass("packedice_pillar", "packedice");
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1647,7 +1641,7 @@ public enum Features {
|
||||
|
||||
@Override
|
||||
void addBlocks() {
|
||||
BlockMarbleStairsMaker makerPackedIceStairs = new BlockMarbleStairsMaker(Blocks.packed_ice);
|
||||
CarvableStairsMaker makerPackedIceStairs = new CarvableStairsMaker(Blocks.packed_ice);
|
||||
makerPackedIceStairs.carverHelper.setChiselBlockName("Packed Ice Stairs");
|
||||
makerPackedIceStairs.carverHelper.addVariation("tile.packediceStairs.0.desc", 0, Blocks.packed_ice);
|
||||
makerPackedIceStairs.carverHelper.addVariation("tile.packediceStairs.1.desc", 1, "ice/a1-ice-light");
|
||||
@@ -1665,14 +1659,14 @@ public enum Features {
|
||||
makerPackedIceStairs.carverHelper.addVariation("tile.packediceStairs.13.desc", 13, "ice/zelda");
|
||||
makerPackedIceStairs.carverHelper.addVariation("tile.packediceStairs.14.desc", 14, "ice/bismuth");
|
||||
makerPackedIceStairs.carverHelper.addVariation("tile.packediceStairs.15.desc", 15, "ice/poison");
|
||||
makerPackedIceStairs.create(new BlockMarbleStairsMakerCreator() {
|
||||
makerPackedIceStairs.create(new IStairsCreator() {
|
||||
|
||||
@Override
|
||||
public BlockCarvableStairs create(Block block, int meta, CarvableHelper helper) {
|
||||
return new BlockCarvablePackedIceStairs(block, meta, helper);
|
||||
}
|
||||
}, "packedice_stairs", ChiselBlocks.packediceStairs);
|
||||
Carving.chisel.registerOre("packedIceStairs", "packedIceStairs");
|
||||
Carving.chisel.registerOre("packedice_stairs", "packedIceStairs");
|
||||
}
|
||||
},
|
||||
|
||||
@@ -1711,7 +1705,7 @@ public enum Features {
|
||||
GameRegistry.registerBlock(present[x], "chest" + x);
|
||||
Carving.chisel.addVariation("present", present[x], 0, (x + 1));
|
||||
}
|
||||
Carving.chisel.registerOre("chest", "chest");
|
||||
Carving.chisel.registerOre("present", "chest");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1888,8 +1882,8 @@ public enum Features {
|
||||
road_line.carverHelper.addVariation("tile.roadLine.1.desc", 1, "line-marking/double-white-center");
|
||||
road_line.carverHelper.addVariation("tile.roadLine.2.desc", 2, "line-marking/yellow-center");
|
||||
road_line.carverHelper.addVariation("tile.roadLine.3.desc", 3, "line-marking/double-yellow-center");
|
||||
GameRegistry.registerBlock(road_line, ItemCarvable.class, "road_line");
|
||||
Carving.chisel.registerOre("roadLine", "roadLine");
|
||||
road_line.carverHelper.register(road_line, "road_line");
|
||||
Carving.chisel.registerOre("road_line", "roadLine");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1995,7 +1989,7 @@ public enum Features {
|
||||
// 13), "Sandstone snake block body");
|
||||
Carving.chisel.addVariation("sandstone", sand_snakestone, 1, 16);
|
||||
Carving.chisel.addVariation("sandstone", sand_snakestone, 13, 17);
|
||||
Carving.chisel.registerOre("sandSnakestone", "sandSnakestone");
|
||||
// Carving.chisel.registerOre("sandstone", "sandSnakestone");
|
||||
}
|
||||
},
|
||||
|
||||
@@ -2011,7 +2005,7 @@ public enum Features {
|
||||
// "Stone snake block body");
|
||||
Carving.chisel.addVariation("stonebrick", stone_snakestone, 1, 16);
|
||||
Carving.chisel.addVariation("stonebrick", stone_snakestone, 13, 17);
|
||||
Carving.chisel.registerOre("snakestoneStone", "snakestoneStone");
|
||||
// Carving.chisel.registerOre("snakestoneStone", "snakestoneStone");
|
||||
}
|
||||
},
|
||||
|
||||
@@ -2024,7 +2018,7 @@ public enum Features {
|
||||
GameRegistry.registerBlock(obsidian_snakestone, ItemCarvable.class, "obsidian_snakestone");
|
||||
Carving.chisel.addVariation("obsidian", obsidian_snakestone, 1, 16);
|
||||
Carving.chisel.addVariation("obsidian", obsidian_snakestone, 13, 17);
|
||||
Carving.chisel.registerOre("obsidianSnakestone", "obsidianSnakestone");
|
||||
// Carving.chisel.registerOre("obsidianSnakestone", "obsidianSnakestone");
|
||||
}
|
||||
},
|
||||
|
||||
@@ -2228,8 +2222,8 @@ public enum Features {
|
||||
Carving.chisel.addVariation("thaumium", GameRegistry.findBlock("Thaumcraft", "blockCosmeticSolid"), 4, 0);
|
||||
thaumium.carverHelper.addVariation("tile.thaumium.0.desc", 0, "thaumium/ornate");
|
||||
thaumium.carverHelper.addVariation("tile.thaumium.1.desc", 1, "thaumium/totem");
|
||||
thaumium.carverHelper.addVariation("tile.thaumium.2.desc", 2, "thaumium/purplerunes");
|
||||
thaumium.carverHelper.addVariation("tile.thaumium.3.desc", 3, "thaumium/runes");
|
||||
thaumium.carverHelper.addVariation("tile.thaumium.2.desc", 2, "thaumium/thaumiumBigBricks");
|
||||
thaumium.carverHelper.addVariation("tile.thaumium.3.desc", 3, "thaumium/small");
|
||||
thaumium.carverHelper.register(thaumium, "thaumium");
|
||||
Carving.chisel.registerOre("thaumium", "thaumium");
|
||||
}
|
||||
@@ -2414,7 +2408,7 @@ public enum Features {
|
||||
for (int i = 0; i < plank_names.length; i++) {
|
||||
String n = plank_names[i];
|
||||
String u = plank_ucnames[i];
|
||||
final String orename = n.replace('-', '_') + "_planks";
|
||||
final String name = n.replace('-', '_') + "_planks";
|
||||
|
||||
planks[i] = (BlockCarvable) (new BlockCarvable(Material.wood)).setCreativeTab(ChiselTabs.tabWoodChiselBlocks).setHardness(2.0F).setResistance(5.0F).setStepSound(Block.soundTypeWood);
|
||||
planks[i].carverHelper.setChiselBlockName(u + " Wood Planks");
|
||||
@@ -2433,11 +2427,11 @@ public enum Features {
|
||||
planks[i].carverHelper.addVariation(u + " wood scaffold", 12, "planks-" + n + "/crateex");
|
||||
planks[i].carverHelper.addVariation(u + " wood planks in disarray", 14, "planks-" + n + "/chaotic-hor");
|
||||
planks[i].carverHelper.addVariation("Vertical " + n + " wood planks in disarray", 15, "planks-" + n + "/chaotic");
|
||||
planks[i].carverHelper.register(planks[i], orename);
|
||||
Carving.chisel.addVariation(orename, Blocks.planks, i, 0);
|
||||
planks[i].carverHelper.register(planks[i], name);
|
||||
Carving.chisel.addVariation(name, Blocks.planks, i, 0);
|
||||
planks[i].setHarvestLevel("axe", 0);
|
||||
Carving.chisel.registerOre("wood", "wood");
|
||||
Carving.chisel.setVariationSound(orename, Chisel.MOD_ID + ":chisel.wood");
|
||||
Carving.chisel.registerOre(name, "wood");
|
||||
Carving.chisel.setVariationSound(name, Chisel.MOD_ID + ":chisel.wood");
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -2569,7 +2563,7 @@ public enum Features {
|
||||
boolean needsMetaRecipes() {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
private static void registerSlabTop(Block bottom, Block top) {
|
||||
String name = Block.blockRegistry.getNameForObject(bottom);
|
||||
name = name.substring(name.indexOf(':') + 1) + "_top";
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.cricketcraft.chisel.api.carving;
|
||||
|
||||
public class CarvingUtils {
|
||||
|
||||
/**
|
||||
* The default implementation of {@link ICarvingVariation#compareTo(ICarvingVariation)}
|
||||
*
|
||||
* @param v1
|
||||
* The first {@link ICarvingVariation variation}. Usually 'this'.
|
||||
* @param v2
|
||||
* The second {@link ICarvingVariation variation}. Usually the parameter to the {@code comapreTo} method.
|
||||
* @return A positive integer if the first's order is greater, a negative integer if the second's is greater, and 0 if they are equal.
|
||||
*/
|
||||
public static int compare(ICarvingVariation v1, ICarvingVariation v2) {
|
||||
return v1.getOrder() - v2.getOrder();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
package com.cricketcraft.chisel.api.carving;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface ICarvingGroup {
|
||||
|
||||
/**
|
||||
* The name of this group. Used for internal identification.
|
||||
*
|
||||
* @return A string name for the group
|
||||
*/
|
||||
String getName();
|
||||
|
||||
/**
|
||||
* Can return null. If null, fallback sound will be used (the standard chisel sound).
|
||||
*
|
||||
* @return The string resource path of the sound to use for chiseling items in this group
|
||||
*/
|
||||
String getSound();
|
||||
|
||||
/**
|
||||
* Sets the sound of this group
|
||||
*
|
||||
* @param sound
|
||||
* A string resource path for the sound this group makes when chiseled
|
||||
*/
|
||||
void setSound(String sound);
|
||||
|
||||
/**
|
||||
* The oredict name to match to this group. All items with this oredict name will be assumed to be part of this group.
|
||||
*
|
||||
* @return An ore dictionary name
|
||||
*/
|
||||
String getOreName();
|
||||
|
||||
/**
|
||||
* Sets the oredict name for this group.
|
||||
*
|
||||
* @param oreName
|
||||
* The String oredict name to be associated with this group.
|
||||
*/
|
||||
void setOreName(String oreName);
|
||||
|
||||
/**
|
||||
* Gets all carving variations associated with this group.
|
||||
*
|
||||
* @return A {@link List} of {@link ICarvingVariation}s
|
||||
*/
|
||||
List<ICarvingVariation> getVariations();
|
||||
|
||||
/**
|
||||
* Adds a variation to this group.
|
||||
*
|
||||
* @param variation
|
||||
* An {@link ICarvingVariation} to add to this group
|
||||
*/
|
||||
void addVariation(ICarvingVariation variation);
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.cricketcraft.chisel.api.carving;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
/**
|
||||
* Represents a variation of a chiselable block.
|
||||
* <p>
|
||||
* Do note that while this interface extends {@link Comparable}, a default implementation of {@link Comparable#compareTo(Object)} is provided in
|
||||
* {@link CarvingUtils#compare(ICarvingVariation, ICarvingVariation)}
|
||||
*/
|
||||
public interface ICarvingVariation extends Comparable<ICarvingVariation> {
|
||||
|
||||
Block getBlock();
|
||||
|
||||
int getBlockMeta();
|
||||
|
||||
int getItemMeta();
|
||||
|
||||
/**
|
||||
* Gets an {@link ItemStack} representing this variation.
|
||||
*
|
||||
* @return An {@link ItemStack} to represent this variation
|
||||
*/
|
||||
ItemStack getStack();
|
||||
|
||||
/**
|
||||
* The "order" of this variation. Represents its position in the list of variations.
|
||||
*
|
||||
* @return An integer to represent the position of this variation in the list of all variations in the group
|
||||
*/
|
||||
int getOrder();
|
||||
|
||||
}
|
||||
+5
-11
@@ -2,7 +2,6 @@ package com.cricketcraft.chisel.block;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.item.crafting.CraftingManager;
|
||||
|
||||
import com.cricketcraft.chisel.carving.CarvableHelper;
|
||||
import com.cricketcraft.chisel.carving.CarvableVariation;
|
||||
@@ -10,14 +9,14 @@ import com.cricketcraft.chisel.item.ItemCarvable;
|
||||
|
||||
import cpw.mods.fml.common.registry.GameRegistry;
|
||||
|
||||
public class BlockMarbleStairsMaker {
|
||||
public class CarvableStairsMaker {
|
||||
|
||||
public CarvableHelper carverHelper;
|
||||
// int idStart;
|
||||
Block blockBase;
|
||||
String blockName;
|
||||
|
||||
public BlockMarbleStairsMaker(Block base) {
|
||||
public CarvableStairsMaker(Block base) {
|
||||
carverHelper = new CarvableHelper();
|
||||
blockBase = base;
|
||||
}
|
||||
@@ -26,7 +25,7 @@ public class BlockMarbleStairsMaker {
|
||||
create(null, name, blocks);
|
||||
}
|
||||
|
||||
public void create(BlockMarbleStairsMakerCreator creator, String name, Block[] blocks) {
|
||||
public void create(IStairsCreator creator, String name, Block[] blocks) {
|
||||
for (int i = 0; i < blocks.length; i++) {
|
||||
String n = name + "." + i;
|
||||
blocks[i] = creator == null ? new BlockCarvableStairs(blockBase, i * 2, carverHelper) : creator.create(blockBase, i * 2, carverHelper);
|
||||
@@ -37,15 +36,10 @@ public class BlockMarbleStairsMaker {
|
||||
for (int meta = 0; meta < 2 && i * 2 + meta < carverHelper.variations.size(); meta++) {
|
||||
CarvableVariation variation = carverHelper.variations.get(i * 2 + meta);
|
||||
|
||||
for (int j = 0; j < 8; j++)
|
||||
carverHelper.registerVariation(name + ".orientation." + j, variation, blocks[i], j + meta * 8);
|
||||
carverHelper.registerVariation(name, variation, blocks[i], meta * 8);
|
||||
|
||||
CraftingManager.getInstance().addRecipe(new ItemStack(blocks[i], 4, meta * 8), new Object[] { "* ", "** ", "***", '*', new ItemStack(blockBase, 1, i * 2 + meta) });
|
||||
GameRegistry.addRecipe(new ItemStack(blocks[i], 4, meta * 8), "* ", "** ", "***", '*', new ItemStack(blockBase, 1, i * 2 + meta));
|
||||
}
|
||||
|
||||
CarvableHelper.chiselBlocks.add(blocks[i]);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -4,7 +4,7 @@ import net.minecraft.block.Block;
|
||||
|
||||
import com.cricketcraft.chisel.carving.CarvableHelper;
|
||||
|
||||
public interface BlockMarbleStairsMakerCreator {
|
||||
public interface IStairsCreator {
|
||||
|
||||
public BlockCarvableStairs create(Block block, int meta, CarvableHelper helper);
|
||||
}
|
||||
@@ -13,6 +13,7 @@ import net.minecraft.creativetab.CreativeTabs;
|
||||
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.block.BlockCarvableSlab;
|
||||
@@ -28,8 +29,6 @@ import cpw.mods.fml.common.registry.GameRegistry;
|
||||
|
||||
public class CarvableHelper {
|
||||
|
||||
public static final ArrayList<Block> chiselBlocks = new ArrayList<Block>();
|
||||
|
||||
public static final int NORMAL = 0;
|
||||
public static final int TOPSIDE = 1;
|
||||
public static final int TOPBOTSIDE = 2;
|
||||
@@ -270,7 +269,6 @@ public class CarvableHelper {
|
||||
void registerBlock(Block block, String name, Class<? extends ItemCarvable> cl) {
|
||||
block.setBlockName(name);
|
||||
GameRegistry.registerBlock(block, cl, name);
|
||||
chiselBlocks.add(block);
|
||||
}
|
||||
|
||||
public void register(Block block, String name, Class<? extends ItemCarvable> cl) {
|
||||
@@ -284,7 +282,6 @@ public class CarvableHelper {
|
||||
|
||||
if (!forbidChiseling) {
|
||||
Carving.chisel.addVariation(name + ".top", slab.top, variation.metadata, 0);
|
||||
Carving.chisel.setGroupClass(name + ".top", name);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -389,7 +386,10 @@ public class CarvableHelper {
|
||||
|
||||
public static Set<Block> getChiselBlockSet() {
|
||||
HashSet<Block> tools = new HashSet<Block>();
|
||||
tools.addAll(CarvableHelper.chiselBlocks);
|
||||
return tools;
|
||||
}
|
||||
|
||||
public void registerOre(String ore) {
|
||||
OreDictionary.registerOre(ore, variations.get(0).block);
|
||||
}
|
||||
}
|
||||
@@ -11,15 +11,18 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.oredict.OreDictionary;
|
||||
|
||||
import com.cricketcraft.chisel.Chisel;
|
||||
import com.cricketcraft.chisel.api.carving.ICarvingGroup;
|
||||
import com.cricketcraft.chisel.api.carving.ICarvingVariation;
|
||||
|
||||
public class Carving {
|
||||
|
||||
HashMap<String, CarvingGroup> carvingGroupsByName = new HashMap<String, CarvingGroup>();
|
||||
HashMap<String, CarvingGroup> carvingGroupsByOre = new HashMap<String, CarvingGroup>();
|
||||
HashMap<String, CarvingGroup> carvingGroupsByVariation = new HashMap<String, CarvingGroup>();
|
||||
GroupList groups = new GroupList();
|
||||
|
||||
public static Carving chisel = new Carving();
|
||||
public static Carving needle = new Carving();
|
||||
public static final Carving chisel = new Carving();
|
||||
public static final Carving needle = new Carving();
|
||||
|
||||
private Carving() {
|
||||
}
|
||||
|
||||
String key(Item item, int metadata) {
|
||||
return Item.itemRegistry.getNameForObject(item) + "|" + metadata;
|
||||
@@ -29,34 +32,20 @@ public class Carving {
|
||||
return Block.blockRegistry.getNameForObject(block) + "|" + metadata;
|
||||
}
|
||||
|
||||
public boolean isVariationOfSameClass(Block target, int metadata1, Block block2, int metadata2) {
|
||||
CarvingGroup group1 = carvingGroupsByVariation.get(key(target, metadata1));
|
||||
if (group1 == null)
|
||||
return false;
|
||||
|
||||
CarvingGroup group2 = carvingGroupsByVariation.get(key(block2, metadata2));
|
||||
if (group2 == null)
|
||||
return false;
|
||||
|
||||
return group1 == group2 || group1.className.equals(group2.className) && !group1.className.isEmpty();
|
||||
|
||||
}
|
||||
|
||||
public CarvingVariation[] getVariations(Block block, int metadata) {
|
||||
CarvingGroup group = getGroup(block, metadata);
|
||||
public List<ICarvingVariation> getVariations(Block block, int metadata) {
|
||||
ICarvingGroup group = getGroup(block, metadata);
|
||||
if (group == null)
|
||||
return null;
|
||||
|
||||
CarvingVariation[] res = group.variations.toArray(new CarvingVariation[group.variations.size()]);
|
||||
return res;
|
||||
return group.getVariations();
|
||||
}
|
||||
|
||||
public String getOre(Block block, int metadata) {
|
||||
CarvingGroup group = getGroup(block, metadata);
|
||||
ICarvingGroup group = getGroup(block, metadata);
|
||||
if (group == null)
|
||||
return null;
|
||||
|
||||
return group.oreName;
|
||||
return group.getOreName();
|
||||
}
|
||||
|
||||
public ArrayList<ItemStack> getItems(ItemStack chiseledItem) {
|
||||
@@ -64,26 +53,29 @@ public class Carving {
|
||||
|
||||
int damage = chiseledItem.getItemDamage();
|
||||
|
||||
CarvingGroup group = getGroup(Block.getBlockFromItem(chiseledItem.getItem()), damage);
|
||||
ICarvingGroup group = getGroup(Block.getBlockFromItem(chiseledItem.getItem()), damage);
|
||||
if (group == null)
|
||||
return items;
|
||||
|
||||
HashMap<String, Integer> mapping = new HashMap<String, Integer>();
|
||||
|
||||
if (group.variations != null) {
|
||||
for (CarvingVariation v : group.variations) {
|
||||
List<ICarvingVariation> variations = group.getVariations();
|
||||
|
||||
String key = Block.getIdFromBlock(v.block) + "|" + v.damage;
|
||||
if (!group.getVariations().isEmpty()) {
|
||||
for (ICarvingVariation v : variations) {
|
||||
|
||||
String key = Block.getIdFromBlock(v.getBlock()) + "|" + v.getItemMeta();
|
||||
if (mapping.containsKey(key))
|
||||
continue;
|
||||
mapping.put(key, 1);
|
||||
|
||||
items.add(new ItemStack(v.block, 1, v.damage));
|
||||
items.add(new ItemStack(v.getBlock(), 1, v.getItemMeta()));
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList<ItemStack> ores;
|
||||
if (group.oreName != null && ((ores = OreDictionary.getOres(group.oreName)) != null)) {
|
||||
String oreName = group.getOreName();
|
||||
if (oreName != null && ((ores = OreDictionary.getOres(oreName)) != null)) {
|
||||
for (ItemStack stack : ores) {
|
||||
|
||||
String key = Item.getIdFromItem(stack.getItem()) + "|" + stack.getItemDamage();
|
||||
@@ -98,71 +90,53 @@ public class Carving {
|
||||
return items;
|
||||
}
|
||||
|
||||
public CarvingGroup getGroup(Block block, int metadata) {
|
||||
// Check name first
|
||||
CarvingGroup res;
|
||||
int i = OreDictionary.getOreID(block.getUnlocalizedName());
|
||||
if (i < 1)
|
||||
return null;
|
||||
|
||||
// get All dictionary names for that block via Ids
|
||||
// the first one matching with a group is chosen
|
||||
int[] oreDictIds = OreDictionary.getOreIDs(new ItemStack(block, 1, metadata));
|
||||
for (int oreId : oreDictIds) {
|
||||
String oreDictName = OreDictionary.getOreName(oreId);
|
||||
if (carvingGroupsByOre.containsKey(oreDictName))
|
||||
return carvingGroupsByOre.get(oreDictName);
|
||||
public ICarvingGroup getGroup(Block block, int metadata) {
|
||||
int[] ids = OreDictionary.getOreIDs(new ItemStack(block, metadata));
|
||||
if (ids.length > 0) {
|
||||
for (int id : ids) {
|
||||
return groups.getGroupByOre(OreDictionary.getOreName(id));
|
||||
}
|
||||
}
|
||||
|
||||
if ((res = carvingGroupsByVariation.get(key(block, metadata))) != null)
|
||||
return res;
|
||||
|
||||
return null;
|
||||
return groups.getGroup(block, metadata);
|
||||
}
|
||||
|
||||
public CarvingGroup getGroup(String name) {
|
||||
CarvingGroup group = carvingGroupsByName.get(name);
|
||||
if (group == null) {
|
||||
group = new CarvingGroup(name);
|
||||
group.className = name;
|
||||
carvingGroupsByName.put(name, group);
|
||||
}
|
||||
|
||||
return group;
|
||||
public ICarvingGroup getGroup(String name) {
|
||||
return groups.getGroupByName(name);
|
||||
}
|
||||
|
||||
public CarvingVariation addVariation(String name, Block block, int metadata, int order) {
|
||||
CarvingGroup group = getGroup(name);
|
||||
|
||||
CarvingGroup blockGroup = carvingGroupsByVariation.get(key(block, metadata));
|
||||
if (blockGroup != null || blockGroup == group)
|
||||
return null;
|
||||
|
||||
CarvingVariation variation = new CarvingVariation(block, metadata, order);
|
||||
group.variations.add(variation);
|
||||
Collections.sort(group.variations);
|
||||
carvingGroupsByVariation.put(key(block, metadata), group);
|
||||
|
||||
ICarvingGroup group = groups.getGroupByName(name);
|
||||
|
||||
if (group == null) {
|
||||
group = new CarvingGroup(name);
|
||||
groups.add(group);
|
||||
}
|
||||
|
||||
groups.addVariation(name, variation);
|
||||
|
||||
return variation;
|
||||
}
|
||||
|
||||
public void registerOre(String name, String oreName) {
|
||||
CarvingGroup group = getGroup(name);
|
||||
|
||||
carvingGroupsByOre.put(oreName, group);
|
||||
|
||||
group.oreName = oreName;
|
||||
}
|
||||
|
||||
public void setGroupClass(String name, String className) {
|
||||
CarvingGroup group = getGroup(name);
|
||||
|
||||
group.className = className;
|
||||
ICarvingGroup group = groups.getGroupByName(name);
|
||||
if (group != null) {
|
||||
group.setOreName(oreName);
|
||||
} else {
|
||||
throw new NullPointerException("Cannot register ore name for group " + name + ", as it does not exist.");
|
||||
}
|
||||
}
|
||||
|
||||
public void setVariationSound(String name, String sound) {
|
||||
CarvingGroup group = getGroup(name);
|
||||
group.sound = sound;
|
||||
ICarvingGroup group = groups.getGroupByName(name);
|
||||
if (group != null) {
|
||||
group.setSound(sound);
|
||||
} else {
|
||||
throw new NullPointerException("Cannot set sound for group " + name + ", as it does not exist.");
|
||||
}
|
||||
}
|
||||
|
||||
public String getVariationSound(Block block, int metadata) {
|
||||
@@ -170,18 +144,14 @@ public class Carving {
|
||||
}
|
||||
|
||||
public String getVariationSound(Item item, int metadata) {
|
||||
CarvingGroup blockGroup = carvingGroupsByVariation.get(key(item, metadata));
|
||||
if (blockGroup == null || blockGroup.sound == null)
|
||||
return Chisel.MOD_ID + ":chisel.fallback";
|
||||
|
||||
return blockGroup.sound;
|
||||
ICarvingGroup group = groups.getGroup(Block.getBlockFromItem(item), metadata);
|
||||
String sound = group == null ? null : group.getSound();
|
||||
return sound == null ? Chisel.MOD_ID + ":chisel.fallback" : sound;
|
||||
}
|
||||
|
||||
public List<String> getSortedGroupNames() {
|
||||
List<String> names = new ArrayList<String>();
|
||||
for (String s : carvingGroupsByName.keySet()) {
|
||||
names.add(s);
|
||||
}
|
||||
names.addAll(groups.getNames());
|
||||
Collections.sort(names);
|
||||
return names;
|
||||
}
|
||||
|
||||
@@ -1,33 +1,57 @@
|
||||
package com.cricketcraft.chisel.carving;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
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 {
|
||||
public class CarvingGroup implements ICarvingGroup {
|
||||
|
||||
public CarvingGroup(String n) {
|
||||
name = n;
|
||||
private String name;
|
||||
private String sound;
|
||||
private String oreName;
|
||||
|
||||
private List<ICarvingVariation> variations = Lists.newArrayList();
|
||||
|
||||
public CarvingGroup(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
String name;
|
||||
String className;
|
||||
String sound;
|
||||
String oreName;
|
||||
|
||||
List<CarvingVariation> variations = new ArrayList<CarvingVariation>();
|
||||
|
||||
public List<CarvingVariation> getVariations() {
|
||||
public List<ICarvingVariation> getVariations() {
|
||||
return ImmutableList.copyOf(variations);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addVariation(ICarvingVariation variation) {
|
||||
variations.add(variation);
|
||||
Collections.sort(variations);
|
||||
}
|
||||
|
||||
@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;
|
||||
}
|
||||
}
|
||||
@@ -3,7 +3,15 @@ package com.cricketcraft.chisel.carving;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class CarvingVariation implements Comparable<CarvingVariation> {
|
||||
import com.cricketcraft.chisel.api.carving.CarvingUtils;
|
||||
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;
|
||||
@@ -13,17 +21,32 @@ public class CarvingVariation implements Comparable<CarvingVariation> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(CarvingVariation a) {
|
||||
return order - a.order;
|
||||
}
|
||||
|
||||
public int order;
|
||||
public Block block;
|
||||
public int meta;
|
||||
public int damage;
|
||||
|
||||
public ItemStack getStack() {
|
||||
return new ItemStack(block, 1, damage);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block getBlock() {
|
||||
return block;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlockMeta() {
|
||||
return meta;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemMeta() {
|
||||
return damage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return order;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(ICarvingVariation o) {
|
||||
return CarvingUtils.compare(this, o);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,217 @@
|
||||
package com.cricketcraft.chisel.carving;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Set;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import com.cricketcraft.chisel.api.carving.ICarvingGroup;
|
||||
import com.cricketcraft.chisel.api.carving.ICarvingVariation;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
public class GroupList implements Set<ICarvingGroup> {
|
||||
|
||||
private class VariationWrapper {
|
||||
|
||||
private ICarvingVariation v;
|
||||
|
||||
private VariationWrapper(ICarvingVariation v) {
|
||||
this.v = v;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object obj) {
|
||||
if (obj instanceof ICarvingVariation) {
|
||||
ICarvingVariation v2 = (ICarvingVariation) obj;
|
||||
return v.getBlock() == v2.getBlock() && (v.getBlockMeta() == v2.getBlockMeta() || v.getItemMeta() == v2.getItemMeta());
|
||||
} else if (obj instanceof VariationWrapper) {
|
||||
return equals(((VariationWrapper) obj).v);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int hashCode() {
|
||||
return v.getBlock().hashCode();
|
||||
}
|
||||
}
|
||||
|
||||
private class VariationKey implements ICarvingVariation {
|
||||
|
||||
Pair<Block, Integer> data;
|
||||
|
||||
private VariationKey(Block block, int blockMeta) {
|
||||
data = Pair.of(block, blockMeta);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(ICarvingVariation o) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Block getBlock() {
|
||||
return data.getLeft();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getBlockMeta() {
|
||||
return data.getRight();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemMeta() {
|
||||
return data.getRight();
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemStack getStack() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getOrder() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return data.toString();
|
||||
}
|
||||
}
|
||||
|
||||
private HashMap<String, ICarvingGroup> groups = Maps.newHashMap();
|
||||
private HashMap<VariationWrapper, ICarvingGroup> lookup = Maps.newHashMap();
|
||||
|
||||
@Override
|
||||
public int size() {
|
||||
return groups.size();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isEmpty() {
|
||||
return groups.isEmpty();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean contains(Object o) {
|
||||
if (o instanceof ICarvingGroup) {
|
||||
return groups.containsKey(((ICarvingGroup) o).getName());
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Iterator<ICarvingGroup> iterator() {
|
||||
return groups.values().iterator();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object[] toArray() {
|
||||
return groups.values().toArray();
|
||||
}
|
||||
|
||||
@Override
|
||||
public <T> T[] toArray(T[] arr) {
|
||||
return groups.values().toArray(arr);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean add(ICarvingGroup group) {
|
||||
String key = group.getName();
|
||||
if (groups.containsKey(key)) {
|
||||
return false;
|
||||
}
|
||||
groups.put(key, group);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean remove(Object o) {
|
||||
if (o instanceof ICarvingGroup) {
|
||||
return groups.remove(((ICarvingGroup) o).getName()) != null;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean containsAll(Collection<?> c) {
|
||||
for (Object o : c) {
|
||||
if (!(o instanceof ICarvingGroup)) {
|
||||
return false;
|
||||
}
|
||||
if (!groups.containsKey(((ICarvingGroup) o).getName())) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addAll(Collection<? extends ICarvingGroup> c) {
|
||||
boolean ret = false;
|
||||
for (ICarvingGroup g : c) {
|
||||
ret |= add(g);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean removeAll(Collection<?> c) {
|
||||
boolean ret = false;
|
||||
for (Object o : c) {
|
||||
ret |= remove(o);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean retainAll(Collection<?> c) {
|
||||
throw new UnsupportedOperationException(); // not using it, not gonna bother
|
||||
}
|
||||
|
||||
@Override
|
||||
public void clear() {
|
||||
groups.clear();
|
||||
}
|
||||
|
||||
public ICarvingGroup getGroup(Block block, int metadata) {
|
||||
return lookup.get(new VariationWrapper(new VariationKey(block, metadata)));
|
||||
}
|
||||
|
||||
public void addVariation(String name, ICarvingVariation variation) {
|
||||
ICarvingGroup g = groups.get(name);
|
||||
if (g == null) {
|
||||
throw new NullPointerException("No group exists for name " + name);
|
||||
}
|
||||
g.addVariation(variation);
|
||||
lookup.put(new VariationWrapper(variation), g);
|
||||
}
|
||||
|
||||
public ICarvingGroup getGroupByName(String groupName) {
|
||||
return groups.get(groupName);
|
||||
}
|
||||
|
||||
public ICarvingGroup getGroupByOre(String oreName) {
|
||||
for (ICarvingGroup group : groups.values()) {
|
||||
if (oreName.equals(group.getOreName())) {
|
||||
return group;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public Collection<? extends String> getNames() {
|
||||
return groups.keySet();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return groups.toString();
|
||||
}
|
||||
}
|
||||
@@ -29,8 +29,10 @@ public class Compatibility {
|
||||
|
||||
/* Mariculture */
|
||||
Block block = GameRegistry.findBlock("mariculture", "limestone");
|
||||
for (int i = 0; i < 16; i++) {
|
||||
addSupport("limestone", block, i, 99);
|
||||
if (block != null) {
|
||||
for (int i = 0; i < 16; i++) {
|
||||
addSupport("limestone", block, i, 99);
|
||||
}
|
||||
}
|
||||
|
||||
/* Geologica */
|
||||
|
||||
@@ -15,9 +15,9 @@ import codechicken.nei.NEIServerUtils;
|
||||
import codechicken.nei.PositionedStack;
|
||||
import codechicken.nei.recipe.TemplateRecipeHandler;
|
||||
|
||||
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.CarvingGroup;
|
||||
import com.cricketcraft.chisel.carving.CarvingVariation;
|
||||
|
||||
public class RecipeHandlerChisel extends TemplateRecipeHandler {
|
||||
|
||||
@@ -107,7 +107,7 @@ public class RecipeHandlerChisel extends TemplateRecipeHandler {
|
||||
public void loadCraftingRecipes(String outputId, Object... results) {
|
||||
if (outputId.equals("chisel2.chisel")) {
|
||||
for (String name : Carving.chisel.getSortedGroupNames()) {
|
||||
CarvingGroup g = Carving.chisel.getGroup(name);
|
||||
ICarvingGroup g = Carving.chisel.getGroup(name);
|
||||
if (!g.getVariations().isEmpty()) {
|
||||
addCached(getVariationStacks(g));
|
||||
}
|
||||
@@ -120,7 +120,7 @@ public class RecipeHandlerChisel extends TemplateRecipeHandler {
|
||||
@Override
|
||||
public void loadCraftingRecipes(ItemStack result) {
|
||||
for (String name : Carving.chisel.getSortedGroupNames()) {
|
||||
CarvingGroup g = Carving.chisel.getGroup(name);
|
||||
ICarvingGroup g = Carving.chisel.getGroup(name);
|
||||
List<ItemStack> variations = getVariationStacks(g);
|
||||
for (ItemStack stack : variations) {
|
||||
if (NEIServerUtils.areStacksSameTypeCrafting(stack, result)) {
|
||||
@@ -133,7 +133,7 @@ public class RecipeHandlerChisel extends TemplateRecipeHandler {
|
||||
@Override
|
||||
public void loadUsageRecipes(ItemStack ingredient) {
|
||||
for (String name : Carving.chisel.getSortedGroupNames()) {
|
||||
CarvingGroup g = Carving.chisel.getGroup(name);
|
||||
ICarvingGroup g = Carving.chisel.getGroup(name);
|
||||
List<ItemStack> variations = getVariationStacks(g);
|
||||
for (ItemStack stack : variations) {
|
||||
if (NEIServerUtils.areStacksSameTypeCrafting(stack, ingredient)) {
|
||||
@@ -162,9 +162,9 @@ public class RecipeHandlerChisel extends TemplateRecipeHandler {
|
||||
addCached(variations, null, null);
|
||||
}
|
||||
|
||||
private static List<ItemStack> getVariationStacks(CarvingGroup g) {
|
||||
private static List<ItemStack> getVariationStacks(ICarvingGroup g) {
|
||||
List<ItemStack> stacks = new ArrayList<ItemStack>();
|
||||
for (CarvingVariation v : g.getVariations()) {
|
||||
for (ICarvingVariation v : g.getVariations()) {
|
||||
stacks.add(v.getStack());
|
||||
}
|
||||
String oreName = g.getOreName();
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
package com.cricketcraft.chisel.item.chisel;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.entity.player.EntityPlayerMP;
|
||||
@@ -12,6 +14,7 @@ import org.apache.commons.lang3.ArrayUtils;
|
||||
|
||||
import com.cricketcraft.chisel.Chisel;
|
||||
import com.cricketcraft.chisel.api.IChiselItem;
|
||||
import com.cricketcraft.chisel.api.carving.ICarvingVariation;
|
||||
import com.cricketcraft.chisel.carving.Carving;
|
||||
import com.cricketcraft.chisel.carving.CarvingVariation;
|
||||
import com.cricketcraft.chisel.network.PacketHandler;
|
||||
@@ -49,28 +52,34 @@ public final class ChiselController {
|
||||
z = event.z;
|
||||
Block block = event.world.getBlock(x, y, z);
|
||||
int metadata = event.world.getBlockMetadata(x, y, z);
|
||||
CarvingVariation[] variations = Carving.chisel.getVariations(block, metadata);
|
||||
List<ICarvingVariation> list = Carving.chisel.getVariations(block, metadata);
|
||||
|
||||
if (list == null || list.isEmpty()) {
|
||||
break;
|
||||
}
|
||||
|
||||
ICarvingVariation[] variations = list.toArray(new CarvingVariation[] {});
|
||||
|
||||
if (variations != null && chisel.canChiselBlock(event.world, x, y, z, block, metadata)) {
|
||||
if (chisel.canChiselBlock(event.world, x, y, z, block, metadata)) {
|
||||
ItemStack target = General.getChiselTarget(held);
|
||||
|
||||
if (target != null) {
|
||||
for (CarvingVariation v : variations) {
|
||||
if (v.block == Block.getBlockFromItem(target.getItem()) && v.meta == target.getItemDamage()) {
|
||||
for (ICarvingVariation v : variations) {
|
||||
if (v.getBlock() == Block.getBlockFromItem(target.getItem()) && v.getBlockMeta() == target.getItemDamage()) {
|
||||
setVariation(event.entityPlayer, event.world, x, y, z, v, target);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for (int i = 0; i < variations.length; i++) {
|
||||
CarvingVariation v = variations[i];
|
||||
if (v.block == block && v.meta == metadata) {
|
||||
ICarvingVariation v = variations[i];
|
||||
if (v.getBlock() == block && v.getBlockMeta() == metadata) {
|
||||
variations = ArrayUtils.remove(variations, i--);
|
||||
}
|
||||
}
|
||||
|
||||
int index = event.world.rand.nextInt(variations.length);
|
||||
CarvingVariation newVar = variations[index];
|
||||
setVariation(event.entityPlayer, event.world, x, y, z, newVar, new ItemStack(newVar.block, 1, newVar.damage));
|
||||
ICarvingVariation newVar = variations[index];
|
||||
setVariation(event.entityPlayer, event.world, x, y, z, newVar, new ItemStack(newVar.getBlock(), 1, newVar.getItemMeta()));
|
||||
event.entityPlayer.inventory.currentItem = slot;
|
||||
}
|
||||
}
|
||||
@@ -87,10 +96,9 @@ public final class ChiselController {
|
||||
/**
|
||||
* Assumes that the player is holding a chisel
|
||||
*/
|
||||
private void setVariation(EntityPlayer player, World world, int x, int y, int z, CarvingVariation v, ItemStack target) {
|
||||
private void setVariation(EntityPlayer player, World world, int x, int y, int z, ICarvingVariation v, ItemStack target) {
|
||||
PacketHandler.INSTANCE.sendTo(new MessageChiselSound(x, y, z, v), (EntityPlayerMP) player);
|
||||
world.setBlock(x, y, z, v.block);
|
||||
world.setBlockMetadataWithNotify(x, y, z, v.meta, 3);
|
||||
world.setBlock(x, y, z, v.getBlock(), v.getBlockMeta(), 3);
|
||||
((IChiselItem) player.getCurrentEquippedItem().getItem()).onChisel(world, player.inventory, player.inventory.currentItem, player.getCurrentEquippedItem(), target);
|
||||
}
|
||||
}
|
||||
@@ -17,7 +17,6 @@ import com.cricketcraft.chisel.api.ChiselMode;
|
||||
import com.cricketcraft.chisel.api.IChiselItem;
|
||||
import com.cricketcraft.chisel.carving.Carving;
|
||||
import com.cricketcraft.chisel.config.Configurations;
|
||||
import com.cricketcraft.chisel.init.ChiselBlocks;
|
||||
import com.cricketcraft.chisel.utils.GeneralClient;
|
||||
|
||||
public class ItemChisel extends Item implements IChiselItem {
|
||||
@@ -104,10 +103,8 @@ public class ItemChisel extends Item implements IChiselItem {
|
||||
String sound = carving.getVariationSound(target.getItem(), target.getItemDamage());
|
||||
EntityPlayer player = Chisel.proxy.getClientPlayer();
|
||||
GeneralClient.playChiselSound(world, MathHelper.floor_double(player.posX), MathHelper.floor_double(player.posY), MathHelper.floor_double(player.posZ), sound);
|
||||
} else {
|
||||
if (chisel.getItemDamage() >= chisel.getMaxDamage()) {
|
||||
inv.decrStackSize(slot, 1);
|
||||
}
|
||||
} else if (chisel.getItemDamage() >= chisel.getMaxDamage()) {
|
||||
inv.decrStackSize(slot, 1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.cricketcraft.chisel.network.message;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
import net.minecraft.block.Block;
|
||||
|
||||
import com.cricketcraft.chisel.api.carving.ICarvingVariation;
|
||||
import com.cricketcraft.chisel.carving.CarvingVariation;
|
||||
import com.cricketcraft.chisel.client.GeneralChiselClient;
|
||||
import com.cricketcraft.chisel.item.chisel.ItemChisel;
|
||||
@@ -21,10 +22,10 @@ public class MessageChiselSound extends MessageCoords {
|
||||
private int block;
|
||||
private byte meta;
|
||||
|
||||
public MessageChiselSound(int x, int y, int z, CarvingVariation v) {
|
||||
public MessageChiselSound(int x, int y, int z, ICarvingVariation v) {
|
||||
super(x, y, z);
|
||||
this.block = Block.getIdFromBlock(v.block);
|
||||
this.meta = (byte) v.meta;
|
||||
this.block = Block.getIdFromBlock(v.getBlock());
|
||||
this.meta = (byte) v.getBlockMeta();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in new issue
Block a user