Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package mc.utopia.plugin.advancements
- import java.lang.reflect.Field
- typealias PacketPlayOutAdvancements = net.minecraft.server.v1_14_R1.PacketPlayOutAdvancements
- typealias SerializedAdvancement = net.minecraft.server.v1_14_R1.Advancement.SerializedAdvancement
- typealias MinecraftKey = net.minecraft.server.v1_14_R1.MinecraftKey
- typealias AdvancementProgress = net.minecraft.server.v1_14_R1.AdvancementProgress
- typealias AdvancementDisplay = net.minecraft.server.v1_14_R1.AdvancementDisplay
- typealias IChatBaseComponent = net.minecraft.server.v1_14_R1.IChatBaseComponent
- typealias ChatSerializer = net.minecraft.server.v1_14_R1.IChatBaseComponent.ChatSerializer
- fun PacketPlayOutAdvancements(
- clear: Boolean,
- advancements: Map<MinecraftKey, SerializedAdvancement>,
- remove: Set<MinecraftKey>,
- progresses: Map<MinecraftKey, AdvancementProgress>
- ) = PacketPlayOutAdvancements().apply {
- this.clear = clear
- this.advancements = advancements
- this.remove = remove
- this.progresses = progresses
- }
- var PacketPlayOutAdvancements.clear
- get() = getPrivateFieldValue<Boolean>("a")
- set(value) = setPrivateFieldValue("a", value)
- var PacketPlayOutAdvancements.advancements
- get() = getPrivateFieldValue<Map<MinecraftKey, SerializedAdvancement>>("b")
- set(value) = setPrivateFieldValue("b", value)
- var PacketPlayOutAdvancements.remove
- get() = getPrivateFieldValue<Set<MinecraftKey>>("c")
- set(value) = setPrivateFieldValue("c", value)
- var PacketPlayOutAdvancements.progresses
- get() = getPrivateFieldValue<Map<MinecraftKey, AdvancementProgress>>("d")
- set(value) = setPrivateFieldValue("d", value)
- var SerializedAdvancement.display
- get() = getPrivateFieldValue<AdvancementDisplay>("c")
- set(value) = setPrivateFieldValue("c", value)
- var AdvancementDisplay.title
- get() = getPrivateFieldValue<IChatBaseComponent>("a")
- set(value) = setPrivateFieldValue("a", value)
- var AdvancementDisplay.description
- get() = getPrivateFieldValue<IChatBaseComponent>("b")
- set(value) = setPrivateFieldValue("b", value)
- private inline fun <reified T> Any.getPrivateFieldValue(fieldName: String): T {
- return javaClass.getPrivateField(fieldName)[this] as T
- }
- private fun Any.setPrivateFieldValue(fieldName: String, value: Any?) {
- javaClass.getPrivateField(fieldName)[this] = value
- }
- private fun Class<*>.getPrivateField(name: String): Field = javaClass.getDeclaredField(name).apply {
- isAccessible = true
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement