Compare commits

...
18 Commits
Author SHA1 Message Date
Jones 9bab457d58 Release 2.1.46 (#569) 2026-03-30 19:06:25 +02:00
Jones 37d294afe3 26.1 Support (#568)
* Add 26.1 protocol versions

* Add 26.1 block state IDs

* Add 26.1 codec

* Add missing tags for 26.1

* Fix chunk data on 26.1

* Fix SetContainerSlotPacket on 26.1

* Fix map item type and components on 26.1

* Fix UpdateTimePacket

* Fix ChunkDataPacket for <26.1
2026-03-30 19:03:04 +02:00
dependabot[bot] 6ea9c1dcba Bump com.gradleup.shadow from 8.3.8 to 9.4.1 (#566)
Bumps [com.gradleup.shadow](https://github.com/GradleUp/shadow) from 8.3.8 to 9.4.1.
- [Release notes](https://github.com/GradleUp/shadow/releases)
- [Commits](https://github.com/GradleUp/shadow/compare/8.3.8...9.4.1)

---
updated-dependencies:
- dependency-name: com.gradleup.shadow
  dependency-version: 9.4.1
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-30 15:29:18 +02:00
dependabot[bot] 1f98050abb Bump io.netty:netty-all from 4.2.10.Final to 4.2.12.Final (#567)
Bumps [io.netty:netty-all](https://github.com/netty/netty) from 4.2.10.Final to 4.2.12.Final.
- [Release notes](https://github.com/netty/netty/releases)
- [Commits](https://github.com/netty/netty/compare/netty-4.2.10.Final...netty-4.2.12.Final)

---
updated-dependencies:
- dependency-name: io.netty:netty-all
  dependency-version: 4.2.12.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-30 15:28:54 +02:00
Jones cea1ac00f0 Include Paper artifact in upload task 2026-03-29 00:14:55 +01:00
Jones 620aaa3ff2 Bump bungeecord-proxy from 1.21-SNAPSHOT to 26.1-R0.1-SNAPSHOT 2026-03-29 00:12:28 +01:00
dependabot[bot] 381ad66339 Bump gradle-wrapper from 9.3.1 to 9.4.1 (#564)
Bumps [gradle-wrapper](https://github.com/gradle/gradle) from 9.3.1 to 9.4.1.
- [Release notes](https://github.com/gradle/gradle/releases)
- [Commits](https://github.com/gradle/gradle/compare/v9.3.1...v9.4.1)

---
updated-dependencies:
- dependency-name: gradle-wrapper
  dependency-version: 9.4.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-23 14:27:12 +01:00
dependabot[bot] de70d23c54 Bump com.diffplug.spotless from 8.3.0 to 8.4.0 (#565)
Bumps com.diffplug.spotless from 8.3.0 to 8.4.0.

---
updated-dependencies:
- dependency-name: com.diffplug.spotless
  dependency-version: 8.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-23 14:27:01 +01:00
dependabot[bot] b49474a56f Bump org.projectlombok:lombok from 1.18.42 to 1.18.44 (#563)
Bumps [org.projectlombok:lombok](https://github.com/projectlombok/lombok) from 1.18.42 to 1.18.44.
- [Changelog](https://github.com/projectlombok/lombok/blob/master/doc/changelog.markdown)
- [Commits](https://github.com/projectlombok/lombok/compare/v1.18.42...v1.18.44)

---
updated-dependencies:
- dependency-name: org.projectlombok:lombok
  dependency-version: 1.18.44
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-16 07:31:29 +01:00
dependabot[bot] 058f034245 Bump com.diffplug.spotless from 8.2.1 to 8.3.0 (#560)
Bumps com.diffplug.spotless from 8.2.1 to 8.3.0.

---
updated-dependencies:
- dependency-name: com.diffplug.spotless
  dependency-version: 8.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-09 19:24:43 +01:00
Jones d94333eed7 Make update checker errors more human-readable (https://github.com/jonesdevelopment/sonar/issues/561) 2026-03-09 19:23:44 +01:00
dependabot[bot] 2550dc9fbf Bump bstats from 3.1.0 to 3.2.1 (#557)
Bumps `bstats` from 3.1.0 to 3.2.1.

Updates `org.bstats:bstats-bungeecord` from 3.1.0 to 3.2.1
- [Release notes](https://github.com/Bastian/bStats-Metrics/releases)
- [Commits](https://github.com/Bastian/bStats-Metrics/compare/v3.1.0...v3.2.1)

Updates `org.bstats:bstats-bukkit` from 3.1.0 to 3.2.1
- [Release notes](https://github.com/Bastian/bStats-Metrics/releases)
- [Commits](https://github.com/Bastian/bStats-Metrics/compare/v3.1.0...v3.2.1)

Updates `org.bstats:bstats-velocity` from 3.1.0 to 3.2.1
- [Release notes](https://github.com/Bastian/bStats-Metrics/releases)
- [Commits](https://github.com/Bastian/bStats-Metrics/compare/v3.1.0...v3.2.1)

---
updated-dependencies:
- dependency-name: org.bstats:bstats-bungeecord
  dependency-version: 3.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.bstats:bstats-bukkit
  dependency-version: 3.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
- dependency-name: org.bstats:bstats-velocity
  dependency-version: 3.2.1
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-03-02 13:32:48 +01:00
Jones 8be3d974e4 Add sonar.log-netty-exceptions flag 2026-02-26 20:07:22 +01:00
dependabot[bot] cab082cdd5 Bump org.jetbrains:annotations from 26.0.2 to 26.1.0 (#556)
Bumps [org.jetbrains:annotations](https://github.com/JetBrains/java-annotations) from 26.0.2 to 26.1.0.
- [Release notes](https://github.com/JetBrains/java-annotations/releases)
- [Changelog](https://github.com/JetBrains/java-annotations/blob/master/CHANGELOG.md)
- [Commits](https://github.com/JetBrains/java-annotations/compare/26.0.2...26.1.0)

---
updated-dependencies:
- dependency-name: org.jetbrains:annotations
  dependency-version: 26.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-23 15:15:34 +01:00
Jones 5a65dbcdb9 Update license year in file header 2026-02-17 19:11:23 +01:00
dependabot[bot] 0ca1ecd421 Bump io.netty:netty-all from 4.2.7.Final to 4.2.10.Final (#554)
Bumps [io.netty:netty-all](https://github.com/netty/netty) from 4.2.7.Final to 4.2.10.Final.
- [Commits](https://github.com/netty/netty/compare/netty-4.2.7.Final...netty-4.2.10.Final)

---
updated-dependencies:
- dependency-name: io.netty:netty-all
  dependency-version: 4.2.10.Final
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-09 14:17:27 +01:00
Jones c6ec0da14c Make README documentation link more obvious 2026-02-06 17:56:06 +01:00
Jones 76bcfc8b9a Use correct, maintained Discord link 2026-02-05 15:32:15 +01:00
66 changed files with 346 additions and 131 deletions

No files matched your search

+1 -1
View File
@@ -1,6 +1,6 @@
Before you start contributing, please take a moment to review our contributing guidelines.
If you can't contribute but like the project, feel free to show your support by starring the project on GitHub or
joining the [Discord](https://jonesdev.xyz/discord).
joining the [Discord](https://sonar.top/discord).
## Contributing Guidelines:
+1 -1
View File
@@ -4,5 +4,5 @@ contact_links:
url: https://docs.jonesdev.xyz/
about: Need help configuring Sonar or have questions regarding the installation and usage?
- name: Discord
url: https://jonesdev.xyz/discord/
url: https://sonar.top/discord/
about: If you have any further questions, please feel free to join the Discord server and open a ticket.
+6 -4
View File
@@ -11,7 +11,7 @@
[![](https://www.codefactor.io/repository/github/jonesdevelopment/sonar/badge/main)](https://www.codefactor.io/repository/github/jonesdevelopment/sonar/overview/main)
[![](https://img.shields.io/github/v/release/jonesdevelopment/sonar)](https://github.com/jonesdevelopment/sonar/releases)
[![](https://img.shields.io/github/issues/jonesdevelopment/sonar)](https://github.com/jonesdevelopment/sonar/issues)
[![](https://img.shields.io/discord/923308209769426994.svg?logo=discord)](https://jonesdev.xyz/discord)
[![](https://img.shields.io/discord/923308209769426994.svg?logo=discord)](https://sonar.top/discord)
[![](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
<br>
<!-- Quick navigation -->
@@ -21,9 +21,11 @@
|
[Pull Requests](https://github.com/jonesdevelopment/sonar/pulls)
|
[Discord](https://jonesdev.xyz/discord)
[Discord](https://sonar.top/discord)
|
[License](https://github.com/jonesdevelopment/sonar/?tab=readme-ov-file#license)
|
[Documentation](https://docs.jonesdev.xyz/)
</div>
> ### Notice about Sonar 3.0
@@ -52,10 +54,10 @@ Sonar also protects against spambot attacks since it queues the incoming connect
### False positives
Sonar is unlikely to ever falsely prevent a player from joining the server since Minecraft uses the TCP protocol, which means that packets are always sent in the correct order. Therefore, lag or ping should not affect the bot check.
If you or one of your players experiences a false positive, make sure to report it by opening a [GitHub issue](https://github.com/jonesdevelopment/sonar/issues/new/choose) or a ticket on the [Discord server](https://jonesdev.xyz/discord/).
If you or one of your players experiences a false positive, make sure to report it by opening a [GitHub issue](https://github.com/jonesdevelopment/sonar/issues/new/choose) or a ticket on the [Discord server](https://sonar.top/discord/).
## Sponsors
If you are interested in sponsoring this project, please contact me via [Discord](https://jonesdev.xyz/discord/).
If you are interested in sponsoring this project, please contact me via [Discord](https://sonar.top/discord/).
### Past Sponsors
+7
View File
@@ -42,6 +42,13 @@ jobs:
path: bukkit/build/libs/Sonar-Bukkit.jar
if-no-files-found: error
- name: Upload Paper Artifact
uses: actions/upload-artifact@v4
with:
name: Sonar-Paper
path: paper/build/libs/Sonar-Paper.jar
if-no-files-found: error
- name: Upload BungeeCord Artifact
uses: actions/upload-artifact@v4
with:
+1 -1
View File
@@ -1,5 +1,5 @@
/*
* Copyright (C) 2025 Sonar Contributors
* Copyright (C) 2026 Sonar Contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -75,7 +75,8 @@ public enum ProtocolVersion {
MINECRAFT_1_21_6(771, "1.21.6"),
MINECRAFT_1_21_7(772, "1.21.7"),
MINECRAFT_1_21_9(773, "1.21.9"),
MINECRAFT_1_21_11(774, "1.21.11");
MINECRAFT_1_21_11(774, "1.21.11"),
MINECRAFT_26_1(775, "26.1");
private final int protocol;
private final String name;
@@ -64,8 +64,8 @@ public class UpdateChecker {
lastCheckResult = CheckResult.LATEST_VERSION;
}
} catch (Throwable throwable) {
Sonar.get0().getLogger().warn("Unable to retrieve version information: {}", throwable);
throwable.printStackTrace(System.err);
Sonar.get0().getLogger().warn("Failed to check for updates (is your firewall set up properly?): {}",
throwable);
lastCheckResult = CheckResult.API_ERROR;
}
});
+1 -1
View File
@@ -8,7 +8,7 @@ bukkit {
name = rootProject.name
main = "xyz.jonesdev.sonar.bukkit.SonarBukkitPlugin"
authors = listOf("Jones Development", "Sonar Contributors")
website = "https://jonesdev.xyz/discord/"
website = "https://sonar.top/discord/"
load = BukkitPluginDescription.PluginLoadOrder.POSTWORLD
softDepend = listOf("Geyser-Spigot", "floodgate", "Protocolize", "ProtocolSupport",
"ViaVersion", "packetevents", "ProtocolLib", "FastLogin")
@@ -81,7 +81,8 @@ public enum BukkitServerVersion {
MINECRAFT_1_21_8,
MINECRAFT_1_21_9,
MINECRAFT_1_21_10,
MINECRAFT_1_21_11;
MINECRAFT_1_21_11,
MINECRAFT_26_1;
static final BukkitServerVersion[] REVERSED_VALUES;
@@ -25,6 +25,7 @@ import lombok.RequiredArgsConstructor;
import lombok.Setter;
import org.jetbrains.annotations.NotNull;
import xyz.jonesdev.sonar.api.Sonar;
import xyz.jonesdev.sonar.common.netty.TailExceptionsHandler;
import xyz.jonesdev.sonar.common.statistics.GlobalSonarStatistics;
import java.net.InetAddress;
@@ -85,5 +86,8 @@ public final class InboundHandler extends ChannelInboundHandlerAdapter {
@Override
public void exceptionCaught(final @NotNull ChannelHandlerContext ctx, final Throwable cause) throws Exception {
ctx.close();
if (TailExceptionsHandler.LOG_EXCEPTIONS) {
cause.printStackTrace(System.err);
}
}
}
@@ -25,6 +25,8 @@ import org.jetbrains.annotations.NotNull;
@ChannelHandler.Sharable
public final class TailExceptionsHandler extends ChannelDuplexHandler {
public static final TailExceptionsHandler INSTANCE = new TailExceptionsHandler();
// Do not enable unless instructed by support.
public static final boolean LOG_EXCEPTIONS = Boolean.getBoolean("sonar.log-netty-exceptions");
// We can override the default exceptionCaught method since the server
// does not have any other pipelines that could handle this error.
@@ -33,5 +35,8 @@ public final class TailExceptionsHandler extends ChannelDuplexHandler {
public void exceptionCaught(final @NotNull ChannelHandlerContext ctx, final Throwable cause) throws Exception {
// Close the channel if we encounter any errors.
ctx.close();
if (LOG_EXCEPTIONS) {
cause.printStackTrace(System.err);
}
}
}
@@ -23,6 +23,7 @@ import net.kyori.adventure.nbt.IntBinaryTag;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import xyz.jonesdev.sonar.api.Sonar;
import xyz.jonesdev.sonar.api.antibot.protocol.ProtocolVersion;
import xyz.jonesdev.sonar.api.config.SonarConfiguration;
@@ -37,6 +38,7 @@ import xyz.jonesdev.sonar.common.protocol.dimension.DimensionType;
import xyz.jonesdev.sonar.common.protocol.entity.EntityType;
import xyz.jonesdev.sonar.common.protocol.item.ItemType;
import xyz.jonesdev.sonar.common.protocol.packets.configuration.RegistryDataPacket;
import xyz.jonesdev.sonar.common.protocol.packets.configuration.UpdateTagsPacket;
import xyz.jonesdev.sonar.common.protocol.packets.login.LoginSuccessPacket;
import xyz.jonesdev.sonar.common.protocol.packets.play.*;
import xyz.jonesdev.sonar.common.util.ComponentHolder;
@@ -98,6 +100,8 @@ public class SonarPacketPreparer {
public final SonarPacket[] REGISTRY_SYNC_1_21_4 = RegistryDataPacket.of(DimensionRegistry.CODEC_1_21_4);
public final SonarPacket[] REGISTRY_SYNC_1_21_5 = RegistryDataPacket.of(DimensionRegistry.CODEC_1_21_5);
public final SonarPacket[] REGISTRY_SYNC_1_21_11 = RegistryDataPacket.of(DimensionRegistry.CODEC_1_21_11);
public final SonarPacket[] REGISTRY_SYNC_26_1 = RegistryDataPacket.of(DimensionRegistry.CODEC_26_1);
public final SonarPacket TAGS_UPDATE_26_1 = UpdateTagsPacket.of(DimensionRegistry.TAGS_26_1);
public final SonarPacket START_WRITING_CHUNKS = new GameEventPacket(13, 0);
public final static SonarPacket INVALID_HELD_ITEM_SLOT = new SetHeldItemPacket(-1);
public final SonarPacket RANDOM_KEEP_ALIVE = new SonarPacketSnapshot(new KeepAlivePacket(RANDOM.nextInt()));
@@ -295,8 +299,17 @@ public class SonarPacketPreparer {
+ Sonar.get0().getConfig().getVerification().getMaxPacketCount();
}
public static @Nullable SonarPacket getTagsPacket(final @NotNull ProtocolVersion protocolVersion) {
if (protocolVersion.greaterThanOrEquals(ProtocolVersion.MINECRAFT_26_1)) {
return TAGS_UPDATE_26_1;
}
return null; // apparently doesn't crash the client; we're safe... for now.
}
public static SonarPacket[] getRegistryPackets(final @NotNull ProtocolVersion protocolVersion) {
if (protocolVersion.greaterThanOrEquals(ProtocolVersion.MINECRAFT_1_21_11)) {
if (protocolVersion.greaterThanOrEquals(ProtocolVersion.MINECRAFT_26_1)) {
return REGISTRY_SYNC_26_1;
} else if (protocolVersion.greaterThanOrEquals(ProtocolVersion.MINECRAFT_1_21_11)) {
return REGISTRY_SYNC_1_21_11;
} else if (protocolVersion.greaterThanOrEquals(ProtocolVersion.MINECRAFT_1_21_5)) {
return REGISTRY_SYNC_1_21_5;
@@ -26,6 +26,7 @@ import org.jetbrains.annotations.NotNull;
import xyz.jonesdev.sonar.api.antibot.protocol.ProtocolVersion;
import xyz.jonesdev.sonar.common.protocol.packets.configuration.FinishConfigurationPacket;
import xyz.jonesdev.sonar.common.protocol.packets.configuration.RegistryDataPacket;
import xyz.jonesdev.sonar.common.protocol.packets.configuration.UpdateTagsPacket;
import xyz.jonesdev.sonar.common.protocol.packets.handshake.HandshakePacket;
import xyz.jonesdev.sonar.common.protocol.packets.login.LoginAcknowledgedPacket;
import xyz.jonesdev.sonar.common.protocol.packets.login.LoginStartPacket;
@@ -75,6 +76,8 @@ public enum SonarPacketRegistry {
clientbound.register(RegistryDataPacket.class, RegistryDataPacket::new,
map(0x05, MINECRAFT_1_20_2, true),
map(0x07, MINECRAFT_1_20_5, true));
clientbound.register(UpdateTagsPacket.class, UpdateTagsPacket::new,
map(0x0D, MINECRAFT_1_20_5, true));
serverbound.register(ClientInformationPacket.class, ClientInformationPacket::new,
map(0x00, MINECRAFT_1_20_2, false));
@@ -109,7 +112,8 @@ public enum SonarPacketRegistry {
map(0x2B, MINECRAFT_1_20_5, true),
map(0x2C, MINECRAFT_1_21_2, true),
map(0x2B, MINECRAFT_1_21_5, true),
map(0x30, MINECRAFT_1_21_9, true));
map(0x30, MINECRAFT_1_21_9, true),
map(0x31, MINECRAFT_26_1, true));
// minecraft:keep_alive
clientbound.register(KeepAlivePacket.class, KeepAlivePacket::new,
map(0x00, MINECRAFT_1_7_2, true),
@@ -128,7 +132,8 @@ public enum SonarPacketRegistry {
map(0x26, MINECRAFT_1_20_5, true),
map(0x27, MINECRAFT_1_21_2, true),
map(0x26, MINECRAFT_1_21_5, true),
map(0x2B, MINECRAFT_1_21_9, true));
map(0x2B, MINECRAFT_1_21_9, true),
map(0x2C, MINECRAFT_26_1, true));
// minecraft:disconnect
clientbound.register(DisconnectPacket.class, DisconnectPacket::new,
map(0x40, MINECRAFT_1_7_2, true),
@@ -166,7 +171,8 @@ public enum SonarPacketRegistry {
map(0x40, MINECRAFT_1_20_5, true),
map(0x42, MINECRAFT_1_21_2, true),
map(0x41, MINECRAFT_1_21_5, true),
map(0x46, MINECRAFT_1_21_9, true));
map(0x46, MINECRAFT_1_21_9, true),
map(0x48, MINECRAFT_26_1, true));
// minecraft:player_abilities
clientbound.register(PlayerAbilitiesPacket.class, PlayerAbilitiesPacket::new,
map(0x39, MINECRAFT_1_7_2, true),
@@ -186,7 +192,8 @@ public enum SonarPacketRegistry {
map(0x38, MINECRAFT_1_20_5, true),
map(0x3A, MINECRAFT_1_21_2, true),
map(0x39, MINECRAFT_1_21_5, true),
map(0x3E, MINECRAFT_1_21_9, true));
map(0x3E, MINECRAFT_1_21_9, true),
map(0x40, MINECRAFT_26_1, true));
// minecraft:level_chunk_with_light
clientbound.register(ChunkDataPacket.class, ChunkDataPacket::new,
map(0x21, MINECRAFT_1_7_2, true),
@@ -205,7 +212,8 @@ public enum SonarPacketRegistry {
map(0x27, MINECRAFT_1_20_5, true),
map(0x28, MINECRAFT_1_21_2, true),
map(0x27, MINECRAFT_1_21_5, true),
map(0x2C, MINECRAFT_1_21_9, true));
map(0x2C, MINECRAFT_1_21_9, true),
map(0x2D, MINECRAFT_26_1, true));
// minecraft:remove_entities
clientbound.register(RemoveEntitiesPacket.class, RemoveEntitiesPacket::new,
map(0x13, MINECRAFT_1_7_2, true),
@@ -227,7 +235,8 @@ public enum SonarPacketRegistry {
map(0x42, MINECRAFT_1_20_5, true),
map(0x47, MINECRAFT_1_21_2, true),
map(0x46, MINECRAFT_1_21_5, true),
map(0x4B, MINECRAFT_1_21_9, true));
map(0x4B, MINECRAFT_1_21_9, true),
map(0x4D, MINECRAFT_26_1, true));
// minecraft:set_passengers
clientbound.register(SetPassengersPacket.class, SetPassengersPacket::new,
map(0x1B, MINECRAFT_1_7_2, true),
@@ -246,7 +255,8 @@ public enum SonarPacketRegistry {
map(0x5F, MINECRAFT_1_20_5, true),
map(0x65, MINECRAFT_1_21_2, true),
map(0x64, MINECRAFT_1_21_5, true),
map(0x69, MINECRAFT_1_21_9, true));
map(0x69, MINECRAFT_1_21_9, true),
map(0x6B, MINECRAFT_26_1, true));
// minecraft:add_entity
clientbound.register(SpawnEntityPacket.class, SpawnEntityPacket::new,
map(0x0E, MINECRAFT_1_7_2, true),
@@ -270,7 +280,8 @@ public enum SonarPacketRegistry {
map(0x49, MINECRAFT_1_20_5, true),
map(0x4E, MINECRAFT_1_21_2, true),
map(0x4D, MINECRAFT_1_21_5, true),
map(0x52, MINECRAFT_1_21_9, true));
map(0x52, MINECRAFT_1_21_9, true),
map(0x54, MINECRAFT_26_1, true));
// minecraft:ping
clientbound.register(TransactionPacket.class, TransactionPacket::new,
map(0x32, MINECRAFT_1_7_2, true),
@@ -288,7 +299,8 @@ public enum SonarPacketRegistry {
map(0x35, MINECRAFT_1_20_5, true),
map(0x37, MINECRAFT_1_21_2, true),
map(0x36, MINECRAFT_1_21_5, true),
map(0x3B, MINECRAFT_1_21_9, true));
map(0x3B, MINECRAFT_1_21_9, true),
map(0x3D, MINECRAFT_26_1, true));
// minecraft:set_default_spawn_position
clientbound.register(SetDefaultSpawnPositionPacket.class, SetDefaultSpawnPositionPacket::new,
map(0x05, MINECRAFT_1_7_2, true),
@@ -309,7 +321,8 @@ public enum SonarPacketRegistry {
map(0x56, MINECRAFT_1_20_5, true),
map(0x5B, MINECRAFT_1_21_2, true),
map(0x5A, MINECRAFT_1_21_5, true),
map(0x5F, MINECRAFT_1_21_9, true));
map(0x5F, MINECRAFT_1_21_9, true),
map(0x61, MINECRAFT_26_1, true));
// minecraft:map_item_data
clientbound.register(MapDataPacket.class, MapDataPacket::new,
map(0x34, MINECRAFT_1_7_2, true),
@@ -327,7 +340,8 @@ public enum SonarPacketRegistry {
map(0x2C, MINECRAFT_1_20_5, true),
map(0x2D, MINECRAFT_1_21_2, true),
map(0x2C, MINECRAFT_1_21_5, true),
map(0x31, MINECRAFT_1_21_9, true));
map(0x31, MINECRAFT_1_21_9, true),
map(0x33, MINECRAFT_26_1, true));
// minecraft:container_set_slot
clientbound.register(SetContainerSlotPacket.class, SetContainerSlotPacket::new,
map(0x2F, MINECRAFT_1_7_2, true),
@@ -361,7 +375,8 @@ public enum SonarPacketRegistry {
map(0x5C, MINECRAFT_1_20_5, true),
map(0x61, MINECRAFT_1_21_2, true),
map(0x60, MINECRAFT_1_21_5, true),
map(0x65, MINECRAFT_1_21_9, true));
map(0x65, MINECRAFT_1_21_9, true),
map(0x67, MINECRAFT_26_1, true));
// minecraft:system_chat
clientbound.register(SystemChatPacket.class, SystemChatPacket::new,
map(0x02, MINECRAFT_1_7_2, true),
@@ -379,7 +394,8 @@ public enum SonarPacketRegistry {
map(0x6C, MINECRAFT_1_20_5, true),
map(0x73, MINECRAFT_1_21_2, true),
map(0x72, MINECRAFT_1_21_5, true),
map(0x77, MINECRAFT_1_21_9, true));
map(0x77, MINECRAFT_1_21_9, true),
map(0x79, MINECRAFT_26_1, true));
// minecraft:game_event
clientbound.register(GameEventPacket.class, GameEventPacket::new,
map(0x20, MINECRAFT_1_20_3, true),
@@ -391,7 +407,8 @@ public enum SonarPacketRegistry {
clientbound.register(TransferPacket.class, TransferPacket::new,
map(0x73, MINECRAFT_1_20_5, true),
map(0x7A, MINECRAFT_1_21_2, true),
map(0x7F, MINECRAFT_1_21_9, true));
map(0x7F, MINECRAFT_1_21_9, true),
map(0x81, MINECRAFT_26_1, true));
// minecraft:set_held_slot
clientbound.register(SetHeldItemPacket.class, SetHeldItemPacket::new,
map(0x09, MINECRAFT_1_7_2, true),
@@ -412,7 +429,8 @@ public enum SonarPacketRegistry {
map(0x53, MINECRAFT_1_20_5, true),
map(0x63, MINECRAFT_1_21_2, true),
map(0x62, MINECRAFT_1_21_5, true),
map(0x67, MINECRAFT_1_21_9, true));
map(0x67, MINECRAFT_1_21_9, true),
map(0x69, MINECRAFT_26_1, true));
// minecraft:animate
clientbound.register(EntityAnimationPacket.class, EntityAnimationPacket::new,
map(0x0B, MINECRAFT_1_7_2, true),
@@ -443,12 +461,14 @@ public enum SonarPacketRegistry {
map(0x64, MINECRAFT_1_20_5, true),
map(0x6B, MINECRAFT_1_21_2, true),
map(0x6A, MINECRAFT_1_21_5, true),
map(0x6F, MINECRAFT_1_21_9, true));
map(0x6F, MINECRAFT_1_21_9, true),
map(0x71, MINECRAFT_26_1, true));
// minecraft:client_tick_end
serverbound.register(ClientTickEndPacket.class, ClientTickEndPacket::new,
map(0x0B, MINECRAFT_1_21_2, false),
map(0x0C, MINECRAFT_1_21_6, false));
map(0x0C, MINECRAFT_1_21_6, false),
map(0x0D, MINECRAFT_26_1, false));
// minecraft:set_carried_item
serverbound.register(SetHeldItemPacket.class, SetHeldItemPacket::new,
map(0x09, MINECRAFT_1_7_2, false),
@@ -465,7 +485,8 @@ public enum SonarPacketRegistry {
map(0x2F, MINECRAFT_1_20_5, false),
map(0x31, MINECRAFT_1_21_2, false),
map(0x33, MINECRAFT_1_21_4, false),
map(0x34, MINECRAFT_1_21_6, false));
map(0x34, MINECRAFT_1_21_6, false),
map(0x35, MINECRAFT_26_1, false));
// minecraft:paddle_boat
serverbound.register(PaddleBoatPacket.class, PaddleBoatPacket::new,
map(0x11, MINECRAFT_1_9, false),
@@ -483,7 +504,8 @@ public enum SonarPacketRegistry {
map(0x1C, MINECRAFT_1_20_3, false),
map(0x1F, MINECRAFT_1_20_5, false),
map(0x21, MINECRAFT_1_21_2, false),
map(0x22, MINECRAFT_1_21_6, false));
map(0x22, MINECRAFT_1_21_6, false),
map(0x23, MINECRAFT_26_1, false));
// minecraft:player_input
serverbound.register(PlayerInputPacket.class, PlayerInputPacket::new,
map(0x0C, MINECRAFT_1_7_2, false),
@@ -502,7 +524,8 @@ public enum SonarPacketRegistry {
map(0x26, MINECRAFT_1_20_5, false),
map(0x28, MINECRAFT_1_21_2, false),
map(0x29, MINECRAFT_1_21_4, false),
map(0x2A, MINECRAFT_1_21_6, false));
map(0x2A, MINECRAFT_1_21_6, false),
map(0x26, MINECRAFT_26_1, false));
// minecraft:move_vehicle
serverbound.register(VehicleMovePacket.class, VehicleMovePacket::new,
map(0x10, MINECRAFT_1_9, false),
@@ -520,7 +543,8 @@ public enum SonarPacketRegistry {
map(0x1B, MINECRAFT_1_20_3, false),
map(0x1E, MINECRAFT_1_20_5, false),
map(0x20, MINECRAFT_1_21_2, false),
map(0x21, MINECRAFT_1_21_6, false));
map(0x21, MINECRAFT_1_21_6, false),
map(0x22, MINECRAFT_26_1, false));
// minecraft:chat
serverbound.register(SystemChatPacket.class, SystemChatPacket::new,
map(0x01, MINECRAFT_1_7_2, false),
@@ -533,7 +557,8 @@ public enum SonarPacketRegistry {
map(0x05, MINECRAFT_1_19_3, false),
map(0x06, MINECRAFT_1_20_5, false),
map(0x07, MINECRAFT_1_21_2, false),
map(0x08, MINECRAFT_1_21_6, false));
map(0x08, MINECRAFT_1_21_6, false),
map(0x09, MINECRAFT_26_1, false));
// minecraft:keep_alive
serverbound.register(KeepAlivePacket.class, KeepAlivePacket::new,
map(0x00, MINECRAFT_1_7_2, false),
@@ -552,7 +577,8 @@ public enum SonarPacketRegistry {
map(0x15, MINECRAFT_1_20_3, false),
map(0x18, MINECRAFT_1_20_5, false),
map(0x1A, MINECRAFT_1_21_2, false),
map(0x1B, MINECRAFT_1_21_6, false));
map(0x1B, MINECRAFT_1_21_6, false),
map(0x1C, MINECRAFT_26_1, false));
// minecraft:client_information
serverbound.register(ClientInformationPacket.class, ClientInformationPacket::new,
map(0x15, MINECRAFT_1_7_2, false),
@@ -567,7 +593,8 @@ public enum SonarPacketRegistry {
map(0x09, MINECRAFT_1_20_2, false),
map(0x0A, MINECRAFT_1_20_5, false),
map(0x0C, MINECRAFT_1_21_2, false),
map(0x0D, MINECRAFT_1_21_6, false));
map(0x0D, MINECRAFT_1_21_6, false),
map(0x0E, MINECRAFT_26_1, false));
// minecraft:custom_payload
serverbound.register(PluginMessagePacket.class, PluginMessagePacket::new,
map(0x17, MINECRAFT_1_7_2, false),
@@ -584,7 +611,8 @@ public enum SonarPacketRegistry {
map(0x0F, MINECRAFT_1_20_2, false),
map(0x12, MINECRAFT_1_21, false),
map(0x14, MINECRAFT_1_21_2, false),
map(0x15, MINECRAFT_1_21_6, false));
map(0x15, MINECRAFT_1_21_6, false),
map(0x16, MINECRAFT_26_1, false));
// minecraft:move_player_status_only
serverbound.register(SetPlayerOnGround.class, SetPlayerOnGround::new,
map(0x03, MINECRAFT_1_7_2, false),
@@ -603,7 +631,8 @@ public enum SonarPacketRegistry {
map(0x1A, MINECRAFT_1_20_3, false),
map(0x1D, MINECRAFT_1_20_5, false),
map(0x1F, MINECRAFT_1_21_2, false),
map(0x20, MINECRAFT_1_21_6, false));
map(0x20, MINECRAFT_1_21_6, false),
map(0x21, MINECRAFT_26_1, false));
// minecraft:move_player_pos
serverbound.register(SetPlayerPositionPacket.class, SetPlayerPositionPacket::new,
map(0x04, MINECRAFT_1_7_2, false),
@@ -622,7 +651,8 @@ public enum SonarPacketRegistry {
map(0x17, MINECRAFT_1_20_3, false),
map(0x1A, MINECRAFT_1_20_5, false),
map(0x1C, MINECRAFT_1_21_2, false),
map(0x1D, MINECRAFT_1_21_6, false));
map(0x1D, MINECRAFT_1_21_6, false),
map(0x1E, MINECRAFT_26_1, false));
// minecraft:move_player_rot
serverbound.register(SetPlayerRotationPacket.class, SetPlayerRotationPacket::new,
map(0x05, MINECRAFT_1_7_2, false),
@@ -641,7 +671,8 @@ public enum SonarPacketRegistry {
map(0x19, MINECRAFT_1_20_3, false),
map(0x1C, MINECRAFT_1_20_5, false),
map(0x1E, MINECRAFT_1_21_2, false),
map(0x1F, MINECRAFT_1_21_6, false));
map(0x1F, MINECRAFT_1_21_6, false),
map(0x20, MINECRAFT_26_1, false));
// minecraft:move_player_pos_rot
serverbound.register(SetPlayerPositionRotationPacket.class, SetPlayerPositionRotationPacket::new,
map(0x06, MINECRAFT_1_7_2, false),
@@ -660,7 +691,8 @@ public enum SonarPacketRegistry {
map(0x18, MINECRAFT_1_20_3, false),
map(0x1B, MINECRAFT_1_20_5, false),
map(0x1D, MINECRAFT_1_21_2, false),
map(0x1E, MINECRAFT_1_21_6, false));
map(0x1E, MINECRAFT_1_21_6, false),
map(0x1F, MINECRAFT_26_1, false));
// minecraft:accept_teleportation
serverbound.register(ConfirmTeleportationPacket.class, ConfirmTeleportationPacket::new,
map(0x00, MINECRAFT_1_9, false));
@@ -682,7 +714,8 @@ public enum SonarPacketRegistry {
map(0x27, MINECRAFT_1_20_5, false),
map(0x29, MINECRAFT_1_21_2, false),
map(0x2B, MINECRAFT_1_21_4, false),
map(0x2C, MINECRAFT_1_21_6, false));
map(0x2C, MINECRAFT_1_21_6, false),
map(0x2D, MINECRAFT_26_1, false));
// minecraft:swing
serverbound.register(AnimationPacket.class, AnimationPacket::new,
map(0x0A, MINECRAFT_1_7_2, false),
@@ -700,7 +733,8 @@ public enum SonarPacketRegistry {
map(0x38, MINECRAFT_1_21_2, false),
map(0x3A, MINECRAFT_1_21_4, false),
map(0x3B, MINECRAFT_1_21_5, false),
map(0x3C, MINECRAFT_1_21_6, false));
map(0x3C, MINECRAFT_1_21_6, false),
map(0x3F, MINECRAFT_26_1, false));
}
};
@@ -77,7 +77,10 @@ public enum BlockType {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_7)) {
return 8173;
}
return 9250;
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_11)) {
return 9250;
}
return 9451;
}, protocolVersion -> (double) 0.75f),
TRAPDOOR(protocolVersion -> {
// We have to use wooden trapdoors for 1.7 since 1.7 doesn't have iron trapdoors
@@ -129,7 +132,10 @@ public enum BlockType {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_7)) {
return 11303;
}
return 12380;
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_11)) {
return 12380;
}
return 12582;
}, protocolVersion -> 0.1875),
END_PORTAL_FRAME(protocolVersion -> {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_12_2)) {
@@ -174,7 +180,10 @@ public enum BlockType {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_7)) {
return 8195;
}
return 9272;
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_11)) {
return 9272;
}
return 9473;
}, protocolVersion -> 0.8125),
DAYLIGHT_SENSOR(protocolVersion -> {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_12_2)) {
@@ -222,7 +231,10 @@ public enum BlockType {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_7)) {
return 10016;
}
return 11093;
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_11)) {
return 11093;
}
return 11295;
}, protocolVersion -> 0.375),
COBBLESTONE_WALL(protocolVersion -> {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_12_2)) {
@@ -267,7 +279,10 @@ public enum BlockType {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_7)) {
return 8706;
}
return 9783;
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_11)) {
return 9783;
}
return 9984;
}, protocolVersion -> 1.5),
STONE_SLABS(protocolVersion -> {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_12_2)) {
@@ -315,7 +330,10 @@ public enum BlockType {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_7)) {
return 12120;
}
return 13197;
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_11)) {
return 13197;
}
return 13399;
}, protocolVersion -> 0.5),
WHITE_CARPET(protocolVersion -> {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_12_2)) {
@@ -363,7 +381,10 @@ public enum BlockType {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_7)) {
return 11617;
}
return 12694;
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_11)) {
return 12694;
}
return 12896;
}, protocolVersion -> protocolVersion.compareTo(MINECRAFT_1_8) < 0 ? 0 : 0.0625);
private final Function<ProtocolVersion, Integer> id;
@@ -41,6 +41,8 @@ public final class DimensionRegistry {
public final CompoundBinaryTag CODEC_1_21_4;
public final CompoundBinaryTag CODEC_1_21_5;
public final CompoundBinaryTag CODEC_1_21_11;
public final CompoundBinaryTag CODEC_26_1;
public final CompoundBinaryTag TAGS_26_1;
static {
CODEC_1_16 = getCodec("codec_1_16.nbt");
@@ -56,6 +58,8 @@ public final class DimensionRegistry {
CODEC_1_21_4 = getCodec("codec_1_21_4.nbt");
CODEC_1_21_5 = getCodec("codec_1_21_5.nbt");
CODEC_1_21_11 = getCodec("codec_1_21_11.nbt");
CODEC_26_1 = getCodec("codec_26_1.nbt");
TAGS_26_1 = getCodec("tags_26_1.nbt");
}
private @NotNull CompoundBinaryTag getCodec(final @NotNull String fileName) {
@@ -82,7 +82,10 @@ public enum ItemType {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_7)) {
return 1059;
}
return 1104;
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_11)) {
return 1104;
}
return 1105;
}, protocolVersion -> {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21)) {
return 26;
@@ -93,7 +96,10 @@ public enum ItemType {
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_9)) {
return 37;
}
return 44;
if (protocolVersion.lessThanOrEquals(MINECRAFT_1_21_11)) {
return 44;
}
return 46;
});
private final Function<ProtocolVersion, Integer> id;
@@ -0,0 +1,85 @@
/*
* Copyright (C) 2026 Jones Development
*
* All rights reserved.
* This software is proprietary and cannot be copied, modified, or distributed without explicit permission.
*/
package xyz.jonesdev.sonar.common.protocol.packets.configuration;
import io.netty.buffer.ByteBuf;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
import lombok.ToString;
import net.kyori.adventure.nbt.BinaryTag;
import net.kyori.adventure.nbt.CompoundBinaryTag;
import net.kyori.adventure.nbt.IntBinaryTag;
import net.kyori.adventure.nbt.ListBinaryTag;
import org.jetbrains.annotations.NotNull;
import xyz.jonesdev.sonar.api.antibot.protocol.ProtocolVersion;
import xyz.jonesdev.sonar.common.protocol.SonarPacket;
import xyz.jonesdev.sonar.common.protocol.SonarPacketSnapshot;
import xyz.jonesdev.sonar.common.util.ProtocolUtil;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
// If you want a decent solution, use Sonar 3.0 - I don't have the time to implement tags.
//
// Taken from
// https://github.com/BoomEaro/NanoLimbo/blob/feature/1.21.2/src/main/java/ua/nanit/limbo/protocol/packets/configuration/PacketUpdateTags.java
@ToString
@NoArgsConstructor
@AllArgsConstructor(access = AccessLevel.PROTECTED)
public final class UpdateTagsPacket implements SonarPacket {
private Map<String, Map<String, List<Integer>>> tags;
@Override
public void encode(final ByteBuf byteBuf, final ProtocolVersion protocolVersion) {
ProtocolUtil.writeVarInt(byteBuf, this.tags.size());
for (Map.Entry<String, Map<String, List<Integer>>> entry : this.tags.entrySet()) {
ProtocolUtil.writeString(byteBuf, entry.getKey());
Map<String, List<Integer>> subTags = entry.getValue();
ProtocolUtil.writeVarInt(byteBuf, subTags.size());
for (Map.Entry<String, List<Integer>> subEntry : subTags.entrySet()) {
ProtocolUtil.writeString(byteBuf, subEntry.getKey());
List<Integer> ids = subEntry.getValue();
ProtocolUtil.writeVarInt(byteBuf, ids.size());
for (int id : ids) {
ProtocolUtil.writeVarInt(byteBuf, id);
}
}
}
}
public static @NotNull SonarPacket of(@NotNull CompoundBinaryTag tags) {
Map<String, Map<String, List<Integer>>> tagsMap = new HashMap<>();
for (Map.Entry<String, ? extends BinaryTag> namedTag : tags) {
Map<String, List<Integer>> subTagsMap = new HashMap<>();
CompoundBinaryTag subTag = (CompoundBinaryTag) namedTag.getValue();
for (Map.Entry<String, ? extends BinaryTag> subNamedTag : subTag) {
List<Integer> idsList = new ArrayList<>();
ListBinaryTag ids = (ListBinaryTag) subNamedTag.getValue();
for (BinaryTag id : ids) {
idsList.add(((IntBinaryTag) id).value());
}
subTagsMap.put(subNamedTag.getKey(), idsList);
}
tagsMap.put(namedTag.getKey(), subTagsMap);
}
return new SonarPacketSnapshot(new UpdateTagsPacket(tagsMap));
}
@Override
public void decode(final ByteBuf byteBuf, final ProtocolVersion protocolVersion) {
throw new UnsupportedOperationException();
}
}
@@ -25,6 +25,7 @@ import lombok.ToString;
import net.kyori.adventure.nbt.CompoundBinaryTag;
import net.kyori.adventure.nbt.LongArrayBinaryTag;
import org.jetbrains.annotations.NotNull;
import org.jspecify.annotations.NonNull;
import xyz.jonesdev.sonar.api.antibot.protocol.ProtocolVersion;
import xyz.jonesdev.sonar.common.protocol.SonarPacket;
import xyz.jonesdev.sonar.common.util.ProtocolUtil;
@@ -111,7 +112,7 @@ public final class ChunkDataPacket implements SonarPacket {
// Since 1.21.5. The length of the long array of PaletteStorage no longer depends on the VarInt in the packet
// SingularPalette doesn't need to read any additional long array.
// So we'll remove suffix 0 as array length here. The cost of writing a palette has been reduced from 3 to 2 bytes.
final byte[] sectionData = protocolVersion.lessThan(ProtocolVersion.MINECRAFT_1_21_5) ? new byte[]{0, 0, 0, 0, 0, 0, 1, 0} : new byte[]{0, 0, 0, 0, 0, 1};
final byte[] sectionData = getSectionDataBytes(protocolVersion);
int count = 24;
ProtocolUtil.writeVarInt(byteBuf, sectionData.length * count);
@@ -141,6 +142,20 @@ public final class ChunkDataPacket implements SonarPacket {
}
}
private static byte @NonNull [] getSectionDataBytes(@NonNull ProtocolVersion protocolVersion) {
final byte[] sectionData;
if (protocolVersion.greaterThanOrEquals(ProtocolVersion.MINECRAFT_26_1)) {
sectionData = new byte[]{0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
} else if (protocolVersion.greaterThanOrEquals(ProtocolVersion.MINECRAFT_1_21_5)) {
sectionData = new byte[]{0, 0, 0, 0, 0, 1};
} else {
sectionData = new byte[]{0, 0, 0, 0, 0, 0, 1, 0};
}
return sectionData;
}
@Override
public void decode(final ByteBuf byteBuf, final ProtocolVersion protocolVersion) {
throw new UnsupportedOperationException();
@@ -24,6 +24,7 @@ import lombok.NoArgsConstructor;
import org.jetbrains.annotations.NotNull;
import xyz.jonesdev.sonar.api.antibot.protocol.ProtocolVersion;
import xyz.jonesdev.sonar.common.protocol.SonarPacket;
import xyz.jonesdev.sonar.common.util.ProtocolUtil;
@Getter
@NoArgsConstructor
@@ -34,6 +35,17 @@ public final class UpdateTimePacket implements SonarPacket {
@Override
public void encode(final @NotNull ByteBuf byteBuf, final @NotNull ProtocolVersion protocolVersion) {
if (protocolVersion.greaterThanOrEquals(ProtocolVersion.MINECRAFT_26_1)) {
// muck fojang
byteBuf.writeLong(timeOfDay);
ProtocolUtil.writeVarInt(byteBuf, 1);
ProtocolUtil.writeVarInt(byteBuf, 0); // dimension
ProtocolUtil.writeVarLong(byteBuf, timeOfDay);
byteBuf.writeFloat(0f); // partialTicks
byteBuf.writeFloat(tickDayTime ? 1f : 0f); // rate
return;
}
byteBuf.writeLong(worldAge);
byteBuf.writeLong(timeOfDay);
@@ -138,6 +138,11 @@ public final class LoginHandler extends VerificationHandler {
for (final SonarPacket packet : getRegistryPackets(user.getProtocolVersion())) {
user.delayedWrite(packet);
}
// Write the tags because Mojang decided to screw everyone over in 26.1.
final SonarPacket tags = getTagsPacket(user.getProtocolVersion());
if (tags != null) {
user.delayedWrite(tags);
}
// Write the FinishConfiguration packet to the buffer
user.delayedWrite(FinishConfigurationPacket.INSTANCE);
// Send all packets in one flush
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Potřebujete pomoc nebo máte otázky? https://jonesdev.xyz/discord
# Potřebujete pomoc nebo máte otázky? https://sonar.top/discord
# Zdrojový kód: https://github.com/jonesdevelopment/sonar
# Dokumentace: https://docs.jonesdev.xyz/administration/configuring-sonar
# Copyright Jones Development and Sonar Contributors, licencováno pod GPL-3.0
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Brauchst du Hilfe? https://jonesdev.xyz/discord
# Brauchst du Hilfe? https://sonar.top/discord
# Source code: https://github.com/jonesdevelopment/sonar
# Dokumentation: https://docs.jonesdev.xyz/administration/configuring-sonar
# Copyright Jones Development and Sonar Contributors, lizenziert unter GPL-3.0
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Need help or have questions? https://jonesdev.xyz/discord
# Need help or have questions? https://sonar.top/discord
# Source code: https://github.com/jonesdevelopment/sonar
# Documentation: https://docs.jonesdev.xyz/administration/configuring-sonar
# Copyright Jones Development and Sonar Contributors, licensed under GPL-3.0
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Besoin d'aide ou d'autres questions ? https://jonesdev.xyz/discord
# Besoin d'aide ou d'autres questions ? https://sonar.top/discord
# Code source : https://github.com/jonesdevelopment/sonar
# Documentation: https://docs.jonesdev.xyz/administration/configuring-sonar
# Copyright Jones Development and Sonar Contributors, licence sous GPL-3.0
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# დახმარება გჭირდება ან კითხვა გაქვს? https://jonesdev.xyz/discord
# დახმარება გჭირდება ან კითხვა გაქვს? https://sonar.top/discord
# საწყისი კოდი: https://github.com/jonesdevelopment/sonar
# Documentation: https://docs.jonesdev.xyz/administration/configuring-sonar
# Copyright Jones Development and Sonar Contributors, licensed under GPL-3.0
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Hulp nodig of vragen? https://jonesdev.xyz/discord
# Hulp nodig of vragen? https://sonar.top/discord
# Broncode: https://github.com/jonesdevelopment/sonar
# Documentatie: https://docs.jonesdev.xyz/administration/configuring-sonar
# Copyright Jones Development and Sonar Contributors, gelicentieerd onder GPL-3.0
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Potrzebujesz pomocy lub masz pytania? https://jonesdev.xyz/discord
# Potrzebujesz pomocy lub masz pytania? https://sonar.top/discord
# Source code: https://github.com/jonesdevelopment/sonar
# Dokumentacja: https://docs.jonesdev.xyz/administration/configuring-sonar
# Copyright Jones Development and Sonar Contributors, na licencji GPL-3.0
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Precisa de ajuda ou tem dúvidas? https://jonesdev.xyz/discord
# Precisa de ajuda ou tem dúvidas? https://sonar.top/discord
# Código-fonte: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development e Sonar Contributors, licenciado sob GPL-3.0
#
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Нужна помощь или есть вопросы? https://jonesdev.xyz/discord
# Нужна помощь или есть вопросы? https://sonar.top/discord
# Исходный код: https://github.com/jonesdevelopment/sonar
# Документация: https://docs.jonesdev.xyz/administration/configuring-sonar
# Copyright Jones Development and Sonar Contributors, под лицензией GPL-3.0
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# 需要帮助吗? https://jonesdev.xyz/discord
# 需要帮助吗? https://sonar.top/discord
# 源代码: https://github.com/jonesdevelopment/sonar
# 文件: https://docs.jonesdev.xyz/administration/configuring-sonar
# Copyright Jones Development and Sonar Contributors, 以 GPL-3.0 许可证分发
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Need help or have questions? https://jonesdev.xyz/discord
# Need help or have questions? https://sonar.top/discord
# Source code: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, licensed under GPL-3.0
#
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Potřebujete pomoc nebo máte otázky? https://jonesdev.xyz/discord
# Potřebujete pomoc nebo máte otázky? https://sonar.top/discord
# Zdrojový kód: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, licencováno pod GPL-3.0
#
@@ -16,7 +16,7 @@
# Zástupný text pro každý '<prefix>' v tomto konfiguračním souboru
prefix: <b><yellow>Sonar</b> <gray>» <white>
# Zástupný text pro každou '<support-url>' v tomto konfiguračním souboru
support-url: https://jonesdev.xyz/discord/
support-url: https://sonar.top/discord/
# Zástupný text pro každý '<header>' v tomto konfiguračním souboru
header:
- <b><yellow>Sonar</b><reset>
@@ -53,7 +53,7 @@ commands:
- <gray><click:open_url:'https://github.com/jonesdevelopment/sonar'>(C) <copyright-year> Jones Development a přispěvatelé Sonaru</click>
- ''
- <gray>Potřebujete pomoc nebo máte nějaké otázky?
- <white><click:open_url:'https://jonesdev.xyz/discord/'><hover:show_text:'(Kliknutím otevřete Discord)'>Otevřete ticket na Discordu </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Kliknutím otevřete GitHub)'>nebo otevřete nový problém na GitHubu.
- <white><click:open_url:'https://sonar.top/discord/'><hover:show_text:'(Kliknutím otevřete Discord)'>Otevřete ticket na Discordu </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Kliknutím otevřete GitHub)'>nebo otevřete nový problém na GitHubu.
- ''
# Formátování seznamu podpříkazů zobrazených při spuštění hlavního příkazu
subcommands: '<suggest-subcommand><hover:show_text:''<gray>Pouze hráči: </gray><only-players><br><gray>Vyžaduje konzoli: </gray><only-console><br><gray>Oprávnění: </gray><white><permission><br><gray>Aliasy: </gray><aliases>''><dark_aqua> ▪ <gray>/sonar <subcommand> <white><description></hover></suggest-subcommand>'
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Brauchst du Hilfe? https://jonesdev.xyz/discord
# Brauchst du Hilfe? https://sonar.top/discord
# Source code: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, lizenziert unter GPL-3.0
#
@@ -16,7 +16,7 @@
# Platzhalter für jedes '<prefix>' in dieser Konfigurationsdatei
prefix: <b><yellow>Sonar</b> <gray>» <white>
# Platzhalter für jede '<support-url>' in dieser Konfigurationsdatei
support-url: https://jonesdev.xyz/discord/
support-url: https://sonar.top/discord/
# Platzhalter für jedes '<header>' in dieser Konfigurationsdatei
header:
- <b><yellow>Sonar</b><reset>
@@ -54,7 +54,7 @@ commands:
- <gray><click:open_url:'https://github.com/jonesdevelopment/sonar'>(C) <copyright-year> Jones Development und Sonar Mitwirkende</click>
- ''
- <gray>Brauchst du Hilfe oder hast du Fragen?
- <white><click:open_url:'https://jonesdev.xyz/discord/'><hover:show_text:'(Klicken um Discord zu öffnen)'>Öffne ein Ticket auf Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Klicken um GitHub zu öffnen)'>oder erstelle ein neues Issue auf GitHub.
- <white><click:open_url:'https://sonar.top/discord/'><hover:show_text:'(Klicken um Discord zu öffnen)'>Öffne ein Ticket auf Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Klicken um GitHub zu öffnen)'>oder erstelle ein neues Issue auf GitHub.
- ''
# Formatierung der Liste der Unterbefehle, die angezeigt wird, wenn der Hauptbefehl ausgeführt wird
subcommands: '<suggest-subcommand><hover:show_text:''<gray>Nur Spieler: </gray><only-players><br><gray>Erfordert Konsole: </gray><only-console><br><gray>Berechtigung: </gray><white><permission><br><gray>Aliase: </gray><aliases>''><dark_aqua> ▪ <gray>/sonar <subcommand> <white><description></hover></suggest-subcommand>'
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Need help or have questions? https://jonesdev.xyz/discord
# Need help or have questions? https://sonar.top/discord
# Source code: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, licensed under GPL-3.0
#
@@ -16,7 +16,7 @@
# Placeholder for every '<prefix>' in this configuration file
prefix: <b><yellow>Sonar</b> <gray>» <white>
# Placeholder for every '<support-url>' in this configuration file
support-url: https://jonesdev.xyz/discord/
support-url: https://sonar.top/discord/
# Placeholder for every '<header>' in this configuration file
header:
- <b><yellow>Sonar</b><reset>
@@ -53,7 +53,7 @@ commands:
- <gray><click:open_url:'https://github.com/jonesdevelopment/sonar'>(C) <copyright-year> Jones Development and Sonar Contributors</click>
- ''
- <gray>Need help or have any questions?
- <white><click:open_url:'https://jonesdev.xyz/discord/'><hover:show_text:'(Click to open Discord)'>Open a ticket on the Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Click to open GitHub)'>or open a new issue on GitHub.
- <white><click:open_url:'https://sonar.top/discord/'><hover:show_text:'(Click to open Discord)'>Open a ticket on the Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Click to open GitHub)'>or open a new issue on GitHub.
- ''
# Formatting of the list of subcommands shown when running the main command
subcommands: '<suggest-subcommand><hover:show_text:''<gray>Only players: </gray><only-players><br><gray>Require console: </gray><only-console><br><gray>Permission: </gray><white><permission><br><gray>Aliases: </gray><aliases>''><dark_aqua> ▪ <gray>/sonar <subcommand> <white><description></hover></suggest-subcommand>'
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# ¿Necesita ayuda o tiene alguna pregunta? https://jonesdev.xyz/discord
# ¿Necesita ayuda o tiene alguna pregunta? https://sonar.top/discord
# Código fuente: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, bajo licencia GPL-3.0
#
@@ -16,7 +16,7 @@
# Placeholder for every '<prefix>' in this configuration file
prefix: <b><yellow>Sonar</b> <gray>» <white>
# Placeholder for every '<support-url>' in this configuration file
support-url: https://jonesdev.xyz/discord/
support-url: https://sonar.top/discord/
# Placeholder for every '<header>' in this configuration file
header:
- <b><yellow>Sonar</b><reset>
@@ -53,7 +53,7 @@ commands:
- <gray><click:open_url:'https://github.com/jonesdevelopment/sonar'>(C) <copyright-year>Jones Development and Sonar Contributors</click>
- ''
- <gray>¿Necesita ayuda o tiene alguna pregunta?
- <white><click:open_url:'https://jonesdev.xyz/discord/'><hover:show_text:'(Haga clic para abrir Discord)'>Abrir un ticket en Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Haga click para abrir GitHub)'>o abra una nueva Issue en GitHub.
- <white><click:open_url:'https://sonar.top/discord/'><hover:show_text:'(Haga clic para abrir Discord)'>Abrir un ticket en Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Haga click para abrir GitHub)'>o abra una nueva Issue en GitHub.
- ''
# Formatting of the list of subcommands shown when running the main command
subcommands: '<suggest-subcommand><hover:show_text:''<gray>Solo jugadores: </gray><only-players><br><gray>Requiere consola: </gray><only-console><br><gray>Permiso: </gray><white><permission><br><gray>Alias: </gray><aliases>''><dark_aqua> ▪ <gray>/sonar <subcommand> <white><description></hover></suggest-subcommand>'
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Besoin d'aide ou d'autres questions ? https://jonesdev.xyz/discord
# Besoin d'aide ou d'autres questions ? https://sonar.top/discord
# Code source : https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, licence sous GPL-3.0
#
@@ -16,7 +16,7 @@
# Espace réservé pour tout '<prefix>' dans ce fichier de configuration
prefix: <b><yellow>Sonar</b> <gray>» <white>
# Espace réservé pour tout '<support-url>' dans ce fichier de configuration
support-url: https://jonesdev.xyz/discord/
support-url: https://sonar.top/discord/
# Espace réservé pour tout '<header>' dans ce fichier de configuration
header:
- <b><yellow>Sonar</b><reset>
@@ -53,7 +53,7 @@ commands:
- <gray><click:open_url:'https://github.com/jonesdevelopment/sonar'>(C) <copyright-year> Jones Development et les contributeurs de Sonar</click>
- ''
- <gray>Besoin d'aide ou avez-vous des questions ?
- <white><click:open_url:'https://jonesdev.xyz/discord/'><hover:show_text:'(Cliquez pour ouvrir Discord)'>Ouvrez un ticket sur Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Cliquez pour ouvrir GitHub)'>ou ouvrez un nouveau problème sur GitHub.
- <white><click:open_url:'https://sonar.top/discord/'><hover:show_text:'(Cliquez pour ouvrir Discord)'>Ouvrez un ticket sur Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Cliquez pour ouvrir GitHub)'>ou ouvrez un nouveau problème sur GitHub.
- ''
# Format de la liste des sous-commandes affichée lors de l'exécution de la commande principale
subcommands: '<suggest-subcommand><hover:show_text:''<gray>Seulement pour les joueurs : </gray><only-players><br><gray>Nécessite la console : </gray><only-console><br><gray>Permission : </gray><white><permission><br><gray>Alias : </gray><aliases>''><dark_aqua> ▪ <gray>/sonar <subcommand> <white><description></hover></suggest-subcommand>'
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Butuh bantuan atau memiliki pertanyaan? https://jonesdev.xyz/discord
# Butuh bantuan atau memiliki pertanyaan? https://sonar.top/discord
# Kode sumber: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, dilisensikan di bawah GPL-3.0
#
@@ -16,7 +16,7 @@
# Placeholder untuk setiap '<prefix>' dalam file konfigurasi ini
prefix: <b><yellow>Sonar</b> <gray>» <white>
# Placeholder untuk setiap '<support-url>' dalam file konfigurasi ini
support-url: https://jonesdev.xyz/discord/
support-url: https://sonar.top/discord/
# Placeholder untuk setiap '<header>' dalam file konfigurasi ini
header:
- <b><yellow>Sonar</b><reset>
@@ -53,7 +53,7 @@ commands:
- <gray><click:open_url:'https://github.com/jonesdevelopment/sonar'>(C) <copyright-year> Jones Development dan Kontributor Sonar</click>
- ''
- <gray>Butuh bantuan atau memiliki pertanyaan?
- <white><click:open_url:'https://jonesdev.xyz/discord/'><hover:show_text:'(Klik untuk membuka Discord)'>Buka tiket di Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Klik untuk membuka GitHub)'>atau buka masalah baru di GitHub.
- <white><click:open_url:'https://sonar.top/discord/'><hover:show_text:'(Klik untuk membuka Discord)'>Buka tiket di Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Klik untuk membuka GitHub)'>atau buka masalah baru di GitHub.
- ''
# Format daftar sub-perintah yang ditampilkan saat menjalankan perintah utama
subcommands: '<suggest-subcommand><hover:show_text:''<gray>Hanya pemain: </gray><only-players><br><gray>Membutuhkan konsol: </gray><only-console><br><gray>Izin: </gray><white><permission><br><gray>Alias: </gray><aliases>''><dark_aqua> ▪ <gray>/sonar <subcommand> <white><description></hover></suggest-subcommand>'
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Need help or have questions? https://jonesdev.xyz/discord
# Need help or have questions? https://sonar.top/discord
# Source code: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, licensed under GPL-3.0
#
@@ -16,7 +16,7 @@
# Placeholder for every '<prefix>' in this configuration file
prefix: <b><yellow>Sonar</b> <gray>» <white>
# Placeholder for every '<support-url>' in this configuration file
support-url: https://jonesdev.xyz/discord/
support-url: https://sonar.top/discord/
# Placeholder for every '<header>' in this configuration file
header:
- <b><yellow>Sonar</b><reset>
@@ -53,7 +53,7 @@ commands:
- <gray><click:open_url:'https://github.com/jonesdevelopment/sonar'>(C) <copyright-year> Jones Development e i collaboratori di Sonar</click>
- ''
- <gray>Hai bisogno di aiuto o hai domande?
- <white><click:open_url:'https://jonesdev.xyz/discord/'><hover:show_text:'(Clicca per aprire Discord)'>Apri un ticket su Discord</hover></click> oppure <click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Clicca per aprire GitHub)'>apri una nuova issue su GitHub</hover></click>.
- <white><click:open_url:'https://sonar.top/discord/'><hover:show_text:'(Clicca per aprire Discord)'>Apri un ticket su Discord</hover></click> oppure <click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Clicca per aprire GitHub)'>apri una nuova issue su GitHub</hover></click>.
- ''
# Formatting of the list of subcommands shown when running the main command
subcommands: '<suggest-subcommand><hover:show_text:''<gray>Solo giocatori: </gray><only-players><br><gray>Richiede console: </gray><only-console><br><gray>Permesso: </gray><white><permission><br><gray>Alias: </gray><aliases>''><dark_aqua> ▪ <gray>/sonar <subcommand> <white><description></hover></suggest-subcommand>'
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# გჭირდება დახმარება ან გაქვს კითხვები? დაგვიკავშირდი https://jonesdev.xyz/discord
# გჭირდება დახმარება ან გაქვს კითხვები? დაგვიკავშირდი https://sonar.top/discord
# კოდის წყარო: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, licensed under GPL-3.0
#
@@ -16,7 +16,7 @@
# ცვლადი ყველა '<prefix>' სთვის ამ ფაილში.
prefix: <b><yellow>Sonar</b> <gray>» <white>
# ცვლადი ყველა '<support-url>' სთვის ამ ფაილში.
support-url: https://jonesdev.xyz/discord/
support-url: https://sonar.top/discord/
# ცვლადი ყველა '<header>' სთვის ამ ფაილში.
header:
- <b><yellow>Sonar</b><reset>
@@ -53,7 +53,7 @@ commands:
- <gray><click:open_url:'https://github.com/jonesdevelopment/sonar'>(C) <copyright-year> Jones Development and Sonar Contributors</click>
- ''
- <gray>გჭირდებათ დახმარება ან გაქვთ რამე კითხვა?
- <white><click:open_url:'https://jonesdev.xyz/discord/'><hover:show_text:'(დააჭირეთ რომ გახსნათ Discord)'>გახსენით ბილეთი Discord_ზე </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(დააჭირეთ რომ გახსნათ GitHub)'>ან შექმენით ახალი პრობლემის პოსტი GitHub_ზე.
- <white><click:open_url:'https://sonar.top/discord/'><hover:show_text:'(დააჭირეთ რომ გახსნათ Discord)'>გახსენით ბილეთი Discord_ზე </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(დააჭირეთ რომ გახსნათ GitHub)'>ან შექმენით ახალი პრობლემის პოსტი GitHub_ზე.
- ''
# ქვე-ბრძანებების ფორმატი რომელიც არის ნაჩვენები მთავარი ბრძანების გაცემის დროს.
subcommands: '<suggest-subcommand><hover:show_text:''<gray>მხოლოდ მოთამაშეები: </gray><only-players><br><gray>აუცილებელია კონსოლი: </gray><only-console><br><gray>უფლება: </gray><white><permission><br><gray>სხვა-სახელი: </gray><aliases>''><dark_aqua> ▪ <gray>/sonar <ქვე-ბრძანება> <white><description></hover></suggest-subcommand>'
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Hulp nodig of vragen? https://jonesdev.xyz/discord
# Hulp nodig of vragen? https://sonar.top/discord
# Broncode: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, gelicentieerd onder GPL-3.0
#
@@ -16,7 +16,7 @@
# Tijdelijke aanduiding voor elke '<prefix>' in dit configuratiebestand
prefix: <b><yellow>Sonar</b> <gray>» <white>
# Tijdelijke aanduiding voor elke '<support-url>' in dit configuratiebestand
support-url: https://jonesdev.xyz/discord/
support-url: https://sonar.top/discord/
# Tijdelijke aanduiding voor elke '<header>' in dit configuratiebestand
header:
- <b><yellow>Sonar</b><reset>
@@ -53,7 +53,7 @@ commands:
- <gray><click:open_url:'https://github.com/jonesdevelopment/sonar'>(C) <copyright-year> Jones Development and Sonar Contributors</click>
- ''
- <gray>Hulp nodig of vragen?
- <white><click:open_url:'https://jonesdev.xyz/discord/'><hover:show_text:'(Klik om Discord te openen)'>Open een ticket op de Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Klik om GitHub te openen)'>of open een nieuw probleem op GitHub.
- <white><click:open_url:'https://sonar.top/discord/'><hover:show_text:'(Klik om Discord te openen)'>Open een ticket op de Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Klik om GitHub te openen)'>of open een nieuw probleem op GitHub.
- ''
# Opmaak van de lijst met subcommand die wordt weergegeven bij het uitvoeren van de hoofdopdracht
subcommands: '<suggest-subcommand><hover:show_text:''<gray>Alleen spelers: </gray><only-players><br><gray>Vereist console: </gray><only-console><br><gray>Toestemming: </gray><white><permission><br><gray>Aliassen: </gray><aliases>''><dark_aqua> ▪ <gray>/sonar <subcommand> <white><description></hover></suggest-subcommand>'
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Potrzebujesz pomocy lub masz pytania? https://jonesdev.xyz/discord
# Potrzebujesz pomocy lub masz pytania? https://sonar.top/discord
# Source code: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, na licencji GPL-3.0
#
@@ -16,7 +16,7 @@
# Placeholder for every '<prefix>' in this configuration file
prefix: <b><yellow>Sonar</b> <gray>» <white>
# Placeholder for every '<support-url>' in this configuration file
support-url: https://jonesdev.xyz/discord/
support-url: https://sonar.top/discord/
# Placeholder for every '<header>' in this configuration file
header:
- <b><yellow>Sonar</b><reset>
@@ -54,7 +54,7 @@ commands:
Jones Development and Sonar Contributors</click>
- ''
- <gray>Potrzebujesz pomocy lub masz pytania?
- <white><click:open_url:'https://jonesdev.xyz/discord/'><hover:show_text:'(Kliknij aby otworzyć Discord)'>Otwórz zgłoszenie na Discordzie </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Kliknij aby otworzyć GitHub)'>lub otwórz nowe zgłoszenie w serwisie GitHub.
- <white><click:open_url:'https://sonar.top/discord/'><hover:show_text:'(Kliknij aby otworzyć Discord)'>Otwórz zgłoszenie na Discordzie </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Kliknij aby otworzyć GitHub)'>lub otwórz nowe zgłoszenie w serwisie GitHub.
- ''
# Formatting of the list of subcommands shown when running the main command
subcommands: '<suggest-subcommand><hover:show_text:''<gray>Only players: </gray><only-players><br><gray>Require
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Precisa de ajuda ou tem dúvidas? https://jonesdev.xyz/discord
# Precisa de ajuda ou tem dúvidas? https://sonar.top/discord
# Código-fonte: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development e Sonar Contributors, licenciado sob GPL-3.0
#
@@ -16,7 +16,7 @@
# Placeholder para cada '<prefix>' neste arquivo de configuração
prefix: <b><yellow>Sonar</b> <gray>» <white>
# Placeholder para cada '<support-url>' neste arquivo de configuração
support-url: https://jonesdev.xyz/discord/
support-url: https://sonar.top/discord/
# Placeholder para cada '<header>' neste arquivo de configuração
header:
- <b><yellow>Sonar</b><reset>
@@ -53,7 +53,7 @@ commands:
- <gray><click:open_url:'https://github.com/jonesdevelopment/sonar'>(C) <copyright-year> Jones Development e Contribuidores do Sonar</click>
- ''
- <gray>Precisa de ajuda ou tem alguma dúvida?
- <white><click:open_url:'https://jonesdev.xyz/discord/'><hover:show_text:'(Clique para abrir o Discord)'>Abra um ticket no Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Clique para abrir o GitHub)'>ou abra um novo problema no GitHub.
- <white><click:open_url:'https://sonar.top/discord/'><hover:show_text:'(Clique para abrir o Discord)'>Abra um ticket no Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Clique para abrir o GitHub)'>ou abra um novo problema no GitHub.
- ''
# Formatação da lista de subcomandos mostrada ao executar o comando principal
subcommands: '<suggest-subcommand><hover:show_text:''<gray>Somente jogadores: </gray><only-players><br><gray>Requer console: </gray><only-console><br><gray>Permissão: </gray><white><permission><br><gray>Aliases: </gray><aliases>''><dark_aqua> ▪ <gray>/sonar <subcommand> <white><description></hover></suggest-subcommand>'
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Нужна помощь или есть вопросы? https://jonesdev.xyz/discord
# Нужна помощь или есть вопросы? https://sonar.top/discord
# Исходный код: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, под лицензией GPL-3.0
#
@@ -16,7 +16,7 @@
# Плейсхолдер для '<prefix>' в конфиге
prefix: <b><yellow>Sonar</b> <gray>» <white>
# Плейсхолдер для '<support-url>' в конфиге
support-url: https://jonesdev.xyz/discord/
support-url: https://sonar.top/discord/
# Плейсхолдер для '<header>' в конфиге
header:
- <b><yellow>Sonar</b><reset>
@@ -53,7 +53,7 @@ commands:
- <gray><click:open_url:'https://github.com/jonesdevelopment/sonar'>(C) <copyright-year> Jones Development and Sonar Contributors</click>
- ''
- <gray>Нужна помощь или есть вопросы?
- <white><click:open_url:'https://jonesdev.xyz/discord/'><hover:show_text:'(Нажмите чтобы открыть Discord)'>Откройте тикет в Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Нажмите чтобы открыть GitHub)'>или откройте новый вопрос на GitHub.
- <white><click:open_url:'https://sonar.top/discord/'><hover:show_text:'(Нажмите чтобы открыть Discord)'>Откройте тикет в Discord </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Нажмите чтобы открыть GitHub)'>или откройте новый вопрос на GitHub.
- ''
# Форматирование списка подкоманд
subcommands: '<suggest-subcommand><hover:show_text:''<gray>Только игроки: </gray><only-players><br><gray>Требуется консоль: </gray><only-console><br><gray>Permission: </gray><white><permission><br><gray>Псевдонимы: </gray><aliases>''><dark_aqua> ▪ <gray>/sonar <subcommand> <white><description></hover></suggest-subcommand>'
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Yardıma mı ihtiyacınız var veya sorularınız mı var? https://jonesdev.xyz/discord
# Yardıma mı ihtiyacınız var veya sorularınız mı var? https://sonar.top/discord
# Kaynak kodu: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, GPL-3.0 altında lisanslanmıştır
#
@@ -16,7 +16,7 @@
# Bu yapılandırma dosyasındaki her '<prefix>' için yer tutucu
prefix: <b><yellow>Sonar</b> <gray>» <white>
# Bu yapılandırma dosyasındaki her '<support-url>' için yer tutucu
support-url: https://jonesdev.xyz/discord/
support-url: https://sonar.top/discord/
# Bu yapılandırma dosyasındaki her '<header>' için yer tutucu
header:
- <b><yellow>Sonar</b><reset>
@@ -53,7 +53,7 @@ commands:
- <gray><click:open_url:'https://github.com/jonesdevelopment/sonar'>(C) <copyright-year> Jones Development ve Sonar Katkıda Bulunanlar</click>
- ''
- <gray>Yardıma mı ihtiyacınız var veya sorularınız mı var?
- <white><click:open_url:'https://jonesdev.xyz/discord/'><hover:show_text:'(Discord\'u açmak için tıklayın)'>Discord üzerinden bir bilet açın </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(GitHub\'ı açmak için tıklayın)'>veya GitHub üzerinde yeni bir sorun açın.
- <white><click:open_url:'https://sonar.top/discord/'><hover:show_text:'(Discord\'u açmak için tıklayın)'>Discord üzerinden bir bilet açın </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(GitHub\'ı açmak için tıklayın)'>veya GitHub üzerinde yeni bir sorun açın.
- ''
# Ana komutu çalıştırırken gösterilen alt komutların listesi için biçimlendirme
subcommands: '<suggest-subcommand><hover:show_text:''<gray>Sadece oyuncular: </gray><only-players><br><gray>Konsol gerekli: </gray><only-console><br><gray>İzin: </gray><white><permission><br><gray>Diğer isimler: </gray><aliases>''><dark_aqua> ▪ <gray>/sonar <suggest-subcommand><subcommand></suggest-subcommand> <white><description></hover></suggest-subcommand>'
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# 需要帮助吗? https://jonesdev.xyz/discord
# 需要帮助吗? https://sonar.top/discord
# 源代码: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, 以 GPL-3.0 许可
#
@@ -16,7 +16,7 @@
# <prefix> 占位符
prefix: <b><yellow>Sonar</b> <gray>» <white>
# <support-url> 占位符
support-url: https://jonesdev.xyz/discord/
support-url: https://sonar.top/discord/
# <header> 占位符. (支持多行)
header:
- <b><yellow>Sonar</b><reset>
@@ -53,7 +53,7 @@ commands:
- <gray><click:open_url:'https://github.com/jonesdevelopment/sonar'>(C) <copyright-year> Jones Development and Sonar Contributors</click>
- ''
- <gray>有问题或需要帮助?
- <white><click:open_url:'https://jonesdev.xyz/discord/'><hover:show_text:'(Click to open Discord)'>在我们的Discord上打开一张ticket </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Click to open GitHub)'>或在Github打开新的问题.
- <white><click:open_url:'https://sonar.top/discord/'><hover:show_text:'(Click to open Discord)'>在我们的Discord上打开一张ticket </hover></click><click:open_url:'https://github.com/jonesdevelopment/sonar/issues'><hover:show_text:'(Click to open GitHub)'>或在Github打开新的问题.
- ''
# 执行根命令时 对于子命令的描述.
subcommands: '<suggest-subcommand><hover:show_text:''<gray>只有玩家可以执行该命令: </gray><only-players><br><gray>只有控制台可以执行该命令: </gray><only-console><br><gray>需要的权限: </gray><white><permission><br><gray>别名: </gray><aliases>''><dark_aqua> ▪ <gray>/sonar <subcommand> <white><description></hover></suggest-subcommand>'
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Potřebujete pomoc nebo máte otázky? https://jonesdev.xyz/discord
# Potřebujete pomoc nebo máte otázky? https://sonar.top/discord
# Zdrojový kód: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, licencováno pod GPL-3.0
#
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Brauchst du Hilfe? https://jonesdev.xyz/discord
# Brauchst du Hilfe? https://sonar.top/discord
# Source code: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, lizenziert unter GPL-3.0
#
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Need help or have questions? https://jonesdev.xyz/discord
# Need help or have questions? https://sonar.top/discord
# Source code: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, licensed under GPL-3.0
#
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# ¿Necesita ayuda o tiene alguna pregunta? https://jonesdev.xyz/discord
# ¿Necesita ayuda o tiene alguna pregunta? https://sonar.top/discord
# Código fuente: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, bajo licencia GPL-3.0
#
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Besoin d'aide ou d'autres questions ? https://jonesdev.xyz/discord
# Besoin d'aide ou d'autres questions ? https://sonar.top/discord
# Code source : https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, licence sous GPL-3.0
#
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Butuh bantuan atau punya pertanyaan? https://jonesdev.xyz/discord
# Butuh bantuan atau punya pertanyaan? https://sonar.top/discord
# Kode sumber: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, dilisensikan di bawah GPL-3.0
#
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# დახმარება გჭირდება ან კითხვა გაქვს? https://jonesdev.xyz/discord
# დახმარება გჭირდება ან კითხვა გაქვს? https://sonar.top/discord
# საწყისი კოდი: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, licensed under GPL-3.0
#
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Hulp nodig of vragen? https://jonesdev.xyz/discord
# Hulp nodig of vragen? https://sonar.top/discord
# Broncode: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, gelicentieerd onder GPL-3.0
#
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Potrzebujesz pomocy lub masz pytania? https://jonesdev.xyz/discord
# Potrzebujesz pomocy lub masz pytania? https://sonar.top/discord
# Source code: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, na licencji GPL-3.0
#
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Precisa de ajuda ou tem dúvidas? https://jonesdev.xyz/discord
# Precisa de ajuda ou tem dúvidas? https://sonar.top/discord
# Código-fonte: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development e Sonar Contributors, licenciado sob GPL-3.0
#
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# Нужна помощь или есть вопросы? https://jonesdev.xyz/discord
# Нужна помощь или есть вопросы? https://sonar.top/discord
# Исходный код: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, под лицензией GPL-3.0
#
@@ -8,7 +8,7 @@
# | $$$$$$/| $$$$$$/| $$ | $$| $$$$$$$| $$
# \______/ \______/ |__/ |__/ \_______/|__/
#
# 需要帮助吗? https://jonesdev.xyz/discord
# 需要帮助吗? https://sonar.top/discord
# 源代码: https://github.com/jonesdevelopment/sonar
# Copyright Jones Development and Sonar Contributors, 以 GPL-3.0 许可
#
+1 -1
View File
@@ -1,3 +1,3 @@
group=xyz.jonesdev
version=2.1.45
version=2.1.46
description=A lightweight, effective, and easy-to-use anti-bot plugin for Velocity, BungeeCord, and Bukkit.
+7 -7
View File
@@ -1,15 +1,15 @@
[versions]
netty = "4.2.7.Final"
netty = "4.2.12.Final"
adventure = "4.24.0"
adventure-platform = "4.4.1"
bstats = "3.1.0"
bstats = "3.2.1"
libby = "2.0.0-SNAPSHOT"
pluginyml = "0.6.0"
[plugins]
indra-git = "net.kyori.indra.git:3.2.0"
shadow = "com.gradleup.shadow:8.3.8"
spotless = "com.diffplug.spotless:8.2.1"
shadow = "com.gradleup.shadow:9.4.1"
spotless = "com.diffplug.spotless:8.4.0"
pluginyml-bungee = { id = "net.minecrell.plugin-yml.bungee", version.ref = "pluginyml" }
pluginyml-bukkit = { id = "net.minecrell.plugin-yml.bukkit", version.ref = "pluginyml" }
pluginyml-paper = { id = "net.minecrell.plugin-yml.paper", version.ref = "pluginyml" }
@@ -31,11 +31,11 @@ bstats-bukkit = { module = "org.bstats:bstats-bukkit", version.ref = "bstats" }
bstats-velocity = { module = "org.bstats:bstats-velocity", version.ref = "bstats" }
imagefilters = "com.jhlabs:filters:2.0.235-1"
caffeine = "com.github.ben-manes.caffeine:caffeine:3.2.3"
annotations = "org.jetbrains:annotations:26.0.2"
annotations = "org.jetbrains:annotations:26.1.0"
simpleyaml = "com.github.Carleslc.Simple-YAML:Simple-Yaml:1.8.4"
ormlite = "com.j256.ormlite:ormlite-jdbc:6.1"
lombok = "org.projectlombok:lombok:1.18.42"
bungeecord = "net.md-5:bungeecord-proxy:1.21-SNAPSHOT"
lombok = "org.projectlombok:lombok:1.18.44"
bungeecord = "net.md-5:bungeecord-proxy:26.1-R0.1-SNAPSHOT"
velocity = "io.papermc.velocity:velocity-proxy:3.5.0-SNAPSHOT"
paper = "io.papermc.paper:paper-api:1.21.10-R0.1-SNAPSHOT"
# We have to use 1.16.5 for backwards compatibility
Binary file not shown.
+1 -1
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.3.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.1-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
Vendored
+1 -1
View File
@@ -57,7 +57,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/HEAD/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# https://github.com/gradle/gradle/blob/2d6327017519d23b96af35865dc997fcb544fb40/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
+1 -1
View File
@@ -8,7 +8,7 @@ paper {
name = rootProject.name
main = "xyz.jonesdev.sonar.paper.SonarPaperPlugin"
authors = listOf("Jones Development", "Sonar Contributors")
website = "https://jonesdev.xyz/discord/"
website = "https://sonar.top/discord/"
load = BukkitPluginDescription.PluginLoadOrder.POSTWORLD
apiVersion = "1.21" // ignore legacy plugin warning
foliaSupported = true
+1 -1
View File
@@ -13,7 +13,7 @@ tasks {
val props = mapOf(
"version" to rootProject.version.toString(),
"description" to rootProject.description,
"url" to "https://jonesdev.xyz/discord/",
"url" to "https://sonar.top/discord/",
"main" to "xyz.jonesdev.sonar.velocity.SonarVelocityPlugin"
)
inputs.properties(props)