From 8d32c35f889300df58cccb78eaf036b54a8d2703 Mon Sep 17 00:00:00 2001 From: Sarah Date: Tue, 2 May 2017 18:57:20 +0200 Subject: [PATCH] Add basic Quest system --- .../src/mineplex/core/quests/Quest.java | 112 ++++++++++ .../mineplex/core/quests/QuestClientData.java | 18 ++ .../mineplex/core/quests/QuestManager.java | 26 +++ .../src/mineplex/core/quests/QuestRarity.java | 44 ++++ .../src/mineplex/core/quests/TriggerType.java | 36 ++++ .../quests/repository/QuestRepository.java | 19 ++ .../database/tables/AccountQuest.java | 114 ++++++++++ .../tables/records/AccountQuestRecord.java | 202 ++++++++++++++++++ 8 files changed, 571 insertions(+) create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/quests/Quest.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/quests/QuestClientData.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/quests/QuestManager.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/quests/QuestRarity.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/quests/TriggerType.java create mode 100644 Plugins/Mineplex.Core/src/mineplex/core/quests/repository/QuestRepository.java create mode 100644 Plugins/Mineplex.Database/src/mineplex/database/tables/AccountQuest.java create mode 100644 Plugins/Mineplex.Database/src/mineplex/database/tables/records/AccountQuestRecord.java diff --git a/Plugins/Mineplex.Core/src/mineplex/core/quests/Quest.java b/Plugins/Mineplex.Core/src/mineplex/core/quests/Quest.java new file mode 100644 index 000000000..7557e2baf --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/quests/Quest.java @@ -0,0 +1,112 @@ +package mineplex.core.quests; + +import mineplex.core.game.GameDisplay; + +/** + * Quest + * + * @author xXVevzZXx + */ +public class Quest +{ + private int _questID; + + private String _questName; + private String _questTask; + + private int _questCost; + private int _questReward; + + private QuestRarity _rarity; + private GameDisplay _game; + private TriggerType _trigger; + private String _item; + private int _statToComplete; + + private int _current; + + public Quest(int questID, String name, String task, int cost, int reward, QuestRarity rarity, GameDisplay game, TriggerType trigger, String item, int statToComplete) + { + _questID = questID; + _questName = name; + _questTask = task; + _questCost = cost; + _questReward = reward; + _rarity = rarity; + _game = game; + _trigger = trigger; + _item = item; + _statToComplete = statToComplete; + } + + public int getID() + { + return _questID; + } + + public String getName() + { + return _questName; + } + + public String getTask() + { + return _questTask; + } + + public int getCost() + { + return _questCost; + } + + public int getReward() + { + return _questReward; + } + + public QuestRarity getRarity() + { + return _rarity; + } + + public GameDisplay getGame() + { + return _game; + } + + public TriggerType getTrigger() + { + return _trigger; + } + + public String getItem() + { + return _item; + } + + public int getStatToComplete() + { + return _statToComplete; + } + + public void setProgress(int progress) + { + _current = progress; + } + + public void increment() + { + _current++; + } + + public void decrement() + { + _current--; + } + + public boolean isCompleted() + { + return _current == _statToComplete; + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/quests/QuestClientData.java b/Plugins/Mineplex.Core/src/mineplex/core/quests/QuestClientData.java new file mode 100644 index 000000000..1f7809dd8 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/quests/QuestClientData.java @@ -0,0 +1,18 @@ +package mineplex.core.quests; + +import org.bukkit.entity.Player; + +/** + * QuestClientData + * + * @author xXVevzZXx + */ +public class QuestClientData +{ + + public QuestClientData(Player player) + { + + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/quests/QuestManager.java b/Plugins/Mineplex.Core/src/mineplex/core/quests/QuestManager.java new file mode 100644 index 000000000..9da8eaae2 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/quests/QuestManager.java @@ -0,0 +1,26 @@ +package mineplex.core.quests; + +import java.util.UUID; + +import mineplex.core.MiniClientPlugin; + +/** + * QuestManager + * + * @author xXVevzZXx + */ +public class QuestManager extends MiniClientPlugin +{ + + public QuestManager() + { + super("Quest Manager"); + } + + @Override + protected QuestClientData addPlayer(UUID uuid) + { + return null; + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/quests/QuestRarity.java b/Plugins/Mineplex.Core/src/mineplex/core/quests/QuestRarity.java new file mode 100644 index 000000000..860fa52c8 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/quests/QuestRarity.java @@ -0,0 +1,44 @@ +package mineplex.core.quests; + +import org.bukkit.ChatColor; + +/** + * QuestRarity + * + * @author xXVevzZXx + */ +public enum QuestRarity +{ + COMMON("Common", ChatColor.YELLOW), RARE("Rare", ChatColor.LIGHT_PURPLE), LEGENDARY("Legendary", ChatColor.GREEN); + + private String _name; + private ChatColor _color; + + private QuestRarity(String name, ChatColor color) + { + _name = name; + _color = color; + } + + @Override + public String toString() + { + return _name; + } + + public ChatColor getColor() + { + return _color; + } + + public static QuestRarity getByName(String name) + { + for (QuestRarity rarity : values()) + { + if (rarity.toString().equalsIgnoreCase(name)) + return rarity; + } + return null; + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/quests/TriggerType.java b/Plugins/Mineplex.Core/src/mineplex/core/quests/TriggerType.java new file mode 100644 index 000000000..1cf1b7b32 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/quests/TriggerType.java @@ -0,0 +1,36 @@ +package mineplex.core.quests; + +/** + * TriggerType + * + * @author xXVevzZXx + */ +public enum TriggerType +{ + + KILL("Kill"), DIE("Die"), WIN("Win"), LOSE("Lose"), COLLECT("Collect"); + + private String _name; + + private TriggerType(String name) + { + _name = name; + } + + @Override + public String toString() + { + return _name; + } + + public static TriggerType getByName(String name) + { + for (TriggerType type : values()) + { + if (type.toString().equalsIgnoreCase(name)) + return type; + } + return null; + } + +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/quests/repository/QuestRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/quests/repository/QuestRepository.java new file mode 100644 index 000000000..faaa1077a --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/quests/repository/QuestRepository.java @@ -0,0 +1,19 @@ +package mineplex.core.quests.repository; + +import mineplex.serverdata.database.DBPool; +import mineplex.serverdata.database.RepositoryBase; + +/** + * QuestRepository + * + * @author xXVevzZXx + */ +public class QuestRepository extends RepositoryBase +{ + + public QuestRepository() + { + super(DBPool.getAccount()); + } + +} diff --git a/Plugins/Mineplex.Database/src/mineplex/database/tables/AccountQuest.java b/Plugins/Mineplex.Database/src/mineplex/database/tables/AccountQuest.java new file mode 100644 index 000000000..e2794b6a1 --- /dev/null +++ b/Plugins/Mineplex.Database/src/mineplex/database/tables/AccountQuest.java @@ -0,0 +1,114 @@ +package mineplex.database.tables; + +import org.jooq.impl.TableImpl; + +/** + * This class is generated by jOOQ. + */ +@javax.annotation.Generated( + value = { + "http://www.jooq.org", + "jOOQ version:3.5.2" + }, + comments = "This class is generated by jOOQ" +) +@java.lang.SuppressWarnings({ "all", "unchecked", "rawtypes" }) +public class AccountQuest extends TableImpl implements java.io.Serializable, java.lang.Cloneable +{ + + /** + * + */ + private static final long serialVersionUID = -8158716179851336044L; + + /** + * The reference instance of Account.accountStat + */ + public static final mineplex.database.tables.AccountStat accountStat = new mineplex.database.tables.AccountStat(); + + /** + * The class holding records for this type + */ + @Override + public java.lang.Class getRecordType() { + return mineplex.database.tables.records.AccountQuestRecord.class; + } + + /** + * The column Account.accountStat.accountId. + */ + public final org.jooq.TableField accountId = createField("accountId", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); + + /** + * The column Account.accountStat.statId. + */ + public final org.jooq.TableField statId = createField("statId", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, ""); + + /** + * The column Account.accountStat.value. + */ + public final org.jooq.TableField value = createField("value", org.jooq.impl.SQLDataType.BIGINTUNSIGNED.defaulted(true), this, ""); + + /** + * Create a Account.accountStat table reference + */ + public AccountQuest() + { + super("accountquest", null); + } + + /** + * Create an aliased Account.accountStat table reference + */ + public AccountQuest(java.lang.String alias) { + this(alias, mineplex.database.tables.AccountQuest.accountStat); + } + + private AccountQuest(java.lang.String alias, org.jooq.Table aliased) { + this(alias, aliased, null); + } + + private AccountQuest(java.lang.String alias, org.jooq.Table aliased, org.jooq.Field[] parameters) { + super(alias, mineplex.database.Account.Account, aliased, parameters, ""); + } + + /** + * {@inheritDoc} + */ + @Override + public org.jooq.UniqueKey getPrimaryKey() { + return mineplex.database.Keys.KEY_accountStat_PRIMARY; + } + + /** + * {@inheritDoc} + */ + @Override + public java.util.List> getKeys() { + return java.util.Arrays.>asList(mineplex.database.Keys.KEY_accountStat_PRIMARY); + } + + /** + * {@inheritDoc} + */ + @Override + public java.util.List> getReferences() { + return java.util.Arrays.>asList(mineplex.database.Keys.accountStat_account, mineplex.database.Keys.accountStat_stat); + } + + /** + * {@inheritDoc} + */ + @Override + public mineplex.database.tables.AccountStat as(java.lang.String alias) { + return new mineplex.database.tables.AccountStat(alias, this); + } + + /** + * Rename this table + */ + public mineplex.database.tables.AccountStat rename(java.lang.String name) { + return new mineplex.database.tables.AccountStat(name, null); + } + +} diff --git a/Plugins/Mineplex.Database/src/mineplex/database/tables/records/AccountQuestRecord.java b/Plugins/Mineplex.Database/src/mineplex/database/tables/records/AccountQuestRecord.java new file mode 100644 index 000000000..c707a42c7 --- /dev/null +++ b/Plugins/Mineplex.Database/src/mineplex/database/tables/records/AccountQuestRecord.java @@ -0,0 +1,202 @@ +package mineplex.database.tables.records; + +import org.jooq.Table; + +/** + * AccountQuest + * + * @author xXVevzZXx + */ +public class AccountQuestRecord extends org.jooq.impl.UpdatableRecordImpl implements java.io.Serializable, java.lang.Cloneable, org.jooq.Record3 +{ + + /** + * + */ + private static final long serialVersionUID = 5171965369180094201L; + + public AccountQuestRecord(Table table) + { + super(table); + } + + /** + * Setter for Account.accountStat.accountId. + */ + public void setAccountId(java.lang.Integer value) { + setValue(0, value); + } + + /** + * Getter for Account.accountStat.accountId. + */ + public java.lang.Integer getAccountId() { + return (java.lang.Integer) getValue(0); + } + + /** + * Setter for Account.accountStat.statId. + */ + public void setStatId(java.lang.Integer value) { + setValue(1, value); + } + + /** + * Getter for Account.accountStat.statId. + */ + public java.lang.Integer getStatId() { + return (java.lang.Integer) getValue(1); + } + + /** + * Setter for Account.accountStat.value. + */ + public void setValue(org.jooq.types.ULong value) { + setValue(2, value); + } + + /** + * Getter for Account.accountStat.value. + */ + public org.jooq.types.ULong getValue() { + return (org.jooq.types.ULong) getValue(2); + } + + // ------------------------------------------------------------------------- + // Primary key information + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public org.jooq.Record2 key() { + return (org.jooq.Record2) super.key(); + } + + // ------------------------------------------------------------------------- + // Record3 type implementation + // ------------------------------------------------------------------------- + + /** + * {@inheritDoc} + */ + @Override + public org.jooq.Row3 fieldsRow() { + return (org.jooq.Row3) super.fieldsRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public org.jooq.Row3 valuesRow() { + return (org.jooq.Row3) super.valuesRow(); + } + + /** + * {@inheritDoc} + */ + @Override + public org.jooq.Field field1() { + return mineplex.database.tables.AccountStat.accountStat.accountId; + } + + /** + * {@inheritDoc} + */ + @Override + public org.jooq.Field field2() { + return mineplex.database.tables.AccountStat.accountStat.statId; + } + + /** + * {@inheritDoc} + */ + @Override + public org.jooq.Field field3() { + return mineplex.database.tables.AccountStat.accountStat.value; + } + + /** + * {@inheritDoc} + */ + @Override + public java.lang.Integer value1() { + return getAccountId(); + } + + /** + * {@inheritDoc} + */ + @Override + public java.lang.Integer value2() { + return getStatId(); + } + + /** + * {@inheritDoc} + */ + @Override + public org.jooq.types.ULong value3() { + return getValue(); + } + + /** + * {@inheritDoc} + */ + @Override + public AccountStatRecord value1(java.lang.Integer value) { + setAccountId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public AccountStatRecord value2(java.lang.Integer value) { + setStatId(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public AccountStatRecord value3(org.jooq.types.ULong value) { + setValue(value); + return this; + } + + /** + * {@inheritDoc} + */ + @Override + public AccountStatRecord values(java.lang.Integer value1, java.lang.Integer value2, org.jooq.types.ULong value3) { + return this; + } + + // ------------------------------------------------------------------------- + // Constructors + // ------------------------------------------------------------------------- + + /** + * Create a detached AccountStatRecord + */ + public AccountStatRecord() { + super(mineplex.database.tables.AccountStat.accountStat); + } + + /** + * Create a detached, initialised AccountStatRecord + */ + public AccountStatRecord(java.lang.Integer accountId, java.lang.Integer statId, org.jooq.types.ULong value) { + super(mineplex.database.tables.AccountStat.accountStat); + + setValue(0, accountId); + setValue(1, statId); + setValue(2, value); + } + +}