mirror of
https://github.com/PikaMug/Quests.git
synced 2024-09-26 06:02:36 +02:00
Merge branch 'develop'
This commit is contained in:
commit
7eaedf079f
81
api/pom.xml
81
api/pom.xml
@ -1,10 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>me.blackvein.quests</groupId>
|
||||
<artifactId>quests-parent</artifactId>
|
||||
<version>4.1.3</version>
|
||||
<version>4.2.0</version>
|
||||
</parent>
|
||||
<artifactId>quests-api</artifactId>
|
||||
|
||||
@ -14,7 +15,7 @@
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<!-- CitizensBooks, DungeonsXL, GPS, LocaleLib, mcMMO Classic, PhatLoots -->
|
||||
<!-- CitizensBooks, DungeonsXL, GPS, mcMMO Classic, PhatLoots -->
|
||||
<id>jitpack.io</id>
|
||||
<url>https://jitpack.io</url>
|
||||
</repository>
|
||||
@ -167,31 +168,6 @@
|
||||
<defaultGoal>clean package install</defaultGoal>
|
||||
<sourceDirectory>${basedir}/src/main/java</sourceDirectory>
|
||||
|
||||
<resources>
|
||||
<resource>
|
||||
<targetPath>.</targetPath>
|
||||
<directory>${basedir}/src/main/resources/</directory>
|
||||
<filtering>true</filtering>
|
||||
<includes>
|
||||
<include>lang/**/*.*</include>
|
||||
<include>actions.yml</include>
|
||||
<include>conditions.yml</include>
|
||||
<include>config.yml</include>
|
||||
<include>plugin.yml</include>
|
||||
<include>quests.yml</include>
|
||||
<include>strings.yml</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<targetPath>.</targetPath>
|
||||
<directory>${basedir}/</directory>
|
||||
<filtering>false</filtering>
|
||||
<includes>
|
||||
<include>README.md</include>
|
||||
</includes>
|
||||
</resource>
|
||||
</resources>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
@ -208,55 +184,6 @@
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.2.0</version>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.2.4</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>shade</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<minimizeJar>false</minimizeJar>
|
||||
<createDependencyReducedPom>false</createDependencyReducedPom>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
|
||||
<configuration>
|
||||
<artifactSet>
|
||||
<includes>
|
||||
<include>me.*</include>
|
||||
<include>com.github.PikaMug:LocaleLib</include>
|
||||
<include>com.zaxxer:HikariCP</include>
|
||||
<include>org.slf4j:slf4j-simple</include>
|
||||
<include>org.slf4j:slf4j-api</include>
|
||||
<include>mysql</include>
|
||||
</includes>
|
||||
</artifactSet>
|
||||
<relocations>
|
||||
<relocation>
|
||||
<pattern>me.pikamug.localelib</pattern>
|
||||
<shadedPattern>me.blackvein.quests.libs.localelib</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>com.zaxxer.hikari</pattern>
|
||||
<shadedPattern>me.blackvein.quests.libs.hikari</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>org.slf4j</pattern>
|
||||
<shadedPattern>me.blackvein.quests.libs.slf4j</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>com.mysql</pattern>
|
||||
<shadedPattern>me.blackvein.quests.libs.mysql</shadedPattern>
|
||||
</relocation>
|
||||
</relocations>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
||||
|
@ -12,6 +12,7 @@
|
||||
|
||||
package me.blackvein.quests;
|
||||
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.Collection;
|
||||
@ -22,9 +23,9 @@ import java.util.LinkedList;
|
||||
*/
|
||||
public class QuestData {
|
||||
|
||||
private final Quester quester;
|
||||
private final IQuester quester;
|
||||
|
||||
public QuestData(final Quester quester) {
|
||||
public QuestData(final IQuester quester) {
|
||||
this.quester = quester;
|
||||
}
|
||||
|
||||
|
91
api/src/main/java/me/blackvein/quests/QuestsAPI.java
Normal file
91
api/src/main/java/me/blackvein/quests/QuestsAPI.java
Normal file
@ -0,0 +1,91 @@
|
||||
package me.blackvein.quests;
|
||||
|
||||
import me.blackvein.quests.actions.IAction;
|
||||
import me.blackvein.quests.actions.ActionFactory;
|
||||
import me.blackvein.quests.conditions.ICondition;
|
||||
import me.blackvein.quests.conditions.ConditionFactory;
|
||||
import me.blackvein.quests.config.ISettings;
|
||||
import me.blackvein.quests.dependencies.IDependencies;
|
||||
import me.blackvein.quests.module.ICustomObjective;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.quests.QuestFactory;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.conversations.ConversationFactory;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface QuestsAPI extends Plugin {
|
||||
|
||||
boolean isLoading();
|
||||
|
||||
String getDetectedServerSoftwareVersion();
|
||||
|
||||
IDependencies getDependencies();
|
||||
|
||||
ISettings getSettings();
|
||||
|
||||
List<ICustomObjective> getCustomObjectives();
|
||||
|
||||
List<CustomReward> getCustomRewards();
|
||||
|
||||
List<CustomRequirement> getCustomRequirements();
|
||||
|
||||
Collection<IQuest> getLoadedQuests();
|
||||
|
||||
Collection<IAction> getLoadedActions();
|
||||
|
||||
Collection<ICondition> getLoadedConditions();
|
||||
|
||||
IQuester getQuester(final UUID id);
|
||||
|
||||
Collection<IQuester> getOnlineQuesters();
|
||||
|
||||
Collection<IQuester> getOfflineQuesters();
|
||||
|
||||
void setOfflineQuesters(final Collection<IQuester> questers);
|
||||
|
||||
LinkedList<Integer> getQuestNpcIds();
|
||||
|
||||
void setQuestNpcIds(final LinkedList<Integer> questNpcIds);
|
||||
|
||||
CommandExecutor getCommandExecutor();
|
||||
|
||||
ConversationFactory getConversationFactory();
|
||||
|
||||
ConversationFactory getNpcConversationFactory();
|
||||
|
||||
QuestFactory getQuestFactory();
|
||||
|
||||
ActionFactory getActionFactory();
|
||||
|
||||
ConditionFactory getConditionFactory();
|
||||
|
||||
/*ConvoListener getConvoListener();
|
||||
|
||||
BlockListener getBlockListener();
|
||||
|
||||
ItemListener getItemListener();
|
||||
|
||||
NpcListener getNpcListener();
|
||||
|
||||
PlayerListener getPlayerListener();
|
||||
|
||||
UniteListener getUniteListener();
|
||||
|
||||
NpcEffectThread getNpcEffectThread();
|
||||
|
||||
PlayerMoveThread getPlayerMoveThread();
|
||||
|
||||
PartiesListener getPartiesListener();
|
||||
|
||||
DenizenTrigger getDenizenTrigger();
|
||||
|
||||
LocaleManager getLocaleManager();
|
||||
|
||||
Storage getStorage();*/
|
||||
}
|
@ -1,479 +1,48 @@
|
||||
/*
|
||||
* Copyright (c) 2014 PikaMug and contributors. All rights reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||
* NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package me.blackvein.quests.actions;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.QuestMob;
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.convo.actions.main.ActionMainPrompt;
|
||||
import me.blackvein.quests.convo.actions.menu.ActionMenuPrompt;
|
||||
import me.blackvein.quests.interfaces.ReloadCallback;
|
||||
import me.blackvein.quests.util.CK;
|
||||
import me.blackvein.quests.util.ConfigUtil;
|
||||
import me.blackvein.quests.util.FakeConversable;
|
||||
import me.blackvein.quests.util.ItemUtil;
|
||||
import me.blackvein.quests.util.Lang;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.InvalidConfigurationException;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.conversations.ConversationAbandonedEvent;
|
||||
import org.bukkit.conversations.ConversationAbandonedListener;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.conversations.ConversationFactory;
|
||||
import org.bukkit.conversations.ConversationPrefix;
|
||||
import org.bukkit.conversations.Prompt;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
public class ActionFactory implements ConversationAbandonedListener {
|
||||
public interface ActionFactory {
|
||||
Map<UUID, Block> getSelectedExplosionLocations();
|
||||
|
||||
private final Quests plugin;
|
||||
private final ConversationFactory conversationFactory;
|
||||
private Map<UUID, Block> selectedExplosionLocations = new HashMap<>();
|
||||
private Map<UUID, Block> selectedEffectLocations = new HashMap<>();
|
||||
private Map<UUID, Block> selectedMobLocations = new HashMap<>();
|
||||
private Map<UUID, Block> selectedLightningLocations = new HashMap<>();
|
||||
private Map<UUID, Block> selectedTeleportLocations = new HashMap<>();
|
||||
private List<String> editingActionNames = new LinkedList<>();
|
||||
void setSelectedExplosionLocations(final Map<UUID, Block> selectedExplosionLocations);
|
||||
|
||||
public ActionFactory(final Quests plugin) {
|
||||
this.plugin = plugin;
|
||||
// Ensure to initialize factory last so that 'this' is fully initialized before it is passed
|
||||
this.conversationFactory = new ConversationFactory(plugin).withModality(false).withLocalEcho(false)
|
||||
.withFirstPrompt(new ActionMenuPrompt(new ConversationContext(plugin, new FakeConversable(),
|
||||
new HashMap<>()))).withTimeout(3600)
|
||||
.withPrefix(new LineBreakPrefix()).addConversationAbandonedListener(this);
|
||||
}
|
||||
|
||||
public static class LineBreakPrefix implements ConversationPrefix {
|
||||
@Override
|
||||
public @NotNull String getPrefix(final @NotNull ConversationContext context) {
|
||||
return "\n";
|
||||
}
|
||||
}
|
||||
|
||||
public Map<UUID, Block> getSelectedExplosionLocations() {
|
||||
return selectedExplosionLocations;
|
||||
}
|
||||
Map<UUID, Block> getSelectedEffectLocations();
|
||||
|
||||
public void setSelectedExplosionLocations(
|
||||
final Map<UUID, Block> selectedExplosionLocations) {
|
||||
this.selectedExplosionLocations = selectedExplosionLocations;
|
||||
}
|
||||
void setSelectedEffectLocations(final Map<UUID, Block> selectedEffectLocations);
|
||||
|
||||
public Map<UUID, Block> getSelectedEffectLocations() {
|
||||
return selectedEffectLocations;
|
||||
}
|
||||
Map<UUID, Block> getSelectedMobLocations();
|
||||
|
||||
public void setSelectedEffectLocations(final Map<UUID, Block> selectedEffectLocations) {
|
||||
this.selectedEffectLocations = selectedEffectLocations;
|
||||
}
|
||||
void setSelectedMobLocations(final Map<UUID, Block> selectedMobLocations);
|
||||
|
||||
public Map<UUID, Block> getSelectedMobLocations() {
|
||||
return selectedMobLocations;
|
||||
}
|
||||
Map<UUID, Block> getSelectedLightningLocations();
|
||||
|
||||
public void setSelectedMobLocations(final Map<UUID, Block> selectedMobLocations) {
|
||||
this.selectedMobLocations = selectedMobLocations;
|
||||
}
|
||||
void setSelectedLightningLocations(final Map<UUID, Block> selectedLightningLocations);
|
||||
|
||||
public Map<UUID, Block> getSelectedLightningLocations() {
|
||||
return selectedLightningLocations;
|
||||
}
|
||||
Map<UUID, Block> getSelectedTeleportLocations();
|
||||
|
||||
public void setSelectedLightningLocations(
|
||||
final Map<UUID, Block> selectedLightningLocations) {
|
||||
this.selectedLightningLocations = selectedLightningLocations;
|
||||
}
|
||||
void setSelectedTeleportLocations(final Map<UUID, Block> selectedTeleportLocations);
|
||||
|
||||
public Map<UUID, Block> getSelectedTeleportLocations() {
|
||||
return selectedTeleportLocations;
|
||||
}
|
||||
ConversationFactory getConversationFactory();
|
||||
|
||||
public void setSelectedTeleportLocations(
|
||||
final Map<UUID, Block> selectedTeleportLocations) {
|
||||
this.selectedTeleportLocations = selectedTeleportLocations;
|
||||
}
|
||||
List<String> getNamesOfActionsBeingEdited();
|
||||
|
||||
public ConversationFactory getConversationFactory() {
|
||||
return conversationFactory;
|
||||
}
|
||||
|
||||
public List<String> getNamesOfActionsBeingEdited() {
|
||||
return editingActionNames;
|
||||
}
|
||||
|
||||
public void setNamesOfActionsBeingEdited(final List<String> actionNames) {
|
||||
this.editingActionNames = actionNames;
|
||||
}
|
||||
void setNamesOfActionsBeingEdited(final List<String> actionNames);
|
||||
|
||||
@Override
|
||||
public void conversationAbandoned(final ConversationAbandonedEvent abandonedEvent) {
|
||||
if (abandonedEvent.getContext().getForWhom() instanceof Player) {
|
||||
final UUID uuid = ((Player) abandonedEvent.getContext().getForWhom()).getUniqueId();
|
||||
selectedExplosionLocations.remove(uuid);
|
||||
selectedEffectLocations.remove(uuid);
|
||||
selectedMobLocations.remove(uuid);
|
||||
selectedLightningLocations.remove(uuid);
|
||||
selectedTeleportLocations.remove(uuid);
|
||||
}
|
||||
}
|
||||
|
||||
public Prompt returnToMenu(final ConversationContext context) {
|
||||
return new ActionMainPrompt(context);
|
||||
}
|
||||
|
||||
public void loadData(final Action event, final ConversationContext context) {
|
||||
if (event.message != null) {
|
||||
context.setSessionData(CK.E_MESSAGE, event.message);
|
||||
}
|
||||
if (event.clearInv) {
|
||||
context.setSessionData(CK.E_CLEAR_INVENTORY, Lang.get("yesWord"));
|
||||
} else {
|
||||
context.setSessionData(CK.E_CLEAR_INVENTORY, Lang.get("noWord"));
|
||||
}
|
||||
if (event.failQuest) {
|
||||
context.setSessionData(CK.E_FAIL_QUEST, Lang.get("yesWord"));
|
||||
} else {
|
||||
context.setSessionData(CK.E_FAIL_QUEST, Lang.get("noWord"));
|
||||
}
|
||||
if (event.items != null && !event.items.isEmpty()) {
|
||||
final LinkedList<ItemStack> items = new LinkedList<>(event.items);
|
||||
context.setSessionData(CK.E_ITEMS, items);
|
||||
}
|
||||
if (event.explosions != null && !event.explosions.isEmpty()) {
|
||||
final LinkedList<String> locs = new LinkedList<>();
|
||||
for (final Location loc : event.explosions) {
|
||||
locs.add(ConfigUtil.getLocationInfo(loc));
|
||||
}
|
||||
context.setSessionData(CK.E_EXPLOSIONS, locs);
|
||||
}
|
||||
if (event.effects != null && !event.effects.isEmpty()) {
|
||||
final LinkedList<String> locs = new LinkedList<>();
|
||||
final LinkedList<String> effs = new LinkedList<>();
|
||||
for (final Entry<Location, Effect> e : event.effects.entrySet()) {
|
||||
locs.add(ConfigUtil.getLocationInfo(e.getKey()));
|
||||
effs.add(e.getValue().toString());
|
||||
}
|
||||
context.setSessionData(CK.E_EFFECTS, effs);
|
||||
context.setSessionData(CK.E_EFFECTS_LOCATIONS, locs);
|
||||
}
|
||||
if (event.stormWorld != null) {
|
||||
context.setSessionData(CK.E_WORLD_STORM, event.stormWorld.getName());
|
||||
context.setSessionData(CK.E_WORLD_STORM_DURATION, event.stormDuration);
|
||||
}
|
||||
if (event.thunderWorld != null) {
|
||||
context.setSessionData(CK.E_WORLD_THUNDER, event.thunderWorld.getName());
|
||||
context.setSessionData(CK.E_WORLD_THUNDER_DURATION, event.thunderDuration);
|
||||
}
|
||||
if (event.mobSpawns != null && !event.mobSpawns.isEmpty()) {
|
||||
final LinkedList<String> questMobs = new LinkedList<>();
|
||||
for (final QuestMob questMob : event.mobSpawns) {
|
||||
questMobs.add(questMob.serialize());
|
||||
}
|
||||
context.setSessionData(CK.E_MOB_TYPES, questMobs);
|
||||
}
|
||||
if (event.lightningStrikes != null && !event.lightningStrikes.isEmpty()) {
|
||||
final LinkedList<String> locs = new LinkedList<>();
|
||||
for (final Location loc : event.lightningStrikes) {
|
||||
locs.add(ConfigUtil.getLocationInfo(loc));
|
||||
}
|
||||
context.setSessionData(CK.E_LIGHTNING, locs);
|
||||
}
|
||||
if (event.potionEffects != null && !event.potionEffects.isEmpty()) {
|
||||
final LinkedList<String> types = new LinkedList<>();
|
||||
final LinkedList<Long> durations = new LinkedList<>();
|
||||
final LinkedList<Integer> mags = new LinkedList<>();
|
||||
for (final PotionEffect pe : event.potionEffects) {
|
||||
types.add(pe.getType().getName());
|
||||
durations.add((long) pe.getDuration());
|
||||
mags.add(pe.getAmplifier());
|
||||
}
|
||||
context.setSessionData(CK.E_POTION_TYPES, types);
|
||||
context.setSessionData(CK.E_POTION_DURATIONS, durations);
|
||||
context.setSessionData(CK.E_POTION_STRENGTH, mags);
|
||||
}
|
||||
if (event.hunger > -1) {
|
||||
context.setSessionData(CK.E_HUNGER, event.hunger);
|
||||
}
|
||||
if (event.saturation > -1) {
|
||||
context.setSessionData(CK.E_SATURATION, event.saturation);
|
||||
}
|
||||
if (event.health > -1) {
|
||||
context.setSessionData(CK.E_HEALTH, event.health);
|
||||
}
|
||||
if (event.teleport != null) {
|
||||
context.setSessionData(CK.E_TELEPORT, ConfigUtil.getLocationInfo(event.teleport));
|
||||
}
|
||||
if (event.commands != null) {
|
||||
context.setSessionData(CK.E_COMMANDS, event.commands);
|
||||
}
|
||||
if (event.timer > 0) {
|
||||
context.setSessionData(CK.E_TIMER, event.timer);
|
||||
}
|
||||
if (event.cancelTimer) {
|
||||
context.setSessionData(CK.E_CANCEL_TIMER, true);
|
||||
}
|
||||
}
|
||||
Prompt returnToMenu(final ConversationContext context);
|
||||
|
||||
public void clearData(final ConversationContext context) {
|
||||
context.setSessionData(CK.E_OLD_EVENT, null);
|
||||
context.setSessionData(CK.E_NAME, null);
|
||||
context.setSessionData(CK.E_MESSAGE, null);
|
||||
context.setSessionData(CK.E_CLEAR_INVENTORY, null);
|
||||
context.setSessionData(CK.E_FAIL_QUEST, null);
|
||||
context.setSessionData(CK.E_ITEMS, null);
|
||||
context.setSessionData(CK.E_ITEMS_AMOUNTS, null);
|
||||
context.setSessionData(CK.E_EXPLOSIONS, null);
|
||||
context.setSessionData(CK.E_EFFECTS, null);
|
||||
context.setSessionData(CK.E_EFFECTS_LOCATIONS, null);
|
||||
context.setSessionData(CK.E_WORLD_STORM, null);
|
||||
context.setSessionData(CK.E_WORLD_STORM_DURATION, null);
|
||||
context.setSessionData(CK.E_WORLD_THUNDER, null);
|
||||
context.setSessionData(CK.E_WORLD_THUNDER_DURATION, null);
|
||||
context.setSessionData(CK.E_MOB_TYPES, null);
|
||||
context.setSessionData(CK.E_LIGHTNING, null);
|
||||
context.setSessionData(CK.E_POTION_TYPES, null);
|
||||
context.setSessionData(CK.E_POTION_DURATIONS, null);
|
||||
context.setSessionData(CK.E_POTION_STRENGTH, null);
|
||||
context.setSessionData(CK.E_HUNGER, null);
|
||||
context.setSessionData(CK.E_SATURATION, null);
|
||||
context.setSessionData(CK.E_HEALTH, null);
|
||||
context.setSessionData(CK.E_TELEPORT, null);
|
||||
context.setSessionData(CK.E_COMMANDS, null);
|
||||
context.setSessionData(CK.E_TIMER, null);
|
||||
context.setSessionData(CK.E_CANCEL_TIMER, null);
|
||||
}
|
||||
void loadData(final IAction event, final ConversationContext context);
|
||||
|
||||
public void deleteAction(final ConversationContext context) {
|
||||
final YamlConfiguration data = new YamlConfiguration();
|
||||
final File actionsFile = new File(plugin.getDataFolder(), "actions.yml");
|
||||
try {
|
||||
data.load(actionsFile);
|
||||
} catch (final IOException | InvalidConfigurationException e) {
|
||||
e.printStackTrace();
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questErrorReadingFile")
|
||||
.replace("<file>", actionsFile.getName()));
|
||||
return;
|
||||
}
|
||||
final String action = (String) context.getSessionData(CK.ED_EVENT_DELETE);
|
||||
String key = "actions";
|
||||
ConfigurationSection sec = data.getConfigurationSection(key);
|
||||
if (sec == null) {
|
||||
key = "events";
|
||||
sec = data.getConfigurationSection(key);
|
||||
}
|
||||
if (sec != null && action != null) {
|
||||
sec.set(action, null);
|
||||
}
|
||||
try {
|
||||
data.save(actionsFile);
|
||||
} catch (final IOException e) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questSaveError"));
|
||||
return;
|
||||
}
|
||||
final ReloadCallback<Boolean> callback = response -> {
|
||||
if (!response) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("unknownError"));
|
||||
}
|
||||
};
|
||||
plugin.reload(callback);
|
||||
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("eventEditorDeleted"));
|
||||
if (plugin.getSettings().getConsoleLogging() > 0) {
|
||||
final String identifier = context.getForWhom() instanceof Player ?
|
||||
"Player " + ((Player)context.getForWhom()).getUniqueId() : "CONSOLE";
|
||||
plugin.getLogger().info(identifier + " deleted action " + action);
|
||||
}
|
||||
for (final Quester q : plugin.getOfflineQuesters()) {
|
||||
for (final Quest quest : q.getCurrentQuests().keySet()) {
|
||||
q.checkQuest(quest);
|
||||
}
|
||||
}
|
||||
clearData(context);
|
||||
}
|
||||
void clearData(final ConversationContext context);
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void saveAction(final ConversationContext context) {
|
||||
final YamlConfiguration data = new YamlConfiguration();
|
||||
final File actionsFile = new File(plugin.getDataFolder(), "actions.yml");
|
||||
try {
|
||||
data.load(actionsFile);
|
||||
} catch (final IOException | InvalidConfigurationException e) {
|
||||
e.printStackTrace();
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questErrorReadingFile")
|
||||
.replace("<file>", actionsFile.getName()));
|
||||
return;
|
||||
}
|
||||
String key = "actions";
|
||||
if (data.getConfigurationSection(key) == null) {
|
||||
key = "events";
|
||||
}
|
||||
if (context.getSessionData(CK.E_OLD_EVENT) != null
|
||||
&& !((String) Objects.requireNonNull(context.getSessionData(CK.E_OLD_EVENT))).isEmpty()) {
|
||||
data.set(key + "." + context.getSessionData(CK.E_OLD_EVENT), null);
|
||||
final Collection<Action> temp = plugin.getLoadedActions();
|
||||
temp.remove(plugin.getAction((String) context.getSessionData(CK.E_OLD_EVENT)));
|
||||
plugin.setLoadedActions(temp);
|
||||
}
|
||||
final ConfigurationSection section = data.createSection(key + "." + context.getSessionData(CK.E_NAME));
|
||||
editingActionNames.remove((String) context.getSessionData(CK.E_NAME));
|
||||
if (context.getSessionData(CK.E_MESSAGE) != null) {
|
||||
section.set("message", context.getSessionData(CK.E_MESSAGE));
|
||||
}
|
||||
if (context.getSessionData(CK.E_CLEAR_INVENTORY) != null) {
|
||||
final String s = (String) context.getSessionData(CK.E_CLEAR_INVENTORY);
|
||||
if (s != null && s.equalsIgnoreCase(Lang.get("yesWord"))) {
|
||||
section.set("clear-inventory", true);
|
||||
}
|
||||
}
|
||||
if (context.getSessionData(CK.E_FAIL_QUEST) != null) {
|
||||
final String s = (String) context.getSessionData(CK.E_FAIL_QUEST);
|
||||
if (s != null && s.equalsIgnoreCase(Lang.get("yesWord"))) {
|
||||
section.set("fail-quest", true);
|
||||
}
|
||||
}
|
||||
if (context.getSessionData(CK.E_ITEMS) != null) {
|
||||
section.set("items", context.getSessionData(CK.E_ITEMS));
|
||||
}
|
||||
if (context.getSessionData(CK.E_EXPLOSIONS) != null) {
|
||||
section.set("explosions", context.getSessionData(CK.E_EXPLOSIONS));
|
||||
}
|
||||
if (context.getSessionData(CK.E_EFFECTS) != null) {
|
||||
section.set("effects", context.getSessionData(CK.E_EFFECTS));
|
||||
section.set("effect-locations", context.getSessionData(CK.E_EFFECTS_LOCATIONS));
|
||||
}
|
||||
if (context.getSessionData(CK.E_WORLD_STORM) != null) {
|
||||
section.set("storm-world", context.getSessionData(CK.E_WORLD_STORM));
|
||||
section.set("storm-duration", context.getSessionData(CK.E_WORLD_STORM_DURATION));
|
||||
}
|
||||
if (context.getSessionData(CK.E_WORLD_THUNDER) != null) {
|
||||
section.set("thunder-world", context.getSessionData(CK.E_WORLD_THUNDER));
|
||||
section.set("thunder-duration", context.getSessionData(CK.E_WORLD_THUNDER_DURATION));
|
||||
}
|
||||
try {
|
||||
if (context.getSessionData(CK.E_MOB_TYPES) != null) {
|
||||
int count = 0;
|
||||
for (final String s : (LinkedList<String>) Objects.requireNonNull(context
|
||||
.getSessionData(CK.E_MOB_TYPES))) {
|
||||
ConfigurationSection ss = section.getConfigurationSection("mob-spawns." + count);
|
||||
if (ss == null) {
|
||||
ss = section.createSection("mob-spawns." + count);
|
||||
}
|
||||
final QuestMob questMob = QuestMob.fromString(s);
|
||||
if (questMob.getName() != null) {
|
||||
ss.set("name", questMob.getName());
|
||||
}
|
||||
ss.set("spawn-location", ConfigUtil.getLocationInfo(questMob.getSpawnLocation()));
|
||||
ss.set("mob-type", questMob.getType().name());
|
||||
ss.set("spawn-amounts", questMob.getSpawnAmounts());
|
||||
ss.set("held-item", ItemUtil.serializeItemStack(questMob.getInventory()[0]));
|
||||
ss.set("held-item-drop-chance", questMob.getDropChances()[0]);
|
||||
ss.set("boots", ItemUtil.serializeItemStack(questMob.getInventory()[1]));
|
||||
ss.set("boots-drop-chance", questMob.getDropChances()[1]);
|
||||
ss.set("leggings", ItemUtil.serializeItemStack(questMob.getInventory()[2]));
|
||||
ss.set("leggings-drop-chance", questMob.getDropChances()[2]);
|
||||
ss.set("chest-plate", ItemUtil.serializeItemStack(questMob.getInventory()[3]));
|
||||
ss.set("chest-plate-drop-chance", questMob.getDropChances()[3]);
|
||||
ss.set("helmet", ItemUtil.serializeItemStack(questMob.getInventory()[4]));
|
||||
ss.set("helmet-drop-chance", questMob.getDropChances()[4]);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (context.getSessionData(CK.E_LIGHTNING) != null) {
|
||||
section.set("lightning-strikes", context.getSessionData(CK.E_LIGHTNING));
|
||||
}
|
||||
if (context.getSessionData(CK.E_COMMANDS) != null) {
|
||||
final LinkedList<String> commands = (LinkedList<String>) context.getSessionData(CK.E_COMMANDS);
|
||||
if (commands != null && !commands.isEmpty()) {
|
||||
section.set("commands", commands);
|
||||
}
|
||||
}
|
||||
if (context.getSessionData(CK.E_POTION_TYPES) != null) {
|
||||
section.set("potion-effect-types", context.getSessionData(CK.E_POTION_TYPES));
|
||||
section.set("potion-effect-durations", context.getSessionData(CK.E_POTION_DURATIONS));
|
||||
section.set("potion-effect-amplifiers", context.getSessionData(CK.E_POTION_STRENGTH));
|
||||
}
|
||||
if (context.getSessionData(CK.E_HUNGER) != null) {
|
||||
section.set("hunger", context.getSessionData(CK.E_HUNGER));
|
||||
}
|
||||
if (context.getSessionData(CK.E_SATURATION) != null) {
|
||||
section.set("saturation", context.getSessionData(CK.E_SATURATION));
|
||||
}
|
||||
if (context.getSessionData(CK.E_HEALTH) != null) {
|
||||
section.set("health", context.getSessionData(CK.E_HEALTH));
|
||||
}
|
||||
if (context.getSessionData(CK.E_TELEPORT) != null) {
|
||||
section.set("teleport-location", context.getSessionData(CK.E_TELEPORT));
|
||||
}
|
||||
if (context.getSessionData(CK.E_TIMER) != null) {
|
||||
final Integer i = (Integer) context.getSessionData(CK.E_TIMER);
|
||||
if (i != null && i > 0) {
|
||||
section.set("timer", context.getSessionData(CK.E_TIMER));
|
||||
}
|
||||
}
|
||||
if (context.getSessionData(CK.E_CANCEL_TIMER) != null) {
|
||||
final String s = (String) context.getSessionData(CK.E_CANCEL_TIMER);
|
||||
if (s != null && s.equalsIgnoreCase(Lang.get("yesWord"))) {
|
||||
section.set("cancel-timer", true);
|
||||
}
|
||||
}
|
||||
if (context.getSessionData(CK.E_DENIZEN) != null) {
|
||||
section.set("denizen-script", context.getSessionData(CK.E_DENIZEN));
|
||||
}
|
||||
try {
|
||||
data.save(actionsFile);
|
||||
} catch (final IOException e) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questSaveError"));
|
||||
return;
|
||||
}
|
||||
final ReloadCallback<Boolean> callback = response -> {
|
||||
if (!response) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("unknownError"));
|
||||
}
|
||||
};
|
||||
plugin.reload(callback);
|
||||
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("eventEditorSaved"));
|
||||
if (plugin.getSettings().getConsoleLogging() > 0) {
|
||||
final String identifier = context.getForWhom() instanceof Player ?
|
||||
"Player " + ((Player)context.getForWhom()).getUniqueId() : "CONSOLE";
|
||||
plugin.getLogger().info(identifier + " saved action " + context.getSessionData(CK.E_NAME));
|
||||
}
|
||||
for (final Quester q : plugin.getOfflineQuesters()) {
|
||||
for (final Quest quest : q.getCurrentQuests().keySet()) {
|
||||
q.checkQuest(quest);
|
||||
}
|
||||
}
|
||||
clearData(context);
|
||||
}
|
||||
}
|
||||
void deleteAction(final ConversationContext context);
|
||||
|
||||
void saveAction(final ConversationContext context);
|
||||
}
|
||||
|
109
api/src/main/java/me/blackvein/quests/actions/IAction.java
Normal file
109
api/src/main/java/me/blackvein/quests/actions/IAction.java
Normal file
@ -0,0 +1,109 @@
|
||||
package me.blackvein.quests.actions;
|
||||
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import me.blackvein.quests.entity.QuestMob;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
|
||||
public interface IAction extends Comparable<IAction> {
|
||||
String getName();
|
||||
|
||||
void setName(final String name);
|
||||
|
||||
String getMessage();
|
||||
|
||||
void setMessage(final String message);
|
||||
|
||||
boolean isClearInv();
|
||||
|
||||
void setClearInv(final boolean clearInv);
|
||||
|
||||
boolean isFailQuest();
|
||||
|
||||
void setFailQuest(final boolean failQuest);
|
||||
|
||||
LinkedList<Location> getExplosions();
|
||||
|
||||
void setExplosions(final LinkedList<Location> explosions);
|
||||
|
||||
Map<Location, Effect> getEffects();
|
||||
|
||||
void setEffects(final Map<Location, Effect> effects);
|
||||
|
||||
LinkedList<ItemStack> getItems();
|
||||
|
||||
void setItems(final LinkedList<ItemStack> items);
|
||||
|
||||
World getStormWorld();
|
||||
|
||||
void setStormWorld(final World stormWorld);
|
||||
|
||||
int getStormDuration();
|
||||
|
||||
void setStormDuration(final int stormDuration);
|
||||
|
||||
World getThunderWorld();
|
||||
|
||||
void setThunderWorld(final World thunderWorld);
|
||||
|
||||
int getThunderDuration();
|
||||
|
||||
void setThunderDuration(final int thunderDuration);
|
||||
|
||||
int getTimer();
|
||||
|
||||
void setTimer(final int timer);
|
||||
|
||||
boolean isCancelTimer();
|
||||
|
||||
void setCancelTimer(final boolean cancelTimer);
|
||||
|
||||
LinkedList<QuestMob> getMobSpawns();
|
||||
|
||||
void setMobSpawns(final LinkedList<QuestMob> mobSpawns);
|
||||
|
||||
LinkedList<Location> getLightningStrikes();
|
||||
|
||||
void setLightningStrikes(final LinkedList<Location> lightningStrikes);
|
||||
|
||||
LinkedList<String> getCommands();
|
||||
|
||||
void setCommands(final LinkedList<String> commands);
|
||||
|
||||
LinkedList<PotionEffect> getPotionEffects();
|
||||
|
||||
void setPotionEffects(final LinkedList<PotionEffect> potionEffects);
|
||||
|
||||
int getHunger();
|
||||
|
||||
void setHunger(final int hunger);
|
||||
|
||||
int getSaturation();
|
||||
|
||||
void setSaturation(final int saturation);
|
||||
|
||||
float getHealth();
|
||||
|
||||
void setHealth(final float health);
|
||||
|
||||
Location getTeleport();
|
||||
|
||||
void setTeleport(final Location teleport);
|
||||
|
||||
String getBook();
|
||||
|
||||
void setBook(final String book);
|
||||
|
||||
String getDenizenScript();
|
||||
|
||||
void setDenizenScript(final String scriptName);
|
||||
|
||||
void fire(final IQuester quester, final IQuest quest);
|
||||
}
|
@ -1,277 +1,25 @@
|
||||
/*
|
||||
* Copyright (c) 2014 PikaMug and contributors. All rights reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||
* NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package me.blackvein.quests.conditions;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.convo.conditions.main.ConditionMainPrompt;
|
||||
import me.blackvein.quests.convo.conditions.menu.ConditionMenuPrompt;
|
||||
import me.blackvein.quests.interfaces.ReloadCallback;
|
||||
import me.blackvein.quests.util.CK;
|
||||
import me.blackvein.quests.util.FakeConversable;
|
||||
import me.blackvein.quests.util.Lang;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.InvalidConfigurationException;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.conversations.ConversationAbandonedEvent;
|
||||
import org.bukkit.conversations.ConversationAbandonedListener;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.conversations.ConversationFactory;
|
||||
import org.bukkit.conversations.ConversationPrefix;
|
||||
import org.bukkit.conversations.Prompt;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class ConditionFactory implements ConversationAbandonedListener {
|
||||
public interface ConditionFactory {
|
||||
ConversationFactory getConversationFactory();
|
||||
|
||||
private final Quests plugin;
|
||||
private final ConversationFactory conversationFactory;
|
||||
private List<String> editingConditionNames = new LinkedList<>();
|
||||
List<String> getNamesOfConditionsBeingEdited();
|
||||
|
||||
public ConditionFactory(final Quests plugin) {
|
||||
this.plugin = plugin;
|
||||
// Ensure to initialize factory last so that 'this' is fully initialized before it is passed
|
||||
this.conversationFactory = new ConversationFactory(plugin).withModality(false).withLocalEcho(false)
|
||||
.withFirstPrompt(new ConditionMenuPrompt(new ConversationContext(plugin, new FakeConversable(),
|
||||
new HashMap<>()))).withTimeout(3600)
|
||||
.withPrefix(new LineBreakPrefix()).addConversationAbandonedListener(this);
|
||||
}
|
||||
|
||||
public static class LineBreakPrefix implements ConversationPrefix {
|
||||
@Override
|
||||
public @NotNull String getPrefix(final @NotNull ConversationContext context) {
|
||||
return "\n";
|
||||
}
|
||||
}
|
||||
void setNamesOfConditionsBeingEdited(final List<String> conditionNames);
|
||||
|
||||
public ConversationFactory getConversationFactory() {
|
||||
return conversationFactory;
|
||||
}
|
||||
|
||||
public List<String> getNamesOfConditionsBeingEdited() {
|
||||
return editingConditionNames;
|
||||
}
|
||||
|
||||
public void setNamesOfConditionsBeingEdited(final List<String> conditionNames) {
|
||||
this.editingConditionNames = conditionNames;
|
||||
}
|
||||
Prompt returnToMenu(final ConversationContext context);
|
||||
|
||||
@Override
|
||||
public void conversationAbandoned(final @NotNull ConversationAbandonedEvent abandonedEvent) {
|
||||
}
|
||||
|
||||
public Prompt returnToMenu(final ConversationContext context) {
|
||||
return new ConditionMainPrompt(context);
|
||||
}
|
||||
|
||||
public void loadData(final Condition condition, final ConversationContext context) {
|
||||
if (condition.isFailQuest()) {
|
||||
context.setSessionData(CK.C_FAIL_QUEST, Lang.get("yesWord"));
|
||||
} else {
|
||||
context.setSessionData(CK.C_FAIL_QUEST, Lang.get("noWord"));
|
||||
}
|
||||
if (condition.getEntitiesWhileRiding() != null && !condition.getEntitiesWhileRiding().isEmpty()) {
|
||||
final LinkedList<String> entities = new LinkedList<>(condition.getEntitiesWhileRiding());
|
||||
context.setSessionData(CK.C_WHILE_RIDING_ENTITY, entities);
|
||||
}
|
||||
if (condition.getNpcsWhileRiding() != null && !condition.getNpcsWhileRiding().isEmpty()) {
|
||||
final LinkedList<Integer> npcs = new LinkedList<>(condition.getNpcsWhileRiding());
|
||||
context.setSessionData(CK.C_WHILE_RIDING_NPC, npcs);
|
||||
}
|
||||
if (condition.getPermissions() != null && !condition.getPermissions().isEmpty()) {
|
||||
final LinkedList<String> permissions = new LinkedList<>(condition.getPermissions());
|
||||
context.setSessionData(CK.C_WHILE_PERMISSION, permissions);
|
||||
}
|
||||
if (condition.getItemsWhileHoldingMainHand() != null && !condition.getItemsWhileHoldingMainHand().isEmpty()) {
|
||||
final LinkedList<ItemStack> items = new LinkedList<>(condition.getItemsWhileHoldingMainHand());
|
||||
context.setSessionData(CK.C_WHILE_HOLDING_MAIN_HAND, items);
|
||||
}
|
||||
if (condition.getWorldsWhileStayingWithin() != null && !condition.getWorldsWhileStayingWithin().isEmpty()) {
|
||||
final LinkedList<String> worlds = new LinkedList<>(condition.getBiomesWhileStayingWithin());
|
||||
context.setSessionData(CK.C_WHILE_WITHIN_WORLD, worlds);
|
||||
}
|
||||
if (condition.getBiomesWhileStayingWithin() != null && !condition.getBiomesWhileStayingWithin().isEmpty()) {
|
||||
final LinkedList<String> biomes = new LinkedList<>(condition.getBiomesWhileStayingWithin());
|
||||
context.setSessionData(CK.C_WHILE_WITHIN_BIOME, biomes);
|
||||
}
|
||||
if (condition.getRegionsWhileStayingWithin() != null && !condition.getRegionsWhileStayingWithin().isEmpty()) {
|
||||
final LinkedList<String> regions = new LinkedList<>(condition.getRegionsWhileStayingWithin());
|
||||
context.setSessionData(CK.C_WHILE_WITHIN_REGION, regions);
|
||||
}
|
||||
if (condition.getPlaceholdersCheckIdentifier() != null
|
||||
&& !condition.getPlaceholdersCheckIdentifier().isEmpty()) {
|
||||
final LinkedList<String> identifiers = new LinkedList<>(condition.getPlaceholdersCheckIdentifier());
|
||||
context.setSessionData(CK.C_WHILE_PLACEHOLDER_ID, identifiers);
|
||||
}
|
||||
if (condition.getPlaceholdersCheckValue() != null && !condition.getPlaceholdersCheckValue().isEmpty()) {
|
||||
final LinkedList<String> values = new LinkedList<>(condition.getPlaceholdersCheckValue());
|
||||
context.setSessionData(CK.C_WHILE_PLACEHOLDER_VAL, values);
|
||||
}
|
||||
}
|
||||
void loadData(final ICondition condition, final ConversationContext context);
|
||||
|
||||
public void clearData(final ConversationContext context) {
|
||||
context.setSessionData(CK.C_OLD_CONDITION, null);
|
||||
context.setSessionData(CK.C_NAME, null);
|
||||
context.setSessionData(CK.C_FAIL_QUEST, null);
|
||||
context.setSessionData(CK.C_WHILE_RIDING_ENTITY, null);
|
||||
context.setSessionData(CK.C_WHILE_RIDING_NPC, null);
|
||||
context.setSessionData(CK.C_WHILE_PERMISSION, null);
|
||||
context.setSessionData(CK.C_WHILE_HOLDING_MAIN_HAND, null);
|
||||
context.setSessionData(CK.C_WHILE_WITHIN_WORLD, null);
|
||||
context.setSessionData(CK.C_WHILE_WITHIN_BIOME, null);
|
||||
context.setSessionData(CK.C_WHILE_WITHIN_REGION, null);
|
||||
context.setSessionData(CK.C_WHILE_PLACEHOLDER_ID, null);
|
||||
context.setSessionData(CK.C_WHILE_PLACEHOLDER_VAL, null);
|
||||
}
|
||||
void clearData(final ConversationContext context);
|
||||
|
||||
public void deleteCondition(final ConversationContext context) {
|
||||
final YamlConfiguration data = new YamlConfiguration();
|
||||
final File conditionsFile = new File(plugin.getDataFolder(), "conditions.yml");
|
||||
try {
|
||||
data.load(conditionsFile);
|
||||
} catch (final IOException | InvalidConfigurationException e) {
|
||||
e.printStackTrace();
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questErrorReadingFile")
|
||||
.replace("<file>", conditionsFile.getName()));
|
||||
return;
|
||||
}
|
||||
final String condition = (String) context.getSessionData(CK.ED_CONDITION_DELETE);
|
||||
final ConfigurationSection sec = data.getConfigurationSection("conditions");
|
||||
if (sec != null && condition != null) {
|
||||
sec.set(condition, null);
|
||||
}
|
||||
try {
|
||||
data.save(conditionsFile);
|
||||
} catch (final IOException e) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questSaveError"));
|
||||
return;
|
||||
}
|
||||
final ReloadCallback<Boolean> callback = response -> {
|
||||
if (!response) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("unknownError"));
|
||||
}
|
||||
};
|
||||
plugin.reload(callback);
|
||||
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("conditionEditorDeleted"));
|
||||
if (plugin.getSettings().getConsoleLogging() > 0) {
|
||||
final String identifier = context.getForWhom() instanceof Player ?
|
||||
"Player " + ((Player)context.getForWhom()).getUniqueId() : "CONSOLE";
|
||||
plugin.getLogger().info(identifier + " deleted condition " + condition);
|
||||
}
|
||||
for (final Quester q : plugin.getOfflineQuesters()) {
|
||||
for (final Quest quest : q.getCurrentQuests().keySet()) {
|
||||
q.checkQuest(quest);
|
||||
}
|
||||
}
|
||||
clearData(context);
|
||||
}
|
||||
void deleteCondition(final ConversationContext context);
|
||||
|
||||
public void saveCondition(final ConversationContext context) {
|
||||
final YamlConfiguration data = new YamlConfiguration();
|
||||
final File conditionsFile = new File(plugin.getDataFolder(), "conditions.yml");
|
||||
try {
|
||||
data.load(conditionsFile);
|
||||
} catch (final IOException | InvalidConfigurationException e) {
|
||||
e.printStackTrace();
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questErrorReadingFile")
|
||||
.replace("<file>", conditionsFile.getName()));
|
||||
return;
|
||||
}
|
||||
if (context.getSessionData(CK.C_OLD_CONDITION) != null
|
||||
&& !((String) Objects.requireNonNull(context.getSessionData(CK.C_OLD_CONDITION))).isEmpty()) {
|
||||
data.set("conditions." + context.getSessionData(CK.C_OLD_CONDITION), null);
|
||||
final Collection<Condition> temp = plugin.getLoadedConditions();
|
||||
temp.remove(plugin.getCondition((String) context.getSessionData(CK.C_OLD_CONDITION)));
|
||||
plugin.setLoadedConditions(temp);
|
||||
}
|
||||
final ConfigurationSection section = data.createSection("conditions." + context.getSessionData(CK.C_NAME));
|
||||
editingConditionNames.remove((String) context.getSessionData(CK.C_NAME));
|
||||
if (context.getSessionData(CK.C_FAIL_QUEST) != null) {
|
||||
final String s = (String) context.getSessionData(CK.C_FAIL_QUEST);
|
||||
if (s != null && s.equalsIgnoreCase(Lang.get("yesWord"))) {
|
||||
section.set("fail-quest", true);
|
||||
}
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_RIDING_ENTITY) != null) {
|
||||
section.set("ride-entity",
|
||||
context.getSessionData(CK.C_WHILE_RIDING_ENTITY));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_RIDING_NPC) != null) {
|
||||
section.set("ride-npc",
|
||||
context.getSessionData(CK.C_WHILE_RIDING_NPC));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_PERMISSION) != null) {
|
||||
section.set("permission",
|
||||
context.getSessionData(CK.C_WHILE_PERMISSION));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_HOLDING_MAIN_HAND) != null) {
|
||||
section.set("hold-main-hand",
|
||||
context.getSessionData(CK.C_WHILE_HOLDING_MAIN_HAND));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_WITHIN_WORLD) != null) {
|
||||
section.set("stay-within-world",
|
||||
context.getSessionData(CK.C_WHILE_WITHIN_WORLD));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_WITHIN_BIOME) != null) {
|
||||
section.set("stay-within-biome",
|
||||
context.getSessionData(CK.C_WHILE_WITHIN_BIOME));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_WITHIN_REGION) != null) {
|
||||
section.set("stay-within-region",
|
||||
context.getSessionData(CK.C_WHILE_WITHIN_REGION));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_PLACEHOLDER_ID) != null) {
|
||||
section.set("check-placeholder-id",
|
||||
context.getSessionData(CK.C_WHILE_PLACEHOLDER_ID));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_PLACEHOLDER_VAL) != null) {
|
||||
section.set("check-placeholder-value",
|
||||
context.getSessionData(CK.C_WHILE_PLACEHOLDER_VAL));
|
||||
}
|
||||
try {
|
||||
data.save(conditionsFile);
|
||||
} catch (final IOException e) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questSaveError"));
|
||||
return;
|
||||
}
|
||||
final ReloadCallback<Boolean> callback = response -> {
|
||||
if (!response) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("unknownError"));
|
||||
}
|
||||
};
|
||||
plugin.reload(callback);
|
||||
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("conditionEditorSaved"));
|
||||
if (plugin.getSettings().getConsoleLogging() > 0) {
|
||||
final String identifier = context.getForWhom() instanceof Player ?
|
||||
"Player " + ((Player)context.getForWhom()).getUniqueId() : "CONSOLE";
|
||||
plugin.getLogger().info(identifier + " saved condition " + context.getSessionData(CK.C_NAME));
|
||||
}
|
||||
for (final Quester q : plugin.getOfflineQuesters()) {
|
||||
for (final Quest quest : q.getCurrentQuests().keySet()) {
|
||||
q.checkQuest(quest);
|
||||
}
|
||||
}
|
||||
clearData(context);
|
||||
}
|
||||
}
|
||||
void saveCondition(final ConversationContext context);
|
||||
}
|
||||
|
@ -0,0 +1,55 @@
|
||||
package me.blackvein.quests.conditions;
|
||||
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.LinkedList;
|
||||
|
||||
public interface ICondition extends Comparable<ICondition> {
|
||||
String getName();
|
||||
|
||||
void setName(final String name);
|
||||
|
||||
boolean isFailQuest();
|
||||
|
||||
void setFailQuest(final boolean failQuest);
|
||||
|
||||
LinkedList<String> getEntitiesWhileRiding();
|
||||
|
||||
void setEntitiesWhileRiding(final LinkedList<String> entitiesWhileRiding);
|
||||
|
||||
LinkedList<Integer> getNpcsWhileRiding();
|
||||
|
||||
void setNpcsWhileRiding(final LinkedList<Integer> npcsWhileRiding);
|
||||
|
||||
LinkedList<String> getPermissions();
|
||||
|
||||
void setPermissions(final LinkedList<String> permissions);
|
||||
|
||||
LinkedList<ItemStack> getItemsWhileHoldingMainHand();
|
||||
|
||||
void setItemsWhileHoldingMainHand(final LinkedList<ItemStack> itemsWhileHoldingMainHand);
|
||||
|
||||
LinkedList<String> getWorldsWhileStayingWithin();
|
||||
|
||||
void setWorldsWhileStayingWithin(final LinkedList<String> worldsWhileStayingWithin);
|
||||
|
||||
LinkedList<String> getBiomesWhileStayingWithin();
|
||||
|
||||
void setBiomesWhileStayingWithin(final LinkedList<String> biomesWhileStayingWithin);
|
||||
|
||||
LinkedList<String> getRegionsWhileStayingWithin();
|
||||
|
||||
void setRegionsWhileStayingWithin(final LinkedList<String> biomesWhileStayingWithin);
|
||||
|
||||
LinkedList<String> getPlaceholdersCheckIdentifier();
|
||||
|
||||
void setPlaceholdersCheckIdentifier(final LinkedList<String> placeholdersCheckIdentifier);
|
||||
|
||||
LinkedList<String> getPlaceholdersCheckValue();
|
||||
|
||||
void setPlaceholdersCheckValue(final LinkedList<String> placeholdersCheckValue);
|
||||
|
||||
boolean check(final IQuester quester, final IQuest quest);
|
||||
}
|
51
api/src/main/java/me/blackvein/quests/config/ISettings.java
Normal file
51
api/src/main/java/me/blackvein/quests/config/ISettings.java
Normal file
@ -0,0 +1,51 @@
|
||||
package me.blackvein.quests.config;
|
||||
|
||||
public interface ISettings {
|
||||
int getAcceptTimeout();
|
||||
void setAcceptTimeout(final int acceptTimeout);
|
||||
boolean canAllowCommands();
|
||||
void setAllowCommands(final boolean allowCommands);
|
||||
boolean canAllowCommandsForNpcQuests();
|
||||
void setAllowCommandsForNpcQuests(final boolean allowCommandsForNpcQuests);
|
||||
boolean canAllowPranks();
|
||||
void setAllowPranks(final boolean allowPranks);
|
||||
boolean canAskConfirmation();
|
||||
void setAskConfirmation(final boolean askConfirmation);
|
||||
boolean canClickablePrompts();
|
||||
void setClickablePrompts(boolean clickablePrompts);
|
||||
int getConsoleLogging();
|
||||
void setConsoleLogging(final int consoleLogging);
|
||||
boolean canDisableCommandFeedback();
|
||||
void setDisableCommandFeedback(final boolean disableCommandFeedback);
|
||||
boolean canGenFilesOnJoin();
|
||||
void setGenFilesOnJoin(final boolean genFilesOnJoin);
|
||||
boolean canIgnoreLockedQuests();
|
||||
void setIgnoreLockedQuests(final boolean ignoreLockedQuests);
|
||||
int getKillDelay();
|
||||
void setKillDelay(final int killDelay);
|
||||
int getMaxQuests();
|
||||
void setMaxQuests(final int maxQuests);
|
||||
boolean canNpcEffects();
|
||||
void setNpcEffects(final boolean npcEffects);
|
||||
String getEffect();
|
||||
void setEffect(final String effect);
|
||||
String getRedoEffect();
|
||||
void setRedoEffect(final String redoEffect);
|
||||
boolean canShowQuestReqs();
|
||||
void setShowQuestReqs(final boolean showQuestReqs);
|
||||
boolean canShowQuestTitles();
|
||||
void setShowQuestTitles(final boolean showQuestTitles);
|
||||
int getStrictPlayerMovement();
|
||||
void setStrictPlayerMovement(final int strictPlayerMovement);
|
||||
boolean canTrialSave();
|
||||
void setTrialSave(final boolean trialSave);
|
||||
int getTopLimit();
|
||||
void setTopLimit(final int topLimit);
|
||||
boolean canTranslateNames();
|
||||
void setTranslateNames(final boolean translateItems);
|
||||
boolean canTranslateSubCommands();
|
||||
void setTranslateSubCommands(final boolean translateSubCommands);
|
||||
boolean canUpdateCheck();
|
||||
void setUpdateCheck(final boolean updateCheck);
|
||||
void init();
|
||||
}
|
@ -12,6 +12,7 @@
|
||||
|
||||
package me.blackvein.quests.convo;
|
||||
|
||||
import me.blackvein.quests.QuestsAPI;
|
||||
import me.blackvein.quests.util.Lang;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
@ -22,8 +23,6 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import me.blackvein.quests.Quests;
|
||||
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
@ -67,7 +66,7 @@ public abstract class QuestsNumericPrompt extends NumericPrompt {
|
||||
if (context.getPlugin() == null) {
|
||||
return Lang.get("itemCreateCriticalError");
|
||||
}
|
||||
if (!(context.getForWhom() instanceof Player) || !((Quests)context.getPlugin()).getSettings().canClickablePrompts()) {
|
||||
if (!(context.getForWhom() instanceof Player) || !((QuestsAPI)context.getPlugin()).getSettings().canClickablePrompts()) {
|
||||
return input;
|
||||
}
|
||||
final String[] basicText = input.split("\n");
|
||||
|
@ -12,18 +12,16 @@
|
||||
|
||||
package me.blackvein.quests.convo;
|
||||
|
||||
import me.blackvein.quests.QuestsAPI;
|
||||
import me.blackvein.quests.util.Lang;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.conversations.StringPrompt;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quests;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public abstract class QuestsStringPrompt extends StringPrompt {
|
||||
@ -61,7 +59,7 @@ public abstract class QuestsStringPrompt extends StringPrompt {
|
||||
if (context.getPlugin() == null) {
|
||||
return Lang.get("itemCreateCriticalError");
|
||||
}
|
||||
if (!(context.getForWhom() instanceof Player) || !((Quests)context.getPlugin()).getSettings().canClickablePrompts()) {
|
||||
if (!(context.getForWhom() instanceof Player) || !((QuestsAPI)context.getPlugin()).getSettings().canClickablePrompts()) {
|
||||
return ChatColor.GOLD + header + "\n" + ChatColor.AQUA + String.join(ChatColor.GRAY + ", " + ChatColor.AQUA, list) + "\n" + ChatColor.YELLOW + footer;
|
||||
}
|
||||
final TextComponent component = new TextComponent(header + "\n");
|
||||
|
@ -12,12 +12,11 @@
|
||||
|
||||
package me.blackvein.quests.convo.actions;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.QuestsAPI;
|
||||
import me.blackvein.quests.actions.ActionFactory;
|
||||
import me.blackvein.quests.convo.QuestsNumericPrompt;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
|
||||
public abstract class ActionsEditorNumericPrompt extends QuestsNumericPrompt {
|
||||
private final ConversationContext context;
|
||||
@ -26,7 +25,7 @@ public abstract class ActionsEditorNumericPrompt extends QuestsNumericPrompt {
|
||||
public ActionsEditorNumericPrompt(final ConversationContext context) {
|
||||
this.context = context;
|
||||
if (context != null && context.getPlugin() != null) {
|
||||
this.factory = ((Quests)context.getPlugin()).getActionFactory();
|
||||
this.factory = ((QuestsAPI)context.getPlugin()).getActionFactory();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,11 +12,10 @@
|
||||
|
||||
package me.blackvein.quests.convo.actions;
|
||||
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.QuestsAPI;
|
||||
import me.blackvein.quests.actions.ActionFactory;
|
||||
import me.blackvein.quests.convo.QuestsStringPrompt;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
|
||||
public abstract class ActionsEditorStringPrompt extends QuestsStringPrompt {
|
||||
private final ConversationContext context;
|
||||
@ -25,7 +24,7 @@ public abstract class ActionsEditorStringPrompt extends QuestsStringPrompt {
|
||||
public ActionsEditorStringPrompt(final ConversationContext context) {
|
||||
this.context = context;
|
||||
if (context != null && context.getPlugin() != null) {
|
||||
this.factory = ((Quests)context.getPlugin()).getActionFactory();
|
||||
this.factory = ((QuestsAPI)context.getPlugin()).getActionFactory();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,12 +12,11 @@
|
||||
|
||||
package me.blackvein.quests.convo.conditions;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.QuestsAPI;
|
||||
import me.blackvein.quests.conditions.ConditionFactory;
|
||||
import me.blackvein.quests.convo.QuestsNumericPrompt;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
|
||||
public abstract class ConditionsEditorNumericPrompt extends QuestsNumericPrompt {
|
||||
private final ConversationContext context;
|
||||
@ -26,7 +25,7 @@ public abstract class ConditionsEditorNumericPrompt extends QuestsNumericPrompt
|
||||
public ConditionsEditorNumericPrompt(final ConversationContext context) {
|
||||
this.context = context;
|
||||
if (context != null && context.getPlugin() != null) {
|
||||
this.factory = ((Quests)context.getPlugin()).getConditionFactory();
|
||||
this.factory = ((QuestsAPI)context.getPlugin()).getConditionFactory();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,11 +12,10 @@
|
||||
|
||||
package me.blackvein.quests.convo.conditions;
|
||||
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.QuestsAPI;
|
||||
import me.blackvein.quests.conditions.ConditionFactory;
|
||||
import me.blackvein.quests.convo.QuestsStringPrompt;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
|
||||
public abstract class ConditionsEditorStringPrompt extends QuestsStringPrompt {
|
||||
private final ConversationContext context;
|
||||
@ -25,7 +24,7 @@ public abstract class ConditionsEditorStringPrompt extends QuestsStringPrompt {
|
||||
public ConditionsEditorStringPrompt(final ConversationContext context) {
|
||||
this.context = context;
|
||||
if (context != null && context.getPlugin() != null) {
|
||||
this.factory = ((Quests)context.getPlugin()).getConditionFactory();
|
||||
this.factory = ((QuestsAPI)context.getPlugin()).getConditionFactory();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,13 +12,12 @@
|
||||
|
||||
package me.blackvein.quests.convo.quests;
|
||||
|
||||
import me.blackvein.quests.quests.QuestFactory;
|
||||
import me.blackvein.quests.QuestsAPI;
|
||||
import me.blackvein.quests.convo.QuestsNumericPrompt;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
|
||||
import me.blackvein.quests.QuestFactory;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.convo.QuestsNumericPrompt;
|
||||
|
||||
public abstract class QuestsEditorNumericPrompt extends QuestsNumericPrompt {
|
||||
private final ConversationContext context;
|
||||
private QuestFactory factory;
|
||||
@ -26,7 +25,7 @@ public abstract class QuestsEditorNumericPrompt extends QuestsNumericPrompt {
|
||||
public QuestsEditorNumericPrompt(final ConversationContext context) {
|
||||
this.context = context;
|
||||
if (context != null && context.getPlugin() != null) {
|
||||
factory = ((Quests)context.getPlugin()).getQuestFactory();
|
||||
factory = ((QuestsAPI)context.getPlugin()).getQuestFactory();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -12,11 +12,10 @@
|
||||
|
||||
package me.blackvein.quests.convo.quests;
|
||||
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
|
||||
import me.blackvein.quests.QuestFactory;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.quests.QuestFactory;
|
||||
import me.blackvein.quests.QuestsAPI;
|
||||
import me.blackvein.quests.convo.QuestsStringPrompt;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
|
||||
public abstract class QuestsEditorStringPrompt extends QuestsStringPrompt {
|
||||
private final ConversationContext context;
|
||||
@ -25,7 +24,7 @@ public abstract class QuestsEditorStringPrompt extends QuestsStringPrompt {
|
||||
public QuestsEditorStringPrompt(final ConversationContext context) {
|
||||
this.context = context;
|
||||
if (context != null && context.getPlugin() != null) {
|
||||
factory = ((Quests)context.getPlugin()).getQuestFactory();
|
||||
factory = ((QuestsAPI)context.getPlugin()).getQuestFactory();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,71 @@
|
||||
package me.blackvein.quests.dependencies;
|
||||
|
||||
import com.alessiodp.parties.api.interfaces.PartiesAPI;
|
||||
import com.codisimus.plugins.phatloots.PhatLoots;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.mcMMO;
|
||||
import com.herocraftonline.heroes.Heroes;
|
||||
import com.herocraftonline.heroes.characters.Hero;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import me.blackvein.quests.reflect.denizen.DenizenAPI;
|
||||
import me.blackvein.quests.reflect.worldguard.WorldGuardAPI;
|
||||
import me.clip.placeholderapi.PlaceholderAPIPlugin;
|
||||
import me.pikamug.unite.api.objects.PartyProvider;
|
||||
import net.citizensnpcs.api.CitizensPlugin;
|
||||
import net.milkbowl.vault.economy.Economy;
|
||||
import net.milkbowl.vault.permission.Permission;
|
||||
import org.bukkit.Location;
|
||||
import ro.nicuch.citizensbooks.CitizensBooksAPI;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface IDependencies {
|
||||
Economy getVaultEconomy();
|
||||
|
||||
Permission getVaultPermission();
|
||||
|
||||
PartyProvider getPartyProvider();
|
||||
|
||||
Set<PartyProvider> getPartyProviders();
|
||||
|
||||
WorldGuardAPI getWorldGuardApi();
|
||||
|
||||
mcMMO getMcmmoClassic();
|
||||
|
||||
Heroes getHeroes();
|
||||
|
||||
PhatLoots getPhatLoots();
|
||||
|
||||
PlaceholderAPIPlugin getPlaceholderApi();
|
||||
|
||||
CitizensPlugin getCitizens();
|
||||
|
||||
void linkCitizens();
|
||||
|
||||
void unlinkCitizens();
|
||||
|
||||
DenizenAPI getDenizenApi();
|
||||
|
||||
CitizensBooksAPI getCitizensBooksApi();
|
||||
|
||||
PartiesAPI getPartiesApi();
|
||||
|
||||
boolean isPluginAvailable(final String pluginName);
|
||||
|
||||
boolean runDenizenScript(final String scriptName, final IQuester quester);
|
||||
|
||||
Location getNPCLocation(final int id);
|
||||
|
||||
String getNPCName(final int id);
|
||||
|
||||
int getMcmmoSkillLevel(final SkillType st, final String player);
|
||||
|
||||
Hero getHero(final UUID uuid);
|
||||
|
||||
boolean testPrimaryHeroesClass(final String primaryClass, final UUID uuid);
|
||||
|
||||
boolean testSecondaryHeroesClass(final String secondaryClass, final UUID uuid);
|
||||
|
||||
void init();
|
||||
}
|
45
api/src/main/java/me/blackvein/quests/entity/QuestMob.java
Normal file
45
api/src/main/java/me/blackvein/quests/entity/QuestMob.java
Normal file
@ -0,0 +1,45 @@
|
||||
package me.blackvein.quests.entity;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public interface QuestMob {
|
||||
String getName();
|
||||
|
||||
void setName(final String name);
|
||||
|
||||
EntityType getType();
|
||||
|
||||
void setType(final EntityType entityType);
|
||||
|
||||
Location getSpawnLocation();
|
||||
|
||||
void setSpawnLocation(final Location spawnLocation);
|
||||
|
||||
Integer getSpawnAmounts();
|
||||
|
||||
void setSpawnAmounts(final int spawnAmounts);
|
||||
|
||||
ItemStack[] getInventory();
|
||||
|
||||
void setInventory(final ItemStack[] inventory);
|
||||
|
||||
Float[] getDropChances();
|
||||
|
||||
void setDropChances(final Float[] dropChances);
|
||||
|
||||
void setHelmet(final ItemStack helmet, final float dropChance);
|
||||
|
||||
void setChest(final ItemStack chest, final float dropChance);
|
||||
|
||||
void setLeggings(final ItemStack leggings, final float dropChance);
|
||||
|
||||
void setBoots(final ItemStack boots, final float dropChance);
|
||||
|
||||
void setHeldItem(final ItemStack heldItem, final float dropChance);
|
||||
|
||||
void spawn();
|
||||
|
||||
String serialize();
|
||||
}
|
@ -12,13 +12,12 @@
|
||||
|
||||
package me.blackvein.quests.events.editor.actions;
|
||||
|
||||
import me.blackvein.quests.QuestsAPI;
|
||||
import me.blackvein.quests.actions.ActionFactory;
|
||||
import me.blackvein.quests.events.QuestsEvent;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.conversations.Prompt;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.actions.ActionFactory;
|
||||
import me.blackvein.quests.events.QuestsEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
@ -34,14 +33,14 @@ public abstract class ActionsEditorEvent extends QuestsEvent {
|
||||
|
||||
public ActionsEditorEvent(final ConversationContext context, final Prompt prompt) {
|
||||
this.context = context;
|
||||
this.factory = ((Quests) Objects.requireNonNull(context.getPlugin())).getActionFactory();
|
||||
this.factory = ((QuestsAPI) Objects.requireNonNull(context.getPlugin())).getActionFactory();
|
||||
this.prompt = prompt;
|
||||
}
|
||||
|
||||
public ActionsEditorEvent(final ConversationContext context, final Prompt prompt, final boolean async) {
|
||||
super(async);
|
||||
this.context = context;
|
||||
this.factory = ((Quests) Objects.requireNonNull(context.getPlugin())).getActionFactory();
|
||||
this.factory = ((QuestsAPI) Objects.requireNonNull(context.getPlugin())).getActionFactory();
|
||||
this.prompt = prompt;
|
||||
}
|
||||
|
||||
|
@ -12,10 +12,9 @@
|
||||
|
||||
package me.blackvein.quests.events.editor.actions;
|
||||
|
||||
import me.blackvein.quests.convo.actions.ActionsEditorStringPrompt;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.convo.actions.ActionsEditorStringPrompt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class ActionsEditorPostOpenStringPromptEvent extends ActionsEditorEvent {
|
||||
|
@ -12,13 +12,12 @@
|
||||
|
||||
package me.blackvein.quests.events.editor.conditions;
|
||||
|
||||
import me.blackvein.quests.QuestsAPI;
|
||||
import me.blackvein.quests.conditions.ConditionFactory;
|
||||
import me.blackvein.quests.events.QuestsEvent;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.conversations.Prompt;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.conditions.ConditionFactory;
|
||||
import me.blackvein.quests.events.QuestsEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
@ -34,14 +33,14 @@ public abstract class ConditionsEditorEvent extends QuestsEvent {
|
||||
|
||||
public ConditionsEditorEvent(final ConversationContext context, final Prompt prompt) {
|
||||
this.context = context;
|
||||
this.factory = ((Quests) Objects.requireNonNull(context.getPlugin())).getConditionFactory();
|
||||
this.factory = ((QuestsAPI) Objects.requireNonNull(context.getPlugin())).getConditionFactory();
|
||||
this.prompt = prompt;
|
||||
}
|
||||
|
||||
public ConditionsEditorEvent(final ConversationContext context, final Prompt prompt, final boolean async) {
|
||||
super(async);
|
||||
this.context = context;
|
||||
this.factory = ((Quests) Objects.requireNonNull(context.getPlugin())).getConditionFactory();
|
||||
this.factory = ((QuestsAPI) Objects.requireNonNull(context.getPlugin())).getConditionFactory();
|
||||
this.prompt = prompt;
|
||||
}
|
||||
|
||||
|
@ -12,13 +12,12 @@
|
||||
|
||||
package me.blackvein.quests.events.editor.quests;
|
||||
|
||||
import me.blackvein.quests.quests.QuestFactory;
|
||||
import me.blackvein.quests.QuestsAPI;
|
||||
import me.blackvein.quests.events.QuestsEvent;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.conversations.Prompt;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.QuestFactory;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.events.QuestsEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Objects;
|
||||
@ -34,14 +33,14 @@ public abstract class QuestsEditorEvent extends QuestsEvent {
|
||||
|
||||
public QuestsEditorEvent(final ConversationContext context, final Prompt prompt) {
|
||||
this.context = context;
|
||||
this.factory = ((Quests) Objects.requireNonNull(context.getPlugin())).getQuestFactory();
|
||||
this.factory = ((QuestsAPI) Objects.requireNonNull(context.getPlugin())).getQuestFactory();
|
||||
this.prompt = prompt;
|
||||
}
|
||||
|
||||
public QuestsEditorEvent(final ConversationContext context, final Prompt prompt, final boolean async) {
|
||||
super(async);
|
||||
this.context = context;
|
||||
this.factory = ((Quests) Objects.requireNonNull(context.getPlugin())).getQuestFactory();
|
||||
this.factory = ((QuestsAPI) Objects.requireNonNull(context.getPlugin())).getQuestFactory();
|
||||
this.prompt = prompt;
|
||||
}
|
||||
|
||||
|
@ -12,10 +12,9 @@
|
||||
|
||||
package me.blackvein.quests.events.editor.quests;
|
||||
|
||||
import me.blackvein.quests.convo.quests.QuestsEditorNumericPrompt;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.convo.quests.QuestsEditorNumericPrompt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class QuestsEditorPostOpenNumericPromptEvent extends QuestsEditorEvent {
|
||||
|
@ -12,10 +12,9 @@
|
||||
|
||||
package me.blackvein.quests.events.editor.quests;
|
||||
|
||||
import me.blackvein.quests.convo.quests.QuestsEditorStringPrompt;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.convo.quests.QuestsEditorStringPrompt;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class QuestsEditorPostOpenStringPromptEvent extends QuestsEditorEvent {
|
||||
|
@ -14,7 +14,7 @@ package me.blackvein.quests.events.quest;
|
||||
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.events.QuestsEvent;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@ -23,13 +23,13 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public abstract class QuestEvent extends QuestsEvent {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Quest quest;
|
||||
private final IQuest quest;
|
||||
|
||||
public QuestEvent(final Quest quest) {
|
||||
public QuestEvent(final IQuest quest) {
|
||||
this.quest = quest;
|
||||
}
|
||||
|
||||
public QuestEvent(final Quest quest, final boolean async) {
|
||||
public QuestEvent(final IQuest quest, final boolean async) {
|
||||
super(async);
|
||||
this.quest = quest;
|
||||
}
|
||||
@ -39,7 +39,7 @@ public abstract class QuestEvent extends QuestsEvent {
|
||||
*
|
||||
* @return Quest which is involved in this event
|
||||
*/
|
||||
public final Quest getQuest() {
|
||||
public final IQuest getQuest() {
|
||||
return quest;
|
||||
}
|
||||
|
||||
|
@ -15,8 +15,8 @@ package me.blackvein.quests.events.quest;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@ -24,10 +24,10 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class QuestQuitEvent extends QuestEvent implements Cancellable {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Quester quester;
|
||||
private final IQuester quester;
|
||||
private boolean cancel = false;
|
||||
|
||||
public QuestQuitEvent(final Quest quest, final Quester who) {
|
||||
public QuestQuitEvent(final IQuest quest, final IQuester who) {
|
||||
super(quest);
|
||||
this.quester = who;
|
||||
}
|
||||
@ -37,7 +37,7 @@ public class QuestQuitEvent extends QuestEvent implements Cancellable {
|
||||
*
|
||||
* @return Quester who is involved in this event
|
||||
*/
|
||||
public Quester getQuester() {
|
||||
public IQuester getQuester() {
|
||||
return quester;
|
||||
}
|
||||
|
||||
|
@ -15,8 +15,8 @@ package me.blackvein.quests.events.quest;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@ -24,10 +24,10 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class QuestTakeEvent extends QuestEvent implements Cancellable {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Quester quester;
|
||||
private final IQuester quester;
|
||||
private boolean cancel = false;
|
||||
|
||||
public QuestTakeEvent(final Quest quest, final Quester who) {
|
||||
public QuestTakeEvent(final IQuest quest, final IQuester who) {
|
||||
super(quest);
|
||||
this.quester = who;
|
||||
}
|
||||
@ -37,7 +37,7 @@ public class QuestTakeEvent extends QuestEvent implements Cancellable {
|
||||
*
|
||||
* @return Quester who is involved in this event
|
||||
*/
|
||||
public Quester getQuester() {
|
||||
public IQuester getQuester() {
|
||||
return quester;
|
||||
}
|
||||
|
||||
|
@ -16,8 +16,8 @@ import org.bukkit.Location;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@ -25,11 +25,11 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class QuestUpdateCompassEvent extends QuestEvent implements Cancellable {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Quester quester;
|
||||
private final IQuester quester;
|
||||
private final Location target;
|
||||
private boolean cancel = false;
|
||||
|
||||
public QuestUpdateCompassEvent(final Quest quest, final Quester who, final Location target) {
|
||||
public QuestUpdateCompassEvent(final IQuest quest, final IQuester who, final Location target) {
|
||||
super(quest);
|
||||
this.quester = who;
|
||||
this.target = target;
|
||||
@ -40,7 +40,7 @@ public class QuestUpdateCompassEvent extends QuestEvent implements Cancellable {
|
||||
*
|
||||
* @return Quester who is involved in this event
|
||||
*/
|
||||
public Quester getQuester() {
|
||||
public IQuester getQuester() {
|
||||
return quester;
|
||||
}
|
||||
|
||||
|
@ -0,0 +1,89 @@
|
||||
/*
|
||||
* Copyright (c) 2014 PikaMug and contributors. All rights reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||
* NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package me.blackvein.quests.module;
|
||||
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
|
||||
public interface ICustomObjective {
|
||||
|
||||
String getModuleName();
|
||||
|
||||
Map.Entry<String, Short> getModuleItem();
|
||||
|
||||
String getName();
|
||||
|
||||
void setName(final String name);
|
||||
|
||||
String getAuthor();
|
||||
|
||||
void setAuthor(final String author);
|
||||
|
||||
String getDisplay();
|
||||
|
||||
void setDisplay(final String display);
|
||||
|
||||
Map.Entry<String, Short> getItem();
|
||||
|
||||
void setItem(final String type, final short durability);
|
||||
|
||||
LinkedList<Map.Entry<String, Object>> getData();
|
||||
|
||||
/**
|
||||
* Add a new prompt<p>
|
||||
*
|
||||
* Note that the "defaultValue" Object will be cast to a String internally
|
||||
*
|
||||
* @param title Prompt name
|
||||
* @param description Description of expected input
|
||||
* @param defaultValue Value to be used if input is not received
|
||||
*/
|
||||
void addStringPrompt(final String title, final String description, final Object defaultValue);
|
||||
|
||||
Map<String, String> getDescriptions();
|
||||
|
||||
int getCount();
|
||||
|
||||
void setCount(final int count);
|
||||
|
||||
String getCountPrompt();
|
||||
|
||||
void setCountPrompt(final String countPrompt);
|
||||
|
||||
/**
|
||||
* Check whether to let user set required amount for objective
|
||||
*/
|
||||
boolean canShowCount();
|
||||
|
||||
/**
|
||||
* Set whether to let user set required amount for objective
|
||||
*
|
||||
* @param showCount Whether to show the count
|
||||
*/
|
||||
void setShowCount(final boolean showCount);
|
||||
|
||||
/**
|
||||
* Get custom objective data for applicable player
|
||||
*
|
||||
* @param player Player attempting this objective
|
||||
* @param customObj The objective being attempted
|
||||
* @param quest Current me.blackvein.quests.Quest which includes this objective
|
||||
* @return data
|
||||
*/
|
||||
Map<String, Object> getDataForPlayer(final Player player, final ICustomObjective customObj, final IQuest quest);
|
||||
|
||||
void incrementObjective(final Player player, final ICustomObjective obj, final int count, final IQuest quest);
|
||||
}
|
233
api/src/main/java/me/blackvein/quests/player/IQuester.java
Normal file
233
api/src/main/java/me/blackvein/quests/player/IQuester.java
Normal file
@ -0,0 +1,233 @@
|
||||
package me.blackvein.quests.player;
|
||||
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.quests.IStage;
|
||||
import me.blackvein.quests.quests.Objective;
|
||||
import me.blackvein.quests.QuestData;
|
||||
import me.blackvein.quests.enums.ObjectiveType;
|
||||
import me.blackvein.quests.module.ICustomObjective;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.concurrent.ConcurrentSkipListSet;
|
||||
import java.util.function.BiFunction;
|
||||
import java.util.function.Function;
|
||||
|
||||
public interface IQuester extends Comparable<IQuester> {
|
||||
UUID getUUID();
|
||||
|
||||
void setUUID(final UUID id);
|
||||
|
||||
String getQuestIdToTake();
|
||||
|
||||
void setQuestIdToTake(final String questIdToTake);
|
||||
|
||||
String getLastKnownName();
|
||||
|
||||
void setLastKnownName(final String lastKnownName);
|
||||
|
||||
int getQuestPoints();
|
||||
|
||||
void setQuestPoints(final int questPoints);
|
||||
|
||||
/**
|
||||
* Get compass target quest. Returns null if not set
|
||||
*
|
||||
* @return Quest or null
|
||||
*/
|
||||
IQuest getCompassTarget();
|
||||
|
||||
/**
|
||||
* Set compass target quest. Does not update in-game
|
||||
*
|
||||
* @param quest The target quest
|
||||
*/
|
||||
void setCompassTarget(final IQuest quest);
|
||||
|
||||
ConcurrentHashMap<Integer, IQuest> getTimers();
|
||||
|
||||
void setTimers(final ConcurrentHashMap<Integer, IQuest> timers);
|
||||
|
||||
void removeTimer(final Integer timerId);
|
||||
|
||||
ConcurrentHashMap<IQuest, Integer> getCurrentQuests();
|
||||
|
||||
void setCurrentQuests(final ConcurrentHashMap<IQuest, Integer> currentQuests);
|
||||
|
||||
ConcurrentSkipListSet<IQuest> getCompletedQuests();
|
||||
|
||||
void setCompletedQuests(final ConcurrentSkipListSet<IQuest> completedQuests);
|
||||
|
||||
ConcurrentHashMap<IQuest, Long> getCompletedTimes();
|
||||
|
||||
void setCompletedTimes(final ConcurrentHashMap<IQuest, Long> completedTimes);
|
||||
|
||||
ConcurrentHashMap<IQuest, Integer> getAmountsCompleted();
|
||||
|
||||
void setAmountsCompleted(final ConcurrentHashMap<IQuest, Integer> amountsCompleted);
|
||||
|
||||
ConcurrentHashMap<IQuest, QuestData> getQuestData();
|
||||
|
||||
void setQuestData(final ConcurrentHashMap<IQuest, QuestData> questData);
|
||||
|
||||
Player getPlayer();
|
||||
|
||||
OfflinePlayer getOfflinePlayer();
|
||||
|
||||
void sendMessage(final String message);
|
||||
|
||||
IStage getCurrentStage(final IQuest quest);
|
||||
|
||||
QuestData getQuestData(final IQuest quest);
|
||||
|
||||
boolean hasJournal();
|
||||
|
||||
ItemStack getJournal();
|
||||
|
||||
int getJournalIndex();
|
||||
|
||||
void updateJournal();
|
||||
|
||||
void takeQuest(final IQuest quest, final boolean ignoreRequirements);
|
||||
|
||||
void quitQuest(final IQuest quest, final String message);
|
||||
|
||||
void quitQuest(final IQuest quest, final String[] messages);
|
||||
|
||||
LinkedList<String> getCurrentRequirements(final IQuest quest, final boolean ignoreOverrides);
|
||||
|
||||
LinkedList<String> getCurrentObjectives(final IQuest quest, final boolean ignoreOverrides);
|
||||
|
||||
LinkedList<String> getObjectives(final IQuest quest, final boolean ignoreOverrides);
|
||||
|
||||
boolean containsObjective(final IQuest quest, final String name);
|
||||
|
||||
boolean hasCustomObjective(final IQuest quest, final String name);
|
||||
|
||||
void breakBlock(final IQuest quest, final ItemStack itemStack);
|
||||
|
||||
void damageBlock(final IQuest quest, final ItemStack itemStack);
|
||||
|
||||
void placeBlock(final IQuest quest, final ItemStack itemStack);
|
||||
|
||||
void useBlock(final IQuest quest, final ItemStack itemStack);
|
||||
|
||||
void cutBlock(final IQuest quest, final ItemStack itemStack);
|
||||
|
||||
void craftItem(final IQuest quest, final ItemStack itemStack);
|
||||
|
||||
void smeltItem(final IQuest quest, final ItemStack itemStack);
|
||||
|
||||
void enchantBook(final IQuest quest, final ItemStack itemStack,
|
||||
final Map<Enchantment, Integer> enchantsToAdd);
|
||||
|
||||
void enchantItem(final IQuest quest, final ItemStack itemStack);
|
||||
|
||||
void brewItem(final IQuest quest, final ItemStack itemStack);
|
||||
|
||||
void consumeItem(final IQuest quest, final ItemStack itemStack);
|
||||
|
||||
void deliverToNPC(final IQuest quest, final NPC npc, final ItemStack itemStack);
|
||||
|
||||
void interactWithNPC(final IQuest quest, final NPC npc);
|
||||
|
||||
void killNPC(final IQuest quest, final NPC npc);
|
||||
|
||||
void milkCow(final IQuest quest);
|
||||
|
||||
void catchFish(final IQuest quest);
|
||||
|
||||
void killMob(final IQuest quest, final Location killedLocation, final EntityType entityType);
|
||||
|
||||
void killPlayer(final IQuest quest, final Player player);
|
||||
|
||||
void reachLocation(final IQuest quest, final Location location);
|
||||
|
||||
void tameMob(final IQuest quest, final EntityType entityType);
|
||||
|
||||
void shearSheep(final IQuest quest, final DyeColor color);
|
||||
|
||||
void sayPassword(final IQuest quest, final AsyncPlayerChatEvent evt);
|
||||
|
||||
void finishObjective(final IQuest quest, final Objective objective, final EntityType mob,
|
||||
final String extra, final NPC npc, final Location location, final DyeColor color,
|
||||
final String pass, final ICustomObjective co);
|
||||
|
||||
boolean testComplete(final IQuest quest);
|
||||
|
||||
void addEmptiesFor(final IQuest quest, final int stage);
|
||||
|
||||
boolean saveData();
|
||||
|
||||
long getCompletionDifference(final IQuest quest);
|
||||
|
||||
long getRemainingCooldown(final IQuest quest);
|
||||
|
||||
FileConfiguration getBaseData();
|
||||
|
||||
boolean hasData();
|
||||
|
||||
boolean hasBaseData();
|
||||
|
||||
void startStageTimer(final IQuest quest);
|
||||
|
||||
void stopStageTimer(final IQuest quest);
|
||||
|
||||
long getStageTime(final IQuest quest);
|
||||
|
||||
void checkQuest(final IQuest quest);
|
||||
|
||||
void showGUIDisplay(final NPC npc, final LinkedList<IQuest> quests);
|
||||
|
||||
void hardQuit(final IQuest quest);
|
||||
|
||||
void hardRemove(final IQuest quest);
|
||||
|
||||
void hardClear();
|
||||
|
||||
void hardStagePut(final IQuest key, final Integer val);
|
||||
|
||||
void hardDataPut(final IQuest key, final QuestData val);
|
||||
|
||||
boolean canUseCompass();
|
||||
|
||||
void resetCompass();
|
||||
|
||||
void findCompassTarget();
|
||||
|
||||
void findNextCompassTarget(final boolean notify);
|
||||
|
||||
boolean hasItem(final ItemStack is);
|
||||
|
||||
Set<String> dispatchMultiplayerEverything(final IQuest quest, final ObjectiveType type,
|
||||
final BiFunction<IQuester, IQuest, Void> fun);
|
||||
|
||||
Set<String> dispatchMultiplayerObjectives(final IQuest quest, final IStage currentStage,
|
||||
final Function<IQuester, Void> fun);
|
||||
|
||||
List<IQuester> getMultiplayerQuesters(final IQuest quest);
|
||||
|
||||
boolean offerQuest(final IQuest quest, final boolean giveReason);
|
||||
|
||||
boolean canAcceptOffer(final IQuest quest, final boolean giveReason);
|
||||
|
||||
boolean meetsCondition(final IQuest quest, final boolean giveReason);
|
||||
|
||||
boolean isSelectingBlock();
|
||||
|
||||
boolean isInRegion(final String regionID);
|
||||
}
|
87
api/src/main/java/me/blackvein/quests/quests/IQuest.java
Normal file
87
api/src/main/java/me/blackvein/quests/quests/IQuest.java
Normal file
@ -0,0 +1,87 @@
|
||||
package me.blackvein.quests.quests;
|
||||
|
||||
import me.blackvein.quests.actions.IAction;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.util.LinkedList;
|
||||
|
||||
public interface IQuest extends Comparable<IQuest> {
|
||||
Plugin getPlugin();
|
||||
|
||||
void setPlugin(Plugin plugin);
|
||||
|
||||
String getId();
|
||||
|
||||
void setId(String id);
|
||||
|
||||
String getName();
|
||||
|
||||
void setName(final String name);
|
||||
|
||||
String getDescription();
|
||||
|
||||
void setDescription(final String description);
|
||||
|
||||
String getFinished();
|
||||
|
||||
void setFinished(final String finished);
|
||||
|
||||
String getRegionStart();
|
||||
|
||||
void setRegionStart(final String regionStart);
|
||||
|
||||
ItemStack getGUIDisplay();
|
||||
|
||||
void setGUIDisplay(final ItemStack guiDisplay);
|
||||
|
||||
IStage getStage(final int index);
|
||||
|
||||
LinkedList<IStage> getStages();
|
||||
|
||||
NPC getNpcStart();
|
||||
|
||||
void setNpcStart(final NPC npcStart);
|
||||
|
||||
Location getBlockStart();
|
||||
|
||||
void setBlockStart(final Location blockStart);
|
||||
|
||||
IAction getInitialAction();
|
||||
|
||||
void setInitialAction(final IAction initialAction);
|
||||
|
||||
Requirements getRequirements();
|
||||
|
||||
Planner getPlanner();
|
||||
|
||||
Rewards getRewards();
|
||||
|
||||
Options getOptions();
|
||||
|
||||
void nextStage(final IQuester quester, final boolean allowSharedProgress);
|
||||
|
||||
void setStage(final IQuester quester, final int stage);
|
||||
|
||||
boolean updateCompass(final IQuester quester, final IStage stage);
|
||||
|
||||
boolean testRequirements(final IQuester quester);
|
||||
|
||||
boolean testRequirements(final OfflinePlayer player);
|
||||
|
||||
void completeQuest(final IQuester quester);
|
||||
|
||||
void completeQuest(final IQuester quester, final boolean allowMultiplayer);
|
||||
|
||||
void failQuest(final IQuester quester);
|
||||
|
||||
void failQuest(final IQuester quester, final boolean ignoreFailAction);
|
||||
|
||||
boolean isInRegion(final IQuester quester);
|
||||
|
||||
boolean isInRegionStart(final IQuester quester);
|
||||
}
|
315
api/src/main/java/me/blackvein/quests/quests/IStage.java
Normal file
315
api/src/main/java/me/blackvein/quests/quests/IStage.java
Normal file
@ -0,0 +1,315 @@
|
||||
package me.blackvein.quests.quests;
|
||||
|
||||
import me.blackvein.quests.actions.IAction;
|
||||
import me.blackvein.quests.conditions.ICondition;
|
||||
import me.blackvein.quests.enums.ObjectiveType;
|
||||
import me.blackvein.quests.module.ICustomObjective;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
|
||||
public interface IStage {
|
||||
LinkedList<ItemStack> getBlocksToBreak();
|
||||
|
||||
boolean addBlockToBreak(ItemStack blockToBreak);
|
||||
|
||||
void setBlocksToBreak(final LinkedList<ItemStack> blocksToBreak);
|
||||
|
||||
LinkedList<ItemStack> getBlocksToDamage();
|
||||
|
||||
boolean addBlockToDamage(ItemStack blockToDamage);
|
||||
|
||||
void setBlocksToDamage(final LinkedList<ItemStack> blocksToDamage);
|
||||
|
||||
LinkedList<ItemStack> getBlocksToPlace();
|
||||
|
||||
boolean addBlockToPlace(ItemStack blockToPlace);
|
||||
|
||||
void setBlocksToPlace(final LinkedList<ItemStack> blocksToPlace);
|
||||
|
||||
LinkedList<ItemStack> getBlocksToUse();
|
||||
|
||||
boolean addBlockToUse(ItemStack blockToUse);
|
||||
|
||||
void setBlocksToUse(final LinkedList<ItemStack> blocksToUse);
|
||||
|
||||
LinkedList<ItemStack> getBlocksToCut();
|
||||
|
||||
boolean addBlockToCut(ItemStack blockToCut);
|
||||
|
||||
void setBlocksToCut(final LinkedList<ItemStack> blocksToCut);
|
||||
|
||||
LinkedList<ItemStack> getItemsToCraft();
|
||||
|
||||
boolean addItemToCraft(ItemStack itemToCraft);
|
||||
|
||||
void setItemsToCraft(final LinkedList<ItemStack> itemsToCraft);
|
||||
|
||||
LinkedList<ItemStack> getItemsToSmelt();
|
||||
|
||||
boolean addItemToSmelt(ItemStack itemToSmelt);
|
||||
|
||||
void setItemsToSmelt(final LinkedList<ItemStack> itemsToSmelt);
|
||||
|
||||
LinkedList<ItemStack> getItemsToEnchant();
|
||||
|
||||
boolean addItemToEnchant(ItemStack itemToEnchant);
|
||||
|
||||
void setItemsToEnchant(final LinkedList<ItemStack> itemsToEnchant);
|
||||
|
||||
LinkedList<ItemStack> getItemsToBrew();
|
||||
|
||||
boolean addItemsToBrew(ItemStack itemToBrew);
|
||||
|
||||
void setItemsToBrew(final LinkedList<ItemStack> itemsToBrew);
|
||||
|
||||
LinkedList<ItemStack> getItemsToConsume();
|
||||
|
||||
boolean addItemToConsume(ItemStack itemToConsume);
|
||||
|
||||
void setItemsToConsume(final LinkedList<ItemStack> itemsToConsume);
|
||||
|
||||
LinkedList<ItemStack> getItemsToDeliver();
|
||||
|
||||
boolean addItemToDeliver(ItemStack itemToDeliver);
|
||||
|
||||
void setItemsToDeliver(final LinkedList<ItemStack> itemsToDeliver);
|
||||
|
||||
LinkedList<Integer> getItemDeliveryTargets();
|
||||
|
||||
boolean addItemDeliveryTarget(Integer itemDeliveryTarget);
|
||||
|
||||
void setItemDeliveryTargets(final LinkedList<Integer> itemDeliveryTargets);
|
||||
|
||||
LinkedList<String> getDeliverMessages();
|
||||
|
||||
boolean addDeliverMessage(String deliverMessage);
|
||||
|
||||
void setDeliverMessages(final LinkedList<String> deliverMessages);
|
||||
|
||||
LinkedList<Integer> getCitizensToInteract();
|
||||
|
||||
boolean addCitizenToInteract(Integer citizenToInteract);
|
||||
|
||||
void setCitizensToInteract(final LinkedList<Integer> citizensToInteract);
|
||||
|
||||
LinkedList<Integer> getCitizensToKill();
|
||||
|
||||
boolean addCitizenToKill(Integer citizenToKill);
|
||||
|
||||
void setCitizensToKill(final LinkedList<Integer> citizensToKill);
|
||||
|
||||
LinkedList<Integer> getCitizenNumToKill();
|
||||
|
||||
boolean addCitizenNumToKill(Integer citizenNumToKill);
|
||||
|
||||
void setCitizenNumToKill(final LinkedList<Integer> citizenNumToKill);
|
||||
|
||||
LinkedList<EntityType> getMobsToKill();
|
||||
|
||||
boolean addMobToKill(EntityType mobToKill);
|
||||
|
||||
void setMobsToKill(final LinkedList<EntityType> mobsToKill);
|
||||
|
||||
LinkedList<Integer> getMobNumToKill();
|
||||
|
||||
boolean addMobNumToKill(Integer mobNumToKill);
|
||||
|
||||
void setMobNumToKill(final LinkedList<Integer> mobNumToKill);
|
||||
|
||||
LinkedList<Location> getLocationsToKillWithin();
|
||||
|
||||
boolean addLocationToKillWithin(Location locationToKillWithin);
|
||||
|
||||
void setLocationsToKillWithin(final LinkedList<Location> locationsToKillWithin);
|
||||
|
||||
LinkedList<Integer> getRadiiToKillWithin();
|
||||
|
||||
boolean addRadiusToKillWithin(Integer radiusToKillWithin);
|
||||
|
||||
void setRadiiToKillWithin(final LinkedList<Integer> radiiToKillWithin);
|
||||
|
||||
LinkedList<String> getKillNames();
|
||||
|
||||
boolean addKillName(String killName);
|
||||
|
||||
void setKillNames(final LinkedList<String> killNames);
|
||||
|
||||
LinkedList<Location> getLocationsToReach();
|
||||
|
||||
boolean addLocationToReach(Location locationToReach);
|
||||
|
||||
void setLocationsToReach(final LinkedList<Location> locationsToReach);
|
||||
|
||||
LinkedList<Integer> getRadiiToReachWithin();
|
||||
|
||||
boolean addRadiusToReachWithin(Integer radiusToReachWithin);
|
||||
|
||||
void setRadiiToReachWithin(final LinkedList<Integer> radiiToReachWithin);
|
||||
|
||||
LinkedList<World> getWorldsToReachWithin();
|
||||
|
||||
boolean addWorldToReachWithin(World worldToReachWithin);
|
||||
|
||||
void setWorldsToReachWithin(final LinkedList<World> worldsToReachWithin);
|
||||
|
||||
LinkedList<String> getLocationNames();
|
||||
|
||||
boolean addLocationName(String locationName);
|
||||
|
||||
void setLocationNames(final LinkedList<String> locationNames);
|
||||
|
||||
LinkedList<EntityType> getMobsToTame();
|
||||
|
||||
boolean addMobToTame(EntityType mobToTame);
|
||||
|
||||
void setMobsToTame(final LinkedList<EntityType> mobsToTame);
|
||||
|
||||
LinkedList<Integer> getMobNumToTame();
|
||||
|
||||
boolean addMobNumToTame(Integer mobNumToTame);
|
||||
|
||||
void setMobNumToTame(final LinkedList<Integer> mobNumToTame);
|
||||
|
||||
Integer getFishToCatch();
|
||||
|
||||
void setFishToCatch(final Integer fishToCatch);
|
||||
|
||||
Integer getCowsToMilk();
|
||||
|
||||
void setCowsToMilk(final Integer cowsToMilk);
|
||||
|
||||
Integer getPlayersToKill();
|
||||
|
||||
void setPlayersToKill(final Integer playersToKill);
|
||||
|
||||
LinkedList<DyeColor> getSheepToShear();
|
||||
|
||||
boolean addSheepToShear(DyeColor sheepToShear);
|
||||
|
||||
void setSheepToShear(final LinkedList<DyeColor> sheepToShear);
|
||||
|
||||
LinkedList<Integer> getSheepNumToShear();
|
||||
|
||||
boolean addSheepNumToShear(Integer sheepNumToShear);
|
||||
|
||||
void setSheepNumToShear(final LinkedList<Integer> sheepNumToShear);
|
||||
|
||||
LinkedList<String> getPasswordDisplays();
|
||||
|
||||
boolean addPasswordDisplay(String passwordDisplay);
|
||||
|
||||
void setPasswordDisplays(final LinkedList<String> passwordDisplays);
|
||||
|
||||
LinkedList<String> getPasswordPhrases();
|
||||
|
||||
boolean addPasswordPhrase(String passwordPhrase);
|
||||
|
||||
void setPasswordPhrases(final LinkedList<String> passwordPhrases);
|
||||
|
||||
String getScript();
|
||||
|
||||
void setScript(final String script);
|
||||
|
||||
IAction getStartAction();
|
||||
|
||||
void setStartAction(final IAction startAction);
|
||||
|
||||
IAction getFinishAction();
|
||||
|
||||
void setFinishAction(final IAction finishAction);
|
||||
|
||||
IAction getFailAction();
|
||||
|
||||
void setFailAction(final IAction failAction);
|
||||
|
||||
IAction getDeathAction();
|
||||
|
||||
void setDeathAction(final IAction deathAction);
|
||||
|
||||
Map<String, IAction> getChatActions();
|
||||
|
||||
void addChatAction(Map.Entry<String, IAction> chatAction);
|
||||
|
||||
void setChatActions(final Map<String, IAction> chatActions);
|
||||
|
||||
Map<String, IAction> getCommandActions();
|
||||
|
||||
void addCommandAction(Map.Entry<String, IAction> commandAction);
|
||||
|
||||
void setCommandActions(final Map<String, IAction> commandActions);
|
||||
|
||||
IAction getDisconnectAction();
|
||||
|
||||
void setDisconnectAction(final IAction disconnectAction);
|
||||
|
||||
ICondition getCondition();
|
||||
|
||||
void setCondition(final ICondition condition);
|
||||
|
||||
long getDelay();
|
||||
|
||||
void setDelay(final long delay);
|
||||
|
||||
String getDelayMessage();
|
||||
|
||||
void setDelayMessage(final String delayMessage);
|
||||
|
||||
String getCompleteMessage();
|
||||
|
||||
void setCompleteMessage(final String completeMessage);
|
||||
|
||||
String getStartMessage();
|
||||
|
||||
void setStartMessage(final String startMessage);
|
||||
|
||||
LinkedList<String> getObjectiveOverrides();
|
||||
|
||||
boolean addObjectiveOverride(String objectiveOverride);
|
||||
|
||||
void setObjectiveOverrides(final LinkedList<String> objectiveOverrides);
|
||||
|
||||
LinkedList<ICustomObjective> getCustomObjectives();
|
||||
|
||||
boolean addCustomObjectives(final ICustomObjective customObjective);
|
||||
|
||||
void clearCustomObjectives();
|
||||
|
||||
LinkedList<Integer> getCustomObjectiveCounts();
|
||||
|
||||
boolean addCustomObjectiveCounts(final Integer customObjectiveCount);
|
||||
|
||||
void clearCustomObjectiveCounts();
|
||||
|
||||
LinkedList<String> getCustomObjectiveDisplays();
|
||||
|
||||
void clearCustomObjectiveDisplays();
|
||||
|
||||
LinkedList<Map.Entry<String, Object>> getCustomObjectiveData();
|
||||
|
||||
boolean addCustomObjectiveData(final Map.Entry<String, Object> customObjectiveDatum);
|
||||
|
||||
void clearCustomObjectiveData();
|
||||
|
||||
/**
|
||||
* Check if stage has at least one objective<p>
|
||||
*
|
||||
* Excludes start/complete message, delay, and objective-override
|
||||
*
|
||||
* @return true if stage contains an objective
|
||||
*/
|
||||
boolean hasObjective();
|
||||
|
||||
/**
|
||||
* Check if stage has the specified type of objective<p>
|
||||
*
|
||||
* @param type The type of objective to check for
|
||||
* @return true if stage contains specified objective
|
||||
*/
|
||||
boolean containsObjective(final ObjectiveType type);
|
||||
}
|
16
api/src/main/java/me/blackvein/quests/quests/Objective.java
Normal file
16
api/src/main/java/me/blackvein/quests/quests/Objective.java
Normal file
@ -0,0 +1,16 @@
|
||||
package me.blackvein.quests.quests;
|
||||
|
||||
import me.blackvein.quests.enums.ObjectiveType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public interface Objective {
|
||||
ObjectiveType getType();
|
||||
|
||||
int getProgress();
|
||||
|
||||
int getGoal();
|
||||
|
||||
ItemStack getItemProgress();
|
||||
|
||||
ItemStack getItemGoal();
|
||||
}
|
39
api/src/main/java/me/blackvein/quests/quests/Options.java
Normal file
39
api/src/main/java/me/blackvein/quests/quests/Options.java
Normal file
@ -0,0 +1,39 @@
|
||||
package me.blackvein.quests.quests;
|
||||
|
||||
public interface Options {
|
||||
boolean canAllowCommands();
|
||||
|
||||
void setAllowCommands(final boolean allowCommands);
|
||||
|
||||
boolean canAllowQuitting();
|
||||
|
||||
void setAllowQuitting(final boolean allowQuitting);
|
||||
|
||||
boolean canIgnoreSilkTouch();
|
||||
|
||||
void setIgnoreSilkTouch(final boolean ignoreSilkTouch);
|
||||
|
||||
String getExternalPartyPlugin();
|
||||
|
||||
void setExternalPartyPlugin(final String externalPartyPlugin);
|
||||
|
||||
boolean canUsePartiesPlugin();
|
||||
|
||||
void setUsePartiesPlugin(final boolean usePartiesPlugin);
|
||||
|
||||
int getShareProgressLevel();
|
||||
|
||||
void setShareProgressLevel(final int shareProgressLevel);
|
||||
|
||||
boolean canShareSameQuestOnly();
|
||||
|
||||
void setShareSameQuestOnly(final boolean shareSameQuestOnly);
|
||||
|
||||
double getShareDistance();
|
||||
|
||||
void setShareDistance(final double shareDistance);
|
||||
|
||||
boolean canHandleOfflinePlayers();
|
||||
|
||||
void setHandleOfflinePlayers(final boolean handleOfflinePlayers);
|
||||
}
|
20
api/src/main/java/me/blackvein/quests/quests/Planner.java
Normal file
20
api/src/main/java/me/blackvein/quests/quests/Planner.java
Normal file
@ -0,0 +1,20 @@
|
||||
package me.blackvein.quests.quests;
|
||||
|
||||
public interface Planner {
|
||||
String getStart();
|
||||
long getStartInMillis();
|
||||
boolean hasStart();
|
||||
void setStart(final String start);
|
||||
String getEnd();
|
||||
long getEndInMillis();
|
||||
boolean hasEnd();
|
||||
void setEnd(final String end);
|
||||
long getRepeat();
|
||||
boolean hasRepeat();
|
||||
void setRepeat(final long repeat);
|
||||
long getCooldown();
|
||||
boolean hasCooldown();
|
||||
void setCooldown(final long cooldown);
|
||||
boolean getOverride();
|
||||
void setOverride(final boolean override);
|
||||
}
|
@ -0,0 +1,54 @@
|
||||
package me.blackvein.quests.quests;
|
||||
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.conversations.ConversationFactory;
|
||||
import org.bukkit.conversations.Prompt;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
public interface QuestFactory {
|
||||
Map<UUID, Block> getSelectedBlockStarts();
|
||||
|
||||
void setSelectedBlockStarts(final Map<UUID, Block> selectedBlockStarts);
|
||||
|
||||
Map<UUID, Block> getSelectedKillLocations();
|
||||
|
||||
void setSelectedKillLocations(final Map<UUID, Block> selectedKillLocations);
|
||||
|
||||
Map<UUID, Block> getSelectedReachLocations();
|
||||
|
||||
void setSelectedReachLocations(final Map<UUID, Block> selectedReachLocations);
|
||||
|
||||
Set<UUID> getSelectingNpcs();
|
||||
|
||||
void setSelectingNpcs(final Set<UUID> selectingNpcs);
|
||||
|
||||
List<String> getNamesOfQuestsBeingEdited();
|
||||
|
||||
void setNamesOfQuestsBeingEdited(final List<String> questNames);
|
||||
|
||||
ConversationFactory getConversationFactory();
|
||||
|
||||
Prompt returnToMenu(final ConversationContext context);
|
||||
|
||||
void loadQuest(final ConversationContext context, final IQuest q);
|
||||
|
||||
void deleteQuest(final ConversationContext context);
|
||||
|
||||
void saveQuest(final ConversationContext context, final ConfigurationSection section);
|
||||
|
||||
/*void saveRequirements(final ConversationContext context, final ConfigurationSection section);
|
||||
|
||||
void saveStages(final ConversationContext context, final ConfigurationSection section);
|
||||
|
||||
void saveRewards(final ConversationContext context, final ConfigurationSection section);
|
||||
|
||||
void savePlanner(final ConversationContext context, final ConfigurationSection section);
|
||||
|
||||
void saveOptions(final ConversationContext context, final ConfigurationSection section);*/
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
package me.blackvein.quests.quests;
|
||||
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface Requirements {
|
||||
int getMoney();
|
||||
|
||||
void setMoney(final int money);
|
||||
|
||||
int getQuestPoints();
|
||||
|
||||
void setQuestPoints(final int questPoints);
|
||||
|
||||
List<ItemStack> getItems();
|
||||
|
||||
void setItems(final List<ItemStack> items);
|
||||
|
||||
List<Boolean> getRemoveItems();
|
||||
|
||||
void setRemoveItems(final List<Boolean> removeItems);
|
||||
|
||||
List<IQuest> getNeededQuests();
|
||||
|
||||
void setNeededQuests(final List<IQuest> neededQuests);
|
||||
|
||||
List<IQuest> getBlockQuests();
|
||||
|
||||
void setBlockQuests(final List<IQuest> blockQuests);
|
||||
|
||||
List<String> getPermissions();
|
||||
|
||||
void setPermissions(final List<String> permissions);
|
||||
|
||||
List<String> getMcmmoSkills();
|
||||
|
||||
void setMcmmoSkills(final List<String> mcmmoSkills);
|
||||
|
||||
List<Integer> getMcmmoAmounts();
|
||||
|
||||
void setMcmmoAmounts(final List<Integer> mcmmoAmounts);
|
||||
|
||||
String getHeroesPrimaryClass();
|
||||
|
||||
void setHeroesPrimaryClass(final String heroesPrimaryClass);
|
||||
|
||||
String getHeroesSecondaryClass();
|
||||
|
||||
void setHeroesSecondaryClass(final String heroesSecondaryClass);
|
||||
|
||||
Map<String, Map<String, Object>> getCustomRequirements();
|
||||
|
||||
void setCustomRequirements(final Map<String, Map<String, Object>> customRequirements);
|
||||
|
||||
List<String> getDetailsOverride();
|
||||
|
||||
void setDetailsOverride(final List<String> detailsOverride);
|
||||
}
|
41
api/src/main/java/me/blackvein/quests/quests/Rewards.java
Normal file
41
api/src/main/java/me/blackvein/quests/quests/Rewards.java
Normal file
@ -0,0 +1,41 @@
|
||||
package me.blackvein.quests.quests;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public interface Rewards {
|
||||
int getMoney();
|
||||
void setMoney(final int money);
|
||||
int getQuestPoints();
|
||||
void setQuestPoints(final int questPoints);
|
||||
int getExp();
|
||||
void setExp(final int exp);
|
||||
List<String> getCommands();
|
||||
void setCommands(final List<String> commands);
|
||||
List<String> getCommandsOverrideDisplay();
|
||||
void setCommandsOverrideDisplay(final List<String> commandsOverrideDisplay);
|
||||
List<String> getPermissions();
|
||||
void setPermissions(final List<String> permissions);
|
||||
List<String> getPermissionWorlds();
|
||||
void setPermissionWorlds(final List<String> worldNames);
|
||||
List<ItemStack> getItems();
|
||||
void setItems(final List<ItemStack> items);
|
||||
List<String> getMcmmoSkills();
|
||||
void setMcmmoSkills(final List<String> mcmmoSkills);
|
||||
List<Integer> getMcmmoAmounts();
|
||||
void setMcmmoAmounts(final List<Integer> mcmmoAmounts);
|
||||
List<String> getHeroesClasses();
|
||||
void setHeroesClasses(final List<String> heroesClasses);
|
||||
List<Double> getHeroesAmounts();
|
||||
void setHeroesAmounts(final List<Double> heroesAmounts);
|
||||
int getPartiesExperience();
|
||||
void setPartiesExperience(final int partiesExperience);
|
||||
List<String> getPhatLoots();
|
||||
void setPhatLoots(final List<String> phatLoots);
|
||||
Map<String, Map<String, Object>> getCustomRewards();
|
||||
void setCustomRewards(final Map<String, Map<String, Object>> customRewards);
|
||||
List<String> getDetailsOverride();
|
||||
void setDetailsOverride(final List<String> detailsOverride);
|
||||
}
|
@ -12,7 +12,7 @@
|
||||
|
||||
package me.blackvein.quests.reflect.denizen;
|
||||
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.QuestsAPI;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
@ -27,7 +27,7 @@ import java.util.logging.Level;
|
||||
|
||||
public class DenizenAPI_1_0_9 {
|
||||
|
||||
private static final Quests quests = (Quests) Bukkit.getPluginManager().getPlugin("Quests");
|
||||
private static final QuestsAPI quests = (QuestsAPI) Bukkit.getPluginManager().getPlugin("Quests");
|
||||
private static final DenizenAPI api = quests != null ? quests.getDependencies().getDenizenApi() : null;
|
||||
|
||||
public static boolean containsScript(final String input) {
|
||||
|
@ -16,7 +16,7 @@ import com.denizenscript.denizen.objects.NPCTag;
|
||||
import com.denizenscript.denizen.objects.PlayerTag;
|
||||
import com.denizenscript.denizencore.scripts.ScriptRegistry;
|
||||
import com.denizenscript.denizencore.scripts.containers.core.TaskScriptContainer;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.QuestsAPI;
|
||||
import net.citizensnpcs.api.npc.NPC;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -31,7 +31,7 @@ import java.util.logging.Level;
|
||||
|
||||
public class DenizenAPI_1_1_0 {
|
||||
|
||||
private static final Quests quests = (Quests) Bukkit.getPluginManager().getPlugin("Quests");
|
||||
private static final QuestsAPI quests = (QuestsAPI) Bukkit.getPluginManager().getPlugin("Quests");
|
||||
private static final DenizenAPI api = quests != null ? quests.getDependencies().getDenizenApi() : null;
|
||||
|
||||
public static boolean containsScript(final String input) {
|
||||
|
@ -12,8 +12,7 @@
|
||||
|
||||
package me.blackvein.quests.util;
|
||||
|
||||
import me.blackvein.quests.Dependencies;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.QuestsAPI;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -126,7 +125,7 @@ public class Lang {
|
||||
}
|
||||
}
|
||||
|
||||
public static void init(final Quests plugin) throws InvalidConfigurationException, IOException {
|
||||
public static void init(final QuestsAPI plugin) throws InvalidConfigurationException, IOException {
|
||||
final File langFile = new File(plugin.getDataFolder(), File.separator + "lang" + File.separator + iso + File.separator
|
||||
+ "strings.yml");
|
||||
final File langFile_new = new File(plugin.getDataFolder(), File.separator + "lang" + File.separator + iso
|
||||
@ -278,7 +277,7 @@ public class Lang {
|
||||
}
|
||||
s = convertString(s);
|
||||
if (Bukkit.getServer().getPluginManager().getPlugin("PlaceholderAPI") != null ) {
|
||||
if (Dependencies.placeholder.isEnabled()) {
|
||||
if (Bukkit.getServer().getPluginManager().getPlugin("PlaceholderAPI").isEnabled()) {
|
||||
s = PlaceholderAPI.setPlaceholders(p, s);
|
||||
}
|
||||
}
|
||||
|
274
core/pom.xml
Normal file
274
core/pom.xml
Normal file
@ -0,0 +1,274 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<parent>
|
||||
<groupId>me.blackvein.quests</groupId>
|
||||
<artifactId>quests-parent</artifactId>
|
||||
<version>4.2.0</version>
|
||||
</parent>
|
||||
<artifactId>quests-core</artifactId>
|
||||
|
||||
<properties>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
</properties>
|
||||
|
||||
<repositories>
|
||||
<repository>
|
||||
<!-- CitizensBooks, DungeonsXL, GPS, LocaleLib, mcMMO Classic, PhatLoots -->
|
||||
<id>jitpack.io</id>
|
||||
<url>https://jitpack.io</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<id>spigot-repo</id>
|
||||
<url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<!-- Citizens, Denizen -->
|
||||
<id>citizens-repo</id>
|
||||
<url>https://repo.citizensnpcs.co/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<!-- WorldEdit, WorldGuard -->
|
||||
<id>enginehub-repo</id>
|
||||
<url>https://maven.enginehub.org/repo/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<!-- Parties -->
|
||||
<id>alessiodp-repo</id>
|
||||
<url>https://repo.alessiodp.com/releases/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<!-- PlaceholderAPI -->
|
||||
<id>papi-repo</id>
|
||||
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
|
||||
</repository>
|
||||
<repository>
|
||||
<!-- Heroes, Vault -->
|
||||
<id>hc-repo</id>
|
||||
<url>https://nexus.hc.to/content/repositories/pub_releases/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.13.2-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.citizensnpcs</groupId>
|
||||
<artifactId>citizensapi</artifactId>
|
||||
<version>2.0.21-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.denizenscript</groupId>
|
||||
<artifactId>denizen</artifactId>
|
||||
<version>1.1.3-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>net.milkbowl.vault</groupId>
|
||||
<artifactId>Vault</artifactId>
|
||||
<version>1.7.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.mcMMO-Dev</groupId>
|
||||
<artifactId>mcMMO-Classic</artifactId>
|
||||
<version>master-82f97cbe04-1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.herocraftonline.heroes</groupId>
|
||||
<artifactId>heroes-stripped</artifactId>
|
||||
<version>4dd3dd85</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sk89q.worldedit</groupId>
|
||||
<artifactId>worldedit-bukkit</artifactId>
|
||||
<version>7.2.8</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.sk89q.worldguard</groupId>
|
||||
<artifactId>worldguard-bukkit</artifactId>
|
||||
<version>7.0.5-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>me.clip</groupId>
|
||||
<artifactId>placeholderapi</artifactId>
|
||||
<version>2.9.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.nicuch</groupId>
|
||||
<artifactId>CitizensBooks</artifactId>
|
||||
<version>2.5.5</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.RednedEpic</groupId>
|
||||
<artifactId>PhatLoots</artifactId>
|
||||
<version>e55d0ba1f6</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alessiodp.parties</groupId>
|
||||
<artifactId>parties-api</artifactId>
|
||||
<version>3.1.6</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.PikaMug</groupId>
|
||||
<artifactId>Unite</artifactId>
|
||||
<version>1.1.1</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.github.PikaMug</groupId>
|
||||
<artifactId>LocaleLib</artifactId>
|
||||
<version>2.4</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>mysql</groupId>
|
||||
<artifactId>mysql-connector-java</artifactId>
|
||||
<version>8.0.25</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java</artifactId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.zaxxer</groupId>
|
||||
<artifactId>HikariCP</artifactId>
|
||||
<!-- Do not update until Java 11 is min -->
|
||||
<version>4.0.3</version>
|
||||
<exclusions>
|
||||
<exclusion>
|
||||
<artifactId>slf4j-api</artifactId>
|
||||
<groupId>org.slf4j</groupId>
|
||||
</exclusion>
|
||||
</exclusions>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-simple</artifactId>
|
||||
<version>1.7.33</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.logging.log4j</groupId>
|
||||
<artifactId>log4j-core</artifactId>
|
||||
<version>2.17.1</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>me.blackvein.quests</groupId>
|
||||
<artifactId>quests-api</artifactId>
|
||||
<version>${project.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
<defaultGoal>clean package install</defaultGoal>
|
||||
<sourceDirectory>${basedir}/src/main/java</sourceDirectory>
|
||||
|
||||
<resources>
|
||||
<resource>
|
||||
<targetPath>.</targetPath>
|
||||
<directory>${basedir}/src/main/resources/</directory>
|
||||
<filtering>true</filtering>
|
||||
<includes>
|
||||
<include>lang/**/*.*</include>
|
||||
<include>actions.yml</include>
|
||||
<include>conditions.yml</include>
|
||||
<include>config.yml</include>
|
||||
<include>plugin.yml</include>
|
||||
<include>quests.yml</include>
|
||||
<include>strings.yml</include>
|
||||
</includes>
|
||||
</resource>
|
||||
<resource>
|
||||
<targetPath>.</targetPath>
|
||||
<directory>${basedir}/</directory>
|
||||
<filtering>false</filtering>
|
||||
<includes>
|
||||
<include>README.md</include>
|
||||
</includes>
|
||||
</resource>
|
||||
</resources>
|
||||
|
||||
<plugins>
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-compiler-plugin</artifactId>
|
||||
<version>3.8.1</version>
|
||||
<configuration>
|
||||
<source>1.8</source>
|
||||
<target>1.8</target>
|
||||
</configuration>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-jar-plugin</artifactId>
|
||||
<version>3.2.0</version>
|
||||
</plugin>
|
||||
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-shade-plugin</artifactId>
|
||||
<version>3.2.4</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<phase>package</phase>
|
||||
<goals>
|
||||
<goal>shade</goal>
|
||||
</goals>
|
||||
<configuration>
|
||||
<minimizeJar>false</minimizeJar>
|
||||
<createDependencyReducedPom>false</createDependencyReducedPom>
|
||||
</configuration>
|
||||
</execution>
|
||||
</executions>
|
||||
|
||||
<configuration>
|
||||
<artifactSet>
|
||||
<includes>
|
||||
<include>me.*</include>
|
||||
<include>com.github.PikaMug:LocaleLib</include>
|
||||
<include>com.zaxxer:HikariCP</include>
|
||||
<include>org.slf4j:slf4j-simple</include>
|
||||
<include>org.slf4j:slf4j-api</include>
|
||||
<include>mysql</include>
|
||||
</includes>
|
||||
</artifactSet>
|
||||
<relocations>
|
||||
<relocation>
|
||||
<pattern>me.pikamug.localelib</pattern>
|
||||
<shadedPattern>me.blackvein.quests.libs.localelib</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>com.zaxxer.hikari</pattern>
|
||||
<shadedPattern>me.blackvein.quests.libs.hikari</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>org.slf4j</pattern>
|
||||
<shadedPattern>me.blackvein.quests.libs.slf4j</shadedPattern>
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>com.mysql</pattern>
|
||||
<shadedPattern>me.blackvein.quests.libs.mysql</shadedPattern>
|
||||
</relocation>
|
||||
</relocations>
|
||||
</configuration>
|
||||
</plugin>
|
||||
</plugins>
|
||||
</build>
|
||||
</project>
|
@ -15,6 +15,10 @@ package me.blackvein.quests;
|
||||
import me.blackvein.quests.enums.ObjectiveType;
|
||||
import me.blackvein.quests.events.quester.QuesterPostUpdateObjectiveEvent;
|
||||
import me.blackvein.quests.events.quester.QuesterPreUpdateObjectiveEvent;
|
||||
import me.blackvein.quests.module.ICustomObjective;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import me.blackvein.quests.quests.BukkitObjective;
|
||||
import me.blackvein.quests.quests.IStage;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Listener;
|
||||
@ -27,7 +31,7 @@ import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
public abstract class CustomObjective implements Listener {
|
||||
public abstract class CustomObjective implements ICustomObjective, Listener {
|
||||
|
||||
private final Quests plugin = Quests.getPlugin(Quests.class);
|
||||
private String name = null;
|
||||
@ -40,118 +44,131 @@ public abstract class CustomObjective implements Listener {
|
||||
private boolean showCount = true;
|
||||
private int count = 1;
|
||||
|
||||
@Override
|
||||
public String getModuleName() {
|
||||
return new File(getClass().getProtectionDomain().getCodeSource().getLocation().getPath()).getName()
|
||||
.replace(".jar", "");
|
||||
}
|
||||
|
||||
@Override
|
||||
public Entry<String, Short> getModuleItem() {
|
||||
return new AbstractMap.SimpleEntry<>("IRON_INGOT", (short) 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setName(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getAuthor() {
|
||||
return author;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAuthor(final String author) {
|
||||
this.author = author;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDisplay() {
|
||||
return display;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDisplay(final String display) {
|
||||
this.display = display;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Entry<String, Short> getItem() {
|
||||
return item;
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Use {@link #setItem(String, short)}
|
||||
*/
|
||||
public void addItem(final String type, final short durability) {
|
||||
setItem(type, durability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItem(final String type, final short durability) {
|
||||
this.item = new AbstractMap.SimpleEntry<>(type, durability);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LinkedList<Entry<String, Object>> getData() {
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Add a new prompt<p>
|
||||
*
|
||||
*
|
||||
* Note that the "defaultValue" Object will be cast to a String internally
|
||||
*
|
||||
*
|
||||
* @param title Prompt name
|
||||
* @param description Description of expected input
|
||||
* @param defaultValue Value to be used if input is not received
|
||||
*/
|
||||
@Override
|
||||
public void addStringPrompt(final String title, final String description, final Object defaultValue) {
|
||||
final Entry<String, Object> prompt = new AbstractMap.SimpleEntry<>(title, defaultValue);
|
||||
data.add(prompt);
|
||||
descriptions.put(title, description);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, String> getDescriptions() {
|
||||
return descriptions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCount() {
|
||||
return count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCount(final int count) {
|
||||
this.count = count;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getCountPrompt() {
|
||||
return countPrompt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCountPrompt(final String countPrompt) {
|
||||
this.countPrompt = countPrompt;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Check whether to let user set required amount for objective
|
||||
*/
|
||||
@Override
|
||||
public boolean canShowCount() {
|
||||
return showCount;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set whether to let user set required amount for objective
|
||||
*
|
||||
*
|
||||
* @param showCount Whether to show the count
|
||||
*/
|
||||
@Override
|
||||
public void setShowCount(final boolean showCount) {
|
||||
this.showCount = showCount;
|
||||
}
|
||||
|
||||
public Map<String, Object> getDataForPlayer(final Player player, final CustomObjective customObj, final Quest quest) {
|
||||
final Quester quester = plugin.getQuester(player.getUniqueId());
|
||||
|
||||
public Map<String, Object> getDataForPlayer(final Player player, final CustomObjective customObj,
|
||||
final Quest quest) {
|
||||
final IQuester quester = plugin.getQuester(player.getUniqueId());
|
||||
if (quester != null) {
|
||||
final Stage currentStage = quester.getCurrentStage(quest);
|
||||
final IStage currentStage = quester.getCurrentStage(quest);
|
||||
if (currentStage == null) {
|
||||
return null;
|
||||
}
|
||||
CustomObjective found = null;
|
||||
for (final me.blackvein.quests.CustomObjective co : currentStage.customObjectives) {
|
||||
ICustomObjective found = null;
|
||||
for (final ICustomObjective co : currentStage.getCustomObjectives()) {
|
||||
if (co.getName().equals(customObj.getName())) {
|
||||
found = co;
|
||||
break;
|
||||
@ -160,7 +177,7 @@ public abstract class CustomObjective implements Listener {
|
||||
if (found != null) {
|
||||
final Map<String, Object> m = new HashMap<>();
|
||||
for (final Entry<String, Object> dataMap : found.getData()) {
|
||||
for (final Entry<String, Object> e : currentStage.customObjectiveData) {
|
||||
for (final Entry<String, Object> e : currentStage.getCustomObjectiveData()) {
|
||||
if (e.getKey().equals(dataMap.getKey())) {
|
||||
m.put(e.getKey(), e.getValue());
|
||||
}
|
||||
@ -180,7 +197,7 @@ public abstract class CustomObjective implements Listener {
|
||||
if (quester.hasCustomObjective(quest, obj.getName())) {
|
||||
int index = -1;
|
||||
final LinkedList<Integer> customObjCounts = quester.getQuestData(quest).customObjectiveCounts;
|
||||
for (final CustomObjective co : quester.getCurrentStage(quest).customObjectives) {
|
||||
for (final ICustomObjective co : quester.getCurrentStage(quest).getCustomObjectives()) {
|
||||
index++;
|
||||
if (co.getName().equals(this.getName())) {
|
||||
if (index >= customObjCounts.size()) {
|
||||
@ -196,30 +213,30 @@ public abstract class CustomObjective implements Listener {
|
||||
}
|
||||
if (index > -1) {
|
||||
final int progress = customObjCounts.get(index);
|
||||
final int goal = quester.getCurrentStage(quest).customObjectiveCounts.get(index);
|
||||
|
||||
final int goal = quester.getCurrentStage(quest).getCustomObjectiveCounts().get(index);
|
||||
|
||||
final ObjectiveType type = ObjectiveType.CUSTOM;
|
||||
final QuesterPreUpdateObjectiveEvent preEvent
|
||||
= new QuesterPreUpdateObjectiveEvent(quester, quest, new Objective(type, progress, goal));
|
||||
final QuesterPreUpdateObjectiveEvent preEvent
|
||||
= new QuesterPreUpdateObjectiveEvent(quester, quest, new BukkitObjective(type, progress, goal));
|
||||
plugin.getServer().getPluginManager().callEvent(preEvent);
|
||||
|
||||
|
||||
if (progress >= goal) {
|
||||
quester.finishObjective(quest, new Objective(type, new ItemStack(Material.AIR, 1),
|
||||
quester.finishObjective(quest, new BukkitObjective(type, new ItemStack(Material.AIR, 1),
|
||||
new ItemStack(Material.AIR, goal)), null, null, null, null, null, null, obj);
|
||||
|
||||
|
||||
// Multiplayer
|
||||
final int finalIndex = index;
|
||||
quester.dispatchMultiplayerObjectives(quest, quester.getCurrentStage(quest), (final Quester q) -> {
|
||||
quester.dispatchMultiplayerObjectives(quest, quester.getCurrentStage(quest), (final IQuester q) -> {
|
||||
final int old = q.getQuestData(quest).customObjectiveCounts.get(finalIndex);
|
||||
q.getQuestData(quest).customObjectiveCounts.set(finalIndex, old + count);
|
||||
q.finishObjective(quest, new Objective(type, new ItemStack(Material.AIR, 1),
|
||||
q.finishObjective(quest, new BukkitObjective(type, new ItemStack(Material.AIR, 1),
|
||||
new ItemStack(Material.AIR, goal)), null, null, null, null, null, null, obj);
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
final QuesterPostUpdateObjectiveEvent postEvent
|
||||
= new QuesterPostUpdateObjectiveEvent(quester, quest, new Objective(type, progress, goal));
|
||||
|
||||
final QuesterPostUpdateObjectiveEvent postEvent
|
||||
= new QuesterPostUpdateObjectiveEvent(quester, quest, new BukkitObjective(type, progress, goal));
|
||||
plugin.getServer().getPluginManager().callEvent(postEvent);
|
||||
}
|
||||
}
|
@ -21,10 +21,11 @@ import com.gmail.nossr50.mcMMO;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import com.herocraftonline.heroes.Heroes;
|
||||
import com.herocraftonline.heroes.characters.Hero;
|
||||
import me.blackvein.quests.dependencies.IDependencies;
|
||||
import me.blackvein.quests.listeners.NpcListener;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import me.blackvein.quests.reflect.denizen.DenizenAPI;
|
||||
import me.blackvein.quests.reflect.worldguard.WorldGuardAPI;
|
||||
import me.blackvein.quests.util.Lang;
|
||||
import me.clip.placeholderapi.PlaceholderAPIPlugin;
|
||||
import me.pikamug.unite.api.objects.PartyProvider;
|
||||
import net.citizensnpcs.api.CitizensPlugin;
|
||||
@ -43,7 +44,7 @@ import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
|
||||
public class Dependencies {
|
||||
public class Dependencies implements IDependencies {
|
||||
|
||||
private final Quests plugin;
|
||||
private static Economy economy = null;
|
||||
@ -229,21 +230,6 @@ public class Dependencies {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void init() {
|
||||
getCitizens();
|
||||
getWorldGuardApi();
|
||||
getDenizenApi();
|
||||
getMcmmoClassic();
|
||||
getHeroes();
|
||||
getPhatLoots();
|
||||
getPlaceholderApi();
|
||||
getCitizensBooksApi();
|
||||
getPartiesApi();
|
||||
getPartyProvider();
|
||||
getVaultEconomy();
|
||||
getVaultPermission();
|
||||
}
|
||||
|
||||
private boolean setupEconomy() {
|
||||
try {
|
||||
@ -281,31 +267,8 @@ public class Dependencies {
|
||||
}
|
||||
return (partyProvider != null);
|
||||
}
|
||||
|
||||
/**
|
||||
* @deprecated Do not use. Will be removed in a future version.
|
||||
**/
|
||||
public String getCurrency(final boolean plural) {
|
||||
// TODO remove "money" from strings.yml
|
||||
if (getVaultEconomy() == null) {
|
||||
return Lang.get("money");
|
||||
}
|
||||
if (plural) {
|
||||
if (getVaultEconomy().currencyNamePlural().trim().isEmpty()) {
|
||||
return Lang.get("money");
|
||||
} else {
|
||||
return getVaultEconomy().currencyNamePlural();
|
||||
}
|
||||
} else {
|
||||
if (getVaultEconomy().currencyNameSingular().trim().isEmpty()) {
|
||||
return Lang.get("money");
|
||||
} else {
|
||||
return getVaultEconomy().currencyNameSingular();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public boolean runDenizenScript(final String scriptName, final Quester quester) {
|
||||
public boolean runDenizenScript(final String scriptName, final IQuester quester) {
|
||||
return plugin.getDenizenTrigger().runDenizenScript(scriptName, quester);
|
||||
}
|
||||
|
||||
@ -343,4 +306,19 @@ public class Dependencies {
|
||||
final Hero hero = getHero(uuid);
|
||||
return hero.getSecondClass().getName().equalsIgnoreCase(secondaryClass);
|
||||
}
|
||||
|
||||
public void init() {
|
||||
getCitizens();
|
||||
getWorldGuardApi();
|
||||
getDenizenApi();
|
||||
getMcmmoClassic();
|
||||
getHeroes();
|
||||
getPhatLoots();
|
||||
getPlaceholderApi();
|
||||
getCitizensBooksApi();
|
||||
getPartiesApi();
|
||||
getPartyProvider();
|
||||
getVaultEconomy();
|
||||
getVaultPermission();
|
||||
}
|
||||
}
|
@ -20,8 +20,10 @@ import com.codisimus.plugins.phatloots.loot.LootBundle;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.gmail.nossr50.util.player.UserManager;
|
||||
import com.herocraftonline.heroes.characters.Hero;
|
||||
import me.blackvein.quests.actions.IAction;
|
||||
import me.blackvein.quests.actions.Action;
|
||||
import me.blackvein.quests.conditions.Condition;
|
||||
import me.blackvein.quests.conditions.ICondition;
|
||||
import me.blackvein.quests.dependencies.IDependencies;
|
||||
import me.blackvein.quests.events.quest.QuestUpdateCompassEvent;
|
||||
import me.blackvein.quests.events.quester.QuesterPostChangeStageEvent;
|
||||
import me.blackvein.quests.events.quester.QuesterPostCompleteQuestEvent;
|
||||
@ -29,6 +31,17 @@ import me.blackvein.quests.events.quester.QuesterPostFailQuestEvent;
|
||||
import me.blackvein.quests.events.quester.QuesterPreChangeStageEvent;
|
||||
import me.blackvein.quests.events.quester.QuesterPreCompleteQuestEvent;
|
||||
import me.blackvein.quests.events.quester.QuesterPreFailQuestEvent;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import me.blackvein.quests.quests.BukkitOptions;
|
||||
import me.blackvein.quests.quests.BukkitPlanner;
|
||||
import me.blackvein.quests.quests.BukkitRequirements;
|
||||
import me.blackvein.quests.quests.BukkitRewards;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.quests.IStage;
|
||||
import me.blackvein.quests.quests.Options;
|
||||
import me.blackvein.quests.quests.Planner;
|
||||
import me.blackvein.quests.quests.Requirements;
|
||||
import me.blackvein.quests.quests.Rewards;
|
||||
import me.blackvein.quests.util.ConfigUtil;
|
||||
import me.blackvein.quests.util.InventoryUtil;
|
||||
import me.blackvein.quests.util.ItemUtil;
|
||||
@ -52,14 +65,16 @@ import org.bukkit.event.inventory.InventoryType;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
public class Quest implements Comparable<Quest> {
|
||||
public class Quest implements IQuest {
|
||||
|
||||
protected Quests plugin;
|
||||
protected String id;
|
||||
@ -67,113 +82,160 @@ public class Quest implements Comparable<Quest> {
|
||||
protected String description;
|
||||
protected String finished;
|
||||
protected ItemStack guiDisplay = null;
|
||||
private final LinkedList<Stage> orderedStages = new LinkedList<>();
|
||||
protected NPC npcStart;
|
||||
private final LinkedList<IStage> orderedStages = new LinkedList<>();
|
||||
protected UUID npcStart;
|
||||
protected Location blockStart;
|
||||
protected String regionStart = null;
|
||||
protected Action initialAction;
|
||||
private final Requirements requirements = new Requirements();
|
||||
private final Planner planner = new Planner();
|
||||
private final Rewards rewards = new Rewards();
|
||||
private final Options options = new Options();
|
||||
private final BukkitRequirements requirements = new BukkitRequirements();
|
||||
private final BukkitPlanner planner = new BukkitPlanner();
|
||||
private final BukkitRewards rewards = new BukkitRewards();
|
||||
private final BukkitOptions options = new BukkitOptions();
|
||||
|
||||
public Quest(final Quests plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(final Quest quest) {
|
||||
public int compareTo(final IQuest quest) {
|
||||
return id.compareTo(quest.getId());
|
||||
}
|
||||
|
||||
|
||||
public Quests getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
public void setPlugin(Plugin plugin) {
|
||||
if (plugin instanceof Quests) {
|
||||
this.plugin = (Quests)plugin;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return id;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setId(String id) {
|
||||
if (plugin != null) {
|
||||
this.id = id;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setName(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return description;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setDescription(final String description) {
|
||||
this.description = description;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getFinished() {
|
||||
return finished;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setFinished(final String finished) {
|
||||
this.finished = finished;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getRegionStart() {
|
||||
return regionStart;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setRegionStart(final String regionStart) {
|
||||
this.regionStart = regionStart;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public ItemStack getGUIDisplay() {
|
||||
return guiDisplay;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setGUIDisplay(final ItemStack guiDisplay) {
|
||||
this.guiDisplay = guiDisplay;
|
||||
}
|
||||
|
||||
public Stage getStage(final int index) {
|
||||
|
||||
@Override
|
||||
public IStage getStage(final int index) {
|
||||
try {
|
||||
return orderedStages.get(index);
|
||||
} catch (final Exception e) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public LinkedList<Stage> getStages() {
|
||||
|
||||
@Override
|
||||
public LinkedList<IStage> getStages() {
|
||||
return orderedStages;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public NPC getNpcStart() {
|
||||
return npcStart;
|
||||
if (CitizensAPI.getNPCRegistry().getByUniqueId(npcStart) != null) {
|
||||
return CitizensAPI.getNPCRegistry().getByUniqueId(npcStart);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setNpcStart(final NPC npcStart) {
|
||||
this.npcStart = npcStart;
|
||||
this.npcStart = npcStart.getUniqueId();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Location getBlockStart() {
|
||||
return blockStart;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setBlockStart(final Location blockStart) {
|
||||
this.blockStart = blockStart;
|
||||
}
|
||||
|
||||
public Action getInitialAction() {
|
||||
|
||||
@Override
|
||||
public IAction getInitialAction() {
|
||||
return initialAction;
|
||||
}
|
||||
|
||||
public void setInitialAction(final Action initialAction) {
|
||||
this.initialAction = initialAction;
|
||||
|
||||
@Override
|
||||
public void setInitialAction(final IAction initialAction) {
|
||||
this.initialAction = (Action) initialAction;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Requirements getRequirements() {
|
||||
return requirements;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Planner getPlanner() {
|
||||
return planner;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Rewards getRewards() {
|
||||
return rewards;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Options getOptions() {
|
||||
return options;
|
||||
}
|
||||
@ -184,13 +246,13 @@ public class Quest implements Comparable<Quest> {
|
||||
* @param quester Player to force
|
||||
* @param allowSharedProgress Whether to distribute progress to fellow questers
|
||||
*/
|
||||
public void nextStage(final Quester quester, final boolean allowSharedProgress) {
|
||||
final Stage currentStage = quester.getCurrentStage(this);
|
||||
public void nextStage(final IQuester quester, final boolean allowSharedProgress) {
|
||||
final IStage currentStage = quester.getCurrentStage(this);
|
||||
if (currentStage == null) {
|
||||
plugin.getLogger().severe("Current stage was null for quester " + quester.getPlayer().getUniqueId());
|
||||
return;
|
||||
}
|
||||
final String stageCompleteMessage = currentStage.completeMessage;
|
||||
final String stageCompleteMessage = currentStage.getCompleteMessage();
|
||||
if (stageCompleteMessage != null) {
|
||||
if (quester.getOfflinePlayer().isOnline()) {
|
||||
quester.getPlayer().sendMessage(ConfigUtil.parseStringWithPossibleLineBreaks(stageCompleteMessage,
|
||||
@ -201,17 +263,17 @@ public class Quest implements Comparable<Quest> {
|
||||
quester.resetCompass();
|
||||
quester.findCompassTarget();
|
||||
}
|
||||
if (currentStage.delay < 0) {
|
||||
if (currentStage.finishAction != null) {
|
||||
currentStage.finishAction.fire(quester, this);
|
||||
if (currentStage.getDelay() < 0) {
|
||||
if (currentStage.getFinishAction() != null) {
|
||||
currentStage.getFinishAction().fire(quester, this);
|
||||
}
|
||||
if (quester.currentQuests.get(this) == (orderedStages.size() - 1)) {
|
||||
if (currentStage.script != null) {
|
||||
plugin.getDenizenTrigger().runDenizenScript(currentStage.script, quester);
|
||||
if (quester.getCurrentQuests().get(this) == (orderedStages.size() - 1)) {
|
||||
if (currentStage.getScript() != null) {
|
||||
plugin.getDenizenTrigger().runDenizenScript(currentStage.getScript(), quester);
|
||||
}
|
||||
completeQuest(quester);
|
||||
} else {
|
||||
setStage(quester, quester.currentQuests.get(this) + 1);
|
||||
setStage(quester, quester.getCurrentQuests().get(this) + 1);
|
||||
}
|
||||
if (quester.getQuestData(this) != null) {
|
||||
quester.getQuestData(this).setDelayStartTime(0);
|
||||
@ -220,8 +282,8 @@ public class Quest implements Comparable<Quest> {
|
||||
|
||||
// Multiplayer
|
||||
if (allowSharedProgress && options.getShareProgressLevel() == 3) {
|
||||
final List<Quester> mq = quester.getMultiplayerQuesters(this);
|
||||
for (final Quester qq : mq) {
|
||||
final List<IQuester> mq = quester.getMultiplayerQuesters(this);
|
||||
for (final IQuester qq : mq) {
|
||||
if (currentStage.equals(qq.getCurrentStage(this))) {
|
||||
nextStage(qq, true);
|
||||
}
|
||||
@ -237,20 +299,21 @@ public class Quest implements Comparable<Quest> {
|
||||
* Force player to proceed to the specified stage
|
||||
*
|
||||
* @param quester Player to force
|
||||
* @param stage Stage number to specify
|
||||
* @param stage IStage number to specify
|
||||
* @throws IndexOutOfBoundsException if stage does not exist
|
||||
*/
|
||||
public void setStage(final Quester quester, final int stage) throws IndexOutOfBoundsException {
|
||||
public void setStage(final IQuester quester, final int stage) throws IndexOutOfBoundsException {
|
||||
final OfflinePlayer player = quester.getOfflinePlayer();
|
||||
if (orderedStages.size() - 1 < stage) {
|
||||
final String msg = "Tried to set invalid stage number of " + stage + " for quest " + getName() + " on "
|
||||
+ player.getName();
|
||||
throw new IndexOutOfBoundsException(msg);
|
||||
}
|
||||
final Stage currentStage = quester.getCurrentStage(this);
|
||||
final Stage nextStage = getStage(stage);
|
||||
final IStage currentStage = quester.getCurrentStage(this);
|
||||
final IStage nextStage = getStage(stage);
|
||||
if (player.isOnline()) {
|
||||
final QuesterPreChangeStageEvent preEvent = new QuesterPreChangeStageEvent(quester, this, currentStage, nextStage);
|
||||
final QuesterPreChangeStageEvent preEvent
|
||||
= new QuesterPreChangeStageEvent((Quester) quester, this, currentStage, nextStage);
|
||||
plugin.getServer().getPluginManager().callEvent(preEvent);
|
||||
if (preEvent.isCancelled()) {
|
||||
return;
|
||||
@ -259,11 +322,11 @@ public class Quest implements Comparable<Quest> {
|
||||
quester.hardQuit(this);
|
||||
quester.hardStagePut(this, stage);
|
||||
quester.addEmptiesFor(this, stage);
|
||||
if (currentStage.script != null) {
|
||||
plugin.getDenizenTrigger().runDenizenScript(currentStage.script, quester);
|
||||
if (currentStage.getScript() != null) {
|
||||
plugin.getDenizenTrigger().runDenizenScript(currentStage.getScript(), quester);
|
||||
}
|
||||
if (nextStage.startAction != null) {
|
||||
nextStage.startAction.fire(quester, this);
|
||||
if (nextStage.getStartAction() != null) {
|
||||
nextStage.getStartAction().fire(quester, this);
|
||||
}
|
||||
updateCompass(quester, nextStage);
|
||||
if (player.isOnline()) {
|
||||
@ -277,11 +340,11 @@ public class Quest implements Comparable<Quest> {
|
||||
+ " because the current stage for player " + quester.getLastKnownName() + " was null");
|
||||
return;
|
||||
}
|
||||
final String stageStartMessage = quester.getCurrentStage(this).startMessage;
|
||||
final String stageStartMessage = quester.getCurrentStage(this).getStartMessage();
|
||||
if (stageStartMessage != null) {
|
||||
p.sendMessage(ConfigUtil.parseStringWithPossibleLineBreaks(stageStartMessage, this, p));
|
||||
}
|
||||
final Condition c = nextStage.getCondition();
|
||||
final ICondition c = nextStage.getCondition();
|
||||
if (c != null && nextStage.getObjectiveOverrides().isEmpty()) {
|
||||
p.sendMessage(ChatColor.LIGHT_PURPLE + Lang.get("stageEditorConditions"));
|
||||
if (!c.getEntitiesWhileRiding().isEmpty()) {
|
||||
@ -350,7 +413,8 @@ public class Quest implements Comparable<Quest> {
|
||||
}
|
||||
quester.updateJournal();
|
||||
if (player.isOnline()) {
|
||||
final QuesterPostChangeStageEvent postEvent = new QuesterPostChangeStageEvent(quester, this, currentStage, nextStage);
|
||||
final QuesterPostChangeStageEvent postEvent
|
||||
= new QuesterPostChangeStageEvent((Quester) quester, this, currentStage, nextStage);
|
||||
plugin.getServer().getPluginManager().callEvent(postEvent);
|
||||
}
|
||||
}
|
||||
@ -364,7 +428,7 @@ public class Quest implements Comparable<Quest> {
|
||||
* @param stage The stage to process for targets
|
||||
* @return true if an attempt was made successfully
|
||||
*/
|
||||
public boolean updateCompass(final Quester quester, final Stage stage) {
|
||||
public boolean updateCompass(final IQuester quester, final IStage stage) {
|
||||
if (quester == null) {
|
||||
return false;
|
||||
}
|
||||
@ -377,20 +441,20 @@ public class Quest implements Comparable<Quest> {
|
||||
if (!quester.getPlayer().hasPermission("quests.compass")) {
|
||||
return false;
|
||||
}
|
||||
final Quest quest = this;
|
||||
final IQuest quest = this;
|
||||
Bukkit.getScheduler().runTask(plugin, () -> {
|
||||
Location targetLocation = null;
|
||||
if (stage.citizensToInteract != null && stage.citizensToInteract.size() > 0) {
|
||||
targetLocation = plugin.getDependencies().getNPCLocation(stage.citizensToInteract.getFirst());
|
||||
} else if (stage.citizensToKill != null && stage.citizensToKill.size() > 0) {
|
||||
targetLocation = plugin.getDependencies().getNPCLocation(stage.citizensToKill.getFirst());
|
||||
} else if (stage.locationsToReach != null && stage.locationsToReach.size() > 0) {
|
||||
targetLocation = stage.locationsToReach.getFirst();
|
||||
} else if (stage.itemDeliveryTargets != null && stage.itemDeliveryTargets.size() > 0) {
|
||||
final NPC npc = plugin.getDependencies().getCitizens().getNPCRegistry().getById(stage.itemDeliveryTargets
|
||||
.getFirst());
|
||||
if (stage.getCitizensToInteract() != null && stage.getCitizensToInteract().size() > 0) {
|
||||
targetLocation = plugin.getDependencies().getNPCLocation(stage.getCitizensToInteract().getFirst());
|
||||
} else if (stage.getCitizensToKill() != null && stage.getCitizensToKill().size() > 0) {
|
||||
targetLocation = plugin.getDependencies().getNPCLocation(stage.getCitizensToKill().getFirst());
|
||||
} else if (stage.getLocationsToReach() != null && stage.getLocationsToReach().size() > 0) {
|
||||
targetLocation = stage.getLocationsToReach().getFirst();
|
||||
} else if (stage.getItemDeliveryTargets() != null && stage.getItemDeliveryTargets().size() > 0) {
|
||||
final NPC npc = plugin.getDependencies().getCitizens().getNPCRegistry().getById(stage
|
||||
.getItemDeliveryTargets().getFirst());
|
||||
targetLocation = npc.getStoredLocation();
|
||||
} else if (stage.playersToKill != null && stage.playersToKill > 0) {
|
||||
} else if (stage.getPlayersToKill() != null && stage.getPlayersToKill() > 0) {
|
||||
final Location source = quester.getPlayer().getLocation();
|
||||
Location nearest = null;
|
||||
double old_distance = 30000000;
|
||||
@ -410,11 +474,11 @@ public class Quest implements Comparable<Quest> {
|
||||
if (nearest != null) {
|
||||
targetLocation = nearest;
|
||||
}
|
||||
} else if (stage.mobsToKill != null && stage.mobsToKill.size() > 0) {
|
||||
} else if (stage.getMobsToKill() != null && stage.getMobsToKill().size() > 0) {
|
||||
final Location source = quester.getPlayer().getLocation();
|
||||
Location nearest = null;
|
||||
double old_distance = 30000000;
|
||||
final EntityType et = stage.mobsToKill.getFirst();
|
||||
final EntityType et = stage.getMobsToKill().getFirst();
|
||||
if (source.getWorld() == null) {
|
||||
return;
|
||||
}
|
||||
@ -431,11 +495,11 @@ public class Quest implements Comparable<Quest> {
|
||||
if (nearest != null) {
|
||||
targetLocation = nearest;
|
||||
}
|
||||
} else if (stage.mobsToTame != null && stage.mobsToTame.size() > 0) {
|
||||
} else if (stage.getMobsToTame() != null && stage.getMobsToTame().size() > 0) {
|
||||
final Location source = quester.getPlayer().getLocation();
|
||||
Location nearest = null;
|
||||
double old_distance = 30000000;
|
||||
final EntityType et = stage.mobsToTame.getFirst();
|
||||
final EntityType et = stage.getMobsToTame().getFirst();
|
||||
if (source.getWorld() == null) {
|
||||
return;
|
||||
}
|
||||
@ -452,11 +516,11 @@ public class Quest implements Comparable<Quest> {
|
||||
if (nearest != null) {
|
||||
targetLocation = nearest;
|
||||
}
|
||||
} else if (stage.sheepToShear != null && stage.sheepToShear.size() > 0) {
|
||||
} else if (stage.getSheepToShear() != null && stage.getSheepToShear().size() > 0) {
|
||||
final Location source = quester.getPlayer().getLocation();
|
||||
Location nearest = null;
|
||||
double old_distance = 30000000;
|
||||
final DyeColor dc = stage.sheepToShear.getFirst();
|
||||
final DyeColor dc = stage.getSheepToShear().getFirst();
|
||||
if (source.getWorld() == null) {
|
||||
return;
|
||||
}
|
||||
@ -502,7 +566,7 @@ public class Quest implements Comparable<Quest> {
|
||||
* @param quester The quester to check
|
||||
* @return true if all Requirements have been met
|
||||
*/
|
||||
public boolean testRequirements(final Quester quester) {
|
||||
public boolean testRequirements(final IQuester quester) {
|
||||
return testRequirements(quester.getOfflinePlayer());
|
||||
}
|
||||
|
||||
@ -514,21 +578,21 @@ public class Quest implements Comparable<Quest> {
|
||||
* @param player The player to check
|
||||
* @return true if all Requirements have been met
|
||||
*/
|
||||
protected boolean testRequirements(final OfflinePlayer player) {
|
||||
final Quester quester = plugin.getQuester(player.getUniqueId());
|
||||
public boolean testRequirements(final OfflinePlayer player) {
|
||||
final IQuester quester = plugin.getQuester(player.getUniqueId());
|
||||
if (requirements.getMoney() != 0 && plugin.getDependencies().getVaultEconomy() != null) {
|
||||
if (plugin.getDependencies().getVaultEconomy().getBalance(player) < requirements.getMoney()) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
if (quester.questPoints < requirements.getQuestPoints()) {
|
||||
if (quester.getQuestPoints() < requirements.getQuestPoints()) {
|
||||
return false;
|
||||
}
|
||||
if (!quester.completedQuests.containsAll(requirements.getNeededQuests())) {
|
||||
if (!quester.getCompletedQuests().containsAll(requirements.getNeededQuests())) {
|
||||
return false;
|
||||
}
|
||||
for (final Quest q : requirements.getBlockQuests()) {
|
||||
if (quester.completedQuests.contains(q) || quester.currentQuests.containsKey(q)) {
|
||||
for (final IQuest q : requirements.getBlockQuests()) {
|
||||
if (quester.getCompletedQuests().contains(q) || quester.getCurrentQuests().containsKey(q)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -592,7 +656,7 @@ public class Quest implements Comparable<Quest> {
|
||||
*
|
||||
* @param quester The quester finishing this quest
|
||||
*/
|
||||
public void completeQuest(final Quester quester) {
|
||||
public void completeQuest(final IQuester quester) {
|
||||
completeQuest(quester, true);
|
||||
}
|
||||
|
||||
@ -603,13 +667,13 @@ public class Quest implements Comparable<Quest> {
|
||||
* @param allowMultiplayer Allow multiplayer sharing
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public void completeQuest(final Quester quester, final boolean allowMultiplayer) {
|
||||
public void completeQuest(final IQuester quester, final boolean allowMultiplayer) {
|
||||
final OfflinePlayer player = quester.getOfflinePlayer();
|
||||
boolean cancelled = false;
|
||||
if (player.isOnline()) {
|
||||
if (Bukkit.isPrimaryThread()) {
|
||||
final QuesterPreCompleteQuestEvent preEvent
|
||||
= new QuesterPreCompleteQuestEvent(quester, this, false);
|
||||
= new QuesterPreCompleteQuestEvent((Quester) quester, this, false);
|
||||
plugin.getServer().getPluginManager().callEvent(preEvent);
|
||||
if (preEvent.isCancelled()) {
|
||||
return;
|
||||
@ -617,7 +681,7 @@ public class Quest implements Comparable<Quest> {
|
||||
} else {
|
||||
final CompletableFuture<Boolean> future = CompletableFuture.supplyAsync(() -> {
|
||||
final QuesterPreCompleteQuestEvent preEvent
|
||||
= new QuesterPreCompleteQuestEvent(quester, Quest.this, true);
|
||||
= new QuesterPreCompleteQuestEvent((Quester) quester, Quest.this, true);
|
||||
plugin.getServer().getPluginManager().callEvent(preEvent);
|
||||
return preEvent.isCancelled();
|
||||
});
|
||||
@ -633,11 +697,11 @@ public class Quest implements Comparable<Quest> {
|
||||
return;
|
||||
}
|
||||
quester.hardQuit(this);
|
||||
quester.completedQuests.add(this);
|
||||
for (final Map.Entry<Integer, Quest> entry : quester.timers.entrySet()) {
|
||||
quester.getCompletedQuests().add(this);
|
||||
for (final Map.Entry<Integer, IQuest> entry : quester.getTimers().entrySet()) {
|
||||
if (entry.getValue().getName().equals(getName())) {
|
||||
plugin.getServer().getScheduler().cancelTask(entry.getKey());
|
||||
quester.timers.remove(entry.getKey());
|
||||
quester.getTimers().remove(entry.getKey());
|
||||
}
|
||||
}
|
||||
if (player.isOnline()) {
|
||||
@ -647,16 +711,16 @@ public class Quest implements Comparable<Quest> {
|
||||
Bukkit.getScheduler().runTaskLater(plugin, () -> p.sendMessage(ps), 40);
|
||||
}
|
||||
if (planner.getCooldown() > -1) {
|
||||
quester.completedTimes.put(this, System.currentTimeMillis());
|
||||
if (quester.amountsCompleted.containsKey(this)) {
|
||||
quester.amountsCompleted.put(this, quester.amountsCompleted.get(this) + 1);
|
||||
quester.getCompletedTimes().put(this, System.currentTimeMillis());
|
||||
if (quester.getAmountsCompleted().containsKey(this)) {
|
||||
quester.getAmountsCompleted().put(this, quester.getAmountsCompleted().get(this) + 1);
|
||||
} else {
|
||||
quester.amountsCompleted.put(this, 1);
|
||||
quester.getAmountsCompleted().put(this, 1);
|
||||
}
|
||||
}
|
||||
|
||||
// Issue rewards
|
||||
final Dependencies depends = plugin.getDependencies();
|
||||
final IDependencies depends = plugin.getDependencies();
|
||||
boolean issuedReward = false;
|
||||
if (rewards.getMoney() > 0 && depends.getVaultEconomy() != null) {
|
||||
depends.getVaultEconomy().depositPlayer(player, rewards.getMoney());
|
||||
@ -807,7 +871,7 @@ public class Quest implements Comparable<Quest> {
|
||||
issuedReward = true;
|
||||
}
|
||||
if (rewards.getQuestPoints() > 0) {
|
||||
quester.questPoints += rewards.getQuestPoints();
|
||||
quester.setQuestPoints(quester.getQuestPoints() + rewards.getQuestPoints());
|
||||
if (plugin.getSettings().getConsoleLogging() > 2) {
|
||||
plugin.getLogger().info(player.getUniqueId() + " was rewarded " + rewards.getQuestPoints() + " "
|
||||
+ Lang.get("questPoints"));
|
||||
@ -1043,14 +1107,14 @@ public class Quest implements Comparable<Quest> {
|
||||
quester.updateJournal();
|
||||
quester.findCompassTarget();
|
||||
if (player.isOnline()) {
|
||||
final QuesterPostCompleteQuestEvent postEvent = new QuesterPostCompleteQuestEvent(quester, this);
|
||||
final QuesterPostCompleteQuestEvent postEvent = new QuesterPostCompleteQuestEvent((Quester) quester, this);
|
||||
plugin.getServer().getPluginManager().callEvent(postEvent);
|
||||
}
|
||||
|
||||
// Multiplayer
|
||||
if (allowMultiplayer && options.getShareProgressLevel() == 4) {
|
||||
final List<Quester> mq = quester.getMultiplayerQuesters(this);
|
||||
for (final Quester qq : mq) {
|
||||
final List<IQuester> mq = quester.getMultiplayerQuesters(this);
|
||||
for (final IQuester qq : mq) {
|
||||
if (qq.getQuestData(this) != null) {
|
||||
completeQuest(qq, false);
|
||||
}
|
||||
@ -1063,7 +1127,7 @@ public class Quest implements Comparable<Quest> {
|
||||
*
|
||||
* @param quester The quester to be ejected
|
||||
*/
|
||||
public void failQuest(final Quester quester) {
|
||||
public void failQuest(final IQuester quester) {
|
||||
failQuest(quester, false);
|
||||
}
|
||||
|
||||
@ -1071,18 +1135,17 @@ public class Quest implements Comparable<Quest> {
|
||||
* Force player to quit quest and inform them of their failure
|
||||
*
|
||||
* @param quester The quester to be ejected
|
||||
* @param ignoreFailAction Whether to ignore quest fail Action
|
||||
* @param ignoreFailAction Whether to ignore quest fail IAction
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public void failQuest(final Quester quester, final boolean ignoreFailAction) {
|
||||
final QuesterPreFailQuestEvent preEvent = new QuesterPreFailQuestEvent(quester, this);
|
||||
public void failQuest(final IQuester quester, final boolean ignoreFailAction) {
|
||||
final QuesterPreFailQuestEvent preEvent = new QuesterPreFailQuestEvent((Quester) quester, this);
|
||||
plugin.getServer().getPluginManager().callEvent(preEvent);
|
||||
if (preEvent.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
final Player player = quester.getPlayer();
|
||||
if (!ignoreFailAction) {
|
||||
final Stage stage = quester.getCurrentStage(this);
|
||||
final IStage stage = quester.getCurrentStage(this);
|
||||
if (stage != null && stage.getFailAction() != null) {
|
||||
quester.getCurrentStage(this).getFailAction().fire(quester, this);
|
||||
}
|
||||
@ -1095,19 +1158,19 @@ public class Quest implements Comparable<Quest> {
|
||||
if (player.isOnline()) {
|
||||
player.updateInventory();
|
||||
}
|
||||
final QuesterPostFailQuestEvent postEvent = new QuesterPostFailQuestEvent(quester, this);
|
||||
final QuesterPostFailQuestEvent postEvent = new QuesterPostFailQuestEvent((Quester) quester, this);
|
||||
plugin.getServer().getPluginManager().callEvent(postEvent);
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if quester is in WorldGuard region start
|
||||
*
|
||||
* @deprecated Use {@link #isInRegionStart(Quester)}
|
||||
* @deprecated Use {@link #isInRegionStart(IQuester)}
|
||||
* @param quester The quester to check
|
||||
* @return true if quester is in region
|
||||
*/
|
||||
@Deprecated
|
||||
public boolean isInRegion(final Quester quester) {
|
||||
public boolean isInRegion(final IQuester quester) {
|
||||
return isInRegionStart(quester);
|
||||
}
|
||||
|
||||
@ -1130,7 +1193,7 @@ public class Quest implements Comparable<Quest> {
|
||||
* @param quester The quester to check
|
||||
* @return true if quester is in region
|
||||
*/
|
||||
public boolean isInRegionStart(final Quester quester) {
|
||||
public boolean isInRegionStart(final IQuester quester) {
|
||||
return isInRegionStart(quester.getPlayer());
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -12,6 +12,7 @@
|
||||
|
||||
package me.blackvein.quests;
|
||||
|
||||
import me.blackvein.quests.config.ISettings;
|
||||
import me.blackvein.quests.util.Lang;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
||||
@ -19,7 +20,7 @@ import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
public class Settings {
|
||||
public class Settings implements ISettings {
|
||||
|
||||
private final Quests plugin;
|
||||
private int acceptTimeout = 20;
|
@ -12,9 +12,11 @@
|
||||
|
||||
package me.blackvein.quests;
|
||||
|
||||
import me.blackvein.quests.actions.Action;
|
||||
import me.blackvein.quests.conditions.Condition;
|
||||
import me.blackvein.quests.actions.IAction;
|
||||
import me.blackvein.quests.conditions.ICondition;
|
||||
import me.blackvein.quests.module.ICustomObjective;
|
||||
import me.blackvein.quests.enums.ObjectiveType;
|
||||
import me.blackvein.quests.quests.IStage;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.World;
|
||||
@ -26,20 +28,20 @@ import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
public class Stage {
|
||||
public class Stage implements IStage {
|
||||
|
||||
protected LinkedList<ItemStack> blocksToBreak = new LinkedList<>();
|
||||
protected LinkedList<ItemStack> blocksToDamage = new LinkedList<>();
|
||||
protected LinkedList<ItemStack> blocksToPlace = new LinkedList<>();
|
||||
protected LinkedList<ItemStack> blocksToUse = new LinkedList<>();
|
||||
protected LinkedList<ItemStack> blocksToCut = new LinkedList<>();
|
||||
protected LinkedList<ItemStack> itemsToCraft = new LinkedList<>();
|
||||
protected LinkedList<ItemStack> itemsToSmelt = new LinkedList<>();
|
||||
protected LinkedList<ItemStack> itemsToEnchant = new LinkedList<>();
|
||||
protected LinkedList<ItemStack> itemsToBrew = new LinkedList<>();
|
||||
protected LinkedList<ItemStack> itemsToConsume = new LinkedList<>();
|
||||
protected LinkedList<ItemStack> itemsToDeliver = new LinkedList<>();
|
||||
protected LinkedList<Integer> itemDeliveryTargets = new LinkedList<Integer>() {
|
||||
private LinkedList<ItemStack> blocksToBreak = new LinkedList<>();
|
||||
private LinkedList<ItemStack> blocksToDamage = new LinkedList<>();
|
||||
private LinkedList<ItemStack> blocksToPlace = new LinkedList<>();
|
||||
private LinkedList<ItemStack> blocksToUse = new LinkedList<>();
|
||||
private LinkedList<ItemStack> blocksToCut = new LinkedList<>();
|
||||
private LinkedList<ItemStack> itemsToCraft = new LinkedList<>();
|
||||
private LinkedList<ItemStack> itemsToSmelt = new LinkedList<>();
|
||||
private LinkedList<ItemStack> itemsToEnchant = new LinkedList<>();
|
||||
private LinkedList<ItemStack> itemsToBrew = new LinkedList<>();
|
||||
private LinkedList<ItemStack> itemsToConsume = new LinkedList<>();
|
||||
private LinkedList<ItemStack> itemsToDeliver = new LinkedList<>();
|
||||
private LinkedList<Integer> itemDeliveryTargets = new LinkedList<Integer>() {
|
||||
|
||||
private static final long serialVersionUID = -2774443496142382127L;
|
||||
|
||||
@ -59,8 +61,8 @@ public class Stage {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
protected LinkedList<String> deliverMessages = new LinkedList<>();
|
||||
protected LinkedList<Integer> citizensToInteract = new LinkedList<Integer>() {
|
||||
private LinkedList<String> deliverMessages = new LinkedList<>();
|
||||
private LinkedList<Integer> citizensToInteract = new LinkedList<Integer>() {
|
||||
|
||||
private static final long serialVersionUID = -4086855121042524435L;
|
||||
|
||||
@ -80,7 +82,7 @@ public class Stage {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
protected LinkedList<Integer> citizensToKill = new LinkedList<Integer>() {
|
||||
private LinkedList<Integer> citizensToKill = new LinkedList<Integer>() {
|
||||
|
||||
private static final long serialVersionUID = 7705964814014176415L;
|
||||
|
||||
@ -100,48 +102,53 @@ public class Stage {
|
||||
return true;
|
||||
}
|
||||
};
|
||||
protected LinkedList<Integer> citizenNumToKill = new LinkedList<>();
|
||||
protected LinkedList<EntityType> mobsToKill = new LinkedList<>();
|
||||
protected LinkedList<Integer> mobNumToKill = new LinkedList<>();
|
||||
protected LinkedList<Location> locationsToKillWithin = new LinkedList<>();
|
||||
protected LinkedList<Integer> radiiToKillWithin = new LinkedList<>();
|
||||
protected LinkedList<String> killNames = new LinkedList<>();
|
||||
protected LinkedList<EntityType> mobsToTame = new LinkedList<>();
|
||||
protected LinkedList<Integer> mobNumToTame = new LinkedList<>();
|
||||
protected Integer fishToCatch;
|
||||
protected Integer cowsToMilk;
|
||||
protected LinkedList<DyeColor> sheepToShear = new LinkedList<>();
|
||||
protected LinkedList<Integer> sheepNumToShear = new LinkedList<>();
|
||||
protected Integer playersToKill;
|
||||
protected LinkedList<Location> locationsToReach = new LinkedList<>();
|
||||
protected LinkedList<Integer> radiiToReachWithin = new LinkedList<>();
|
||||
protected LinkedList<World> worldsToReachWithin = new LinkedList<>();
|
||||
protected LinkedList<String> locationNames = new LinkedList<>();
|
||||
protected LinkedList<String> passwordDisplays = new LinkedList<>();
|
||||
protected LinkedList<String> passwordPhrases = new LinkedList<>();
|
||||
protected String script;
|
||||
protected Action startAction = null;
|
||||
protected Action finishAction = null;
|
||||
protected Action failAction = null;
|
||||
protected Action deathAction = null;
|
||||
protected Map<String, Action> chatActions = new HashMap<>();
|
||||
protected Map<String, Action> commandActions = new HashMap<>();
|
||||
protected Action disconnectAction = null;
|
||||
protected Condition condition = null;
|
||||
protected long delay = -1;
|
||||
protected String delayMessage = null;
|
||||
protected String completeMessage = null;
|
||||
protected String startMessage = null;
|
||||
protected LinkedList<String> objectiveOverrides = new LinkedList<>();
|
||||
protected LinkedList<CustomObjective> customObjectives = new LinkedList<>();
|
||||
protected LinkedList<Integer> customObjectiveCounts = new LinkedList<>();
|
||||
protected LinkedList<String> customObjectiveDisplays = new LinkedList<>();
|
||||
protected LinkedList<Entry<String, Object>> customObjectiveData = new LinkedList<>();
|
||||
private LinkedList<Integer> citizenNumToKill = new LinkedList<>();
|
||||
private LinkedList<EntityType> mobsToKill = new LinkedList<>();
|
||||
private LinkedList<Integer> mobNumToKill = new LinkedList<>();
|
||||
private LinkedList<Location> locationsToKillWithin = new LinkedList<>();
|
||||
private LinkedList<Integer> radiiToKillWithin = new LinkedList<>();
|
||||
private LinkedList<String> killNames = new LinkedList<>();
|
||||
private LinkedList<EntityType> mobsToTame = new LinkedList<>();
|
||||
private LinkedList<Integer> mobNumToTame = new LinkedList<>();
|
||||
private Integer fishToCatch;
|
||||
private Integer cowsToMilk;
|
||||
private LinkedList<DyeColor> sheepToShear = new LinkedList<>();
|
||||
private LinkedList<Integer> sheepNumToShear = new LinkedList<>();
|
||||
private Integer playersToKill;
|
||||
private LinkedList<Location> locationsToReach = new LinkedList<>();
|
||||
private LinkedList<Integer> radiiToReachWithin = new LinkedList<>();
|
||||
private LinkedList<World> worldsToReachWithin = new LinkedList<>();
|
||||
private LinkedList<String> locationNames = new LinkedList<>();
|
||||
private LinkedList<String> passwordDisplays = new LinkedList<>();
|
||||
private LinkedList<String> passwordPhrases = new LinkedList<>();
|
||||
private String script;
|
||||
private IAction startAction = null;
|
||||
private IAction finishAction = null;
|
||||
private IAction failAction = null;
|
||||
private IAction deathAction = null;
|
||||
private Map<String, IAction> chatActions = new HashMap<>();
|
||||
private Map<String, IAction> commandActions = new HashMap<>();
|
||||
private IAction disconnectAction = null;
|
||||
private ICondition condition = null;
|
||||
private long delay = -1;
|
||||
private String delayMessage = null;
|
||||
private String completeMessage = null;
|
||||
private String startMessage = null;
|
||||
private LinkedList<String> objectiveOverrides = new LinkedList<>();
|
||||
private LinkedList<ICustomObjective> customObjectives = new LinkedList<>();
|
||||
private LinkedList<Integer> customObjectiveCounts = new LinkedList<>();
|
||||
private LinkedList<String> customObjectiveDisplays = new LinkedList<>();
|
||||
private LinkedList<Entry<String, Object>> customObjectiveData = new LinkedList<>();
|
||||
|
||||
public LinkedList<ItemStack> getBlocksToBreak() {
|
||||
return blocksToBreak;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addBlockToBreak(ItemStack blockToBreak) {
|
||||
return blocksToBreak.add(blockToBreak);
|
||||
}
|
||||
|
||||
public void setBlocksToBreak(final LinkedList<ItemStack> blocksToBreak) {
|
||||
this.blocksToBreak = blocksToBreak;
|
||||
}
|
||||
@ -150,6 +157,11 @@ public class Stage {
|
||||
return blocksToDamage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addBlockToDamage(ItemStack blockToDamage) {
|
||||
return blocksToDamage.add(blockToDamage);
|
||||
}
|
||||
|
||||
public void setBlocksToDamage(final LinkedList<ItemStack> blocksToDamage) {
|
||||
this.blocksToDamage = blocksToDamage;
|
||||
}
|
||||
@ -158,6 +170,11 @@ public class Stage {
|
||||
return blocksToPlace;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addBlockToPlace(ItemStack blockToPlace) {
|
||||
return blocksToPlace.add(blockToPlace);
|
||||
}
|
||||
|
||||
public void setBlocksToPlace(final LinkedList<ItemStack> blocksToPlace) {
|
||||
this.blocksToPlace = blocksToPlace;
|
||||
}
|
||||
@ -166,6 +183,11 @@ public class Stage {
|
||||
return blocksToUse;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addBlockToUse(ItemStack blockToUse) {
|
||||
return blocksToUse.add(blockToUse);
|
||||
}
|
||||
|
||||
public void setBlocksToUse(final LinkedList<ItemStack> blocksToUse) {
|
||||
this.blocksToUse = blocksToUse;
|
||||
}
|
||||
@ -174,6 +196,11 @@ public class Stage {
|
||||
return blocksToCut;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addBlockToCut(ItemStack blockToCut) {
|
||||
return blocksToCut.add(blockToCut);
|
||||
}
|
||||
|
||||
public void setBlocksToCut(final LinkedList<ItemStack> blocksToCut) {
|
||||
this.blocksToCut = blocksToCut;
|
||||
}
|
||||
@ -182,6 +209,11 @@ public class Stage {
|
||||
return itemsToCraft;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addItemToCraft(ItemStack itemToCraft) {
|
||||
return itemsToCraft.add(itemToCraft);
|
||||
}
|
||||
|
||||
public void setItemsToCraft(final LinkedList<ItemStack> itemsToCraft) {
|
||||
this.itemsToCraft = itemsToCraft;
|
||||
}
|
||||
@ -190,6 +222,11 @@ public class Stage {
|
||||
return itemsToSmelt;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addItemToSmelt(ItemStack itemToSmelt) {
|
||||
return itemsToSmelt.add(itemToSmelt);
|
||||
}
|
||||
|
||||
public void setItemsToSmelt(final LinkedList<ItemStack> itemsToSmelt) {
|
||||
this.itemsToSmelt = itemsToSmelt;
|
||||
}
|
||||
@ -198,6 +235,11 @@ public class Stage {
|
||||
return itemsToEnchant;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addItemToEnchant(ItemStack itemToEnchant) {
|
||||
return itemsToEnchant.add(itemToEnchant);
|
||||
}
|
||||
|
||||
public void setItemsToEnchant(final LinkedList<ItemStack> itemsToEnchant) {
|
||||
this.itemsToEnchant = itemsToEnchant;
|
||||
}
|
||||
@ -206,6 +248,11 @@ public class Stage {
|
||||
return itemsToBrew;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addItemsToBrew(ItemStack itemToBrew) {
|
||||
return itemsToBrew.add(itemToBrew);
|
||||
}
|
||||
|
||||
public void setItemsToBrew(final LinkedList<ItemStack> itemsToBrew) {
|
||||
this.itemsToBrew = itemsToBrew;
|
||||
}
|
||||
@ -214,6 +261,11 @@ public class Stage {
|
||||
return itemsToConsume;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addItemToConsume(ItemStack itemToConsume) {
|
||||
return itemsToConsume.add(itemToConsume);
|
||||
}
|
||||
|
||||
public void setItemsToConsume(final LinkedList<ItemStack> itemsToConsume) {
|
||||
this.itemsToBrew = itemsToConsume;
|
||||
}
|
||||
@ -222,6 +274,11 @@ public class Stage {
|
||||
return itemsToDeliver;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addItemToDeliver(ItemStack itemToDeliver) {
|
||||
return itemsToDeliver.add(itemToDeliver);
|
||||
}
|
||||
|
||||
public void setItemsToDeliver(final LinkedList<ItemStack> itemsToDeliver) {
|
||||
this.itemsToDeliver = itemsToDeliver;
|
||||
}
|
||||
@ -230,6 +287,11 @@ public class Stage {
|
||||
return itemDeliveryTargets;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addItemDeliveryTarget(Integer itemDeliveryTarget) {
|
||||
return itemDeliveryTargets.add(itemDeliveryTarget);
|
||||
}
|
||||
|
||||
public void setItemDeliveryTargets(final LinkedList<Integer> itemDeliveryTargets) {
|
||||
this.itemDeliveryTargets = itemDeliveryTargets;
|
||||
}
|
||||
@ -238,6 +300,11 @@ public class Stage {
|
||||
return deliverMessages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addDeliverMessage(String deliverMessage) {
|
||||
return deliverMessages.add(deliverMessage);
|
||||
}
|
||||
|
||||
public void setDeliverMessages(final LinkedList<String> deliverMessages) {
|
||||
this.deliverMessages = deliverMessages;
|
||||
}
|
||||
@ -246,6 +313,11 @@ public class Stage {
|
||||
return citizensToInteract;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addCitizenToInteract(Integer citizenToInteract) {
|
||||
return citizensToInteract.add(citizenToInteract);
|
||||
}
|
||||
|
||||
public void setCitizensToInteract(final LinkedList<Integer> citizensToInteract) {
|
||||
this.citizensToInteract = citizensToInteract;
|
||||
}
|
||||
@ -254,6 +326,11 @@ public class Stage {
|
||||
return citizensToKill;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addCitizenToKill(Integer citizenToKill) {
|
||||
return citizensToKill.add(citizenToKill);
|
||||
}
|
||||
|
||||
public void setCitizensToKill(final LinkedList<Integer> citizensToKill) {
|
||||
this.citizensToKill = citizensToKill;
|
||||
}
|
||||
@ -262,6 +339,11 @@ public class Stage {
|
||||
return citizenNumToKill;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addCitizenNumToKill(Integer citizenNumToKill) {
|
||||
return this.citizenNumToKill.add(citizenNumToKill);
|
||||
}
|
||||
|
||||
public void setCitizenNumToKill(final LinkedList<Integer> citizenNumToKill) {
|
||||
this.citizenNumToKill = citizenNumToKill;
|
||||
}
|
||||
@ -270,6 +352,11 @@ public class Stage {
|
||||
return mobsToKill;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addMobToKill(EntityType mobToKill) {
|
||||
return mobsToKill.add(mobToKill);
|
||||
}
|
||||
|
||||
public void setMobsToKill(final LinkedList<EntityType> mobsToKill) {
|
||||
this.mobsToKill = mobsToKill;
|
||||
}
|
||||
@ -278,6 +365,11 @@ public class Stage {
|
||||
return mobNumToKill;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addMobNumToKill(Integer mobNumToKill) {
|
||||
return this.mobNumToKill.add(mobNumToKill);
|
||||
}
|
||||
|
||||
public void setMobNumToKill(final LinkedList<Integer> mobNumToKill) {
|
||||
this.mobNumToKill = mobNumToKill;
|
||||
}
|
||||
@ -286,6 +378,11 @@ public class Stage {
|
||||
return locationsToKillWithin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addLocationToKillWithin(Location locationToKillWithin) {
|
||||
return locationsToKillWithin.add(locationToKillWithin);
|
||||
}
|
||||
|
||||
public void setLocationsToKillWithin(final LinkedList<Location> locationsToKillWithin) {
|
||||
this.locationsToKillWithin = locationsToKillWithin;
|
||||
}
|
||||
@ -294,6 +391,11 @@ public class Stage {
|
||||
return radiiToKillWithin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addRadiusToKillWithin(Integer radiusToKillWithin) {
|
||||
return radiiToKillWithin.add(radiusToKillWithin);
|
||||
}
|
||||
|
||||
public void setRadiiToKillWithin(final LinkedList<Integer> radiiToKillWithin) {
|
||||
this.radiiToKillWithin = radiiToKillWithin;
|
||||
}
|
||||
@ -302,6 +404,11 @@ public class Stage {
|
||||
return killNames;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addKillName(String killName) {
|
||||
return killNames.add(killName);
|
||||
}
|
||||
|
||||
public void setKillNames(final LinkedList<String> killNames) {
|
||||
this.killNames = killNames;
|
||||
}
|
||||
@ -310,6 +417,11 @@ public class Stage {
|
||||
return locationsToReach;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addLocationToReach(Location locationToReach) {
|
||||
return locationsToReach.add(locationToReach);
|
||||
}
|
||||
|
||||
public void setLocationsToReach(final LinkedList<Location> locationsToReach) {
|
||||
this.locationsToReach = locationsToReach;
|
||||
}
|
||||
@ -318,6 +430,11 @@ public class Stage {
|
||||
return radiiToReachWithin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addRadiusToReachWithin(Integer radiusToReachWithin) {
|
||||
return radiiToReachWithin.add(radiusToReachWithin);
|
||||
}
|
||||
|
||||
public void setRadiiToReachWithin(final LinkedList<Integer> radiiToReachWithin) {
|
||||
this.radiiToReachWithin = radiiToReachWithin;
|
||||
}
|
||||
@ -326,6 +443,11 @@ public class Stage {
|
||||
return worldsToReachWithin;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addWorldToReachWithin(World worldToReachWithin) {
|
||||
return worldsToReachWithin.add(worldToReachWithin);
|
||||
}
|
||||
|
||||
public void setWorldsToReachWithin(final LinkedList<World> worldsToReachWithin) {
|
||||
this.worldsToReachWithin = worldsToReachWithin;
|
||||
}
|
||||
@ -334,6 +456,11 @@ public class Stage {
|
||||
return locationNames;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addLocationName(String locationName) {
|
||||
return locationNames.add(locationName);
|
||||
}
|
||||
|
||||
public void setLocationNames(final LinkedList<String> locationNames) {
|
||||
this.locationNames = locationNames;
|
||||
}
|
||||
@ -342,6 +469,11 @@ public class Stage {
|
||||
return mobsToTame;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addMobToTame(EntityType mobToTame) {
|
||||
return mobsToTame.add(mobToTame);
|
||||
}
|
||||
|
||||
public void setMobsToTame(final LinkedList<EntityType> mobsToTame) {
|
||||
this.mobsToTame = mobsToTame;
|
||||
}
|
||||
@ -350,6 +482,11 @@ public class Stage {
|
||||
return mobNumToTame;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addMobNumToTame(Integer mobNumToTame) {
|
||||
return this.mobNumToTame.add(mobNumToTame);
|
||||
}
|
||||
|
||||
public void setMobNumToTame(final LinkedList<Integer> mobNumToTame) {
|
||||
this.mobNumToTame = mobNumToTame;
|
||||
}
|
||||
@ -382,6 +519,11 @@ public class Stage {
|
||||
return sheepToShear;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addSheepToShear(DyeColor sheepToShear) {
|
||||
return this.sheepToShear.add(sheepToShear);
|
||||
}
|
||||
|
||||
public void setSheepToShear(final LinkedList<DyeColor> sheepToShear) {
|
||||
this.sheepToShear = sheepToShear;
|
||||
}
|
||||
@ -390,6 +532,11 @@ public class Stage {
|
||||
return sheepNumToShear;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addSheepNumToShear(Integer sheepNumToShear) {
|
||||
return this.sheepNumToShear.add(sheepNumToShear);
|
||||
}
|
||||
|
||||
public void setSheepNumToShear(final LinkedList<Integer> sheepNumToShear) {
|
||||
this.sheepNumToShear = sheepNumToShear;
|
||||
}
|
||||
@ -398,6 +545,11 @@ public class Stage {
|
||||
return passwordDisplays;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addPasswordDisplay(String passwordDisplay) {
|
||||
return passwordDisplays.add(passwordDisplay);
|
||||
}
|
||||
|
||||
public void setPasswordDisplays(final LinkedList<String> passwordDisplays) {
|
||||
this.passwordDisplays = passwordDisplays;
|
||||
}
|
||||
@ -406,6 +558,11 @@ public class Stage {
|
||||
return passwordPhrases;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addPasswordPhrase(String passwordPhrase) {
|
||||
return passwordPhrases.add(passwordPhrase);
|
||||
}
|
||||
|
||||
public void setPasswordPhrases(final LinkedList<String> passwordPhrases) {
|
||||
this.passwordPhrases = passwordPhrases;
|
||||
}
|
||||
@ -418,67 +575,77 @@ public class Stage {
|
||||
this.script = script;
|
||||
}
|
||||
|
||||
public Action getStartAction() {
|
||||
public IAction getStartAction() {
|
||||
return startAction;
|
||||
}
|
||||
|
||||
public void setStartAction(final Action startAction) {
|
||||
public void setStartAction(final IAction startAction) {
|
||||
this.startAction = startAction;
|
||||
}
|
||||
|
||||
public Action getFinishAction() {
|
||||
public IAction getFinishAction() {
|
||||
return finishAction;
|
||||
}
|
||||
|
||||
public void setFinishAction(final Action finishAction) {
|
||||
public void setFinishAction(final IAction finishAction) {
|
||||
this.finishAction = finishAction;
|
||||
}
|
||||
|
||||
public Action getFailAction() {
|
||||
public IAction getFailAction() {
|
||||
return failAction;
|
||||
}
|
||||
|
||||
public void setFailAction(final Action failAction) {
|
||||
public void setFailAction(final IAction failAction) {
|
||||
this.failAction = failAction;
|
||||
}
|
||||
|
||||
public Action getDeathAction() {
|
||||
public IAction getDeathAction() {
|
||||
return deathAction;
|
||||
}
|
||||
|
||||
public void setDeathAction(final Action deathAction) {
|
||||
public void setDeathAction(final IAction deathAction) {
|
||||
this.deathAction = deathAction;
|
||||
}
|
||||
|
||||
public Map<String, Action> getChatActions() {
|
||||
public Map<String, IAction> getChatActions() {
|
||||
return chatActions;
|
||||
}
|
||||
|
||||
public void setChatActions(final Map<String, Action> chatActions) {
|
||||
@Override
|
||||
public void addChatAction(Entry<String, IAction> chatAction) {
|
||||
chatActions.put(chatAction.getKey(), chatAction.getValue());
|
||||
}
|
||||
|
||||
public void setChatActions(final Map<String, IAction> chatActions) {
|
||||
this.chatActions = chatActions;
|
||||
}
|
||||
|
||||
public Map<String, Action> getCommandActions() {
|
||||
public Map<String, IAction> getCommandActions() {
|
||||
return commandActions;
|
||||
}
|
||||
|
||||
public void setCommandActions(final Map<String, Action> commandActions) {
|
||||
@Override
|
||||
public void addCommandAction(Entry<String, IAction> commandAction) {
|
||||
commandActions.put(commandAction.getKey(), commandAction.getValue());
|
||||
}
|
||||
|
||||
public void setCommandActions(final Map<String, IAction> commandActions) {
|
||||
this.commandActions = commandActions;
|
||||
}
|
||||
|
||||
public Action getDisconnectAction() {
|
||||
public IAction getDisconnectAction() {
|
||||
return disconnectAction;
|
||||
}
|
||||
|
||||
public void setDisconnectAction(final Action disconnectAction) {
|
||||
public void setDisconnectAction(final IAction disconnectAction) {
|
||||
this.disconnectAction = disconnectAction;
|
||||
}
|
||||
|
||||
public Condition getCondition() {
|
||||
public ICondition getCondition() {
|
||||
return condition;
|
||||
}
|
||||
|
||||
public void setCondition(final Condition condition) {
|
||||
public void setCondition(final ICondition condition) {
|
||||
this.condition = condition;
|
||||
}
|
||||
|
||||
@ -518,26 +685,59 @@ public class Stage {
|
||||
return objectiveOverrides;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean addObjectiveOverride(String objectiveOverride) {
|
||||
return objectiveOverrides.add(objectiveOverride);
|
||||
}
|
||||
|
||||
public void setObjectiveOverrides(final LinkedList<String> objectiveOverrides) {
|
||||
this.objectiveOverrides = objectiveOverrides;
|
||||
}
|
||||
|
||||
public LinkedList<CustomObjective> getCustomObjectives() {
|
||||
public LinkedList<ICustomObjective> getCustomObjectives() {
|
||||
return customObjectives;
|
||||
}
|
||||
|
||||
public boolean addCustomObjectives(final ICustomObjective customObjective) {
|
||||
return customObjectives.add(customObjective);
|
||||
}
|
||||
|
||||
public void clearCustomObjectives() {
|
||||
customObjectives.clear();
|
||||
}
|
||||
|
||||
public LinkedList<Integer> getCustomObjectiveCounts() {
|
||||
return customObjectiveCounts;
|
||||
}
|
||||
|
||||
public boolean addCustomObjectiveCounts(final Integer customObjectiveCount) {
|
||||
return customObjectiveCounts.add(customObjectiveCount);
|
||||
}
|
||||
|
||||
public void clearCustomObjectiveCounts() {
|
||||
customObjectiveCounts.clear();
|
||||
}
|
||||
|
||||
public LinkedList<String> getCustomObjectiveDisplays() {
|
||||
return customObjectiveDisplays;
|
||||
}
|
||||
|
||||
public void clearCustomObjectiveDisplays() {
|
||||
customObjectiveDisplays.clear();
|
||||
}
|
||||
|
||||
public LinkedList<Entry<String, Object>> getCustomObjectiveData() {
|
||||
return customObjectiveData;
|
||||
}
|
||||
|
||||
public boolean addCustomObjectiveData(final Entry<String, Object> customObjectiveDatum) {
|
||||
return this.customObjectiveData.add(customObjectiveDatum);
|
||||
}
|
||||
|
||||
public void clearCustomObjectiveData() {
|
||||
customObjectiveData.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if stage has at least one objective<p>
|
||||
*
|
||||
@ -569,24 +769,6 @@ public class Stage {
|
||||
return !customObjectives.isEmpty();
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if stage has the specified type of objective<p>
|
||||
*
|
||||
* Accepted strings are: breakBlock, damageBlock, placeBlock, useBlock,
|
||||
* cutBlock, craftItem, smeltItem, enchantItem, brewItem, milkCow, catchFish,
|
||||
* killMob, deliverItem, killPlayer, talkToNPC, killNPC, tameMob,
|
||||
* shearSheep, password, reachLocation
|
||||
*
|
||||
* @deprecated Use {@link #containsObjective(ObjectiveType)}
|
||||
*
|
||||
* @param type The type of objective to check for
|
||||
* @return true if stage contains specified objective
|
||||
*/
|
||||
@Deprecated
|
||||
public boolean containsObjective(final String type) {
|
||||
return containsObjective(ObjectiveType.fromName(type));
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if stage has the specified type of objective<p>
|
||||
*
|
@ -11,10 +11,10 @@
|
||||
*/
|
||||
package me.blackvein.quests.actions;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.QuestMob;
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.entity.QuestMob;
|
||||
import me.blackvein.quests.tasks.ActionTimer;
|
||||
import me.blackvein.quests.util.ConfigUtil;
|
||||
import me.blackvein.quests.util.InventoryUtil;
|
||||
@ -31,7 +31,7 @@ import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Map;
|
||||
|
||||
public class Action implements Comparable<Action> {
|
||||
public class Action implements IAction {
|
||||
|
||||
private final Quests plugin;
|
||||
private String name = "";
|
||||
@ -82,197 +82,243 @@ public class Action implements Comparable<Action> {
|
||||
public Action(final Quests plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public int compareTo(final Action action) {
|
||||
public int compareTo(final IAction action) {
|
||||
return name.compareTo(action.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setName(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMessage(final String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isClearInv() {
|
||||
return clearInv;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setClearInv(final boolean clearInv) {
|
||||
this.clearInv = clearInv;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFailQuest() {
|
||||
return failQuest;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFailQuest(final boolean failQuest) {
|
||||
this.failQuest = failQuest;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LinkedList<Location> getExplosions() {
|
||||
return explosions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setExplosions(final LinkedList<Location> explosions) {
|
||||
this.explosions = explosions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Location, Effect> getEffects() {
|
||||
return effects;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setEffects(final Map<Location, Effect> effects) {
|
||||
this.effects = effects;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LinkedList<ItemStack> getItems() {
|
||||
return items;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItems(final LinkedList<ItemStack> items) {
|
||||
this.items = items;
|
||||
}
|
||||
|
||||
@Override
|
||||
public World getStormWorld() {
|
||||
return stormWorld;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStormWorld(final World stormWorld) {
|
||||
this.stormWorld = stormWorld;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStormDuration() {
|
||||
return stormDuration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setStormDuration(final int stormDuration) {
|
||||
this.stormDuration = stormDuration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public World getThunderWorld() {
|
||||
return thunderWorld;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setThunderWorld(final World thunderWorld) {
|
||||
this.thunderWorld = thunderWorld;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getThunderDuration() {
|
||||
return thunderDuration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setThunderDuration(final int thunderDuration) {
|
||||
this.thunderDuration = thunderDuration;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getTimer() {
|
||||
return timer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTimer(final int timer) {
|
||||
this.timer = timer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCancelTimer() {
|
||||
return cancelTimer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCancelTimer(final boolean cancelTimer) {
|
||||
this.cancelTimer = cancelTimer;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LinkedList<QuestMob> getMobSpawns() {
|
||||
return mobSpawns;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMobSpawns(final LinkedList<QuestMob> mobSpawns) {
|
||||
this.mobSpawns = mobSpawns;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LinkedList<Location> getLightningStrikes() {
|
||||
return lightningStrikes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setLightningStrikes(final LinkedList<Location> lightningStrikes) {
|
||||
this.lightningStrikes = lightningStrikes;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LinkedList<String> getCommands() {
|
||||
return commands;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setCommands(final LinkedList<String> commands) {
|
||||
this.commands = commands;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LinkedList<PotionEffect> getPotionEffects() {
|
||||
return potionEffects;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPotionEffects(final LinkedList<PotionEffect> potionEffects) {
|
||||
this.potionEffects = potionEffects;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getHunger() {
|
||||
return hunger;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHunger(final int hunger) {
|
||||
this.hunger = hunger;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getSaturation() {
|
||||
return saturation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSaturation(final int saturation) {
|
||||
this.saturation = saturation;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getHealth() {
|
||||
return health;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHealth(final float health) {
|
||||
this.health = health;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Location getTeleport() {
|
||||
return teleport;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTeleport(final Location teleport) {
|
||||
this.teleport = teleport;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBook() {
|
||||
return book;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBook(final String book) {
|
||||
this.book = book;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public String getDenizenScript() {
|
||||
return book;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDenizenScript(final String scriptName) {
|
||||
this.denizenScript = scriptName;
|
||||
}
|
||||
|
||||
public void fire(final Quester quester, final Quest quest) {
|
||||
public void fire(final IQuester quester, final IQuest quest) {
|
||||
final Player player = quester.getPlayer();
|
||||
if (message != null) {
|
||||
player.sendMessage(ConfigUtil.parseStringWithPossibleLineBreaks(message, quest, player));
|
||||
@ -348,7 +394,7 @@ public class Action implements Comparable<Action> {
|
||||
}
|
||||
if (teleport != null) {
|
||||
if (player.isDead()) {
|
||||
plugin.getLogger().warning("Tried to fire Action " + name + " but player " + player.getUniqueId()
|
||||
plugin.getLogger().warning("Tried to fire IAction " + name + " but player " + player.getUniqueId()
|
||||
+ " was dead (known Bukkit limitation).");
|
||||
} else {
|
||||
player.teleport(teleport);
|
||||
@ -406,7 +452,7 @@ public class Action implements Comparable<Action> {
|
||||
.runTaskLater(plugin, timer * 20L).getTaskId(), quest);
|
||||
}
|
||||
if (cancelTimer) {
|
||||
for (final Map.Entry<Integer, Quest> entry : quester.getTimers().entrySet()) {
|
||||
for (final Map.Entry<Integer, IQuest> entry : quester.getTimers().entrySet()) {
|
||||
if (entry.getValue().getName().equals(quest.getName())) {
|
||||
plugin.getServer().getScheduler().cancelTask(entry.getKey());
|
||||
quester.getTimers().remove(entry.getKey());
|
@ -0,0 +1,480 @@
|
||||
/*
|
||||
* Copyright (c) 2014 PikaMug and contributors. All rights reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||
* NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package me.blackvein.quests.actions;
|
||||
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.convo.actions.main.ActionMainPrompt;
|
||||
import me.blackvein.quests.convo.actions.menu.ActionMenuPrompt;
|
||||
import me.blackvein.quests.entity.BukkitQuestMob;
|
||||
import me.blackvein.quests.entity.QuestMob;
|
||||
import me.blackvein.quests.interfaces.ReloadCallback;
|
||||
import me.blackvein.quests.util.CK;
|
||||
import me.blackvein.quests.util.ConfigUtil;
|
||||
import me.blackvein.quests.util.FakeConversable;
|
||||
import me.blackvein.quests.util.ItemUtil;
|
||||
import me.blackvein.quests.util.Lang;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.InvalidConfigurationException;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.conversations.ConversationAbandonedEvent;
|
||||
import org.bukkit.conversations.ConversationAbandonedListener;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.conversations.ConversationFactory;
|
||||
import org.bukkit.conversations.ConversationPrefix;
|
||||
import org.bukkit.conversations.Prompt;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.Objects;
|
||||
import java.util.UUID;
|
||||
|
||||
public class BukkitActionFactory implements ActionFactory, ConversationAbandonedListener {
|
||||
|
||||
private final Quests plugin;
|
||||
private final ConversationFactory conversationFactory;
|
||||
private Map<UUID, Block> selectedExplosionLocations = new HashMap<>();
|
||||
private Map<UUID, Block> selectedEffectLocations = new HashMap<>();
|
||||
private Map<UUID, Block> selectedMobLocations = new HashMap<>();
|
||||
private Map<UUID, Block> selectedLightningLocations = new HashMap<>();
|
||||
private Map<UUID, Block> selectedTeleportLocations = new HashMap<>();
|
||||
private List<String> editingActionNames = new LinkedList<>();
|
||||
|
||||
public BukkitActionFactory(final Quests plugin) {
|
||||
this.plugin = plugin;
|
||||
// Ensure to initialize factory last so that 'this' is fully initialized before it is passed
|
||||
this.conversationFactory = new ConversationFactory(plugin).withModality(false).withLocalEcho(false)
|
||||
.withFirstPrompt(new ActionMenuPrompt(new ConversationContext(plugin, new FakeConversable(),
|
||||
new HashMap<>()))).withTimeout(3600)
|
||||
.withPrefix(new LineBreakPrefix()).addConversationAbandonedListener(this);
|
||||
}
|
||||
|
||||
public static class LineBreakPrefix implements ConversationPrefix {
|
||||
@Override
|
||||
public @NotNull String getPrefix(final @NotNull ConversationContext context) {
|
||||
return "\n";
|
||||
}
|
||||
}
|
||||
|
||||
public Map<UUID, Block> getSelectedExplosionLocations() {
|
||||
return selectedExplosionLocations;
|
||||
}
|
||||
|
||||
public void setSelectedExplosionLocations(
|
||||
final Map<UUID, Block> selectedExplosionLocations) {
|
||||
this.selectedExplosionLocations = selectedExplosionLocations;
|
||||
}
|
||||
|
||||
public Map<UUID, Block> getSelectedEffectLocations() {
|
||||
return selectedEffectLocations;
|
||||
}
|
||||
|
||||
public void setSelectedEffectLocations(final Map<UUID, Block> selectedEffectLocations) {
|
||||
this.selectedEffectLocations = selectedEffectLocations;
|
||||
}
|
||||
|
||||
public Map<UUID, Block> getSelectedMobLocations() {
|
||||
return selectedMobLocations;
|
||||
}
|
||||
|
||||
public void setSelectedMobLocations(final Map<UUID, Block> selectedMobLocations) {
|
||||
this.selectedMobLocations = selectedMobLocations;
|
||||
}
|
||||
|
||||
public Map<UUID, Block> getSelectedLightningLocations() {
|
||||
return selectedLightningLocations;
|
||||
}
|
||||
|
||||
public void setSelectedLightningLocations(
|
||||
final Map<UUID, Block> selectedLightningLocations) {
|
||||
this.selectedLightningLocations = selectedLightningLocations;
|
||||
}
|
||||
|
||||
public Map<UUID, Block> getSelectedTeleportLocations() {
|
||||
return selectedTeleportLocations;
|
||||
}
|
||||
|
||||
public void setSelectedTeleportLocations(
|
||||
final Map<UUID, Block> selectedTeleportLocations) {
|
||||
this.selectedTeleportLocations = selectedTeleportLocations;
|
||||
}
|
||||
|
||||
public ConversationFactory getConversationFactory() {
|
||||
return conversationFactory;
|
||||
}
|
||||
|
||||
public List<String> getNamesOfActionsBeingEdited() {
|
||||
return editingActionNames;
|
||||
}
|
||||
|
||||
public void setNamesOfActionsBeingEdited(final List<String> actionNames) {
|
||||
this.editingActionNames = actionNames;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void conversationAbandoned(final ConversationAbandonedEvent abandonedEvent) {
|
||||
if (abandonedEvent.getContext().getForWhom() instanceof Player) {
|
||||
final UUID uuid = ((Player) abandonedEvent.getContext().getForWhom()).getUniqueId();
|
||||
selectedExplosionLocations.remove(uuid);
|
||||
selectedEffectLocations.remove(uuid);
|
||||
selectedMobLocations.remove(uuid);
|
||||
selectedLightningLocations.remove(uuid);
|
||||
selectedTeleportLocations.remove(uuid);
|
||||
}
|
||||
}
|
||||
|
||||
public Prompt returnToMenu(final ConversationContext context) {
|
||||
return new ActionMainPrompt(context);
|
||||
}
|
||||
|
||||
public void loadData(final IAction event, final ConversationContext context) {
|
||||
if (event.getMessage() != null) {
|
||||
context.setSessionData(CK.E_MESSAGE, event.getMessage());
|
||||
}
|
||||
if (event.isClearInv()) {
|
||||
context.setSessionData(CK.E_CLEAR_INVENTORY, Lang.get("yesWord"));
|
||||
} else {
|
||||
context.setSessionData(CK.E_CLEAR_INVENTORY, Lang.get("noWord"));
|
||||
}
|
||||
if (event.isFailQuest()) {
|
||||
context.setSessionData(CK.E_FAIL_QUEST, Lang.get("yesWord"));
|
||||
} else {
|
||||
context.setSessionData(CK.E_FAIL_QUEST, Lang.get("noWord"));
|
||||
}
|
||||
if (event.getItems() != null && !event.getItems().isEmpty()) {
|
||||
final LinkedList<ItemStack> items = new LinkedList<>(event.getItems());
|
||||
context.setSessionData(CK.E_ITEMS, items);
|
||||
}
|
||||
if (event.getExplosions() != null && !event.getExplosions().isEmpty()) {
|
||||
final LinkedList<String> locs = new LinkedList<>();
|
||||
for (final Location loc : event.getExplosions()) {
|
||||
locs.add(ConfigUtil.getLocationInfo(loc));
|
||||
}
|
||||
context.setSessionData(CK.E_EXPLOSIONS, locs);
|
||||
}
|
||||
if (event.getEffects() != null && !event.getEffects().isEmpty()) {
|
||||
final LinkedList<String> locs = new LinkedList<>();
|
||||
final LinkedList<String> effs = new LinkedList<>();
|
||||
for (final Entry<Location, Effect> e : event.getEffects().entrySet()) {
|
||||
locs.add(ConfigUtil.getLocationInfo(e.getKey()));
|
||||
effs.add(e.getValue().toString());
|
||||
}
|
||||
context.setSessionData(CK.E_EFFECTS, effs);
|
||||
context.setSessionData(CK.E_EFFECTS_LOCATIONS, locs);
|
||||
}
|
||||
if (event.getStormWorld() != null) {
|
||||
context.setSessionData(CK.E_WORLD_STORM, event.getStormWorld().getName());
|
||||
context.setSessionData(CK.E_WORLD_STORM_DURATION, event.getStormDuration());
|
||||
}
|
||||
if (event.getThunderWorld() != null) {
|
||||
context.setSessionData(CK.E_WORLD_THUNDER, event.getThunderWorld().getName());
|
||||
context.setSessionData(CK.E_WORLD_THUNDER_DURATION, event.getThunderDuration());
|
||||
}
|
||||
if (event.getMobSpawns() != null && !event.getMobSpawns().isEmpty()) {
|
||||
final LinkedList<String> questMobs = new LinkedList<>();
|
||||
for (final QuestMob questMob : event.getMobSpawns()) {
|
||||
questMobs.add(questMob.serialize());
|
||||
}
|
||||
context.setSessionData(CK.E_MOB_TYPES, questMobs);
|
||||
}
|
||||
if (event.getLightningStrikes() != null && !event.getLightningStrikes().isEmpty()) {
|
||||
final LinkedList<String> locs = new LinkedList<>();
|
||||
for (final Location loc : event.getLightningStrikes()) {
|
||||
locs.add(ConfigUtil.getLocationInfo(loc));
|
||||
}
|
||||
context.setSessionData(CK.E_LIGHTNING, locs);
|
||||
}
|
||||
if (event.getPotionEffects() != null && !event.getPotionEffects().isEmpty()) {
|
||||
final LinkedList<String> types = new LinkedList<>();
|
||||
final LinkedList<Long> durations = new LinkedList<>();
|
||||
final LinkedList<Integer> mags = new LinkedList<>();
|
||||
for (final PotionEffect pe : event.getPotionEffects()) {
|
||||
types.add(pe.getType().getName());
|
||||
durations.add((long) pe.getDuration());
|
||||
mags.add(pe.getAmplifier());
|
||||
}
|
||||
context.setSessionData(CK.E_POTION_TYPES, types);
|
||||
context.setSessionData(CK.E_POTION_DURATIONS, durations);
|
||||
context.setSessionData(CK.E_POTION_STRENGTH, mags);
|
||||
}
|
||||
if (event.getHunger() > -1) {
|
||||
context.setSessionData(CK.E_HUNGER, event.getHunger());
|
||||
}
|
||||
if (event.getSaturation() > -1) {
|
||||
context.setSessionData(CK.E_SATURATION, event.getSaturation());
|
||||
}
|
||||
if (event.getHealth() > -1) {
|
||||
context.setSessionData(CK.E_HEALTH, event.getHealth());
|
||||
}
|
||||
if (event.getTeleport() != null) {
|
||||
context.setSessionData(CK.E_TELEPORT, ConfigUtil.getLocationInfo(event.getTeleport()));
|
||||
}
|
||||
if (event.getCommands() != null) {
|
||||
context.setSessionData(CK.E_COMMANDS, event.getCommands());
|
||||
}
|
||||
if (event.getTimer() > 0) {
|
||||
context.setSessionData(CK.E_TIMER, event.getTimer());
|
||||
}
|
||||
if (event.isCancelTimer()) {
|
||||
context.setSessionData(CK.E_CANCEL_TIMER, true);
|
||||
}
|
||||
}
|
||||
|
||||
public void clearData(final ConversationContext context) {
|
||||
context.setSessionData(CK.E_OLD_EVENT, null);
|
||||
context.setSessionData(CK.E_NAME, null);
|
||||
context.setSessionData(CK.E_MESSAGE, null);
|
||||
context.setSessionData(CK.E_CLEAR_INVENTORY, null);
|
||||
context.setSessionData(CK.E_FAIL_QUEST, null);
|
||||
context.setSessionData(CK.E_ITEMS, null);
|
||||
context.setSessionData(CK.E_ITEMS_AMOUNTS, null);
|
||||
context.setSessionData(CK.E_EXPLOSIONS, null);
|
||||
context.setSessionData(CK.E_EFFECTS, null);
|
||||
context.setSessionData(CK.E_EFFECTS_LOCATIONS, null);
|
||||
context.setSessionData(CK.E_WORLD_STORM, null);
|
||||
context.setSessionData(CK.E_WORLD_STORM_DURATION, null);
|
||||
context.setSessionData(CK.E_WORLD_THUNDER, null);
|
||||
context.setSessionData(CK.E_WORLD_THUNDER_DURATION, null);
|
||||
context.setSessionData(CK.E_MOB_TYPES, null);
|
||||
context.setSessionData(CK.E_LIGHTNING, null);
|
||||
context.setSessionData(CK.E_POTION_TYPES, null);
|
||||
context.setSessionData(CK.E_POTION_DURATIONS, null);
|
||||
context.setSessionData(CK.E_POTION_STRENGTH, null);
|
||||
context.setSessionData(CK.E_HUNGER, null);
|
||||
context.setSessionData(CK.E_SATURATION, null);
|
||||
context.setSessionData(CK.E_HEALTH, null);
|
||||
context.setSessionData(CK.E_TELEPORT, null);
|
||||
context.setSessionData(CK.E_COMMANDS, null);
|
||||
context.setSessionData(CK.E_TIMER, null);
|
||||
context.setSessionData(CK.E_CANCEL_TIMER, null);
|
||||
}
|
||||
|
||||
public void deleteAction(final ConversationContext context) {
|
||||
final YamlConfiguration data = new YamlConfiguration();
|
||||
final File actionsFile = new File(plugin.getDataFolder(), "actions.yml");
|
||||
try {
|
||||
data.load(actionsFile);
|
||||
} catch (final IOException | InvalidConfigurationException e) {
|
||||
e.printStackTrace();
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questErrorReadingFile")
|
||||
.replace("<file>", actionsFile.getName()));
|
||||
return;
|
||||
}
|
||||
final String action = (String) context.getSessionData(CK.ED_EVENT_DELETE);
|
||||
String key = "actions";
|
||||
ConfigurationSection sec = data.getConfigurationSection(key);
|
||||
if (sec == null) {
|
||||
key = "events";
|
||||
sec = data.getConfigurationSection(key);
|
||||
}
|
||||
if (sec != null && action != null) {
|
||||
sec.set(action, null);
|
||||
}
|
||||
try {
|
||||
data.save(actionsFile);
|
||||
} catch (final IOException e) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questSaveError"));
|
||||
return;
|
||||
}
|
||||
final ReloadCallback<Boolean> callback = response -> {
|
||||
if (!response) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("unknownError"));
|
||||
}
|
||||
};
|
||||
plugin.reload(callback);
|
||||
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("eventEditorDeleted"));
|
||||
if (plugin.getSettings().getConsoleLogging() > 0) {
|
||||
final String identifier = context.getForWhom() instanceof Player ?
|
||||
"Player " + ((Player)context.getForWhom()).getUniqueId() : "CONSOLE";
|
||||
plugin.getLogger().info(identifier + " deleted action " + action);
|
||||
}
|
||||
for (final IQuester q : plugin.getOfflineQuesters()) {
|
||||
for (final IQuest quest : q.getCurrentQuests().keySet()) {
|
||||
q.checkQuest(quest);
|
||||
}
|
||||
}
|
||||
clearData(context);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void saveAction(final ConversationContext context) {
|
||||
final YamlConfiguration data = new YamlConfiguration();
|
||||
final File actionsFile = new File(plugin.getDataFolder(), "actions.yml");
|
||||
try {
|
||||
data.load(actionsFile);
|
||||
} catch (final IOException | InvalidConfigurationException e) {
|
||||
e.printStackTrace();
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questErrorReadingFile")
|
||||
.replace("<file>", actionsFile.getName()));
|
||||
return;
|
||||
}
|
||||
String key = "actions";
|
||||
if (data.getConfigurationSection(key) == null) {
|
||||
key = "events";
|
||||
}
|
||||
if (context.getSessionData(CK.E_OLD_EVENT) != null
|
||||
&& !((String) Objects.requireNonNull(context.getSessionData(CK.E_OLD_EVENT))).isEmpty()) {
|
||||
data.set(key + "." + context.getSessionData(CK.E_OLD_EVENT), null);
|
||||
final Collection<IAction> temp = plugin.getLoadedActions();
|
||||
temp.remove(plugin.getAction((String) context.getSessionData(CK.E_OLD_EVENT)));
|
||||
plugin.setLoadedActions(temp);
|
||||
}
|
||||
final ConfigurationSection section = data.createSection(key + "." + context.getSessionData(CK.E_NAME));
|
||||
editingActionNames.remove((String) context.getSessionData(CK.E_NAME));
|
||||
if (context.getSessionData(CK.E_MESSAGE) != null) {
|
||||
section.set("message", context.getSessionData(CK.E_MESSAGE));
|
||||
}
|
||||
if (context.getSessionData(CK.E_CLEAR_INVENTORY) != null) {
|
||||
final String s = (String) context.getSessionData(CK.E_CLEAR_INVENTORY);
|
||||
if (s != null && s.equalsIgnoreCase(Lang.get("yesWord"))) {
|
||||
section.set("clear-inventory", true);
|
||||
}
|
||||
}
|
||||
if (context.getSessionData(CK.E_FAIL_QUEST) != null) {
|
||||
final String s = (String) context.getSessionData(CK.E_FAIL_QUEST);
|
||||
if (s != null && s.equalsIgnoreCase(Lang.get("yesWord"))) {
|
||||
section.set("fail-quest", true);
|
||||
}
|
||||
}
|
||||
if (context.getSessionData(CK.E_ITEMS) != null) {
|
||||
section.set("items", context.getSessionData(CK.E_ITEMS));
|
||||
}
|
||||
if (context.getSessionData(CK.E_EXPLOSIONS) != null) {
|
||||
section.set("explosions", context.getSessionData(CK.E_EXPLOSIONS));
|
||||
}
|
||||
if (context.getSessionData(CK.E_EFFECTS) != null) {
|
||||
section.set("effects", context.getSessionData(CK.E_EFFECTS));
|
||||
section.set("effect-locations", context.getSessionData(CK.E_EFFECTS_LOCATIONS));
|
||||
}
|
||||
if (context.getSessionData(CK.E_WORLD_STORM) != null) {
|
||||
section.set("storm-world", context.getSessionData(CK.E_WORLD_STORM));
|
||||
section.set("storm-duration", context.getSessionData(CK.E_WORLD_STORM_DURATION));
|
||||
}
|
||||
if (context.getSessionData(CK.E_WORLD_THUNDER) != null) {
|
||||
section.set("thunder-world", context.getSessionData(CK.E_WORLD_THUNDER));
|
||||
section.set("thunder-duration", context.getSessionData(CK.E_WORLD_THUNDER_DURATION));
|
||||
}
|
||||
try {
|
||||
if (context.getSessionData(CK.E_MOB_TYPES) != null) {
|
||||
int count = 0;
|
||||
for (final String s : (LinkedList<String>) Objects.requireNonNull(context
|
||||
.getSessionData(CK.E_MOB_TYPES))) {
|
||||
ConfigurationSection ss = section.getConfigurationSection("mob-spawns." + count);
|
||||
if (ss == null) {
|
||||
ss = section.createSection("mob-spawns." + count);
|
||||
}
|
||||
final QuestMob questMob = BukkitQuestMob.fromString(s);
|
||||
if (questMob.getName() != null) {
|
||||
ss.set("name", questMob.getName());
|
||||
}
|
||||
ss.set("spawn-location", ConfigUtil.getLocationInfo(questMob.getSpawnLocation()));
|
||||
ss.set("mob-type", questMob.getType().name());
|
||||
ss.set("spawn-amounts", questMob.getSpawnAmounts());
|
||||
ss.set("held-item", ItemUtil.serializeItemStack(questMob.getInventory()[0]));
|
||||
ss.set("held-item-drop-chance", questMob.getDropChances()[0]);
|
||||
ss.set("boots", ItemUtil.serializeItemStack(questMob.getInventory()[1]));
|
||||
ss.set("boots-drop-chance", questMob.getDropChances()[1]);
|
||||
ss.set("leggings", ItemUtil.serializeItemStack(questMob.getInventory()[2]));
|
||||
ss.set("leggings-drop-chance", questMob.getDropChances()[2]);
|
||||
ss.set("chest-plate", ItemUtil.serializeItemStack(questMob.getInventory()[3]));
|
||||
ss.set("chest-plate-drop-chance", questMob.getDropChances()[3]);
|
||||
ss.set("helmet", ItemUtil.serializeItemStack(questMob.getInventory()[4]));
|
||||
ss.set("helmet-drop-chance", questMob.getDropChances()[4]);
|
||||
count++;
|
||||
}
|
||||
}
|
||||
} catch (final Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
if (context.getSessionData(CK.E_LIGHTNING) != null) {
|
||||
section.set("lightning-strikes", context.getSessionData(CK.E_LIGHTNING));
|
||||
}
|
||||
if (context.getSessionData(CK.E_COMMANDS) != null) {
|
||||
final LinkedList<String> commands = (LinkedList<String>) context.getSessionData(CK.E_COMMANDS);
|
||||
if (commands != null && !commands.isEmpty()) {
|
||||
section.set("commands", commands);
|
||||
}
|
||||
}
|
||||
if (context.getSessionData(CK.E_POTION_TYPES) != null) {
|
||||
section.set("potion-effect-types", context.getSessionData(CK.E_POTION_TYPES));
|
||||
section.set("potion-effect-durations", context.getSessionData(CK.E_POTION_DURATIONS));
|
||||
section.set("potion-effect-amplifiers", context.getSessionData(CK.E_POTION_STRENGTH));
|
||||
}
|
||||
if (context.getSessionData(CK.E_HUNGER) != null) {
|
||||
section.set("hunger", context.getSessionData(CK.E_HUNGER));
|
||||
}
|
||||
if (context.getSessionData(CK.E_SATURATION) != null) {
|
||||
section.set("saturation", context.getSessionData(CK.E_SATURATION));
|
||||
}
|
||||
if (context.getSessionData(CK.E_HEALTH) != null) {
|
||||
section.set("health", context.getSessionData(CK.E_HEALTH));
|
||||
}
|
||||
if (context.getSessionData(CK.E_TELEPORT) != null) {
|
||||
section.set("teleport-location", context.getSessionData(CK.E_TELEPORT));
|
||||
}
|
||||
if (context.getSessionData(CK.E_TIMER) != null) {
|
||||
final Integer i = (Integer) context.getSessionData(CK.E_TIMER);
|
||||
if (i != null && i > 0) {
|
||||
section.set("timer", context.getSessionData(CK.E_TIMER));
|
||||
}
|
||||
}
|
||||
if (context.getSessionData(CK.E_CANCEL_TIMER) != null) {
|
||||
final String s = (String) context.getSessionData(CK.E_CANCEL_TIMER);
|
||||
if (s != null && s.equalsIgnoreCase(Lang.get("yesWord"))) {
|
||||
section.set("cancel-timer", true);
|
||||
}
|
||||
}
|
||||
if (context.getSessionData(CK.E_DENIZEN) != null) {
|
||||
section.set("denizen-script", context.getSessionData(CK.E_DENIZEN));
|
||||
}
|
||||
try {
|
||||
data.save(actionsFile);
|
||||
} catch (final IOException e) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questSaveError"));
|
||||
return;
|
||||
}
|
||||
final ReloadCallback<Boolean> callback = response -> {
|
||||
if (!response) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("unknownError"));
|
||||
}
|
||||
};
|
||||
plugin.reload(callback);
|
||||
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("eventEditorSaved"));
|
||||
if (plugin.getSettings().getConsoleLogging() > 0) {
|
||||
final String identifier = context.getForWhom() instanceof Player ?
|
||||
"Player " + ((Player)context.getForWhom()).getUniqueId() : "CONSOLE";
|
||||
plugin.getLogger().info(identifier + " saved action " + context.getSessionData(CK.E_NAME));
|
||||
}
|
||||
for (final IQuester q : plugin.getOfflineQuesters()) {
|
||||
for (final IQuest quest : q.getCurrentQuests().keySet()) {
|
||||
q.checkQuest(quest);
|
||||
}
|
||||
}
|
||||
clearData(context);
|
||||
}
|
||||
}
|
@ -0,0 +1,277 @@
|
||||
/*
|
||||
* Copyright (c) 2014 PikaMug and contributors. All rights reserved.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
|
||||
* NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package me.blackvein.quests.conditions;
|
||||
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.convo.conditions.main.ConditionMainPrompt;
|
||||
import me.blackvein.quests.convo.conditions.menu.ConditionMenuPrompt;
|
||||
import me.blackvein.quests.interfaces.ReloadCallback;
|
||||
import me.blackvein.quests.util.CK;
|
||||
import me.blackvein.quests.util.FakeConversable;
|
||||
import me.blackvein.quests.util.Lang;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.InvalidConfigurationException;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.conversations.ConversationAbandonedEvent;
|
||||
import org.bukkit.conversations.ConversationAbandonedListener;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.conversations.ConversationFactory;
|
||||
import org.bukkit.conversations.ConversationPrefix;
|
||||
import org.bukkit.conversations.Prompt;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class BukkitConditionFactory implements ConditionFactory, ConversationAbandonedListener {
|
||||
|
||||
private final Quests plugin;
|
||||
private final ConversationFactory conversationFactory;
|
||||
private List<String> editingConditionNames = new LinkedList<>();
|
||||
|
||||
public BukkitConditionFactory(final Quests plugin) {
|
||||
this.plugin = plugin;
|
||||
// Ensure to initialize factory last so that 'this' is fully initialized before it is passed
|
||||
this.conversationFactory = new ConversationFactory(plugin).withModality(false).withLocalEcho(false)
|
||||
.withFirstPrompt(new ConditionMenuPrompt(new ConversationContext(plugin, new FakeConversable(),
|
||||
new HashMap<>()))).withTimeout(3600)
|
||||
.withPrefix(new LineBreakPrefix()).addConversationAbandonedListener(this);
|
||||
}
|
||||
|
||||
public static class LineBreakPrefix implements ConversationPrefix {
|
||||
@Override
|
||||
public @NotNull String getPrefix(final @NotNull ConversationContext context) {
|
||||
return "\n";
|
||||
}
|
||||
}
|
||||
|
||||
public ConversationFactory getConversationFactory() {
|
||||
return conversationFactory;
|
||||
}
|
||||
|
||||
public List<String> getNamesOfConditionsBeingEdited() {
|
||||
return editingConditionNames;
|
||||
}
|
||||
|
||||
public void setNamesOfConditionsBeingEdited(final List<String> conditionNames) {
|
||||
this.editingConditionNames = conditionNames;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void conversationAbandoned(final @NotNull ConversationAbandonedEvent abandonedEvent) {
|
||||
}
|
||||
|
||||
public Prompt returnToMenu(final ConversationContext context) {
|
||||
return new ConditionMainPrompt(context);
|
||||
}
|
||||
|
||||
public void loadData(final ICondition condition, final ConversationContext context) {
|
||||
if (condition.isFailQuest()) {
|
||||
context.setSessionData(CK.C_FAIL_QUEST, Lang.get("yesWord"));
|
||||
} else {
|
||||
context.setSessionData(CK.C_FAIL_QUEST, Lang.get("noWord"));
|
||||
}
|
||||
if (condition.getEntitiesWhileRiding() != null && !condition.getEntitiesWhileRiding().isEmpty()) {
|
||||
final LinkedList<String> entities = new LinkedList<>(condition.getEntitiesWhileRiding());
|
||||
context.setSessionData(CK.C_WHILE_RIDING_ENTITY, entities);
|
||||
}
|
||||
if (condition.getNpcsWhileRiding() != null && !condition.getNpcsWhileRiding().isEmpty()) {
|
||||
final LinkedList<Integer> npcs = new LinkedList<>(condition.getNpcsWhileRiding());
|
||||
context.setSessionData(CK.C_WHILE_RIDING_NPC, npcs);
|
||||
}
|
||||
if (condition.getPermissions() != null && !condition.getPermissions().isEmpty()) {
|
||||
final LinkedList<String> permissions = new LinkedList<>(condition.getPermissions());
|
||||
context.setSessionData(CK.C_WHILE_PERMISSION, permissions);
|
||||
}
|
||||
if (condition.getItemsWhileHoldingMainHand() != null && !condition.getItemsWhileHoldingMainHand().isEmpty()) {
|
||||
final LinkedList<ItemStack> items = new LinkedList<>(condition.getItemsWhileHoldingMainHand());
|
||||
context.setSessionData(CK.C_WHILE_HOLDING_MAIN_HAND, items);
|
||||
}
|
||||
if (condition.getWorldsWhileStayingWithin() != null && !condition.getWorldsWhileStayingWithin().isEmpty()) {
|
||||
final LinkedList<String> worlds = new LinkedList<>(condition.getBiomesWhileStayingWithin());
|
||||
context.setSessionData(CK.C_WHILE_WITHIN_WORLD, worlds);
|
||||
}
|
||||
if (condition.getBiomesWhileStayingWithin() != null && !condition.getBiomesWhileStayingWithin().isEmpty()) {
|
||||
final LinkedList<String> biomes = new LinkedList<>(condition.getBiomesWhileStayingWithin());
|
||||
context.setSessionData(CK.C_WHILE_WITHIN_BIOME, biomes);
|
||||
}
|
||||
if (condition.getRegionsWhileStayingWithin() != null && !condition.getRegionsWhileStayingWithin().isEmpty()) {
|
||||
final LinkedList<String> regions = new LinkedList<>(condition.getRegionsWhileStayingWithin());
|
||||
context.setSessionData(CK.C_WHILE_WITHIN_REGION, regions);
|
||||
}
|
||||
if (condition.getPlaceholdersCheckIdentifier() != null
|
||||
&& !condition.getPlaceholdersCheckIdentifier().isEmpty()) {
|
||||
final LinkedList<String> identifiers = new LinkedList<>(condition.getPlaceholdersCheckIdentifier());
|
||||
context.setSessionData(CK.C_WHILE_PLACEHOLDER_ID, identifiers);
|
||||
}
|
||||
if (condition.getPlaceholdersCheckValue() != null && !condition.getPlaceholdersCheckValue().isEmpty()) {
|
||||
final LinkedList<String> values = new LinkedList<>(condition.getPlaceholdersCheckValue());
|
||||
context.setSessionData(CK.C_WHILE_PLACEHOLDER_VAL, values);
|
||||
}
|
||||
}
|
||||
|
||||
public void clearData(final ConversationContext context) {
|
||||
context.setSessionData(CK.C_OLD_CONDITION, null);
|
||||
context.setSessionData(CK.C_NAME, null);
|
||||
context.setSessionData(CK.C_FAIL_QUEST, null);
|
||||
context.setSessionData(CK.C_WHILE_RIDING_ENTITY, null);
|
||||
context.setSessionData(CK.C_WHILE_RIDING_NPC, null);
|
||||
context.setSessionData(CK.C_WHILE_PERMISSION, null);
|
||||
context.setSessionData(CK.C_WHILE_HOLDING_MAIN_HAND, null);
|
||||
context.setSessionData(CK.C_WHILE_WITHIN_WORLD, null);
|
||||
context.setSessionData(CK.C_WHILE_WITHIN_BIOME, null);
|
||||
context.setSessionData(CK.C_WHILE_WITHIN_REGION, null);
|
||||
context.setSessionData(CK.C_WHILE_PLACEHOLDER_ID, null);
|
||||
context.setSessionData(CK.C_WHILE_PLACEHOLDER_VAL, null);
|
||||
}
|
||||
|
||||
public void deleteCondition(final ConversationContext context) {
|
||||
final YamlConfiguration data = new YamlConfiguration();
|
||||
final File conditionsFile = new File(plugin.getDataFolder(), "conditions.yml");
|
||||
try {
|
||||
data.load(conditionsFile);
|
||||
} catch (final IOException | InvalidConfigurationException e) {
|
||||
e.printStackTrace();
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questErrorReadingFile")
|
||||
.replace("<file>", conditionsFile.getName()));
|
||||
return;
|
||||
}
|
||||
final String condition = (String) context.getSessionData(CK.ED_CONDITION_DELETE);
|
||||
final ConfigurationSection sec = data.getConfigurationSection("conditions");
|
||||
if (sec != null && condition != null) {
|
||||
sec.set(condition, null);
|
||||
}
|
||||
try {
|
||||
data.save(conditionsFile);
|
||||
} catch (final IOException e) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questSaveError"));
|
||||
return;
|
||||
}
|
||||
final ReloadCallback<Boolean> callback = response -> {
|
||||
if (!response) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("unknownError"));
|
||||
}
|
||||
};
|
||||
plugin.reload(callback);
|
||||
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("conditionEditorDeleted"));
|
||||
if (plugin.getSettings().getConsoleLogging() > 0) {
|
||||
final String identifier = context.getForWhom() instanceof Player ?
|
||||
"Player " + ((Player)context.getForWhom()).getUniqueId() : "CONSOLE";
|
||||
plugin.getLogger().info(identifier + " deleted condition " + condition);
|
||||
}
|
||||
for (final IQuester q : plugin.getOfflineQuesters()) {
|
||||
for (final IQuest quest : q.getCurrentQuests().keySet()) {
|
||||
q.checkQuest(quest);
|
||||
}
|
||||
}
|
||||
clearData(context);
|
||||
}
|
||||
|
||||
public void saveCondition(final ConversationContext context) {
|
||||
final YamlConfiguration data = new YamlConfiguration();
|
||||
final File conditionsFile = new File(plugin.getDataFolder(), "conditions.yml");
|
||||
try {
|
||||
data.load(conditionsFile);
|
||||
} catch (final IOException | InvalidConfigurationException e) {
|
||||
e.printStackTrace();
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questErrorReadingFile")
|
||||
.replace("<file>", conditionsFile.getName()));
|
||||
return;
|
||||
}
|
||||
if (context.getSessionData(CK.C_OLD_CONDITION) != null
|
||||
&& !((String) Objects.requireNonNull(context.getSessionData(CK.C_OLD_CONDITION))).isEmpty()) {
|
||||
data.set("conditions." + context.getSessionData(CK.C_OLD_CONDITION), null);
|
||||
final Collection<ICondition> temp = plugin.getLoadedConditions();
|
||||
temp.remove(plugin.getCondition((String) context.getSessionData(CK.C_OLD_CONDITION)));
|
||||
plugin.setLoadedConditions(temp);
|
||||
}
|
||||
final ConfigurationSection section = data.createSection("conditions." + context.getSessionData(CK.C_NAME));
|
||||
editingConditionNames.remove((String) context.getSessionData(CK.C_NAME));
|
||||
if (context.getSessionData(CK.C_FAIL_QUEST) != null) {
|
||||
final String s = (String) context.getSessionData(CK.C_FAIL_QUEST);
|
||||
if (s != null && s.equalsIgnoreCase(Lang.get("yesWord"))) {
|
||||
section.set("fail-quest", true);
|
||||
}
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_RIDING_ENTITY) != null) {
|
||||
section.set("ride-entity",
|
||||
context.getSessionData(CK.C_WHILE_RIDING_ENTITY));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_RIDING_NPC) != null) {
|
||||
section.set("ride-npc",
|
||||
context.getSessionData(CK.C_WHILE_RIDING_NPC));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_PERMISSION) != null) {
|
||||
section.set("permission",
|
||||
context.getSessionData(CK.C_WHILE_PERMISSION));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_HOLDING_MAIN_HAND) != null) {
|
||||
section.set("hold-main-hand",
|
||||
context.getSessionData(CK.C_WHILE_HOLDING_MAIN_HAND));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_WITHIN_WORLD) != null) {
|
||||
section.set("stay-within-world",
|
||||
context.getSessionData(CK.C_WHILE_WITHIN_WORLD));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_WITHIN_BIOME) != null) {
|
||||
section.set("stay-within-biome",
|
||||
context.getSessionData(CK.C_WHILE_WITHIN_BIOME));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_WITHIN_REGION) != null) {
|
||||
section.set("stay-within-region",
|
||||
context.getSessionData(CK.C_WHILE_WITHIN_REGION));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_PLACEHOLDER_ID) != null) {
|
||||
section.set("check-placeholder-id",
|
||||
context.getSessionData(CK.C_WHILE_PLACEHOLDER_ID));
|
||||
}
|
||||
if (context.getSessionData(CK.C_WHILE_PLACEHOLDER_VAL) != null) {
|
||||
section.set("check-placeholder-value",
|
||||
context.getSessionData(CK.C_WHILE_PLACEHOLDER_VAL));
|
||||
}
|
||||
try {
|
||||
data.save(conditionsFile);
|
||||
} catch (final IOException e) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questSaveError"));
|
||||
return;
|
||||
}
|
||||
final ReloadCallback<Boolean> callback = response -> {
|
||||
if (!response) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("unknownError"));
|
||||
}
|
||||
};
|
||||
plugin.reload(callback);
|
||||
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("conditionEditorSaved"));
|
||||
if (plugin.getSettings().getConsoleLogging() > 0) {
|
||||
final String identifier = context.getForWhom() instanceof Player ?
|
||||
"Player " + ((Player)context.getForWhom()).getUniqueId() : "CONSOLE";
|
||||
plugin.getLogger().info(identifier + " saved condition " + context.getSessionData(CK.C_NAME));
|
||||
}
|
||||
for (final IQuester q : plugin.getOfflineQuesters()) {
|
||||
for (final IQuest quest : q.getCurrentQuests().keySet()) {
|
||||
q.checkQuest(quest);
|
||||
}
|
||||
}
|
||||
clearData(context);
|
||||
}
|
||||
}
|
@ -12,8 +12,8 @@
|
||||
|
||||
package me.blackvein.quests.conditions;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.util.ItemUtil;
|
||||
import me.blackvein.quests.util.MiscUtil;
|
||||
@ -24,7 +24,7 @@ import org.bukkit.inventory.ItemStack;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Objects;
|
||||
|
||||
public class Condition implements Comparable<Condition> {
|
||||
public class Condition implements ICondition {
|
||||
|
||||
private final Quests plugin;
|
||||
private String name = "";
|
||||
@ -44,107 +44,130 @@ public class Condition implements Comparable<Condition> {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(final Condition condition) {
|
||||
public int compareTo(final ICondition condition) {
|
||||
return name.compareTo(condition.getName());
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setName(final String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public boolean isFailQuest() {
|
||||
return failQuest;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFailQuest(final boolean failQuest) {
|
||||
this.failQuest = failQuest;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public LinkedList<String> getEntitiesWhileRiding() {
|
||||
return entitiesWhileRiding;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setEntitiesWhileRiding(final LinkedList<String> entitiesWhileRiding) {
|
||||
this.entitiesWhileRiding = entitiesWhileRiding;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public LinkedList<Integer> getNpcsWhileRiding() {
|
||||
return npcsWhileRiding;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setNpcsWhileRiding(final LinkedList<Integer> npcsWhileRiding) {
|
||||
this.npcsWhileRiding = npcsWhileRiding;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public LinkedList<String> getPermissions() {
|
||||
return permissions;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setPermissions(final LinkedList<String> permissions) {
|
||||
this.permissions = permissions;
|
||||
}
|
||||
|
||||
@Override
|
||||
public LinkedList<ItemStack> getItemsWhileHoldingMainHand() {
|
||||
return itemsWhileHoldingMainHand;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setItemsWhileHoldingMainHand(final LinkedList<ItemStack> itemsWhileHoldingMainHand) {
|
||||
this.itemsWhileHoldingMainHand = itemsWhileHoldingMainHand;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public LinkedList<String> getWorldsWhileStayingWithin() {
|
||||
return worldsWhileStayingWithin;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setWorldsWhileStayingWithin(final LinkedList<String> worldsWhileStayingWithin) {
|
||||
this.worldsWhileStayingWithin = worldsWhileStayingWithin;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public LinkedList<String> getBiomesWhileStayingWithin() {
|
||||
return biomesWhileStayingWithin;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setBiomesWhileStayingWithin(final LinkedList<String> biomesWhileStayingWithin) {
|
||||
this.biomesWhileStayingWithin = biomesWhileStayingWithin;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public LinkedList<String> getRegionsWhileStayingWithin() {
|
||||
return regionsWhileStayingWithin;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setRegionsWhileStayingWithin(final LinkedList<String> biomesWhileStayingWithin) {
|
||||
this.regionsWhileStayingWithin = biomesWhileStayingWithin;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public LinkedList<String> getPlaceholdersCheckIdentifier() {
|
||||
return placeholdersCheckIdentifier;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setPlaceholdersCheckIdentifier(final LinkedList<String> placeholdersCheckIdentifier) {
|
||||
this.placeholdersCheckIdentifier = placeholdersCheckIdentifier;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public LinkedList<String> getPlaceholdersCheckValue() {
|
||||
return placeholdersCheckValue;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void setPlaceholdersCheckValue(final LinkedList<String> placeholdersCheckValue) {
|
||||
this.placeholdersCheckValue = placeholdersCheckValue;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public boolean check(final Quester quester, final Quest quest) {
|
||||
@Override
|
||||
public boolean check(final IQuester quester, final IQuest quest) {
|
||||
final Player player = quester.getPlayer();
|
||||
if (!entitiesWhileRiding.isEmpty()) {
|
||||
for (final String e : entitiesWhileRiding) {
|
||||
if (player.getVehicle() != null && player.getVehicle().getType().equals(MiscUtil.getProperMobType(e))) {
|
||||
return true;
|
||||
} else if (plugin.getSettings().getConsoleLogging() > 2) {
|
||||
plugin.getLogger().info("DEBUG: Condition entity mismatch for " + player.getName() + ": " + e);
|
||||
plugin.getLogger().info("DEBUG: ICondition entity mismatch for " + player.getName() + ": " + e);
|
||||
}
|
||||
}
|
||||
} else if (!npcsWhileRiding.isEmpty()) {
|
||||
@ -154,7 +177,7 @@ public class Condition implements Comparable<Condition> {
|
||||
.equals(plugin.getDependencies().getCitizens().getNPCRegistry().getById(n).getEntity())) {
|
||||
return true;
|
||||
} else if (plugin.getSettings().getConsoleLogging() > 2) {
|
||||
plugin.getLogger().info("DEBUG: Condition NPC mismatch for " + player.getName() + ": ID " + n);
|
||||
plugin.getLogger().info("DEBUG: ICondition NPC mismatch for " + player.getName() + ": ID " + n);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -164,7 +187,7 @@ public class Condition implements Comparable<Condition> {
|
||||
if (plugin.getDependencies().getVaultPermission().has(player, p)) {
|
||||
return plugin.getDependencies().getVaultPermission().has(player, p);
|
||||
} else if (plugin.getSettings().getConsoleLogging() > 2) {
|
||||
plugin.getLogger().info("DEBUG: Condition permission mismatch for " + player.getName() + ": " + p);
|
||||
plugin.getLogger().info("DEBUG: ICondition permission mismatch for " + player.getName() + ": " + p);
|
||||
}
|
||||
} else {
|
||||
plugin.getLogger().warning("Vault must be installed for condition permission checks: " + p);
|
||||
@ -175,7 +198,7 @@ public class Condition implements Comparable<Condition> {
|
||||
if (ItemUtil.compareItems(player.getItemInHand(), is, true, true) == 0) {
|
||||
return true;
|
||||
} else if (plugin.getSettings().getConsoleLogging() > 2) {
|
||||
plugin.getLogger().info("DEBUG: Condition item mismatch for " + player.getName() + ": code "
|
||||
plugin.getLogger().info("DEBUG: ICondition item mismatch for " + player.getName() + ": code "
|
||||
+ ItemUtil.compareItems(player.getItemInHand(), is, true, true));
|
||||
}
|
||||
}
|
||||
@ -184,7 +207,7 @@ public class Condition implements Comparable<Condition> {
|
||||
if (player.getWorld().getName().equalsIgnoreCase(w)) {
|
||||
return true;
|
||||
} else if (plugin.getSettings().getConsoleLogging() > 2) {
|
||||
plugin.getLogger().info("DEBUG: Condition world mismatch for " + player.getName() + ": " + w);
|
||||
plugin.getLogger().info("DEBUG: ICondition world mismatch for " + player.getName() + ": " + w);
|
||||
}
|
||||
}
|
||||
} else if (!biomesWhileStayingWithin.isEmpty()) {
|
||||
@ -196,7 +219,7 @@ public class Condition implements Comparable<Condition> {
|
||||
.name().equalsIgnoreCase(Objects.requireNonNull(MiscUtil.getProperBiome(b)).name())) {
|
||||
return true;
|
||||
} else if (plugin.getSettings().getConsoleLogging() > 2) {
|
||||
plugin.getLogger().info("DEBUG: Condition biome mismatch for " + player.getName() + ": "
|
||||
plugin.getLogger().info("DEBUG: ICondition biome mismatch for " + player.getName() + ": "
|
||||
+ MiscUtil.getProperBiome(b));
|
||||
}
|
||||
}
|
||||
@ -205,7 +228,7 @@ public class Condition implements Comparable<Condition> {
|
||||
if (quester.isInRegion(r)) {
|
||||
return true;
|
||||
} else if (plugin.getSettings().getConsoleLogging() > 2) {
|
||||
plugin.getLogger().info("DEBUG: Condition region mismatch for " + player.getName() + ": " + r);
|
||||
plugin.getLogger().info("DEBUG: ICondition region mismatch for " + player.getName() + ": " + r);
|
||||
}
|
||||
}
|
||||
} else if (!placeholdersCheckIdentifier.isEmpty()) {
|
||||
@ -216,7 +239,7 @@ public class Condition implements Comparable<Condition> {
|
||||
placeholdersCheckValue.get(index).equals(PlaceholderAPI.setPlaceholders(player, i))) {
|
||||
return true;
|
||||
} else if (plugin.getSettings().getConsoleLogging() > 2) {
|
||||
plugin.getLogger().info("DEBUG: Condition placeholder mismatch for " + player.getName() + ": " + i);
|
||||
plugin.getLogger().info("DEBUG: ICondition placeholder mismatch for " + player.getName() + ": " + i);
|
||||
}
|
||||
} else {
|
||||
plugin.getLogger().warning("PAPI must be installed for placeholder checks: " + i);
|
@ -12,11 +12,10 @@
|
||||
|
||||
package me.blackvein.quests.convo.actions.main;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.QuestMob;
|
||||
import me.blackvein.quests.actions.IAction;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.Stage;
|
||||
import me.blackvein.quests.actions.Action;
|
||||
import me.blackvein.quests.quests.IStage;
|
||||
import me.blackvein.quests.convo.QuestsNumericPrompt;
|
||||
import me.blackvein.quests.convo.actions.ActionsEditorNumericPrompt;
|
||||
import me.blackvein.quests.convo.actions.ActionsEditorStringPrompt;
|
||||
@ -25,6 +24,7 @@ import me.blackvein.quests.convo.actions.tasks.PlayerPrompt;
|
||||
import me.blackvein.quests.convo.actions.tasks.TimerPrompt;
|
||||
import me.blackvein.quests.convo.actions.tasks.WeatherPrompt;
|
||||
import me.blackvein.quests.convo.generic.ItemStackPrompt;
|
||||
import me.blackvein.quests.entity.BukkitQuestMob;
|
||||
import me.blackvein.quests.events.editor.actions.ActionsEditorPostOpenNumericPromptEvent;
|
||||
import me.blackvein.quests.events.editor.actions.ActionsEditorPostOpenStringPromptEvent;
|
||||
import me.blackvein.quests.util.CK;
|
||||
@ -117,7 +117,7 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
return ChatColor.YELLOW + Lang.get("stageEditorDenizenScript");
|
||||
}
|
||||
case 8:
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorFailQuest") + ":";
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorFailQuest");
|
||||
case 9:
|
||||
return ChatColor.GREEN + Lang.get("save");
|
||||
case 10:
|
||||
@ -147,7 +147,7 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
final StringBuilder text = new StringBuilder();
|
||||
if (types != null) {
|
||||
for (final String s : types) {
|
||||
final QuestMob qm = QuestMob.fromString(s);
|
||||
final BukkitQuestMob qm = BukkitQuestMob.fromString(s);
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA)
|
||||
.append(qm.getType().name())
|
||||
.append((qm.getName() != null) ? " (" + qm.getName() + ")" : "").append(ChatColor.GRAY)
|
||||
@ -173,7 +173,8 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
if (context.getSessionData(CK.E_FAIL_QUEST) == null) {
|
||||
context.setSessionData(CK.E_FAIL_QUEST, Lang.get("noWord"));
|
||||
}
|
||||
return "" + ChatColor.AQUA + context.getSessionData(CK.E_FAIL_QUEST);
|
||||
return ChatColor.GRAY + "(" + ChatColor.AQUA + context.getSessionData(CK.E_FAIL_QUEST) + ChatColor.GRAY
|
||||
+ ")";
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
@ -181,7 +182,8 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
|
||||
@Override
|
||||
public @NotNull String getBasicPromptText(final @NotNull ConversationContext context) {
|
||||
final ActionsEditorPostOpenNumericPromptEvent event = new ActionsEditorPostOpenNumericPromptEvent(context, this);
|
||||
final ActionsEditorPostOpenNumericPromptEvent event
|
||||
= new ActionsEditorPostOpenNumericPromptEvent(context, this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
final StringBuilder text = new StringBuilder(ChatColor.GOLD + "- " + getTitle(context).replaceFirst(": ", ": "
|
||||
@ -271,7 +273,7 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
return null;
|
||||
}
|
||||
if (!input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
if (a.getName().equalsIgnoreCase(input)) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("eventEditorExists"));
|
||||
return new ActionNamePrompt(context);
|
||||
@ -352,7 +354,7 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
final StringBuilder text = new StringBuilder();
|
||||
if (types != null) {
|
||||
for (final String type : types) {
|
||||
final QuestMob qm = QuestMob.fromString(type);
|
||||
final BukkitQuestMob qm = BukkitQuestMob.fromString(type);
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA)
|
||||
.append(qm.getType().name())
|
||||
.append((qm.getName() != null) ? " (" + qm.getName() + ")" : "")
|
||||
@ -376,11 +378,11 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
= new ActionsEditorPostOpenNumericPromptEvent(context, this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
final StringBuilder text = new StringBuilder(ChatColor.GOLD + getTitle(context) + "\n");
|
||||
final StringBuilder text = new StringBuilder(ChatColor.GOLD + getTitle(context));
|
||||
for (int i = 1; i <= size; i++) {
|
||||
text.append(getNumberColor(context, i)).append(ChatColor.BOLD).append(i).append(ChatColor.RESET)
|
||||
.append(" - ").append(getSelectionText(context, i)).append(" ")
|
||||
.append(getAdditionalText(context, i)).append("\n");
|
||||
text.append("\n").append(getNumberColor(context, i)).append(ChatColor.BOLD).append(i)
|
||||
.append(ChatColor.RESET).append(" - ").append(getSelectionText(context, i)).append(" ")
|
||||
.append(getAdditionalText(context, i));
|
||||
}
|
||||
return text.toString();
|
||||
}
|
||||
@ -404,11 +406,11 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
|
||||
public class ActionMobPrompt extends ActionsEditorNumericPrompt {
|
||||
|
||||
private QuestMob questMob;
|
||||
private BukkitQuestMob questMob;
|
||||
private Integer itemIndex = -1;
|
||||
private final Integer mobIndex;
|
||||
|
||||
public ActionMobPrompt(final ConversationContext context, final int mobIndex, final QuestMob questMob) {
|
||||
public ActionMobPrompt(final ConversationContext context, final int mobIndex, final BukkitQuestMob questMob) {
|
||||
super(context);
|
||||
this.questMob = questMob;
|
||||
this.mobIndex = mobIndex;
|
||||
@ -498,46 +500,46 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
switch (number) {
|
||||
case 1:
|
||||
return "(" + (questMob.getName() == null ? Lang.get("noneSet") : ChatColor.AQUA + questMob.getName())
|
||||
+ ChatColor.GRAY + ")\n";
|
||||
+ ChatColor.GRAY + ")";
|
||||
case 2:
|
||||
return "(" + (questMob.getType() == null ? Lang.get("noneSet") : ChatColor.AQUA
|
||||
+ questMob.getType().name()) + ChatColor.GRAY + ")\n";
|
||||
+ questMob.getType().name()) + ChatColor.GRAY + ")";
|
||||
case 3:
|
||||
return "(" + (questMob.getSpawnLocation() == null ? ChatColor.GRAY + Lang.get("noneSet") : ChatColor.AQUA
|
||||
+ ConfigUtil.getLocationInfo(questMob.getSpawnLocation())) + ChatColor.GRAY + ")\n";
|
||||
+ ConfigUtil.getLocationInfo(questMob.getSpawnLocation())) + ChatColor.GRAY + ")";
|
||||
case 4:
|
||||
return "(" + (questMob.getSpawnAmounts() == null ? ChatColor.GRAY + Lang.get("noneSet") : ChatColor.AQUA
|
||||
+ "" + questMob.getSpawnAmounts()) + ChatColor.GRAY + ")\n";
|
||||
+ "" + questMob.getSpawnAmounts()) + ChatColor.GRAY + ")";
|
||||
case 5:
|
||||
return "(" + (questMob.getInventory()[0] == null ? ChatColor.GRAY + Lang.get("noneSet") : ChatColor.AQUA
|
||||
+ ItemUtil.getDisplayString(questMob.getInventory()[0])) + ChatColor.GRAY + ")\n";
|
||||
+ ItemUtil.getDisplayString(questMob.getInventory()[0])) + ChatColor.GRAY + ")";
|
||||
case 6:
|
||||
return "(" + (questMob.getDropChances()[0] == null ? ChatColor.GRAY + Lang.get("noneSet") : ChatColor.AQUA
|
||||
+ "" + questMob.getDropChances()[0]) + ChatColor.GRAY + ")\n";
|
||||
+ "" + questMob.getDropChances()[0]) + ChatColor.GRAY + ")";
|
||||
case 7:
|
||||
return "(" + (questMob.getInventory()[1] == null ? ChatColor.GRAY + Lang.get("noneSet") : ChatColor.AQUA
|
||||
+ ItemUtil.getDisplayString(questMob.getInventory()[1])) + ChatColor.GRAY + ")\n";
|
||||
+ ItemUtil.getDisplayString(questMob.getInventory()[1])) + ChatColor.GRAY + ")";
|
||||
case 8:
|
||||
return "(" + (questMob.getDropChances()[1] == null ? ChatColor.GRAY + Lang.get("noneSet") : ChatColor.AQUA
|
||||
+ "" + questMob.getDropChances()[1]) + ChatColor.GRAY + ")\n";
|
||||
+ "" + questMob.getDropChances()[1]) + ChatColor.GRAY + ")";
|
||||
case 9:
|
||||
return "(" + (questMob.getInventory()[2] == null ? ChatColor.GRAY + Lang.get("noneSet") : ChatColor.AQUA
|
||||
+ ItemUtil.getDisplayString(questMob.getInventory()[2])) + ChatColor.GRAY + ")\n";
|
||||
+ ItemUtil.getDisplayString(questMob.getInventory()[2])) + ChatColor.GRAY + ")";
|
||||
case 10:
|
||||
return "(" + (questMob.getDropChances()[2] == null ? ChatColor.GRAY + Lang.get("noneSet") : ChatColor.AQUA
|
||||
+ "" + questMob.getDropChances()[2]) + ChatColor.GRAY + ")\n";
|
||||
+ "" + questMob.getDropChances()[2]) + ChatColor.GRAY + ")";
|
||||
case 11:
|
||||
return "(" + (questMob.getInventory()[3] == null ? ChatColor.GRAY + Lang.get("noneSet") : ChatColor.AQUA
|
||||
+ ItemUtil.getDisplayString(questMob.getInventory()[3])) + ChatColor.GRAY + ")\n";
|
||||
+ ItemUtil.getDisplayString(questMob.getInventory()[3])) + ChatColor.GRAY + ")";
|
||||
case 12:
|
||||
return "(" + (questMob.getDropChances()[3] == null ? ChatColor.GRAY + Lang.get("noneSet") : ChatColor.AQUA
|
||||
+ "" + questMob.getDropChances()[3]) + ChatColor.GRAY + ")\n";
|
||||
+ "" + questMob.getDropChances()[3]) + ChatColor.GRAY + ")";
|
||||
case 13:
|
||||
return "(" + (questMob.getInventory()[4] == null ? ChatColor.GRAY + Lang.get("noneSet") : ChatColor.AQUA
|
||||
+ ItemUtil.getDisplayString(questMob.getInventory()[4])) + ChatColor.GRAY + ")\n";
|
||||
+ ItemUtil.getDisplayString(questMob.getInventory()[4])) + ChatColor.GRAY + ")";
|
||||
case 14:
|
||||
return "(" + (questMob.getDropChances()[4] == null ? ChatColor.GRAY + Lang.get("noneSet") : ChatColor.AQUA
|
||||
+ "" + questMob.getDropChances()[4]) + ChatColor.GRAY + ")\n";
|
||||
+ "" + questMob.getDropChances()[4]) + ChatColor.GRAY + ")";
|
||||
case 15:
|
||||
case 16:
|
||||
return "";
|
||||
@ -549,7 +551,7 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
@Override
|
||||
public @NotNull String getBasicPromptText(final @NotNull ConversationContext context) {
|
||||
if (questMob == null) {
|
||||
questMob = new QuestMob();
|
||||
questMob = new BukkitQuestMob();
|
||||
}
|
||||
// Check/add newly made item
|
||||
if (context.getSessionData("tempStack") != null) {
|
||||
@ -564,11 +566,11 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
= new ActionsEditorPostOpenNumericPromptEvent(context, this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
final StringBuilder text = new StringBuilder(ChatColor.GOLD + getTitle(context) + "\n");
|
||||
final StringBuilder text = new StringBuilder(ChatColor.GOLD + getTitle(context));
|
||||
for (int i = 1; i <= size; i++) {
|
||||
text.append(getNumberColor(context, i)).append(ChatColor.BOLD).append(i).append(ChatColor.RESET)
|
||||
.append(" - ").append(getSelectionText(context, i)).append(ChatColor.GRAY).append(" ")
|
||||
.append(getAdditionalText(context, i)).append("\n");
|
||||
text.append("\n").append(getNumberColor(context, i)).append(ChatColor.BOLD).append(i)
|
||||
.append(ChatColor.RESET).append(" - ").append(getSelectionText(context, i))
|
||||
.append(ChatColor.GRAY).append(" ").append(getAdditionalText(context, i));
|
||||
}
|
||||
return text.toString();
|
||||
}
|
||||
@ -656,10 +658,10 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
|
||||
public class ActionMobNamePrompt extends ActionsEditorStringPrompt {
|
||||
|
||||
private final QuestMob questMob;
|
||||
private final BukkitQuestMob questMob;
|
||||
private final Integer mobIndex;
|
||||
|
||||
public ActionMobNamePrompt(final ConversationContext context, final int mobIndex, final QuestMob questMob) {
|
||||
public ActionMobNamePrompt(final ConversationContext context, final int mobIndex, final BukkitQuestMob questMob) {
|
||||
super(context);
|
||||
this.questMob = questMob;
|
||||
this.mobIndex = mobIndex;
|
||||
@ -677,7 +679,8 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
|
||||
@Override
|
||||
public @NotNull String getPromptText(final @NotNull ConversationContext context) {
|
||||
final ActionsEditorPostOpenStringPromptEvent event = new ActionsEditorPostOpenStringPromptEvent(context, this);
|
||||
final ActionsEditorPostOpenStringPromptEvent event
|
||||
= new ActionsEditorPostOpenStringPromptEvent(context, this);
|
||||
if (context.getPlugin() != null) {
|
||||
context.getPlugin().getServer().getPluginManager().callEvent(event);
|
||||
}
|
||||
@ -705,10 +708,10 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
|
||||
public class ActionMobTypePrompt extends ActionsEditorStringPrompt {
|
||||
|
||||
private final QuestMob questMob;
|
||||
private final BukkitQuestMob questMob;
|
||||
private final Integer mobIndex;
|
||||
|
||||
public ActionMobTypePrompt(final ConversationContext context, final int mobIndex, final QuestMob questMob) {
|
||||
public ActionMobTypePrompt(final ConversationContext context, final int mobIndex, final BukkitQuestMob questMob) {
|
||||
super(context);
|
||||
this.questMob = questMob;
|
||||
this.mobIndex = mobIndex;
|
||||
@ -731,7 +734,7 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
if (context.getPlugin() != null) {
|
||||
context.getPlugin().getServer().getPluginManager().callEvent(event);
|
||||
}
|
||||
|
||||
|
||||
final StringBuilder mobs = new StringBuilder(ChatColor.LIGHT_PURPLE + getTitle(context) + "\n");
|
||||
final EntityType[] mobArr = EntityType.values();
|
||||
for (int i = 0; i < mobArr.length; i++) {
|
||||
@ -768,10 +771,10 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
|
||||
public class ActionMobAmountPrompt extends ActionsEditorStringPrompt {
|
||||
|
||||
private final QuestMob questMob;
|
||||
private final BukkitQuestMob questMob;
|
||||
private final Integer mobIndex;
|
||||
|
||||
public ActionMobAmountPrompt(final ConversationContext context, final int mobIndex, final QuestMob questMob) {
|
||||
public ActionMobAmountPrompt(final ConversationContext context, final int mobIndex, final BukkitQuestMob questMob) {
|
||||
super(context);
|
||||
this.questMob = questMob;
|
||||
this.mobIndex = mobIndex;
|
||||
@ -825,10 +828,10 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
|
||||
public class ActionMobLocationPrompt extends ActionsEditorStringPrompt {
|
||||
|
||||
private final QuestMob questMob;
|
||||
private final BukkitQuestMob questMob;
|
||||
private final Integer mobIndex;
|
||||
|
||||
public ActionMobLocationPrompt(final ConversationContext context, final int mobIndex, final QuestMob questMob) {
|
||||
public ActionMobLocationPrompt(final ConversationContext context, final int mobIndex, final BukkitQuestMob questMob) {
|
||||
super(context);
|
||||
this.questMob = questMob;
|
||||
this.mobIndex = mobIndex;
|
||||
@ -887,11 +890,11 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
|
||||
public class ActionMobDropPrompt extends ActionsEditorStringPrompt {
|
||||
|
||||
private final QuestMob questMob;
|
||||
private final BukkitQuestMob questMob;
|
||||
private final Integer mobIndex;
|
||||
private final Integer invIndex;
|
||||
|
||||
public ActionMobDropPrompt(final ConversationContext context, final int invIndex, final int mobIndex, final QuestMob questMob) {
|
||||
public ActionMobDropPrompt(final ConversationContext context, final int invIndex, final int mobIndex, final BukkitQuestMob questMob) {
|
||||
super(context);
|
||||
this.questMob = questMob;
|
||||
this.mobIndex = mobIndex;
|
||||
@ -971,10 +974,11 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
context.getPlugin().getServer().getPluginManager().callEvent(event);
|
||||
}
|
||||
|
||||
final StringBuilder text = new StringBuilder(ChatColor.DARK_AQUA + "- " + getTitle(context) + " -\n");
|
||||
if (plugin.getDependencies().getDenizenApi().getScriptNames() != null) {
|
||||
final StringBuilder text = new StringBuilder(ChatColor.DARK_AQUA + "- " + getTitle(context) + " -");
|
||||
if (plugin.getDependencies().getDenizenApi() != null
|
||||
&& plugin.getDependencies().getDenizenApi().getScriptNames() != null) {
|
||||
for (final String s : plugin.getDependencies().getDenizenApi().getScriptNames()) {
|
||||
text.append(ChatColor.AQUA).append("- ").append(s).append("\n");
|
||||
text.append("\n").append(ChatColor.AQUA).append("- ").append(s);
|
||||
}
|
||||
}
|
||||
return text.toString() + ChatColor.YELLOW + getQueryText(context);
|
||||
@ -1013,8 +1017,8 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
super(context);
|
||||
if (modifiedName != null) {
|
||||
modName = modifiedName;
|
||||
for (final Quest q : plugin.getLoadedQuests()) {
|
||||
for (final Stage s : q.getStages()) {
|
||||
for (final IQuest q : plugin.getLoadedQuests()) {
|
||||
for (final IStage s : q.getStages()) {
|
||||
if (s.getFinishAction() != null && s.getFinishAction().getName() != null) {
|
||||
if (s.getFinishAction().getName().equalsIgnoreCase(modifiedName)) {
|
||||
modified.add(q.getName());
|
||||
@ -1162,7 +1166,8 @@ public class ActionMainPrompt extends ActionsEditorNumericPrompt {
|
||||
|
||||
final StringBuilder text = new StringBuilder(ChatColor.YELLOW + getQueryText(context));
|
||||
for (int i = 1; i <= size; i++) {
|
||||
text.append("\n").append(getNumberColor(context, i)).append(ChatColor.BOLD).append(i).append(ChatColor.RESET).append(" - ").append(getSelectionText(context, i));
|
||||
text.append("\n").append(getNumberColor(context, i)).append(ChatColor.BOLD).append(i)
|
||||
.append(ChatColor.RESET).append(" - ").append(getSelectionText(context, i));
|
||||
}
|
||||
return QuestsNumericPrompt.sendClickableSelection(text.toString(), context);
|
||||
}
|
@ -12,10 +12,10 @@
|
||||
|
||||
package me.blackvein.quests.convo.actions.menu;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.actions.IAction;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.Stage;
|
||||
import me.blackvein.quests.actions.Action;
|
||||
import me.blackvein.quests.quests.IStage;
|
||||
import me.blackvein.quests.convo.QuestsNumericPrompt;
|
||||
import me.blackvein.quests.convo.actions.ActionsEditorNumericPrompt;
|
||||
import me.blackvein.quests.convo.actions.ActionsEditorStringPrompt;
|
||||
@ -28,7 +28,6 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.conversations.Prompt;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.LinkedList;
|
||||
@ -187,7 +186,7 @@ public class ActionMenuPrompt extends ActionsEditorNumericPrompt {
|
||||
}
|
||||
input = input.trim();
|
||||
if (!input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
if (a.getName().equalsIgnoreCase(input)) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("eventEditorExists"));
|
||||
return new ActionSelectCreatePrompt(context);
|
||||
@ -237,7 +236,7 @@ public class ActionMenuPrompt extends ActionsEditorNumericPrompt {
|
||||
final ActionsEditorPostOpenStringPromptEvent event
|
||||
= new ActionsEditorPostOpenStringPromptEvent(context, this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
final List<String> names = plugin.getLoadedActions().stream().map(Action::getName).collect(Collectors.toList());
|
||||
final List<String> names = plugin.getLoadedActions().stream().map(IAction::getName).collect(Collectors.toList());
|
||||
return sendClickableMenu(getTitle(context), names, getQueryText(context), context);
|
||||
}
|
||||
|
||||
@ -247,7 +246,7 @@ public class ActionMenuPrompt extends ActionsEditorNumericPrompt {
|
||||
return null;
|
||||
}
|
||||
if (!input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||
final Action a = plugin.getAction(input);
|
||||
final IAction a = plugin.getAction(input);
|
||||
if (a != null) {
|
||||
context.setSessionData(CK.E_OLD_EVENT, a.getName());
|
||||
context.setSessionData(CK.E_NAME, a.getName());
|
||||
@ -283,7 +282,7 @@ public class ActionMenuPrompt extends ActionsEditorNumericPrompt {
|
||||
final ActionsEditorPostOpenStringPromptEvent event
|
||||
= new ActionsEditorPostOpenStringPromptEvent(context, this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
final List<String> names = plugin.getLoadedActions().stream().map(Action::getName).collect(Collectors.toList());
|
||||
final List<String> names = plugin.getLoadedActions().stream().map(IAction::getName).collect(Collectors.toList());
|
||||
return sendClickableMenu(getTitle(context), names, getQueryText(context), context);
|
||||
}
|
||||
|
||||
@ -294,10 +293,10 @@ public class ActionMenuPrompt extends ActionsEditorNumericPrompt {
|
||||
}
|
||||
if (!input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||
final LinkedList<String> used = new LinkedList<String>();
|
||||
final Action a = plugin.getAction(input);
|
||||
final IAction a = plugin.getAction(input);
|
||||
if (a != null) {
|
||||
for (final Quest quest : plugin.getLoadedQuests()) {
|
||||
for (final Stage stage : quest.getStages()) {
|
||||
for (final IQuest quest : plugin.getLoadedQuests()) {
|
||||
for (final IStage stage : quest.getStages()) {
|
||||
if (stage.getFinishAction() != null
|
||||
&& stage.getFinishAction().getName().equalsIgnoreCase(a.getName())) {
|
||||
used.add(quest.getName());
|
@ -93,15 +93,15 @@ public class EffectPrompt extends ActionsEditorNumericPrompt {
|
||||
if (context.getSessionData(CK.E_EFFECTS) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
final StringBuilder text = new StringBuilder("\n");
|
||||
final StringBuilder text = new StringBuilder();
|
||||
final LinkedList<String> effects = (LinkedList<String>) context.getSessionData(CK.E_EFFECTS);
|
||||
final LinkedList<String> locations
|
||||
= (LinkedList<String>) context.getSessionData(CK.E_EFFECTS_LOCATIONS);
|
||||
if (effects != null && locations != null) {
|
||||
for (final String effect : effects) {
|
||||
text.append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(effect)
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(effect)
|
||||
.append(ChatColor.GRAY).append(" at ").append(ChatColor.DARK_AQUA)
|
||||
.append(locations.get(effects.indexOf(effect))).append("\n");
|
||||
.append(locations.get(effects.indexOf(effect)));
|
||||
}
|
||||
}
|
||||
return text.toString();
|
||||
@ -110,11 +110,11 @@ public class EffectPrompt extends ActionsEditorNumericPrompt {
|
||||
if (context.getSessionData(CK.E_EXPLOSIONS) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
final StringBuilder text = new StringBuilder("\n");
|
||||
final StringBuilder text = new StringBuilder();
|
||||
final LinkedList<String> locations = (LinkedList<String>) context.getSessionData(CK.E_EXPLOSIONS);
|
||||
if (locations != null) {
|
||||
for (final String loc : locations) {
|
||||
text.append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(loc).append("\n");
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(loc);
|
||||
}
|
||||
}
|
||||
return text.toString();
|
||||
@ -221,9 +221,9 @@ public class EffectPrompt extends ActionsEditorNumericPrompt {
|
||||
if (context.getSessionData(CK.E_EFFECTS) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
final StringBuilder text = new StringBuilder("\n");
|
||||
final StringBuilder text = new StringBuilder();
|
||||
for (final String s : (List<String>) Objects.requireNonNull(context.getSessionData(CK.E_EFFECTS))) {
|
||||
text.append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(s).append("\n");
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(s);
|
||||
}
|
||||
return text.toString();
|
||||
}
|
||||
@ -231,10 +231,10 @@ public class EffectPrompt extends ActionsEditorNumericPrompt {
|
||||
if (context.getSessionData(CK.E_EFFECTS_LOCATIONS) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
final StringBuilder text = new StringBuilder("\n");
|
||||
final StringBuilder text = new StringBuilder();
|
||||
for (final String s : (List<String>) Objects.requireNonNull(context
|
||||
.getSessionData(CK.E_EFFECTS_LOCATIONS))) {
|
||||
text.append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(s).append("\n");
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(s);
|
||||
}
|
||||
return text.toString();
|
||||
}
|
||||
@ -335,7 +335,7 @@ public class EffectPrompt extends ActionsEditorNumericPrompt {
|
||||
final ActionsEditorPostOpenStringPromptEvent event
|
||||
= new ActionsEditorPostOpenStringPromptEvent(context, this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
|
||||
final StringBuilder effects = new StringBuilder(ChatColor.LIGHT_PURPLE + getTitle(context) + "\n");
|
||||
final Effect[] values = Effect.values();
|
||||
for (int i = 0; i < values.length; i++) {
|
||||
@ -345,7 +345,7 @@ public class EffectPrompt extends ActionsEditorNumericPrompt {
|
||||
} else {
|
||||
effects.append(MiscUtil.snakeCaseToUpperCamelCase(eff.name())).append("\n");
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return effects.toString() + ChatColor.YELLOW + getQueryText(context);
|
||||
}
|
@ -89,21 +89,21 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
case 1:
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorSetMessage");
|
||||
case 2:
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorClearInv");
|
||||
case 3:
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorSetItems");
|
||||
case 4:
|
||||
case 3:
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorSetPotionEffects");
|
||||
case 5:
|
||||
case 4:
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorSetHunger");
|
||||
case 6:
|
||||
case 5:
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorSetSaturation");
|
||||
case 7:
|
||||
case 6:
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorSetHealth");
|
||||
case 8:
|
||||
case 7:
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorSetTeleport");
|
||||
case 9:
|
||||
case 8:
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorSetCommands");
|
||||
case 9:
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorClearInv");
|
||||
case 10:
|
||||
return ChatColor.GREEN + Lang.get("done");
|
||||
default:
|
||||
@ -122,27 +122,25 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
return ChatColor.GRAY + "(" + ChatColor.AQUA + context.getSessionData(CK.E_MESSAGE) + ChatColor.GRAY + ")";
|
||||
}
|
||||
case 2:
|
||||
return ChatColor.AQUA + "" + context.getSessionData(CK.E_CLEAR_INVENTORY);
|
||||
case 3:
|
||||
if (context.getSessionData(CK.E_ITEMS) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
final StringBuilder text = new StringBuilder("\n");
|
||||
final StringBuilder text = new StringBuilder();
|
||||
final LinkedList<ItemStack> items = (LinkedList<ItemStack>) context.getSessionData(CK.E_ITEMS);
|
||||
if (items != null) {
|
||||
for (final ItemStack is : items) {
|
||||
if (is != null) {
|
||||
text.append(ChatColor.GRAY).append(" - ").append(ItemUtil.getString(is)).append("\n");
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ").append(ItemUtil.getString(is));
|
||||
}
|
||||
}
|
||||
return text.toString();
|
||||
}
|
||||
}
|
||||
case 4:
|
||||
case 3:
|
||||
if (context.getSessionData(CK.E_POTION_TYPES) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
final StringBuilder text = new StringBuilder("\n");
|
||||
final StringBuilder text = new StringBuilder();
|
||||
final LinkedList<String> types = (LinkedList<String>) context.getSessionData(CK.E_POTION_TYPES);
|
||||
final LinkedList<Long> durations = (LinkedList<Long>) context.getSessionData(CK.E_POTION_DURATIONS);
|
||||
final LinkedList<Integer> mags = (LinkedList<Integer>) context.getSessionData(CK.E_POTION_STRENGTH);
|
||||
@ -150,53 +148,56 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
if (types != null && durations != null && mags != null) {
|
||||
for (final String type : types) {
|
||||
index++;
|
||||
text.append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(type)
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(type)
|
||||
.append(ChatColor.DARK_PURPLE).append(" ").append(RomanNumeral.getNumeral(mags
|
||||
.get(index))).append(ChatColor.GRAY).append(" -> ").append(ChatColor.DARK_AQUA)
|
||||
.append(MiscUtil.getTime(durations.get(index) * 50L)).append("\n");
|
||||
.append(MiscUtil.getTime(durations.get(index) * 50L));
|
||||
}
|
||||
}
|
||||
return text.toString();
|
||||
}
|
||||
case 5:
|
||||
case 4:
|
||||
if (context.getSessionData(CK.E_HUNGER) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
return ChatColor.GRAY + "(" + ChatColor.AQUA + context.getSessionData(CK.E_HUNGER) + ChatColor.GRAY
|
||||
+ ")";
|
||||
}
|
||||
case 6:
|
||||
case 5:
|
||||
if (context.getSessionData(CK.E_SATURATION) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
return ChatColor.GRAY + "(" + ChatColor.AQUA + context.getSessionData(CK.E_SATURATION) + ChatColor.GRAY
|
||||
+ ")";
|
||||
}
|
||||
case 7:
|
||||
case 6:
|
||||
if (context.getSessionData(CK.E_HEALTH) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
return ChatColor.GRAY + "(" + ChatColor.AQUA + context.getSessionData(CK.E_HEALTH) + ChatColor.GRAY
|
||||
+ ")";
|
||||
}
|
||||
case 8:
|
||||
case 7:
|
||||
if (context.getSessionData(CK.E_TELEPORT) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
return ChatColor.GRAY + "(" + ChatColor.AQUA + context.getSessionData(CK.E_TELEPORT) + ChatColor.GRAY
|
||||
+ ")";
|
||||
}
|
||||
case 9:
|
||||
case 8:
|
||||
if (context.getSessionData(CK.E_COMMANDS) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
final StringBuilder text = new StringBuilder("\n");
|
||||
final StringBuilder text = new StringBuilder();
|
||||
for (final String s : (LinkedList<String>) Objects.requireNonNull(context
|
||||
.getSessionData(CK.E_COMMANDS))) {
|
||||
text.append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(s).append("\n");
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(s);
|
||||
}
|
||||
return text.toString();
|
||||
}
|
||||
case 9:
|
||||
return ChatColor.GRAY + "(" + ChatColor.AQUA + context.getSessionData(CK.E_CLEAR_INVENTORY) + ChatColor.GRAY
|
||||
+ ")";
|
||||
case 10:
|
||||
return "";
|
||||
default:
|
||||
@ -229,26 +230,16 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
case 1:
|
||||
return new PlayerMessagePrompt(context);
|
||||
case 2:
|
||||
final String s = (String) context.getSessionData(CK.E_CLEAR_INVENTORY);
|
||||
if (s != null) {
|
||||
if (s.equalsIgnoreCase(Lang.get("yesWord"))) {
|
||||
context.setSessionData(CK.E_CLEAR_INVENTORY, Lang.get("noWord"));
|
||||
} else {
|
||||
context.setSessionData(CK.E_CLEAR_INVENTORY, Lang.get("yesWord"));
|
||||
}
|
||||
}
|
||||
return new ActionMainPrompt(context);
|
||||
case 3:
|
||||
return new PlayerItemListPrompt(context);
|
||||
case 3:
|
||||
return new PlayerPotionListPrompt(context);
|
||||
case 4:
|
||||
return new PlayerPotionEffectPrompt(context);
|
||||
case 5:
|
||||
return new PlayerHungerPrompt(context);
|
||||
case 6:
|
||||
case 5:
|
||||
return new PlayerSaturationPrompt(context);
|
||||
case 7:
|
||||
case 6:
|
||||
return new PlayerHealthPrompt(context);
|
||||
case 8:
|
||||
case 7:
|
||||
if (context.getForWhom() instanceof Player) {
|
||||
final Map<UUID, Block> selectedTeleportLocations = plugin.getActionFactory().getSelectedTeleportLocations();
|
||||
selectedTeleportLocations.put(((Player) context.getForWhom()).getUniqueId(), null);
|
||||
@ -258,13 +249,23 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("consoleError"));
|
||||
return new PlayerPrompt(context);
|
||||
}
|
||||
case 9:
|
||||
case 8:
|
||||
if (!plugin.hasLimitedAccess(context.getForWhom())) {
|
||||
return new PlayerCommandsPrompt(context);
|
||||
} else {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("noPermission"));
|
||||
return new PlayerPrompt(context);
|
||||
}
|
||||
case 9:
|
||||
final String s = (String) context.getSessionData(CK.E_CLEAR_INVENTORY);
|
||||
if (s != null) {
|
||||
if (s.equalsIgnoreCase(Lang.get("yesWord"))) {
|
||||
context.setSessionData(CK.E_CLEAR_INVENTORY, Lang.get("noWord"));
|
||||
} else {
|
||||
context.setSessionData(CK.E_CLEAR_INVENTORY, Lang.get("yesWord"));
|
||||
}
|
||||
}
|
||||
return new PlayerPrompt(context);
|
||||
case 10:
|
||||
return new ActionMainPrompt(context);
|
||||
default:
|
||||
@ -364,11 +365,11 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
if (context.getSessionData(CK.E_ITEMS) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
final StringBuilder text = new StringBuilder("\n");
|
||||
final StringBuilder text = new StringBuilder();
|
||||
for (final ItemStack is : (List<ItemStack>) Objects.requireNonNull(context
|
||||
.getSessionData(CK.E_ITEMS))) {
|
||||
text.append(ChatColor.GRAY).append(" - ").append(ItemUtil.getDisplayString(is))
|
||||
.append("\n");
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ")
|
||||
.append(ItemUtil.getDisplayString(is));
|
||||
}
|
||||
return text.toString();
|
||||
}
|
||||
@ -430,9 +431,9 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
}
|
||||
}
|
||||
|
||||
public class PlayerPotionEffectPrompt extends ActionsEditorNumericPrompt {
|
||||
public class PlayerPotionListPrompt extends ActionsEditorNumericPrompt {
|
||||
|
||||
public PlayerPotionEffectPrompt(final ConversationContext context) {
|
||||
public PlayerPotionListPrompt(final ConversationContext context) {
|
||||
super(context);
|
||||
}
|
||||
|
||||
@ -490,10 +491,10 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
if (context.getSessionData(CK.E_POTION_TYPES) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
final StringBuilder text = new StringBuilder("\n");
|
||||
final StringBuilder text = new StringBuilder();
|
||||
for (final String s : (LinkedList<String>) Objects.requireNonNull(context
|
||||
.getSessionData(CK.E_POTION_TYPES))) {
|
||||
text.append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(s).append("\n");
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(s);
|
||||
}
|
||||
return text.toString();
|
||||
}
|
||||
@ -501,11 +502,11 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
if (context.getSessionData(CK.E_POTION_DURATIONS) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
final StringBuilder text = new StringBuilder("\n");
|
||||
final StringBuilder text = new StringBuilder();
|
||||
for (final Long l : (LinkedList<Long>) Objects.requireNonNull(context
|
||||
.getSessionData(CK.E_POTION_DURATIONS))) {
|
||||
text.append(ChatColor.GRAY).append(" - ").append(ChatColor.DARK_AQUA)
|
||||
.append(MiscUtil.getTime(l * 50L)).append("\n");
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.DARK_AQUA)
|
||||
.append(MiscUtil.getTime(l * 50L));
|
||||
}
|
||||
return text.toString();
|
||||
}
|
||||
@ -513,11 +514,11 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
if (context.getSessionData(CK.E_POTION_STRENGTH) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
final StringBuilder text = new StringBuilder("\n");
|
||||
final StringBuilder text = new StringBuilder();
|
||||
for (final int i : (LinkedList<Integer>) Objects.requireNonNull(context
|
||||
.getSessionData(CK.E_POTION_STRENGTH))) {
|
||||
text.append(ChatColor.GRAY).append(" - ").append(ChatColor.DARK_PURPLE).append(i)
|
||||
.append("\n");
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.DARK_PURPLE)
|
||||
.append(i);
|
||||
}
|
||||
return text.toString();
|
||||
}
|
||||
@ -553,7 +554,7 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
case 2:
|
||||
if (context.getSessionData(CK.E_POTION_TYPES) == null) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("eventEditorMustSetPotionTypesFirst"));
|
||||
return new PlayerPotionEffectPrompt(context);
|
||||
return new PlayerPotionListPrompt(context);
|
||||
} else {
|
||||
return new PlayerPotionDurationsPrompt(context);
|
||||
}
|
||||
@ -561,11 +562,11 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
if (context.getSessionData(CK.E_POTION_TYPES) == null) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED
|
||||
+ Lang.get("eventEditorMustSetPotionTypesAndDurationsFirst"));
|
||||
return new PlayerPotionEffectPrompt(context);
|
||||
return new PlayerPotionListPrompt(context);
|
||||
} else if (context.getSessionData(CK.E_POTION_DURATIONS) == null) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED
|
||||
+ Lang.get("eventEditorMustSetPotionDurationsFirst"));
|
||||
return new PlayerPotionEffectPrompt(context);
|
||||
return new PlayerPotionListPrompt(context);
|
||||
} else {
|
||||
return new PlayerPotionMagnitudesPrompt(context);
|
||||
}
|
||||
@ -574,7 +575,7 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
context.setSessionData(CK.E_POTION_TYPES, null);
|
||||
context.setSessionData(CK.E_POTION_DURATIONS, null);
|
||||
context.setSessionData(CK.E_POTION_STRENGTH, null);
|
||||
return new PlayerPotionEffectPrompt(context);
|
||||
return new PlayerPotionListPrompt(context);
|
||||
case 5:
|
||||
final int one;
|
||||
final int two;
|
||||
@ -601,10 +602,10 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
return new ActionMainPrompt(context);
|
||||
} else {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("eventEditorListSizeMismatch"));
|
||||
return new PlayerPotionEffectPrompt(context);
|
||||
return new PlayerPotionListPrompt(context);
|
||||
}
|
||||
default:
|
||||
return new PlayerPotionEffectPrompt(context);
|
||||
return new PlayerPotionListPrompt(context);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -631,9 +632,9 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
= new ActionsEditorPostOpenStringPromptEvent(context, this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
final StringBuilder effs = new StringBuilder(ChatColor.LIGHT_PURPLE + getTitle(context) + "\n");
|
||||
final StringBuilder effs = new StringBuilder(ChatColor.LIGHT_PURPLE + getTitle(context));
|
||||
for (final PotionEffectType pet : PotionEffectType.values()) {
|
||||
effs.append(pet != null ? ChatColor.DARK_PURPLE + pet.getName() + "\n" : "");
|
||||
effs.append(pet != null ? "\n" + ChatColor.DARK_PURPLE + pet.getName() : "");
|
||||
}
|
||||
return effs.toString() + ChatColor.YELLOW + getQueryText(context);
|
||||
}
|
||||
@ -656,7 +657,7 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
}
|
||||
}
|
||||
}
|
||||
return new PlayerPotionEffectPrompt(context);
|
||||
return new PlayerPotionListPrompt(context);
|
||||
}
|
||||
}
|
||||
|
||||
@ -710,7 +711,7 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
}
|
||||
context.setSessionData(CK.E_POTION_DURATIONS, effDurations);
|
||||
}
|
||||
return new PlayerPotionEffectPrompt(context);
|
||||
return new PlayerPotionListPrompt(context);
|
||||
}
|
||||
}
|
||||
|
||||
@ -763,7 +764,7 @@ public class PlayerPrompt extends ActionsEditorNumericPrompt {
|
||||
}
|
||||
context.setSessionData(CK.E_POTION_STRENGTH, magAmounts);
|
||||
}
|
||||
return new PlayerPotionEffectPrompt(context);
|
||||
return new PlayerPotionListPrompt(context);
|
||||
}
|
||||
}
|
||||
|
@ -67,7 +67,7 @@ public class TimerPrompt extends ActionsEditorNumericPrompt {
|
||||
case 1:
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorSetTimer");
|
||||
case 2:
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorCancelTimer") + ":";
|
||||
return ChatColor.YELLOW + Lang.get("eventEditorCancelTimer");
|
||||
case 3:
|
||||
return ChatColor.GREEN + Lang.get("done");
|
||||
default:
|
||||
@ -89,7 +89,8 @@ public class TimerPrompt extends ActionsEditorNumericPrompt {
|
||||
}
|
||||
}
|
||||
case 2:
|
||||
return ChatColor.AQUA + "" + context.getSessionData(CK.E_CANCEL_TIMER);
|
||||
return ChatColor.GRAY + "(" + ChatColor.AQUA + context.getSessionData(CK.E_CANCEL_TIMER) + ChatColor.GRAY
|
||||
+ ")";
|
||||
case 3:
|
||||
return "";
|
||||
default:
|
@ -117,11 +117,11 @@ public class WeatherPrompt extends ActionsEditorNumericPrompt {
|
||||
if (context.getSessionData(CK.E_LIGHTNING) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
final StringBuilder text = new StringBuilder("\n");
|
||||
final StringBuilder text = new StringBuilder();
|
||||
final LinkedList<String> locations = (LinkedList<String>) context.getSessionData(CK.E_LIGHTNING);
|
||||
if (locations != null) {
|
||||
for (final String loc : locations) {
|
||||
text.append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(loc).append("\n");
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(loc);
|
||||
}
|
||||
}
|
||||
return text.toString();
|
||||
@ -315,10 +315,10 @@ public class WeatherPrompt extends ActionsEditorNumericPrompt {
|
||||
= new ActionsEditorPostOpenStringPromptEvent(context, this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
StringBuilder effects = new StringBuilder(ChatColor.LIGHT_PURPLE + getTitle(context) + "\n"
|
||||
StringBuilder effects = new StringBuilder(ChatColor.LIGHT_PURPLE + getTitle(context)
|
||||
+ ChatColor.DARK_PURPLE);
|
||||
for (final World w : plugin.getServer().getWorlds()) {
|
||||
effects.append(w.getName()).append(", ");
|
||||
effects.append("\n").append(w.getName()).append(", ");
|
||||
}
|
||||
effects = new StringBuilder(effects.substring(0, effects.length()));
|
||||
return ChatColor.YELLOW + effects.toString() + getQueryText(context);
|
||||
@ -532,10 +532,10 @@ public class WeatherPrompt extends ActionsEditorNumericPrompt {
|
||||
= new ActionsEditorPostOpenStringPromptEvent(context, this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
|
||||
StringBuilder effects = new StringBuilder(ChatColor.LIGHT_PURPLE + getTitle(context) + "\n"
|
||||
StringBuilder effects = new StringBuilder(ChatColor.LIGHT_PURPLE + getTitle(context)
|
||||
+ ChatColor.DARK_PURPLE);
|
||||
for (final World w : plugin.getServer().getWorlds()) {
|
||||
effects.append(w.getName()).append(", ");
|
||||
effects.append("\n").append(w.getName()).append(", ");
|
||||
}
|
||||
effects = new StringBuilder(effects.substring(0, effects.length()));
|
||||
return ChatColor.YELLOW + effects.toString() + getQueryText(context);
|
@ -12,10 +12,10 @@
|
||||
|
||||
package me.blackvein.quests.convo.conditions.main;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.conditions.ICondition;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.Stage;
|
||||
import me.blackvein.quests.conditions.Condition;
|
||||
import me.blackvein.quests.quests.IStage;
|
||||
import me.blackvein.quests.convo.QuestsNumericPrompt;
|
||||
import me.blackvein.quests.convo.conditions.ConditionsEditorNumericPrompt;
|
||||
import me.blackvein.quests.convo.conditions.ConditionsEditorStringPrompt;
|
||||
@ -204,14 +204,14 @@ public class ConditionMainPrompt extends ConditionsEditorNumericPrompt {
|
||||
return null;
|
||||
}
|
||||
if (!input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||
for (final Condition c : plugin.getLoadedConditions()) {
|
||||
for (final ICondition c : plugin.getLoadedConditions()) {
|
||||
if (c.getName().equalsIgnoreCase(input)) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("conditionEditorExists"));
|
||||
return new ConditionNamePrompt(context);
|
||||
}
|
||||
}
|
||||
final List<String> actionNames = plugin.getConditionFactory().getNamesOfConditionsBeingEdited();
|
||||
if (actionNames.contains(input)) {
|
||||
final List<String> conditionNames = plugin.getConditionFactory().getNamesOfConditionsBeingEdited();
|
||||
if (conditionNames.contains(input)) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questEditorBeingEdited"));
|
||||
return new ConditionNamePrompt(context);
|
||||
}
|
||||
@ -219,10 +219,10 @@ public class ConditionMainPrompt extends ConditionsEditorNumericPrompt {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questEditorInvalidQuestName"));
|
||||
return new ConditionNamePrompt(context);
|
||||
}
|
||||
actionNames.remove((String) context.getSessionData(CK.C_NAME));
|
||||
conditionNames.remove((String) context.getSessionData(CK.C_NAME));
|
||||
context.setSessionData(CK.C_NAME, input);
|
||||
actionNames.add(input);
|
||||
plugin.getConditionFactory().setNamesOfConditionsBeingEdited(actionNames);
|
||||
conditionNames.add(input);
|
||||
plugin.getConditionFactory().setNamesOfConditionsBeingEdited(conditionNames);
|
||||
}
|
||||
return new ConditionMainPrompt(context);
|
||||
}
|
||||
@ -333,11 +333,11 @@ public class ConditionMainPrompt extends ConditionsEditorNumericPrompt {
|
||||
context.getPlugin().getServer().getPluginManager().callEvent(event);
|
||||
}
|
||||
|
||||
final StringBuilder text = new StringBuilder(ChatColor.AQUA + getTitle(context) + "\n");
|
||||
final StringBuilder text = new StringBuilder(ChatColor.AQUA + getTitle(context));
|
||||
for (int i = 1; i <= size; i++) {
|
||||
text.append(getNumberColor(context, i)).append(ChatColor.BOLD).append(i).append(ChatColor.RESET)
|
||||
.append(" - ").append(getSelectionText(context, i)).append(" ")
|
||||
.append(getAdditionalText(context, i)).append("\n");
|
||||
text.append("\n").append(getNumberColor(context, i)).append(ChatColor.BOLD).append(i)
|
||||
.append(ChatColor.RESET).append(" - ").append(getSelectionText(context, i)).append(" ")
|
||||
.append(getAdditionalText(context, i));
|
||||
}
|
||||
return text.toString();
|
||||
}
|
||||
@ -482,8 +482,8 @@ public class ConditionMainPrompt extends ConditionsEditorNumericPrompt {
|
||||
super(context);
|
||||
if (modifiedName != null) {
|
||||
modName = modifiedName;
|
||||
for (final Quest q : plugin.getLoadedQuests()) {
|
||||
for (final Stage s : q.getStages()) {
|
||||
for (final IQuest q : plugin.getLoadedQuests()) {
|
||||
for (final IStage s : q.getStages()) {
|
||||
if (s.getCondition() != null && s.getCondition().getName() != null) {
|
||||
if (s.getCondition().getName().equalsIgnoreCase(modifiedName)) {
|
||||
modified.add(q.getName());
|
@ -12,10 +12,10 @@
|
||||
|
||||
package me.blackvein.quests.convo.conditions.menu;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.conditions.ICondition;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.Stage;
|
||||
import me.blackvein.quests.conditions.Condition;
|
||||
import me.blackvein.quests.quests.IStage;
|
||||
import me.blackvein.quests.convo.QuestsNumericPrompt;
|
||||
import me.blackvein.quests.convo.conditions.ConditionsEditorNumericPrompt;
|
||||
import me.blackvein.quests.convo.conditions.ConditionsEditorStringPrompt;
|
||||
@ -28,7 +28,6 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.conversations.Prompt;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.LinkedList;
|
||||
@ -186,7 +185,7 @@ public class ConditionMenuPrompt extends ConditionsEditorNumericPrompt {
|
||||
}
|
||||
input = input.trim();
|
||||
if (!input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||
for (final Condition c : plugin.getLoadedConditions()) {
|
||||
for (final ICondition c : plugin.getLoadedConditions()) {
|
||||
if (c.getName().equalsIgnoreCase(input)) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("conditionEditorExists"));
|
||||
return new ConditionSelectCreatePrompt(context);
|
||||
@ -236,7 +235,7 @@ public class ConditionMenuPrompt extends ConditionsEditorNumericPrompt {
|
||||
final ConditionsEditorPostOpenStringPromptEvent event
|
||||
= new ConditionsEditorPostOpenStringPromptEvent(context, this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
final List<String> names = plugin.getLoadedConditions().stream().map(Condition::getName).collect(Collectors.toList());
|
||||
final List<String> names = plugin.getLoadedConditions().stream().map(ICondition::getName).collect(Collectors.toList());
|
||||
return sendClickableMenu(getTitle(context), names, getQueryText(context), context);
|
||||
}
|
||||
|
||||
@ -246,7 +245,7 @@ public class ConditionMenuPrompt extends ConditionsEditorNumericPrompt {
|
||||
return null;
|
||||
}
|
||||
if (!input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||
final Condition c = plugin.getCondition(input);
|
||||
final ICondition c = plugin.getCondition(input);
|
||||
if (c != null) {
|
||||
context.setSessionData(CK.C_OLD_CONDITION, c.getName());
|
||||
context.setSessionData(CK.C_NAME, c.getName());
|
||||
@ -282,7 +281,8 @@ public class ConditionMenuPrompt extends ConditionsEditorNumericPrompt {
|
||||
final ConditionsEditorPostOpenStringPromptEvent event
|
||||
= new ConditionsEditorPostOpenStringPromptEvent(context, this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
final List<String> names = plugin.getLoadedConditions().stream().map(Condition::getName).collect(Collectors.toList());
|
||||
final List<String> names = plugin.getLoadedConditions().stream().map(ICondition::getName)
|
||||
.collect(Collectors.toList());
|
||||
return sendClickableMenu(getTitle(context), names, getQueryText(context), context);
|
||||
}
|
||||
|
||||
@ -293,10 +293,10 @@ public class ConditionMenuPrompt extends ConditionsEditorNumericPrompt {
|
||||
}
|
||||
if (!input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||
final LinkedList<String> used = new LinkedList<>();
|
||||
final Condition c = plugin.getCondition(input);
|
||||
final ICondition c = plugin.getCondition(input);
|
||||
if (c != null) {
|
||||
for (final Quest quest : plugin.getLoadedQuests()) {
|
||||
for (final Stage stage : quest.getStages()) {
|
||||
for (final IQuest quest : plugin.getLoadedQuests()) {
|
||||
for (final IStage stage : quest.getStages()) {
|
||||
if (stage.getCondition() != null
|
||||
&& stage.getCondition().getName().equalsIgnoreCase(c.getName())) {
|
||||
used.add(quest.getName());
|
@ -187,7 +187,7 @@ public class EntityPrompt extends QuestsEditorNumericPrompt {
|
||||
= new QuestsEditorPostOpenStringPromptEvent(context, this);
|
||||
context.getPlugin().getServer().getPluginManager().callEvent(event);
|
||||
}
|
||||
|
||||
|
||||
final StringBuilder mobs = new StringBuilder(ChatColor.LIGHT_PURPLE + getTitle(context) + "\n");
|
||||
final List<EntityType> mobArr = new LinkedList<>(Arrays.asList(EntityType.values()));
|
||||
final List<EntityType> toRemove = new LinkedList<>();
|
||||
@ -201,7 +201,7 @@ public class EntityPrompt extends QuestsEditorNumericPrompt {
|
||||
for (int i = 0; i < mobArr.size(); i++) {
|
||||
mobs.append(ChatColor.AQUA).append(MiscUtil.snakeCaseToUpperCamelCase(mobArr.get(i).name()));
|
||||
if (i < (mobArr.size() - 1)) {
|
||||
mobs.append(ChatColor.GRAY).append(", ");
|
||||
mobs.append(ChatColor.GRAY).append(", ");
|
||||
}
|
||||
}
|
||||
mobs.append("\n").append(ChatColor.YELLOW).append(getQueryText(context));
|
||||
@ -266,8 +266,7 @@ public class EntityPrompt extends QuestsEditorNumericPrompt {
|
||||
final Set<UUID> selectingNpcs = plugin.getQuestFactory().getSelectingNpcs();
|
||||
selectingNpcs.add(((Player) context.getForWhom()).getUniqueId());
|
||||
plugin.getQuestFactory().setSelectingNpcs(selectingNpcs);
|
||||
return ChatColor.YELLOW + getQueryText(context) + "\n"
|
||||
+ ChatColor.GOLD + Lang.get("npcHint");
|
||||
return ChatColor.YELLOW + getQueryText(context) + "\n" + ChatColor.GOLD + Lang.get("npcHint");
|
||||
} else {
|
||||
return ChatColor.YELLOW + getQueryText(context);
|
||||
}
|
@ -263,13 +263,13 @@ public class PlayerPrompt extends QuestsEditorNumericPrompt {
|
||||
if (context.getSessionData(CK.C_WHILE_HOLDING_MAIN_HAND) == null) {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
final StringBuilder text = new StringBuilder("\n");
|
||||
final StringBuilder text = new StringBuilder();
|
||||
final List<ItemStack> whileHoldingMainHand
|
||||
= (List<ItemStack>) context.getSessionData(CK.C_WHILE_HOLDING_MAIN_HAND);
|
||||
if (whileHoldingMainHand != null) {
|
||||
for (final ItemStack is : whileHoldingMainHand) {
|
||||
text.append(ChatColor.GRAY).append(" - ").append(ItemUtil.getDisplayString(is))
|
||||
.append("\n");
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ")
|
||||
.append(ItemUtil.getDisplayString(is));
|
||||
}
|
||||
}
|
||||
return text.toString();
|
@ -12,10 +12,11 @@
|
||||
|
||||
package me.blackvein.quests.convo.misc;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.events.misc.MiscPostNpcOfferQuestEvent;
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.util.Lang;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.ComponentBuilder;
|
||||
@ -64,12 +65,12 @@ public class NpcOfferQuestPrompt extends MiscStringPrompt {
|
||||
@SuppressWarnings("unchecked")
|
||||
public ChatColor getNumberColor(final ConversationContext context, final int number) {
|
||||
final Quests plugin = (Quests)context.getPlugin();
|
||||
final LinkedList<Quest> quests = (LinkedList<Quest>) context.getSessionData("npcQuests");
|
||||
final LinkedList<IQuest> quests = (LinkedList<IQuest>) context.getSessionData("npcQuests");
|
||||
if (plugin != null) {
|
||||
final Quester quester = plugin.getQuester(((Player) context.getForWhom()).getUniqueId());
|
||||
final IQuester quester = plugin.getQuester(((Player) context.getForWhom()).getUniqueId());
|
||||
if (quests != null && number > 0) {
|
||||
if (number < (quests.size() + 1)) {
|
||||
final Quest quest = quests.get(number - 1);
|
||||
final IQuest quest = quests.get(number - 1);
|
||||
if (quester.getCompletedQuests().contains(quest)) {
|
||||
return ChatColor.GREEN;
|
||||
} else {
|
||||
@ -87,12 +88,12 @@ public class NpcOfferQuestPrompt extends MiscStringPrompt {
|
||||
@SuppressWarnings("unchecked")
|
||||
public String getSelectionText(final ConversationContext context, final int number) {
|
||||
final Quests plugin = (Quests)context.getPlugin();
|
||||
final LinkedList<Quest> quests = (LinkedList<Quest>) context.getSessionData("npcQuests");
|
||||
final LinkedList<IQuest> quests = (LinkedList<IQuest>) context.getSessionData("npcQuests");
|
||||
if (plugin != null) {
|
||||
final Quester quester = plugin.getQuester(((Player) context.getForWhom()).getUniqueId());
|
||||
final IQuester quester = plugin.getQuester(((Player) context.getForWhom()).getUniqueId());
|
||||
if (quests != null && number > 0) {
|
||||
if (number < (quests.size() + 1)) {
|
||||
final Quest quest = quests.get(number - 1);
|
||||
final IQuest quest = quests.get(number - 1);
|
||||
if (quester.getCompletedQuests().contains(quest)) {
|
||||
return ChatColor.GREEN + "" + ChatColor.ITALIC + quest.getName();
|
||||
} else {
|
||||
@ -109,12 +110,12 @@ public class NpcOfferQuestPrompt extends MiscStringPrompt {
|
||||
@SuppressWarnings("unchecked")
|
||||
public String getAdditionalText(final ConversationContext context, final int number) {
|
||||
final Quests plugin = (Quests)context.getPlugin();
|
||||
final LinkedList<Quest> quests = (LinkedList<Quest>) context.getSessionData("npcQuests");
|
||||
final LinkedList<IQuest> quests = (LinkedList<IQuest>) context.getSessionData("npcQuests");
|
||||
if (plugin != null) {
|
||||
final Quester quester = plugin.getQuester(((Player) context.getForWhom()).getUniqueId());
|
||||
final IQuester quester = plugin.getQuester(((Player) context.getForWhom()).getUniqueId());
|
||||
if (quests != null && number > 0) {
|
||||
if (number < (quests.size() + 1)) {
|
||||
final Quest quest = quests.get(number - 1);
|
||||
final IQuest quest = quests.get(number - 1);
|
||||
if (quester.getCompletedQuests().contains(quest)) {
|
||||
return ChatColor.GREEN + "" + Lang.get("redoCompleted");
|
||||
}
|
||||
@ -179,11 +180,11 @@ public class NpcOfferQuestPrompt extends MiscStringPrompt {
|
||||
@Override
|
||||
public Prompt acceptInput(final ConversationContext context, final String input) {
|
||||
final Quests plugin = (Quests)context.getPlugin();
|
||||
final LinkedList<Quest> quests = (LinkedList<Quest>) context.getSessionData("npcQuests");
|
||||
final LinkedList<IQuest> quests = (LinkedList<IQuest>) context.getSessionData("npcQuests");
|
||||
if (plugin == null || quests == null) {
|
||||
return Prompt.END_OF_CONVERSATION;
|
||||
}
|
||||
final Quester quester = plugin.getQuester(((Player) context.getForWhom()).getUniqueId());
|
||||
final IQuester quester = plugin.getQuester(((Player) context.getForWhom()).getUniqueId());
|
||||
int numInput = -1;
|
||||
try {
|
||||
numInput = Integer.parseInt(input);
|
||||
@ -194,15 +195,15 @@ public class NpcOfferQuestPrompt extends MiscStringPrompt {
|
||||
context.getForWhom().sendRawMessage(ChatColor.YELLOW + Lang.get("cancelled"));
|
||||
return Prompt.END_OF_CONVERSATION;
|
||||
} else {
|
||||
Quest q = null;
|
||||
for (final Quest quest : quests) {
|
||||
IQuest q = null;
|
||||
for (final IQuest quest : quests) {
|
||||
if (quest.getName().equalsIgnoreCase(input)) {
|
||||
q = quest;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (q == null) {
|
||||
for (final Quest quest : quests) {
|
||||
for (final IQuest quest : quests) {
|
||||
if (numInput == (quests.indexOf(quest) + 1)) {
|
||||
q = quest;
|
||||
break;
|
||||
@ -210,7 +211,7 @@ public class NpcOfferQuestPrompt extends MiscStringPrompt {
|
||||
}
|
||||
}
|
||||
if (q == null) {
|
||||
for (final Quest quest : quests) {
|
||||
for (final IQuest quest : quests) {
|
||||
if (quest.getName().toLowerCase().contains(input.toLowerCase())) {
|
||||
q = quest;
|
||||
break;
|
||||
@ -238,8 +239,8 @@ public class NpcOfferQuestPrompt extends MiscStringPrompt {
|
||||
}
|
||||
}
|
||||
|
||||
private String extracted(final Quests plugin, final Quester quester) {
|
||||
final Quest quest = plugin.getQuestById(quester.getQuestIdToTake());
|
||||
private String extracted(final Quests plugin, final IQuester quester) {
|
||||
final IQuest quest = plugin.getQuestById(quester.getQuestIdToTake());
|
||||
return MessageFormat.format("{0}- {1}{2}{3} -\n\n{4}{5}\n", ChatColor.GOLD, ChatColor.DARK_PURPLE,
|
||||
quest.getName(), ChatColor.GOLD, ChatColor.RESET, quest.getDescription());
|
||||
}
|
@ -13,7 +13,7 @@
|
||||
package me.blackvein.quests.convo.quests.main;
|
||||
|
||||
import com.sk89q.worldguard.protection.managers.RegionManager;
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.convo.QuestsNumericPrompt;
|
||||
import me.blackvein.quests.convo.generic.ItemStackPrompt;
|
||||
@ -341,7 +341,7 @@ public class QuestMainPrompt extends QuestsEditorNumericPrompt {
|
||||
return null;
|
||||
}
|
||||
if (!input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||
for (final Quest q : plugin.getLoadedQuests()) {
|
||||
for (final IQuest q : plugin.getLoadedQuests()) {
|
||||
if (q.getName().equalsIgnoreCase(input)) {
|
||||
String s = null;
|
||||
if (context.getSessionData(CK.ED_QUEST_EDIT) != null) {
|
||||
@ -732,7 +732,7 @@ public class QuestMainPrompt extends QuestsEditorNumericPrompt {
|
||||
if (context.getSessionData("tempStack") != null) {
|
||||
final ItemStack stack = (ItemStack) context.getSessionData("tempStack");
|
||||
boolean failed = false;
|
||||
for (final Quest quest : plugin.getLoadedQuests()) {
|
||||
for (final IQuest quest : plugin.getLoadedQuests()) {
|
||||
if (quest.getGUIDisplay() != null) {
|
||||
if (ItemUtil.compareItems(stack, quest.getGUIDisplay(), false) == 0) {
|
||||
String error = Lang.get("questGUIError");
|
@ -12,7 +12,7 @@
|
||||
|
||||
package me.blackvein.quests.convo.quests.menu;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.convo.QuestsNumericPrompt;
|
||||
import me.blackvein.quests.convo.quests.QuestsEditorNumericPrompt;
|
||||
@ -26,7 +26,6 @@ import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.conversations.Prompt;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.LinkedList;
|
||||
@ -170,7 +169,7 @@ public class QuestMenuPrompt extends QuestsEditorNumericPrompt {
|
||||
}
|
||||
input = input.trim();
|
||||
if (!input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||
for (final Quest q : plugin.getLoadedQuests()) {
|
||||
for (final IQuest q : plugin.getLoadedQuests()) {
|
||||
if (q.getName().equalsIgnoreCase(input)) {
|
||||
context.getForWhom().sendRawMessage(ChatColor.RED + Lang.get("questEditorNameExists"));
|
||||
return new QuestSelectCreatePrompt(context);
|
||||
@ -222,7 +221,7 @@ public class QuestMenuPrompt extends QuestsEditorNumericPrompt {
|
||||
final QuestsEditorPostOpenStringPromptEvent event
|
||||
= new QuestsEditorPostOpenStringPromptEvent(context, this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
final List<String> names = plugin.getLoadedQuests().stream().map(Quest::getName).collect(Collectors.toList());
|
||||
final List<String> names = plugin.getLoadedQuests().stream().map(IQuest::getName).collect(Collectors.toList());
|
||||
return sendClickableMenu(getTitle(context), names, getQueryText(context), context);
|
||||
}
|
||||
|
||||
@ -232,7 +231,7 @@ public class QuestMenuPrompt extends QuestsEditorNumericPrompt {
|
||||
return null;
|
||||
}
|
||||
if (!input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||
final Quest q = plugin.getQuest(input);
|
||||
final IQuest q = plugin.getQuest(input);
|
||||
if (q != null) {
|
||||
plugin.getQuestFactory().loadQuest(context, q);
|
||||
return new QuestMainPrompt(context);
|
||||
@ -265,7 +264,7 @@ public class QuestMenuPrompt extends QuestsEditorNumericPrompt {
|
||||
final QuestsEditorPostOpenStringPromptEvent event
|
||||
= new QuestsEditorPostOpenStringPromptEvent(context, this);
|
||||
plugin.getServer().getPluginManager().callEvent(event);
|
||||
final List<String> names = plugin.getLoadedQuests().stream().map(Quest::getName).collect(Collectors.toList());
|
||||
final List<String> names = plugin.getLoadedQuests().stream().map(IQuest::getName).collect(Collectors.toList());
|
||||
return sendClickableMenu(getTitle(context), names, getQueryText(context), context);
|
||||
}
|
||||
|
||||
@ -276,9 +275,9 @@ public class QuestMenuPrompt extends QuestsEditorNumericPrompt {
|
||||
}
|
||||
if (!input.equalsIgnoreCase(Lang.get("cmdCancel"))) {
|
||||
final LinkedList<String> used = new LinkedList<>();
|
||||
final Quest found = plugin.getQuest(input);
|
||||
final IQuest found = plugin.getQuest(input);
|
||||
if (found != null) {
|
||||
for (final Quest q : plugin.getLoadedQuests()) {
|
||||
for (final IQuest q : plugin.getLoadedQuests()) {
|
||||
if (q.getRequirements().getNeededQuests().contains(q)
|
||||
|| q.getRequirements().getBlockQuests().contains(q)) {
|
||||
used.add(q.getName());
|
@ -300,9 +300,10 @@ public class NpcsPrompt extends QuestsEditorNumericPrompt {
|
||||
= (List<Integer>) context.getSessionData(pref + CK.S_DELIVERY_NPCS);
|
||||
if (deliveryNpcs != null) {
|
||||
for (final int i : deliveryNpcs) {
|
||||
text.append(")\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(i)
|
||||
.append(" (").append(plugin.getDependencies().getCitizens().getNPCRegistry()
|
||||
.getById(i).getName());
|
||||
text.append("\n").append(ChatColor.GRAY).append(" - ").append(ChatColor.AQUA).append(i)
|
||||
.append(ChatColor.GRAY).append(" (").append(ChatColor.AQUA)
|
||||
.append(plugin.getDependencies().getCitizens().getNPCRegistry()
|
||||
.getById(i).getName()).append(ChatColor.GRAY).append(")");
|
||||
}
|
||||
}
|
||||
return text.toString();
|
@ -12,7 +12,7 @@
|
||||
|
||||
package me.blackvein.quests.convo.quests.options;
|
||||
|
||||
import me.blackvein.quests.Options;
|
||||
import me.blackvein.quests.quests.BukkitOptions;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.convo.quests.QuestsEditorNumericPrompt;
|
||||
import me.blackvein.quests.convo.quests.QuestsEditorStringPrompt;
|
||||
@ -459,7 +459,7 @@ public class OptionsPrompt extends QuestsEditorNumericPrompt {
|
||||
case 1:
|
||||
final Boolean commandsOpt = (Boolean) context.getSessionData(CK.OPT_ALLOW_COMMANDS);
|
||||
if (commandsOpt == null) {
|
||||
final boolean defaultOpt = new Options().canAllowCommands();
|
||||
final boolean defaultOpt = new BukkitOptions().canAllowCommands();
|
||||
return ChatColor.GRAY + "(" + (defaultOpt ? ChatColor.GREEN
|
||||
+ Lang.get(String.valueOf(defaultOpt)) : ChatColor.RED
|
||||
+ Lang.get(String.valueOf(defaultOpt))) + ChatColor.GRAY + ")";
|
||||
@ -471,7 +471,7 @@ public class OptionsPrompt extends QuestsEditorNumericPrompt {
|
||||
case 2:
|
||||
final Boolean quittingOpt = (Boolean) context.getSessionData(CK.OPT_ALLOW_QUITTING);
|
||||
if (quittingOpt == null) {
|
||||
final boolean defaultOpt = new Options().canAllowQuitting();
|
||||
final boolean defaultOpt = new BukkitOptions().canAllowQuitting();
|
||||
return ChatColor.GRAY + "(" + (defaultOpt ? ChatColor.GREEN
|
||||
+ Lang.get(String.valueOf(defaultOpt)) : ChatColor.RED
|
||||
+ Lang.get(String.valueOf(defaultOpt))) + ChatColor.GRAY + ")";
|
||||
@ -483,7 +483,7 @@ public class OptionsPrompt extends QuestsEditorNumericPrompt {
|
||||
case 3:
|
||||
final Boolean ignoreOpt = (Boolean) context.getSessionData(CK.OPT_IGNORE_SILK_TOUCH);
|
||||
if (ignoreOpt == null) {
|
||||
final boolean defaultOpt = new Options().canIgnoreSilkTouch();
|
||||
final boolean defaultOpt = new BukkitOptions().canIgnoreSilkTouch();
|
||||
return ChatColor.GRAY + "(" + (defaultOpt ? ChatColor.GREEN
|
||||
+ Lang.get(String.valueOf(defaultOpt)) : ChatColor.RED
|
||||
+ Lang.get(String.valueOf(defaultOpt))) + ChatColor.GRAY + ")";
|
||||
@ -617,7 +617,7 @@ public class OptionsPrompt extends QuestsEditorNumericPrompt {
|
||||
case 2:
|
||||
final Boolean partiesOpt = (Boolean) context.getSessionData(CK.OPT_USE_PARTIES_PLUGIN);
|
||||
if (partiesOpt == null) {
|
||||
final boolean defaultOpt = new Options().canUsePartiesPlugin();
|
||||
final boolean defaultOpt = new BukkitOptions().canUsePartiesPlugin();
|
||||
return ChatColor.GRAY + "("+ (defaultOpt ? ChatColor.GREEN
|
||||
+ Lang.get(String.valueOf(defaultOpt)) : ChatColor.RED
|
||||
+ Lang.get(String.valueOf(defaultOpt))) + ChatColor.GRAY + ")";
|
||||
@ -629,7 +629,7 @@ public class OptionsPrompt extends QuestsEditorNumericPrompt {
|
||||
case 3:
|
||||
final Integer shareOpt = (Integer) context.getSessionData(CK.OPT_SHARE_PROGRESS_LEVEL);
|
||||
if (shareOpt == null) {
|
||||
final int defaultOpt = new Options().getShareProgressLevel();
|
||||
final int defaultOpt = new BukkitOptions().getShareProgressLevel();
|
||||
return ChatColor.GRAY + "(" + ChatColor.AQUA + defaultOpt + ChatColor.GRAY + ")";
|
||||
} else {
|
||||
return ChatColor.GRAY + "(" + ChatColor.AQUA + shareOpt + ChatColor.GRAY + ")";
|
||||
@ -637,7 +637,7 @@ public class OptionsPrompt extends QuestsEditorNumericPrompt {
|
||||
case 4:
|
||||
final Boolean requireOpt = (Boolean) context.getSessionData(CK.OPT_SHARE_SAME_QUEST_ONLY);
|
||||
if (requireOpt == null) {
|
||||
final boolean defaultOpt = new Options().canShareSameQuestOnly();
|
||||
final boolean defaultOpt = new BukkitOptions().canShareSameQuestOnly();
|
||||
return ChatColor.GRAY + "(" + (defaultOpt ? ChatColor.GREEN
|
||||
+ Lang.get(String.valueOf(defaultOpt)) : ChatColor.RED
|
||||
+ Lang.get(String.valueOf(defaultOpt))) + ChatColor.GRAY + ")";
|
||||
@ -649,7 +649,7 @@ public class OptionsPrompt extends QuestsEditorNumericPrompt {
|
||||
case 5:
|
||||
final Double distanceOpt = (Double) context.getSessionData(CK.OPT_SHARE_DISTANCE);
|
||||
if (distanceOpt == null) {
|
||||
final double defaultOpt = new Options().getShareDistance();
|
||||
final double defaultOpt = new BukkitOptions().getShareDistance();
|
||||
return ChatColor.GRAY + "(" + ChatColor.AQUA + defaultOpt + ChatColor.GRAY + ")";
|
||||
} else {
|
||||
return ChatColor.GRAY + "(" + ChatColor.AQUA + distanceOpt + ChatColor.GRAY + ")";
|
||||
@ -657,7 +657,7 @@ public class OptionsPrompt extends QuestsEditorNumericPrompt {
|
||||
case 6:
|
||||
final Boolean handleOpt = (Boolean) context.getSessionData(CK.OPT_HANDLE_OFFLINE_PLAYERS);
|
||||
if (handleOpt == null) {
|
||||
final boolean defaultOpt = new Options().canHandleOfflinePlayers();
|
||||
final boolean defaultOpt = new BukkitOptions().canHandleOfflinePlayers();
|
||||
return ChatColor.GRAY + "("+ (defaultOpt ? ChatColor.GREEN
|
||||
+ Lang.get(String.valueOf(defaultOpt)) : ChatColor.RED
|
||||
+ Lang.get(String.valueOf(defaultOpt))) + ChatColor.GRAY + ")";
|
@ -12,7 +12,7 @@
|
||||
|
||||
package me.blackvein.quests.convo.quests.planner;
|
||||
|
||||
import me.blackvein.quests.Planner;
|
||||
import me.blackvein.quests.quests.BukkitPlanner;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.convo.quests.QuestsEditorNumericPrompt;
|
||||
import me.blackvein.quests.convo.quests.QuestsEditorStringPrompt;
|
||||
@ -139,7 +139,7 @@ public class PlannerPrompt extends QuestsEditorNumericPrompt {
|
||||
case 5:
|
||||
final Boolean override = (Boolean) context.getSessionData(CK.PLN_OVERRIDE);
|
||||
if (override == null) {
|
||||
final boolean defaultOpt = new Planner().getOverride();
|
||||
final boolean defaultOpt = new BukkitPlanner().getOverride();
|
||||
return ChatColor.GRAY + "(" + (defaultOpt ? ChatColor.GREEN
|
||||
+ Lang.get(String.valueOf(defaultOpt)) : ChatColor.RED
|
||||
+ Lang.get(String.valueOf(defaultOpt))) + ChatColor.GRAY + ")";
|
@ -14,10 +14,8 @@ package me.blackvein.quests.convo.quests.requirements;
|
||||
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.herocraftonline.heroes.characters.classes.HeroClass;
|
||||
import me.blackvein.quests.CustomObjective;
|
||||
import me.blackvein.quests.CustomRequirement;
|
||||
import me.blackvein.quests.CustomReward;
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.convo.generic.ItemStackPrompt;
|
||||
import me.blackvein.quests.convo.generic.OverridePrompt;
|
||||
@ -175,8 +173,8 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
|
||||
return ChatColor.GRAY + "(" + Lang.get("noneSet") + ")";
|
||||
} else {
|
||||
return ChatColor.GRAY + "(" + ChatColor.AQUA + moneyReq + " "
|
||||
+ (moneyReq > 1 ? plugin.getDependencies().getCurrency(true)
|
||||
: plugin.getDependencies().getCurrency(false)) + ChatColor.GRAY + ")";
|
||||
+ (moneyReq > 1 ? plugin.getDependencies().getVaultEconomy().currencyNamePlural()
|
||||
: plugin.getDependencies().getVaultEconomy().currencyNameSingular() + ChatColor.GRAY + ")");
|
||||
}
|
||||
} else {
|
||||
return ChatColor.GRAY + "(" + Lang.get("notInstalled") + ")";
|
||||
@ -856,7 +854,7 @@ public class RequirementsPrompt extends QuestsEditorNumericPrompt {
|
||||
StringBuilder text = new StringBuilder(ChatColor.LIGHT_PURPLE + getTitle(context) + "\n"
|
||||
+ ChatColor.DARK_PURPLE);
|
||||
boolean none = true;
|
||||
for (final Quest q : plugin.getLoadedQuests()) {
|
||||
for (final IQuest q : plugin.getLoadedQuests()) {
|
||||
text.append(q.getName()).append(", ");
|
||||
none = false;
|
||||
}
|
@ -16,8 +16,6 @@ import com.codisimus.plugins.phatloots.PhatLoot;
|
||||
import com.codisimus.plugins.phatloots.PhatLootsAPI;
|
||||
import com.gmail.nossr50.datatypes.skills.SkillType;
|
||||
import com.herocraftonline.heroes.characters.classes.HeroClass;
|
||||
import me.blackvein.quests.CustomObjective;
|
||||
import me.blackvein.quests.CustomRequirement;
|
||||
import me.blackvein.quests.CustomReward;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.convo.generic.ItemStackPrompt;
|
@ -12,10 +12,10 @@
|
||||
|
||||
package me.blackvein.quests.convo.quests.stages;
|
||||
|
||||
import me.blackvein.quests.CustomObjective;
|
||||
import me.blackvein.quests.actions.IAction;
|
||||
import me.blackvein.quests.conditions.ICondition;
|
||||
import me.blackvein.quests.module.ICustomObjective;
|
||||
import me.blackvein.quests.Quests;
|
||||
import me.blackvein.quests.actions.Action;
|
||||
import me.blackvein.quests.conditions.Condition;
|
||||
import me.blackvein.quests.convo.QuestsNumericPrompt;
|
||||
import me.blackvein.quests.convo.generic.OverridePrompt;
|
||||
import me.blackvein.quests.convo.quests.QuestsEditorNumericPrompt;
|
||||
@ -31,7 +31,6 @@ import me.blackvein.quests.util.ConfigUtil;
|
||||
import me.blackvein.quests.util.Lang;
|
||||
import me.blackvein.quests.util.MiscUtil;
|
||||
import net.md_5.bungee.api.chat.ClickEvent;
|
||||
import net.md_5.bungee.api.chat.HoverEvent;
|
||||
import net.md_5.bungee.api.chat.TextComponent;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
@ -1439,7 +1438,7 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
if (plugin.getLoadedActions().isEmpty()) {
|
||||
text.append(ChatColor.RED).append("- ").append(Lang.get("none")).append("\n");
|
||||
} else {
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
text.append(ChatColor.GREEN).append("- ").append(a.getName()).append("\n");
|
||||
}
|
||||
}
|
||||
@ -1451,8 +1450,8 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
final Player player = (Player) context.getForWhom();
|
||||
if (input != null && !input.equalsIgnoreCase(Lang.get("cmdCancel"))
|
||||
&& !input.equalsIgnoreCase(Lang.get("cmdClear"))) {
|
||||
Action found = null;
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
IAction found = null;
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
if (a.getName().equalsIgnoreCase(input)) {
|
||||
found = a;
|
||||
break;
|
||||
@ -1506,7 +1505,7 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
if (plugin.getLoadedActions().isEmpty()) {
|
||||
text.append(ChatColor.RED).append("- ").append(Lang.get("none"));
|
||||
} else {
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
text.append(ChatColor.GREEN).append("- ").append(a.getName()).append("\n");
|
||||
}
|
||||
}
|
||||
@ -1518,8 +1517,8 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
final Player player = (Player) context.getForWhom();
|
||||
if (input != null && !input.equalsIgnoreCase(Lang.get("cmdCancel"))
|
||||
&& !input.equalsIgnoreCase(Lang.get("cmdClear"))) {
|
||||
Action found = null;
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
IAction found = null;
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
if (a.getName().equalsIgnoreCase(input)) {
|
||||
found = a;
|
||||
break;
|
||||
@ -1573,7 +1572,7 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
if (plugin.getLoadedActions().isEmpty()) {
|
||||
text.append(ChatColor.RED).append("- ").append(Lang.get("none"));
|
||||
} else {
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
text.append(ChatColor.GREEN).append("- ").append(a.getName()).append("\n");
|
||||
}
|
||||
}
|
||||
@ -1585,8 +1584,8 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
final Player player = (Player) context.getForWhom();
|
||||
if (input != null && !input.equalsIgnoreCase(Lang.get("cmdCancel"))
|
||||
&& !input.equalsIgnoreCase(Lang.get("cmdClear"))) {
|
||||
Action found = null;
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
IAction found = null;
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
if (a.getName().equalsIgnoreCase(input)) {
|
||||
found = a;
|
||||
break;
|
||||
@ -1640,7 +1639,7 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
if (plugin.getLoadedActions().isEmpty()) {
|
||||
text.append(ChatColor.RED).append("- ").append(Lang.get("none")).append("\n");
|
||||
} else {
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
text.append(ChatColor.GREEN).append("- ").append(a.getName()).append("\n");
|
||||
}
|
||||
}
|
||||
@ -1652,8 +1651,8 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
final Player player = (Player) context.getForWhom();
|
||||
if (input != null && !input.equalsIgnoreCase(Lang.get("cmdCancel"))
|
||||
&& !input.equalsIgnoreCase(Lang.get("cmdClear"))) {
|
||||
Action found = null;
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
IAction found = null;
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
if (a.getName().equalsIgnoreCase(input)) {
|
||||
found = a;
|
||||
break;
|
||||
@ -1707,7 +1706,7 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
if (plugin.getLoadedActions().isEmpty()) {
|
||||
text.append(ChatColor.RED).append("- ").append(Lang.get("none"));
|
||||
} else {
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
text.append(ChatColor.GREEN).append("- ").append(a.getName()).append("\n");
|
||||
}
|
||||
}
|
||||
@ -1719,8 +1718,8 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
final Player player = (Player) context.getForWhom();
|
||||
if (input != null && !input.equalsIgnoreCase(Lang.get("cmdCancel"))
|
||||
&& !input.equalsIgnoreCase(Lang.get("cmdClear"))) {
|
||||
Action found = null;
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
IAction found = null;
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
if (a.getName().equalsIgnoreCase(input)) {
|
||||
found = a;
|
||||
break;
|
||||
@ -1774,7 +1773,7 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
if (plugin.getLoadedActions().isEmpty()) {
|
||||
text.append(ChatColor.RED).append("- ").append(Lang.get("none"));
|
||||
} else {
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
text.append(ChatColor.GREEN).append("- ").append(a.getName()).append("\n");
|
||||
}
|
||||
}
|
||||
@ -1786,8 +1785,8 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
final Player player = (Player) context.getForWhom();
|
||||
if (input != null && !input.equalsIgnoreCase(Lang.get("cmdCancel"))
|
||||
&& !input.equalsIgnoreCase(Lang.get("cmdClear"))) {
|
||||
Action found = null;
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
IAction found = null;
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
if (a.getName().equalsIgnoreCase(input)) {
|
||||
found = a;
|
||||
break;
|
||||
@ -1916,7 +1915,7 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
if (plugin.getLoadedActions().isEmpty()) {
|
||||
text.append(ChatColor.RED).append("- ").append(Lang.get("none"));
|
||||
} else {
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
text.append(ChatColor.GREEN).append("- ").append(a.getName()).append("\n");
|
||||
}
|
||||
}
|
||||
@ -1928,8 +1927,8 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
final Player player = (Player) context.getForWhom();
|
||||
if (input != null && !input.equalsIgnoreCase(Lang.get("cmdCancel"))
|
||||
&& !input.equalsIgnoreCase(Lang.get("cmdClear"))) {
|
||||
Action found = null;
|
||||
for (final Action a : plugin.getLoadedActions()) {
|
||||
IAction found = null;
|
||||
for (final IAction a : plugin.getLoadedActions()) {
|
||||
if (a.getName().equalsIgnoreCase(input)) {
|
||||
found = a;
|
||||
break;
|
||||
@ -2059,7 +2058,7 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
if (plugin.getLoadedConditions().isEmpty()) {
|
||||
text.append(ChatColor.RED).append("- ").append(Lang.get("none")).append("\n");
|
||||
} else {
|
||||
for (final Condition c : plugin.getLoadedConditions()) {
|
||||
for (final ICondition c : plugin.getLoadedConditions()) {
|
||||
text.append(ChatColor.GREEN).append("- ").append(c.getName()).append("\n");
|
||||
}
|
||||
}
|
||||
@ -2071,8 +2070,8 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
final Player player = (Player) context.getForWhom();
|
||||
if (input != null && !input.equalsIgnoreCase(Lang.get("cmdCancel"))
|
||||
&& !input.equalsIgnoreCase(Lang.get("cmdClear"))) {
|
||||
Condition found = null;
|
||||
for (final Condition c : plugin.getLoadedConditions()) {
|
||||
ICondition found = null;
|
||||
for (final ICondition c : plugin.getLoadedConditions()) {
|
||||
if (c.getName().equalsIgnoreCase(input)) {
|
||||
found = c;
|
||||
break;
|
||||
@ -2396,7 +2395,7 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
text.append(ChatColor.DARK_PURPLE).append("(").append(Lang.get("stageEditorNoModules"))
|
||||
.append(") ");
|
||||
} else {
|
||||
for (final String name : plugin.getCustomObjectives().stream().map(CustomObjective::getModuleName)
|
||||
for (final String name : plugin.getCustomObjectives().stream().map(ICustomObjective::getModuleName)
|
||||
.collect(Collectors.toCollection(TreeSet::new))) {
|
||||
text.append(ChatColor.DARK_PURPLE).append(" - ").append(name).append("\n");
|
||||
}
|
||||
@ -2413,7 +2412,7 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
line.addExtra(link);
|
||||
line.addExtra(ChatColor.DARK_AQUA + "(" + Lang.get("stageEditorNoModules") + ") ");
|
||||
} else {
|
||||
for (final String name : plugin.getCustomObjectives().stream().map(CustomObjective::getModuleName)
|
||||
for (final String name : plugin.getCustomObjectives().stream().map(ICustomObjective::getModuleName)
|
||||
.collect(Collectors.toCollection(TreeSet::new))) {
|
||||
final TextComponent click = new TextComponent(ChatColor.DARK_PURPLE + " - " + name + "\n");
|
||||
click.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, name));
|
||||
@ -2432,7 +2431,7 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
&& !input.equalsIgnoreCase(Lang.get("cmdClear"))) {
|
||||
String found = null;
|
||||
// Check if we have a module with the specified name
|
||||
for (final CustomObjective co : plugin.getCustomObjectives()) {
|
||||
for (final ICustomObjective co : plugin.getCustomObjectives()) {
|
||||
if (co.getModuleName().equalsIgnoreCase(input)) {
|
||||
found = co.getModuleName();
|
||||
break;
|
||||
@ -2440,7 +2439,7 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
}
|
||||
if (found == null) {
|
||||
// No? Check again, but with locale sensitivity
|
||||
for (final CustomObjective co : plugin.getCustomObjectives()) {
|
||||
for (final ICustomObjective co : plugin.getCustomObjectives()) {
|
||||
if (co.getModuleName().toLowerCase().contains(input.toLowerCase())) {
|
||||
found = co.getModuleName();
|
||||
break;
|
||||
@ -2504,7 +2503,7 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
text.append(ChatColor.DARK_PURPLE).append("(").append(Lang.get("stageEditorNoModules"))
|
||||
.append(") ");
|
||||
} else {
|
||||
for (final CustomObjective co : plugin.getCustomObjectives()) {
|
||||
for (final ICustomObjective co : plugin.getCustomObjectives()) {
|
||||
if (co.getModuleName().equals(moduleName)) {
|
||||
text.append(ChatColor.DARK_PURPLE).append(" - ").append(co.getName()).append("\n");
|
||||
}
|
||||
@ -2522,7 +2521,7 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
line.addExtra(link);
|
||||
line.addExtra(ChatColor.DARK_AQUA + "(" + Lang.get("stageEditorNoModules") + ") ");
|
||||
} else {
|
||||
for (final CustomObjective co : plugin.getCustomObjectives()) {
|
||||
for (final ICustomObjective co : plugin.getCustomObjectives()) {
|
||||
if (co.getModuleName().equals(moduleName)) {
|
||||
final TextComponent click = new TextComponent(ChatColor.DARK_PURPLE + " - " + co.getName()
|
||||
+ "\n");
|
||||
@ -2542,8 +2541,8 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
public Prompt acceptInput(final @NotNull ConversationContext context, final String input) {
|
||||
if (input != null && !input.equalsIgnoreCase(Lang.get("cmdCancel"))
|
||||
&& !input.equalsIgnoreCase(Lang.get("cmdClear"))) {
|
||||
CustomObjective found = null;
|
||||
for (final CustomObjective co : plugin.getCustomObjectives()) {
|
||||
ICustomObjective found = null;
|
||||
for (final ICustomObjective co : plugin.getCustomObjectives()) {
|
||||
if (co.getModuleName().equals(moduleName)) {
|
||||
if (co.getName().toLowerCase().contains(input.toLowerCase())) {
|
||||
found = co;
|
||||
@ -2620,8 +2619,8 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
if (list != null && plugin != null) {
|
||||
final String objName = list.getLast();
|
||||
text.append(objName).append(" -\n");
|
||||
CustomObjective found = null;
|
||||
for (final CustomObjective co : plugin.getCustomObjectives()) {
|
||||
ICustomObjective found = null;
|
||||
for (final ICustomObjective co : plugin.getCustomObjectives()) {
|
||||
if (co.getName().equals(objName)) {
|
||||
found = co;
|
||||
break;
|
||||
@ -2646,8 +2645,8 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
if (counts != null && list != null && plugin != null) {
|
||||
counts.set(counts.size() - 1, num);
|
||||
final String objName = list.getLast();
|
||||
CustomObjective found = null;
|
||||
for (final CustomObjective co : plugin.getCustomObjectives()) {
|
||||
ICustomObjective found = null;
|
||||
for (final ICustomObjective co : plugin.getCustomObjectives()) {
|
||||
if (co.getName().equals(objName)) {
|
||||
found = co;
|
||||
break;
|
||||
@ -2683,8 +2682,8 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
+ CK.S_CUSTOM_OBJECTIVES_DATA);
|
||||
if (list != null && plugin != null) {
|
||||
final String objName = list.getLast();
|
||||
CustomObjective found = null;
|
||||
for (final CustomObjective co : plugin.getCustomObjectives()) {
|
||||
ICustomObjective found = null;
|
||||
for (final ICustomObjective co : plugin.getCustomObjectives()) {
|
||||
if (co.getName().equals(objName)) {
|
||||
found = co;
|
||||
break;
|
||||
@ -2727,8 +2726,8 @@ public class StageMainPrompt extends QuestsEditorNumericPrompt {
|
||||
+ CK.S_CUSTOM_OBJECTIVES);
|
||||
if (list != null && plugin != null) {
|
||||
final String objName = list.getLast();
|
||||
CustomObjective found = null;
|
||||
for (final CustomObjective co : plugin.getCustomObjectives()) {
|
||||
ICustomObjective found = null;
|
||||
for (final ICustomObjective co : plugin.getCustomObjectives()) {
|
||||
if (co.getName().equals(objName)) {
|
||||
found = co;
|
||||
break;
|
@ -10,7 +10,10 @@
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package me.blackvein.quests;
|
||||
package me.blackvein.quests.dependencies;
|
||||
|
||||
import me.blackvein.quests.player.IQuester;
|
||||
import me.blackvein.quests.Quests;
|
||||
|
||||
public class DenizenTrigger {
|
||||
private final Quests plugin;
|
||||
@ -18,7 +21,7 @@ public class DenizenTrigger {
|
||||
public DenizenTrigger(final Quests plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
public boolean runDenizenScript(final String scriptName, final Quester quester) {
|
||||
public boolean runDenizenScript(final String scriptName, final IQuester quester) {
|
||||
if (scriptName == null) {
|
||||
return false;
|
||||
}
|
@ -10,7 +10,7 @@
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
*/
|
||||
|
||||
package me.blackvein.quests;
|
||||
package me.blackvein.quests.entity;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
@ -24,7 +24,7 @@ import me.blackvein.quests.util.ConfigUtil;
|
||||
import me.blackvein.quests.util.ItemUtil;
|
||||
import me.blackvein.quests.util.MiscUtil;
|
||||
|
||||
public class QuestMob {
|
||||
public class BukkitQuestMob implements QuestMob {
|
||||
|
||||
private String name = null;
|
||||
private EntityType entityType = null;
|
||||
@ -33,10 +33,10 @@ public class QuestMob {
|
||||
private ItemStack[] inventory = new ItemStack[5];
|
||||
private Float[] dropChances = new Float[5];
|
||||
|
||||
public QuestMob(){
|
||||
public BukkitQuestMob(){
|
||||
}
|
||||
|
||||
public QuestMob(final EntityType entityType, final Location spawnLocation, final int spawnAmounts) {
|
||||
public BukkitQuestMob(final EntityType entityType, final Location spawnLocation, final int spawnAmounts) {
|
||||
this.entityType = entityType;
|
||||
this.spawnLocation = spawnLocation;
|
||||
this.spawnAmounts = spawnAmounts;
|
||||
@ -189,7 +189,7 @@ public class QuestMob {
|
||||
return string;
|
||||
}
|
||||
|
||||
public static QuestMob fromString(final String str) {
|
||||
public static BukkitQuestMob fromString(final String str) {
|
||||
String name = null;
|
||||
EntityType entityType = null;
|
||||
Location loc = null;
|
||||
@ -258,7 +258,7 @@ public class QuestMob {
|
||||
}
|
||||
}
|
||||
}
|
||||
final QuestMob qm = new QuestMob(entityType, loc, amounts != null ? amounts : 1);
|
||||
final BukkitQuestMob qm = new BukkitQuestMob(entityType, loc, amounts != null ? amounts : 1);
|
||||
qm.setName(name);
|
||||
qm.inventory = inventory;
|
||||
qm.dropChances = dropChances;
|
@ -12,10 +12,9 @@
|
||||
|
||||
package me.blackvein.quests.events.command;
|
||||
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.events.QuestsEvent;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
@ -12,11 +12,10 @@
|
||||
|
||||
package me.blackvein.quests.events.command;
|
||||
|
||||
import me.blackvein.quests.Quester;
|
||||
import org.bukkit.conversations.ConversationContext;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quester;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
@ -12,10 +12,9 @@
|
||||
|
||||
package me.blackvein.quests.events.command;
|
||||
|
||||
import me.blackvein.quests.Quester;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quester;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
@ -12,10 +12,9 @@
|
||||
|
||||
package me.blackvein.quests.events.command;
|
||||
|
||||
import me.blackvein.quests.Quester;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quester;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
@ -12,10 +12,9 @@
|
||||
|
||||
package me.blackvein.quests.events.quester;
|
||||
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.events.QuestsEvent;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
@ -12,11 +12,10 @@
|
||||
|
||||
package me.blackvein.quests.events.quester;
|
||||
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.Stage;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.quests.IStage;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@ -24,11 +23,11 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class QuesterPostChangeStageEvent extends QuesterEvent {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Quest quest;
|
||||
private final Stage current;
|
||||
private final Stage next;
|
||||
private final IQuest quest;
|
||||
private final IStage current;
|
||||
private final IStage next;
|
||||
|
||||
public QuesterPostChangeStageEvent(final Quester quester, final Quest quest, final Stage current, final Stage next) {
|
||||
public QuesterPostChangeStageEvent(final Quester quester, final IQuest quest, final IStage current, final IStage next) {
|
||||
super(quester);
|
||||
this.quest = quest;
|
||||
this.current = current;
|
||||
@ -40,15 +39,15 @@ public class QuesterPostChangeStageEvent extends QuesterEvent {
|
||||
*
|
||||
* @return Quest which is involved in this event
|
||||
*/
|
||||
public Quest getQuest() {
|
||||
public IQuest getQuest() {
|
||||
return quest;
|
||||
}
|
||||
|
||||
public Stage getCurrentStage() {
|
||||
public IStage getCurrentStage() {
|
||||
return current;
|
||||
}
|
||||
|
||||
public Stage getNextStage() {
|
||||
public IStage getNextStage() {
|
||||
return next;
|
||||
}
|
||||
|
@ -12,10 +12,9 @@
|
||||
|
||||
package me.blackvein.quests.events.quester;
|
||||
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@ -23,9 +22,9 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class QuesterPostCompleteQuestEvent extends QuesterEvent {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Quest quest;
|
||||
private final IQuest quest;
|
||||
|
||||
public QuesterPostCompleteQuestEvent(final Quester quester, final Quest quest) {
|
||||
public QuesterPostCompleteQuestEvent(final Quester quester, final IQuest quest) {
|
||||
super(quester);
|
||||
this.quest = quest;
|
||||
}
|
||||
@ -35,7 +34,7 @@ public class QuesterPostCompleteQuestEvent extends QuesterEvent {
|
||||
*
|
||||
* @return Quest which is involved in this event
|
||||
*/
|
||||
public Quest getQuest() {
|
||||
public IQuest getQuest() {
|
||||
return quest;
|
||||
}
|
||||
|
@ -12,10 +12,9 @@
|
||||
|
||||
package me.blackvein.quests.events.quester;
|
||||
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@ -23,9 +22,9 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class QuesterPostFailQuestEvent extends QuesterEvent {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Quest quest;
|
||||
private final IQuest quest;
|
||||
|
||||
public QuesterPostFailQuestEvent(final Quester quester, final Quest quest) {
|
||||
public QuesterPostFailQuestEvent(final Quester quester, final IQuest quest) {
|
||||
super(quester);
|
||||
this.quest = quest;
|
||||
}
|
||||
@ -35,7 +34,7 @@ public class QuesterPostFailQuestEvent extends QuesterEvent {
|
||||
*
|
||||
* @return Quest which is involved in this event
|
||||
*/
|
||||
public Quest getQuest() {
|
||||
public IQuest getQuest() {
|
||||
return quest;
|
||||
}
|
||||
|
@ -12,10 +12,9 @@
|
||||
|
||||
package me.blackvein.quests.events.quester;
|
||||
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@ -23,9 +22,9 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class QuesterPostStartQuestEvent extends QuesterEvent {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Quest quest;
|
||||
private final IQuest quest;
|
||||
|
||||
public QuesterPostStartQuestEvent(final Quester quester, final Quest quest) {
|
||||
public QuesterPostStartQuestEvent(final Quester quester, final IQuest quest) {
|
||||
super(quester);
|
||||
this.quest = quest;
|
||||
}
|
||||
@ -35,7 +34,7 @@ public class QuesterPostStartQuestEvent extends QuesterEvent {
|
||||
*
|
||||
* @return Quest which is involved in this event
|
||||
*/
|
||||
public Quest getQuest() {
|
||||
public IQuest getQuest() {
|
||||
return quest;
|
||||
}
|
||||
|
@ -12,12 +12,11 @@
|
||||
|
||||
package me.blackvein.quests.events.quester;
|
||||
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.quests.Objective;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Objective;
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@ -25,11 +24,11 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class QuesterPostUpdateObjectiveEvent extends QuesterEvent implements Cancellable {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Quest quest;
|
||||
private final IQuest quest;
|
||||
private final Objective objective;
|
||||
private boolean cancel = false;
|
||||
|
||||
public QuesterPostUpdateObjectiveEvent(final Quester quester, final Quest quest, final Objective objective) {
|
||||
public QuesterPostUpdateObjectiveEvent(final Quester quester, final IQuest quest, final Objective objective) {
|
||||
super(quester);
|
||||
this.quest = quest;
|
||||
this.objective = objective;
|
||||
@ -40,7 +39,7 @@ public class QuesterPostUpdateObjectiveEvent extends QuesterEvent implements Can
|
||||
*
|
||||
* @return Quest which is involved in this event
|
||||
*/
|
||||
public Quest getQuest() {
|
||||
public IQuest getQuest() {
|
||||
return quest;
|
||||
}
|
||||
|
@ -12,12 +12,11 @@
|
||||
|
||||
package me.blackvein.quests.events.quester;
|
||||
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.quests.IStage;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.Stage;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@ -25,12 +24,12 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class QuesterPreChangeStageEvent extends QuesterEvent implements Cancellable {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Quest quest;
|
||||
private final Stage current;
|
||||
private final Stage next;
|
||||
private final IQuest quest;
|
||||
private final IStage current;
|
||||
private final IStage next;
|
||||
private boolean cancel = false;;
|
||||
|
||||
public QuesterPreChangeStageEvent(final Quester quester, final Quest quest, final Stage current, final Stage next) {
|
||||
public QuesterPreChangeStageEvent(final Quester quester, final IQuest quest, final IStage current, final IStage next) {
|
||||
super(quester);
|
||||
this.quest = quest;
|
||||
this.current = current;
|
||||
@ -42,15 +41,15 @@ public class QuesterPreChangeStageEvent extends QuesterEvent implements Cancella
|
||||
*
|
||||
* @return Quest which is involved in this event
|
||||
*/
|
||||
public Quest getQuest() {
|
||||
public IQuest getQuest() {
|
||||
return quest;
|
||||
}
|
||||
|
||||
public Stage getCurrentStage() {
|
||||
public IStage getCurrentStage() {
|
||||
return current;
|
||||
}
|
||||
|
||||
public Stage getNextStage() {
|
||||
public IStage getNextStage() {
|
||||
return next;
|
||||
}
|
||||
|
@ -12,11 +12,10 @@
|
||||
|
||||
package me.blackvein.quests.events.quester;
|
||||
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@ -24,15 +23,15 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class QuesterPreCompleteQuestEvent extends QuesterEvent implements Cancellable {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Quest quest;
|
||||
private final IQuest quest;
|
||||
private boolean cancel = false;
|
||||
|
||||
public QuesterPreCompleteQuestEvent(final Quester quester, final Quest quest) {
|
||||
public QuesterPreCompleteQuestEvent(final Quester quester, final IQuest quest) {
|
||||
super(quester);
|
||||
this.quest = quest;
|
||||
}
|
||||
|
||||
public QuesterPreCompleteQuestEvent(final Quester quester, final Quest quest, final boolean async) {
|
||||
public QuesterPreCompleteQuestEvent(final Quester quester, final IQuest quest, final boolean async) {
|
||||
super(quester, async);
|
||||
this.quest = quest;
|
||||
}
|
||||
@ -42,7 +41,7 @@ public class QuesterPreCompleteQuestEvent extends QuesterEvent implements Cancel
|
||||
*
|
||||
* @return Quest which is involved in this event
|
||||
*/
|
||||
public Quest getQuest() {
|
||||
public IQuest getQuest() {
|
||||
return quest;
|
||||
}
|
||||
|
@ -12,11 +12,10 @@
|
||||
|
||||
package me.blackvein.quests.events.quester;
|
||||
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@ -24,10 +23,10 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class QuesterPreFailQuestEvent extends QuesterEvent implements Cancellable {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Quest quest;
|
||||
private final IQuest quest;
|
||||
private boolean cancel = false;
|
||||
|
||||
public QuesterPreFailQuestEvent(final Quester quester, final Quest quest) {
|
||||
public QuesterPreFailQuestEvent(final Quester quester, final IQuest quest) {
|
||||
super(quester);
|
||||
this.quest = quest;
|
||||
}
|
||||
@ -37,7 +36,7 @@ public class QuesterPreFailQuestEvent extends QuesterEvent implements Cancellabl
|
||||
*
|
||||
* @return Quest which is involved in this event
|
||||
*/
|
||||
public Quest getQuest() {
|
||||
public IQuest getQuest() {
|
||||
return quest;
|
||||
}
|
||||
|
@ -12,11 +12,10 @@
|
||||
|
||||
package me.blackvein.quests.events.quester;
|
||||
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@ -24,10 +23,10 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class QuesterPreStartQuestEvent extends QuesterEvent implements Cancellable {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Quest quest;
|
||||
private final IQuest quest;
|
||||
private boolean cancel = false;
|
||||
|
||||
public QuesterPreStartQuestEvent(final Quester quester, final Quest quest) {
|
||||
public QuesterPreStartQuestEvent(final Quester quester, final IQuest quest) {
|
||||
super(quester);
|
||||
this.quest = quest;
|
||||
}
|
||||
@ -37,7 +36,7 @@ public class QuesterPreStartQuestEvent extends QuesterEvent implements Cancellab
|
||||
*
|
||||
* @return Quest which is involved in this event
|
||||
*/
|
||||
public Quest getQuest() {
|
||||
public IQuest getQuest() {
|
||||
return quest;
|
||||
}
|
||||
|
@ -12,12 +12,11 @@
|
||||
|
||||
package me.blackvein.quests.events.quester;
|
||||
|
||||
import me.blackvein.quests.Quester;
|
||||
import me.blackvein.quests.quests.IQuest;
|
||||
import me.blackvein.quests.quests.Objective;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
import me.blackvein.quests.Objective;
|
||||
import me.blackvein.quests.Quest;
|
||||
import me.blackvein.quests.Quester;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
/**
|
||||
@ -25,11 +24,11 @@ import org.jetbrains.annotations.NotNull;
|
||||
*/
|
||||
public class QuesterPreUpdateObjectiveEvent extends QuesterEvent implements Cancellable {
|
||||
private static final HandlerList HANDLERS = new HandlerList();
|
||||
private final Quest quest;
|
||||
private final IQuest quest;
|
||||
private final Objective objective;
|
||||
private boolean cancel = false;
|
||||
|
||||
public QuesterPreUpdateObjectiveEvent(final Quester quester, final Quest quest, final Objective objective) {
|
||||
public QuesterPreUpdateObjectiveEvent(final Quester quester, final IQuest quest, final Objective objective) {
|
||||
super(quester);
|
||||
this.quest = quest;
|
||||
this.objective = objective;
|
||||
@ -40,7 +39,7 @@ public class QuesterPreUpdateObjectiveEvent extends QuesterEvent implements Canc
|
||||
*
|
||||
* @return Quest which is involved in this event
|
||||
*/
|
||||
public Quest getQuest() {
|
||||
public IQuest getQuest() {
|
||||
return quest;
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user