summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/me/fatpigsarefat/quests/Quests.java5
-rw-r--r--src/me/fatpigsarefat/quests/blocktype/Block.java34
-rw-r--r--src/me/fatpigsarefat/quests/blocktype/SimilarBlocks.java93
-rw-r--r--src/me/fatpigsarefat/quests/quests/tasktypes/types/BuildingCertainTaskType.java20
-rw-r--r--src/me/fatpigsarefat/quests/quests/tasktypes/types/InventoryTaskType.java17
-rw-r--r--src/me/fatpigsarefat/quests/quests/tasktypes/types/MiningCertainTaskType.java19
6 files changed, 171 insertions, 17 deletions
diff --git a/src/me/fatpigsarefat/quests/Quests.java b/src/me/fatpigsarefat/quests/Quests.java
index bfbc1081..8a730a36 100644
--- a/src/me/fatpigsarefat/quests/Quests.java
+++ b/src/me/fatpigsarefat/quests/Quests.java
@@ -1,6 +1,7 @@
package me.fatpigsarefat.quests;
import com.google.common.io.ByteStreams;
+import me.fatpigsarefat.quests.blocktype.SimilarBlocks;
import me.fatpigsarefat.quests.bstats.Metrics;
import me.fatpigsarefat.quests.commands.CommandQuests;
import me.fatpigsarefat.quests.events.EventInventory;
@@ -16,7 +17,7 @@ import me.fatpigsarefat.quests.quests.Category;
import me.fatpigsarefat.quests.quests.Quest;
import me.fatpigsarefat.quests.quests.QuestManager;
import me.fatpigsarefat.quests.quests.Task;
-import me.fatpigsarefat.quests.quests.tasktypes.*;
+import me.fatpigsarefat.quests.quests.tasktypes.TaskTypeManager;
import me.fatpigsarefat.quests.quests.tasktypes.types.*;
import me.fatpigsarefat.quests.title.*;
import me.fatpigsarefat.quests.updater.Updater;
@@ -133,6 +134,8 @@ public class Quests extends JavaPlugin {
Metrics metrics = new Metrics(this);
this.getLogger().log(Level.INFO, "Metrics started. This can be disabled at /plugins/bStats/config.yml.");
+ SimilarBlocks.addBlocks();
+
new BukkitRunnable() {
@Override
public void run() {
diff --git a/src/me/fatpigsarefat/quests/blocktype/Block.java b/src/me/fatpigsarefat/quests/blocktype/Block.java
new file mode 100644
index 00000000..f9b61039
--- /dev/null
+++ b/src/me/fatpigsarefat/quests/blocktype/Block.java
@@ -0,0 +1,34 @@
+package me.fatpigsarefat.quests.blocktype;
+
+import org.bukkit.Material;
+
+public class Block {
+
+ private Material material;
+ private short data;
+
+ public Block(Material material, short data) {
+ this.material = material;
+ this.data = data;
+ }
+
+ public Block(Material material) {
+ this.material = material;
+ }
+
+ public Material getMaterial() {
+ return material;
+ }
+
+ public short getData() {
+ return data;
+ }
+
+ public void setMaterial(Material material) {
+ this.material = material;
+ }
+
+ public void setData(short data) {
+ this.data = data;
+ }
+}
diff --git a/src/me/fatpigsarefat/quests/blocktype/SimilarBlocks.java b/src/me/fatpigsarefat/quests/blocktype/SimilarBlocks.java
new file mode 100644
index 00000000..11b9f16d
--- /dev/null
+++ b/src/me/fatpigsarefat/quests/blocktype/SimilarBlocks.java
@@ -0,0 +1,93 @@
+package me.fatpigsarefat.quests.blocktype;
+
+import org.bukkit.Material;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class SimilarBlocks {
+
+ private static HashMap<Block, Block> similarBlocks = new HashMap<>();
+
+ public static void addBlocks() {
+ // Redstone Ore
+ similarBlocks.put(new Block(Material.REDSTONE_ORE), new Block(Material.GLOWING_REDSTONE_ORE));
+ similarBlocks.put(new Block(Material.GLOWING_REDSTONE_ORE), new Block(Material.REDSTONE_ORE));
+
+ // Oak Door
+ similarBlocks.put(new Block(Material.WOODEN_DOOR, (short) 0), new Block(Material.WOODEN_DOOR));
+ similarBlocks.put(new Block(Material.WOODEN_DOOR, (short) 1), new Block(Material.WOODEN_DOOR));
+ similarBlocks.put(new Block(Material.WOODEN_DOOR, (short) 2), new Block(Material.WOODEN_DOOR));
+ similarBlocks.put(new Block(Material.WOODEN_DOOR, (short) 3), new Block(Material.WOODEN_DOOR));
+
+ // Dark Oak Door
+ similarBlocks.put(new Block(Material.DARK_OAK_DOOR, (short) 0), new Block(Material.DARK_OAK_DOOR));
+ similarBlocks.put(new Block(Material.DARK_OAK_DOOR, (short) 1), new Block(Material.DARK_OAK_DOOR));
+ similarBlocks.put(new Block(Material.DARK_OAK_DOOR, (short) 2), new Block(Material.DARK_OAK_DOOR));
+ similarBlocks.put(new Block(Material.DARK_OAK_DOOR, (short) 3), new Block(Material.DARK_OAK_DOOR));
+
+ // Acacia Door
+ similarBlocks.put(new Block(Material.ACACIA_DOOR, (short) 0), new Block(Material.ACACIA_DOOR));
+ similarBlocks.put(new Block(Material.ACACIA_DOOR, (short) 1), new Block(Material.ACACIA_DOOR));
+ similarBlocks.put(new Block(Material.ACACIA_DOOR, (short) 2), new Block(Material.ACACIA_DOOR));
+ similarBlocks.put(new Block(Material.ACACIA_DOOR, (short) 3), new Block(Material.ACACIA_DOOR));
+
+ // Birch Door
+ similarBlocks.put(new Block(Material.BIRCH_DOOR, (short) 0), new Block(Material.BIRCH_DOOR));
+ similarBlocks.put(new Block(Material.BIRCH_DOOR, (short) 1), new Block(Material.BIRCH_DOOR));
+ similarBlocks.put(new Block(Material.BIRCH_DOOR, (short) 2), new Block(Material.BIRCH_DOOR));
+ similarBlocks.put(new Block(Material.BIRCH_DOOR, (short) 3), new Block(Material.BIRCH_DOOR));
+
+ // Jungle Door
+ similarBlocks.put(new Block(Material.JUNGLE_DOOR, (short) 0), new Block(Material.JUNGLE_DOOR));
+ similarBlocks.put(new Block(Material.JUNGLE_DOOR, (short) 1), new Block(Material.JUNGLE_DOOR));
+ similarBlocks.put(new Block(Material.JUNGLE_DOOR, (short) 2), new Block(Material.JUNGLE_DOOR));
+ similarBlocks.put(new Block(Material.JUNGLE_DOOR, (short) 3), new Block(Material.JUNGLE_DOOR));
+
+ // Spruce Door
+ similarBlocks.put(new Block(Material.SPRUCE_DOOR, (short) 0), new Block(Material.SPRUCE_DOOR));
+ similarBlocks.put(new Block(Material.SPRUCE_DOOR, (short) 1), new Block(Material.SPRUCE_DOOR));
+ similarBlocks.put(new Block(Material.SPRUCE_DOOR, (short) 2), new Block(Material.SPRUCE_DOOR));
+ similarBlocks.put(new Block(Material.SPRUCE_DOOR, (short) 3), new Block(Material.SPRUCE_DOOR));
+
+ // Iron Door
+ similarBlocks.put(new Block(Material.IRON_DOOR, (short) 0), new Block(Material.IRON_DOOR));
+ similarBlocks.put(new Block(Material.IRON_DOOR, (short) 1), new Block(Material.IRON_DOOR));
+ similarBlocks.put(new Block(Material.IRON_DOOR, (short) 2), new Block(Material.IRON_DOOR));
+ similarBlocks.put(new Block(Material.IRON_DOOR, (short) 3), new Block(Material.IRON_DOOR));
+
+ // Oak Log
+ similarBlocks.put(new Block(Material.LOG, (short) 4), new Block(Material.LOG, (short) 0));
+ similarBlocks.put(new Block(Material.LOG, (short) 8), new Block(Material.LOG, (short) 0));
+
+ // Spruce Log
+ similarBlocks.put(new Block(Material.LOG, (short) 5), new Block(Material.LOG, (short) 1));
+ similarBlocks.put(new Block(Material.LOG, (short) 9), new Block(Material.LOG, (short) 1));
+
+ // Birch Log
+ similarBlocks.put(new Block(Material.LOG, (short) 6), new Block(Material.LOG, (short) 2));
+ similarBlocks.put(new Block(Material.LOG, (short) 10), new Block(Material.LOG, (short) 2));
+
+ // Jungle Log
+ similarBlocks.put(new Block(Material.LOG, (short) 7), new Block(Material.LOG, (short) 3));
+ similarBlocks.put(new Block(Material.LOG, (short) 11), new Block(Material.LOG, (short) 3));
+
+ // Acacia Log
+ similarBlocks.put(new Block(Material.LOG_2, (short) 4), new Block(Material.LOG, (short) 0));
+ similarBlocks.put(new Block(Material.LOG_2, (short) 8), new Block(Material.LOG, (short) 0));
+
+ // Dark Oak Log
+ similarBlocks.put(new Block(Material.LOG_2, (short) 5), new Block(Material.LOG, (short) 1));
+ similarBlocks.put(new Block(Material.LOG_2, (short) 9), new Block(Material.LOG, (short) 1));
+ }
+
+ public static Block getSimilarBlock(Block block) {
+ for (Map.Entry<Block, Block> entry : similarBlocks.entrySet()) {
+ if (entry.getKey().getMaterial() == block.getMaterial() && entry.getKey().getData() == block.getData()) {
+ return entry.getValue();
+ }
+ }
+ return null;
+ }
+
+}
diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/BuildingCertainTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/BuildingCertainTaskType.java
index 425fd693..5bda96c3 100644
--- a/src/me/fatpigsarefat/quests/quests/tasktypes/types/BuildingCertainTaskType.java
+++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/BuildingCertainTaskType.java
@@ -1,6 +1,8 @@
package me.fatpigsarefat.quests.quests.tasktypes.types;
import me.fatpigsarefat.quests.Quests;
+import me.fatpigsarefat.quests.blocktype.Block;
+import me.fatpigsarefat.quests.blocktype.SimilarBlocks;
import me.fatpigsarefat.quests.player.QPlayer;
import me.fatpigsarefat.quests.player.questprogressfile.QuestProgress;
import me.fatpigsarefat.quests.player.questprogressfile.QuestProgressFile;
@@ -10,6 +12,7 @@ import me.fatpigsarefat.quests.quests.Task;
import me.fatpigsarefat.quests.quests.tasktypes.ConfigValue;
import me.fatpigsarefat.quests.quests.tasktypes.TaskType;
import org.apache.commons.lang.StringUtils;
+import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
@@ -27,6 +30,7 @@ public final class BuildingCertainTaskType extends TaskType {
this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of blocks to be placed."));
this.creatorConfigValues.add(new ConfigValue("block", true, "Name or ID of block."));
this.creatorConfigValues.add(new ConfigValue("data", false, "Data code for block."));
+ this.creatorConfigValues.add(new ConfigValue("use-similar-blocks", false, "If true, this will ignore orientation of doors, logs etc."));
}
@Override
@@ -53,6 +57,7 @@ public final class BuildingCertainTaskType extends TaskType {
Material material;
Object configBlock = task.getConfigValue("block");
Object configData = task.getConfigValue("data");
+ Object configSimilarBlocks = task.getConfigValue("use-similar-blocks");
if (StringUtils.isNumeric(String.valueOf(configBlock))) {
material = Material.getMaterial((int) configBlock);
@@ -60,8 +65,19 @@ public final class BuildingCertainTaskType extends TaskType {
material = Material.getMaterial(String.valueOf(configBlock));
}
- if (material != null && event.getBlock().getType().equals(material)) {
- if (configData != null && (((int) event.getBlock().getData()) != ((int) configData))) {
+ Material blockType = event.getBlock().getType();
+ short blockData = event.getBlock().getData();
+
+ if (configSimilarBlocks != null && ((Boolean) configSimilarBlocks)) {
+ Block block;
+ if ((block = SimilarBlocks.getSimilarBlock(new Block(blockType, blockData))) != null) {
+ blockType = block.getMaterial();
+ blockData = block.getData();
+ }
+ }
+
+ if (blockType.equals(material)) {
+ if (configData != null && (((int) blockData) != ((int) configData))) {
continue;
}
int brokenBlocksNeeded = (int) task.getConfigValue("amount");
diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/InventoryTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/InventoryTaskType.java
index b0b7a1a6..ab3c2af5 100644
--- a/src/me/fatpigsarefat/quests/quests/tasktypes/types/InventoryTaskType.java
+++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/InventoryTaskType.java
@@ -10,22 +10,17 @@ import me.fatpigsarefat.quests.quests.Task;
import me.fatpigsarefat.quests.quests.tasktypes.ConfigValue;
import me.fatpigsarefat.quests.quests.tasktypes.TaskType;
import org.apache.commons.lang.StringUtils;
-import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
-import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryInteractEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
-import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
-import org.bukkit.inventory.PlayerInventory;
import org.bukkit.scheduler.BukkitRunnable;
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
public final class InventoryTaskType extends TaskType {
@@ -35,7 +30,8 @@ public final class InventoryTaskType extends TaskType {
super("inventory", "fatpigsarefat", "Obtain a set of items.");
this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of item to retrieve."));
this.creatorConfigValues.add(new ConfigValue("item", true, "Name or ID of item."));
- this.creatorConfigValues.add(new ConfigValue("remove-items-when-complete", false, "Take the items away from the player on completion (true/false, default = false)."));
+ this.creatorConfigValues.add(new ConfigValue("remove-items-when-complete", false, "Take the items away from the player on completion (true/false, " +
+ "default = false)."));
}
@Override
@@ -106,13 +102,10 @@ public final class InventoryTaskType extends TaskType {
if (player.getInventory().containsAtLeast(is, amount)) {
is.setAmount(amount);
- Map<Integer, ItemStack> failures = player.getInventory().removeItem(is);
- if (failures.size() == 0) {
- taskProgress.setCompleted(true);
+ taskProgress.setCompleted(true);
- if (remove != null && ((Boolean) remove)) {
- player.getInventory().remove(is);
- }
+ if (remove != null && ((Boolean) remove)) {
+ player.getInventory().removeItem(is);
}
}
}
diff --git a/src/me/fatpigsarefat/quests/quests/tasktypes/types/MiningCertainTaskType.java b/src/me/fatpigsarefat/quests/quests/tasktypes/types/MiningCertainTaskType.java
index e375ed43..0199150e 100644
--- a/src/me/fatpigsarefat/quests/quests/tasktypes/types/MiningCertainTaskType.java
+++ b/src/me/fatpigsarefat/quests/quests/tasktypes/types/MiningCertainTaskType.java
@@ -1,6 +1,8 @@
package me.fatpigsarefat.quests.quests.tasktypes.types;
import me.fatpigsarefat.quests.Quests;
+import me.fatpigsarefat.quests.blocktype.Block;
+import me.fatpigsarefat.quests.blocktype.SimilarBlocks;
import me.fatpigsarefat.quests.player.QPlayer;
import me.fatpigsarefat.quests.player.questprogressfile.QuestProgress;
import me.fatpigsarefat.quests.player.questprogressfile.QuestProgressFile;
@@ -27,6 +29,7 @@ public final class MiningCertainTaskType extends TaskType {
this.creatorConfigValues.add(new ConfigValue("amount", true, "Amount of blocks to be broken."));
this.creatorConfigValues.add(new ConfigValue("block", true, "Name or ID of block."));
this.creatorConfigValues.add(new ConfigValue("data", false, "Data code for block."));
+ this.creatorConfigValues.add(new ConfigValue("use-similar-blocks", false, "If true, this will ignore orientation of doors, logs etc."));
}
@Override
@@ -53,6 +56,7 @@ public final class MiningCertainTaskType extends TaskType {
Material material;
Object configBlock = task.getConfigValue("block");
Object configData = task.getConfigValue("data");
+ Object configSimilarBlocks = task.getConfigValue("use-similar-blocks");
if (StringUtils.isNumeric(String.valueOf(configBlock))) {
material = Material.getMaterial((int) configBlock);
@@ -60,8 +64,19 @@ public final class MiningCertainTaskType extends TaskType {
material = Material.getMaterial(String.valueOf(configBlock));
}
- if (material != null && event.getBlock().getType().equals(material)) {
- if (configData != null && (((int) event.getBlock().getData()) != ((int) configData))) {
+ Material blockType = event.getBlock().getType();
+ short blockData = event.getBlock().getData();
+
+ if (configSimilarBlocks != null && ((Boolean) configSimilarBlocks)) {
+ Block block;
+ if ((block = SimilarBlocks.getSimilarBlock(new Block(blockType, blockData))) != null) {
+ blockType = block.getMaterial();
+ blockData = block.getData();
+ }
+ }
+
+ if (blockType.equals(material)) {
+ if (configData != null && (((int) blockData) != ((int) configData))) {
continue;
}
int brokenBlocksNeeded = (int) task.getConfigValue("amount");