9
0
mirror of https://github.com/Auxilor/EcoQuests.git synced 2025-12-20 15:39:21 +00:00

Compare commits

..

67 Commits

Author SHA1 Message Date
Will FP
b61afeea44 libreforge-updater 2025-10-06 08:57:19 +01:00
Will FP
3a1ab8a62c libreforge-updater 2025-09-11 09:59:12 +01:00
Will FP
31f608eea5 libreforge-updater 2025-08-01 10:04:43 +01:00
Will FP
cdf83a9ba7 Merge pull request #5 from kiriharu/master
FEAT: Add addexp subcommand
2025-08-01 09:42:22 +01:00
Will FP
86550af579 libreforge-updater 2025-07-05 16:45:41 +01:00
Will FP
0ea4e3cd20 libreforge-updater 2025-07-04 09:51:18 +01:00
Will FP
779f942454 libreforge-updater 2025-03-29 14:22:27 +00:00
Will FP
abad5bdfbd libreforge-updater 2025-01-31 11:55:03 +00:00
Will FP
588839fc97 libreforge-updater 2025-01-25 13:50:08 +00:00
Will FP
1c36c4b18f Fix 2025-01-25 13:48:44 +00:00
Will FP
0460f1f6bf libreforge-updater 2025-01-25 13:46:03 +00:00
kiriharu
a5dd2566f5 FIX: Forget to add description 2024-12-12 16:51:09 +03:00
kiriharu
66524ade50 FEAT: Add addexp subcommand 2024-12-12 16:39:21 +03:00
Will FP
5814587ed5 libreforge-updater 2024-11-06 18:33:27 +00:00
Will FP
f4682214cc libreforge-updater 2024-10-22 12:14:38 +01:00
Will FP
3c0d5651d8 Merge pull request #3 from kiriharu/master
FIX: Prevent to give expirience to task when it marked as completed
2024-09-26 19:08:57 +01:00
Will FP
c86651df9b libreforge-updater 2024-09-22 17:00:59 +01:00
Will FP
26ccae38b1 Merge pull request #4 from Exanthiax/improved_sorting
improved sorting and multi-line descriptions
2024-09-22 15:47:35 +01:00
Exanthiax
c1c985d638 improved sorting and multi-line descriptions 2024-09-22 15:12:11 +01:00
kiriharu
ed947b354f FIX: Stop giving exp to task and call steps related to it when task already marked as completed 2024-09-21 13:00:51 +03:00
Auxilor
5e51c369bb libreforge-updater 2024-09-02 11:30:14 +01:00
Auxilor
67a2e2fb4f libreforge-updater 2024-08-30 17:25:13 +01:00
Auxilor
f94e79bc92 libreforge-updater 2024-08-29 12:09:23 +01:00
Auxilor
9cf8d465b9 libreforge-updater 2024-08-23 15:35:29 +01:00
Auxilor
237ebda870 libreforge-updater 2024-08-21 18:58:25 +01:00
Auxilor
ed6bcaab04 libreforge-updater 2024-08-15 15:07:42 +01:00
Auxilor
40a0f99716 libreforge-updater 2024-08-03 13:41:32 +01:00
Auxilor
a59bce65ab libreforge-updater 2024-07-25 10:04:39 +01:00
Auxilor
0212076fad libreforge-updater 2024-07-21 12:19:23 +01:00
Auxilor
c4b0429ad5 libreforge-updater 2024-07-19 20:28:44 +01:00
Auxilor
c5e0611a20 libreforge-updater 2024-07-18 13:24:18 +01:00
Auxilor
cb2e8a181f libreforge-updater 2024-07-16 17:13:48 +01:00
Auxilor
c40a304c8a libreforge-updater 2024-07-13 20:45:24 +01:00
Auxilor
9e7a8a7581 libreforge-updater 2024-07-08 15:58:33 +01:00
Auxilor
2e5fbda6c2 libreforge-updater 2024-07-05 13:02:51 +01:00
Auxilor
908a4c5a14 libreforge-updater 2024-07-03 17:44:03 +01:00
Auxilor
ee38c05518 libreforge-updater 2024-06-29 16:44:07 +01:00
Auxilor
98d5431ba7 libreforge-updater 2024-06-28 15:56:30 +01:00
Auxilor
ff13678d33 libreforge-updater 2024-06-27 18:54:34 +01:00
Auxilor
8b955f3481 libreforge-updater 2024-06-26 16:52:26 +01:00
Auxilor
b6d8b4154b libreforge-updater 2024-06-25 15:14:05 +01:00
Auxilor
f71078f956 libreforge-updater 2024-06-24 15:06:40 +01:00
Auxilor
4e4f9c637b Updated to Java 21 2024-06-24 14:04:43 +01:00
Auxilor
2433c34a1c libreforge-updater 2024-06-23 17:26:37 +01:00
Auxilor
607da38533 libreforge-updater 2024-06-23 13:19:10 +01:00
Will FP
17d0af8ab9 libreforge-updater 2024-05-31 20:37:52 +01:00
Will FP
8332c5aa2a libreforge-updater 2024-05-11 18:21:18 +01:00
Will FP
863e741ac6 libreforge-updater 2024-04-17 20:35:00 +01:00
Auxilor
aab1a5bf44 libreforge-updater 2024-04-15 18:19:50 +01:00
Auxilor
93f243871f libreforge-updater 2024-04-11 13:17:45 +01:00
Auxilor
78e2b6bfff libreforge-updater 2024-03-29 16:08:51 +00:00
Will FP
4bf97077b7 libreforge-updater 2024-03-11 17:38:06 +00:00
Will FP
6eead2f420 libreforge-updater 2024-03-10 20:09:37 +00:00
Will FP
c574d78992 libreforge-updater 2024-03-02 15:20:52 +00:00
Will FP
399101a487 libreforge-updater 2024-02-22 13:18:23 +00:00
Will FP
95a013fbf1 Merge pull request #1 from MCCasper/master
t
2024-02-17 19:57:48 +00:00
Nikolai Connolly
b0fa4bad8b t 2024-02-16 20:52:30 -06:00
Will FP
d55635c590 libreforge-updater 2024-02-15 13:02:37 +00:00
Will FP
bd6b919f86 libreforge-updater 2024-02-08 19:49:56 +00:00
Will FP
d390a2102a libreforge-updater 2024-01-30 11:27:42 +00:00
Will FP
89e2232618 libreforge-updater 2024-01-18 17:03:23 +00:00
Will FP
db34794aa0 libreforge-updater 2024-01-16 13:29:19 +00:00
Will FP
b8a8076b23 libreforge-updater 2024-01-13 14:24:05 +00:00
Will FP
b999e381a1 libreforge-updater 2024-01-07 13:52:00 +00:00
Will FP
e726af326f libreforge-updater 2024-01-06 09:20:18 +00:00
Auxilor
9654b2c78b libreforge-updater 2024-01-04 17:25:37 +00:00
Auxilor
2645d679f5 libreforge-updater 2024-01-01 20:02:39 +00:00
13 changed files with 155 additions and 24 deletions

