Skip to content

Commit 60d63d6

Browse files
committed
[1.2.3] Update
1 parent ae90198 commit 60d63d6

11 files changed

Lines changed: 193 additions & 71 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
group=io.github.itsflicker.itstools
2-
version=1.2.2
2+
version=1.2.3

src/main/kotlin/io/github/itsflicker/itstools/module/command/CommandOperation.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ object CommandOperation {
7878
sender.sendMessage("§cClick an entity in the next 10 seconds.")
7979
}
8080
dynamic("args", optional = true) {
81-
suggestion<Player>(uncheck = true) { _, _ ->
81+
suggestUncheck {
8282
listOf("-d", "-s", "-t", "-p", "--f")
8383
}
8484
execute<Player> { sender, _, argument ->

src/main/kotlin/io/github/itsflicker/itstools/module/command/CommandTools.kt

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,7 @@ import io.github.itsflicker.itstools.module.feature.DebugItem
66
import org.bukkit.command.CommandSender
77
import org.bukkit.entity.Player
88
import taboolib.common.platform.ProxyCommandSender
9-
import taboolib.common.platform.command.CommandBody
10-
import taboolib.common.platform.command.CommandHeader
11-
import taboolib.common.platform.command.mainCommand
12-
import taboolib.common.platform.command.subCommand
9+
import taboolib.common.platform.command.*
1310
import taboolib.common.platform.function.getProxyPlayer
1411
import taboolib.common5.Demand
1512
import taboolib.expansion.createHelper
@@ -42,6 +39,20 @@ object CommandTools {
4239
@CommandBody(["rp"], optional = true)
4340
val resourcepack = CommandResourcePack
4441

42+
@CommandBody(permission = "itstools.command.forcechat", optional = true)
43+
val forcechat = subCommand {
44+
dynamic("player") {
45+
suggestPlayers(allSymbol = true)
46+
dynamic("message") {
47+
execute<CommandSender> { _, context, argument ->
48+
context.playerFor(-1) {
49+
it.chat(argument)
50+
}
51+
}
52+
}
53+
}
54+
}
55+
4556
@CommandBody(permission = "itstools.command.getdebugitem", optional = true)
4657
val getdebugitem = subCommand {
4758
execute<Player> { sender, _, _ ->
@@ -52,7 +63,7 @@ object CommandTools {
5263
@CommandBody(permission = "itstools.command.simplekether", optional = true)
5364
val simplekether = subCommand {
5465
dynamic("args") {
55-
suggestion<ProxyCommandSender>(uncheck = true) { _, _ ->
66+
suggestUncheck {
5667
listOf("-source", "-namespace", "-sender")
5768
}
5869
execute<ProxyCommandSender> { sender, _, argument ->
Lines changed: 19 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,17 @@
11
package io.github.itsflicker.itstools.module.command.impl
22

3-
import dev.lone.itemsadder.api.ItemsAdder
43
import io.github.itsflicker.itstools.conf
54
import io.github.itsflicker.itstools.module.resourcepack.COSUploader
65
import io.github.itsflicker.itstools.module.resourcepack.OSSUploader
76
import io.github.itsflicker.itstools.module.resourcepack.ResourcePack
87
import io.github.itsflicker.itstools.util.isItemsAdderHooked
9-
import io.github.itsflicker.itstools.util.isOraxenHooked
10-
import io.github.itsflicker.itstools.util.nms
11-
import io.th0rgal.oraxen.OraxenPlugin
12-
import org.bukkit.Bukkit
138
import org.bukkit.command.CommandSender
149
import org.bukkit.entity.Player
1510
import taboolib.common.io.newFile
1611
import taboolib.common.platform.ProxyCommandSender
17-
import taboolib.common.platform.command.CommandBody
18-
import taboolib.common.platform.command.subCommand
19-
import taboolib.common.platform.command.suggest
20-
import taboolib.common.platform.command.suggestPlayers
12+
import taboolib.common.platform.command.*
2113
import taboolib.common.platform.function.getDataFolder
22-
import taboolib.common.platform.function.warning
14+
import taboolib.common.platform.function.submitAsync
2315

2416
/**
2517
* CommandResourcePack
@@ -37,22 +29,24 @@ object CommandResourcePack {
3729
conf.resource_packs.filterValues { it.condition.eval(sender) }.keys.toList()
3830
}
3931
execute<Player> { sender, _, argument ->
40-
send(sender, argument)
32+
ResourcePack.send(sender, argument)
4133
}
4234
}
4335
}
4436

4537
@CommandBody(permission = "itstools.command.resourcepack.send")
4638
val send = subCommand {
4739
dynamic("player") {
48-
suggestPlayers()
40+
suggestPlayers(allSymbol = true)
4941
dynamic("id") {
5042
suggest {
5143
conf.resource_packs.keys.toList()
5244
}
5345
execute<ProxyCommandSender> { _, context, argument ->
54-
val player = Bukkit.getPlayer(context.argument(-1))!!
55-
send(player, argument)
46+
context.playerFor(-1) {
47+
val player = it.cast<Player>()
48+
ResourcePack.send(player, argument)
49+
}
5650
}
5751
}
5852
}
@@ -84,43 +78,22 @@ object CommandResourcePack {
8478
getDataFolder().resolve("packs").resolve(argument)
8579
}
8680
}
87-
val succeed = when (context.argument(-1)) {
88-
"cos" -> COSUploader.upload(file)
89-
"oss" -> OSSUploader.upload(file)
90-
else -> error("out of case")
91-
}
92-
if (succeed) {
93-
sender.sendMessage("§a上传成功!")
94-
} else {
95-
sender.sendMessage("§c上传失败!")
81+
submitAsync {
82+
val succeed = when (context.argument(-1)) {
83+
"cos" -> COSUploader.upload(file)
84+
"oss" -> OSSUploader.upload(file)
85+
else -> error("out of case")
86+
}
87+
if (succeed) {
88+
sender.sendMessage("§a上传成功!")
89+
} else {
90+
sender.sendMessage("§c上传失败!")
91+
}
9692
}
9793
}
9894
}
9995
}
10096

10197
}
10298

103-
private fun send(player: Player, id: String) {
104-
val resourcePack = conf.resource_packs[id] ?: return
105-
ResourcePack.selected.remove(player.uniqueId)?.removed?.eval(player)
106-
when {
107-
resourcePack.url.equals("itemsadder", ignoreCase = true) -> {
108-
if (isItemsAdderHooked) {
109-
ItemsAdder.applyResourcepack(player)
110-
} else {
111-
warning("ItemsAdder not loaded.")
112-
}
113-
}
114-
resourcePack.url.equals("oraxen", ignoreCase = true) -> {
115-
if (isOraxenHooked) {
116-
OraxenPlugin.get().uploadManager.sender.sendPack(player)
117-
} else {
118-
warning("Oraxen not loaded.")
119-
}
120-
}
121-
else -> nms.sendResourcePack(player, resourcePack.url, resourcePack.hash)
122-
}
123-
ResourcePack.selected[player.uniqueId] = resourcePack
124-
}
125-
12699
}
Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package io.github.itsflicker.itstools.module.command.impl
22

3-
import org.bukkit.Bukkit
43
import org.bukkit.command.CommandSender
4+
import org.bukkit.entity.Player
5+
import taboolib.common.platform.command.playerFor
56
import taboolib.common.platform.command.subCommand
67
import taboolib.common.platform.command.suggestPlayers
78
import taboolib.module.nms.sendMap
89
import java.io.File
9-
import java.net.URL
1010

1111
/**
1212
* @author wlys
@@ -17,25 +17,30 @@ object CommandSendMap {
1717
val command = subCommand {
1818
literal("file") {
1919
dynamic("player") {
20-
suggestPlayers()
20+
suggestPlayers(allSymbol = true)
2121
dynamic("file") {
2222
execute<CommandSender> { _, context, argument ->
23-
val player = Bukkit.getPlayer(context.argument(-1)) ?: return@execute
24-
player.sendMap(File(argument))
23+
context.playerFor(-1) {
24+
val player = it.cast<Player>()
25+
player.sendMap(File(argument))
26+
}
2527
}
2628
}
2729
}
2830
}
2931
literal("url") {
3032
dynamic("player") {
31-
suggestPlayers()
33+
suggestPlayers(allSymbol = true)
3234
dynamic("url") {
3335
execute<CommandSender> { _, context, argument ->
34-
val player = Bukkit.getPlayer(context.argument(-1)) ?: return@execute
35-
player.sendMap(URL(argument))
36+
context.playerFor(-1) {
37+
val player = it.cast<Player>()
38+
player.sendMap(File(argument))
39+
}
3640
}
3741
}
3842
}
3943
}
4044
}
45+
4146
}

src/main/kotlin/io/github/itsflicker/itstools/module/command/impl/CommandSendToast.kt

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
package io.github.itsflicker.itstools.module.command.impl
22

3-
import org.bukkit.Bukkit
43
import org.bukkit.Material
4+
import org.bukkit.entity.Player
55
import taboolib.common.platform.ProxyCommandSender
6+
import taboolib.common.platform.command.playerFor
67
import taboolib.common.platform.command.subCommand
78
import taboolib.common.platform.command.suggest
89
import taboolib.common.platform.command.suggestPlayers
@@ -21,7 +22,7 @@ object CommandSendToast {
2122

2223
val command = subCommand {
2324
dynamic("player") {
24-
suggestPlayers()
25+
suggestPlayers(allSymbol = true)
2526
dynamic("frame") {
2627
suggest {
2728
ToastFrame.values().map { it.toString() }
@@ -32,12 +33,14 @@ object CommandSendToast {
3233
}
3334
dynamic("message") {
3435
execute<ProxyCommandSender> { _, context, argument ->
35-
val player = Bukkit.getPlayer(context.argument(-3))
36-
player?.sendToast(
37-
Material.valueOf(context.argument(-1)),
38-
argument.colored(),
39-
ToastFrame.valueOf(context.argument(-2))
40-
)
36+
context.playerFor(-3) {
37+
val player = it.cast<Player>()
38+
player.sendToast(
39+
Material.valueOf(context.argument(-1)),
40+
argument.colored(),
41+
ToastFrame.valueOf(context.argument(-2))
42+
)
43+
}
4144
}
4245
}
4346
}
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
package io.github.itsflicker.itstools.module.feature
2+
3+
import io.github.itsflicker.itstools.util.spawnRandomFirework
4+
import org.bukkit.entity.AreaEffectCloud
5+
import org.bukkit.entity.Creeper
6+
import org.bukkit.entity.EntityType
7+
import org.bukkit.event.entity.EntityExplodeEvent
8+
import taboolib.common.platform.event.EventPriority
9+
import taboolib.common.platform.event.SubscribeEvent
10+
import taboolib.module.configuration.ConfigNode
11+
import taboolib.platform.util.kill
12+
13+
@Suppress("unused")
14+
object CreeperConfetti {
15+
16+
@ConfigNode("features.creeper_confetti.enabled")
17+
var enabled = false
18+
private set
19+
20+
@ConfigNode("features.creeper_confetti.max_effects")
21+
var maxEffects = 3
22+
private set
23+
24+
@SubscribeEvent(EventPriority.HIGHEST, ignoreCancelled = true)
25+
fun onExplode(e: EntityExplodeEvent) {
26+
if (!enabled) return
27+
val creeper = e.entity as? Creeper ?: return
28+
e.isCancelled = true
29+
spawnRandomFirework(creeper.eyeLocation, 0, if (creeper.isPowered) 6 else 3, maxEffects, creeper)
30+
spawnLingeringCloud(creeper)
31+
creeper.kill()
32+
}
33+
34+
private fun spawnLingeringCloud(creeper: Creeper) {
35+
val effects = creeper.activePotionEffects
36+
if (effects.isNotEmpty()) {
37+
val cloud = creeper.world.spawnEntity(creeper.location, EntityType.AREA_EFFECT_CLOUD) as AreaEffectCloud
38+
cloud.radius = 2.5F
39+
cloud.radiusOnUse = -0.5F
40+
cloud.waitTime = 10
41+
cloud.duration /= 2
42+
cloud.radiusPerTick = -cloud.radius / cloud.duration
43+
effects.forEach {
44+
cloud.addCustomEffect(it, true)
45+
}
46+
}
47+
}
48+
49+
}

src/main/kotlin/io/github/itsflicker/itstools/module/listeners/Listeners.kt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import io.github.itsflicker.itstools.module.feature.DebugItem
55
import io.github.itsflicker.itstools.module.feature.IPInfo
66
import io.github.itsflicker.itstools.module.resourcepack.ResourcePack
77
import io.github.itsflicker.itstools.module.script.Reaction
8+
import org.bukkit.World
89
import org.bukkit.entity.Phantom
910
import org.bukkit.entity.Player
1011
import org.bukkit.event.entity.CreatureSpawnEvent
@@ -24,15 +25,23 @@ import taboolib.platform.util.isMainhand
2425
@Suppress("unused")
2526
object Listeners {
2627

27-
fun quit(player: Player) {
28+
private fun quit(player: Player) {
2829
ResourcePack.selected.remove(player.uniqueId)?.removed?.eval(player)
2930
DebugItem.cooldown.reset(player.name)
3031
IPInfo.caches.remove(player.uniqueId)
3132
}
3233

34+
private fun applyWorld(player: Player, world: World) {
35+
val rp = conf.resource_packs.values.firstOrNull { world.name in it.worlds } ?: return
36+
val previous = ResourcePack.selected[player.uniqueId]
37+
if (previous != null && rp.id == previous.id) return
38+
ResourcePack.send(player, rp.id)
39+
}
40+
3341
@SubscribeEvent
3442
fun onJoin(e: PlayerJoinEvent) {
3543
IPInfo.cacheFromCloud(e.player)
44+
applyWorld(e.player, e.player.world)
3645
}
3746

3847
@SubscribeEvent
@@ -136,4 +145,9 @@ object Listeners {
136145
}
137146
}
138147

148+
@SubscribeEvent
149+
fun onWorldChanged(e: PlayerChangedWorldEvent) {
150+
applyWorld(e.player, e.player.world)
151+
}
152+
139153
}

0 commit comments

Comments
 (0)