Skip to content
This repository has been archived by the owner on Jul 27, 2019. It is now read-only.

Commit

Permalink
Add custom tab compatibility for MC 1.8. #96
Browse files Browse the repository at this point in the history
  • Loading branch information
cnaude committed Dec 21, 2014
1 parent 34aed20 commit affa764
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 32 deletions.
8 changes: 7 additions & 1 deletion dependency-reduced-pom.xml
Expand Up @@ -135,6 +135,12 @@
<version>1.8</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>spigot</artifactId>
<version>1.8</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
Expand Down Expand Up @@ -274,7 +280,7 @@
<dependency>
<groupId>com.cnaude.shortify</groupId>
<artifactId>Shortify</artifactId>
<version>1.7-SNAPSHOT</version>
<version>1.8-SNAPSHOT</version>
<scope>compile</scope>
</dependency>
<dependency>
Expand Down
10 changes: 9 additions & 1 deletion pom.xml
Expand Up @@ -74,6 +74,14 @@
<type>jar</type>
<scope>provided</scope>
</dependency>

<dependency>
<groupId>org.bukkit</groupId>
<artifactId>spigot</artifactId>
<version>${bukkit.version}</version>
<type>jar</type>
<scope>provided</scope>
</dependency>

<!-- Following dependency is provided by CraftBukkit -->
<dependency>
Expand Down Expand Up @@ -254,7 +262,7 @@
<dependency>
<groupId>com.cnaude.shortify</groupId>
<artifactId>Shortify</artifactId>
<version>1.7-SNAPSHOT</version>
<version>1.8-SNAPSHOT</version>
</dependency>

