Skip to content

Commit b962434

Browse files
API change
1 parent 483b696 commit b962434

File tree

14 files changed

+210
-52
lines changed

14 files changed

+210
-52
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,4 @@ bin/
4747
.idea/*
4848
.kotlin/*
4949
/logs
50+
/.gradle-user

api/KPaper.api

Lines changed: 67 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
public abstract interface class cc/modlabs/kpaper/command/CommandBuilder {
2-
public abstract fun getAliases ()Ljava/util/List;
3-
public abstract fun getDescription ()Ljava/lang/String;
2+
public fun getAliases ()Ljava/util/List;
3+
public fun getDescription ()Ljava/lang/String;
44
public abstract fun register ()Lcom/mojang/brigadier/tree/LiteralCommandNode;
55
}
66

@@ -1135,14 +1135,15 @@ public final class cc/modlabs/kpaper/inventory/mineskin/MinecraftSkin {
11351135
public fun toString ()Ljava/lang/String;
11361136
}
11371137

1138-
public synthetic class cc/modlabs/kpaper/inventory/mineskin/MinecraftSkin$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
1138+
public final synthetic class cc/modlabs/kpaper/inventory/mineskin/MinecraftSkin$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
11391139
public static final field INSTANCE Lcc/modlabs/kpaper/inventory/mineskin/MinecraftSkin$$serializer;
11401140
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
11411141
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcc/modlabs/kpaper/inventory/mineskin/MinecraftSkin;
11421142
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
11431143
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
11441144
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcc/modlabs/kpaper/inventory/mineskin/MinecraftSkin;)V
11451145
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
1146+
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
11461147
}
11471148

11481149
public final class cc/modlabs/kpaper/inventory/mineskin/MinecraftSkin$Companion {
@@ -1161,14 +1162,15 @@ public final class cc/modlabs/kpaper/inventory/mineskin/SKIN {
11611162
public fun toString ()Ljava/lang/String;
11621163
}
11631164

1164-
public synthetic class cc/modlabs/kpaper/inventory/mineskin/SKIN$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
1165+
public final synthetic class cc/modlabs/kpaper/inventory/mineskin/SKIN$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
11651166
public static final field INSTANCE Lcc/modlabs/kpaper/inventory/mineskin/SKIN$$serializer;
11661167
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
11671168
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcc/modlabs/kpaper/inventory/mineskin/SKIN;
11681169
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
11691170
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
11701171
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcc/modlabs/kpaper/inventory/mineskin/SKIN;)V
11711172
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
1173+
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
11721174
}
11731175

11741176
public final class cc/modlabs/kpaper/inventory/mineskin/SKIN$Companion {
@@ -1210,14 +1212,15 @@ public final class cc/modlabs/kpaper/inventory/mineskin/Textures {
12101212
public fun toString ()Ljava/lang/String;
12111213
}
12121214

1213-
public synthetic class cc/modlabs/kpaper/inventory/mineskin/Textures$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
1215+
public final synthetic class cc/modlabs/kpaper/inventory/mineskin/Textures$$serializer : kotlinx/serialization/internal/GeneratedSerializer {
12141216
public static final field INSTANCE Lcc/modlabs/kpaper/inventory/mineskin/Textures$$serializer;
12151217
public final fun childSerializers ()[Lkotlinx/serialization/KSerializer;
12161218
public final fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Lcc/modlabs/kpaper/inventory/mineskin/Textures;
12171219
public synthetic fun deserialize (Lkotlinx/serialization/encoding/Decoder;)Ljava/lang/Object;
12181220
public final fun getDescriptor ()Lkotlinx/serialization/descriptors/SerialDescriptor;
12191221
public final fun serialize (Lkotlinx/serialization/encoding/Encoder;Lcc/modlabs/kpaper/inventory/mineskin/Textures;)V
12201222
public synthetic fun serialize (Lkotlinx/serialization/encoding/Encoder;Ljava/lang/Object;)V
1223+
public fun typeParametersSerializers ()[Lkotlinx/serialization/KSerializer;
12211224
}
12221225

12231226
public final class cc/modlabs/kpaper/inventory/mineskin/Textures$Companion {
@@ -1238,10 +1241,10 @@ public final class cc/modlabs/kpaper/inventory/mineskin/Urls {
12381241
}
12391242

12401243
public abstract interface class cc/modlabs/kpaper/inventory/simple/SimpleGUI : org/bukkit/inventory/InventoryHolder {
1241-
public abstract fun handle (Lorg/bukkit/event/inventory/InventoryClickEvent;)V
1242-
public abstract fun onClose (Lorg/bukkit/event/inventory/InventoryCloseEvent;)V
1243-
public abstract fun onDrag (Lorg/bukkit/event/inventory/InventoryDragEvent;)V
1244-
public abstract fun open ()V
1244+
public fun handle (Lorg/bukkit/event/inventory/InventoryClickEvent;)V
1245+
public fun onClose (Lorg/bukkit/event/inventory/InventoryCloseEvent;)V
1246+
public fun onDrag (Lorg/bukkit/event/inventory/InventoryDragEvent;)V
1247+
public fun open ()V
12451248
}
12461249

12471250
public final class cc/modlabs/kpaper/inventory/simple/SimpleGUI$DefaultImpls {
@@ -1339,6 +1342,30 @@ public final class cc/modlabs/kpaper/main/KPluginKt {
13391342
public static final fun setPluginInstance (Lcc/modlabs/kpaper/main/KPlugin;)V
13401343
}
13411344

1345+
public final class cc/modlabs/kpaper/messages/AdventureSerializerKt {
1346+
public static final fun asStyledComponent (Ljava/lang/String;Lnet/kyori/adventure/text/minimessage/MiniMessage;Lnet/kyori/adventure/text/minimessage/tag/resolver/TagResolver;)Lnet/kyori/adventure/text/TextComponent;
1347+
public static synthetic fun asStyledComponent$default (Ljava/lang/String;Lnet/kyori/adventure/text/minimessage/MiniMessage;Lnet/kyori/adventure/text/minimessage/tag/resolver/TagResolver;ILjava/lang/Object;)Lnet/kyori/adventure/text/TextComponent;
1348+
public static final fun asStyledString (Lnet/kyori/adventure/text/ComponentLike;Lnet/kyori/adventure/text/minimessage/MiniMessage;)Ljava/lang/String;
1349+
public static synthetic fun asStyledString$default (Lnet/kyori/adventure/text/ComponentLike;Lnet/kyori/adventure/text/minimessage/MiniMessage;ILjava/lang/Object;)Ljava/lang/String;
1350+
public static final fun getAdventureSerializer ()Lnet/kyori/adventure/text/serializer/legacy/LegacyComponentSerializer;
1351+
public static final fun getAsComponent (Ljava/lang/String;)Lnet/kyori/adventure/text/TextComponent;
1352+
public static final fun getAsComponents (Ljava/lang/Iterable;)Ljava/util/List;
1353+
public static final fun getAsComponents (Ljava/lang/String;)Ljava/util/List;
1354+
public static final fun getAsPlainString (Lnet/kyori/adventure/text/ComponentLike;)Ljava/lang/String;
1355+
public static final fun getAsString (Lnet/kyori/adventure/text/ComponentLike;)Ljava/lang/String;
1356+
public static final fun getAsStyledComponent (Ljava/lang/String;)Lnet/kyori/adventure/text/TextComponent;
1357+
public static final fun getAsStyledString (Lnet/kyori/adventure/text/ComponentLike;)Ljava/lang/String;
1358+
public static final fun getMiniMessageSerializer ()Lnet/kyori/adventure/text/minimessage/MiniMessage;
1359+
public static final fun getPlainAdventureSerializer ()Lnet/kyori/adventure/text/serializer/ComponentSerializer;
1360+
public static final fun getStrictMiniMessageSerializer ()Lnet/kyori/adventure/text/minimessage/MiniMessage;
1361+
public static final fun setAdventureSerializer (Lnet/kyori/adventure/text/serializer/legacy/LegacyComponentSerializer;)V
1362+
public static final fun setMiniMessageSerializer (Lnet/kyori/adventure/text/minimessage/MiniMessage;)V
1363+
public static final fun setPlainAdventureSerializer (Lnet/kyori/adventure/text/serializer/ComponentSerializer;)V
1364+
public static final fun setStrictMiniMessageSerializer (Lnet/kyori/adventure/text/minimessage/MiniMessage;)V
1365+
public static final fun text (Ljava/lang/String;Lnet/kyori/adventure/text/minimessage/MiniMessage;Lnet/kyori/adventure/text/minimessage/tag/resolver/TagResolver;)Lnet/kyori/adventure/text/TextComponent;
1366+
public static synthetic fun text$default (Ljava/lang/String;Lnet/kyori/adventure/text/minimessage/MiniMessage;Lnet/kyori/adventure/text/minimessage/tag/resolver/TagResolver;ILjava/lang/Object;)Lnet/kyori/adventure/text/TextComponent;
1367+
}
1368+
13421369
public final class cc/modlabs/kpaper/messages/LocalMessageCooldown {
13431370
public static final field INSTANCE Lcc/modlabs/kpaper/messages/LocalMessageCooldown;
13441371
public final fun addCooldown-SxA4cEA (Ljava/util/UUID;Ljava/lang/String;J)V
@@ -1419,7 +1446,9 @@ public abstract interface class cc/modlabs/kpaper/npc/NPC {
14191446
public abstract fun addVisiblePlayer (Lorg/bukkit/entity/Player;)V
14201447
public abstract fun changeName (Ljava/lang/String;)V
14211448
public abstract fun followEntity (Lorg/bukkit/entity/Entity;D)Z
1449+
public static synthetic fun followEntity$default (Lcc/modlabs/kpaper/npc/NPC;Lorg/bukkit/entity/Entity;DILjava/lang/Object;)Z
14221450
public abstract fun followNearbyPlayers (DD)Z
1451+
public static synthetic fun followNearbyPlayers$default (Lcc/modlabs/kpaper/npc/NPC;DDILjava/lang/Object;)Z
14231452
public abstract fun getConversation ()Lkotlin/jvm/functions/Function1;
14241453
public abstract fun getDescription ()Lnet/kyori/adventure/text/Component;
14251454
public abstract fun getEntity ()Lorg/bukkit/entity/Entity;
@@ -1800,16 +1829,16 @@ public abstract interface class cc/modlabs/kpaper/party/PartyAPI {
18001829
public abstract fun getOnlinePartyMembers (Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture;
18011830
public abstract fun getPartyData (Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture;
18021831
public abstract fun getPartyId (Ljava/util/UUID;)Ljava/util/concurrent/CompletableFuture;
1803-
public abstract fun getPartyId (Lorg/bukkit/OfflinePlayer;)Ljava/util/concurrent/CompletableFuture;
1832+
public fun getPartyId (Lorg/bukkit/OfflinePlayer;)Ljava/util/concurrent/CompletableFuture;
18041833
public abstract fun getPartyLeader (Ljava/util/UUID;)Ljava/util/concurrent/CompletableFuture;
18051834
public abstract fun getPartyMemberCount (Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture;
18061835
public abstract fun getPartyMembers (Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture;
18071836
public abstract fun getPartyMembersOfPlayer (Ljava/util/UUID;)Ljava/util/concurrent/CompletableFuture;
18081837
public abstract fun getPlayerParty (Ljava/util/UUID;)Ljava/util/concurrent/CompletableFuture;
1809-
public abstract fun getPlayerParty (Lorg/bukkit/OfflinePlayer;)Ljava/util/concurrent/CompletableFuture;
1838+
public fun getPlayerParty (Lorg/bukkit/OfflinePlayer;)Ljava/util/concurrent/CompletableFuture;
18101839
public abstract fun hasInvite (Ljava/util/UUID;Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture;
18111840
public abstract fun isInParty (Ljava/util/UUID;)Ljava/util/concurrent/CompletableFuture;
1812-
public abstract fun isInParty (Lorg/bukkit/OfflinePlayer;)Ljava/util/concurrent/CompletableFuture;
1841+
public fun isInParty (Lorg/bukkit/OfflinePlayer;)Ljava/util/concurrent/CompletableFuture;
18131842
public abstract fun isPartyFull (Ljava/lang/String;)Ljava/util/concurrent/CompletableFuture;
18141843
public abstract fun isPartyLeader (Ljava/util/UUID;)Ljava/util/concurrent/CompletableFuture;
18151844
public abstract fun openPartyGUI (Lorg/bukkit/entity/Player;)V
@@ -1969,12 +1998,12 @@ public final class cc/modlabs/kpaper/util/ConversationAPI$Question {
19691998
}
19701999

19712000
public abstract interface class cc/modlabs/kpaper/util/Identity : net/kyori/adventure/key/Key, org/bukkit/Keyed {
1972-
public abstract fun asString ()Ljava/lang/String;
2001+
public fun asString ()Ljava/lang/String;
19732002
public abstract fun getIdentityKey ()Lnet/kyori/adventure/key/Key;
1974-
public abstract fun getKey ()Lorg/bukkit/NamespacedKey;
1975-
public abstract fun key ()Lnet/kyori/adventure/key/Key;
1976-
public abstract fun namespace ()Ljava/lang/String;
1977-
public abstract fun value ()Ljava/lang/String;
2003+
public fun getKey ()Lorg/bukkit/NamespacedKey;
2004+
public fun key ()Lnet/kyori/adventure/key/Key;
2005+
public fun namespace ()Ljava/lang/String;
2006+
public fun value ()Ljava/lang/String;
19782007
}
19792008

19802009
public final class cc/modlabs/kpaper/util/Identity$DefaultImpls {
@@ -2340,9 +2369,9 @@ public final class cc/modlabs/kpaper/visuals/effect/ParticleData : com/destroyst
23402369
public abstract interface class cc/modlabs/kpaper/visuals/effect/ParticleEffect {
23412370
public abstract fun play ()V
23422371
public abstract fun play (Ljava/util/Set;Ljava/util/Set;)V
2343-
public abstract fun play (Lorg/bukkit/Location;Ljava/util/Set;)V
2344-
public abstract fun play (Lorg/bukkit/Location;Lorg/bukkit/entity/Entity;)V
2345-
public abstract fun play (Lorg/bukkit/entity/Entity;Ljava/util/Set;)V
2372+
public fun play (Lorg/bukkit/Location;Ljava/util/Set;)V
2373+
public fun play (Lorg/bukkit/Location;Lorg/bukkit/entity/Entity;)V
2374+
public fun play (Lorg/bukkit/entity/Entity;Ljava/util/Set;)V
23462375
public abstract fun play ([Lorg/bukkit/Location;)V
23472376
public abstract fun play ([Lorg/bukkit/entity/Entity;)V
23482377
}
@@ -2437,3 +2466,21 @@ public final class cc/modlabs/kpaper/world/shape/CubicalShape {
24372466
public fun toString ()Ljava/lang/String;
24382467
}
24392468

2469+
public final class dev/fruxz/ascend/extension/CompatKt {
2470+
public static final fun dump (Ljava/lang/Object;)Ljava/lang/Object;
2471+
public static final fun forceCast (Ljava/lang/Object;)Ljava/lang/Object;
2472+
public static final fun forceCastOrNull (Ljava/lang/Object;)Ljava/lang/Object;
2473+
public static final fun isNull (Ljava/lang/Object;)Z
2474+
}
2475+
2476+
public final class dev/fruxz/stacked/TextCompatKt {
2477+
public static final fun text (Ljava/lang/String;Lnet/kyori/adventure/text/minimessage/MiniMessage;Lnet/kyori/adventure/text/minimessage/tag/resolver/TagResolver;)Lnet/kyori/adventure/text/Component;
2478+
public static synthetic fun text$default (Ljava/lang/String;Lnet/kyori/adventure/text/minimessage/MiniMessage;Lnet/kyori/adventure/text/minimessage/tag/resolver/TagResolver;ILjava/lang/Object;)Lnet/kyori/adventure/text/Component;
2479+
}
2480+
2481+
public final class dev/fruxz/stacked/extension/AdventureCompatKt {
2482+
public static final fun Times-WzaCiaA (JJJ)Lnet/kyori/adventure/title/Title$Times;
2483+
public static final fun Title (Lnet/kyori/adventure/text/Component;Lnet/kyori/adventure/text/Component;Lnet/kyori/adventure/title/Title$Times;)Lnet/kyori/adventure/title/Title;
2484+
public static final fun getAsPlainString (Lnet/kyori/adventure/text/ComponentLike;)Ljava/lang/String;
2485+
}
2486+

build.gradle.kts

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
33
import java.util.*
44

55
plugins {
6-
kotlin("jvm") version "2.1.20"
6+
kotlin("jvm") version "2.3.20"
77
`java-library`
88
id("org.jetbrains.kotlinx.binary-compatibility-validator") version "0.17.0"
99
id("io.papermc.paperweight.userdev") version "2.0.0-beta.19"
10-
kotlin("plugin.serialization") version "2.1.20"
10+
kotlin("plugin.serialization") version "2.3.20"
1111
id("maven-publish")
1212
id("org.sonarqube") version "7.0.1.6134"
1313
}
@@ -36,10 +36,7 @@ val mockkVersion = "1.13.16"
3636

3737
dependencies {
3838
paperweight.paperDevBundle("$minecraftVersion-R0.1-SNAPSHOT")
39-
40-
api("dev.fruxz:stacked:2025.8-d43bc19")
41-
42-
api("cc.modlabs:KlassicX:2025.12.4.1928")
39+
api("cc.modlabs:KlassicX:2026.3.30.1246")
4340

4441
api("com.squareup.okhttp3:okhttp:4.12.0")
4542

src/main/kotlin/cc/modlabs/kpaper/extensions/UXExtensions.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
package cc.modlabs.kpaper.extensions
44

5+
import cc.modlabs.klassicx.tools.minecraft.inMinecraftTicks
56
import cc.modlabs.kpaper.visuals.effect.ParticleData
6-
import dev.fruxz.ascend.extension.time.inWholeMinecraftTicks
77
import org.bukkit.Color
88
import org.bukkit.Location
99
import org.bukkit.Particle
@@ -239,13 +239,13 @@ class Melody(
239239
var delayPerBeat: Duration
240240
get() = ticksPerBeat.takeIf { it > 0 }?.minecraftTicks ?: Duration.ZERO
241241
set(value) {
242-
ticksPerBeat = value.inWholeMinecraftTicks
242+
ticksPerBeat = value.inMinecraftTicks
243243
}
244244

245245
var delayPerSound: Duration
246246
get() = ticksPerSound.takeIf { it > 0 }?.minecraftTicks ?: Duration.ZERO
247247
set(value) {
248-
ticksPerSound = value.inWholeMinecraftTicks
248+
ticksPerSound = value.inMinecraftTicks
249249
}
250250

251251
@OptIn(DelicateCoroutinesApi::class)
@@ -320,8 +320,8 @@ class MelodyBuilder {
320320
}
321321

322322
fun build(): Melody = Melody(
323-
ticksPerBeat = delayPerBeat.inWholeMinecraftTicks,
324-
ticksPerSound = delayPerSound.inWholeMinecraftTicks,
323+
ticksPerBeat = delayPerBeat.inMinecraftTicks,
324+
ticksPerSound = delayPerSound.inMinecraftTicks,
325325
repetitions = repetitions,
326326
beats = beats.toList()
327327
)
@@ -343,7 +343,7 @@ fun PotionEffect(type: PotionEffectType, durationTicks: Int, amplifier: Int = 0,
343343
)
344344

345345
fun PotionEffect(type: PotionEffectType, duration: Duration = 10.seconds, amplifier: Int = 0, ambient: Boolean = true, particles: Boolean = true, icon: Boolean = true) =
346-
PotionEffect(type, duration.inWholeMinecraftTicks.toInt(), amplifier, ambient, particles, icon)
346+
PotionEffect(type, duration.inMinecraftTicks.toInt(), amplifier, ambient, particles, icon)
347347

348348
fun buildPotionEffect(type: PotionEffectType, duration: Duration = 10.seconds, amplifier: Int = 0, ambient: Boolean = true, particles: Boolean = true, icon: Boolean = true, builder: PotionEffect.() -> Unit) =
349349
PotionEffect(type, duration, amplifier, ambient, particles, icon).apply(builder)

src/main/kotlin/cc/modlabs/kpaper/file/config/FileJsonConfig.kt

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,6 @@
11
package cc.modlabs.kpaper.file.config
22

3-
import com.google.gson.Gson
4-
import com.google.gson.JsonArray
5-
import com.google.gson.JsonElement
6-
import com.google.gson.JsonObject
7-
import com.google.gson.JsonParseException
8-
import dev.fruxz.ascend.json.readJson
9-
import dev.fruxz.ascend.json.writeJson
3+
import com.google.gson.*
104
import java.io.File
115
import java.io.IOException
126
import java.nio.file.FileSystems

src/main/kotlin/cc/modlabs/kpaper/inventory/ItemBuilder.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,25 @@ package cc.modlabs.kpaper.inventory
55
import cc.modlabs.kpaper.coroutines.taskRunLater
66
import cc.modlabs.kpaper.inventory.internal.ItemClickListener
77
import cc.modlabs.kpaper.inventory.mineskin.*
8+
import cc.modlabs.kpaper.messages.text
89
import com.destroystokyo.paper.profile.PlayerProfile
910
import com.destroystokyo.paper.profile.ProfileProperty
1011
import com.google.gson.Gson
1112
import dev.fruxz.ascend.extension.forceCastOrNull
12-
import dev.fruxz.stacked.text
13-
import io.papermc.paper.datacomponent.DataComponentType
1413
import io.papermc.paper.datacomponent.DataComponentTypes.CONSUMABLE
1514
import io.papermc.paper.datacomponent.item.Consumable
1615
import io.papermc.paper.datacomponent.item.consumable.ConsumeEffect
1716
import io.papermc.paper.datacomponent.item.consumable.ItemUseAnimation
1817
import net.kyori.adventure.key.Key
19-
import net.kyori.adventure.sound.Sound
2018
import net.kyori.adventure.text.Component
2119
import net.kyori.adventure.text.format.TextDecoration
2220
import net.minecraft.world.item.component.CustomModelData
2321
import org.bukkit.*
2422
import org.bukkit.craftbukkit.inventory.components.CraftCustomModelDataComponent
2523
import org.bukkit.enchantments.Enchantment
24+
import org.bukkit.entity.Player
2625
import org.bukkit.event.inventory.InventoryClickEvent
2726
import org.bukkit.inventory.EquipmentSlot
28-
import org.bukkit.entity.Player
2927
import org.bukkit.inventory.ItemFlag
3028
import org.bukkit.inventory.ItemRarity
3129
import org.bukkit.inventory.ItemStack

0 commit comments

Comments
 (0)