View File

@@ -15,11 +15,11 @@ jobs:
- name: Checkout latest code
uses: actions/checkout@v2
- name: Set up JDK 17
- name: Set up JDK 21
uses: actions/setup-java@v2
with:
distribution: 'temurin'
java-version: 17
java-version: 21
- name: Change wrapper permissions
run: chmod +x ./gradlew

View File

@@ -1,9 +1,11 @@
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
plugins {
java
`java-library`
`maven-publish`
kotlin("jvm") version "1.9.20"
id("com.github.johnrengelman.shadow") version "8.0.0"
kotlin("jvm") version "2.1.0"
id("com.gradleup.shadow") version "8.3.0"
id("com.willfp.libreforge-gradle-plugin") version "1.0.0"
}
@@ -25,7 +27,7 @@ allprojects {
apply(plugin = "java")
apply(plugin = "kotlin")
apply(plugin = "maven-publish")
apply(plugin = "com.github.johnrengelman.shadow")
apply(plugin = "com.gradleup.shadow")
repositories {
mavenLocal()
@@ -39,12 +41,12 @@ allprojects {
dependencies {
compileOnly("com.willfp:eco:6.65.0")
compileOnly("org.jetbrains:annotations:23.0.0")
compileOnly("org.jetbrains.kotlin:kotlin-stdlib:1.9.20")
compileOnly("org.jetbrains.kotlin:kotlin-stdlib:2.1.0")
}
java {
withSourcesJar()
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
}
tasks {
@@ -54,8 +56,8 @@ allprojects {
}
compileKotlin {
kotlinOptions {
jvmTarget = "17"
compilerOptions {
jvmTarget.set(JvmTarget.JVM_21)
}
}

View File

@@ -0,0 +1,83 @@
package com.willfp.ecoquests.commands
import com.willfp.eco.core.EcoPlugin
import com.willfp.eco.core.command.impl.PluginCommand
import com.willfp.eco.core.commands.notifyNull
import com.willfp.eco.util.StringUtils
import com.willfp.ecoquests.quests.Quests
import com.willfp.ecoquests.tasks.Tasks
import org.bukkit.command.CommandSender
import org.bukkit.util.StringUtil
class CommandAddExp(plugin: EcoPlugin) : PluginCommand(
plugin,
"addexp",
"ecoquests.command.addexp",
false
) {
override fun onExecute(sender: CommandSender, args: List<String>) {
val player = notifyPlayerRequired(args.getOrNull(0), "invalid-player")
val quest = notifyNull(Quests[args.getOrNull(1)], "invalid-quest")
val taskTemplate = notifyNull(Tasks[args.getOrNull(2)], "invalid-task")
val task = notifyNull(quest.getTask(taskTemplate), "invalid-task")
if (args.size < 4) {
sender.sendMessage(plugin.langYml.getMessage("invalid-exp-value"))
return
}
val unparsedValue = args[3].notifyNull("invalid-exp-value")
val value: Double
try {
value = unparsedValue.toDouble()
} catch (_: NumberFormatException) {
sender.sendMessage(plugin.langYml.getMessage("invalid-exp-value"))
return
}
task.gainExperience(player, value)
sender.sendMessage(
plugin.langYml.getMessage("exp-added", StringUtils.FormatOption.WITHOUT_PLACEHOLDERS)
.replace("%xp%", value.toString())
.replace("%quest%", quest.name)
.replace("%task%", task.template.id)
.replace("%player%", player.name)
)
}
override fun tabComplete(sender: CommandSender, args: List<String>): List<String> {
val completions = mutableListOf<String>()
if (args.size == 1) {
StringUtil.copyPartialMatches(
args[0],
plugin.server.onlinePlayers.map { it.name },
completions
)
}
if (args.size == 2) {
StringUtil.copyPartialMatches(
args[1],
Quests.values().map { it.id },
completions
)
}
if (args.size == 3) {
val quest = Quests[args[1]]
if (quest != null) {
StringUtil.copyPartialMatches(
args[2],
quest.tasks.map { it.template.id } ,
completions
)
}
}
return completions
}
}

View File

@@ -15,6 +15,7 @@ class CommandEcoQuests(plugin: EcoPlugin) : PluginCommand(
.addSubcommand(CommandStart(plugin))
.addSubcommand(CommandResetPlayer(plugin))
.addSubcommand(CommandReset(plugin))
.addSubcommand(CommandAddExp(plugin))
}
override fun onExecute(sender: CommandSender, args: List<String>) {

View File

@@ -101,10 +101,20 @@ class Quest(
// The tasks that are actually in use
var tasks = run {
if (isResettable) {
loadTasks() ?: availableTasks.randomlyPick(taskAmount)
if (taskAmount == availableTasks.size) {
// If taskAmount is equal to availableTasks.size then tasks are ordered as configured
if (isResettable) {
availableTasks.take(taskAmount)
} else {
availableTasks.shuffled().take(taskAmount)
}
} else {
availableTasks.randomlyPick(taskAmount)
// If taskAmount is less than availableTasks.size then tasks are selected and ordered randomly.
if (isResettable) {
loadTasks() ?: availableTasks.randomlyPick(taskAmount)
} else {
availableTasks.randomlyPick(taskAmount)
}
}
}
private set
@@ -223,6 +233,28 @@ class Quest(
.formatEco(it)
}
}.register()
for (i in 1..this.tasks.size+1) {
PlayerPlaceholder(plugin, "quest_${id}_task_${i}_required_xp") {
this.tasks[i-1].getExperienceRequired(it).toNiceString()
}.register()
PlayerPlaceholder(plugin, "quest_${id}_task_${i}_xp") {
this.tasks[i-1].getExperience(it).toNiceString()
}.register()
PlayerPlaceholder(plugin, "quest_${id}_task_${i}_description") {
this.tasks[i-1].getDescription(it)
}.register()
PlayerPlaceholder(plugin, "quest_${id}_task_${i}_completed") {
this.tasks[i-1].hasCompleted(it).toNiceString()
}.register()
PlayerPlaceholder(plugin, "quest_${id}_task_${i}_completed_description") {
this.tasks[i-1].getCompletedDescription(it)
}.register()
}
}
override fun onRegister() {
@@ -246,7 +278,8 @@ class Quest(
}
fun getDescription(player: Player): List<String> {
return addPlaceholdersInto(listOf(config.getString("description")), player)
val descriptions = config.getStrings("description")
return addPlaceholdersInto(descriptions, player)
}
fun hasActive(player: OfflinePlayer): Boolean {

View File

@@ -146,6 +146,11 @@ class Task(
* Give experience directly
*/
fun giveExperience(player: Player, amount: Double) {
if (player.profile.read(hasCompletedKey)) {
return
}
val requiredXp = getExperienceRequired(player)
val newXp = player.profile.read(xpKey) + amount

View File

@@ -7,12 +7,15 @@ messages:
invalid-player: "&cInvalid player!"
invalid-quest: "&cInvalid quest!"
invalid-task: "&cInvalid task! Should be exist in quest."
invalid-exp-value: "&cInvalid exp value! Should be a double (like 1.0)."
already-started: "&cThe player has already started this quest!"
started-quest: "&fStarted the &a%quest% &fquest for &a%player%&f!"
reset-quest-for-player: "&fReset the &a%quest% &fquest for &a%player%&f!"
reset-quest: "&fReset the &a%quest% &fquest!"
quest-not-resettable: "&cThis quest is not resettable!"
exp-added: "&aAdded &f%xp% &aXP in quest &f%quest%&a, task &f%task%&a for &f%player%&a!"
time-since:
never: "&cNot started yet!"

View File

@@ -35,6 +35,7 @@ permissions:
ecoquests.command.start: true
ecoquests.command.reset: true
ecoquests.command.resetplayer: true
ecoquests.command.addexp: true
ecoquests.command.reload:
description: Allows reloading the config
@@ -53,4 +54,7 @@ permissions:
default: op
ecoquests.command.resetplayer:
description: Allows using /ecoquests resetplayer.
default: op
ecoquests.command.addexp:
description: Allows using /ecoquests addexp.
default: op

View File

@@ -1,5 +1,5 @@
#libreforge-updater
#Wed Dec 27 14:17:46 CET 2023
#Mon Oct 06 08:57:19 BST 2025
kotlin.code.style=official
libreforge-version=4.51.1
version=1.23.1
libreforge-version=4.79.0
version=1.50.0

Binary file not shown.

View File

@@ -1,5 +1,7 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.3-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

View File

@@ -1,6 +0,0 @@
jdk: openjdk17
before_install:
- source "$HOME/.sdkman/bin/sdkman-init.sh"
- sdk update
- sdk install java 17.0.1-tem
- sdk use java 17.0.1-tem

View File

@@ -2,11 +2,15 @@ pluginManagement {
repositories {
gradlePluginPortal()
mavenLocal()
maven("https://repo.jpenilla.xyz/snapshots/")
maven("https://repo.auxilor.io/repository/maven-public/")
maven("https://repo.papermc.io/repository/maven-public/")
}
}
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version "0.8.0"
}
rootProject.name = "EcoQuests"
// Core