|
12 | 12 | import io.papermc.paper.command.brigadier.Commands; |
13 | 13 | import io.papermc.paper.plugin.lifecycle.event.types.LifecycleEvents; |
14 | 14 | import net.kyori.adventure.key.Key; |
| 15 | +import net.kyori.adventure.text.Component; |
15 | 16 | import net.kyori.adventure.text.minimessage.MiniMessage; |
16 | 17 | import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; |
17 | 18 | import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver; |
@@ -232,48 +233,62 @@ private void registerWarpCommands(Commands registrar) { |
232 | 233 | } |
233 | 234 |
|
234 | 235 | private void registerLinkCommands(Commands registrar) { |
235 | | - if (commands().discord.enabled) new DiscordCommand(this).register(registrar); |
236 | | - if (commands().reddit.enabled) new RedditCommand(this).register(registrar); |
237 | | - if (commands().teamspeak.enabled) new TeamSpeakCommand(this).register(registrar); |
238 | | - if (commands().tiktok.enabled) new TikTokCommand(this).register(registrar); |
239 | | - if (commands().twitch.enabled) new TwitchCommand(this).register(registrar); |
240 | | - if (commands().website.enabled) new WebsiteCommand(this).register(registrar); |
241 | | - if (commands().x.enabled) new XCommand(this).register(registrar); |
242 | | - if (commands().youtube.enabled) new YouTubeCommand(this).register(registrar); |
| 236 | + if (commands().discord.enabled && isLinkEnabled("discord")) new DiscordCommand(this).register(registrar); |
| 237 | + if (commands().reddit.enabled && isLinkEnabled("reddit")) new RedditCommand(this).register(registrar); |
| 238 | + if (commands().teamspeak.enabled && isLinkEnabled("teamspeak")) new TeamSpeakCommand(this).register(registrar); |
| 239 | + if (commands().tiktok.enabled && isLinkEnabled("tiktok")) new TikTokCommand(this).register(registrar); |
| 240 | + if (commands().twitch.enabled && isLinkEnabled("twitch")) new TwitchCommand(this).register(registrar); |
| 241 | + if (commands().website.enabled && isLinkEnabled("website")) new WebsiteCommand(this).register(registrar); |
| 242 | + if (commands().x.enabled && isLinkEnabled("x")) new XCommand(this).register(registrar); |
| 243 | + if (commands().youtube.enabled && isLinkEnabled("youtube")) new YouTubeCommand(this).register(registrar); |
| 244 | + } |
| 245 | + |
| 246 | + private boolean isLinkEnabled(String string) { |
| 247 | + var url = config().links.get(string); |
| 248 | + return url != null && !url.isBlank() && !url.equals(PluginConfig.LINK_DEFAULTS.get(string)); |
243 | 249 | } |
244 | 250 |
|
245 | 251 | private void registerLinks() { |
246 | 252 | var social = config().features.social; |
247 | 253 | if (!social.serverLinks) return; |
248 | 254 |
|
249 | | - if (social.discord) registerLink("url.discord", config().links.discord); |
250 | | - if (social.reddit) registerLink("url.reddit", config().links.reddit); |
251 | | - if (social.teamspeak) registerLink("url.teamspeak", config().links.teamspeak); |
252 | | - if (social.tiktok) registerLink("url.tiktok", config().links.tiktok); |
253 | | - if (social.twitch) registerLink("url.twitch", config().links.twitch); |
254 | | - if (social.x) registerLink("url.x", config().links.x); |
255 | | - if (social.youtube) registerLink("url.youtube", config().links.youtube); |
256 | | - |
257 | | - if (social.announcements) registerLink(ANNOUNCEMENTS, config().links.announcements); |
258 | | - if (social.community) registerLink(COMMUNITY, config().links.community); |
259 | | - if (social.feedback) registerLink(FEEDBACK, config().links.feedback); |
260 | | - if (social.forum) registerLink(FORUMS, config().links.forum); |
261 | | - if (social.guidelines) registerLink(COMMUNITY_GUIDELINES, config().links.guidelines); |
262 | | - if (social.issues) registerLink(REPORT_BUG, config().links.issues); |
263 | | - if (social.news) registerLink(NEWS, config().links.news); |
264 | | - if (social.status) registerLink(STATUS, config().links.status); |
265 | | - if (social.support) registerLink(SUPPORT, config().links.support); |
266 | | - if (social.website) registerLink(WEBSITE, config().links.website); |
| 255 | + if (social.discord) registerLink("url.discord", "discord"); |
| 256 | + if (social.reddit) registerLink("url.reddit", "reddit"); |
| 257 | + if (social.teamspeak) registerLink("url.teamspeak", "teamspeak"); |
| 258 | + if (social.tiktok) registerLink("url.tiktok", "tiktok"); |
| 259 | + if (social.twitch) registerLink("url.twitch", "twitch"); |
| 260 | + if (social.x) registerLink("url.x", "x"); |
| 261 | + if (social.youtube) registerLink("url.youtube", "youtube"); |
| 262 | + |
| 263 | + if (social.announcements) registerLink(ANNOUNCEMENTS, "announcements"); |
| 264 | + if (social.community) registerLink(COMMUNITY, "community"); |
| 265 | + if (social.feedback) registerLink(FEEDBACK, "feedback"); |
| 266 | + if (social.forum) registerLink(FORUMS, "forum"); |
| 267 | + if (social.guidelines) registerLink(COMMUNITY_GUIDELINES, "guidelines"); |
| 268 | + if (social.issues) registerLink(REPORT_BUG, "issues"); |
| 269 | + if (social.news) registerLink(NEWS, "news"); |
| 270 | + if (social.status) registerLink(STATUS, "status"); |
| 271 | + if (social.support) registerLink(SUPPORT, "support"); |
| 272 | + if (social.website) registerLink(WEBSITE, "website"); |
| 273 | + |
| 274 | + config().links.forEach((name, url) -> { |
| 275 | + if (url.isBlank() || PluginConfig.LINK_DEFAULTS.containsKey(name)) return; |
| 276 | + getServer().getServerLinks().addLink(Component.text(name), URI.create(url)); |
| 277 | + }); |
267 | 278 | } |
268 | 279 |
|
269 | 280 | private void registerLink(ServerLinks.Type type, String string) { |
270 | | - if (!string.isBlank()) getServer().getServerLinks().addLink(type, URI.create(string)); |
| 281 | + var url = config().links.get(string); |
| 282 | + if (url == null || url.isBlank() || url.equals(PluginConfig.LINK_DEFAULTS.get(string))) return; |
| 283 | + getServer().getServerLinks().addLink(type, URI.create(url)); |
271 | 284 | } |
272 | 285 |
|
273 | 286 | private void registerLink(String translationKey, String string) { |
274 | 287 | var translation = bundle().translate(translationKey, Locale.US); |
275 | | - if (translation == null || string.isBlank()) return; |
276 | | - getServer().getServerLinks().addLink(translation, URI.create(string)); |
| 288 | + if (translation == null) return; |
| 289 | + var url = config().links.get(string); |
| 290 | + if (url == null || url.isBlank() || url.equals(PluginConfig.LINK_DEFAULTS.get(string))) return; |
| 291 | + getServer().getServerLinks().addLink(translation, URI.create(url)); |
277 | 292 | } |
278 | 293 |
|
279 | 294 | public void saveConfig() { |
@@ -304,23 +319,23 @@ private void initTranslations() { |
304 | 319 | .placeholder("prefix", "prefix") |
305 | 320 | .miniMessage(MiniMessage.builder().tags(TagResolver.resolver( |
306 | 321 | TagResolver.standard(), |
307 | | - Placeholder.parsed("announcements", config().links.announcements), |
308 | | - Placeholder.parsed("community", config().links.community), |
309 | | - Placeholder.parsed("discord", config().links.discord), |
310 | | - Placeholder.parsed("feedback", config().links.feedback), |
311 | | - Placeholder.parsed("forum", config().links.forum), |
312 | | - Placeholder.parsed("guidelines", config().links.guidelines), |
313 | | - Placeholder.parsed("issues", config().links.issues), |
314 | | - Placeholder.parsed("news", config().links.news), |
315 | | - Placeholder.parsed("reddit", config().links.reddit), |
316 | | - Placeholder.parsed("status", config().links.status), |
317 | | - Placeholder.parsed("support", config().links.support), |
318 | | - Placeholder.parsed("teamspeak", config().links.teamspeak), |
319 | | - Placeholder.parsed("tiktok", config().links.tiktok), |
320 | | - Placeholder.parsed("twitch", config().links.twitch), |
321 | | - Placeholder.parsed("website", config().links.website), |
322 | | - Placeholder.parsed("x", config().links.x), |
323 | | - Placeholder.parsed("youtube", config().links.youtube) |
| 322 | + Placeholder.parsed("announcements", String.valueOf(config().links.get("announcements"))), |
| 323 | + Placeholder.parsed("community", String.valueOf(config().links.get("community"))), |
| 324 | + Placeholder.parsed("discord", String.valueOf(config().links.get("discord"))), |
| 325 | + Placeholder.parsed("feedback", String.valueOf(config().links.get("feedback"))), |
| 326 | + Placeholder.parsed("forum", String.valueOf(config().links.get("forum"))), |
| 327 | + Placeholder.parsed("guidelines", String.valueOf(config().links.get("guidelines"))), |
| 328 | + Placeholder.parsed("issues", String.valueOf(config().links.get("issues"))), |
| 329 | + Placeholder.parsed("news", String.valueOf(config().links.get("news"))), |
| 330 | + Placeholder.parsed("reddit", String.valueOf(config().links.get("reddit"))), |
| 331 | + Placeholder.parsed("status", String.valueOf(config().links.get("status"))), |
| 332 | + Placeholder.parsed("support", String.valueOf(config().links.get("support"))), |
| 333 | + Placeholder.parsed("teamspeak", String.valueOf(config().links.get("teamspeak"))), |
| 334 | + Placeholder.parsed("tiktok", String.valueOf(config().links.get("tiktok"))), |
| 335 | + Placeholder.parsed("twitch", String.valueOf(config().links.get("twitch"))), |
| 336 | + Placeholder.parsed("website", String.valueOf(config().links.get("website"))), |
| 337 | + Placeholder.parsed("x", String.valueOf(config().links.get("x"))), |
| 338 | + Placeholder.parsed("youtube", String.valueOf(config().links.get("youtube"))) |
324 | 339 | )).build()).build(); |
325 | 340 | } |
326 | 341 |
|
|
0 commit comments