mirror of
https://github.com/PikaMug/Quests.git
synced 2025-02-18 05:21:20 +01:00
Unstable
This commit is contained in:
parent
7bce096fc9
commit
088bdf99f1
@ -24,9 +24,9 @@ public class NpcListener implements Listener {
|
|||||||
|
|
||||||
if (plugin.questNPCs.contains(evt.getNPC())) {
|
if (plugin.questNPCs.contains(evt.getNPC())) {
|
||||||
|
|
||||||
final Player player = evt.getClicker();
|
final Player player = evt.getClicker();
|
||||||
|
|
||||||
if(plugin.checkQuester(player.getName()) == false){
|
if (plugin.checkQuester(player.getName()) == false) {
|
||||||
|
|
||||||
final Quester quester = plugin.getQuester(player.getName());
|
final Quester quester = plugin.getQuester(player.getName());
|
||||||
if (quester.hasObjective("talkToNPC")) {
|
if (quester.hasObjective("talkToNPC")) {
|
||||||
@ -85,8 +85,6 @@ public class NpcListener implements Listener {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -41,53 +41,57 @@ public class PlayerListener implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerInteract(PlayerInteractEvent evt) {
|
public void onPlayerInteract(PlayerInteractEvent evt) {
|
||||||
|
|
||||||
if (evt.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
|
if (plugin.checkQuester(evt.getPlayer().getName()) == false) {
|
||||||
|
|
||||||
final Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
if (evt.getAction().equals(Action.RIGHT_CLICK_BLOCK)) {
|
||||||
final Player player = evt.getPlayer();
|
|
||||||
|
|
||||||
if (quester.hasObjective("useBlock")) {
|
final Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
||||||
|
final Player player = evt.getPlayer();
|
||||||
|
|
||||||
quester.useBlock(evt.getClickedBlock().getType());
|
if (quester.hasObjective("useBlock")) {
|
||||||
|
|
||||||
} else {
|
quester.useBlock(evt.getClickedBlock().getType());
|
||||||
|
|
||||||
for (final Quest q : plugin.quests) {
|
} else {
|
||||||
|
|
||||||
if (q.blockStart != null) {
|
for (final Quest q : plugin.quests) {
|
||||||
|
|
||||||
if (q.blockStart.equals(evt.getClickedBlock().getLocation())) {
|
if (q.blockStart != null) {
|
||||||
|
|
||||||
if (quester.currentQuest != null) {
|
if (q.blockStart.equals(evt.getClickedBlock().getLocation())) {
|
||||||
|
|
||||||
player.sendMessage(ChatColor.YELLOW + "You may only have one active Quest.");
|
if (quester.currentQuest != null) {
|
||||||
|
|
||||||
} else {
|
player.sendMessage(ChatColor.YELLOW + "You may only have one active Quest.");
|
||||||
|
|
||||||
if (quester.completedQuests.contains(q.name)) {
|
} else {
|
||||||
|
|
||||||
if (q.redoDelay < 0 || q.redoDelay > -1 && (quester.getDifference(q)) > 0) {
|
if (quester.completedQuests.contains(q.name)) {
|
||||||
|
|
||||||
player.sendMessage(ChatColor.YELLOW + "You may not take " + ChatColor.AQUA + q.name + ChatColor.YELLOW + " again for another " + ChatColor.DARK_PURPLE + Quests.getTime(quester.getDifference(q)) + ChatColor.YELLOW + ".");
|
if (q.redoDelay < 0 || q.redoDelay > -1 && (quester.getDifference(q)) > 0) {
|
||||||
return;
|
|
||||||
|
player.sendMessage(ChatColor.YELLOW + "You may not take " + ChatColor.AQUA + q.name + ChatColor.YELLOW + " again for another " + ChatColor.DARK_PURPLE + Quests.getTime(quester.getDifference(q)) + ChatColor.YELLOW + ".");
|
||||||
|
return;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
quester.questToTake = q.name;
|
||||||
|
|
||||||
|
String s =
|
||||||
|
ChatColor.GOLD + "- " + ChatColor.DARK_PURPLE + quester.questToTake + ChatColor.GOLD + " -\n"
|
||||||
|
+ "\n"
|
||||||
|
+ ChatColor.RESET + plugin.getQuest(quester.questToTake).description + "\n";
|
||||||
|
|
||||||
|
player.sendMessage(s);
|
||||||
|
plugin.conversationFactory.buildConversation((Conversable) player).begin();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
quester.questToTake = q.name;
|
break;
|
||||||
|
|
||||||
String s =
|
|
||||||
ChatColor.GOLD + "- " + ChatColor.DARK_PURPLE + quester.questToTake + ChatColor.GOLD + " -\n"
|
|
||||||
+ "\n"
|
|
||||||
+ ChatColor.RESET + plugin.getQuest(quester.questToTake).description + "\n";
|
|
||||||
|
|
||||||
player.sendMessage(s);
|
|
||||||
plugin.conversationFactory.buildConversation((Conversable) player).begin();
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -103,10 +107,14 @@ public class PlayerListener implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onBlockDamage(BlockDamageEvent evt) {
|
public void onBlockDamage(BlockDamageEvent evt) {
|
||||||
|
|
||||||
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
if (plugin.checkQuester(evt.getPlayer().getName()) == false) {
|
||||||
if (quester.hasObjective("damageBlock")) {
|
|
||||||
|
|
||||||
quester.damageBlock(evt.getBlock().getType());
|
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
||||||
|
if (quester.hasObjective("damageBlock")) {
|
||||||
|
|
||||||
|
quester.damageBlock(evt.getBlock().getType());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -115,7 +123,7 @@ public class PlayerListener implements Listener {
|
|||||||
@EventHandler(priority = EventPriority.HIGHEST)
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
public void onBlockPlace(BlockPlaceEvent evt) {
|
public void onBlockPlace(BlockPlaceEvent evt) {
|
||||||
|
|
||||||
if (evt.getPlayer().getName().toLowerCase().contains("_computercraft_") == false && evt.getPlayer().getName().toLowerCase().contains("_buildcraft_") == false && evt.getPlayer().getName().toLowerCase().contains("_redpower_") == false && evt.getPlayer().getName().toLowerCase().contains("_buildcraft_") == false && evt.getPlayer().getName().toLowerCase().contains("(buildcraft)") == false) {
|
if (plugin.checkQuester(evt.getPlayer().getName()) == false) {
|
||||||
|
|
||||||
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
||||||
if (quester.hasObjective("placeBlock")) {
|
if (quester.hasObjective("placeBlock")) {
|
||||||
@ -133,38 +141,42 @@ public class PlayerListener implements Listener {
|
|||||||
@EventHandler(priority = EventPriority.HIGHEST)
|
@EventHandler(priority = EventPriority.HIGHEST)
|
||||||
public void onBlockBreak(BlockBreakEvent evt) {
|
public void onBlockBreak(BlockBreakEvent evt) {
|
||||||
|
|
||||||
boolean canOpen = true;
|
if (plugin.checkQuester(evt.getPlayer().getName()) == false) {
|
||||||
|
|
||||||
if (canOpen == true) {
|
boolean canOpen = true;
|
||||||
|
|
||||||
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
if (canOpen == true) {
|
||||||
if (quester.hasObjective("breakBlock")) {
|
|
||||||
|
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
||||||
|
if (quester.hasObjective("breakBlock")) {
|
||||||
|
|
||||||
|
if (evt.getPlayer().getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH) == false && evt.isCancelled() == false) {
|
||||||
|
quester.breakBlock(evt.getBlock().getType());
|
||||||
|
}
|
||||||
|
|
||||||
if (evt.getPlayer().getItemInHand().containsEnchantment(Enchantment.SILK_TOUCH) == false && evt.isCancelled() == false) {
|
|
||||||
quester.breakBlock(evt.getBlock().getType());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
if (quester.hasObjective("placeBlock")) {
|
||||||
|
|
||||||
if (quester.hasObjective("placeBlock")) {
|
if (quester.blocksPlaced.containsKey(evt.getBlock().getType())) {
|
||||||
|
|
||||||
if (quester.blocksPlaced.containsKey(evt.getBlock().getType())) {
|
if (quester.blocksPlaced.get(evt.getBlock().getType()) > 0) {
|
||||||
|
|
||||||
if (quester.blocksPlaced.get(evt.getBlock().getType()) > 0) {
|
if (evt.isCancelled() == false) {
|
||||||
|
quester.blocksPlaced.put(evt.getBlock().getType(), quester.blocksPlaced.get(evt.getBlock().getType()) - 1);
|
||||||
|
}
|
||||||
|
|
||||||
if (evt.isCancelled() == false) {
|
|
||||||
quester.blocksPlaced.put(evt.getBlock().getType(), quester.blocksPlaced.get(evt.getBlock().getType()) - 1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
if (evt.getPlayer().getItemInHand().getType().equals(Material.SHEARS) && quester.hasObjective("cutBlock")) {
|
||||||
|
|
||||||
if (evt.getPlayer().getItemInHand().getType().equals(Material.SHEARS) && quester.hasObjective("cutBlock")) {
|
quester.cutBlock(evt.getBlock().getType());
|
||||||
|
|
||||||
quester.cutBlock(evt.getBlock().getType());
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -175,10 +187,14 @@ public class PlayerListener implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerPickupItem(PlayerPickupItemEvent evt) {
|
public void onPlayerPickupItem(PlayerPickupItemEvent evt) {
|
||||||
|
|
||||||
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
if (plugin.checkQuester(evt.getPlayer().getName()) == false) {
|
||||||
if (quester.hasObjective("collectItem")) {
|
|
||||||
|
|
||||||
quester.collectItem(evt.getItem().getItemStack());
|
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
||||||
|
if (quester.hasObjective("collectItem")) {
|
||||||
|
|
||||||
|
quester.collectItem(evt.getItem().getItemStack());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -187,11 +203,15 @@ public class PlayerListener implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerShearEntity(PlayerShearEntityEvent evt) {
|
public void onPlayerShearEntity(PlayerShearEntityEvent evt) {
|
||||||
|
|
||||||
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
if (plugin.checkQuester(evt.getPlayer().getName()) == false) {
|
||||||
if (evt.getEntity().getType().equals(EntityType.SHEEP) && quester.hasObjective("shearSheep")) {
|
|
||||||
|
|
||||||
Sheep sheep = (Sheep) evt.getEntity();
|
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
||||||
quester.shearSheep(sheep.getColor());
|
if (evt.getEntity().getType().equals(EntityType.SHEEP) && quester.hasObjective("shearSheep")) {
|
||||||
|
|
||||||
|
Sheep sheep = (Sheep) evt.getEntity();
|
||||||
|
quester.shearSheep(sheep.getColor());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -203,10 +223,14 @@ public class PlayerListener implements Listener {
|
|||||||
if (evt.getOwner() instanceof Player) {
|
if (evt.getOwner() instanceof Player) {
|
||||||
|
|
||||||
Player p = (Player) evt.getOwner();
|
Player p = (Player) evt.getOwner();
|
||||||
Quester quester = plugin.getQuester(p.getName());
|
if (plugin.checkQuester(p.getName()) == false) {
|
||||||
if (quester.hasObjective("tameMob")) {
|
|
||||||
|
|
||||||
quester.tameMob(evt.getEntityType());
|
Quester quester = plugin.getQuester(p.getName());
|
||||||
|
if (quester.hasObjective("tameMob")) {
|
||||||
|
|
||||||
|
quester.tameMob(evt.getEntityType());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -217,12 +241,16 @@ public class PlayerListener implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onEnchantItem(EnchantItemEvent evt) {
|
public void onEnchantItem(EnchantItemEvent evt) {
|
||||||
|
|
||||||
Quester quester = plugin.getQuester(evt.getEnchanter().getName());
|
if (plugin.checkQuester(evt.getEnchanter().getName()) == false) {
|
||||||
if (quester.hasObjective("enchantItem")) {
|
|
||||||
|
|
||||||
for (Enchantment e : evt.getEnchantsToAdd().keySet()) {
|
Quester quester = plugin.getQuester(evt.getEnchanter().getName());
|
||||||
|
if (quester.hasObjective("enchantItem")) {
|
||||||
|
|
||||||
quester.enchantItem(e, evt.getItem().getType());
|
for (Enchantment e : evt.getEnchantsToAdd().keySet()) {
|
||||||
|
|
||||||
|
quester.enchantItem(e, evt.getItem().getType());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -236,10 +264,14 @@ public class PlayerListener implements Listener {
|
|||||||
if (evt.getWhoClicked() instanceof Player) {
|
if (evt.getWhoClicked() instanceof Player) {
|
||||||
|
|
||||||
Player p = (Player) evt.getWhoClicked();
|
Player p = (Player) evt.getWhoClicked();
|
||||||
Quester quester = plugin.getQuester(p.getName());
|
if (plugin.checkQuester(p.getName()) == false) {
|
||||||
if (quester.hasObjective("craftItem")) {
|
|
||||||
|
|
||||||
quester.craftItem(evt.getCurrentItem());
|
Quester quester = plugin.getQuester(p.getName());
|
||||||
|
if (quester.hasObjective("craftItem")) {
|
||||||
|
|
||||||
|
quester.craftItem(evt.getCurrentItem());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -248,15 +280,19 @@ public class PlayerListener implements Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onInventoryClose(InventoryCloseEvent evt){
|
public void onInventoryClose(InventoryCloseEvent evt) {
|
||||||
|
|
||||||
if(evt.getPlayer() instanceof Player){
|
if (evt.getPlayer() instanceof Player) {
|
||||||
|
|
||||||
|
if (plugin.checkQuester(evt.getPlayer().getName()) == false) {
|
||||||
|
|
||||||
|
Quester quester = plugin.getQuester(((Player) evt.getPlayer()).getName());
|
||||||
|
if (quester.holdingQuestItemFromStorage) {
|
||||||
|
quester.collectItem(evt.getView().getCursor());
|
||||||
|
}
|
||||||
|
quester.holdingQuestItemFromStorage = false;
|
||||||
|
|
||||||
Quester quester = plugin.getQuester(((Player)evt.getPlayer()).getName());
|
|
||||||
if(quester.holdingQuestItemFromStorage){
|
|
||||||
quester.collectItem(evt.getView().getCursor());
|
|
||||||
}
|
}
|
||||||
quester.holdingQuestItemFromStorage = false;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -332,164 +368,174 @@ public class PlayerListener implements Listener {
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@EventHandler (priority = EventPriority.LOWEST)
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
public void onInventoryClick(InventoryClickEvent evt) {
|
public void onInventoryClick(InventoryClickEvent evt) {
|
||||||
|
|
||||||
Player player = null;
|
Player player = null;
|
||||||
if(evt.getWhoClicked() instanceof Player)
|
if (evt.getWhoClicked() instanceof Player) {
|
||||||
player = (Player) evt.getWhoClicked();
|
player = (Player) evt.getWhoClicked();
|
||||||
|
}
|
||||||
|
|
||||||
if(evt.isShiftClick() == false){
|
if (player != null) {
|
||||||
|
|
||||||
if (player != null && evt.getCursor() != null && evt.getCurrentItem() == null) {
|
if (plugin.checkQuester(player.getName()) == false) {
|
||||||
|
|
||||||
Quester quester = plugin.getQuester(evt.getWhoClicked().getName());
|
if (evt.isShiftClick() == false) {
|
||||||
if (quester.currentQuest != null) {
|
|
||||||
|
|
||||||
if (quester.currentQuest.questItems.containsKey(evt.getCursor().getType())) {
|
if (evt.getCursor() != null && evt.getCurrentItem() == null) {
|
||||||
|
|
||||||
//Placing Quest item in empty slot
|
Quester quester = plugin.getQuester(evt.getWhoClicked().getName());
|
||||||
|
if (quester.currentQuest != null) {
|
||||||
|
|
||||||
String s = Quester.checkPlacement(evt.getInventory(), evt.getRawSlot());
|
if (quester.currentQuest.questItems.containsKey(evt.getCursor().getType())) {
|
||||||
if (s == null) {
|
|
||||||
//Placing Quest item in an allowed player inventory slot
|
|
||||||
if (quester.holdingQuestItemFromStorage) {
|
|
||||||
quester.collectItem(evt.getCursor());
|
|
||||||
quester.holdingQuestItemFromStorage = false;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
player.sendMessage(ChatColor.YELLOW + s);
|
|
||||||
evt.setCancelled(true);
|
|
||||||
player.updateInventory();
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
//Placing Quest item in empty slot
|
||||||
|
|
||||||
}
|
String s = Quester.checkPlacement(evt.getInventory(), evt.getRawSlot());
|
||||||
|
if (s == null) {
|
||||||
} else if (player != null && evt.getCursor() != null && evt.getCurrentItem() != null) {
|
//Placing Quest item in an allowed player inventory slot
|
||||||
|
if (quester.holdingQuestItemFromStorage) {
|
||||||
Quester quester = plugin.getQuester(evt.getWhoClicked().getName());
|
quester.collectItem(evt.getCursor());
|
||||||
if (quester.currentQuest != null) {
|
|
||||||
|
|
||||||
if (quester.currentQuest.questItems.containsKey(evt.getCurrentItem().getType()) || quester.currentQuest.questItems.containsKey(evt.getCursor().getType())) {
|
|
||||||
|
|
||||||
//Either the cursor item or the slot item (or both) is a Quest item
|
|
||||||
|
|
||||||
Material cursor = evt.getCursor().getType();
|
|
||||||
Material slot = evt.getCurrentItem().getType();
|
|
||||||
|
|
||||||
|
|
||||||
if (cursor == slot && quester.currentQuest.questItems.containsKey(cursor)) {
|
|
||||||
|
|
||||||
//Both are the same item, and quest items
|
|
||||||
String s = Quester.checkPlacement(evt.getInventory(), evt.getRawSlot());
|
|
||||||
if(s == null){
|
|
||||||
|
|
||||||
ItemStack from = evt.getCursor();
|
|
||||||
ItemStack to = evt.getCurrentItem();
|
|
||||||
|
|
||||||
if((from.getAmount() + to.getAmount()) <= from.getMaxStackSize()){
|
|
||||||
if(quester.holdingQuestItemFromStorage){
|
|
||||||
quester.collectItem(from);
|
|
||||||
quester.holdingQuestItemFromStorage = false;
|
|
||||||
}
|
|
||||||
}else if((from.getAmount() + to.getAmount()) > from.getMaxStackSize() && to.getAmount() < to.getMaxStackSize()){
|
|
||||||
if(quester.holdingQuestItemFromStorage){
|
|
||||||
ItemStack difference = to.clone();
|
|
||||||
difference.setAmount(difference.getMaxStackSize() - difference.getAmount());
|
|
||||||
quester.collectItem(difference);
|
|
||||||
quester.holdingQuestItemFromStorage = false;
|
quester.holdingQuestItemFromStorage = false;
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
player.sendMessage(ChatColor.YELLOW + s);
|
||||||
|
evt.setCancelled(true);
|
||||||
|
player.updateInventory();
|
||||||
}
|
}
|
||||||
|
|
||||||
}else{
|
|
||||||
player.sendMessage(ChatColor.YELLOW + s);
|
|
||||||
evt.setCancelled(true);
|
|
||||||
player.updateInventory();
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (cursor != slot && quester.currentQuest.questItems.containsKey(cursor)) {
|
|
||||||
|
|
||||||
//Cursor is a quest item, item in clicked slot is not
|
|
||||||
String s = Quester.checkPlacement(evt.getInventory(), evt.getRawSlot());
|
|
||||||
if (quester.holdingQuestItemFromStorage && s == null) {
|
|
||||||
quester.collectItem(evt.getCursor());
|
|
||||||
quester.holdingQuestItemFromStorage = false;
|
|
||||||
} else if (s != null) {
|
|
||||||
player.sendMessage(ChatColor.YELLOW + s);
|
|
||||||
evt.setCancelled(true);
|
|
||||||
player.updateInventory();
|
|
||||||
}
|
|
||||||
|
|
||||||
} else if (cursor != slot && quester.currentQuest.questItems.containsKey(slot)) {
|
|
||||||
|
|
||||||
//Item in clicked slot is a quest item, cursor is not
|
|
||||||
String s = Quester.checkPlacement(evt.getInventory(), evt.getRawSlot());
|
|
||||||
if(s != null)
|
|
||||||
quester.holdingQuestItemFromStorage = true;
|
|
||||||
|
|
||||||
} else {
|
|
||||||
|
|
||||||
//Both are different quest items
|
|
||||||
String s = Quester.checkPlacement(evt.getInventory(), evt.getRawSlot());
|
|
||||||
if (quester.holdingQuestItemFromStorage && s == null) {
|
|
||||||
quester.collectItem(evt.getCursor());
|
|
||||||
quester.holdingQuestItemFromStorage = false;
|
|
||||||
} else if (s != null) {
|
|
||||||
player.sendMessage(ChatColor.YELLOW + s);
|
|
||||||
evt.setCancelled(true);
|
|
||||||
player.updateInventory();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
} else if (evt.getCursor() != null && evt.getCurrentItem() != null) {
|
||||||
|
|
||||||
|
Quester quester = plugin.getQuester(evt.getWhoClicked().getName());
|
||||||
|
if (quester.currentQuest != null) {
|
||||||
|
|
||||||
|
if (quester.currentQuest.questItems.containsKey(evt.getCurrentItem().getType()) || quester.currentQuest.questItems.containsKey(evt.getCursor().getType())) {
|
||||||
|
|
||||||
|
//Either the cursor item or the slot item (or both) is a Quest item
|
||||||
|
|
||||||
|
Material cursor = evt.getCursor().getType();
|
||||||
|
Material slot = evt.getCurrentItem().getType();
|
||||||
|
|
||||||
|
|
||||||
|
if (cursor == slot && quester.currentQuest.questItems.containsKey(cursor)) {
|
||||||
|
|
||||||
|
//Both are the same item, and quest items
|
||||||
|
String s = Quester.checkPlacement(evt.getInventory(), evt.getRawSlot());
|
||||||
|
if (s == null) {
|
||||||
|
|
||||||
|
ItemStack from = evt.getCursor();
|
||||||
|
ItemStack to = evt.getCurrentItem();
|
||||||
|
|
||||||
|
if ((from.getAmount() + to.getAmount()) <= from.getMaxStackSize()) {
|
||||||
|
if (quester.holdingQuestItemFromStorage) {
|
||||||
|
quester.collectItem(from);
|
||||||
|
quester.holdingQuestItemFromStorage = false;
|
||||||
|
}
|
||||||
|
} else if ((from.getAmount() + to.getAmount()) > from.getMaxStackSize() && to.getAmount() < to.getMaxStackSize()) {
|
||||||
|
if (quester.holdingQuestItemFromStorage) {
|
||||||
|
ItemStack difference = to.clone();
|
||||||
|
difference.setAmount(difference.getMaxStackSize() - difference.getAmount());
|
||||||
|
quester.collectItem(difference);
|
||||||
|
quester.holdingQuestItemFromStorage = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
player.sendMessage(ChatColor.YELLOW + s);
|
||||||
|
evt.setCancelled(true);
|
||||||
|
player.updateInventory();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (cursor != slot && quester.currentQuest.questItems.containsKey(cursor)) {
|
||||||
|
|
||||||
|
//Cursor is a quest item, item in clicked slot is not
|
||||||
|
String s = Quester.checkPlacement(evt.getInventory(), evt.getRawSlot());
|
||||||
|
if (quester.holdingQuestItemFromStorage && s == null) {
|
||||||
|
quester.collectItem(evt.getCursor());
|
||||||
|
quester.holdingQuestItemFromStorage = false;
|
||||||
|
} else if (s != null) {
|
||||||
|
player.sendMessage(ChatColor.YELLOW + s);
|
||||||
|
evt.setCancelled(true);
|
||||||
|
player.updateInventory();
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (cursor != slot && quester.currentQuest.questItems.containsKey(slot)) {
|
||||||
|
|
||||||
|
//Item in clicked slot is a quest item, cursor is not
|
||||||
|
String s = Quester.checkPlacement(evt.getInventory(), evt.getRawSlot());
|
||||||
|
if (s != null) {
|
||||||
|
quester.holdingQuestItemFromStorage = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
|
||||||
|
//Both are different quest items
|
||||||
|
String s = Quester.checkPlacement(evt.getInventory(), evt.getRawSlot());
|
||||||
|
if (quester.holdingQuestItemFromStorage && s == null) {
|
||||||
|
quester.collectItem(evt.getCursor());
|
||||||
|
quester.holdingQuestItemFromStorage = false;
|
||||||
|
} else if (s != null) {
|
||||||
|
player.sendMessage(ChatColor.YELLOW + s);
|
||||||
|
evt.setCancelled(true);
|
||||||
|
player.updateInventory();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
} else {
|
||||||
|
|
||||||
}
|
if (evt.getCurrentItem() != null) {
|
||||||
|
|
||||||
}else{
|
Quester quester = plugin.getQuester(evt.getWhoClicked().getName());
|
||||||
|
Material mat = evt.getCurrentItem().getType();
|
||||||
|
|
||||||
if(player != null && evt.getCurrentItem() != null){
|
if (quester.currentQuest != null) {
|
||||||
|
|
||||||
Quester quester = plugin.getQuester(evt.getWhoClicked().getName());
|
if (quester.currentQuest.questItems.containsKey(mat)) {
|
||||||
Material mat = evt.getCurrentItem().getType();
|
|
||||||
|
|
||||||
if(quester.currentQuest != null){
|
List<Integer> changedSlots = Quester.getChangedSlots(evt.getInventory(), evt.getCurrentItem());
|
||||||
|
boolean can = true;
|
||||||
|
for (int i : changedSlots) {
|
||||||
|
|
||||||
if(quester.currentQuest.questItems.containsKey(mat)){
|
String s = Quester.checkPlacement(evt.getInventory(), i);
|
||||||
|
if (s != null) {
|
||||||
|
can = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
List<Integer> changedSlots = Quester.getChangedSlots(evt.getInventory(), evt.getCurrentItem());
|
}
|
||||||
boolean can = true;
|
if (!can) {
|
||||||
for(int i : changedSlots){
|
|
||||||
|
|
||||||
String s = Quester.checkPlacement(evt.getInventory(), i);
|
evt.setCancelled(true);
|
||||||
if(s != null){
|
player.updateInventory();
|
||||||
can = false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
} else if (can && Quester.checkPlacement(evt.getInventory(), evt.getRawSlot()) != null) {
|
||||||
if(!can){
|
|
||||||
|
|
||||||
evt.setCancelled(true);
|
ItemStack oldStack = evt.getCurrentItem();
|
||||||
player.updateInventory();
|
Inventory inv = plugin.getServer().createInventory(null, evt.getInventory().getType());
|
||||||
|
HashMap<Integer, ItemStack> map = inv.addItem(oldStack);
|
||||||
|
|
||||||
}else if(can && Quester.checkPlacement(evt.getInventory(), evt.getRawSlot()) != null){
|
if (map.isEmpty() == false) {
|
||||||
|
|
||||||
ItemStack oldStack = evt.getCurrentItem();
|
ItemStack newStack = oldStack.clone();
|
||||||
Inventory inv = plugin.getServer().createInventory(null, evt.getInventory().getType());
|
newStack.setAmount(oldStack.getAmount() - map.get(0).getAmount());
|
||||||
HashMap<Integer, ItemStack> map = inv.addItem(oldStack);
|
quester.collectItem(newStack);
|
||||||
|
|
||||||
if(map.isEmpty() == false){
|
} else {
|
||||||
|
quester.collectItem(oldStack);
|
||||||
|
}
|
||||||
|
|
||||||
ItemStack newStack = oldStack.clone();
|
}
|
||||||
newStack.setAmount(oldStack.getAmount() - map.get(0).getAmount());
|
|
||||||
quester.collectItem(newStack);
|
|
||||||
|
|
||||||
}else{
|
|
||||||
quester.collectItem(oldStack);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -585,19 +631,23 @@ public class PlayerListener implements Listener {
|
|||||||
if (p.getShooter() instanceof Player) {
|
if (p.getShooter() instanceof Player) {
|
||||||
|
|
||||||
Player player = (Player) p.getShooter();
|
Player player = (Player) p.getShooter();
|
||||||
boolean okay = true;
|
if (plugin.checkQuester(player.getName()) == false) {
|
||||||
|
|
||||||
if (plugin.citizens != null) {
|
boolean okay = true;
|
||||||
if (plugin.citizens.getNPCRegistry().isNPC(player) || plugin.citizens.getNPCRegistry().isNPC(evt.getEntity())) {
|
|
||||||
okay = false;
|
if (plugin.citizens != null) {
|
||||||
|
if (plugin.citizens.getNPCRegistry().isNPC(player) || plugin.citizens.getNPCRegistry().isNPC(evt.getEntity())) {
|
||||||
|
okay = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (okay) {
|
if (okay) {
|
||||||
|
|
||||||
|
Quester quester = plugin.getQuester(player.getName());
|
||||||
|
if (quester.hasObjective("killPlayer")) {
|
||||||
|
quester.killPlayer(evt.getEntity().getName());
|
||||||
|
}
|
||||||
|
|
||||||
Quester quester = plugin.getQuester(player.getName());
|
|
||||||
if (quester.hasObjective("killPlayer")) {
|
|
||||||
quester.killPlayer(evt.getEntity().getName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -607,21 +657,26 @@ public class PlayerListener implements Listener {
|
|||||||
} else if (damager instanceof Player) {
|
} else if (damager instanceof Player) {
|
||||||
|
|
||||||
Player player = (Player) damager;
|
Player player = (Player) damager;
|
||||||
boolean okay = true;
|
|
||||||
|
|
||||||
if (plugin.citizens != null) {
|
if (plugin.checkQuester(player.getName()) == false) {
|
||||||
|
|
||||||
|
boolean okay = true;
|
||||||
|
|
||||||
|
if (plugin.citizens != null) {
|
||||||
|
|
||||||
|
if (plugin.citizens.getNPCRegistry().isNPC(player) || plugin.citizens.getNPCRegistry().isNPC(evt.getEntity())) {
|
||||||
|
okay = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (plugin.citizens.getNPCRegistry().isNPC(player) || plugin.citizens.getNPCRegistry().isNPC(evt.getEntity())) {
|
|
||||||
okay = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
if (okay) {
|
||||||
|
|
||||||
if (okay) {
|
Quester quester = plugin.getQuester(player.getName());
|
||||||
|
if (quester.hasObjective("killPlayer")) {
|
||||||
|
quester.killPlayer(evt.getEntity().getName());
|
||||||
|
}
|
||||||
|
|
||||||
Quester quester = plugin.getQuester(player.getName());
|
|
||||||
if (quester.hasObjective("killPlayer")) {
|
|
||||||
quester.killPlayer(evt.getEntity().getName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -637,9 +692,13 @@ public class PlayerListener implements Listener {
|
|||||||
public void onPlayerFish(PlayerFishEvent evt) {
|
public void onPlayerFish(PlayerFishEvent evt) {
|
||||||
|
|
||||||
Player player = evt.getPlayer();
|
Player player = evt.getPlayer();
|
||||||
Quester quester = plugin.getQuester(player.getName());
|
if(plugin.checkQuester(player.getName()) == false){
|
||||||
if (quester.hasObjective("catchFish") && evt.getState().equals(State.CAUGHT_FISH)) {
|
|
||||||
quester.catchFish();
|
Quester quester = plugin.getQuester(player.getName());
|
||||||
|
if (quester.hasObjective("catchFish") && evt.getState().equals(State.CAUGHT_FISH)) {
|
||||||
|
quester.catchFish();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -647,13 +706,17 @@ public class PlayerListener implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerDropItem(PlayerDropItemEvent evt) {
|
public void onPlayerDropItem(PlayerDropItemEvent evt) {
|
||||||
|
|
||||||
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
if(plugin.checkQuester(evt.getPlayer().getName()) == false){
|
||||||
if (quester.currentQuest != null) {
|
|
||||||
|
|
||||||
if (quester.currentQuest.questItems.containsKey(evt.getItemDrop().getItemStack().getType())) {
|
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
||||||
|
if (quester.currentQuest != null) {
|
||||||
|
|
||||||
evt.getPlayer().sendMessage(ChatColor.YELLOW + "You may not discard Quest items.");
|
if (quester.currentQuest.questItems.containsKey(evt.getItemDrop().getItemStack().getType())) {
|
||||||
evt.setCancelled(true);
|
|
||||||
|
evt.getPlayer().sendMessage(ChatColor.YELLOW + "You may not discard Quest items.");
|
||||||
|
evt.setCancelled(true);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -664,62 +727,74 @@ public class PlayerListener implements Listener {
|
|||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerJoin(PlayerJoinEvent evt) {
|
public void onPlayerJoin(PlayerJoinEvent evt) {
|
||||||
|
|
||||||
Quester quester = new Quester(plugin);
|
if(plugin.checkQuester(evt.getPlayer().getName()) == false){
|
||||||
quester.name = evt.getPlayer().getName();
|
|
||||||
if (new File(plugin.getDataFolder(), "data/" + quester.name + ".yml").exists()) {
|
|
||||||
quester.loadData();
|
|
||||||
} else {
|
|
||||||
quester.saveData();
|
|
||||||
}
|
|
||||||
plugin.questers.put(evt.getPlayer().getName(), quester);
|
|
||||||
|
|
||||||
for (String s : quester.completedQuests) {
|
Quester quester = new Quester(plugin);
|
||||||
|
quester.name = evt.getPlayer().getName();
|
||||||
|
if (new File(plugin.getDataFolder(), "data/" + quester.name + ".yml").exists()) {
|
||||||
|
quester.loadData();
|
||||||
|
} else {
|
||||||
|
quester.saveData();
|
||||||
|
}
|
||||||
|
plugin.questers.put(evt.getPlayer().getName(), quester);
|
||||||
|
|
||||||
for (Quest q : plugin.quests) {
|
for (String s : quester.completedQuests) {
|
||||||
|
|
||||||
if (q.name.equalsIgnoreCase(s)) {
|
for (Quest q : plugin.quests) {
|
||||||
|
|
||||||
|
if (q.name.equalsIgnoreCase(s)) {
|
||||||
|
|
||||||
|
if (quester.completedTimes.containsKey(q.name) == false && q.redoDelay > -1) {
|
||||||
|
quester.completedTimes.put(q.name, System.currentTimeMillis());
|
||||||
|
}
|
||||||
|
|
||||||
if (quester.completedTimes.containsKey(q.name) == false && q.redoDelay > -1) {
|
|
||||||
quester.completedTimes.put(q.name, System.currentTimeMillis());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
quester.checkQuest();
|
||||||
|
|
||||||
quester.checkQuest();
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerQuit(PlayerQuitEvent evt) {
|
public void onPlayerQuit(PlayerQuitEvent evt) {
|
||||||
|
|
||||||
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
if(plugin.checkQuester(evt.getPlayer().getName()) == false){
|
||||||
quester.saveData();
|
|
||||||
plugin.questers.remove(quester.name);
|
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
||||||
|
quester.saveData();
|
||||||
|
plugin.questers.remove(quester.name);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerMove(PlayerMoveEvent evt) {
|
public void onPlayerMove(PlayerMoveEvent evt) {
|
||||||
|
|
||||||
boolean isPlayer = true;
|
if(plugin.checkQuester(evt.getPlayer().getName()) == false){
|
||||||
if (plugin.getServer().getPluginManager().getPlugin("Citizens") != null) {
|
|
||||||
if (plugin.citizens.getNPCRegistry().isNPC(evt.getPlayer())) {
|
boolean isPlayer = true;
|
||||||
isPlayer = false;
|
if (plugin.getServer().getPluginManager().getPlugin("Citizens") != null) {
|
||||||
|
if (plugin.citizens.getNPCRegistry().isNPC(evt.getPlayer())) {
|
||||||
|
isPlayer = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (isPlayer) {
|
if (isPlayer) {
|
||||||
|
|
||||||
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
Quester quester = plugin.getQuester(evt.getPlayer().getName());
|
||||||
|
|
||||||
if (quester.hasObjective("reachLocation")) {
|
if (quester.hasObjective("reachLocation")) {
|
||||||
|
|
||||||
quester.reachLocation(evt.getTo());
|
quester.reachLocation(evt.getTo());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1887,6 +1887,8 @@ public class Quester {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(currentStage.)
|
||||||
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
@ -2554,6 +2556,12 @@ public class Quester {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(data.contains("stage-delay")){
|
||||||
|
|
||||||
|
delayTimeLeft = data.getLong("stage-delay");
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -2562,44 +2570,12 @@ public class Quester {
|
|||||||
|
|
||||||
public void startStageTimer(){
|
public void startStageTimer(){
|
||||||
|
|
||||||
if(delayTimeLeft > -1){
|
if(delayTimeLeft > -1)
|
||||||
|
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new StageTimer(this), delayTimeLeft*50);
|
||||||
|
else
|
||||||
|
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new StageTimer(this), currentStage.delay);
|
||||||
|
|
||||||
delayStartTime = System.currentTimeMillis();
|
delayStartTime = System.currentTimeMillis();
|
||||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable(){
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run(){
|
|
||||||
|
|
||||||
if(delayOver){
|
|
||||||
currentQuest.nextStage(Quester.this);
|
|
||||||
}
|
|
||||||
|
|
||||||
delayOver = true;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}, delayTimeLeft*50);
|
|
||||||
|
|
||||||
|
|
||||||
}else{
|
|
||||||
|
|
||||||
delayStartTime = System.currentTimeMillis();
|
|
||||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable(){
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void run(){
|
|
||||||
|
|
||||||
if(delayOver){
|
|
||||||
currentQuest.nextStage(Quester.this);
|
|
||||||
}
|
|
||||||
|
|
||||||
delayOver = true;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}, currentStage.delay);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2610,6 +2586,8 @@ public class Quester {
|
|||||||
else
|
else
|
||||||
delayTimeLeft = currentStage.delay - (System.currentTimeMillis() - delayStartTime);
|
delayTimeLeft = currentStage.delay - (System.currentTimeMillis() - delayStartTime);
|
||||||
|
|
||||||
|
delayOver = false;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void checkQuest() {
|
public void checkQuest() {
|
||||||
|
@ -1272,7 +1272,7 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
|
|||||||
quester = new Quester(this);
|
quester = new Quester(this);
|
||||||
quester.name = player;
|
quester.name = player;
|
||||||
if (quester.loadData() == false) {
|
if (quester.loadData() == false) {
|
||||||
throw new NullPointerException("[Quests] Quester not found for player \"" + player + "\"");
|
log.severe("[Quests] Quester not found for player \"" + player + "\". Consider adding them to the Quester blacklist.");
|
||||||
} else {
|
} else {
|
||||||
if (debug == true) {
|
if (debug == true) {
|
||||||
log.log(Level.INFO, "[Quests] Manual data retrieval succeeded for player \"" + player + "\"");
|
log.log(Level.INFO, "[Quests] Manual data retrieval succeeded for player \"" + player + "\"");
|
||||||
|
24
src/me/blackvein/quests/StageTimer.java
Normal file
24
src/me/blackvein/quests/StageTimer.java
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
package me.blackvein.quests;
|
||||||
|
|
||||||
|
public class StageTimer implements Runnable{
|
||||||
|
|
||||||
|
Quester quester;
|
||||||
|
|
||||||
|
public StageTimer(Quester q){
|
||||||
|
|
||||||
|
quester = q;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run(){
|
||||||
|
|
||||||
|
if(quester.delayOver){
|
||||||
|
quester.currentQuest.nextStage(quester);
|
||||||
|
}
|
||||||
|
|
||||||
|
quester.delayOver = true;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user