Skip to content

Commit

Permalink
add player.client_brand
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Apr 11, 2020
1 parent a98e42c commit 6d07fed
Show file tree
Hide file tree
Showing 9 changed files with 84 additions and 0 deletions.
Expand Up @@ -39,4 +39,6 @@ public abstract class PlayerHelper {
public abstract void quietlyAddRecipe(Player player, NamespacedKey key);

public abstract void resendRecipeDetails(Player player);

public abstract String getPlayerBrand(Player player);
}
Expand Up @@ -1539,6 +1539,17 @@ else if (Depends.permissions != null) {
return new ElementTag(object.getName());
});

// <--[tag]
// @attribute <PlayerTag.client_brand>
// @returns ElementTag
// @description
// Returns the brand of the client, as sent via the "minecraft:brand" packet.
// On normal clients, will say "vanilla". On broken clients, will say "unknown". Modded clients will identify themselves (though not guaranteed!).
// -->
registerOnlineOnlyTag("client_brand", (attribute, object) -> {
return new ElementTag(NMSHandler.getPlayerHelper().getPlayerBrand(object.getPlayerEntity()));
});

/////////////////////
// INVENTORY ATTRIBUTES
/////////////////
Expand Down
Expand Up @@ -153,4 +153,9 @@ public void resendDiscoveredRecipes(Player player) {
public void quietlyAddRecipe(Player player, NamespacedKey key) {
throw new UnsupportedOperationException();
}

@Override
public String getPlayerBrand(Player player) {
return "UPDATE YOUR SERVER!";
}
}
Expand Up @@ -5,6 +5,7 @@
import com.denizenscript.denizen.nms.util.ReflectionHelper;
import com.denizenscript.denizen.nms.v1_13.impl.ImprovedOfflinePlayerImpl;
import com.denizenscript.denizen.nms.v1_13.impl.packets.handlers.AbstractListenerPlayInImpl;
import com.denizenscript.denizen.nms.v1_13.impl.packets.handlers.DenizenNetworkManagerImpl;
import com.mojang.authlib.GameProfile;
import com.denizenscript.denizencore.utilities.debugging.Debug;
import net.minecraft.server.v1_13_R2.*;
Expand Down Expand Up @@ -165,4 +166,9 @@ public void quietlyAddRecipe(Player player, NamespacedKey key) {
recipeBook.a(recipe);
recipeBook.f(recipe);
}

@Override
public String getPlayerBrand(Player player) {
return ((DenizenNetworkManagerImpl) ((CraftPlayer) player).getHandle().playerConnection.networkManager).packetListener.brand;
}
}
Expand Up @@ -2,6 +2,7 @@

import com.denizenscript.denizen.nms.NMSHandler;
import com.denizenscript.denizen.utilities.packets.DenizenPacketHandler;
import com.denizenscript.denizencore.utilities.debugging.Debug;
import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.GenericFutureListener;
import com.denizenscript.denizen.nms.v1_13.impl.packets.PacketInResourcePackStatusImpl;
Expand All @@ -14,11 +15,14 @@
import org.bukkit.event.player.PlayerJoinEvent;

import javax.annotation.Nullable;
import java.nio.charset.StandardCharsets;

