Work on mine quest
This commit is contained in:
@@ -1,8 +0,0 @@
|
||||
package com.alttd.altitudequests.objects;
|
||||
|
||||
public enum GoalType {
|
||||
TALK,
|
||||
MONEY,
|
||||
MINE,
|
||||
WALK
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
package com.alttd.altitudequests.objects;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.bukkit.Material;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class MineQuestObject {
|
||||
|
||||
String internalName;
|
||||
String name;
|
||||
Material material;
|
||||
int amount;
|
||||
List<Component> pages;
|
||||
|
||||
public MineQuestObject(String internalName, String name, Material material, int amount, List<Component> pages) {
|
||||
this.internalName = internalName;
|
||||
this.name = name;
|
||||
this.material = material;
|
||||
this.amount = amount;
|
||||
this.pages = pages;
|
||||
}
|
||||
|
||||
public String getInternalName() {
|
||||
return internalName;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
public Material getMaterial() {
|
||||
return material;
|
||||
}
|
||||
|
||||
public int getAmount() {
|
||||
return amount;
|
||||
}
|
||||
|
||||
public List<Component> getPages() {
|
||||
return pages;
|
||||
}
|
||||
}
|
||||
@@ -1,38 +1,52 @@
|
||||
package com.alttd.altitudequests.objects;
|
||||
|
||||
import com.alttd.altitudequests.config.QuestsConfig;
|
||||
import com.alttd.altitudequests.objects.quests.MineQuest;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Random;
|
||||
import java.util.UUID;
|
||||
|
||||
public abstract class Quest {
|
||||
|
||||
private static Quest dailyQuest = null;
|
||||
private static final HashMap<UUID, Quest> dailyQuests = new HashMap<>();
|
||||
private static Quest weeklyQuest = null;
|
||||
private static final String[] possibleQuests;
|
||||
|
||||
private String name;
|
||||
private GoalType goalType;
|
||||
//TODO add all data every quest needs
|
||||
|
||||
static {
|
||||
possibleQuests = new String[]{"MineQuest"};
|
||||
}
|
||||
|
||||
public Quest(String name, GoalType goalType) {
|
||||
this.name = name;
|
||||
this.goalType = goalType;
|
||||
public Quest() {
|
||||
}
|
||||
|
||||
public static void createDailyQuest(Player player) {
|
||||
Random random = new Random();
|
||||
String questName = possibleQuests[random.nextInt(0, possibleQuests.length - 1)];
|
||||
Quest quest = null;
|
||||
switch (questName) {
|
||||
case "MineQuest" -> {
|
||||
quest = new MineQuest(QuestsConfig.MINE_QUESTS.get(random.nextInt(0, QuestsConfig.MINE_QUESTS.size() - 1)));
|
||||
}
|
||||
}
|
||||
if (quest == null)
|
||||
return; //TODO error
|
||||
dailyQuests.put(player.getUniqueId(), quest);
|
||||
}
|
||||
|
||||
public static Quest getDailyQuest(UUID uuid) {
|
||||
if (!dailyQuests.containsKey(uuid))
|
||||
dailyQuests.put(uuid, dailyQuest.initQuest());
|
||||
if (!dailyQuests.containsKey(uuid)) {
|
||||
return null;
|
||||
}
|
||||
return dailyQuests.get(uuid);
|
||||
}
|
||||
|
||||
public static void setActiveDailyQuest(Quest newQuest) {
|
||||
Quest.dailyQuest = newQuest;
|
||||
}
|
||||
public static void setActiveWeeklyQuest(Quest newQuest) {
|
||||
Quest.weeklyQuest = newQuest;
|
||||
}
|
||||
|
||||
public abstract boolean isDone();
|
||||
|
||||
public abstract Quest initQuest();
|
||||
}
|
||||
|
||||
@@ -1,27 +1,44 @@
|
||||
package com.alttd.altitudequests.objects.quests;
|
||||
|
||||
import com.alttd.altitudequests.objects.GoalType;
|
||||
import com.alttd.altitudequests.config.QuestsConfig;
|
||||
import com.alttd.altitudequests.objects.MineQuestObject;
|
||||
import com.alttd.altitudequests.objects.Quest;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
public class MineQuest extends Quest {
|
||||
|
||||
public MineQuest(String name, GoalType goalType) {
|
||||
super(name, goalType);
|
||||
int mined;
|
||||
int turnedIn;
|
||||
MineQuestObject mineQuestObject;
|
||||
boolean isDone = false;
|
||||
|
||||
public MineQuest(MineQuestObject mineQuestObject) {
|
||||
mined = 0;
|
||||
turnedIn = 0;
|
||||
this.mineQuestObject = mineQuestObject;
|
||||
}
|
||||
|
||||
public MineQuest(int mined, int turnedIn, String internalName) {
|
||||
this.mined = mined;
|
||||
this.turnedIn = turnedIn;
|
||||
Optional<MineQuestObject> any = QuestsConfig.MINE_QUESTS.stream().filter(object -> internalName.equals(object.getInternalName())).findAny();
|
||||
if (any.isEmpty())
|
||||
return; //TODO error
|
||||
this.mineQuestObject = any.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isDone() {
|
||||
return false;
|
||||
return isDone;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Quest initQuest() {
|
||||
return new MineQuest("Mine", GoalType.MINE);
|
||||
}
|
||||
|
||||
public void mine(Block block, Player player) {
|
||||
|
||||
public void mine(Block block) {
|
||||
if (!isDone && !block.getType().equals(mineQuestObject.getMaterial()))
|
||||
return;
|
||||
mined += 1;
|
||||
if (mined == mineQuestObject.getAmount())
|
||||
isDone = true;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user