<!-- DynmapAPI -->
Expand Down
3 changes: 3 additions & 0 deletions src/main/java/com/cnaude/purpleirc/PurpleIRC.java
Expand Up @@ -150,6 +150,7 @@ public class PurpleIRC extends JavaPlugin {
private boolean stripIRCColors;
private boolean stripIRCBackgroundColors;
public boolean customTabList;
public String customTabGamemode;
private boolean listSortByName;
public boolean exactNickMatch;
public boolean ignoreChatCancel;
Expand Down Expand Up @@ -652,10 +653,12 @@ private void loadConfig() {
ircConnCheckInterval = getConfig().getLong("conn-check-interval");
ircChannelCheckInterval = getConfig().getLong("channel-check-interval");

customTabGamemode = getConfig().getString("custom-tab-gamemode", "SPECTATOR");
customTabList = getConfig().getBoolean("custom-tab-list", false);
customTabPrefix = ChatColor.translateAlternateColorCodes('&', getConfig().getString("custom-tab-prefix", "[IRC] "));
logDebug("custom-tab-list: " + customTabList);
logDebug("custom-tab-prefix: " + customTabPrefix);
logDebug("custom-tab-gamemode: " + customTabGamemode);
}

private void loadBots() {
Expand Down
Expand Up @@ -26,7 +26,6 @@
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.xml.transform.Templates;
import org.bukkit.entity.Player;
import org.pircbotx.Channel;
import org.pircbotx.User;
Expand Down
57 changes: 28 additions & 29 deletions src/main/java/com/cnaude/purpleirc/Utilities/NetPackets.java
Expand Up @@ -30,9 +30,15 @@
import com.comphenix.protocol.wrappers.WrappedChatComponent;
import com.comphenix.protocol.wrappers.WrappedGameProfile;
import com.google.common.base.Charsets;
import com.mojang.authlib.GameProfile;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
import java.util.Arrays;
import java.util.UUID;
import net.minecraft.server.v1_8_R1.EntityPlayer;
import net.minecraft.server.v1_8_R1.EnumPlayerInfoAction;
import net.minecraft.server.v1_8_R1.MinecraftServer;
import net.minecraft.server.v1_8_R1.PacketPlayOutPlayerInfo;
import net.minecraft.server.v1_8_R1.PlayerInteractManager;
import org.bukkit.entity.Player;
import org.pircbotx.Channel;
import org.pircbotx.User;
Expand Down Expand Up @@ -125,44 +131,37 @@ private PacketContainer tabPacket(String name, boolean add) {
plugin.logError("tabPacket: " + ex.getMessage());
}
} else if (version.contains("MC: 1.8")) {
/*
try {
packet = protocolManager.createPacket(PacketType.Play.Server.PLAYER_INFO);
UUID uuid = plugin.getPlayerUuid(name);
UUID uuid = null; // = plugin.getPlayerUuid(name);
if (uuid == null) {
uuid = java.util.UUID.nameUUIDFromBytes(("OfflinePlayer:" + displayName).getBytes(Charsets.UTF_8));
uuid = UUID.nameUUIDFromBytes(("OfflinePlayer:" + displayName).getBytes(Charsets.UTF_8));
}
PlayerInfoData pid = new PlayerInfoData(
packet,
NativeGameMode.CREATIVE,
0,
new WrappedGameProfile(uuid, displayName),
WrappedChatComponent.fromJson("{\"text\": \"" + displayName + "\"}"));
List<PlayerInfoData> pil = packet.getPlayerInfoDataLists().read(0);
int count = packet.getPlayerInfoDataLists().size();
pil.add(pid);
for (Player player : plugin.getServer().getOnlinePlayers()) {
if (plugin.vanishHook != null) {
if (plugin.vanishHook.isVanished(player)) {
continue;
}
}
pil.add(new PlayerInfoData(
packet,
NativeGameMode.valueOf(player.getGameMode().name()),
if (add) {
packet = protocolManager.createPacket(PacketType.Play.Server.PLAYER_INFO);

PlayerInfoData pid = new PlayerInfoData(
new WrappedGameProfile(uuid, displayName),
0,
new WrappedGameProfile(player.getUniqueId(), player.getDisplayName()),
WrappedChatComponent.fromJson("{\"text\": \"" + player.getDisplayName() + "\"}"))
NativeGameMode.valueOf(plugin.customTabGamemode.toUpperCase()),
WrappedChatComponent.fromJson("{\"text\": \"" + displayName + "\"}"));
packet.getPlayerInfoDataLists().write(0, Arrays.asList(pid));
} else {
plugin.logDebug("T: Removing: " + name);
EntityPlayer pl = new EntityPlayer(
MinecraftServer.getServer(),
MinecraftServer.getServer().getWorldServer(0),
(GameProfile)(new WrappedGameProfile(uuid, displayName)).getHandle(),
new PlayerInteractManager(MinecraftServer.getServer().getWorldServer(0))

);
PacketPlayOutPlayerInfo pi = new PacketPlayOutPlayerInfo(EnumPlayerInfoAction.REMOVE_PLAYER, pl);
return PacketContainer.fromPacket(pi);

}
packet.getPlayerInfoDataLists().write(0, pil);
return packet;
} catch (Exception ex) {
plugin.logError("tabPacket: " + ex.getMessage());
ex.printStackTrace();
}
*/
} else {
plugin.logDebug("tabPacket: deprecated ");
playerListConstructor = protocolManager.createPacketConstructor(Packets.Server.PLAYER_INFO, "", false, (int) 0);
Expand Down
2 changes: 2 additions & 0 deletions src/main/resources/config.yml
Expand Up @@ -210,6 +210,8 @@ strip-irc-bg-colors: true
custom-tab-list: false
# Nothing to see here
custom-tab-prefix: '[I] '
# IRC user gamemode in the tab list: ADVENTURE, CREATIVE, NOT_SET, SPECTATOR, SURVIVAL
custom-tab-gamemode: SPECTATOR
# IRC nick must be an exact match to a player name for token expanding
nick-exact-match: true
# IRC nick prefixes (can include & color codes)
Expand Down

0 comments on commit affa764

Please sign in to comment.