diff --git a/src/main/java/com/sk89q/craftbook/mech/BetterPistons.java b/src/main/java/com/sk89q/craftbook/mech/BetterPistons.java index 82ff18416f..6dd59102f0 100644 --- a/src/main/java/com/sk89q/craftbook/mech/BetterPistons.java +++ b/src/main/java/com/sk89q/craftbook/mech/BetterPistons.java @@ -169,8 +169,6 @@ public void onBlockRedstoneChange(SourcedBlockRedstoneEvent event) { if(type == Types.CRUSH && event.getNewCurrent() > event.getOldCurrent()) { PistonBaseMaterial piston = (PistonBaseMaterial) trigger.getState().getData(); - if(piston.isSticky()) - return; piston.setPowered(false); if(trigger.getRelative(piston.getFacing()).getTypeId() == BlockID.BEDROCK) return; diff --git a/src/main/java/com/sk89q/craftbook/mech/crafting/InvalidCraftingException.java b/src/main/java/com/sk89q/craftbook/mech/crafting/InvalidCraftingException.java new file mode 100644 index 0000000000..cbd9f21f24 --- /dev/null +++ b/src/main/java/com/sk89q/craftbook/mech/crafting/InvalidCraftingException.java @@ -0,0 +1,15 @@ +package com.sk89q.craftbook.mech.crafting; + +import com.sk89q.craftbook.util.exceptions.CraftbookException; + +public class InvalidCraftingException extends CraftbookException { + + /** + * + */ + private static final long serialVersionUID = 4305166656444438242L; + + public InvalidCraftingException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/src/main/java/com/sk89q/craftbook/mech/crafting/RecipeManager.java b/src/main/java/com/sk89q/craftbook/mech/crafting/RecipeManager.java index c3bce4390e..ddcee8699c 100644 --- a/src/main/java/com/sk89q/craftbook/mech/crafting/RecipeManager.java +++ b/src/main/java/com/sk89q/craftbook/mech/crafting/RecipeManager.java @@ -5,6 +5,7 @@ import java.util.Arrays; import java.util.Collection; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.logging.Logger; @@ -49,7 +50,11 @@ public void load() { List keys = config.getKeys("crafting-recipes"); if (keys != null) { for (String key : keys) { - recipes.add(new Recipe(key, config)); + try { + recipes.add(new Recipe(key, config)); + } catch (InvalidCraftingException e) { + logger.warning(e.getMessage()); + } } } } @@ -83,7 +88,7 @@ public boolean hasAdvancedData() { return false; } - private Recipe(String id, YAMLProcessor config) { + private Recipe(String id, YAMLProcessor config) throws InvalidCraftingException { this.id = id; this.config = config; @@ -92,7 +97,7 @@ private Recipe(String id, YAMLProcessor config) { load(); } - private void load() { + private void load() throws InvalidCraftingException { type = RecipeType.getTypeFromName(config.getString("crafting-recipes." + id + ".type")); if (type != RecipeType.SHAPED2X2 && type != RecipeType.SHAPED3X3) { @@ -101,7 +106,11 @@ private void load() { items = getHashItems("crafting-recipes." + id + ".ingredients"); shape = config.getStringList("crafting-recipes." + id + ".shape", Arrays.asList("")); } - result = getItems("crafting-recipes." + id + ".results").iterator().next(); + Iterator iterator = getItems("crafting-recipes." + id + ".results").iterator(); + if(iterator.hasNext()) + result = iterator.next(); + else + throw new InvalidCraftingException("Result is invalid in recipe: "+ id); } private HashMap getHashItems(String path) {