mirror of
https://github.com/PikaMug/Quests.git
synced 2025-02-08 08:31:19 +01:00
parent
c1b8161630
commit
69f0c07f99
@ -392,13 +392,20 @@ public class Quest implements Comparable<Quest> {
|
||||
}
|
||||
if (targetLocation != null && targetLocation.getWorld() != null) {
|
||||
if (targetLocation.getWorld().getName().equals(quester.getPlayer().getWorld().getName())) {
|
||||
final QuestUpdateCompassEvent event = new QuestUpdateCompassEvent(this, quester, targetLocation);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
if (event.isCancelled()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
quester.getPlayer().setCompassTarget(targetLocation);
|
||||
final Location lockedTarget = new Location(targetLocation.getWorld(), targetLocation.getX(),
|
||||
targetLocation.getY(), targetLocation.getZ());
|
||||
final QuestUpdateCompassEvent event = new QuestUpdateCompassEvent(this, quester, lockedTarget);
|
||||
Bukkit.getScheduler().runTask(plugin, new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
quester.getPlayer().setCompassTarget(lockedTarget);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
return targetLocation != null;
|
||||
|
@ -1292,7 +1292,7 @@ public class QuestData {
|
||||
private int playersKilled = 0;
|
||||
private long delayStartTime = 0;
|
||||
private long delayTimeLeft = -1;
|
||||
private boolean delayOver = true;
|
||||
//private final boolean delayOver = true;
|
||||
|
||||
public int getCowsMilked() {
|
||||
return cowsMilked;
|
||||
@ -1344,7 +1344,7 @@ public class QuestData {
|
||||
quester.updateJournal();
|
||||
}
|
||||
|
||||
public boolean isDelayOver() {
|
||||
/*public boolean isDelayOver() {
|
||||
return delayOver;
|
||||
}
|
||||
|
||||
@ -1352,5 +1352,5 @@ public class QuestData {
|
||||
this.delayOver = delayOver;
|
||||
if (doJournalUpdate)
|
||||
quester.updateJournal();
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
@ -3718,11 +3718,34 @@ public class Quester implements Comparable<Quester> {
|
||||
/**
|
||||
* Load data of the Quester from storage
|
||||
*
|
||||
* @deprecated Use {@link #hasData()}
|
||||
* @return true if successful
|
||||
*/
|
||||
@Deprecated
|
||||
public boolean loadData() {
|
||||
return plugin.getStorage().loadQuesterData(id) != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the Quester has data saved to hard storage
|
||||
*
|
||||
* @return true if successful
|
||||
*/
|
||||
public boolean hasData() {
|
||||
return plugin.getStorage().loadQuesterData(id) != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the Quester has base data in memory, indicating they have participated in quests
|
||||
*
|
||||
* @return false if empty
|
||||
*/
|
||||
public boolean hasBaseData() {
|
||||
if (!currentQuests.isEmpty() || !questData.isEmpty() || !completedQuests.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initiate the stage timer
|
||||
@ -3756,7 +3779,7 @@ public class Quester implements Comparable<Quester> {
|
||||
getQuestData(quest).setDelayTimeLeft(getCurrentStage(quest).delay - (System.currentTimeMillis()
|
||||
- getQuestData(quest).getDelayStartTime()));
|
||||
}
|
||||
getQuestData(quest).setDelayOver(false);
|
||||
//getQuestData(quest).setDelayOver(false);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -3773,29 +3796,6 @@ public class Quester implements Comparable<Quester> {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the Quester has base data, indicating they have participated in quests
|
||||
*
|
||||
* @return false if empty
|
||||
* @deprecated Use {@link #hasBaseData()}
|
||||
*/
|
||||
@Deprecated
|
||||
public boolean hasData() {
|
||||
return hasBaseData();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the Quester has base data, indicating they have participated in quests
|
||||
*
|
||||
* @return false if empty
|
||||
*/
|
||||
public boolean hasBaseData() {
|
||||
if (!currentQuests.isEmpty() || !questData.isEmpty() || !completedQuests.isEmpty()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether the provided quest is valid and, if not, inform the Quester
|
||||
*
|
||||
|
@ -36,6 +36,7 @@ import java.util.Map.Entry;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ConcurrentSkipListSet;
|
||||
import java.util.jar.JarEntry;
|
||||
import java.util.jar.JarFile;
|
||||
@ -640,7 +641,7 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
|
||||
+ conditions.size() + " Condition(s) and " + Lang.size() + " Phrase(s)");
|
||||
for (final Player p : getServer().getOnlinePlayers()) {
|
||||
final Quester quester = new Quester(Quests.this, p.getUniqueId());
|
||||
if (quester.loadData() == false) {
|
||||
if (!quester.hasData()) {
|
||||
quester.saveData();
|
||||
}
|
||||
// Workaround for issues with the compass on fast join
|
||||
@ -1534,9 +1535,10 @@ public class Quests extends JavaPlugin implements ConversationAbandonedListener
|
||||
loadActions();
|
||||
loadConditions();
|
||||
for (final Quester quester : questers) {
|
||||
quester.loadData();
|
||||
for (final Quest q : quester.currentQuests.keySet()) {
|
||||
quester.checkQuest(q);
|
||||
final CompletableFuture<Quester> cf = getStorage().loadQuesterData(quester.getUUID());
|
||||
final Quester loaded = cf.get();
|
||||
for (final Quest q : loaded.currentQuests.keySet()) {
|
||||
loaded.checkQuest(q);
|
||||
}
|
||||
}
|
||||
loadModules();
|
||||
|
@ -17,6 +17,7 @@ import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
import java.util.concurrent.ConcurrentSkipListSet;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
@ -838,37 +839,49 @@ public class PlayerListener implements Listener {
|
||||
@EventHandler
|
||||
public void onPlayerJoin(final PlayerJoinEvent evt) {
|
||||
if (plugin.canUseQuests(evt.getPlayer().getUniqueId())) {
|
||||
final Quester quester = new Quester(plugin, evt.getPlayer().getUniqueId());
|
||||
if (!quester.loadData() && plugin.getSettings().canGenFilesOnJoin()) {
|
||||
quester.saveData();
|
||||
final Quester noobCheck = new Quester(plugin, evt.getPlayer().getUniqueId());
|
||||
if (plugin.getSettings().canGenFilesOnJoin() && !noobCheck.hasData()) {
|
||||
noobCheck.saveData();
|
||||
}
|
||||
for (final Quest q : quester.getCompletedQuests()) {
|
||||
if (q != null) {
|
||||
if (!quester.getCompletedTimes().containsKey(q) && q.getPlanner().getCooldown() > -1) {
|
||||
quester.getCompletedTimes().put(q, System.currentTimeMillis());
|
||||
}
|
||||
}
|
||||
}
|
||||
for (final Quest quest : quester.getCurrentQuests().keySet()) {
|
||||
quester.checkQuest(quest);
|
||||
}
|
||||
for (final Quest quest : quester.getCurrentQuests().keySet()) {
|
||||
if (quester.getCurrentStage(quest).getDelay() > -1 && !quester.getQuestData(quest).isDelayOver()) {
|
||||
quester.startStageTimer(quest);
|
||||
}
|
||||
}
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
|
||||
|
||||
plugin.getServer().getScheduler().runTaskAsynchronously(plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
if (quester.hasJournal()) {
|
||||
quester.updateJournal();
|
||||
}
|
||||
if (quester.canUseCompass()) {
|
||||
quester.resetCompass();
|
||||
final CompletableFuture<Quester> cf = plugin.getStorage().loadQuesterData(evt.getPlayer().getUniqueId());
|
||||
try {
|
||||
final Quester quester = cf.get();
|
||||
for (final Quest q : quester.getCompletedQuests()) {
|
||||
if (q != null) {
|
||||
if (!quester.getCompletedTimes().containsKey(q) && q.getPlanner().getCooldown() > -1) {
|
||||
quester.getCompletedTimes().put(q, System.currentTimeMillis());
|
||||
}
|
||||
}
|
||||
}
|
||||
for (final Quest quest : quester.getCurrentQuests().keySet()) {
|
||||
quester.checkQuest(quest);
|
||||
}
|
||||
for (final Quest quest : quester.getCurrentQuests().keySet()) {
|
||||
if (quester.getCurrentStage(quest).getDelay() > -1 /*&& !quester.getQuestData(quest).isDelayOver()*/) {
|
||||
quester.startStageTimer(quest);
|
||||
}
|
||||
}
|
||||
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (quester.hasJournal()) {
|
||||
quester.updateJournal();
|
||||
}
|
||||
if (quester.canUseCompass()) {
|
||||
quester.resetCompass();
|
||||
}
|
||||
}
|
||||
}, 40L);
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}, 40L);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,7 +36,7 @@ public class StageTimer implements Runnable {
|
||||
if (quester.getQuestData(quest) == null) {
|
||||
return;
|
||||
}
|
||||
if (quester.getQuestData(quest).isDelayOver()) {
|
||||
//if (quester.getQuestData(quest).isDelayOver()) {
|
||||
if (quester.getCurrentStage(quest).getFinishAction() != null) {
|
||||
quester.getCurrentStage(quest).getFinishAction().fire(quester, quest);
|
||||
}
|
||||
@ -56,10 +56,10 @@ public class StageTimer implements Runnable {
|
||||
+ stageNum + " after delay");
|
||||
}
|
||||
}
|
||||
if (quester.getQuestData(quest) != null) {
|
||||
/*if (quester.getQuestData(quest) != null) {
|
||||
quester.getQuestData(quest).setDelayOver(true);
|
||||
}
|
||||
}*/
|
||||
quester.updateJournal();
|
||||
}
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user