Hide tablist feature

This commit is contained in:
Gabriele C 2016-02-11 20:36:07 +01:00
parent dd8795a1bf
commit 131cc22248
5 changed files with 67 additions and 5 deletions

View File

@ -60,6 +60,7 @@ import fr.xephi.authme.listener.AuthMePlayerListener16;
import fr.xephi.authme.listener.AuthMePlayerListener18; import fr.xephi.authme.listener.AuthMePlayerListener18;
import fr.xephi.authme.listener.AuthMeServerListener; import fr.xephi.authme.listener.AuthMeServerListener;
import fr.xephi.authme.listener.AuthMeTabCompletePacketAdapter; import fr.xephi.authme.listener.AuthMeTabCompletePacketAdapter;
import fr.xephi.authme.listener.AuthMeTablistPacketAdapter;
import fr.xephi.authme.mail.SendMailSSL; import fr.xephi.authme.mail.SendMailSSL;
import fr.xephi.authme.output.ConsoleFilter; import fr.xephi.authme.output.ConsoleFilter;
import fr.xephi.authme.output.Log4JFilter; import fr.xephi.authme.output.Log4JFilter;
@ -132,6 +133,7 @@ public class AuthMe extends JavaPlugin {
public CombatTagPlus combatTagPlus; public CombatTagPlus combatTagPlus;
public AuthMeInventoryPacketAdapter inventoryProtector; public AuthMeInventoryPacketAdapter inventoryProtector;
public AuthMeTabCompletePacketAdapter tabComplete; public AuthMeTabCompletePacketAdapter tabComplete;
public AuthMeTablistPacketAdapter tablistHider;
/* /*
* Maps and stuff * Maps and stuff
@ -664,10 +666,14 @@ public class AuthMe extends JavaPlugin {
inventoryProtector.unregister(); inventoryProtector.unregister();
inventoryProtector = null; inventoryProtector = null;
} }
if (tabComplete == null) { if (tabComplete == null && newSettings.getProperty(RestrictionSettings.DENY_TABCOMPLETE_BEFORE_LOGIN)) {
tabComplete = new AuthMeTabCompletePacketAdapter(this); tabComplete = new AuthMeTabCompletePacketAdapter(this);
tabComplete.register(); tabComplete.register();
} }
if (tablistHider == null && newSettings.getProperty(RestrictionSettings.HIDE_TABLIST_BEFORE_LOGIN)) {
tablistHider = new AuthMeTablistPacketAdapter(this);
tablistHider.register();
}
} }
// Save Player Data // Save Player Data

View File

@ -202,7 +202,7 @@ public class AuthMePlayerListener implements Listener {
if (joinMsg == null) { if (joinMsg == null) {
return; return;
} }
event.setJoinMessage(null); event.setJoinMessage((String)null);
joinMessage.put(name, joinMsg); joinMessage.put(name, joinMsg);
} }
@ -358,7 +358,7 @@ public class AuthMePlayerListener implements Listener {
} }
if (Settings.delayJoinLeaveMessages && !Utils.checkAuth(player)) { if (Settings.delayJoinLeaveMessages && !Utils.checkAuth(player)) {
event.setQuitMessage(null); event.setQuitMessage((String)null);
} }
plugin.getManagement().performQuit(player, false); plugin.getManagement().performQuit(player, false);

View File

@ -0,0 +1,44 @@
package fr.xephi.authme.listener;
import com.comphenix.protocol.PacketType;
import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.events.ListenerPriority;
import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketEvent;
import com.comphenix.protocol.reflect.FieldAccessException;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.cache.auth.PlayerCache;
public class AuthMeTablistPacketAdapter extends PacketAdapter {
public AuthMeTablistPacketAdapter(AuthMe plugin) {
super(plugin, ListenerPriority.NORMAL, PacketType.Play.Server.PLAYER_INFO);
}
@Override
public void onPacketReceiving(PacketEvent event)
{
if (event.getPacketType() == PacketType.Play.Server.PLAYER_INFO) {
try
{
if (!PlayerCache.getInstance().isAuthenticated(event.getPlayer().getName().toLowerCase())) {
event.setCancelled(true);
}
}
catch (FieldAccessException e)
{
ConsoleLogger.showError("Couldn't access field.");
}
}
}
public void register() {
ProtocolLibrary.getProtocolManager().addPacketListener(this);
}
public void unregister() {
ProtocolLibrary.getProtocolManager().removePacketListener(this);
}
}

View File

@ -126,10 +126,18 @@ public class RestrictionSettings implements SettingsClass {
public static final Property<Boolean> ENABLE_PASSWORD_CONFIRMATION = public static final Property<Boolean> ENABLE_PASSWORD_CONFIRMATION =
newProperty("settings.restrictions.enablePasswordConfirmation", true); newProperty("settings.restrictions.enablePasswordConfirmation", true);
@Comment("Should we protect the player inventory before logging in?") @Comment("Should we protect the player inventory before logging in? Requires ProtocolLib.")
public static final Property<Boolean> PROTECT_INVENTORY_BEFORE_LOGIN = public static final Property<Boolean> PROTECT_INVENTORY_BEFORE_LOGIN =
newProperty("settings.restrictions.ProtectInventoryBeforeLogIn", true); newProperty("settings.restrictions.ProtectInventoryBeforeLogIn", true);
@Comment("Should we deny the tabcomplete feature before logging in? Requires ProtocolLib.")
public static final Property<Boolean> DENY_TABCOMPLETE_BEFORE_LOGIN =
newProperty("settings.restrictions.DenyTabcompleteBeforeLogin", true);
@Comment("Should we hide the tablist before logging in? Requires ProtocolLib.")
public static final Property<Boolean> HIDE_TABLIST_BEFORE_LOGIN =
newProperty("settings.restrictions.HideTablistBeforeLogin", true);
@Comment({ @Comment({
"Should we display all other accounts from a player when he joins?", "Should we display all other accounts from a player when he joins?",
"permission: /authme.admin.accounts"}) "permission: /authme.admin.accounts"})

View File

@ -132,8 +132,12 @@ settings:
# when it's true, registration require that kind of command: # when it's true, registration require that kind of command:
# /register <password> <confirmPassword> # /register <password> <confirmPassword>
enablePasswordConfirmation: true enablePasswordConfirmation: true
# Should we protect the player inventory before logging in? # Should we protect the player inventory before logging in? Requires ProtocolLib.
ProtectInventoryBeforeLogIn: true ProtectInventoryBeforeLogIn: true
# Should we deny the tabcomplete feature before logging in? Requires ProtocolLib.
DenyTabcompleteBeforeLogIn: true
# Should we hide the tablist before logging in? Requires ProtocolLib.
HideTablistBeforeLogIn: true
# Should we display all other accounts from a player when he joins? # Should we display all other accounts from a player when he joins?
# permission: /authme.admin.accounts # permission: /authme.admin.accounts
displayOtherAccounts: true displayOtherAccounts: true