This repository has been archived by the owner on Mar 8, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
ac9e440
commit 771c838
Showing
10 changed files
with
405 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
22 changes: 22 additions & 0 deletions
22
src/main/java/cat/nyaa/HamsterEcoHelper/quest/QuestCommon.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package cat.nyaa.HamsterEcoHelper.quest; | ||
|
||
import cat.nyaa.HamsterEcoHelper.HamsterEcoHelper; | ||
import cat.nyaa.HamsterEcoHelper.utils.database.tables.quest.QuestInstance; | ||
import cat.nyaa.HamsterEcoHelper.utils.database.tables.quest.QuestStation; | ||
import org.bukkit.Location; | ||
|
||
|
||
public class QuestCommon { | ||
public static QuestStation toQuestStation(Location loc) { | ||
try { | ||
return HamsterEcoHelper.instance.database.query(QuestStation.class) | ||
.whereEq("world", loc.getWorld().getName()) | ||
.whereEq("x", loc.getBlockX()) | ||
.whereEq("y", loc.getBlockY()) | ||
.whereEq("z", loc.getBlockZ()) | ||
.selectUnique(); | ||
} catch (RuntimeException ex) { | ||
return null; | ||
} | ||
} | ||
} |
52 changes: 52 additions & 0 deletions
52
src/main/java/cat/nyaa/HamsterEcoHelper/quest/QuestListener.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,52 @@ | ||
package cat.nyaa.HamsterEcoHelper.quest; | ||
|
||
import cat.nyaa.HamsterEcoHelper.HamsterEcoHelper; | ||
import cat.nyaa.HamsterEcoHelper.I18n; | ||
import cat.nyaa.HamsterEcoHelper.utils.database.tables.quest.QuestStation; | ||
import org.bukkit.block.Block; | ||
import org.bukkit.entity.Player; | ||
import org.bukkit.event.EventHandler; | ||
import org.bukkit.event.EventPriority; | ||
import org.bukkit.event.Listener; | ||
import org.bukkit.event.block.Action; | ||
import org.bukkit.event.block.SignChangeEvent; | ||
import org.bukkit.event.player.PlayerInteractEvent; | ||
|
||
public class QuestListener implements Listener { | ||
private final HamsterEcoHelper plugin; | ||
|
||
public QuestListener(HamsterEcoHelper plugin) { | ||
this.plugin = plugin; | ||
plugin.getServer().getPluginManager().registerEvents(this, plugin); | ||
} | ||
|
||
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) | ||
public void onSignChangeEvent(SignChangeEvent event) { | ||
if ("[Quest]".equalsIgnoreCase(event.getLine(0))) { | ||
Player player = event.getPlayer(); | ||
if (!player.hasPermission("heh.quest.admin")) return; | ||
Double fee; | ||
try { | ||
fee = Double.parseDouble(event.getLine(3)); | ||
} catch (NumberFormatException ex) { | ||
fee = null; | ||
} | ||
if (fee == null) { | ||
event.getPlayer().sendMessage(I18n.format("user.quest.invalid_fee")); | ||
return; | ||
} | ||
plugin.database.query(QuestStation.class).insert(new QuestStation(event.getBlock().getLocation(), fee)); | ||
event.getPlayer().sendMessage(I18n.format("user.quest.station_created")); | ||
} | ||
} | ||
|
||
@EventHandler | ||
public void onPlayerInteract(PlayerInteractEvent event) { | ||
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) { | ||
Block block = event.getClickedBlock(); | ||
QuestStation station = QuestCommon.toQuestStation(block.getLocation()); | ||
if (station == null) return; | ||
event.getPlayer().sendMessage("Station clicked"); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
138 changes: 138 additions & 0 deletions
138
src/main/java/cat/nyaa/HamsterEcoHelper/utils/database/tables/quest/QuestEntry.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
package cat.nyaa.HamsterEcoHelper.utils.database.tables.quest; | ||
|
||
import cat.nyaa.HamsterEcoHelper.utils.Utils; | ||
import cat.nyaa.nyaacore.database.DataColumn; | ||
import cat.nyaa.nyaacore.database.DataTable; | ||
import cat.nyaa.nyaacore.database.PrimaryKey; | ||
import org.bukkit.inventory.ItemStack; | ||
|
||
import java.time.Duration; | ||
import java.time.ZonedDateTime; | ||
import java.util.List; | ||
|
||
@DataTable("quest_entry") | ||
public class QuestEntry { | ||
public enum QuestType { | ||
NONE, | ||
ITEM, | ||
MONEY, | ||
OTHER; | ||
} | ||
|
||
@DataColumn | ||
@PrimaryKey | ||
public String id; | ||
@DataColumn | ||
public String station_id; // which station this quest is in | ||
@DataColumn | ||
public String questName; | ||
@DataColumn | ||
public String questDescription; | ||
@DataColumn | ||
public String publisher; // uuid of the player who published the quest | ||
@DataColumn | ||
public Boolean claimable; // if this quest can be claimed by a player | ||
@DataColumn | ||
public Boolean isRecurrentQuest; // if the quest can be claimed by many players. NOTE: the rewards will be created from nowhere (i.e. duplicated) | ||
@DataColumn | ||
public Long singlePlayerClaimLimit; // how many time a single player can claim this quest, valid only if is recurrent quest | ||
|
||
public QuestType prerequisiteType; // NONE, ITEM or MONEY | ||
public List<ItemStack> prerequisiteItems; | ||
@DataColumn("prereq_money") | ||
public Double prerequisiteMoney; | ||
|
||
public List<ItemStack> earlyRewardItems; // items will be given to player when they claimed the quest | ||
|
||
public QuestType targetType; // NONE, ITEM or OTHER | ||
public List<ItemStack> targetItems; | ||
|
||
public QuestType rewardType; // NONE, ITEM or MONEY | ||
public List<ItemStack> rewardItem; | ||
@DataColumn("reward_money") | ||
public Double rewardMoney; | ||
|
||
public ZonedDateTime questExpire; // when will the quest expire | ||
public Duration questTimeLimit; // the time limit the quest should be finished once it's claimed | ||
|
||
@DataColumn("prereq_type") | ||
public String getPrerequisiteType() { | ||
return prerequisiteType.name(); | ||
} | ||
|
||
public void setPrerequisiteType(String prerequisiteType) { | ||
this.prerequisiteType = QuestType.valueOf(prerequisiteType); | ||
} | ||
|
||
@DataColumn("prereq_item") | ||
public String getPrerequisiteItems() { | ||
return Utils.encodeItemStacks(prerequisiteItems); | ||
} | ||
|
||
public void setPrerequisiteItems(String prerequisiteItems) { | ||
this.prerequisiteItems = Utils.decodeItemStacks(prerequisiteItems); | ||
} | ||
|
||
@DataColumn("early_reward_item") | ||
public String getEarlyRewardItems() { | ||
return Utils.encodeItemStacks(earlyRewardItems); | ||
} | ||
|
||
public void setEarlyRewardItems(String earlyRewardItems) { | ||
this.earlyRewardItems = Utils.decodeItemStacks(earlyRewardItems); | ||
} | ||
|
||
@DataColumn("target_type") | ||
public String getTargetType() { | ||
return targetType.name(); | ||
} | ||
|
||
public void setTargetType(String targetType) { | ||
this.targetType = QuestType.valueOf(targetType); | ||
} | ||
|
||
@DataColumn("target_item") | ||
public String getTargetItems() { | ||
return Utils.encodeItemStacks(targetItems); | ||
} | ||
|
||
public void setTargetItems(String targetItems) { | ||
this.targetItems = Utils.decodeItemStacks(targetItems); | ||
} | ||
|
||
@DataColumn("reward_type") | ||
public String getRewardType() { | ||
return rewardType.name(); | ||
} | ||
|
||
public void setRewardType(String rewardType) { | ||
this.rewardType = QuestType.valueOf(rewardType); | ||
} | ||
|
||
@DataColumn("reward_item") | ||
public String getRewardItem() { | ||
return Utils.encodeItemStacks(rewardItem); | ||
} | ||
|
||
public void setRewardItem(String rewardItem) { | ||
this.rewardItem = Utils.decodeItemStacks(rewardItem); | ||
} | ||
|
||
@DataColumn("expire") | ||
public String getQuestExpire() { | ||
return questExpire.toString(); | ||
} | ||
|
||
public void setQuestExpire(String questExpire) { | ||
this.questExpire = ZonedDateTime.parse(questExpire); | ||
} | ||
|
||
@DataColumn("time_limit") | ||
public String getQuestTimeLimit() { | ||
return questTimeLimit.toString(); | ||
} | ||
|
||
public void setQuestTimeLimit(String questTimeLimit) { | ||
this.questTimeLimit = Duration.parse(questTimeLimit); | ||
} | ||
} |
Oops, something went wrong.