NEW conditions editor, part 2

This commit is contained in:
PikaMug 2020-07-13 14:51:17 -04:00
parent e8a920d645
commit a6c9949953
4 changed files with 221 additions and 52 deletions

View File

@ -13,8 +13,10 @@
package me.blackvein.quests.listeners;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@ -29,6 +31,8 @@ import org.bukkit.inventory.ItemStack;
import me.blackvein.quests.Quest;
import me.blackvein.quests.Quester;
import me.blackvein.quests.Quests;
import me.blackvein.quests.Stage;
import me.blackvein.quests.util.Lang;
public class BlockListener implements Listener {
@ -41,20 +45,30 @@ public class BlockListener implements Listener {
@SuppressWarnings("deprecation")
@EventHandler(priority = EventPriority.HIGH) // Because HIGHEST conflicts with AutoSell by extendedclip
public void onBlockBreak(BlockBreakEvent evt) {
if (plugin.canUseQuests(evt.getPlayer().getUniqueId())) {
final Player player = evt.getPlayer();
if (plugin.canUseQuests(player.getUniqueId())) {
final ItemStack blockItemStack = new ItemStack(evt.getBlock().getType(), 1, evt.getBlock().getState()
.getData().toItemStack().getDurability());
Quester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : plugin.getQuests()) {
if (evt.isCancelled() == false) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
player.sendMessage(ChatColor.RED + Lang.get(quester.getPlayer(), "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("breakBlock")) {
if (!evt.getPlayer().getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) {
if (!player.getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) {
quester.breakBlock(quest, blockItemStack);
}
}
quester.dispatchMultiplayerEverything(quest, "breakBlock", (Quester q) -> {
if (!evt.getPlayer().getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) {
if (!player.getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH)) {
q.breakBlock(quest, blockItemStack);
}
return null;
@ -81,12 +95,12 @@ public class BlockListener implements Listener {
});
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("cutBlock")) {
if (evt.getPlayer().getItemInHand().getType().equals(Material.SHEARS)) {
if (player.getItemInHand().getType().equals(Material.SHEARS)) {
quester.cutBlock(quest, blockItemStack);
}
}
quester.dispatchMultiplayerEverything(quest, "cutBlock", (Quester q) -> {
if (evt.getPlayer().getItemInHand().getType().equals(Material.SHEARS)) {
if (player.getItemInHand().getType().equals(Material.SHEARS)) {
q.cutBlock(quest, blockItemStack);
}
return null;
@ -99,11 +113,21 @@ public class BlockListener implements Listener {
@SuppressWarnings("deprecation") // since 1.13
@EventHandler
public void onBlockDamage(BlockDamageEvent evt) {
if (plugin.canUseQuests(evt.getPlayer().getUniqueId())) {
final Player player = evt.getPlayer();
if (plugin.canUseQuests(player.getUniqueId())) {
final ItemStack blockItemStack = new ItemStack(evt.getBlock().getType(), 1, evt.getBlock().getState()
.getData().toItemStack().getDurability());
Quester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
player.sendMessage(ChatColor.RED + Lang.get(quester.getPlayer(), "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("damageBlock")) {
quester.damageBlock(quest, blockItemStack);
@ -120,12 +144,22 @@ public class BlockListener implements Listener {
@SuppressWarnings("deprecation") // since 1.13
@EventHandler(priority = EventPriority.HIGHEST)
public void onBlockPlace(BlockPlaceEvent evt) {
if (plugin.canUseQuests(evt.getPlayer().getUniqueId())) {
final Player player = evt.getPlayer();
if (plugin.canUseQuests(player.getUniqueId())) {
final ItemStack blockItemStack = new ItemStack(evt.getBlock().getType(), 1, evt.getBlock().getState()
.getData().toItemStack().getDurability());
Quester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : plugin.getQuests()) {
if (evt.isCancelled() == false) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
player.sendMessage(ChatColor.RED + Lang.get(quester.getPlayer(), "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("placeBlock")) {
quester.placeBlock(quest, blockItemStack);
@ -150,13 +184,23 @@ public class BlockListener implements Listener {
// Do nothing, getHand() not present pre-1.9
}
if (e == null || e.equals(EquipmentSlot.HAND)) { //If the event is fired by HAND (main hand)
final Player player = evt.getPlayer();
if (plugin.canUseQuests(evt.getPlayer().getUniqueId())) {
final Quester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
final Quester quester = plugin.getQuester(player.getUniqueId());
if (evt.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
if (evt.isCancelled() == false) {
final ItemStack blockItemStack = new ItemStack(evt.getClickedBlock().getType(), 1, evt
.getClickedBlock().getState().getData().toItemStack().getDurability());
for (Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
player.sendMessage(ChatColor.RED + Lang.get(player, "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("useBlock")) {
quester.useBlock(quest, blockItemStack);

View File

@ -13,6 +13,7 @@
package me.blackvein.quests.listeners;
import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
@ -29,6 +30,8 @@ import org.bukkit.inventory.ItemStack;
import me.blackvein.quests.Quest;
import me.blackvein.quests.Quester;
import me.blackvein.quests.Quests;
import me.blackvein.quests.Stage;
import me.blackvein.quests.util.Lang;
public class ItemListener implements Listener {
@ -41,10 +44,20 @@ public class ItemListener implements Listener {
@EventHandler
public void onCraftItem(CraftItemEvent evt) {
if (evt.getWhoClicked() instanceof Player) {
if (plugin.canUseQuests(evt.getWhoClicked().getUniqueId())) {
final Player player = (Player) evt.getWhoClicked();
if (plugin.canUseQuests(player.getUniqueId())) {
final ItemStack craftedItem = getCraftedItem(evt);
Quester quester = plugin.getQuester(evt.getWhoClicked().getUniqueId());
final Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
player.sendMessage(ChatColor.RED + Lang.get(player, "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("craftItem")) {
quester.craftItem(quest, craftedItem);
@ -78,12 +91,22 @@ public class ItemListener implements Listener {
@EventHandler
public void onInventoryClick(InventoryClickEvent evt) {
if (evt.getWhoClicked() instanceof Player) {
final Player player = (Player) evt.getWhoClicked();
if (evt.getInventory().getType() == InventoryType.FURNACE
|| evt.getInventory().getType().name().equals("BLAST_FURNACE")
|| evt.getInventory().getType().name().equals("SMOKER")) {
if (evt.getSlotType() == SlotType.RESULT) {
Quester quester = plugin.getQuester(evt.getWhoClicked().getUniqueId());
final Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
player.sendMessage(ChatColor.RED + Lang.get(player, "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("smeltItem")) {
quester.smeltItem(quest, evt.getCurrentItem());
@ -97,8 +120,17 @@ public class ItemListener implements Listener {
}
} else if (evt.getInventory().getType() == InventoryType.BREWING) {
if (evt.getSlotType() == SlotType.CRAFTING) {
Quester quester = plugin.getQuester(evt.getWhoClicked().getUniqueId());
final Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
player.sendMessage(ChatColor.RED + Lang.get(player, "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("brewItem")) {
quester.brewItem(quest, evt.getCurrentItem());
@ -116,9 +148,19 @@ public class ItemListener implements Listener {
@EventHandler
public void onEnchantItem(EnchantItemEvent evt) {
if (plugin.canUseQuests(evt.getEnchanter().getUniqueId())) {
Quester quester = plugin.getQuester(evt.getEnchanter().getUniqueId());
final Player player = evt.getEnchanter();
if (plugin.canUseQuests(player.getUniqueId())) {
final Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
player.sendMessage(ChatColor.RED + Lang.get(player, "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("enchantItem")) {
for (Enchantment e : evt.getEnchantsToAdd().keySet()) {
@ -142,8 +184,18 @@ public class ItemListener implements Listener {
if (plugin.canUseQuests(evt.getPlayer().getUniqueId())) {
final ItemStack consumedItem = evt.getItem().clone();
consumedItem.setAmount(1);
Quester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
final Player player = evt.getPlayer();
final Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
player.sendMessage(ChatColor.RED + Lang.get(player, "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("consumeItem")) {
quester.consumeItem(quest, consumedItem);

View File

@ -30,7 +30,7 @@ public class PartiesListener implements Listener {
@EventHandler
public void onPartyCreate(BukkitPartiesPartyPostCreateEvent event) {
if (event.getCreator() != null) {
Player p = Bukkit.getServer().getPlayer(event.getCreator().getPlayerUUID());
final Player p = Bukkit.getServer().getPlayer(event.getCreator().getPlayerUUID());
if (p != null) {
if (Lang.get("questPartiesCreate").length() > 0) {
p.sendMessage(ChatColor.YELLOW + Lang.get("questPartiesCreate"));
@ -42,7 +42,7 @@ public class PartiesListener implements Listener {
@EventHandler
public void onPartyDeleteEvent(BukkitPartiesPartyPostDeleteEvent event) {
if (event.getCommandSender() != null) {
Player p = Bukkit.getServer().getPlayer(event.getCommandSender().getPlayerUUID());
final Player p = Bukkit.getServer().getPlayer(event.getCommandSender().getPlayerUUID());
if (p != null) {
if (Lang.get("questPartiesDelete").length() > 0) {
p.sendMessage(ChatColor.RED + Lang.get("questPartiesDelete"));
@ -54,14 +54,14 @@ public class PartiesListener implements Listener {
@EventHandler
public void onPlayerJoinEvent(BukkitPartiesPlayerPostJoinEvent event) {
if (event.isInvited() && event.getInviter() != null) {
Player i = Bukkit.getServer().getPlayer(event.getInviter());
final Player i = Bukkit.getServer().getPlayer(event.getInviter());
if (i != null) {
if (Lang.get("questPartiesInvite").length() > 0) {
i.sendMessage(ChatColor.GREEN + Lang.get(i, "questPartiesInvite").replace("<player>", i.getName()));
}
}
}
Player p = Bukkit.getServer().getPlayer(event.getPartyPlayer().getPlayerUUID());
final Player p = Bukkit.getServer().getPlayer(event.getPartyPlayer().getPlayerUUID());
if (p != null) {
if (Lang.get("questPartiesJoin").length() > 0) {
p.sendMessage(ChatColor.GREEN + Lang.get(p, "questPartiesJoin").replace("<player>", p.getName()));
@ -72,14 +72,14 @@ public class PartiesListener implements Listener {
@EventHandler
public void onPlayerLeaveEvent(BukkitPartiesPlayerPostLeaveEvent event) {
if (event.isKicked() && event.getKicker() != null) {
Player k = Bukkit.getServer().getPlayer(event.getKicker().getPlayerUUID());
final Player k = Bukkit.getServer().getPlayer(event.getKicker().getPlayerUUID());
if (k != null) {
if (Lang.get("questPartiesKicked").length() > 0) {
k.sendMessage(ChatColor.RED + Lang.get(k, "questPartiesKicked").replace("<player>", k.getName()));
}
}
}
Player p = Bukkit.getServer().getPlayer(event.getPartyPlayer().getPlayerUUID());
final Player p = Bukkit.getServer().getPlayer(event.getPartyPlayer().getPlayerUUID());
if (p != null) {
if (Lang.get("questPartiesLeave").length() > 0) {
p.sendMessage(ChatColor.RED + Lang.get(p, "questPartiesLeave").replace("<player>", p.getName()));

View File

@ -107,8 +107,8 @@ public class PlayerListener implements Listener {
return;
}
}
Quester quester = plugin.getQuester(evt.getWhoClicked().getUniqueId());
Player player = (Player) evt.getWhoClicked();
final Quester quester = plugin.getQuester(evt.getWhoClicked().getUniqueId());
final Player player = (Player) evt.getWhoClicked();
if (evt.getView().getTitle().contains(Lang.get(player, "quests"))) {
ItemStack clicked = evt.getCurrentItem();
if (clicked != null) {
@ -373,10 +373,19 @@ public class PlayerListener implements Listener {
@EventHandler
public void onPlayerBucketFill(PlayerBucketFillEvent evt) {
if (evt.getItemStack().getType() == Material.MILK_BUCKET) {
Player player = evt.getPlayer();
final Player player = evt.getPlayer();
if (plugin.canUseQuests(player.getUniqueId())) {
Quester quester = plugin.getQuester(player.getUniqueId());
final Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
player.sendMessage(ChatColor.RED + Lang.get(quester.getPlayer(), "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("milkCow")) {
quester.milkCow(quest);
@ -396,6 +405,15 @@ public class PlayerListener implements Listener {
if (plugin.canUseQuests(evt.getPlayer().getUniqueId())) {
final Quester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
for (final Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
evt.getPlayer().sendMessage(ChatColor.RED + Lang.get(quester.getPlayer(), "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)) {
final Stage currentStage = quester.getCurrentStage(quest);
if (currentStage == null) {
@ -437,7 +455,7 @@ public class PlayerListener implements Listener {
@EventHandler
public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent evt) {
if (plugin.canUseQuests(evt.getPlayer().getUniqueId())) {
Quester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
final Quester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
if (quester.getCurrentQuests().isEmpty() == false) {
for (Quest quest : quester.getCurrentQuests().keySet()) {
if (!quest.getOptions().getAllowCommands()) {
@ -477,10 +495,20 @@ public class PlayerListener implements Listener {
@EventHandler
public void onPlayerShearEntity(PlayerShearEntityEvent evt) {
if (evt.getEntity().getType() == EntityType.SHEEP) {
if (plugin.canUseQuests(evt.getPlayer().getUniqueId())) {
Sheep sheep = (Sheep) evt.getEntity();
Quester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
final Player player = evt.getPlayer();
if (plugin.canUseQuests(player.getUniqueId())) {
final Sheep sheep = (Sheep) evt.getEntity();
final Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
player.sendMessage(ChatColor.RED + Lang.get(quester.getPlayer(), "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("shearSheep")) {
quester.shearSheep(quest, sheep.getColor());
@ -498,10 +526,19 @@ public class PlayerListener implements Listener {
@EventHandler
public void onEntityTame(EntityTameEvent evt) {
if (evt.getOwner() instanceof Player) {
Player p = (Player) evt.getOwner();
if (plugin.canUseQuests(p.getUniqueId())) {
Quester quester = plugin.getQuester(p.getUniqueId());
final Player player = (Player) evt.getOwner();
if (plugin.canUseQuests(player.getUniqueId())) {
final Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
player.sendMessage(ChatColor.RED + Lang.get(quester.getPlayer(), "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("tameMob")) {
quester.tameMob(quest, evt.getEntityType());
@ -520,7 +557,7 @@ public class PlayerListener implements Listener {
public void onEntityDeath(EntityDeathEvent evt) {
if (evt.getEntity().getLastDamageCause() instanceof EntityDamageByEntityEvent) {
EntityDamageByEntityEvent damageEvent = (EntityDamageByEntityEvent) evt.getEntity().getLastDamageCause();
Entity damager = damageEvent.getDamager();
final Entity damager = damageEvent.getDamager();
if (damager != null) {
if (damager instanceof Projectile) {
@ -537,7 +574,7 @@ public class PlayerListener implements Listener {
} else if (damager instanceof Wolf) {
Wolf wolf = (Wolf) damager;
if (wolf.isTamed() && wolf.getOwner() != null) {
Quester quester = plugin.getQuester(wolf.getOwner().getUniqueId());
final Quester quester = plugin.getQuester(wolf.getOwner().getUniqueId());
if (quester != null) {
preKillPlayer(quester.getPlayer(), evt.getEntity());
}
@ -561,9 +598,18 @@ public class PlayerListener implements Listener {
return;
}
if (damager instanceof Player) {
Quester quester = plugin.getQuester(damager.getUniqueId());
final Quester quester = plugin.getQuester(damager.getUniqueId());
if (plugin.getDependencies().getCitizens() != null && CitizensAPI.getNPCRegistry().isNPC(target)) {
for (Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
damager.sendMessage(ChatColor.RED + Lang.get(quester.getPlayer(), "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("killNPC")) {
quester.killNPC(quest, CitizensAPI.getNPCRegistry().getNPC(target));
@ -603,7 +649,7 @@ public class PlayerListener implements Listener {
public void onPlayerDeath(PlayerDeathEvent evt) {
if (evt.getEntity().getLastDamageCause() instanceof EntityDamageByEntityEvent) {
EntityDamageByEntityEvent damageEvent = (EntityDamageByEntityEvent) evt.getEntity().getLastDamageCause();
Entity damager = damageEvent.getDamager();
final Entity damager = damageEvent.getDamager();
if (damager != null) {
//Ignore suicide
@ -626,7 +672,7 @@ public class PlayerListener implements Listener {
} else if (damager instanceof Wolf) {
Wolf wolf = (Wolf) damager;
if (wolf.isTamed()) {
Quester quester = plugin.getQuester(wolf.getOwner().getUniqueId());
final Quester quester = plugin.getQuester(wolf.getOwner().getUniqueId());
preKillPlayer(quester.getPlayer(), evt.getEntity());
}
} else {
@ -635,9 +681,9 @@ public class PlayerListener implements Listener {
}
}
Player target = evt.getEntity();
final Player target = evt.getEntity();
if (plugin.canUseQuests(target.getUniqueId())) {
Quester quester = plugin.getQuester(target.getUniqueId());
final Quester quester = plugin.getQuester(target.getUniqueId());
for (Quest quest : quester.getCurrentQuests().keySet()) {
Stage stage = quester.getCurrentStage(quest);
if (stage != null && stage.getDeathAction() != null) {
@ -653,7 +699,7 @@ public class PlayerListener implements Listener {
}
}
if (found != null) {
Quester quester = plugin.getQuester(target.getUniqueId());
final Quester quester = plugin.getQuester(target.getUniqueId());
evt.getDrops().remove(found);
quester.hasJournal = false;
}
@ -682,8 +728,17 @@ public class PlayerListener implements Listener {
return;
}
}
Quester quester = plugin.getQuester(damager.getUniqueId());
final Quester quester = plugin.getQuester(damager.getUniqueId());
for (Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
damager.sendMessage(ChatColor.RED + Lang.get(quester.getPlayer(), "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("killPlayer")) {
quester.killPlayer(quest, (Player)target);
@ -699,10 +754,19 @@ public class PlayerListener implements Listener {
@EventHandler
public void onPlayerFish(PlayerFishEvent evt) {
Player player = evt.getPlayer();
final Player player = evt.getPlayer();
if (plugin.canUseQuests(player.getUniqueId())) {
Quester quester = plugin.getQuester(player.getUniqueId());
final Quester quester = plugin.getQuester(player.getUniqueId());
for (Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
player.sendMessage(ChatColor.RED + Lang.get(quester.getPlayer(), "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)
&& quester.getCurrentStage(quest).containsObjective("catchFish")
&& evt.getState().equals(State.CAUGHT_FISH)) {
@ -719,16 +783,16 @@ public class PlayerListener implements Listener {
@EventHandler
public void onPlayerChangeWorld(PlayerChangedWorldEvent event) {
Player player = event.getPlayer();
final Player player = event.getPlayer();
if (plugin.canUseQuests(player.getUniqueId())) {
Quester quester = plugin.getQuester(player.getUniqueId());
final Quester quester = plugin.getQuester(player.getUniqueId());
quester.findCompassTarget();
}
}
@EventHandler
public void onPlayerRespawn(PlayerRespawnEvent event) {
Player player = event.getPlayer();
final Player player = event.getPlayer();
if (plugin.canUseQuests(player.getUniqueId())) {
final Quester quester = plugin.getQuester(player.getUniqueId());
Bukkit.getScheduler().runTaskLater(plugin, new Runnable() {
@ -744,7 +808,7 @@ public class PlayerListener implements Listener {
@EventHandler
public void onPlayerJoin(PlayerJoinEvent evt) {
if (plugin.canUseQuests(evt.getPlayer().getUniqueId())) {
Quester quester = new Quester(plugin);
final Quester quester = new Quester(plugin);
quester.setUUID(evt.getPlayer().getUniqueId());
if (new File(plugin.getDataFolder(), "data" + File.separator + quester.getUUID() + ".yml").exists()) {
quester.loadData();
@ -783,7 +847,7 @@ public class PlayerListener implements Listener {
@EventHandler
public void onPlayerQuit(PlayerQuitEvent evt) {
if (plugin.canUseQuests(evt.getPlayer().getUniqueId())) {
Quester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
final Quester quester = plugin.getQuester(evt.getPlayer().getUniqueId());
for (Quest quest : quester.getCurrentQuests().keySet()) {
Stage currentStage = quester.getCurrentStage(quest);
if (currentStage == null) {
@ -851,8 +915,17 @@ public class PlayerListener implements Listener {
public void playerMove(UUID uuid, Location location) {
if (plugin.getQuester(uuid) != null) {
if (plugin.canUseQuests(uuid)) {
Quester quester = plugin.getQuester(uuid);
final Quester quester = plugin.getQuester(uuid);
for (Quest quest : plugin.getQuests()) {
final Stage stage = quester.getCurrentStage(quest);
if (stage != null && !stage.getCondition().check(quester, quest)) {
quester.getPlayer().sendMessage(ChatColor.RED + Lang.get(quester.getPlayer(), "conditionFail"));
if (stage.getCondition().isFailQuest()) {
quester.hardQuit(quest);
}
return;
}
if (quester.getCurrentQuests().containsKey(quest)) {
if (quester.getCurrentStage(quest) != null
&& quester.getCurrentStage(quest).containsObjective("reachLocation")) {