package net.minecraft.server.dedicated; import java.io.BufferedReader; import java.io.File; import java.io.FileReader; import java.io.FileWriter; import java.io.PrintWriter; import java.util.Iterator; import net.minecraft.server.MinecraftServer; import net.minecraft.server.management.ServerConfigurationManager; public class DedicatedPlayerList extends ServerConfigurationManager { private File opsList; private File whiteList; public DedicatedPlayerList(DedicatedServer par1DedicatedServer) { super(par1DedicatedServer); this.opsList = par1DedicatedServer.getFile("ops.txt"); this.whiteList = par1DedicatedServer.getFile("white-list.txt"); this.viewDistance = par1DedicatedServer.getIntProperty("view-distance", 10); this.maxPlayers = par1DedicatedServer.getIntProperty("max-players", 20); this.setWhiteListEnabled(par1DedicatedServer.getBooleanProperty("white-list", false)); if (!par1DedicatedServer.isSinglePlayer()) { this.getBannedPlayers().setListActive(true); this.getBannedIPs().setListActive(true); } this.getBannedPlayers().loadBanList(); this.getBannedPlayers().saveToFileWithHeader(); this.getBannedIPs().loadBanList(); this.getBannedIPs().saveToFileWithHeader(); this.loadOpsList(); this.readWhiteList(); this.saveOpsList(); if (!this.whiteList.exists()) { this.saveWhiteList(); } } public void setWhiteListEnabled(boolean par1) { super.setWhiteListEnabled(par1); this.getDedicatedServerInstance().setProperty("white-list", Boolean.valueOf(par1)); this.getDedicatedServerInstance().saveProperties(); } /** * This adds a username to the ops list, then saves the op list */ public void addOp(String par1Str) { super.addOp(par1Str); this.saveOpsList(); } /** * This removes a username from the ops list, then saves the op list */ public void removeOp(String par1Str) { super.removeOp(par1Str); this.saveOpsList(); } /** * Remove the specified player from the whitelist. */ public void removeFromWhitelist(String par1Str) { super.removeFromWhitelist(par1Str); this.saveWhiteList(); } /** * Add the specified player to the white list. */ public void addToWhiteList(String par1Str) { super.addToWhiteList(par1Str); this.saveWhiteList(); } /** * Either does nothing, or calls readWhiteList. */ public void loadWhiteList() { this.readWhiteList(); } private void loadOpsList() { try { this.getOps().clear(); BufferedReader bufferedreader = new BufferedReader(new FileReader(this.opsList)); String s = ""; while ((s = bufferedreader.readLine()) != null) { this.getOps().add(s.trim().toLowerCase()); } bufferedreader.close(); } catch (Exception exception) { this.getDedicatedServerInstance().getLogAgent().logWarning("Failed to load operators list: " + exception); } } private void saveOpsList() { try { PrintWriter printwriter = new PrintWriter(new FileWriter(this.opsList, false)); Iterator iterator = this.getOps().iterator(); while (iterator.hasNext()) { String s = (String)iterator.next(); printwriter.println(s); } printwriter.close(); } catch (Exception exception) { this.getDedicatedServerInstance().getLogAgent().logWarning("Failed to save operators list: " + exception); } } private void readWhiteList() { try { this.getWhiteListedPlayers().clear(); BufferedReader bufferedreader = new BufferedReader(new FileReader(this.whiteList)); String s = ""; while ((s = bufferedreader.readLine()) != null) { this.getWhiteListedPlayers().add(s.trim().toLowerCase()); } bufferedreader.close(); } catch (Exception exception) { this.getDedicatedServerInstance().getLogAgent().logWarning("Failed to load white-list: " + exception); } } private void saveWhiteList() { try { PrintWriter printwriter = new PrintWriter(new FileWriter(this.whiteList, false)); Iterator iterator = this.getWhiteListedPlayers().iterator(); while (iterator.hasNext()) { String s = (String)iterator.next(); printwriter.println(s); } printwriter.close(); } catch (Exception exception) { this.getDedicatedServerInstance().getLogAgent().logWarning("Failed to save white-list: " + exception); } } /** * Determine if the player is allowed to connect based on current server settings. */ public boolean isAllowedToLogin(String par1Str) { par1Str = par1Str.trim().toLowerCase(); return !this.isWhiteListEnabled() || this.areCommandsAllowed(par1Str) || this.getWhiteListedPlayers().contains(par1Str); } public DedicatedServer getDedicatedServerInstance() { return (DedicatedServer)super.getServerInstance(); } public MinecraftServer getServerInstance() { return this.getDedicatedServerInstance(); } }