Skip to content

Commit 836b946

Browse files
authored
Merge pull request #13 from EndlessCodeGroup/feature/quantumrpg
QuantumRPG
2 parents 72163de + a8568a2 commit 836b946

File tree

16 files changed

+269
-20
lines changed

16 files changed

+269
-20
lines changed

mimic-api/src/main/kotlin/level/LevelSystem.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,11 @@ public interface LevelSystem {
5050
set(value) {
5151
val allowedTotalExperience = value.coerceAtLeast(0.0)
5252

53-
val level = this.converter.expToLevel(allowedTotalExperience)
54-
val fullLevel = this.converter.expToFullLevel(allowedTotalExperience)
55-
val expToNextLevel = this.converter.getExpToReachNextLevel(fullLevel)
56-
val levelPercent = level - fullLevel
53+
val level = this.converter.expToFullLevel(allowedTotalExperience)
54+
val levelExp = this.converter.levelToExp(level)
5755

58-
this.level = fullLevel
59-
this.exp = expToNextLevel * levelPercent
56+
this.level = level
57+
this.exp = allowedTotalExperience - levelExp
6058
}
6159

6260
/**

mimic-bukkit/README.md

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -39,26 +39,29 @@ You can find code of all implementations [here](src/main/kotlin/impl).
3939
- **[BattleLevels]**
4040
- **[MMOCore]**
4141
- **[Heroes]**
42+
- **[QuantumRPG]**
4243

4344
#### [Class Systems][BukkitClassSystem.Provider]
4445

4546
- **Permissions-based** _(Default)_ - give permission `mimic.class.[class_name]` to assign class to player
4647
- **[SkillAPI]**
4748
- **[MMOCore]**
4849
- **[Heroes]**
50+
- **[QuantumRPG]**
4951

5052
#### [Items Registries][BukkitItemsRegistry]
5153

5254
[MimicItemsRegistry] - Items registry combining all others items registries.
5355
It uses service ID as namespace for items IDs.
5456
For example: `acacia_boat -> minecraft:acacia_boat`.
55-
If you use item ID without namespace it will search over all registries.
57+
If you use item ID without a namespace, it will search over all registries.
5658

57-
Registry | Namespace
58-
-------------------------------------|----------------
59-
[Minecraft][MinecraftItemsRegistry] | `minecraft:`
60-
[CustomItems] | `customitems:`
61-
[MMOItems] | `mmoitems:`
59+
Registry | ID Structure
60+
-------------------------------------|--------------------------
61+
[Minecraft][MinecraftItemsRegistry] | `minecraft:[id]`
62+
[CustomItems] | `customitems:[id]`
63+
[MMOItems] | `mmoitems:[id]`
64+
[QuantumRPG] | `quantumrpg:[type]/[id]`
6265

6366
[minecraft-exp]: https://minecraft.gamepedia.com/Experience
6467
[skillapi]: https://www.spigotmc.org/resources/4824/
@@ -67,6 +70,7 @@ If you use item ID without namespace it will search over all registries.
6770
[mmocore]: https://www.spigotmc.org/resources/70575/
6871
[mmoitems]: https://www.spigotmc.org/resources/39267/
6972
[heroes]: https://www.spigotmc.org/resources/24734/
73+
[quantumrpg]: https://www.spigotmc.org/resources/40007/
7074

7175
[mimic-bukkit-api]: ../mimic-bukkit-api
7276

mimic-bukkit/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,8 @@ dependencies {
5050

5151
// From libs/ directory
5252
compileOnly(":CustomItemsAPI")
53+
compileOnly(":QuantumRPG:5.10.2")
54+
compileOnly(":NexEngine:2.0.3")
5355

5456
testImplementation(spigotApi)
5557
testImplementation(rpgplugins.skillapi)
419 KB
Binary file not shown.
1.09 MB
Binary file not shown.

mimic-bukkit/src/main/kotlin/Mimic.kt

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ import ru.endlesscode.mimic.impl.mimic.PermissionsClassSystem
3939
import ru.endlesscode.mimic.impl.mmocore.MmoCoreClassSystem
4040
import ru.endlesscode.mimic.impl.mmocore.MmoCoreLevelSystem
4141
import ru.endlesscode.mimic.impl.mmoitems.MmoItemsRegistry
42+
import ru.endlesscode.mimic.impl.quantumrpg.QuantumRpgClassSystem
43+
import ru.endlesscode.mimic.impl.quantumrpg.QuantumRpgItemsRegistry
44+
import ru.endlesscode.mimic.impl.quantumrpg.QuantumRpgLevelSystem
4245
import ru.endlesscode.mimic.impl.skillapi.SkillApiClassSystem
4346
import ru.endlesscode.mimic.impl.skillapi.SkillApiLevelSystem
4447
import ru.endlesscode.mimic.impl.vanilla.MinecraftItemsRegistry
@@ -66,25 +69,27 @@ public class Mimic : JavaPlugin() {
6669
registerCommands()
6770
}
6871

69-
@Suppress("RemoveExplicitTypeArguments") // We should specify type explicitly
7072
private fun hookDefaultServices() {
7173
// LevelSystem
7274
hookLevels(MinecraftLevelSystem::Provider, Lowest)
7375
hookLevels(SkillApiLevelSystem::Provider, Normal, "com.sucy.skill.SkillAPI")
7476
hookLevels(BattleLevelsLevelSystem::Provider, Normal, "me.robin.battlelevels.api.BattleLevelsAPI")
7577
hookLevels(MmoCoreLevelSystem::Provider, Normal, "net.Indyuce.mmocore.MMOCore")
7678
hookLevels(HeroesLevelSystem::Provider, Normal, "com.herocraftonline.heroes.Heroes")
79+
hookLevels(QuantumRpgLevelSystem::Provider, Normal, "su.nightexpress.quantumrpg.QuantumRPG")
7780

7881
// ClassSystem
7982
hookClasses(PermissionsClassSystem::Provider, Lowest)
8083
hookClasses(SkillApiClassSystem::Provider, Normal, "com.sucy.skill.SkillAPI")
8184
hookClasses(MmoCoreClassSystem::Provider, Normal, "net.Indyuce.mmocore.MMOCore")
8285
hookClasses(HeroesClassSystem::Provider, Normal, "com.herocraftonline.heroes.Heroes")
86+
hookClasses(QuantumRpgClassSystem::Provider, Normal, "su.nightexpress.quantumrpg.QuantumRPG")
8387

8488
// ItemsRegistry
8589
hookItems(::MinecraftItemsRegistry, Lowest)
8690
hookItems(::CustomItemsRegistry, Normal, "com.jojodmo.customitems.api.CustomItemsAPI")
8791
hookItems(::MmoItemsRegistry, Normal, "net.Indyuce.mmoitems.MMOItems")
92+
hookItems(::QuantumRpgItemsRegistry, Normal, "su.nightexpress.quantumrpg.QuantumRPG")
8893
hookItems({ MimicItemsRegistry(servicesManager) }, Highest)
8994
}
9095

mimic-bukkit/src/main/kotlin/command/ItemsSubcommand.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,15 +32,15 @@ import ru.endlesscode.mimic.items.BukkitItemsRegistry
3232
internal class ItemsSubcommand(private val itemsRegistry: BukkitItemsRegistry) : MimicCommand() {
3333

3434
override fun afterRegister(manager: AbstractCommandManager) {
35-
manager.getCommandCompletions().registerAsyncCompletion("item") { itemsRegistry.knownIds }
35+
manager.commandCompletions.registerAsyncCompletion("item") { itemsRegistry.knownIds }
3636
}
3737

3838
@Subcommand("info")
3939
@Description("Show information about items service")
4040
fun info(sender: CommandSender) {
4141
sender.send(
4242
"&3Items Service: &7${itemsRegistry.id}",
43-
"&3Known IDs amount: &7${itemsRegistry.knownIds.size}"
43+
"&3Known IDs amount: &7${itemsRegistry.knownIds.size}+"
4444
)
4545
}
4646

mimic-bukkit/src/main/kotlin/command/LevelSystemSubcommand.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ internal class LevelSystemSubcommand(
6060
fun set(
6161
sender: CommandSender,
6262
amount: Double,
63-
@Default("exp") type: ExtendedValueType,
63+
@Default("lvl") type: ExtendedValueType,
6464
@Optional @Flags("other,defaultself") player: Player
6565
) {
6666
catchUnsupported {

mimic-bukkit/src/main/kotlin/impl/mimic/MimicItemsRegistry.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,15 +63,13 @@ public class MimicItemsRegistry(private val servicesManager: ServicesManager) :
6363

6464
override fun getItemId(item: ItemStack): String? {
6565
return services.asSequence()
66-
.map { service -> service.getItemId(item)?.let { service.namespaced(it) } }
67-
.filterNotNull()
66+
.mapNotNull { service -> service.getItemId(item)?.let { service.namespaced(it) } }
6867
.firstOrNull()
6968
}
7069

7170
override fun getItem(itemId: String, amount: Int): ItemStack? {
7271
return runOnServices(itemId) { id ->
73-
map { service -> service.getItem(id, amount) }
74-
.filterNotNull()
72+
mapNotNull { service -> service.getItem(id, amount) }
7573
.firstOrNull()
7674
}
7775
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package ru.endlesscode.mimic.impl.quantumrpg
2+
3+
import org.bukkit.entity.Player
4+
import ru.endlesscode.mimic.classes.BukkitClassSystem
5+
import ru.endlesscode.mimic.internal.stripColor
6+
import su.nightexpress.quantumrpg.modules.list.classes.api.RPGClass
7+
8+
public class QuantumRpgClassSystem private constructor(
9+
player: Player,
10+
private val quantumRpg: QuantumRpgWrapper,
11+
) : BukkitClassSystem(player) {
12+
13+
public companion object {
14+
public const val ID: String = "quantumrpg"
15+
}
16+
17+
override val primaryClass: String?
18+
get() = quantumRpg.getPlayerClass(player)?.colorlessName
19+
20+
override val classes: List<String>
21+
get() {
22+
val playerClass = quantumRpg.getPlayerClass(player) ?: return emptyList()
23+
return (sequenceOf(playerClass) + playerClass.parents.asSequence())
24+
.map { it.colorlessName }
25+
.toList()
26+
}
27+
28+
private val RPGClass.colorlessName: String get() = name.stripColor()
29+
30+
internal class Provider : BukkitClassSystem.Provider(ID) {
31+
32+
private val quantumRpg = QuantumRpgWrapper()
33+
34+
override val isEnabled: Boolean
35+
get() = quantumRpg.isEnabled
36+
37+
override fun getSystem(player: Player): BukkitClassSystem {
38+
return QuantumRpgClassSystem(player, quantumRpg)
39+
}
40+
}
41+
}

0 commit comments

Comments
 (0)