Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to 1.21 #68

Merged
merged 22 commits into from
Sep 30, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,10 @@ jobs:
- name: 🛂 Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1

- name: 🏗 Set up JDK 17
- name: 🏗 Set up JDK 21
uses: actions/setup-java@v2
with:
java-version: 17
java-version: 21
distribution: temurin
- name: 📷 Begin Gradle cache
uses: actions/cache@v2
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ jobs:
- name: 🛂 Validate Gradle wrapper
uses: gradle/wrapper-validation-action@v1

- name: 🏗 Set up JDK 16
- name: 🏗 Set up JDK 21
uses: actions/setup-java@v2
with:
java-version: 16
java-version: 21
distribution: adopt

# Do release things
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package io.github.quiltservertools.blockbotapi.sender;

import net.minecraft.registry.RegistryWrapper;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.Text;
Expand All @@ -9,11 +10,13 @@ public class MessageSender {
private final Text name;
private final Text displayName;
private final MessageType type;
private final RegistryWrapper.WrapperLookup wrapperLookup;

public MessageSender(Text name, Text displayName, @NotNull MessageType type) {
public MessageSender(Text name, Text displayName, @NotNull MessageType type, RegistryWrapper.WrapperLookup wrapperLookup) {
this.name = name;
this.displayName = displayName;
this.type = type;
this.wrapperLookup = wrapperLookup;
}

public static MessageSender of(ServerCommandSource commandSource, MessageType type) {
Expand All @@ -28,7 +31,8 @@ public static MessageSender of(ServerCommandSource commandSource, MessageType ty
sender = new MessageSender(
Text.literal(commandSource.getName()),
commandSource.getDisplayName(),
type
type,
commandSource.getRegistryManager()
);
}
return sender;
Expand All @@ -47,6 +51,10 @@ public Text getDisplayName() {
return displayName;
}

public RegistryWrapper.WrapperLookup getWrapperLookup() {
return wrapperLookup;
}

public enum MessageType {
REGULAR,
EMOTE,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ public class PlayerMessageSender extends MessageSender {
private final ServerPlayerEntity player;

public PlayerMessageSender(ServerPlayerEntity player, MessageType type) {
super(player.getName(), player.getDisplayName(), type);
super(player.getName(), player.getDisplayName(), type, player.server.getRegistryManager());
this.profile = player.getGameProfile();
this.player = player;
}
Expand Down
2 changes: 1 addition & 1 deletion blockbot-api/src/main/resources/blockbot-api.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"required": true,
"minVersion": "0.8",
"package": "io.github.quiltservertools.blockbotapi.mixin",
"compatibilityLevel": "JAVA_16",
"compatibilityLevel": "JAVA_21",
"mixins": [
"MeCommandMixin",
"MixinPlayerAdvancementTracker",
Expand Down
2 changes: 1 addition & 1 deletion blockbot-api/src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"blockbot-api.mixins.json"
],
"depends": {
"java": ">=16",
"java": ">=21",
"fabricloader": ">=${fabricLoader}",
"fabric": ">=${fabricApi}"
}
Expand Down
16 changes: 7 additions & 9 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ plugins {
java
id("maven-publish")
id("fabric-loom") version "1.6.+"
kotlin("jvm") version "1.7.10"
id("com.github.johnrengelman.shadow") version "7.1.2"
kotlin("plugin.serialization") version "1.7.10"
kotlin("jvm") version "1.9.23"
id("io.github.goooler.shadow") version "8.1.7"
kotlin("plugin.serialization") version "1.9.23"
}

configurations.implementation.get().extendsFrom(configurations.shadow.get())
Expand All @@ -22,8 +22,8 @@ allprojects {
version = "$modVersion${getVersionMetadata()}"

java {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
sourceCompatibility = JavaVersion.VERSION_21
targetCompatibility = JavaVersion.VERSION_21
}

loom {
Expand All @@ -38,8 +38,6 @@ allprojects {
}
maven("https://api.modrinth.com/maven")
maven("https://oss.sonatype.org/content/repositories/snapshots")
// net.kyori:adventure-text-serializer-gson dev builds
maven("https://s01.oss.sonatype.org/content/repositories/snapshots/")
}

// Declare dependencies
Expand Down Expand Up @@ -90,7 +88,7 @@ allprojects {
repositories {
mavenCentral()
maven("https://maven.nucleoid.xyz/")
maven("https://maven.kotlindiscord.com/repository/maven-public/")
maven("https://s01.oss.sonatype.org/content/repositories/snapshots/")
}

dependencies {
Expand Down Expand Up @@ -128,7 +126,7 @@ tasks {

compileKotlin {
kotlinOptions {
jvmTarget = "17"
jvmTarget = "21"
}
}

Expand Down
18 changes: 9 additions & 9 deletions libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
[versions]
minecraft = "1.20.4"
fabric-loader = "0.15.10"
yarn-mappings = "1.20.4+build.3"
minecraft = "1.21"
fabric-loader = "0.15.11"
yarn-mappings = "1.21+build.2"

fabric-api = "0.97.0+1.20.4"
fabric-api = "0.100.3+1.21"

# Kotlin
fabric-kotlin = "1.9.4+kotlin.1.8.21"
fabric-kotlin = "1.10.19+kotlin.1.9.23"

# Discord
kord-extensions = "1.5.6"
kord-extensions = "1.8.1-SNAPSHOT"
mc-discord-reserializer = "4.3.0"
emoji-java = "5.1.1"
adventure-gson = "4.15.0-SNAPSHOT"
adventure-gson = "4.16.0"

placeholder-api = "2.3.0+1.20.3"
placeholder-api = "2.4.0-pre.2+1.21"
permission-api = "0.3.1"
vanish-api = "1.5.0+1.20.3-rc1"
vanish-api = "1.5.6+1.21"
konf = "1.1.2"

[libraries]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import com.kotlindiscord.kord.extensions.ExtensibleBot
import com.kotlindiscord.kord.extensions.utils.loadModule
import dev.kord.gateway.Intent
import dev.kord.gateway.Intents
import dev.kord.gateway.NON_PRIVILEGED
import dev.kord.gateway.PrivilegedIntent
import io.github.quiltservertools.blockbotapi.BlockBotApi
import io.github.quiltservertools.blockbotdiscord.config.*
Expand Down Expand Up @@ -66,7 +67,6 @@ object BlockBotDiscord : ModInitializer, CoroutineScope {
bot = ExtensibleBot(config[BotSpec.token]) {
applicationCommands {
enabled = true
syncPermissions = false
}

extensions {
Expand All @@ -78,7 +78,7 @@ object BlockBotDiscord : ModInitializer, CoroutineScope {
}

intents {
+Intents.nonPrivileged
+Intents.NON_PRIVILEGED
+Intent.GuildMembers
}

Expand All @@ -103,7 +103,7 @@ object BlockBotDiscord : ModInitializer, CoroutineScope {
override val coroutineContext = Dispatchers.Default
}

fun id(path: String) = Identifier(BlockBotDiscord.MOD_ID, path)
fun id(path: String): Identifier = Identifier.of(BlockBotDiscord.MOD_ID, path)

fun logDebug(message: String) = BlockBotDiscord.logger.debug(message)
fun logInfo(message: String) = BlockBotDiscord.logger.info(message)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ class MentionToMinecraftRenderer(
override fun appendUserMention(component: Component, id: String): Component {
return runBlocking {
val member = config.getGuild(bot).getMemberOrNull(Snowflake(id))
val name = member?.displayName ?: "unknown-user"
val name = member?.effectiveName ?: "unknown-user"

component.append(
Component.text("@$name")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ suspend fun Config.getChannel(name: String, bot: ExtensibleBot): GuildMessageCha
return channel!!
}

suspend fun Config.getGuild(bot: ExtensibleBot) = bot.getKoin().get<Kord>().getGuildOrThrow(Snowflake(this[BotSpec.guild]))
suspend fun Config.getGuild(bot: ExtensibleBot) = bot.getKoin().get<Kord>().getGuild(Snowflake(this[BotSpec.guild]))
val Config.guildId: Snowflake
get() = Snowflake(this[BotSpec.guild])

Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,7 @@ fun Config.getReplyMsg(
Placeholders.ALT_PLACEHOLDER_PATTERN_CUSTOM,
mapOf(
"sender" to (sender).literal(),
"message" to message.content.literal(),
"summary" to message.summary().literal(),
)
), PlaceholderContext.of(server)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import dev.kord.core.entity.channel.TopGuildMessageChannel
import dev.kord.core.event.message.MessageCreateEvent
import dev.kord.rest.builder.message.AllowedMentionsBuilder
import dev.kord.rest.builder.message.EmbedBuilder
import dev.kord.rest.builder.message.create.embed
import dev.kord.rest.builder.message.embed
import dev.vankka.mcdiscordreserializer.discord.DiscordSerializer
import dev.vankka.mcdiscordreserializer.discord.DiscordSerializerOptions
import dev.vankka.mcdiscordreserializer.minecraft.MinecraftSerializer
Expand All @@ -41,17 +41,15 @@ import kotlinx.coroutines.flow.toList
import kotlinx.coroutines.launch
import kotlinx.coroutines.runBlocking
import me.drex.vanish.api.VanishEvents
import net.fabricmc.fabric.api.networking.v1.PacketSender
import net.fabricmc.loader.api.FabricLoader
import net.kyori.adventure.text.KeybindComponent
import net.kyori.adventure.text.TranslatableComponent
import net.fabricmc.loader.api.FabricLoader
import net.minecraft.advancement.Advancement
import net.minecraft.component.DataComponentTypes
import net.minecraft.component.type.LoreComponent
import net.minecraft.item.ItemStack
import net.minecraft.item.Items
import net.minecraft.nbt.NbtList
import net.minecraft.nbt.NbtString
import net.minecraft.server.MinecraftServer
import net.minecraft.server.network.ServerPlayNetworkHandler
import net.minecraft.server.network.ServerPlayerEntity
import net.minecraft.text.*
import net.minecraft.util.ActionResult
Expand Down Expand Up @@ -92,7 +90,7 @@ class BlockBotApiExtension : Extension(), Bot {
check { failIfNot(config.getChannelsBi().containsValue(event.message.channelId.value)) }

action {
val sender = event.message.getAuthorAsMember()!!
val sender = event.message.getAuthorAsMemberOrNull() ?: return@action
val configChannel = config.getChannelsBi().inverse()[event.message.channelId.value]!!
val result = RelayMessageEvent.EVENT.invoker().message(
RelayMessageSender(
Expand Down Expand Up @@ -138,11 +136,11 @@ class BlockBotApiExtension : Extension(), Bot {
val emojiString = EmojiParser.parseToAliases(message.content)
var content: MutableText =
if (config[ChatRelaySpec.convertMarkdown]) minecraftSerializer.serialize(emojiString)
.toNative() else emojiString.literal()
.toNative(server.registryManager) else emojiString.literal()
content = convertEmojiToTranslatable(content)
if (message.referencedMessage != null) {
val reply = config.getReplyMsg(
message.referencedMessage!!.data.author.username,
message.referencedMessage!!.getAuthorAsMemberOrNull()?.effectiveName ?: message.referencedMessage!!.data.author.username,
message.referencedMessage!!,
server
)
Expand Down Expand Up @@ -177,7 +175,7 @@ class BlockBotApiExtension : Extension(), Bot {
var x = 0
var y = 0

val list = NbtList()
val list = mutableListOf<Text>()

while (y < height) {
val text = Text.empty().setStyle(Style.EMPTY.withItalic(false))
Expand Down Expand Up @@ -210,18 +208,14 @@ class BlockBotApiExtension : Extension(), Bot {
x += stepSize
}

list.add(NbtString.of(Text.Serialization.toJsonString(text)))
list.add(text)
y += stepSize
x = 0
}

val stack = ItemStack(Items.STICK)
val display = stack.getOrCreateSubNbt("display")

display.put("Lore", list)


stack.setCustomName(Text.empty())
stack.set(DataComponentTypes.LORE, LoreComponent(list))
stack.set(DataComponentTypes.CUSTOM_NAME, Text.empty())
hoverEvent = HoverEvent(HoverEvent.Action.SHOW_ITEM, HoverEvent.ItemStackContent(stack))
}

Expand All @@ -245,7 +239,7 @@ class BlockBotApiExtension : Extension(), Bot {
var topRoleMessage: MutableText =
topRole?.data?.name?.literal() ?: "".literal()
if (topColor != null) topRoleMessage = topRoleMessage.styled { it.withColor(topColor.rgb) }
var username: MutableText = sender.displayName.literal()
var username: MutableText = sender.effectiveName.literal()
if (topColor != null) {
username = username.styled {
it.withColor(topColor.rgb)
Expand All @@ -263,7 +257,7 @@ class BlockBotApiExtension : Extension(), Bot {
chatWebhook.execute(chatWebhook.token!!) {
avatarUrl = config[ChatRelaySpec.WebhookSpec.webhookAvatar]
allowedMentions = mentions
embeds.add(EmbedBuilder().apply(builder))
embeds = mutableListOf(EmbedBuilder().apply(builder))
}
} else {
val messageChannel = config.getChannel(Channels.CHAT, bot)
Expand Down Expand Up @@ -291,7 +285,7 @@ class BlockBotApiExtension : Extension(), Bot {

override fun onChatMessage(sender: MessageSender, message: Text) {
BlockBotDiscord.launch {
var content = discordSerializer.serialize(message.toAdventure(), DiscordSerializerOptions(false, false, KeybindComponent::keybind, TranslatableComponent::key))
var content = discordSerializer.serialize(message.toAdventure(sender.wrapperLookup), DiscordSerializerOptions(false, false, KeybindComponent::keybind, TranslatableComponent::key))
if (config[ChatRelaySpec.escapeIngameMarkdown]) {
content = MinecraftSerializer.INSTANCE.escapeMarkdown(content)
}
Expand Down Expand Up @@ -405,8 +399,8 @@ class BlockBotApiExtension : Extension(), Bot {
}

override fun onServerTick(server: MinecraftServer) {
BlockBotDiscord.launch {
if (server.ticks % 400 == 0) {
if (server.ticks % 400 == 0) {
BlockBotDiscord.launch {
kord.editPresence {
when (config[PresenceSpec.activityType]) {
ActivityType.Game -> playing(config.formatPresenceText(server))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@ import com.kotlindiscord.kord.extensions.commands.converters.impl.string
import com.kotlindiscord.kord.extensions.extensions.Extension
import com.kotlindiscord.kord.extensions.extensions.ephemeralSlashCommand
import com.kotlindiscord.kord.extensions.extensions.publicSlashCommand
import com.kotlindiscord.kord.extensions.types.respond
import dev.kord.rest.builder.message.create.embed
import dev.kord.rest.builder.message.embed
import io.github.quiltservertools.blockbotdiscord.config.*
import net.minecraft.server.MinecraftServer
import net.minecraft.server.WhitelistEntry
Expand All @@ -24,7 +23,7 @@ class MemberCommandsExtension : Extension() {
name = config[MemberCommandsSpec.PlayerListSpec.name]
description = config[MemberCommandsSpec.PlayerListSpec.description]

guild(config.getGuild(bot))
guild(config.guildId)

action {
respond {
Expand All @@ -42,7 +41,7 @@ class MemberCommandsExtension : Extension() {
name = config[MemberCommandsSpec.WhiteListSpec.name]
description = config[MemberCommandsSpec.WhiteListSpec.description]

guild(config.getGuild(bot))
guild(config.guildId)

action {
val profile = server.userCache?.findByName(arguments.player)?.unwrap()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package io.github.quiltservertools.blockbotdiscord.extensions.inline

import com.kotlindiscord.kord.extensions.commands.application.slash.EphemeralSlashCommandContext
import com.kotlindiscord.kord.extensions.types.respond
import kotlinx.coroutines.runBlocking
import net.minecraft.server.command.CommandOutput
import net.minecraft.text.Text
Expand Down
Loading
Loading