diff --git a/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java b/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java index 0532b95f7..f59e27628 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/MultiBlock.java @@ -20,24 +20,7 @@ public class MultiBlock { public MultiBlock(Material[] build, Material trigger) { this.blocks = build; this.isSymmetric = isSymmetric(build); - //Hacky, the other constructor should be used - for (int i = 1; i < 9; i +=3) { - if (trigger == build[i]) { - switch (i) { - case 1: - this.trigger = BlockFace.DOWN; - return; - case 4: - this.trigger = BlockFace.SELF; - return; - case 7: - this.trigger = BlockFace.UP; - return; - default: - break; - } - } - } + this.trigger = convertTriggerMaterialToBlockFace(build, trigger); } public MultiBlock(Material[] build, BlockFace trigger) { @@ -106,5 +89,25 @@ public class MultiBlock { public boolean isSymmetric() { return this.isSymmetric; } - + + @Deprecated + public static BlockFace convertTriggerMaterialToBlockFace(Material[] build, Material trigger) + { + //Hacky + for (int i = 1; i < 9; i +=3) { + if (trigger == build[i]) { + switch (i) { + case 1: + return BlockFace.DOWN; + case 4: + return BlockFace.SELF; + case 7: + return BlockFace.UP; + default: + break; + } + } + } + return null; + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java index 81fc72644..856dbf8c9 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/SlimefunMachine.java @@ -6,6 +6,7 @@ import java.util.Iterator; import java.util.List; import org.bukkit.Material; +import org.bukkit.block.BlockFace; import org.bukkit.inventory.ItemStack; import me.mrCookieSlime.Slimefun.Lists.RecipeType; @@ -16,11 +17,25 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayIt public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem { protected List recipes; - private Material trigger; - - protected List shownRecipes; + protected List shownRecipes; + private BlockFace trigger; + @Deprecated public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger) { + this(category, item, id, recipe, machineRecipes, convertTriggerMaterial(recipe, trigger)); + } + + @Deprecated + public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger, boolean ghost) { + this(category, item, id, recipe, machineRecipes, convertTriggerMaterial(recipe, trigger), ghost); + } + + @Deprecated + public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger, String[] keys, Object[] values) { + this(category, item, id, recipe, machineRecipes, convertTriggerMaterial(recipe, trigger), keys, values); + } + + public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, BlockFace trigger) { super(category, item, id, RecipeType.MULTIBLOCK, recipe); this.recipes = new ArrayList<>(); this.shownRecipes = new ArrayList<>(); @@ -28,7 +43,7 @@ public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem { this.trigger = trigger; } - public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger, boolean ghost) { + public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, BlockFace trigger, boolean ghost) { super(category, item, id, RecipeType.MULTIBLOCK, recipe, ghost); this.recipes = new ArrayList<>(); this.shownRecipes = new ArrayList<>(); @@ -36,7 +51,7 @@ public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem { this.trigger = trigger; } - public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger, String[] keys, Object[] values) { + public SlimefunMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, BlockFace trigger, String[] keys, Object[] values) { super(category, item, id, RecipeType.MULTIBLOCK, recipe, keys, values); this.recipes = new ArrayList<>(); this.shownRecipes = new ArrayList<>(); @@ -72,21 +87,28 @@ public class SlimefunMachine extends SlimefunItem implements RecipeDisplayItem { } } } - - public MultiBlock toMultiBlock() { + + private static Material[] convertItemStacksToMaterial(ItemStack[] items) { List mats = new ArrayList<>(); - for (ItemStack i: this.getRecipe()) { + for (ItemStack i: items) { if (i == null) mats.add(null); else if (i.getType() == Material.FLINT_AND_STEEL) mats.add(Material.FIRE); else mats.add(i.getType()); } - Material[] build = mats.toArray(new Material[mats.size()]); - return new MultiBlock(build, this.trigger); + return mats.toArray(new Material[mats.size()]); + } + + public MultiBlock toMultiBlock() { + return new MultiBlock(convertItemStacksToMaterial(this.getRecipe()), this.trigger); } public Iterator recipeIterator() { return this.recipes.iterator(); } + @Deprecated + private static BlockFace convertTriggerMaterial(ItemStack[] recipe, Material trigger) { + return MultiBlock.convertTriggerMaterialToBlockFace(convertItemStacksToMaterial(recipe), trigger); + } } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java index 0610ef7b9..551fabf11 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/ArmorForge.java @@ -29,7 +29,7 @@ public class ArmorForge extends MultiBlockMachine { "ARMOR_FORGE", new ItemStack[] {null, null, null, null, new ItemStack(Material.ANVIL), null, null, new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), null}, new ItemStack[0], - Material.ANVIL + BlockFace.SELF ); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java index c7bd329fb..215d83d83 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/AutomatedPanningMachine.java @@ -36,7 +36,7 @@ public class AutomatedPanningMachine extends MultiBlockMachine { new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL), new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE }, - Material.OAK_TRAPDOOR + BlockFace.SELF ); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java index 21e4f96d5..c19ffb83a 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Compressor.java @@ -35,7 +35,7 @@ public class Compressor extends MultiBlockMachine { new CustomItem(SlimefunItems.STONE_CHUNK, 4), new ItemStack(Material.COBBLESTONE), new CustomItem(SlimefunItems.REINFORCED_ALLOY_INGOT, 8), SlimefunItems.REINFORCED_PLATE }, - Material.NETHER_BRICK_FENCE + BlockFace.SELF ); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java index 682692c2e..a91b90e5b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/EnhancedCraftingTable.java @@ -35,7 +35,7 @@ public class EnhancedCraftingTable extends MultiBlockMachine { "ENHANCED_CRAFTING_TABLE", new ItemStack[] {null, null, null, null, new ItemStack(Material.CRAFTING_TABLE), null, null, new ItemStack(Material.DISPENSER), null}, new ItemStack[0], - Material.CRAFTING_TABLE + BlockFace.SELF ); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java index 55d5d5e11..0b8b78692 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/GrindStone.java @@ -39,7 +39,7 @@ public class GrindStone extends MultiBlockMachine { new ItemStack(Material.SANDSTONE), new ItemStack(Material.SAND, 4), new ItemStack(Material.RED_SANDSTONE), new ItemStack(Material.RED_SAND, 4) }, - Material.OAK_FENCE + BlockFace.SELF ); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java index 842517423..128b6f492 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Juicer.java @@ -35,7 +35,7 @@ public class Juicer extends MultiBlockMachine { new ItemStack(Material.PUMPKIN), SlimefunItems.PUMPKIN_JUICE, new ItemStack(Material.GOLDEN_APPLE), SlimefunItems.GOLDEN_APPLE_JUICE }, - Material.NETHER_BRICK_FENCE + BlockFace.SELF ); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java index 528888860..d71e1c168 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MagicWorkbench.java @@ -9,6 +9,7 @@ import org.bukkit.Effect; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; import org.bukkit.block.Dispenser; import org.bukkit.entity.Player; import org.bukkit.inventory.Inventory; @@ -35,7 +36,7 @@ public class MagicWorkbench extends MultiBlockMachine { "MAGIC_WORKBENCH", new ItemStack[] {null, null, null, null, null, null, new ItemStack(Material.BOOKSHELF), new ItemStack(Material.CRAFTING_TABLE), new ItemStack(Material.DISPENSER)}, new ItemStack[0], - Material.CRAFTING_TABLE + BlockFace.UP ); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MultiBlockMachine.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MultiBlockMachine.java index 7c9d4c9e6..f177e030b 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MultiBlockMachine.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/MultiBlockMachine.java @@ -26,15 +26,25 @@ public abstract class MultiBlockMachine extends SlimefunMachine { BlockFace.SOUTH, BlockFace.WEST }; - + + @Deprecated public MultiBlockMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger) { super(category, item, id, recipe, machineRecipes, trigger); } - + + @Deprecated public MultiBlockMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, Material trigger, String[] keys, Object[] values) { super(category, item, id, recipe, machineRecipes, trigger, keys, values); } + public MultiBlockMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, BlockFace trigger) { + super(category, item, id, recipe, machineRecipes, trigger); + } + + public MultiBlockMachine(Category category, ItemStack item, String id, ItemStack[] recipe, ItemStack[] machineRecipes, BlockFace trigger, String[] keys, Object[] values) { + super(category, item, id, recipe, machineRecipes, trigger, keys, values); + } + @Override public void register() { register(true, getInteractionHandler()); diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java index 5c1b63412..7c9459950 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreCrusher.java @@ -39,7 +39,7 @@ public class OreCrusher extends MultiBlockMachine { new ItemStack(Material.GOLD_INGOT), SlimefunItems.GOLD_DUST, SlimefunItems.GOLD_4K, SlimefunItems.GOLD_DUST }, - Material.NETHER_BRICK_FENCE + BlockFace.SELF ); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java index 92f8d4508..275a34aae 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/OreWasher.java @@ -39,7 +39,7 @@ public class OreWasher extends MultiBlockMachine { SlimefunItems.SIFTED_ORE, SlimefunItems.LEAD_DUST, SlimefunItems.SIFTED_ORE, SlimefunItems.SILVER_DUST }, - Material.OAK_FENCE + BlockFace.SELF ); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java index 93e079c6f..1f882c924 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/PressureChamber.java @@ -33,7 +33,7 @@ public class PressureChamber extends MultiBlockMachine { SlimefunItems.CARBON_CHUNK, SlimefunItems.SYNTHETIC_DIAMOND, SlimefunItems.RAW_CARBONADO, SlimefunItems.CARBONADO }, - Material.CAULDRON + BlockFace.UP ); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java index 08a91786d..b8535c2e5 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/Smeltery.java @@ -36,7 +36,7 @@ public class Smeltery extends MultiBlockMachine { new ItemStack[] { SlimefunItems.IRON_DUST, new ItemStack(Material.IRON_INGOT) }, - Material.NETHER_BRICK_FENCE, + BlockFace.SELF, new String[] {"chance.fireBreak"}, new Integer[] {34} ); } diff --git a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java index 259077952..15e66bd72 100644 --- a/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java +++ b/src/me/mrCookieSlime/Slimefun/Objects/SlimefunItem/multiblocks/TableSaw.java @@ -7,6 +7,7 @@ import org.bukkit.Effect; import org.bukkit.Material; import org.bukkit.Tag; import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -25,7 +26,7 @@ public class TableSaw extends MultiBlockMachine { "TABLE_SAW", new ItemStack[] {null, null, null, new ItemStack(Material.SMOOTH_STONE_SLAB), new ItemStack(Material.STONECUTTER), new ItemStack(Material.SMOOTH_STONE_SLAB), null, new ItemStack(Material.IRON_BLOCK), null}, new ItemStack[0], - Material.STONECUTTER + BlockFace.SELF ); for (Material log: Tag.LOGS.getValues()) { diff --git a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java index c01426d95..bb862c651 100644 --- a/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java +++ b/src/me/mrCookieSlime/Slimefun/Setup/SlimefunSetup.java @@ -1061,7 +1061,7 @@ public final class SlimefunSetup { */ new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.SAW_MILL, "SAW_MILL", new ItemStack[] {null, null, null, new ItemStack(Material.IRON_BARS), new ItemStack(Material.OAK_LOG), new ItemStack(Material.IRON_BARS), new ItemStack(Material.OAK_LOG), new ItemStack(Material.CRAFTING_TABLE), new ItemStack(Material.OAK_LOG)}, - new ItemStack[] {}, Material.CRAFTING_TABLE) + new ItemStack[] {}, BlockFace.UP) .register(true, new MultiBlockInteractionHandler() { @Override @@ -1098,7 +1098,7 @@ public final class SlimefunSetup { new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.DIGITAL_MINER, "DIGITAL_MINER", new ItemStack[] {SlimefunItems.SOLAR_PANEL, new ItemStack(Material.CHEST), SlimefunItems.SOLAR_PANEL, new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.DISPENSER), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.HOPPER), new ItemStack(Material.IRON_BLOCK)}, - new ItemStack[0], Material.DISPENSER) + new ItemStack[0], BlockFace.SELF) .register(true, new MultiBlockInteractionHandler() { @Override @@ -1156,7 +1156,7 @@ public final class SlimefunSetup { new SlimefunMachine(Categories.MACHINES_1, SlimefunItems.ADVANCED_DIGITAL_MINER, "ADVANCED_DIGITAL_MINER", new ItemStack[] {SlimefunItems.SOLAR_PANEL, new ItemStack(Material.CHEST), SlimefunItems.SOLAR_PANEL, SlimefunItems.GOLD_24K_BLOCK, new ItemStack(Material.DISPENSER), SlimefunItems.GOLD_24K_BLOCK, SlimefunItems.GOLD_24K_BLOCK, new ItemStack(Material.HOPPER), SlimefunItems.GOLD_24K_BLOCK}, - new ItemStack[0], Material.DISPENSER) + new ItemStack[0], BlockFace.SELF) .register(true, new MultiBlockInteractionHandler() { @Override