public class DenizenPacketListenerImpl extends AbstractListenerPlayInImpl {

private static DenizenPacketHandler packetHandler;

public String brand = "unknown";

public DenizenPacketListenerImpl(NetworkManager networkManager, EntityPlayer entityPlayer) {
super(networkManager, entityPlayer, entityPlayer.playerConnection);
}
Expand Down Expand Up @@ -53,6 +57,18 @@ public void a(PacketPlayInBlockDig packet) {
super.a(packet);
}

@Override
public void a(PacketPlayInCustomPayload packet) {
if (NMSHandler.debugPackets) {
Debug.log("Custom packet payload: " + packet.tag.toString() + " sent from " + player.getName());
}
if (packet.tag.b().equals("minecraft") && packet.tag.getKey().equals("brand")) {
int i = packet.data.g(); // read off the varInt of length to get rid of it
brand = StandardCharsets.UTF_8.decode(packet.data.nioBuffer()).toString();
}
super.a(packet);
}

@Override
public void a(PacketPlayInFlying packet) {
if (DenizenPacketHandler.forceNoclip.contains(player.getUniqueID())) {
Expand Down
Expand Up @@ -2,6 +2,7 @@

import com.denizenscript.denizen.nms.v1_14.impl.ImprovedOfflinePlayerImpl;
import com.denizenscript.denizen.nms.v1_14.impl.network.handlers.AbstractListenerPlayInImpl;
import com.denizenscript.denizen.nms.v1_14.impl.network.handlers.DenizenNetworkManagerImpl;
import com.mojang.authlib.GameProfile;
import com.denizenscript.denizen.nms.abstracts.ImprovedOfflinePlayer;
import com.denizenscript.denizen.nms.interfaces.PlayerHelper;
Expand Down Expand Up @@ -166,4 +167,9 @@ public void quietlyAddRecipe(Player player, NamespacedKey key) {
recipeBook.a(recipe);
recipeBook.f(recipe);
}

@Override
public String getPlayerBrand(Player player) {
return ((DenizenNetworkManagerImpl) ((CraftPlayer) player).getHandle().playerConnection.networkManager).packetListener.brand;
}
}
Expand Up @@ -3,6 +3,7 @@
import com.denizenscript.denizen.nms.v1_14.impl.network.packets.PacketInResourcePackStatusImpl;
import com.denizenscript.denizen.nms.v1_14.impl.network.packets.PacketInSteerVehicleImpl;
import com.denizenscript.denizen.utilities.packets.DenizenPacketHandler;
import com.denizenscript.denizencore.utilities.debugging.Debug;
import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.GenericFutureListener;
import com.denizenscript.denizen.nms.NMSHandler;
Expand All @@ -14,11 +15,14 @@
import org.bukkit.event.player.PlayerJoinEvent;

import javax.annotation.Nullable;
import java.nio.charset.StandardCharsets;

public class DenizenPacketListenerImpl extends AbstractListenerPlayInImpl {

private static DenizenPacketHandler packetHandler;

public String brand = "unknown";

public DenizenPacketListenerImpl(NetworkManager networkManager, EntityPlayer entityPlayer) {
super(networkManager, entityPlayer, entityPlayer.playerConnection);
}
Expand Down Expand Up @@ -53,6 +57,18 @@ public void a(PacketPlayInBlockDig packet) {
super.a(packet);
}

@Override
public void a(PacketPlayInCustomPayload packet) {
if (NMSHandler.debugPackets) {
Debug.log("Custom packet payload: " + packet.tag.toString() + " sent from " + player.getName());
}
if (packet.tag.getNamespace().equals("minecraft") && packet.tag.getKey().equals("brand")) {
int i = packet.data.i(); // read off the varInt of length to get rid of it
brand = StandardCharsets.UTF_8.decode(packet.data.nioBuffer()).toString();
}
super.a(packet);
}

@Override
public void a(PacketPlayInFlying packet) {
if (DenizenPacketHandler.forceNoclip.contains(player.getUniqueID())) {
Expand Down
Expand Up @@ -2,6 +2,7 @@

import com.denizenscript.denizen.nms.v1_15.impl.ImprovedOfflinePlayerImpl;
import com.denizenscript.denizen.nms.v1_15.impl.network.handlers.AbstractListenerPlayInImpl;
import com.denizenscript.denizen.nms.v1_15.impl.network.handlers.DenizenNetworkManagerImpl;
import com.mojang.authlib.GameProfile;
import com.denizenscript.denizen.nms.abstracts.ImprovedOfflinePlayer;
import com.denizenscript.denizen.nms.interfaces.PlayerHelper;
Expand Down Expand Up @@ -163,4 +164,9 @@ public void quietlyAddRecipe(Player player, NamespacedKey key) {
recipeBook.a(recipe);
recipeBook.f(recipe);
}

@Override
public String getPlayerBrand(Player player) {
return ((DenizenNetworkManagerImpl) ((CraftPlayer) player).getHandle().playerConnection.networkManager).packetListener.brand;
}
}
Expand Up @@ -3,6 +3,7 @@
import com.denizenscript.denizen.nms.v1_15.impl.network.packets.PacketInResourcePackStatusImpl;
import com.denizenscript.denizen.nms.v1_15.impl.network.packets.PacketInSteerVehicleImpl;
import com.denizenscript.denizen.utilities.packets.DenizenPacketHandler;
import com.denizenscript.denizencore.utilities.debugging.Debug;
import io.netty.util.concurrent.Future;
import io.netty.util.concurrent.GenericFutureListener;
import com.denizenscript.denizen.nms.NMSHandler;
Expand All @@ -14,11 +15,14 @@
import org.bukkit.event.player.PlayerJoinEvent;

import javax.annotation.Nullable;
import java.nio.charset.StandardCharsets;

public class DenizenPacketListenerImpl extends AbstractListenerPlayInImpl {

private static DenizenPacketHandler packetHandler;

public String brand = "unknown";

public DenizenPacketListenerImpl(NetworkManager networkManager, EntityPlayer entityPlayer) {
super(networkManager, entityPlayer, entityPlayer.playerConnection);
}
Expand Down Expand Up @@ -53,6 +57,18 @@ public void a(PacketPlayInBlockDig packet) {
super.a(packet);
}

@Override
public void a(PacketPlayInCustomPayload packet) {
if (NMSHandler.debugPackets) {
Debug.log("Custom packet payload: " + packet.tag.toString() + " sent from " + player.getName());
}
if (packet.tag.getNamespace().equals("minecraft") && packet.tag.getKey().equals("brand")) {
int i = packet.data.i(); // read off the varInt of length to get rid of it
brand = StandardCharsets.UTF_8.decode(packet.data.nioBuffer()).toString();
}
super.a(packet);
}

@Override
public void a(PacketPlayInFlying packet) {
if (DenizenPacketHandler.forceNoclip.contains(player.getUniqueID())) {
Expand Down

0 comments on commit 6d07fed

Please sign in to comment.