1
+ package com.willfp.libreforge.integrations.mcmmo.impl
2
+
3
+ import com.gmail.nossr50.datatypes.skills.PrimarySkillType
4
+ import com.gmail.nossr50.events.experience.McMMOPlayerLevelChangeEvent
5
+ import com.gmail.nossr50.util.player.UserManager
6
+ import com.willfp.eco.core.config.interfaces.Config
7
+ import com.willfp.libreforge.Dispatcher
8
+ import com.willfp.libreforge.NoCompileData
9
+ import com.willfp.libreforge.ProvidedHolder
10
+ import com.willfp.libreforge.arguments
11
+ import com.willfp.libreforge.conditions.Condition
12
+ import com.willfp.libreforge.get
13
+ import com.willfp.libreforge.toDispatcher
14
+ import com.willfp.libreforge.updateEffects
15
+ import org.bukkit.entity.Player
16
+ import org.bukkit.event.EventHandler
17
+ import org.bukkit.event.EventPriority
18
+
19
+ object ConditionHasMcMMOLevel : Condition<NoCompileData>(" has_mcmmo_skill_level" ) {
20
+ override val arguments = arguments {
21
+ require(" skill" , " You must specify the skill!" )
22
+ require(" level" , " You must specify the skill level!" )
23
+ }
24
+
25
+ override fun isMet (
26
+ dispatcher : Dispatcher <* >,
27
+ config : Config ,
28
+ holder : ProvidedHolder ,
29
+ compileData : NoCompileData
30
+ ): Boolean {
31
+ val player = dispatcher.get<Player >() ? : return false
32
+ val mcmmoPlayer = UserManager .getPlayer(player) ? : return false
33
+
34
+ val skillName = config.getString(" skill" ).uppercase() ? : return false
35
+ val skill = try {
36
+ PrimarySkillType .valueOf(skillName)
37
+ } catch (e: IllegalArgumentException ) {
38
+ return false
39
+ }
40
+
41
+ return mcmmoPlayer.getSkillLevel(skill) >= config.getInt(" level" )
42
+ }
43
+
44
+ @EventHandler(priority = EventPriority .MONITOR , ignoreCancelled = true )
45
+ fun handle (event : McMMOPlayerLevelChangeEvent ) {
46
+ event.player.toDispatcher().updateEffects()
47
+ }
48
+ }
0 commit comments