Skip to content
This repository was archived by the owner on Dec 3, 2022. It is now read-only.

Commit a9a9bea

Browse files
committed
1.1.5 add SimpleAsyncTaskAPI add AsyncListener
1 parent b5f445b commit a9a9bea

File tree

7 files changed

+366
-29
lines changed

7 files changed

+366
-29
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<groupId>top.wetabq.easyapi</groupId>
99
<artifactId>EasyAPI</artifactId>
10-
<version>1.1.3</version>
10+
<version>1.1.5</version>
1111

1212

1313
<licenses>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,251 @@
1+
package top.wetabq.easyapi.api.defaults
2+
3+
4+
import cn.nukkit.event.EventHandler
5+
import cn.nukkit.event.Listener
6+
import cn.nukkit.event.block.BlockBreakEvent
7+
import cn.nukkit.event.block.BlockPlaceEvent
8+
import cn.nukkit.event.entity.EntityArmorChangeEvent
9+
import cn.nukkit.event.entity.EntityDamageByEntityEvent
10+
import cn.nukkit.event.entity.EntityDamageEvent
11+
import cn.nukkit.event.entity.EntityDeathEvent
12+
import cn.nukkit.event.inventory.CraftItemEvent
13+
import cn.nukkit.event.inventory.InventoryPickupItemEvent
14+
import cn.nukkit.event.inventory.InventoryTransactionEvent
15+
import cn.nukkit.event.level.WeatherChangeEvent
16+
import cn.nukkit.event.player.*
17+
import top.wetabq.easyapi.EasyAPI
18+
import top.wetabq.easyapi.api.SimpleIntegrateAPI
19+
import top.wetabq.easyapi.listener.AsyncListener
20+
import top.wetabq.easyapi.module.defaults.asyncTaskCallEvent
21+
22+
object AsyncListenerAPI : SimpleIntegrateAPI, Listener, AsyncListener {
23+
24+
private val asyncListenerList = arrayListOf<AsyncListener>()
25+
26+
init {
27+
EasyAPI.server.pluginManager.registerEvents(this, EasyAPI.INSTANCE)
28+
}
29+
30+
fun add(t: AsyncListener): AsyncListenerAPI {
31+
asyncListenerList.add(t)
32+
return this
33+
}
34+
35+
fun remove(t: AsyncListener): AsyncListenerAPI {
36+
asyncListenerList.remove(t)
37+
return this
38+
}
39+
40+
@EventHandler
41+
override fun onPlayerChatEvent(event: PlayerChatEvent) {
42+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
43+
asyncListenerList.forEach { it.onPlayerChatEvent(event) }
44+
}
45+
}
46+
47+
@EventHandler
48+
override fun onPlayerCommandPreprocessEvent(event: PlayerCommandPreprocessEvent) {
49+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
50+
asyncListenerList.forEach { it.onPlayerCommandPreprocessEvent(event) }
51+
}
52+
}
53+
54+
@EventHandler
55+
override fun onPlayerDeathEvent(event: PlayerDeathEvent) {
56+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
57+
asyncListenerList.forEach { it.onPlayerDeathEvent(event) }
58+
}
59+
}
60+
61+
@EventHandler
62+
override fun onPlayerBucketEmptyEvent(event: PlayerBucketEmptyEvent) {
63+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
64+
asyncListenerList.forEach { it.onPlayerBucketEmptyEvent(event) }
65+
}
66+
}
67+
68+
@EventHandler
69+
override fun onPlayerBucketFillEvent(event: PlayerBucketFillEvent) {
70+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
71+
asyncListenerList.forEach { it.onPlayerBucketFillEvent(event) }
72+
}
73+
}
74+
75+
@EventHandler
76+
override fun onPlayerDropItemEvent(event: PlayerDropItemEvent) {
77+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
78+
asyncListenerList.forEach { it.onPlayerDropItemEvent(event) }
79+
}
80+
}
81+
82+
@EventHandler
83+
override fun onPlayerEatFoodEvent(event: PlayerEatFoodEvent) {
84+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
85+
asyncListenerList.forEach { it.onPlayerEatFoodEvent(event) }
86+
}
87+
}
88+
89+
@EventHandler
90+
override fun onPlayerFoodLevelChangeEvent(event: PlayerFoodLevelChangeEvent) {
91+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
92+
asyncListenerList.forEach { it.onPlayerFoodLevelChangeEvent(event) }
93+
}
94+
}
95+
96+
@EventHandler
97+
override fun onPlayerFormRespondedEvent(event: PlayerFormRespondedEvent) {
98+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
99+
asyncListenerList.forEach { it.onPlayerFormRespondedEvent(event) }
100+
}
101+
}
102+
103+
@EventHandler
104+
override fun onPlayerGameModeChangeEvent(event: PlayerGameModeChangeEvent) {
105+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
106+
asyncListenerList.forEach { it.onPlayerGameModeChangeEvent(event) }
107+
}
108+
}
109+
110+
@EventHandler
111+
override fun onPlayerInteractEntityEvent(event: PlayerInteractEntityEvent) {
112+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
113+
asyncListenerList.forEach { it.onPlayerInteractEntityEvent(event) }
114+
}
115+
}
116+
117+
@EventHandler
118+
override fun onPlayerInteractEvent(event: PlayerInteractEvent) {
119+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
120+
asyncListenerList.forEach { it.onPlayerInteractEvent(event) }
121+
}
122+
}
123+
124+
@EventHandler
125+
override fun onPlayerItemHeldEvent(event: PlayerItemHeldEvent) {
126+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
127+
asyncListenerList.forEach { it.onPlayerItemHeldEvent(event) }
128+
}
129+
}
130+
131+
@EventHandler
132+
override fun onPlayerJoinEvent(event: PlayerJoinEvent) {
133+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
134+
asyncListenerList.forEach { it.onPlayerJoinEvent(event) }
135+
}
136+
}
137+
138+
@EventHandler
139+
override fun onPlayerLoginEvent(event: PlayerLoginEvent) {
140+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
141+
asyncListenerList.forEach { it.onPlayerLoginEvent(event) }
142+
}
143+
}
144+
145+
@EventHandler
146+
override fun onPlayerMoveEvent(event: PlayerMoveEvent) {
147+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
148+
asyncListenerList.forEach { it.onPlayerMoveEvent(event) }
149+
}
150+
}
151+
152+
@EventHandler
153+
override fun onPlayerPreLoginEvent(event: PlayerPreLoginEvent) {
154+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
155+
asyncListenerList.forEach { it.onPlayerPreLoginEvent(event) }
156+
}
157+
}
158+
159+
@EventHandler
160+
override fun onPlayerQuitEvent(event: PlayerQuitEvent) {
161+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
162+
asyncListenerList.forEach { it.onPlayerQuitEvent(event) }
163+
}
164+
}
165+
166+
@EventHandler
167+
override fun onPlayerRespawnEvent(event: PlayerRespawnEvent) {
168+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
169+
asyncListenerList.forEach { it.onPlayerRespawnEvent(event) }
170+
}
171+
}
172+
173+
@EventHandler
174+
override fun onPlayerTeleportEvent(event: PlayerTeleportEvent) {
175+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
176+
asyncListenerList.forEach { it.onPlayerTeleportEvent(event) }
177+
}
178+
}
179+
180+
@EventHandler
181+
override fun onBlockBreakEvent(event: BlockBreakEvent) {
182+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
183+
asyncListenerList.forEach { it.onBlockBreakEvent(event) }
184+
}
185+
}
186+
187+
@EventHandler
188+
override fun onBlockPlaceEvent(event: BlockPlaceEvent) {
189+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
190+
asyncListenerList.forEach { it.onBlockPlaceEvent(event) }
191+
}
192+
}
193+
194+
@EventHandler
195+
override fun onEntityArmorChangeEvent(event: EntityArmorChangeEvent) {
196+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
197+
asyncListenerList.forEach { it.onEntityArmorChangeEvent(event) }
198+
}
199+
}
200+
201+
@EventHandler
202+
override fun onEntityDamageByEntityEvent(event: EntityDamageByEntityEvent) {
203+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
204+
asyncListenerList.forEach { it.onEntityDamageByEntityEvent(event) }
205+
}
206+
}
207+
208+
@EventHandler
209+
override fun onEntityDamageEvent(event: EntityDamageEvent) {
210+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
211+
asyncListenerList.forEach { it.onEntityDamageEvent(event) }
212+
}
213+
}
214+
215+
@EventHandler
216+
override fun onEntityDeathEvent(event: EntityDeathEvent) {
217+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
218+
asyncListenerList.forEach { it.onEntityDeathEvent(event) }
219+
}
220+
}
221+
222+
@EventHandler
223+
override fun onCraftItemEvent(event: CraftItemEvent) {
224+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
225+
asyncListenerList.forEach { it.onCraftItemEvent(event) }
226+
}
227+
}
228+
229+
@EventHandler
230+
override fun onInventoryPickupItemEvent(event: InventoryPickupItemEvent) {
231+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
232+
asyncListenerList.forEach { it.onInventoryPickupItemEvent(event) }
233+
}
234+
}
235+
236+
@EventHandler
237+
override fun onInventoryTransactionEvent(event: InventoryTransactionEvent) {
238+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
239+
asyncListenerList.forEach { it.onInventoryTransactionEvent(event) }
240+
}
241+
}
242+
243+
@EventHandler
244+
override fun onWeatherChangeEvent(event: WeatherChangeEvent) {
245+
asyncTaskCallEvent(event, EasyAPI.INSTANCE) {
246+
asyncListenerList.forEach { it.onWeatherChangeEvent(event) }
247+
}
248+
}
249+
250+
251+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package top.wetabq.easyapi.api.defaults
2+
3+
import cn.nukkit.scheduler.AsyncTask
4+
import top.wetabq.easyapi.EasyAPI
5+
import top.wetabq.easyapi.api.SimpleIntegrateAPI
6+
7+
object SimpleAsyncTaskAPI : SimpleIntegrateAPI {
8+
9+
fun add(action: () -> Unit): AsyncTask {
10+
val task =
11+
object: AsyncTask() {
12+
override fun onRun() {
13+
action()
14+
}
15+
}
16+
EasyAPI.server.scheduler.scheduleAsyncTask(EasyAPI.INSTANCE, task)
17+
return task
18+
}
19+
20+
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
package top.wetabq.easyapi.api.defaults
2+
3+
import cn.nukkit.scheduler.PluginTask
4+
import top.wetabq.easyapi.EasyAPI
5+
import top.wetabq.easyapi.api.SimpleIntegrateAPI
6+
7+
object SimplePluginTaskAPI : SimpleIntegrateAPI {
8+
9+
fun delay(delay: Int, action: (Int) -> Unit): PluginTask<EasyAPI> {
10+
val task =
11+
object: PluginTask<EasyAPI>(EasyAPI.INSTANCE) {
12+
13+
override fun onRun(currentTick: Int) {
14+
action(currentTick)
15+
}
16+
}
17+
EasyAPI.server.scheduler.scheduleDelayedTask(task, delay)
18+
return task
19+
}
20+
21+
fun repeating(period: Int, action: (Int) -> Unit): PluginTask<EasyAPI> {
22+
val task =
23+
object: PluginTask<EasyAPI>(EasyAPI.INSTANCE) {
24+
25+
override fun onRun(currentTick: Int) {
26+
action(currentTick)
27+
}
28+
}
29+
EasyAPI.server.scheduler.scheduleRepeatingTask(task, period)
30+
return task
31+
}
32+
33+
fun delayRepeating(delay: Int, period: Int, action: (Int) -> Unit): PluginTask<EasyAPI> {
34+
val task =
35+
object: PluginTask<EasyAPI>(EasyAPI.INSTANCE) {
36+
37+
override fun onRun(currentTick: Int) {
38+
action(currentTick)
39+
}
40+
}
41+
EasyAPI.server.scheduler.scheduleDelayedRepeatingTask(task, delay, period)
42+
return task
43+
}
44+
45+
46+
}

src/main/java/top/wetabq/easyapi/config/encoder/advance/AdvanceCodecEasyConfig.kt

+7-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ import top.wetabq.easyapi.config.encoder.CodecEasyConfig
66

77
abstract class AdvanceCodecEasyConfig<T>(
88
configName:String,
9-
plugin: Plugin
9+
plugin: Plugin,
10+
private val defaultValue: T
1011
) : CodecEasyConfig<T>(configName, plugin),
1112
AdvanceConfigCodec<T> {
1213

@@ -29,4 +30,9 @@ abstract class AdvanceCodecEasyConfig<T>(
2930
configSection.putAll(encodeMap)
3031
}
3132

33+
fun safeGetData(key: String): T {
34+
if (!simpleConfig.containsKey(key)) simpleConfig[key] = defaultValue
35+
return simpleConfig[key]?:defaultValue
36+
}
37+
3238
}

src/main/java/top/wetabq/easyapi/config/encoder/advance/SimpleCodecEasyConfig.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ abstract class SimpleCodecEasyConfig<T>(
66
configName:String,
77
val plugin: Plugin,
88
val clazzT: Class<T>,
9+
defaultValue: T,
910
private val codec: AdvanceConfigCodec<T> = ReflectionConfigCodec(
1011
clazzT
1112
)
12-
) : AdvanceCodecEasyConfig<T>(configName, plugin) {
13+
) : AdvanceCodecEasyConfig<T>(configName, plugin, defaultValue) {
1314

1415
override fun encode(obj: T): LinkedHashMap<String, *> = codec.encode(obj)
1516

0 commit comments

Comments
 (0)