Skip to content

Commit

Permalink
Added: ScoreboardListener to fix a bypass possible when to players wh…
Browse files Browse the repository at this point in the history
…ere in the same minecraft team with a scoreboard enabled
  • Loading branch information
Bram1903 committed Oct 1, 2024
1 parent fcea5e8 commit 58ab9eb
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 19 deletions.
12 changes: 6 additions & 6 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -47,17 +47,17 @@ tasks {
// 1.17 = Java 16
// 1.18 - 1.20.4 = Java 17
// 1-20.5+ = Java 21
val version = "1.21"
val version = "1.21.1"
val javaVersion = JavaLanguageVersion.of(21)

val jvmArgsExternal = listOf(
"-Dcom.mojang.eula.agree=true"
)

val sharedBukkitPlugins = runPaper.downloadPluginsSpec {
url("https://ci.codemc.io/job/retrooper/job/packetevents/lastSuccessfulBuild/artifact/spigot/build/libs/packetevents-spigot-2.4.1-SNAPSHOT.jar")
url("https://github.com/ViaVersion/ViaVersion/releases/download/5.0.1/ViaVersion-5.0.1.jar")
url("https://github.com/ViaVersion/ViaBackwards/releases/download/5.0.1/ViaBackwards-5.0.1.jar")
url("https://ci.codemc.io/job/retrooper/job/packetevents/lastSuccessfulBuild/artifact/spigot/build/libs/packetevents-spigot-2.5.1-SNAPSHOT.jar")
url("https://github.com/ViaVersion/ViaVersion/releases/download/5.0.3/ViaVersion-5.0.3.jar")
url("https://github.com/ViaVersion/ViaBackwards/releases/download/5.0.3/ViaBackwards-5.0.3.jar")
}

runServer {
Expand All @@ -70,8 +70,8 @@ tasks {

downloadPlugins {
from(sharedBukkitPlugins)
url("https://ci.lucko.me/job/spark/418/artifact/spark-bukkit/build/libs/spark-1.10.73-bukkit.jar")
url("https://download.luckperms.net/1549/bukkit/loader/LuckPerms-Bukkit-5.4.134.jar")
url("https://ci.lucko.me/job/spark/456/artifact/spark-bukkit/build/libs/spark-1.10.110-bukkit.jar")
url("https://download.luckperms.net/1556/bukkit/loader/LuckPerms-Bukkit-5.4.141.jar")
}

jvmArgs = jvmArgsExternal
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,7 @@
import com.deathmotion.antihealthindicator.data.Settings;
import com.deathmotion.antihealthindicator.packetlisteners.EntityTracker;
import com.deathmotion.antihealthindicator.packetlisteners.VehicleState;
import com.deathmotion.antihealthindicator.packetlisteners.spoofers.EntityEquipmentListener;
import com.deathmotion.antihealthindicator.packetlisteners.spoofers.EntityMetadataListener;
import com.deathmotion.antihealthindicator.packetlisteners.spoofers.PlayerUpdateHealthListener;
import com.deathmotion.antihealthindicator.packetlisteners.spoofers.WorldSeedListener;
import com.deathmotion.antihealthindicator.packetlisteners.spoofers.*;
import com.github.retrooper.packetevents.PacketEvents;
import com.github.retrooper.packetevents.event.PacketListenerPriority;

Expand Down Expand Up @@ -66,6 +63,7 @@ private void setupEntityListeners() {
if (settings.getEntityData().isEnabled()) {
PacketEvents.getAPI().getEventManager().registerListener(new EntityTracker<>(platform), PacketListenerPriority.LOW);
PacketEvents.getAPI().getEventManager().registerListener(new EntityMetadataListener<>(platform));
PacketEvents.getAPI().getEventManager().registerListener(new ScoreboardListener<>(platform));

if (!settings.getEntityData().isPlayersOnly()) {
PacketEvents.getAPI().getEventManager().registerListener(new VehicleState<>(platform));
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.deathmotion.antihealthindicator.packetlisteners.spoofers;

import com.deathmotion.antihealthindicator.AHIPlatform;
import com.github.retrooper.packetevents.event.PacketListenerAbstract;
import com.github.retrooper.packetevents.event.PacketSendEvent;
import com.github.retrooper.packetevents.protocol.packettype.PacketType;
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerScoreboardObjective;
import com.github.retrooper.packetevents.wrapper.play.server.WrapperPlayServerUpdateScore;

import java.util.Optional;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;

public class ScoreboardListener<P> extends PacketListenerAbstract {
private final AHIPlatform<P> platform;

// Use ConcurrentHashMap's KeySet for a thread-safe Set
private final Set<String> healthObjectives = ConcurrentHashMap.newKeySet();

/**
* Constructs a new EntityMetadataListener with the specified {@link AHIPlatform}.
*
* @param platform The platform to use.
*/
public ScoreboardListener(AHIPlatform<P> platform) {
this.platform = platform;

platform.getLogManager().debug("Update Objective Listener initialized.");
}

@Override
public void onPacketSend(PacketSendEvent event) {
if (event.getPacketType().equals(PacketType.Play.Server.SCOREBOARD_OBJECTIVE)) {
WrapperPlayServerScoreboardObjective packet = new WrapperPlayServerScoreboardObjective(event);
WrapperPlayServerScoreboardObjective.RenderType renderType = packet.getRenderType();

if (renderType == WrapperPlayServerScoreboardObjective.RenderType.HEARTS) {
healthObjectives.add(packet.getName());
}
}

if (event.getPacketType().equals(PacketType.Play.Server.UPDATE_SCORE)) {
WrapperPlayServerUpdateScore packet = new WrapperPlayServerUpdateScore(event);

// Check if the value is present and then compare
if (healthObjectives.contains(packet.getObjectiveName()) && packet.getValue().isPresent()) {
packet.setValue(Optional.of(-1));
event.markForReEncode(true);
}
}
}
}
2 changes: 1 addition & 1 deletion libs.versions.toml → gradle/libs.versions.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[versions]
adventure = "4.16.0"
packetevents = "2.4.1-SNAPSHOT"
packetevents = "2.5.1-SNAPSHOT"
paper = "1.21-R0.1-SNAPSHOT"
velocity = "3.3.0-SNAPSHOT"
bungeecord = "1.21-R0.1-SNAPSHOT"
Expand Down
8 changes: 0 additions & 8 deletions settings.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -20,14 +20,6 @@ gradleEnterprise {
}
}

dependencyResolutionManagement {
versionCatalogs {
create("libs") {
from(files("libs.versions.toml"))
}
}
}

rootProject.name = "AntiHealthIndicator"
include(":common")
include(":platforms:bukkit")
Expand Down

0 comments on commit 58ab9eb

Please sign in to comment.