Compare commits

..

8 Commits

Author SHA1 Message Date
13e04475f0 FS-326 & quick formatting fix
The formatting of DiscordToMinecraft was adjusted in addition to make it look nicer
2021-07-29 17:06:31 -06:00
adc7b4a754 FS-333
According to Intellij, `bukkitTelnet instanceof BukkitTelnet` can replace the nullcheck. If this is not the case, then I apologize profoundly for my IDE's mistakes (again)
2021-07-29 05:58:14 -06:00
40498c03f4 FS-334
If Codacy complains about Line 365 being potentially combinable with Line 363, please kindly tell it to fuck off
2021-07-29 05:54:00 -06:00
cc9c07d498 FS-335 2021-07-29 05:49:37 -06:00
5fa3f9f26a FS-337
I hate Codacy
2021-07-29 05:48:11 -06:00
a79b2cbe0f FS-338 2021-07-29 05:45:21 -06:00
6c8d1934e7 FS-313 2021-07-29 05:38:30 -06:00
a1de7ac9ff FS-314 2021-07-29 05:35:28 -06:00
67 changed files with 735 additions and 1117 deletions

View File

@ -1,19 +0,0 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
# Maintain Maven Updates
- package-ecosystem: "maven" # See documentation for possible values
directory: "/" # Location of package manifests
schedule:
interval: "daily"
# Maintain dependencies for GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "daily"

View File

@ -8,20 +8,10 @@ jobs:
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
# Java 11 Builds
- uses: actions/checkout@v1 - uses: actions/checkout@v1
- name: Set up JDK 11 - name: Set up JDK 1.8
uses: actions/setup-java@v1 uses: actions/setup-java@v1
with: with:
java-version: 11 java-version: 11
- name: Build with Maven - name: Build with Maven
run: mvn -B package --file pom.xml run: mvn -B package --file pom.xml
# Java 16 Builds
- uses: actions/checkout@v1
- name: Set up JDK 16
uses: actions/setup-java@v1
with:
java-version: 16
- name: Build with Maven
run: mvn -B package --file pom.xml

13
.travis.yml Normal file
View File

@ -0,0 +1,13 @@
language: java
jdk:
- oraclejdk11
- openjdk11
notifications:
email: false
addons:
apt:
packages:
- sshpass
script: mvn clean install
after_success:
- ./travis-upload.sh

35
pom.xml
View File

@ -14,8 +14,6 @@
<jar.finalName>${project.name}</jar.finalName> <jar.finalName>${project.name}</jar.finalName>
<timestamp>${maven.build.timestamp}</timestamp> <timestamp>${maven.build.timestamp}</timestamp>
<maven.build.timestamp.format>MM/dd/yyyy HH:mm</maven.build.timestamp.format> <maven.build.timestamp.format>MM/dd/yyyy HH:mm</maven.build.timestamp.format>
<tfguilds.version>master-4ec00d977c-1</tfguilds.version>
</properties> </properties>
<name>TotalFreedomMod</name> <name>TotalFreedomMod</name>
@ -107,6 +105,11 @@
<url>https://papermc.io/repo/repository/maven-public/</url> <url>https://papermc.io/repo/repository/maven-public/</url>
</repository> </repository>
<repository>
<id>rayzr-repo</id>
<url>https://cdn.rawgit.com/Rayzr522/maven-repo/master/</url>
</repository>
<repository> <repository>
<id>ess-repo</id> <id>ess-repo</id>
<url>https://ci.ender.zone/plugin/repository/everything/</url> <url>https://ci.ender.zone/plugin/repository/everything/</url>
@ -165,9 +168,9 @@
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.github.AtlasMediaGroup</groupId> <groupId>com.github.TotalFreedomMC</groupId>
<artifactId>TF-LibsDisguises</artifactId> <artifactId>TF-LibsDisguises</artifactId>
<version>5a340341b0</version> <version>48f01cf2fe</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
@ -213,6 +216,13 @@
<scope>compile</scope> <scope>compile</scope>
</dependency> </dependency>
<dependency>
<groupId>me.rayzr522</groupId>
<artifactId>jsonmessage</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>com.github.vexsoftware</groupId> <groupId>com.github.vexsoftware</groupId>
<artifactId>votifier</artifactId> <artifactId>votifier</artifactId>
@ -244,7 +254,7 @@
<dependency> <dependency>
<groupId>com.github.AtlasMediaGroup</groupId> <groupId>com.github.AtlasMediaGroup</groupId>
<artifactId>TFGuilds</artifactId> <artifactId>TFGuilds</artifactId>
<version>${tfguilds.version}</version> <version>master-SNAPSHOT</version>
<scope>provided</scope> <scope>provided</scope>
</dependency> </dependency>
@ -272,18 +282,6 @@
<artifactId>org.eclipse.sisu.inject</artifactId> <artifactId>org.eclipse.sisu.inject</artifactId>
<version>0.3.4</version> <version>0.3.4</version>
</dependency> </dependency>
<dependency>
<groupId>org.apache.httpcomponents.client5</groupId>
<artifactId>httpclient5</artifactId>
<version>5.0.1</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20210307</version>
<scope>compile</scope>
</dependency>
</dependencies> </dependencies>
<build> <build>
@ -456,12 +454,11 @@
<include>commons-codec:commons-codec</include> <include>commons-codec:commons-codec</include>
<include>org.reflections:reflections</include> <include>org.reflections:reflections</include>
<include>org.javassist:javassist</include> <include>org.javassist:javassist</include>
<include>me.rayzr522:jsonmessage</include>
<include>io.papermc:paperlib</include> <include>io.papermc:paperlib</include>
<include>com.github.speedxx:Mojangson</include> <include>com.github.speedxx:Mojangson</include>
<include>org.bstats:bstats-bukkit</include> <include>org.bstats:bstats-bukkit</include>
<include>org.jetbrains:annotations</include> <include>org.jetbrains:annotations</include>
<includes>org.apache.httpcomponents.client5:httpclient5</includes>
<includes>org.apache.httpcomponents.core5:httpcore5</includes>
</includes> </includes>
</artifactSet> </artifactSet>
</configuration> </configuration>

View File

@ -85,10 +85,6 @@ public class AutoEject extends FreedomService
player.kickPlayer(kickMessage); player.kickPlayer(kickMessage);
break; break;
} }
default:
{
FLog.warning("Unrecognized EjectMethod " + method.name() + " found, defaulting to STRIKE_THREE");
}
case STRIKE_THREE: case STRIKE_THREE:
{ {
plugin.bm.addBan(Ban.forPlayerFuzzy(player, Bukkit.getConsoleSender(), null, kickMessage)); plugin.bm.addBan(Ban.forPlayerFuzzy(player, Bukkit.getConsoleSender(), null, kickMessage));

View File

@ -126,7 +126,7 @@ public class ChatManager extends FreedomService
boolean mentionEveryone = ChatColor.stripColor(message).toLowerCase().contains("@everyone") && plugin.al.isAdmin(player); boolean mentionEveryone = ChatColor.stripColor(message).toLowerCase().contains("@everyone") && plugin.al.isAdmin(player);
for (Player p : server.getOnlinePlayers()) for (Player p : server.getOnlinePlayers())
{ {
if ((ChatColor.stripColor(message).toLowerCase().contains("@" + p.getName().toLowerCase()) || mentionEveryone) && !event.isCancelled()) if (ChatColor.stripColor(message).toLowerCase().contains("@" + p.getName().toLowerCase()) || mentionEveryone)
{ {
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, SoundCategory.MASTER, 1337F, 0.9F); p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, SoundCategory.MASTER, 1337F, 0.9F);
} }

View File

@ -25,6 +25,11 @@ public class CommandSpy extends FreedomService
{ {
if (plugin.al.isAdmin(player) && plugin.al.getAdmin(player).getCommandSpy()) if (plugin.al.isAdmin(player) && plugin.al.getAdmin(player).getCommandSpy())
{ {
if (plugin.al.isAdmin(event.getPlayer()) && !plugin.al.isSeniorAdmin(player))
{
continue;
}
if (player != event.getPlayer()) if (player != event.getPlayer())
{ {
FUtil.playerMsg(player, event.getPlayer().getName() + ": " + event.getMessage()); FUtil.playerMsg(player, event.getPlayer().getName() + ": " + event.getMessage());

View File

@ -2,8 +2,6 @@ package me.totalfreedom.totalfreedommod;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import me.totalfreedom.totalfreedommod.util.Groups; import me.totalfreedom.totalfreedommod.util.Groups;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.World; import org.bukkit.World;
@ -35,10 +33,7 @@ public class EntityWiper extends FreedomService
@Override @Override
public void run() public void run()
{ {
if (ConfigEntry.AUTO_ENTITY_WIPE.getBoolean()) wipeEntities(false);
{
wipeEntities(false);
}
} }
}.runTaskTimer(plugin, 600L, 600L); // 30 second delay after startup + run every 30 seconds }.runTaskTimer(plugin, 600L, 600L); // 30 second delay after startup + run every 30 seconds
} }

View File

@ -4,6 +4,7 @@ import io.papermc.lib.PaperLib;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import me.rayzr522.jsonmessage.JSONMessage;
import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.player.PlayerData;

View File

@ -2,8 +2,6 @@ package me.totalfreedom.totalfreedommod;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.UUID;
import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FLog;
@ -20,7 +18,7 @@ import org.bukkit.event.player.PlayerJoinEvent;
public class Muter extends FreedomService public class Muter extends FreedomService
{ {
public final List<UUID> MUTED_PLAYERS = new ArrayList<>(); public final List<String> MUTED_PLAYERS = new ArrayList<>();
@Override @Override
public void onStart() public void onStart()
@ -47,7 +45,7 @@ public class Muter extends FreedomService
if (plugin.al.isAdminSync(player)) if (plugin.al.isAdminSync(player))
{ {
fPlayer.setMuted(false); fPlayer.setMuted(false);
MUTED_PLAYERS.remove(player.getUniqueId()); MUTED_PLAYERS.remove(player.getName());
return; return;
} }
@ -107,7 +105,7 @@ public class Muter extends FreedomService
Player player = event.getPlayer(); Player player = event.getPlayer();
FPlayer playerdata = plugin.pl.getPlayer(player); FPlayer playerdata = plugin.pl.getPlayer(player);
if (MUTED_PLAYERS.contains(player.getUniqueId())) if (MUTED_PLAYERS.contains(player.getName()))
{ {
playerdata.setMuted(true); playerdata.setMuted(true);
} }

View File

@ -46,7 +46,7 @@ public class SavedFlags extends FreedomService
return flags; return flags;
} }
public boolean getSavedFlag(String flag) throws Exception public boolean getSavedFlag(String flag) throws IllegalStateException
{ {
Boolean flagValue = null; Boolean flagValue = null;
@ -66,7 +66,7 @@ public class SavedFlags extends FreedomService
} }
else else
{ {
throw new Exception(); throw new IllegalStateException("Attempt to get non-existent flag " + flag);
} }
} }

View File

@ -2,8 +2,6 @@ package me.totalfreedom.totalfreedommod.admin;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import java.util.Map; import java.util.Map;
import java.util.UUID;
import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.FreedomService;
import me.totalfreedom.totalfreedommod.config.YamlConfig; import me.totalfreedom.totalfreedommod.config.YamlConfig;
import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FLog;
@ -16,14 +14,13 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
//TODO: convert to uuids
public class ActivityLog extends FreedomService public class ActivityLog extends FreedomService
{ {
public static final String FILENAME = "activitylog.yml"; public static final String FILENAME = "activitylog.yml";
private final Map<UUID, ActivityLogEntry> allActivityLogs = Maps.newHashMap(); private final Map<String, ActivityLogEntry> allActivityLogs = Maps.newHashMap();
private final Map<UUID, ActivityLogEntry> activityLogs = Maps.newHashMap(); private final Map<String, ActivityLogEntry> nameTable = Maps.newHashMap();
private final Map<String, ActivityLogEntry> ipTable = Maps.newHashMap(); private final Map<String, ActivityLogEntry> ipTable = Maps.newHashMap();
private final YamlConfig config; private final YamlConfig config;
@ -55,7 +52,7 @@ public class ActivityLog extends FreedomService
config.load(); config.load();
allActivityLogs.clear(); allActivityLogs.clear();
activityLogs.clear(); nameTable.clear();
ipTable.clear(); ipTable.clear();
for (String key : config.getKeys(false)) for (String key : config.getKeys(false))
{ {
@ -75,7 +72,7 @@ public class ActivityLog extends FreedomService
continue; continue;
} }
allActivityLogs.put(UUID.fromString(key), activityLogEntry); allActivityLogs.put(key, activityLogEntry);
} }
updateTables(); updateTables();
@ -105,12 +102,12 @@ public class ActivityLog extends FreedomService
return getActivityLog((Player)sender); return getActivityLog((Player)sender);
} }
return getEntryByUUID(FUtil.getUUIDFromName(sender.getName())); return getEntryByName(sender.getName());
} }
public ActivityLogEntry getActivityLog(Player player) public ActivityLogEntry getActivityLog(Player player)
{ {
ActivityLogEntry activityLog = getEntryByUUID(player.getUniqueId()); ActivityLogEntry activityLog = getEntryByName(player.getName());
if (activityLog == null) if (activityLog == null)
{ {
String ip = FUtil.getIp(player); String ip = FUtil.getIp(player);
@ -118,13 +115,14 @@ public class ActivityLog extends FreedomService
if (activityLog != null) if (activityLog != null)
{ {
// Set the new username // Set the new username
activityLog.setName(player.getName());
save(); save();
updateTables(); updateTables();
} }
else else
{ {
activityLog = new ActivityLogEntry(player); activityLog = new ActivityLogEntry(player);
allActivityLogs.put(activityLog.getUUID(), activityLog); allActivityLogs.put(activityLog.getConfigKey(), activityLog);
updateTables(); updateTables();
activityLog.saveTo(config.createSection(activityLog.getConfigKey())); activityLog.saveTo(config.createSection(activityLog.getConfigKey()));
@ -141,9 +139,9 @@ public class ActivityLog extends FreedomService
return activityLog; return activityLog;
} }
public ActivityLogEntry getEntryByUUID(UUID uuid) public ActivityLogEntry getEntryByName(String name)
{ {
return activityLogs.get(uuid); return nameTable.get(name.toLowerCase());
} }
public ActivityLogEntry getEntryByIp(String ip) public ActivityLogEntry getEntryByIp(String ip)
@ -153,12 +151,12 @@ public class ActivityLog extends FreedomService
public void updateTables() public void updateTables()
{ {
activityLogs.clear(); nameTable.clear();
ipTable.clear(); ipTable.clear();
for (ActivityLogEntry activityLog : allActivityLogs.values()) for (ActivityLogEntry activityLog : allActivityLogs.values())
{ {
activityLogs.put(activityLog.getUUID(), activityLog); nameTable.put(activityLog.getName().toLowerCase(), activityLog);
for (String ip : activityLog.getIps()) for (String ip : activityLog.getIps())
{ {
@ -192,14 +190,14 @@ public class ActivityLog extends FreedomService
} }
} }
public Map<UUID, ActivityLogEntry> getAllActivityLogs() public Map<String, ActivityLogEntry> getAllActivityLogs()
{ {
return allActivityLogs; return allActivityLogs;
} }
public Map<UUID, ActivityLogEntry> getActivityLogs() public Map<String, ActivityLogEntry> getNameTable()
{ {
return activityLogs; return nameTable;
} }
public Map<String, ActivityLogEntry> getIpTable() public Map<String, ActivityLogEntry> getIpTable()

View File

@ -4,8 +4,6 @@ import com.google.common.collect.Lists;
import java.time.Instant; import java.time.Instant;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.UUID;
import me.totalfreedom.totalfreedommod.config.IConfig; import me.totalfreedom.totalfreedommod.config.IConfig;
import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.FUtil;
import org.apache.commons.lang.Validate; import org.apache.commons.lang.Validate;
@ -20,20 +18,17 @@ public class ActivityLogEntry implements IConfig
private final List<String> timestamps = Lists.newArrayList(); private final List<String> timestamps = Lists.newArrayList();
private final List<String> durations = Lists.newArrayList(); private final List<String> durations = Lists.newArrayList();
private String configKey; private String configKey;
private String name;
public ActivityLogEntry(Player player) public ActivityLogEntry(Player player)
{ {
this.configKey = player.getUniqueId().toString(); this.configKey = player.getName().toLowerCase();
this.name = player.getName();
} }
public ActivityLogEntry(UUID uuid) public ActivityLogEntry(String configKey)
{ {
this.configKey = uuid.toString(); this.configKey = configKey;
}
public ActivityLogEntry(String uuid)
{
this.configKey = uuid;
} }
public static String getFILENAME() public static String getFILENAME()
@ -44,11 +39,13 @@ public class ActivityLogEntry implements IConfig
public void loadFrom(Player player) public void loadFrom(Player player)
{ {
configKey = player.getName().toLowerCase(); configKey = player.getName().toLowerCase();
name = player.getName();
} }
@Override @Override
public void loadFrom(ConfigurationSection cs) public void loadFrom(ConfigurationSection cs)
{ {
name = cs.getString("username", configKey);
ips.clear(); ips.clear();
ips.addAll(cs.getStringList("ips")); ips.addAll(cs.getStringList("ips"));
timestamps.clear(); timestamps.clear();
@ -60,8 +57,8 @@ public class ActivityLogEntry implements IConfig
@Override @Override
public void saveTo(ConfigurationSection cs) public void saveTo(ConfigurationSection cs)
{ {
Validate.isTrue(isValid(), "Could not save activity entry: " + getUUID() + ". Entry not valid!"); Validate.isTrue(isValid(), "Could not save activity entry: " + name + ". Entry not valid!");
cs.set("uuid", getUUID().toString()); cs.set("username", name);
cs.set("ips", Lists.newArrayList(ips)); cs.set("ips", Lists.newArrayList(ips));
cs.set("timestamps", Lists.newArrayList(timestamps)); cs.set("timestamps", Lists.newArrayList(timestamps));
cs.set("durations", Lists.newArrayList(durations)); cs.set("durations", Lists.newArrayList(durations));
@ -76,11 +73,11 @@ public class ActivityLogEntry implements IConfig
public void addLogout() public void addLogout()
{ {
// Fix of Array index out of bonds issue: FS-131 // Fix of Array index out of bonds issue: FS-131
String lastLoginString = ""; String lastLoginString;
if(timestamps.size() > 1) if(timestamps.size() > 1)
{ {
lastLoginString = timestamps.get(timestamps.size() - 1); lastLoginString = timestamps.get(timestamps.size() - 1);
} else if (timestamps.size() == 1) }else
{ {
lastLoginString = timestamps.get(0); lastLoginString = timestamps.get(0);
} }
@ -139,7 +136,7 @@ public class ActivityLogEntry implements IConfig
public boolean isValid() public boolean isValid()
{ {
return configKey != null return configKey != null
&& getUUID() != null; && name != null;
} }
public String getConfigKey() public String getConfigKey()
@ -152,6 +149,16 @@ public class ActivityLogEntry implements IConfig
this.configKey = configKey; this.configKey = configKey;
} }
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public List<String> getIps() public List<String> getIps()
{ {
return ips; return ips;
@ -166,12 +173,4 @@ public class ActivityLogEntry implements IConfig
{ {
return durations; return durations;
} }
public UUID getUUID() {
return UUID.fromString(configKey);
}
public String getName() {
return FUtil.getNameFromUUID(getUUID());
}
} }

View File

@ -2,8 +2,11 @@ package me.totalfreedom.totalfreedommod.admin;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.*; import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import me.totalfreedom.totalfreedommod.LogViewer.LogsRegistrationMode; import me.totalfreedom.totalfreedommod.LogViewer.LogsRegistrationMode;
import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
@ -18,7 +21,7 @@ public class Admin
private final List<String> ips = new ArrayList<>(); private final List<String> ips = new ArrayList<>();
private UUID uuid; private String name;
private boolean active = true; private boolean active = true;
private Rank rank = Rank.ADMIN; private Rank rank = Rank.ADMIN;
private Date lastLogin = new Date(); private Date lastLogin = new Date();
@ -29,7 +32,7 @@ public class Admin
public Admin(Player player) public Admin(Player player)
{ {
this.uuid = player.getUniqueId(); this.name = player.getName();
this.ips.add(FUtil.getIp(player)); this.ips.add(FUtil.getIp(player));
} }
@ -37,7 +40,7 @@ public class Admin
{ {
try try
{ {
this.uuid = UUID.fromString(resultSet.getString("uuid")); this.name = resultSet.getString("username");
this.active = resultSet.getBoolean("active"); this.active = resultSet.getBoolean("active");
this.rank = Rank.findRank(resultSet.getString("rank")); this.rank = Rank.findRank(resultSet.getString("rank"));
this.ips.clear(); this.ips.clear();
@ -59,7 +62,7 @@ public class Admin
{ {
final StringBuilder output = new StringBuilder(); final StringBuilder output = new StringBuilder();
output.append("Admin: ").append(uuid.toString()).append("\n") output.append("Admin: ").append(name).append("\n")
.append("- IPs: ").append(StringUtils.join(ips, ", ")).append("\n") .append("- IPs: ").append(StringUtils.join(ips, ", ")).append("\n")
.append("- Last Login: ").append(FUtil.dateToString(lastLogin)).append("\n") .append("- Last Login: ").append(FUtil.dateToString(lastLogin)).append("\n")
.append("- Rank: ").append(rank.getName()).append("\n") .append("- Rank: ").append(rank.getName()).append("\n")
@ -75,7 +78,7 @@ public class Admin
{ {
Map<String, Object> map = new HashMap<String, Object>() Map<String, Object> map = new HashMap<String, Object>()
{{ {{
put("uuid", uuid.toString()); put("username", name);
put("active", active); put("active", active);
put("rank", rank.toString()); put("rank", rank.toString());
put("ips", FUtil.listToString(ips)); put("ips", FUtil.listToString(ips));
@ -117,20 +120,20 @@ public class Admin
public boolean isValid() public boolean isValid()
{ {
return uuid != null return name != null
&& rank != null && rank != null
&& !ips.isEmpty() && !ips.isEmpty()
&& lastLogin != null; && lastLogin != null;
} }
public UUID getUniqueId() public String getName()
{ {
return uuid; return name;
} }
public void setUniqueId(UUID uuid) public void setName(String name)
{ {
this.uuid = uuid; this.name = name;
} }
public boolean isActive() public boolean isActive()
@ -165,7 +168,6 @@ public class Admin
} }
} }
public Rank getRank() public Rank getRank()
{ {
return rank; return rank;
@ -230,9 +232,4 @@ public class Admin
{ {
this.pteroID = pteroID; this.pteroID = pteroID;
} }
public String getName()
{
return FUtil.getNameFromUUID(uuid);
}
} }

View File

@ -4,7 +4,11 @@ import com.google.common.collect.Maps;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.*; import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.FreedomService;
import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.config.ConfigEntry;
@ -22,7 +26,7 @@ public class AdminList extends FreedomService
private final Set<Admin> allAdmins = Sets.newHashSet(); // Includes disabled admins private final Set<Admin> allAdmins = Sets.newHashSet(); // Includes disabled admins
// Only active admins below // Only active admins below
private final Set<Admin> activeAdmins = Sets.newHashSet(); private final Set<Admin> activeAdmins = Sets.newHashSet();
private final Map<UUID, Admin> adminTable = Maps.newHashMap(); private final Map<String, Admin> nameTable = Maps.newHashMap();
private final Map<String, Admin> ipTable = Maps.newHashMap(); private final Map<String, Admin> ipTable = Maps.newHashMap();
public static List<String> getVanished() public static List<String> getVanished()
@ -62,7 +66,7 @@ public class AdminList extends FreedomService
} }
updateTables(); updateTables();
FLog.info("Loaded " + allAdmins.size() + " admins (" + adminTable.size() + " active, " + ipTable.size() + " IPs)"); FLog.info("Loaded " + allAdmins.size() + " admins (" + nameTable.size() + " active, " + ipTable.size() + " IPs)");
} }
public void messageAllAdmins(String message) public void messageAllAdmins(String message)
@ -93,16 +97,14 @@ public class AdminList extends FreedomService
return isAdmin(sender); return isAdmin(sender);
} }
@Deprecated
public List<String> getActiveAdminNames() public List<String> getActiveAdminNames()
{ {
/*List<String> names = new ArrayList(); List<String> names = new ArrayList();
for (Admin admin : activeAdmins) for (Admin admin : activeAdmins)
{ {
names.add(admin.getName()); names.add(admin.getName());
} }
return names;*/ return names;
throw new UnsupportedOperationException("Admin no longer stores names in the object, may be changed in a future update");
} }
public boolean isAdmin(CommandSender sender) public boolean isAdmin(CommandSender sender)
@ -140,21 +142,21 @@ public class AdminList extends FreedomService
return admin.getRank().ordinal() >= Rank.SENIOR_ADMIN.ordinal(); return admin.getRank().ordinal() >= Rank.SENIOR_ADMIN.ordinal();
} }
public Admin getAdmin(CommandSender sender) //TODO: Fix public Admin getAdmin(CommandSender sender)
{ {
if (sender instanceof Player) if (sender instanceof Player)
{ {
return getAdmin((Player)sender); return getAdmin((Player)sender);
} }
return getEntryByUUID(FUtil.getUUIDFromName(sender.getName())); return getEntryByName(sender.getName());
} }
public Admin getAdmin(Player player) public Admin getAdmin(Player player)
{ {
// Find admin // Find admin
String ip = FUtil.getIp(player); String ip = FUtil.getIp(player);
Admin admin = getEntryByUUID(player.getUniqueId()); Admin admin = getEntryByName(player.getName());
// Admin by name // Admin by name
if (admin != null) if (admin != null)
@ -179,16 +181,18 @@ public class AdminList extends FreedomService
if (admin != null) if (admin != null)
{ {
// Set the new username // Set the new username
//plugin.sql.updateAdminName(oldName, admin.getName()); String oldName = admin.getName();
admin.setName(player.getName());
plugin.sql.updateAdminName(oldName, admin.getName());
updateTables(); updateTables();
} }
return null; return null;
} }
public Admin getEntryByUUID(UUID uuid) public Admin getEntryByName(String name)
{ {
return adminTable.get(uuid); return nameTable.get(name.toLowerCase());
} }
public Admin getEntryByIp(String ip) public Admin getEntryByIp(String ip)
@ -196,7 +200,6 @@ public class AdminList extends FreedomService
return ipTable.get(ip); return ipTable.get(ip);
} }
@Deprecated // TODO: no ips maybe ? idk soontm
public Admin getEntryByIpFuzzy(String needleIp) public Admin getEntryByIpFuzzy(String needleIp)
{ {
final Admin directAdmin = getEntryByIp(needleIp); final Admin directAdmin = getEntryByIp(needleIp);
@ -225,12 +228,13 @@ public class AdminList extends FreedomService
} }
admin.setLastLogin(new Date()); admin.setLastLogin(new Date());
admin.setName(player.getName());
save(admin); save(admin);
} }
public boolean isAdminImpostor(Player player) public boolean isAdminImpostor(Player player)
{ {
return getEntryByUUID(player.getUniqueId()) != null && !isAdmin(player) && !isVerifiedAdmin(player); return getEntryByName(player.getName()) != null && !isAdmin(player) && !isVerifiedAdmin(player);
} }
public boolean isVerifiedAdmin(Player player) public boolean isVerifiedAdmin(Player player)
@ -293,7 +297,7 @@ public class AdminList extends FreedomService
public void updateTables() public void updateTables()
{ {
activeAdmins.clear(); activeAdmins.clear();
adminTable.clear(); nameTable.clear();
ipTable.clear(); ipTable.clear();
for (Admin admin : allAdmins) for (Admin admin : allAdmins)
@ -304,7 +308,7 @@ public class AdminList extends FreedomService
} }
activeAdmins.add(admin); activeAdmins.add(admin);
adminTable.put(admin.getUniqueId(), admin); nameTable.put(admin.getName().toLowerCase(), admin);
for (String ip : admin.getIps()) for (String ip : admin.getIps())
{ {
@ -314,9 +318,9 @@ public class AdminList extends FreedomService
} }
} }
public Set<UUID> getAdminUUIDs() public Set<String> getAdminNames()
{ {
return adminTable.keySet(); return nameTable.keySet();
} }
public Set<String> getAdminIps() public Set<String> getAdminIps()
@ -328,7 +332,7 @@ public class AdminList extends FreedomService
{ {
try try
{ {
ResultSet currentSave = plugin.sql.getAdminByUUID(admin.getUniqueId()); ResultSet currentSave = plugin.sql.getAdminByName(admin.getName());
for (Map.Entry<String, Object> entry : admin.toSQLStorable().entrySet()) for (Map.Entry<String, Object> entry : admin.toSQLStorable().entrySet())
{ {
Object storedValue = plugin.sql.getValue(currentSave, entry.getKey(), entry.getValue()); Object storedValue = plugin.sql.getValue(currentSave, entry.getKey(), entry.getValue());
@ -388,6 +392,11 @@ public class AdminList extends FreedomService
return activeAdmins; return activeAdmins;
} }
public Map<String, Admin> getNameTable()
{
return nameTable;
}
public Map<String, Admin> getIpTable() public Map<String, Admin> getIpTable()
{ {
return ipTable; return ipTable;

View File

@ -19,8 +19,6 @@ import org.bukkit.entity.Player;
public class Ban public class Ban
{ {
//TODO: fuck your usernames and getting by ips, bans will be in uuid maybe soon tm idk
public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z"); public static final SimpleDateFormat DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd 'at' HH:mm:ss z");
private final List<String> ips = Lists.newArrayList(); private final List<String> ips = Lists.newArrayList();
private String username = null; private String username = null;

View File

@ -43,7 +43,6 @@ public class IndefiniteBan implements IConfig
@Override @Override
public void saveTo(ConfigurationSection cs) public void saveTo(ConfigurationSection cs)
{ {
// The indefinite ban list is only intended to be modified manually. It is not intended to save.
} }
@Override @Override

View File

@ -171,11 +171,6 @@ public class BlockBlocker extends FreedomService
} }
break; break;
} }
default:
{
// Do nothing
break;
}
} }
if (Groups.BANNERS.contains(event.getBlockPlaced().getType())) if (Groups.BANNERS.contains(event.getBlockPlaced().getType()))

View File

@ -146,12 +146,9 @@ public class EventBlocker extends FreedomService
if (ConfigEntry.ENABLE_PET_PROTECT.getBoolean()) if (ConfigEntry.ENABLE_PET_PROTECT.getBoolean())
{ {
Entity entity = event.getEntity(); Entity entity = event.getEntity();
if (entity instanceof Tameable) if (entity instanceof Tameable && ((Tameable) entity).isTamed())
{ {
if (((Tameable)entity).isTamed()) event.setCancelled(true);
{
event.setCancelled(true);
}
} }
} }
} }

View File

@ -36,9 +36,10 @@ public class InteractBlocker extends FreedomService
break; break;
} }
default: case LEFT_CLICK_AIR:
case LEFT_CLICK_BLOCK:
{ {
// Do nothing //
break; break;
} }
} }
@ -157,11 +158,6 @@ public class InteractBlocker extends FreedomService
event.setCancelled(true); event.setCancelled(true);
break; break;
} }
default:
{
// Do nothing
break;
}
} }
} }
} }

View File

@ -12,7 +12,6 @@ import me.totalfreedom.totalfreedommod.FreedomService;
import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.admin.Admin;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FLog;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
@ -102,12 +101,9 @@ public class BukkitTelnetBridge extends FreedomService
try try
{ {
final Plugin bukkitTelnet = server.getPluginManager().getPlugin("BukkitTelnet"); final Plugin bukkitTelnet = server.getPluginManager().getPlugin("BukkitTelnet");
if (bukkitTelnet != null) if (bukkitTelnet instanceof BukkitTelnet)
{ {
if (bukkitTelnet instanceof BukkitTelnet) bukkitTelnetPlugin = (BukkitTelnet) bukkitTelnet;
{
bukkitTelnetPlugin = (BukkitTelnet)bukkitTelnet;
}
} }
} }
catch (Exception ex) catch (Exception ex)
@ -127,7 +123,7 @@ public class BukkitTelnetBridge extends FreedomService
{ {
for (ClientSession session : telnet.appender.getSessions()) for (ClientSession session : telnet.appender.getSessions())
{ {
Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(session.getUserName())); Admin admin = plugin.al.getEntryByName(session.getUserName().toLowerCase());
if (admin != null && !admins.contains(admin)) if (admin != null && !admins.contains(admin))
{ {
admins.add(admin); admins.add(admin);

View File

@ -362,93 +362,90 @@ public class CoreProtectBridge extends FreedomService
} }
else if (event.getAction() == Action.RIGHT_CLICK_BLOCK) else if (event.getAction() == Action.RIGHT_CLICK_BLOCK)
{ {
if (block != null) if (block != null && data.hasInspection())
{ {
if (data.hasInspection()) BlockState blockState = block.getRelative(event.getBlockFace()).getState();
{ Block placedBlock = blockState.getBlock();
BlockState blockState = block.getRelative(event.getBlockFace()).getState(); event.setCancelled(true);
Block placedBlock = blockState.getBlock(); List<String[]> lookup = coreProtect.blockLookup(placedBlock, -1);
event.setCancelled(true);
List<String[]> lookup = coreProtect.blockLookup(placedBlock, -1);
if (lookup.isEmpty())
{
lookup = coreProtect.blockLookup(block, -1);
}
int cooldownTime = 3;
if (cooldown.containsKey(player.getName()))
{
long secondsLeft = getSecondsLeft(cooldown.get(player.getName()), cooldownTime);
if (secondsLeft > 0L)
{
event.setCancelled(true);
player.sendMessage(ChatColor.RED + String.valueOf(secondsLeft) + " seconds left before next query.");
return;
}
}
if (!plugin.al.isAdmin(player))
{
cooldown.put(player.getName(), System.currentTimeMillis());
}
if (lookup != null)
{
if (lookup.isEmpty()) if (lookup.isEmpty())
{ {
lookup = coreProtect.blockLookup(block, -1); player.sendMessage(net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector " + ChatColor.WHITE + "- " + "No block data found for this location");
return;
} }
int cooldownTime = 3; HISTORY_MAP.remove(event.getPlayer());
HISTORY_MAP.put(event.getPlayer(), new FUtil.PaginationList<>(10));
FUtil.PaginationList<String> paged = HISTORY_MAP.get(event.getPlayer());
if (cooldown.containsKey(player.getName())) player.sendMessage("---- " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector" + ChatColor.WHITE + " ---- " +
ChatColor.GRAY + "(x" + block.getX() + "/" + "y" + block.getY() + "/" + "z" + block.getZ() + ")");
for (String[] value : lookup)
{ {
long secondsLeft = getSecondsLeft(cooldown.get(player.getName()), cooldownTime); CoreProtectAPI.ParseResult result = coreProtect.parseResult(value);
if (secondsLeft > 0L) BlockData bl = result.getBlockData();
String s;
String st = "";
if (result.getActionString().equals("Placement"))
{ {
event.setCancelled(true); s = " placed ";
player.sendMessage(ChatColor.RED + String.valueOf(secondsLeft) + " seconds left before next query.");
return;
} }
else if (result.getActionString().equals("Removal"))
{
s = " broke ";
}
else
{
s = " interacted with ";
}
if (result.isRolledBack())
{
st += "§m";
}
int time = (int)(System.currentTimeMillis() / 1000L);
paged.add(ChatColor.GRAY + getTimeAgo(result.getTime(), time) + ChatColor.WHITE + " - " + net.md_5.bungee.api.ChatColor.of("#30ade4") +
st + result.getPlayer() + ChatColor.WHITE + st + s + net.md_5.bungee.api.ChatColor.of("#30ade4") + st + bl.getMaterial().toString().toLowerCase());
} }
if (!plugin.al.isAdmin(player)) List<String> page = paged.getPage(1);
for (String entries : page)
{ {
cooldown.put(player.getName(), System.currentTimeMillis()); player.sendMessage(entries);
} }
if (lookup != null) player.sendMessage("Page 1/" + paged.getPageCount() + " | To index through the pages, type " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "/ins history <page>");
{
if (lookup.isEmpty())
{
player.sendMessage(net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector " + ChatColor.WHITE + "- " + "No block data found for this location");
return;
}
HISTORY_MAP.remove(event.getPlayer());
HISTORY_MAP.put(event.getPlayer(), new FUtil.PaginationList<>(10));
FUtil.PaginationList<String> paged = HISTORY_MAP.get(event.getPlayer());
player.sendMessage("---- " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector" + ChatColor.WHITE + " ---- " +
ChatColor.GRAY + "(x" + block.getX() + "/" + "y" + block.getY() + "/" + "z" + block.getZ() + ")");
for (String[] value : lookup)
{
CoreProtectAPI.ParseResult result = coreProtect.parseResult(value);
BlockData bl = result.getBlockData();
String s;
String st = "";
if (result.getActionString().equals("Placement"))
{
s = " placed ";
}
else if (result.getActionString().equals("Removal"))
{
s = " broke ";
}
else
{
s = " interacted with ";
}
if (result.isRolledBack())
{
st += "§m";
}
int time = (int)(System.currentTimeMillis() / 1000L);
paged.add(ChatColor.GRAY + getTimeAgo(result.getTime(), time) + ChatColor.WHITE + " - " + net.md_5.bungee.api.ChatColor.of("#30ade4") +
st + result.getPlayer() + ChatColor.WHITE + st + s + net.md_5.bungee.api.ChatColor.of("#30ade4") + st + bl.getMaterial().toString().toLowerCase());
}
List<String> page = paged.getPage(1);
for (String entries : page)
{
player.sendMessage(entries);
}
player.sendMessage("Page 1/" + paged.getPageCount() + " | To index through the pages, type " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "/ins history <page>");
}
} }
} }
} }

View File

@ -30,13 +30,10 @@ public class TFGuildsBridge extends FreedomService
try try
{ {
final Plugin tfGuilds = server.getPluginManager().getPlugin("TFGuilds"); final Plugin tfGuilds = server.getPluginManager().getPlugin("TFGuilds");
if (tfGuilds != null && tfGuilds.isEnabled()) if (tfGuilds != null && tfGuilds.isEnabled() && tfGuilds instanceof TFGuilds)
{ {
if (tfGuilds instanceof TFGuilds) enabled = true;
{ return true;
enabled = true;
return true;
}
} }
} }
catch (NoClassDefFoundError ex) catch (NoClassDefFoundError ex)

View File

@ -65,7 +65,7 @@ public class Command_ban extends FreedomCommand
final Player player = getPlayer(args[0]); final Player player = getPlayer(args[0]);
if (player == null) if (player == null)
{ {
final PlayerData entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0])); final PlayerData entry = plugin.pl.getData(args[0]);
if (entry == null) if (entry == null)
{ {

View File

@ -1,8 +1,6 @@
package me.totalfreedom.totalfreedommod.command; package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.punishments.Punishment;
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
@ -77,11 +75,9 @@ public class Command_blockcmd extends FreedomCommand
FPlayer playerdata = plugin.pl.getPlayer(player); FPlayer playerdata = plugin.pl.getPlayer(player);
if (!playerdata.allCommandsBlocked()) if (!playerdata.allCommandsBlocked())
{ {
FUtil.adminAction(sender.getName(), "Blocking all commands for " + player.getName(), true);
playerdata.setCommandsBlocked(true); playerdata.setCommandsBlocked(true);
FUtil.adminAction(sender.getName(), "Blocking all commands for " + player.getName(), true);
msg("Blocked commands for " + player.getName() + "."); msg("Blocked commands for " + player.getName() + ".");
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.BLOCKCMD, null));
} }
else else
{ {

View File

@ -1,8 +1,6 @@
package me.totalfreedom.totalfreedommod.command; package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.punishments.Punishment;
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.FUtil;
import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.ArrayUtils;
@ -130,8 +128,6 @@ public class Command_blockedit extends FreedomCommand
msg(player2, "Your block modification abilities have been blocked.", ChatColor.RED); msg(player2, "Your block modification abilities have been blocked.", ChatColor.RED);
msg("Blocked all block modification abilities for " + player2.getName()); msg("Blocked all block modification abilities for " + player2.getName());
plugin.pul.logPunishment(new Punishment(player2.getName(), FUtil.getIp(player2), sender.getName(), PunishmentType.BLOCKEDIT, null));
} }
return true; return true;
} }

View File

@ -1,8 +1,6 @@
package me.totalfreedom.totalfreedommod.command; package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.punishments.Punishment;
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.FUtil;
import org.apache.commons.lang3.ArrayUtils; import org.apache.commons.lang3.ArrayUtils;
@ -127,7 +125,6 @@ public class Command_blockpvp extends FreedomCommand
{ {
Command_smite.smite(sender, p, reason); Command_smite.smite(sender, p, reason);
} }
plugin.pul.logPunishment(new Punishment(p.getName(), FUtil.getIp(p), sender.getName(), PunishmentType.BLOCKPVP, null));
msg(p, "Your PVP has been disabled.", ChatColor.RED); msg(p, "Your PVP has been disabled.", ChatColor.RED);
msg("Disabled PVP for " + p.getName()); msg("Disabled PVP for " + p.getName());

View File

@ -5,8 +5,6 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.List; import java.util.List;
import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.punishments.Punishment;
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
@ -77,43 +75,17 @@ public class Command_cage extends FreedomCommand
} }
case "block": case "block":
{ {
if (args.length >= 3) if (Material.matchMaterial(args[2]) != null)
{ {
// Checks the validity of the Material and checks if it's a block. outerMaterial = Material.matchMaterial(args[2]);
// This is incredibly inefficient, as Spigot's isBlock() method in Material is an actual break;
// nightmare of switch-cases.
if (Material.matchMaterial(args[2]) != null && Material.matchMaterial(args[2]).isBlock())
{
outerMaterial = Material.matchMaterial(args[2]);
break;
}
else
{
msg("Invalid block!", ChatColor.RED);
return true;
}
} }
else msg("Invalid block!", ChatColor.RED);
{ break;
return false;
}
}
default:
{
return false;
} }
} }
} }
if (outerMaterial == Material.PLAYER_HEAD)
{
FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true);
}
else
{
FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true);
}
Location location = player.getLocation().clone().add(0.0, 1.0, 0.0); Location location = player.getLocation().clone().add(0.0, 1.0, 0.0);
if (skullName != null) if (skullName != null)
@ -124,9 +96,17 @@ public class Command_cage extends FreedomCommand
{ {
fPlayer.getCageData().cage(location, outerMaterial, innerMaterial); fPlayer.getCageData().cage(location, outerMaterial, innerMaterial);
} }
player.setGameMode(GameMode.SURVIVAL); player.setGameMode(GameMode.SURVIVAL);
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.CAGE, null)); if (outerMaterial == Material.PLAYER_HEAD)
{
FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true);
}
else
{
FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true);
}
return true; return true;
} }

View File

@ -8,7 +8,7 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH) @CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH)
@CommandParameters(description = "Clears the chat.", usage = "/<command>", aliases = "cc") @CommandParameters(description = "Clears the chat.", usage = "/<command>", aliases = "cc")
public class Command_cleanchat extends FreedomCommand public class Command_clearchat extends FreedomCommand
{ {
@Override @Override
@ -27,4 +27,4 @@ public class Command_cleanchat extends FreedomCommand
FUtil.adminAction(sender.getName(), "Cleared chat", true); FUtil.adminAction(sender.getName(), "Cleared chat", true);
return true; return true;
} }
} }

View File

@ -32,16 +32,14 @@ public class Command_deop extends FreedomCommand
final List<String> matchedPlayerNames = new ArrayList<>(); final List<String> matchedPlayerNames = new ArrayList<>();
for (Player player : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
if (player.getName().toLowerCase().contains(targetName) || player.getDisplayName().toLowerCase().contains(targetName) if ((player.getName().toLowerCase().contains(targetName) || player.getDisplayName().toLowerCase().contains(targetName)
|| player.getName().contains(targetName) || player.getDisplayName().contains(targetName)) || player.getName().contains(targetName) || player.getDisplayName().contains(targetName))
&& player.isOp() && !plugin.al.isVanished(player.getName()))
{ {
if (player.isOp() && !plugin.al.isVanished(player.getName())) matchedPlayerNames.add(player.getName());
{ player.setOp(false);
matchedPlayerNames.add(player.getName()); msg(player, YOU_ARE_NOT_OP);
player.setOp(false); plugin.rm.updateDisplay(player);
msg(player, YOU_ARE_NOT_OP);
plugin.rm.updateDisplay(player);
}
} }
} }

View File

@ -56,7 +56,7 @@ public class Command_doom extends FreedomCommand
plugin.ptero.updateAccountStatus(admin); plugin.ptero.updateAccountStatus(admin);
if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean())
{ {
Discord.syncRoles(admin, plugin.pl.getData(admin.getUniqueId()).getDiscordID()); Discord.syncRoles(admin, plugin.pl.getData(admin.getName()).getDiscordID());
} }
} }

View File

@ -251,21 +251,18 @@ public class Command_enchant extends FreedomCommand
return getEnchantments(item); return getEnchantments(item);
} }
} }
else if (args.length == 3) else if (args.length == 3 && args[0].equalsIgnoreCase("add"))
{ {
if (args[0].equals("add")) Enchantment enchantment = Enchantment.getByName(args[1].toUpperCase());
if (enchantment != null)
{ {
Enchantment enchantment = Enchantment.getByName(args[1].toUpperCase()); if (!unsafe)
if (enchantment != null)
{ {
if (!unsafe) return stringNumberRange(1, enchantment.getMaxLevel());
{ }
return stringNumberRange(1, enchantment.getMaxLevel()); else
} {
else return Collections.singletonList("[level]");
{
return Collections.singletonList("[level]");
}
} }
} }
} }

View File

@ -64,12 +64,6 @@ public class Command_entitywipe extends FreedomCommand
return true; return true;
} }
if (type == EntityType.PLAYER)
{
msg("Player entities cannot be purged.", ChatColor.RED);
return true;
}
if (!getAllEntities().contains(type)) if (!getAllEntities().contains(type))
{ {
msg(FUtil.formatName(type.name()) + " is an entity, however: it is a mob.", ChatColor.RED); msg(FUtil.formatName(type.name()) + " is an entity, however: it is a mob.", ChatColor.RED);

View File

@ -23,12 +23,12 @@ public class Command_freeze extends FreedomCommand
if (!gFreeze) if (!gFreeze)
{ {
FUtil.adminAction(sender.getName(), "Unfreezing all players", false); FUtil.adminAction(sender.getName(), "Disabling global player freeze", false);
msg("Players are now free to move."); msg("Players are now free to move.");
return true; return true;
} }
FUtil.adminAction(sender.getName(), "Freezing all players", false); FUtil.adminAction(sender.getName(), "Enabling global player freeze", false);
for (Player player : server.getOnlinePlayers()) for (Player player : server.getOnlinePlayers())
{ {
if (!isAdmin(player)) if (!isAdmin(player))

View File

@ -3,7 +3,6 @@ package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.discord.Discord; import me.totalfreedom.totalfreedommod.discord.Discord;
import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.player.PlayerData;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -25,7 +24,7 @@ public class Command_linkdiscord extends FreedomCommand
if (args.length > 1 && plugin.al.isAdmin(playerSender)) if (args.length > 1 && plugin.al.isAdmin(playerSender))
{ {
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[0])); PlayerData playerData = plugin.pl.getData(args[0]);
if (playerData == null) if (playerData == null)
{ {
msg(PLAYER_NOT_FOUND); msg(PLAYER_NOT_FOUND);

View File

@ -35,14 +35,14 @@ public class Command_manageshop extends FreedomCommand
} }
switch (args[1]) switch (args[1])
{ {
case "add": case "add":
{
try try
{ {
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
if (!args[3].equals("all")) if (!args[3].equals("all"))
{ {
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3])); PlayerData playerData = plugin.pl.getData(args[3]);
if (playerData == null) if (playerData == null)
{ {
msg(PLAYER_NOT_FOUND); msg(PLAYER_NOT_FOUND);
@ -75,15 +75,13 @@ public class Command_manageshop extends FreedomCommand
msg("Invalid number: " + args[2], ChatColor.RED); msg("Invalid number: " + args[2], ChatColor.RED);
return true; return true;
} }
}
case "remove": case "remove":
{
try try
{ {
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
if (!args[3].equals("all")) if (!args[3].equals("all"))
{ {
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3])); PlayerData playerData = plugin.pl.getData(args[3]);
if (playerData == null) if (playerData == null)
{ {
msg(PLAYER_NOT_FOUND); msg(PLAYER_NOT_FOUND);
@ -124,13 +122,11 @@ public class Command_manageshop extends FreedomCommand
msg("Invalid number: " + args[2], ChatColor.RED); msg("Invalid number: " + args[2], ChatColor.RED);
return true; return true;
} }
}
case "set": case "set":
{
try try
{ {
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2]))); int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3])); PlayerData playerData = plugin.pl.getData(args[3]);
if (playerData == null) if (playerData == null)
{ {
msg(PLAYER_NOT_FOUND); msg(PLAYER_NOT_FOUND);
@ -151,11 +147,6 @@ public class Command_manageshop extends FreedomCommand
msg("Invalid number: " + args[2], ChatColor.RED); msg("Invalid number: " + args[2], ChatColor.RED);
return true; return true;
} }
}
default:
{
return false;
}
} }
} }
else if (args[0].equals("items")) else if (args[0].equals("items"))
@ -180,7 +171,7 @@ public class Command_manageshop extends FreedomCommand
return true; return true;
} }
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3])); PlayerData playerData = plugin.pl.getData(args[3]);
if (playerData == null) if (playerData == null)
{ {
msg(PLAYER_NOT_FOUND); msg(PLAYER_NOT_FOUND);
@ -205,7 +196,7 @@ public class Command_manageshop extends FreedomCommand
return true; return true;
} }
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3])); PlayerData playerData = plugin.pl.getData(args[3]);
if (playerData == null) if (playerData == null)
{ {
msg(PLAYER_NOT_FOUND); msg(PLAYER_NOT_FOUND);

View File

@ -45,7 +45,7 @@ public class Command_mbconfig extends FreedomCommand
return true; return true;
} }
PlayerData data = plugin.pl.getData(FUtil.getUUIDFromName(sender.getName())); PlayerData data = plugin.pl.getData(sender.getName());
if (!data.isMasterBuilder()) if (!data.isMasterBuilder())
{ {
msg("You are not a master builder!", ChatColor.RED); msg("You are not a master builder!", ChatColor.RED);
@ -74,7 +74,7 @@ public class Command_mbconfig extends FreedomCommand
return true; return true;
} }
PlayerData data = plugin.pl.getData(FUtil.getUUIDFromName(sender.getName())); PlayerData data = plugin.pl.getData(sender.getName());
final String targetIp = FUtil.getIp(playerSender); final String targetIp = FUtil.getIp(playerSender);
if (!data.isMasterBuilder()) if (!data.isMasterBuilder())
@ -101,14 +101,14 @@ public class Command_mbconfig extends FreedomCommand
return false; return false;
} }
if (plugin.pl.canManageMasterBuilders(FUtil.getUUIDFromName(sender.getName()))) if (plugin.pl.canManageMasterBuilders(sender.getName()))
{ {
return noPerms(); return noPerms();
} }
final Player player = getPlayer(args[1]); final Player player = getPlayer(args[1]);
PlayerData data = player != null ? plugin.pl.getData(player) : plugin.pl.getData(FUtil.getUUIDFromName(args[1])); PlayerData data = player != null ? plugin.pl.getData(player) : plugin.pl.getData(args[1]);
if (data == null) if (data == null)
{ {
@ -157,13 +157,13 @@ public class Command_mbconfig extends FreedomCommand
return false; return false;
} }
if (plugin.pl.canManageMasterBuilders(FUtil.getUUIDFromName(sender.getName()))) if (plugin.pl.canManageMasterBuilders(sender.getName()))
{ {
return noPerms(); return noPerms();
} }
Player player = getPlayer(args[1]); Player player = getPlayer(args[1]);
PlayerData data = player != null ? plugin.pl.getData(player) : plugin.pl.getData(FUtil.getUUIDFromName(args[1])); PlayerData data = player != null ? plugin.pl.getData(player) : plugin.pl.getData(args[1]);
if (data == null || !data.isMasterBuilder()) if (data == null || !data.isMasterBuilder())
{ {
@ -210,7 +210,7 @@ public class Command_mbconfig extends FreedomCommand
} }
else if (args[0].equalsIgnoreCase("clearip")) else if (args[0].equalsIgnoreCase("clearip"))
{ {
PlayerData data = plugin.pl.getData(FUtil.getUUIDFromName(sender.getName())); PlayerData data = plugin.pl.getData(sender.getName());
if (data.isMasterBuilder()) if (data.isMasterBuilder())
{ {
return data.getIps(); return data.getIps();

View File

@ -170,7 +170,7 @@ public class Command_myadmin extends FreedomCommand
msg("Role syncing is not enabled.", ChatColor.RED); msg("Role syncing is not enabled.", ChatColor.RED);
return true; return true;
} }
PlayerData playerData = plugin.pl.getData(target.getUniqueId()); PlayerData playerData = plugin.pl.getData(target.getName());
if (playerData.getDiscordID() == null) if (playerData.getDiscordID() == null)
{ {
msg("Please run /linkdiscord first!", ChatColor.RED); msg("Please run /linkdiscord first!", ChatColor.RED);
@ -248,7 +248,7 @@ public class Command_myadmin extends FreedomCommand
{ {
if (args[0].equals("-o") && args[2].equals("clearip")) if (args[0].equals("-o") && args[2].equals("clearip"))
{ {
Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(args[1])); Admin admin = plugin.al.getEntryByName(args[1]);
if (admin != null) if (admin != null)
{ {
return admin.getIps(); return admin.getIps();

View File

@ -31,7 +31,7 @@ public class Command_notes extends FreedomCommand
final Player player = getPlayer(args[0]); final Player player = getPlayer(args[0]);
if (player == null) if (player == null)
{ {
final PlayerData entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0])); final PlayerData entry = plugin.pl.getData(args[0]);
if (entry == null) if (entry == null)
{ {
@ -39,7 +39,7 @@ public class Command_notes extends FreedomCommand
return true; return true;
} }
playerData = entry; playerData = plugin.pl.getData(entry.getName());
} }
else else
{ {
@ -116,12 +116,8 @@ public class Command_notes extends FreedomCommand
msg("Cleared " + count + " notes.", ChatColor.GREEN); msg("Cleared " + count + " notes.", ChatColor.GREEN);
return true; return true;
} }
default:
{
return false;
}
} }
return false;
} }
@Override @Override

View File

@ -1,8 +1,6 @@
package me.totalfreedom.totalfreedommod.command; package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.player.FPlayer; import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.punishments.Punishment;
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil; import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
@ -58,13 +56,11 @@ public class Command_orbit extends FreedomCommand
} }
} }
FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false);
player.setGameMode(GameMode.SURVIVAL); player.setGameMode(GameMode.SURVIVAL);
playerdata.startOrbiting(strength); playerdata.startOrbiting(strength);
player.setVelocity(new Vector(0, strength, 0));
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.ORBIT, null)); player.setVelocity(new Vector(0, strength, 0));
FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false);
return true; return true;
} }
} }

View File

@ -29,7 +29,6 @@ public class Command_potion extends FreedomCommand
switch (args.length) switch (args.length)
{ {
case 1: case 1:
{
if (args[0].equalsIgnoreCase("list")) if (args[0].equalsIgnoreCase("list"))
{ {
List<String> potionEffectTypeNames = new ArrayList<>(); List<String> potionEffectTypeNames = new ArrayList<>();
@ -59,10 +58,8 @@ public class Command_potion extends FreedomCommand
} }
} }
} }
}
case 2: case 2:
{
if (args[0].equalsIgnoreCase("clear")) if (args[0].equalsIgnoreCase("clear"))
{ {
Player target = playerSender; Player target = playerSender;
@ -98,11 +95,9 @@ public class Command_potion extends FreedomCommand
msg("Cleared all active potion effects " + (!target.equals(playerSender) ? "from player " + target.getName() + "." : "from yourself."), ChatColor.AQUA); msg("Cleared all active potion effects " + (!target.equals(playerSender) ? "from player " + target.getName() + "." : "from yourself."), ChatColor.AQUA);
} }
break; break;
}
case 4: case 4:
case 5: case 5:
{
if (args[0].equalsIgnoreCase("add")) if (args[0].equalsIgnoreCase("add"))
{ {
Player target = playerSender; Player target = playerSender;
@ -172,11 +167,8 @@ public class Command_potion extends FreedomCommand
+ (!target.equals(playerSender) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA); + (!target.equals(playerSender) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA);
} }
break; break;
}
default: default:
{
return false; return false;
}
} }
return true; return true;
} }
@ -187,17 +179,14 @@ public class Command_potion extends FreedomCommand
switch (args.length) switch (args.length)
{ {
case 1: case 1:
{
List<String> arguments = new ArrayList<>(Arrays.asList("list", "clear", "add")); List<String> arguments = new ArrayList<>(Arrays.asList("list", "clear", "add"));
if (plugin.al.isAdmin(sender)) if (plugin.al.isAdmin(sender))
{ {
arguments.add("clearall"); arguments.add("clearall");
} }
return arguments; return arguments;
}
case 2: case 2:
{
if (args[0].equals("clear")) if (args[0].equals("clear"))
{ {
if (plugin.al.isAdmin(sender)) if (plugin.al.isAdmin(sender))
@ -210,28 +199,22 @@ public class Command_potion extends FreedomCommand
return getAllPotionTypes(); return getAllPotionTypes();
} }
break; break;
}
case 3: case 3:
{
if (args[0].equals("add")) if (args[0].equals("add"))
{ {
return Collections.singletonList("<duration>"); return Collections.singletonList("<duration>");
} }
break; break;
}
case 4: case 4:
{
if (args[0].equals("add")) if (args[0].equals("add"))
{ {
return Collections.singletonList("<amplifier>"); return Collections.singletonList("<amplifier>");
} }
break; break;
}
case 5: case 5:
{
if (plugin.al.isAdmin(sender)) if (plugin.al.isAdmin(sender))
{ {
if (args[0].equals("add")) if (args[0].equals("add"))
@ -240,12 +223,6 @@ public class Command_potion extends FreedomCommand
} }
} }
break; break;
}
default:
{
break;
}
} }
return Collections.emptyList(); return Collections.emptyList();

View File

@ -5,8 +5,6 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.admin.Admin;
import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import me.totalfreedom.totalfreedommod.discord.Discord; import me.totalfreedom.totalfreedommod.discord.Discord;
@ -36,7 +34,7 @@ public class Command_saconfig extends FreedomCommand
{ {
case "list": case "list":
{ {
msg("Admins: " + StringUtils.join(plugin.al.getAdminUUIDs().stream().map(FUtil::getNameFromUUID).collect(Collectors.toList()), ", "), ChatColor.GOLD); msg("Admins: " + StringUtils.join(plugin.al.getAdminNames(), ", "), ChatColor.GOLD);
return true; return true;
} }
@ -47,7 +45,7 @@ public class Command_saconfig extends FreedomCommand
FUtil.adminAction(sender.getName(), "Cleaning the admin list", true); FUtil.adminAction(sender.getName(), "Cleaning the admin list", true);
plugin.al.deactivateOldEntries(true); plugin.al.deactivateOldEntries(true);
msg("Admins: " + StringUtils.join(plugin.al.getAdminUUIDs().stream().map(FUtil::getNameFromUUID).collect(Collectors.toList()), ", "), ChatColor.GOLD); msg("Admins: " + StringUtils.join(plugin.al.getAdminNames(), ", "), ChatColor.GOLD);
return true; return true;
} }
@ -91,7 +89,7 @@ public class Command_saconfig extends FreedomCommand
return true; return true;
} }
Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(args[1])); Admin admin = plugin.al.getEntryByName(args[1]);
if (admin == null) if (admin == null)
{ {
msg("Unknown admin: " + args[1]); msg("Unknown admin: " + args[1]);
@ -111,7 +109,7 @@ public class Command_saconfig extends FreedomCommand
if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean())
{ {
Discord.syncRoles(admin, plugin.pl.getData(admin.getUniqueId()).getDiscordID()); Discord.syncRoles(admin, plugin.pl.getData(admin.getName()).getDiscordID());
} }
plugin.ptero.updateAccountStatus(admin); plugin.ptero.updateAccountStatus(admin);
@ -129,7 +127,7 @@ public class Command_saconfig extends FreedomCommand
checkRank(Rank.ADMIN); checkRank(Rank.ADMIN);
Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(args[1])); Admin admin = plugin.al.getEntryByName(args[1]);
if (admin == null) if (admin == null)
{ {
@ -208,12 +206,12 @@ public class Command_saconfig extends FreedomCommand
{ {
FUtil.adminAction(sender.getName(), "Re-adding " + player.getName() + " to the admin list", true); FUtil.adminAction(sender.getName(), "Re-adding " + player.getName() + " to the admin list", true);
/*String oldName = admin.getName(); String oldName = admin.getName();
if (!oldName.equals(player.getName())) if (!oldName.equals(player.getName()))
{ {
admin.setName(player.getName()); admin.setName(player.getName());
plugin.sql.updateAdminName(oldName, admin.getName()); plugin.sql.updateAdminName(oldName, admin.getName());
}*/ }
admin.addIp(FUtil.getIp(player)); admin.addIp(FUtil.getIp(player));
admin.setActive(true); admin.setActive(true);
@ -261,7 +259,7 @@ public class Command_saconfig extends FreedomCommand
checkRank(Rank.ADMIN); checkRank(Rank.ADMIN);
Player player = getPlayer(args[1]); Player player = getPlayer(args[1]);
Admin admin = player != null ? plugin.al.getAdmin(player) : plugin.al.getEntryByUUID(FUtil.getUUIDFromName(args[1])); Admin admin = player != null ? plugin.al.getAdmin(player) : plugin.al.getEntryByName(args[1]);
if (admin == null) if (admin == null)
{ {
@ -282,7 +280,7 @@ public class Command_saconfig extends FreedomCommand
if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean()) if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean())
{ {
Discord.syncRoles(admin, plugin.pl.getData(admin.getUniqueId()).getDiscordID()); Discord.syncRoles(admin, plugin.pl.getData(admin.getName()).getDiscordID());
} }
plugin.ptero.updateAccountStatus(admin); plugin.ptero.updateAccountStatus(admin);

View File

@ -1,97 +0,0 @@
package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.rank.Rank;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.ClickEvent;
import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.chat.TranslatableComponent;
import net.md_5.bungee.api.chat.hover.content.Text;
import org.bukkit.ChatColor;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.ArrayList;
import java.util.List;
@CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH)
@CommandParameters(description = "Get the seed of the world you are currently in.", usage = "/seed [world]")
public class Command_seed extends FreedomCommand
{
@Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
World world;
if (args.length > 0)
{
world = server.getWorld(args[0]);
if (world == null)
{
msg("That world could not be found", ChatColor.RED);
return true;
}
}
else
{
// If the sender is a Player, use that world. Otherwise, use the overworld as a fallback.
if (!senderIsConsole)
{
world = playerSender.getWorld();
}
else
{
world = server.getWorlds().get(0);
}
}
// If the sender is not a Player, use the usual msg method to
if (senderIsConsole)
{
msg("Seed: [" + ChatColor.GREEN + world.getSeed() + ChatColor.WHITE + "]", ChatColor.WHITE);
}
else
{
// Gets the seed for later uses
String seed = String.valueOf(world.getSeed());
// This is a really stupid hack to get things to play nicely, but it works so I don't give a damn
BaseComponent[] components = {new TranslatableComponent("chat.copy.click")};
TextComponent seedAsComponent = new TextComponent(seed);
// Style the message like in vanilla Minecraft.
seedAsComponent.setColor(ChatColor.GREEN.asBungee());
seedAsComponent.setClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, seed));
seedAsComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text(components)));
// Enclose the seed with brackets
TextComponent seedString = new TextComponent("[");
seedString.addExtra(seedAsComponent);
seedString.addExtra("]");
// Send the message to the player.
TranslatableComponent response = new TranslatableComponent("commands.seed.success", seedString);
playerSender.spigot().sendMessage(response);
}
return true;
}
@Override
public List<String> getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args)
{
if (args.length == 1)
{
// Returns a list of worlds on the server and returns it
List<String> worlds = new ArrayList<>();
for (World world : server.getWorlds())
{
worlds.add(world.getName());
}
return worlds;
}
return null;
}
}

View File

@ -3,7 +3,6 @@ package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.player.PlayerData;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -39,7 +38,7 @@ public class Command_settotalvotes extends FreedomCommand
return true; return true;
} }
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[1])); PlayerData playerData = plugin.pl.getData(args[1]);
if (playerData == null) if (playerData == null)
{ {

View File

@ -105,11 +105,6 @@ public class Command_tag extends FreedomCommand
} }
return true; return true;
} }
default:
{
return false;
}
} }
} }
else if (args.length >= 2) else if (args.length >= 2)
@ -284,11 +279,6 @@ public class Command_tag extends FreedomCommand
msg("Tag set to '" + outputTag + ChatColor.GRAY + "'." + (save ? " (Saved)" : "") + from + to); msg("Tag set to '" + outputTag + ChatColor.GRAY + "'." + (save ? " (Saved)" : "") + from + to);
return true; return true;
} }
default:
{
return false;
}
} }
} }
return false; return false;

View File

@ -46,7 +46,7 @@ public class Command_tban extends FreedomCommand
final PlayerData entry; final PlayerData entry;
if (player == null) if (player == null)
{ {
entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0])); entry = plugin.pl.getData(args[0]);
if (entry == null) if (entry == null)
{ {

View File

@ -53,7 +53,7 @@ public class Command_tempban extends FreedomCommand
final PlayerData entry; final PlayerData entry;
if (player == null) if (player == null)
{ {
entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0])); entry = plugin.pl.getData(args[0]);
if (entry == null) if (entry == null)
{ {

View File

@ -16,12 +16,6 @@ import org.bukkit.entity.Player;
@CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/<command> [option] [value] [value]") @CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/<command> [option] [value] [value]")
public class Command_toggle extends FreedomCommand public class Command_toggle extends FreedomCommand
{ {
private final List<String> toggles = Arrays.asList(
"waterplace", "fireplace", "lavaplace", "fluidspread", "lavadmg", "firespread", "frostwalk",
"firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke [range] [count]",
"explosives [radius]", "unsafeenchs", "bells", "armorstands", "structureblocks", "jigsaws", "grindstones",
"jukeboxes", "spawners", "4chan", "beehives", "respawnanchors", "autotp", "autoclear", "minecarts", "mp44",
"landmines", "tossmob", "gravity");
@Override @Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
@ -29,10 +23,38 @@ public class Command_toggle extends FreedomCommand
if (args.length == 0) if (args.length == 0)
{ {
msg("Available toggles: "); msg("Available toggles: ");
for (String toggle : toggles) msg("- waterplace");
{ msg("- fireplace");
msg("- " + toggle); msg("- lavaplace");
} msg("- fluidspread");
msg("- lavadmg");
msg("- firespread");
msg("- frostwalk");
msg("- firework");
msg("- prelog");
msg("- lockdown");
msg("- petprotect");
msg("- entitywipe");
msg("- nonuke [range] [count]");
msg("- explosives [radius]");
msg("- unsafeenchs");
msg("- bells");
msg("- armorstands");
msg("- structureblocks");
msg("- jigsaws");
msg("- grindstones");
msg("- jukeboxes");
msg("- spawners");
msg("- 4chan");
msg("- beehives");
msg("- respawnanchors");
msg("- autotp");
msg("- autoclear");
msg("- minecarts");
msg("- landmines");
msg("- mp44");
msg("- tossmob");
msg("- gravity");
return false; return false;
} }
@ -282,16 +304,6 @@ public class Command_toggle extends FreedomCommand
toggle("Block gravity is", ConfigEntry.ALLOW_GRAVITY); toggle("Block gravity is", ConfigEntry.ALLOW_GRAVITY);
break; break;
} }
default:
{
msg("Available toggles: ");
for (String toggle : toggles)
{
msg("- " + toggle);
}
return false;
}
} }
return true; return true;
} }

View File

@ -22,7 +22,7 @@ public class Command_unban extends FreedomCommand
if (args.length > 0) if (args.length > 0)
{ {
String username; String username;
final PlayerData entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0])); final PlayerData entry = plugin.pl.getData(args[0]);
if (entry == null) if (entry == null)
{ {

View File

@ -2,7 +2,6 @@ package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.player.PlayerData; import me.totalfreedom.totalfreedommod.player.PlayerData;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@ -24,7 +23,7 @@ public class Command_unlinkdiscord extends FreedomCommand
if (args.length != 0 && plugin.al.isAdmin(playerSender)) if (args.length != 0 && plugin.al.isAdmin(playerSender))
{ {
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[0])); PlayerData playerData = plugin.pl.getData(args[0]);
if (playerData == null) if (playerData == null)
{ {
msg(PLAYER_NOT_FOUND); msg(PLAYER_NOT_FOUND);

View File

@ -1,9 +1,6 @@
package me.totalfreedom.totalfreedommod.command; package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.punishments.Punishment;
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
import me.totalfreedom.totalfreedommod.rank.Rank; import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.apache.commons.lang.ArrayUtils; import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
@ -56,28 +53,25 @@ public class Command_warn extends FreedomCommand
String warnReason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " "); String warnReason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
player.sendTitle(ChatColor.RED + "You've been warned.", ChatColor.YELLOW + "Reason: " + warnReason, 20, 100, 60); player.sendTitle(ChatColor.RED + "You've been warned.", ChatColor.YELLOW + "Reason: " + warnReason, 20, 100, 60);
msg(player, ChatColor.RED + "[WARNING] You received a warning from " + sender.getName() + ": " + warnReason); msg(ChatColor.GREEN + "You have successfully warned " + player.getName());
plugin.pl.getPlayer(player).incrementWarnings(quiet);
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.WARN, warnReason));
if (quiet) if (quiet)
{ {
msg("You have successfully warned " + player.getName() + " quietly."); msg("Warned " + player.getName() + " quietly");
return true;
} }
else
{
String adminNotice = ChatColor.RED +
sender.getName() +
" - " +
"Warning: " +
player.getName() +
" - Reason: " +
ChatColor.YELLOW +
warnReason;
plugin.al.messageAllAdmins(adminNotice);
msg("You have successfully warned " + player.getName() + "."); msg(player, ChatColor.RED + "[WARNING] You received a warning from " + sender.getName() + ": " + warnReason);
} String adminNotice = ChatColor.RED +
sender.getName() +
" - " +
"Warning: " +
player.getName() +
" - Reason: " +
ChatColor.YELLOW +
warnReason;
plugin.al.messageAllAdmins(adminNotice);
plugin.pl.getPlayer(player).incrementWarnings();
return true; return true;
} }
} }

View File

@ -22,46 +22,47 @@ public class DiscordToMinecraftListener extends ListenerAdapter
public void onMessageReceived(MessageReceivedEvent event) public void onMessageReceived(MessageReceivedEvent event)
{ {
String chat_channel_id = ConfigEntry.DISCORD_CHAT_CHANNEL_ID.getString(); String chat_channel_id = ConfigEntry.DISCORD_CHAT_CHANNEL_ID.getString();
if (event.getMember() != null && !chat_channel_id.isEmpty() && event.getChannel().getId().equals(chat_channel_id)) if (event.getMember() != null && !chat_channel_id.isEmpty()
&& event.getChannel().getId().equals(chat_channel_id)
&& !event.getAuthor().getId().equals(Discord.bot.getSelfUser().getId()))
{ {
if (!event.getAuthor().getId().equals(Discord.bot.getSelfUser().getId())) Member member = event.getMember();
String tag = getDisplay(member);
StringBuilder message = new StringBuilder(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_AQUA + "Discord"
+ ChatColor.DARK_GRAY + "]");
Message msg = event.getMessage();
if (tag != null)
{ {
Member member = event.getMember(); message.append(" ").append(tag);
String tag = getDisplay(member);
StringBuilder message = new StringBuilder(ChatColor.DARK_GRAY + "[" + ChatColor.DARK_AQUA + "Discord" + ChatColor.DARK_GRAY + "]");
Message msg = event.getMessage();
if (tag != null)
{
message.append(" ").append(tag);
}
message.append(" ").append(ChatColor.RED).append(ChatColor.stripColor(member.getEffectiveName())).append(ChatColor.DARK_GRAY).append(":").append(ChatColor.RESET);
ComponentBuilder builder = new ComponentBuilder(message.toString());
if (!msg.getContentDisplay().isEmpty())
{
builder.append(" ").append(ChatColor.stripColor(msg.getContentDisplay()));
message.append(" ").append(ChatColor.stripColor(msg.getContentDisplay())); // for logging
}
if (!msg.getAttachments().isEmpty())
{
for (Message.Attachment attachment : msg.getAttachments())
{
attachment.getUrl();
builder.append(" ");
TextComponent text = new TextComponent(ChatColor.YELLOW + "[Media]");
text.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, attachment.getUrl()));
builder.append(text);
message.append(" [Media]"); // for logging
}
}
for (Player player : Bukkit.getOnlinePlayers())
{
if (TotalFreedomMod.getPlugin().pl.getData(player).doesDisplayDiscord())
{
player.spigot().sendMessage(builder.create());
}
}
FLog.info(message.toString());
} }
message.append(" ").append(ChatColor.RED).append(ChatColor.stripColor(member.getEffectiveName()))
.append(ChatColor.DARK_GRAY).append(":").append(ChatColor.RESET);
ComponentBuilder builder = new ComponentBuilder(message.toString());
if (!msg.getContentDisplay().isEmpty())
{
builder.append(" ").append(ChatColor.stripColor(msg.getContentDisplay()));
message.append(" ").append(ChatColor.stripColor(msg.getContentDisplay())); // for logging
}
if (!msg.getAttachments().isEmpty())
{
for (Message.Attachment attachment : msg.getAttachments())
{
attachment.getUrl();
builder.append(" ");
TextComponent text = new TextComponent(ChatColor.YELLOW + "[Media]");
text.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, attachment.getUrl()));
builder.append(text);
message.append(" [Media]"); // for logging
}
}
for (Player player : Bukkit.getOnlinePlayers())
{
if (TotalFreedomMod.getPlugin().pl.getData(player).doesDisplayDiscord())
{
player.spigot().sendMessage(builder.create());
}
}
FLog.info(message.toString());
} }
} }

View File

@ -24,7 +24,7 @@ public class PrivateMessageListener extends ListenerAdapter
player.setDiscordID(event.getMessage().getAuthor().getId()); player.setDiscordID(event.getMessage().getAuthor().getId());
player.setVerification(true); player.setVerification(true);
Admin admin = TotalFreedomMod.getPlugin().al.getEntryByUUID(player.getUniqueId()); Admin admin = TotalFreedomMod.getPlugin().al.getEntryByName(name);
if (admin != null) if (admin != null)
{ {
Discord.syncRoles(admin, player.getDiscordID()); Discord.syncRoles(admin, player.getDiscordID());

View File

@ -128,7 +128,7 @@ public class ItemFun extends FreedomService
LivingEntity livingEntity = (LivingEntity)event.getRightClicked(); LivingEntity livingEntity = (LivingEntity)event.getRightClicked();
EntityType entityType = livingEntity.getType(); EntityType entityType = livingEntity.getType();
if (entityType != fPlayer.mobThrowerCreature()) if (!(entityType == fPlayer.mobThrowerCreature()))
{ {
return; return;
} }
@ -304,11 +304,6 @@ public class ItemFun extends FreedomService
} }
break; break;
} }
default:
{
// Do nothing
break;
}
} }
} }

View File

@ -73,7 +73,7 @@ public class Landminer extends FreedomService
continue; continue;
} }
if (player.getLocation().distanceSquared(location) > (landmine.radius * landmine.radius)) if (!(player.getLocation().distanceSquared(location) <= (landmine.radius * landmine.radius)))
{ {
break; break;
} }

View File

@ -79,20 +79,11 @@ public class Module_list extends HTTPDModule
switch (admin.getRank()) switch (admin.getRank())
{ {
case ADMIN: case ADMIN:
{
admins.add(player.getName()); admins.add(player.getName());
break; break;
}
case SENIOR_ADMIN: case SENIOR_ADMIN:
{
senioradmins.add(player.getName()); senioradmins.add(player.getName());
break; break;
}
default:
{
// Do nothing
break;
}
} }
} }
} }

View File

@ -51,20 +51,11 @@ public class Module_players extends HTTPDModule
switch (admin.getRank()) switch (admin.getRank())
{ {
case ADMIN: case ADMIN:
{
admins.add(username); admins.add(username);
break; break;
}
case SENIOR_ADMIN: case SENIOR_ADMIN:
{
senioradmins.add(username); senioradmins.add(username);
break; break;
}
default:
{
// Do nothing
break;
}
} }
} }

View File

@ -1,5 +1,7 @@
package me.totalfreedom.totalfreedommod.player; package me.totalfreedom.totalfreedommod.player;
import java.util.ArrayList;
import java.util.List;
import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import me.totalfreedom.totalfreedommod.caging.CageData; import me.totalfreedom.totalfreedommod.caging.CageData;
import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.config.ConfigEntry;
@ -14,24 +16,21 @@ import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask; import org.bukkit.scheduler.BukkitTask;
import java.util.ArrayList; public class FPlayer
import java.util.List; {
import java.util.UUID;
public class FPlayer {
public static final long AUTO_PURGE_TICKS = 5L * 60L * 20L; public static final long AUTO_PURGE_TICKS = 5L * 60L * 20L;
private final TotalFreedomMod plugin; private final TotalFreedomMod plugin;
private final UUID uuid; private final String name;
private final String ip;
// //
private final FreezeData freezeData = new FreezeData(this); private final FreezeData freezeData = new FreezeData(this);
private final CageData cageData = new CageData(this); private final CageData cageData = new CageData(this);
private final List<LivingEntity> mobThrowerQueue = new ArrayList<>(); private final List<LivingEntity> mobThrowerQueue = new ArrayList<>();
private Player player; private Player player;
private PlayerData playerData;
// //
private BukkitTask unmuteTask; private BukkitTask unmuteTask;
private double fuckoffRadius = 0; private double fuckoffRadius = 0;
@ -70,520 +69,643 @@ public class FPlayer {
private boolean invSee = false; private boolean invSee = false;
public FPlayer(TotalFreedomMod plugin, Player player)
public FPlayer(TotalFreedomMod plugin, Player player) { {
this(plugin, player.getUniqueId()); this(plugin, player.getName(), FUtil.getIp(player));
} }
private FPlayer(TotalFreedomMod plugin, UUID uuid) { private FPlayer(TotalFreedomMod plugin, String name, String ip)
{
this.plugin = plugin; this.plugin = plugin;
this.uuid = uuid; this.name = name;
this.ip = ip;
} }
public static long getAutoPurgeTicks() { public static long getAutoPurgeTicks()
{
return AUTO_PURGE_TICKS; return AUTO_PURGE_TICKS;
} }
public Player getPlayer() { public Player getPlayer()
if (this.player == null) { {
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { if (player != null && !player.isOnline())
if (onlinePlayer.getUniqueId().equals(this.uuid)) { {
this.player = onlinePlayer; player = null;
}
if (player == null)
{
for (Player onlinePlayer : Bukkit.getOnlinePlayers())
{
if (FUtil.getIp(onlinePlayer).equals(ip))
{
player = onlinePlayer;
break;
} }
} }
} }
return this.player; return player;
} }
public void setPlayer(Player player) { public void setPlayer(Player player)
{
this.player = player; this.player = player;
} }
public boolean isOrbiting() { public boolean isOrbiting()
{
return isOrbiting; return isOrbiting;
} }
public void setOrbiting(boolean orbiting) { public void setOrbiting(boolean orbiting)
{
isOrbiting = orbiting; isOrbiting = orbiting;
} }
public void startOrbiting(double strength) { public void startOrbiting(double strength)
{
this.isOrbiting = true; this.isOrbiting = true;
this.orbitStrength = strength; this.orbitStrength = strength;
} }
public void stopOrbiting() { public void stopOrbiting()
{
this.isOrbiting = false; this.isOrbiting = false;
} }
public double orbitStrength() { public double orbitStrength()
{
return orbitStrength; return orbitStrength;
} }
public boolean isFuckOff() { public boolean isFuckOff()
{
return fuckoffRadius > 0; return fuckoffRadius > 0;
} }
public void setFuckoff(double radius) { public void setFuckoff(double radius)
{
this.fuckoffRadius = radius; this.fuckoffRadius = radius;
} }
public void disableFuckoff() { public void disableFuckoff()
{
this.fuckoffRadius = 0; this.fuckoffRadius = 0;
} }
public void resetMsgCount() { public void resetMsgCount()
{
this.messageCount = 0; this.messageCount = 0;
} }
public int incrementAndGetMsgCount() { public int incrementAndGetMsgCount()
{
return this.messageCount++; return this.messageCount++;
} }
public int incrementAndGetBlockDestroyCount() { public int incrementAndGetBlockDestroyCount()
{
return this.totalBlockDestroy++; return this.totalBlockDestroy++;
} }
public void resetBlockDestroyCount() { public void resetBlockDestroyCount()
{
this.totalBlockDestroy = 0; this.totalBlockDestroy = 0;
} }
public int incrementAndGetBlockPlaceCount() { public int incrementAndGetBlockPlaceCount()
{
return this.totalBlockPlace++; return this.totalBlockPlace++;
} }
public void resetBlockPlaceCount() { public void resetBlockPlaceCount()
{
this.totalBlockPlace = 0; this.totalBlockPlace = 0;
} }
public int incrementAndGetFreecamDestroyCount() { public int incrementAndGetFreecamDestroyCount()
{
return this.freecamDestroyCount++; return this.freecamDestroyCount++;
} }
public void resetFreecamDestroyCount() { public void resetFreecamDestroyCount()
{
this.freecamDestroyCount = 0; this.freecamDestroyCount = 0;
} }
public int incrementAndGetFreecamPlaceCount() { public int incrementAndGetFreecamPlaceCount()
{
return this.freecamPlaceCount++; return this.freecamPlaceCount++;
} }
public void resetFreecamPlaceCount() { public void resetFreecamPlaceCount()
{
this.freecamPlaceCount = 0; this.freecamPlaceCount = 0;
} }
public void enableMobThrower(EntityType mobThrowerCreature, double mobThrowerSpeed) { public void enableMobThrower(EntityType mobThrowerCreature, double mobThrowerSpeed)
{
this.mobThrowerEnabled = true; this.mobThrowerEnabled = true;
this.mobThrowerEntity = mobThrowerCreature; this.mobThrowerEntity = mobThrowerCreature;
this.mobThrowerSpeed = mobThrowerSpeed; this.mobThrowerSpeed = mobThrowerSpeed;
} }
public void disableMobThrower() { public void disableMobThrower()
{
this.mobThrowerEnabled = false; this.mobThrowerEnabled = false;
} }
public EntityType mobThrowerCreature() { public EntityType mobThrowerCreature()
{
return this.mobThrowerEntity; return this.mobThrowerEntity;
} }
public double mobThrowerSpeed() { public double mobThrowerSpeed()
{
return this.mobThrowerSpeed; return this.mobThrowerSpeed;
} }
public boolean mobThrowerEnabled() { public boolean mobThrowerEnabled()
{
return this.mobThrowerEnabled; return this.mobThrowerEnabled;
} }
public void enqueueMob(LivingEntity mob) { public void enqueueMob(LivingEntity mob)
{
mobThrowerQueue.add(mob); mobThrowerQueue.add(mob);
if (mobThrowerQueue.size() > 4) { if (mobThrowerQueue.size() > 4)
{
LivingEntity oldmob = mobThrowerQueue.remove(0); LivingEntity oldmob = mobThrowerQueue.remove(0);
if (oldmob != null) { if (oldmob != null)
{
oldmob.damage(500.0); oldmob.damage(500.0);
} }
} }
} }
public void startArrowShooter(TotalFreedomMod plugin) { public void startArrowShooter(TotalFreedomMod plugin)
{
this.stopArrowShooter(); this.stopArrowShooter();
this.mp44ScheduleTask = new ArrowShooter(getPlayer()).runTaskTimer(plugin, 1L, 1L); this.mp44ScheduleTask = new ArrowShooter(this.player).runTaskTimer(plugin, 1L, 1L);
this.mp44Firing = true; this.mp44Firing = true;
} }
public void stopArrowShooter() { public void stopArrowShooter()
if (this.mp44ScheduleTask != null) { {
if (this.mp44ScheduleTask != null)
{
this.mp44ScheduleTask.cancel(); this.mp44ScheduleTask.cancel();
this.mp44ScheduleTask = null; this.mp44ScheduleTask = null;
} }
this.mp44Firing = false; this.mp44Firing = false;
} }
public void armMP44() { public void armMP44()
{
this.mp44Armed = true; this.mp44Armed = true;
this.stopArrowShooter(); this.stopArrowShooter();
} }
public void disarmMP44() { public void disarmMP44()
{
this.mp44Armed = false; this.mp44Armed = false;
this.stopArrowShooter(); this.stopArrowShooter();
} }
public boolean isMP44Armed() { public boolean isMP44Armed()
{
return this.mp44Armed; return this.mp44Armed;
} }
public boolean toggleMP44Firing() { public boolean toggleMP44Firing()
{
this.mp44Firing = !this.mp44Firing; this.mp44Firing = !this.mp44Firing;
return mp44Firing; return mp44Firing;
} }
public boolean isMuted() { public boolean isMuted()
{
return unmuteTask != null; return unmuteTask != null;
} }
public void setMuted(boolean muted, int minutes) { public void setMuted(boolean muted, int minutes)
{
FUtil.cancel(unmuteTask); FUtil.cancel(unmuteTask);
plugin.mu.MUTED_PLAYERS.remove(getPlayer().getUniqueId()); plugin.mu.MUTED_PLAYERS.remove(getPlayer().getName());
unmuteTask = null; unmuteTask = null;
if (!muted) { if (!muted)
{
return; return;
} }
if (getPlayer() == null) { if (getPlayer() == null)
{
return; return;
} }
plugin.mu.MUTED_PLAYERS.add(getPlayer().getUniqueId()); plugin.mu.MUTED_PLAYERS.add(getPlayer().getName());
// TODO: Simplify this into a Consumer<BukkitTask> lambda? // TODO: Simplify this into a Consumer<BukkitTask> lambda?
unmuteTask = new BukkitRunnable() { unmuteTask = new BukkitRunnable()
{
@Override @Override
public void run() { public void run()
if (getPlayer() != null) { {
if (getPlayer() != null)
{
FUtil.adminAction(ConfigEntry.SERVER_NAME.getString(), "Unmuting " + getPlayer().getName(), false); FUtil.adminAction(ConfigEntry.SERVER_NAME.getString(), "Unmuting " + getPlayer().getName(), false);
setMuted(false); setMuted(false);
} else { }
FUtil.adminAction(ConfigEntry.SERVER_NAME.getString(), "Unmuting " + Bukkit.getOfflinePlayer(uuid).getName(), false); else
plugin.mu.MUTED_PLAYERS.remove(uuid); {
FUtil.adminAction(ConfigEntry.SERVER_NAME.getString(), "Unmuting " + getName(), false);
plugin.mu.MUTED_PLAYERS.remove(getName());
} }
} }
}.runTaskLater(plugin, minutes * (60L * 20L)); }.runTaskLater(plugin, minutes * (60L * 20L));
} }
public void setMuted(boolean muted) { public void setMuted(boolean muted)
{
setMuted(muted, 5); setMuted(muted, 5);
} }
public BukkitTask getLockupScheduleID() { public BukkitTask getLockupScheduleID()
{
return this.lockupScheduleTask; return this.lockupScheduleTask;
} }
public void setLockupScheduleId(BukkitTask id) { public void setLockupScheduleId(BukkitTask id)
{
this.lockupScheduleTask = id; this.lockupScheduleTask = id;
} }
public boolean isLockedUp() { public boolean isLockedUp()
{
return this.lockedUp; return this.lockedUp;
} }
public void setLockedUp(boolean lockedUp) { public void setLockedUp(boolean lockedUp)
{
this.lockedUp = lockedUp; this.lockedUp = lockedUp;
} }
public String getLastMessage() { public String getLastMessage()
{
return lastMessage; return lastMessage;
} }
public void setLastMessage(String message) { public void setLastMessage(String message)
{
this.lastMessage = message; this.lastMessage = message;
} }
public void setAdminChat(boolean inAdminchat) { public void setAdminChat(boolean inAdminchat)
{
this.inAdminchat = inAdminchat; this.inAdminchat = inAdminchat;
} }
public boolean inAdminChat() { public boolean inAdminChat()
{
return this.inAdminchat; return this.inAdminchat;
} }
public boolean allCommandsBlocked() { public boolean allCommandsBlocked()
{
return this.allCommandsBlocked; return this.allCommandsBlocked;
} }
public void setCommandsBlocked(boolean commandsBlocked) { public void setCommandsBlocked(boolean commandsBlocked)
{
this.allCommandsBlocked = commandsBlocked; this.allCommandsBlocked = commandsBlocked;
} }
public String getLastCommand() { public String getLastCommand()
{
return lastCommand; return lastCommand;
} }
public void setLastCommand(String lastCommand) { public void setLastCommand(String lastCommand)
{
this.lastCommand = lastCommand; this.lastCommand = lastCommand;
} }
public void setCommandSpy(boolean enabled) { public void setCommandSpy(boolean enabled)
{
this.cmdspyEnabled = enabled; this.cmdspyEnabled = enabled;
} }
public boolean cmdspyEnabled() { public boolean cmdspyEnabled()
{
return cmdspyEnabled; return cmdspyEnabled;
} }
public String getTag() { public String getTag()
{
return this.tag; return this.tag;
} }
public void setTag(String tag) { public void setTag(String tag)
if (tag == null) { {
if (tag == null)
{
this.tag = null; this.tag = null;
} else { }
else
{
this.tag = FUtil.colorize(tag) + ChatColor.WHITE; this.tag = FUtil.colorize(tag) + ChatColor.WHITE;
} }
} }
public int getWarningCount() { public int getWarningCount()
{
return this.warningCount; return this.warningCount;
} }
public void setWarningCount(int warningCount) { public void setWarningCount(int warningCount)
{
this.warningCount = warningCount; this.warningCount = warningCount;
} }
public void incrementWarnings(boolean quiet) { public void incrementWarnings()
{
this.warningCount++; this.warningCount++;
if (this.warningCount % 2 == 0) { if (this.warningCount % 2 == 0)
{
Player p = getPlayer(); Player p = getPlayer();
p.getWorld().strikeLightning(p.getLocation());
if (!quiet) {
p.getWorld().strikeLightning(p.getLocation());
}
FUtil.playerMsg(p, ChatColor.RED + "You have been warned at least twice now, make sure to read the rules at " + ConfigEntry.SERVER_BAN_URL.getString()); FUtil.playerMsg(p, ChatColor.RED + "You have been warned at least twice now, make sure to read the rules at " + ConfigEntry.SERVER_BAN_URL.getString());
} }
} }
public TotalFreedomMod getPlugin() { public TotalFreedomMod getPlugin()
{
return plugin; return plugin;
} }
public UUID getUniqueId() { public String getName()
return uuid; {
return name;
} }
public PlayerData getPlayerData() { public String getIp()
return playerData; {
return ip;
} }
public BukkitTask getUnmuteTask() { public BukkitTask getUnmuteTask()
{
return unmuteTask; return unmuteTask;
} }
public void setUnmuteTask(BukkitTask unmuteTask) { public void setUnmuteTask(BukkitTask unmuteTask)
{
this.unmuteTask = unmuteTask; this.unmuteTask = unmuteTask;
} }
public FreezeData getFreezeData() { public FreezeData getFreezeData()
{
return freezeData; return freezeData;
} }
public double getFuckoffRadius() { public double getFuckoffRadius()
{
return fuckoffRadius; return fuckoffRadius;
} }
public void setFuckoffRadius(double fuckoffRadius) { public void setFuckoffRadius(double fuckoffRadius)
{
this.fuckoffRadius = fuckoffRadius; this.fuckoffRadius = fuckoffRadius;
} }
public int getMessageCount() { public int getMessageCount()
{
return messageCount; return messageCount;
} }
public void setMessageCount(int messageCount) { public void setMessageCount(int messageCount)
{
this.messageCount = messageCount; this.messageCount = messageCount;
} }
public int getTotalBlockDestroy() { public int getTotalBlockDestroy()
{
return totalBlockDestroy; return totalBlockDestroy;
} }
public void setTotalBlockDestroy(int totalBlockDestroy) { public void setTotalBlockDestroy(int totalBlockDestroy)
{
this.totalBlockDestroy = totalBlockDestroy; this.totalBlockDestroy = totalBlockDestroy;
} }
public int getTotalBlockPlace() { public int getTotalBlockPlace()
{
return totalBlockPlace; return totalBlockPlace;
} }
public void setTotalBlockPlace(int totalBlockPlace) { public void setTotalBlockPlace(int totalBlockPlace)
{
this.totalBlockPlace = totalBlockPlace; this.totalBlockPlace = totalBlockPlace;
} }
public int getFreecamDestroyCount() { public int getFreecamDestroyCount()
{
return freecamDestroyCount; return freecamDestroyCount;
} }
public void setFreecamDestroyCount(int freecamDestroyCount) { public void setFreecamDestroyCount(int freecamDestroyCount)
{
this.freecamDestroyCount = freecamDestroyCount; this.freecamDestroyCount = freecamDestroyCount;
} }
public int getFreecamPlaceCount() { public int getFreecamPlaceCount()
{
return freecamPlaceCount; return freecamPlaceCount;
} }
public void setFreecamPlaceCount(int freecamPlaceCount) { public void setFreecamPlaceCount(int freecamPlaceCount)
{
this.freecamPlaceCount = freecamPlaceCount; this.freecamPlaceCount = freecamPlaceCount;
} }
public CageData getCageData() { public CageData getCageData()
{
return cageData; return cageData;
} }
public double getOrbitStrength() { public double getOrbitStrength()
{
return orbitStrength; return orbitStrength;
} }
public void setOrbitStrength(double orbitStrength) { public void setOrbitStrength(double orbitStrength)
{
this.orbitStrength = orbitStrength; this.orbitStrength = orbitStrength;
} }
public boolean isMobThrowerEnabled() { public boolean isMobThrowerEnabled()
{
return mobThrowerEnabled; return mobThrowerEnabled;
} }
public void setMobThrowerEnabled(boolean mobThrowerEnabled) { public void setMobThrowerEnabled(boolean mobThrowerEnabled)
{
this.mobThrowerEnabled = mobThrowerEnabled; this.mobThrowerEnabled = mobThrowerEnabled;
} }
public EntityType getMobThrowerEntity() { public EntityType getMobThrowerEntity()
{
return mobThrowerEntity; return mobThrowerEntity;
} }
public void setMobThrowerEntity(EntityType mobThrowerEntity) { public void setMobThrowerEntity(EntityType mobThrowerEntity)
{
this.mobThrowerEntity = mobThrowerEntity; this.mobThrowerEntity = mobThrowerEntity;
} }
public double getMobThrowerSpeed() { public double getMobThrowerSpeed()
{
return mobThrowerSpeed; return mobThrowerSpeed;
} }
public void setPlayerData(PlayerData playerData) { public void setMobThrowerSpeed(double mobThrowerSpeed)
this.playerData = playerData; {
}
public void setMobThrowerSpeed(double mobThrowerSpeed) {
this.mobThrowerSpeed = mobThrowerSpeed; this.mobThrowerSpeed = mobThrowerSpeed;
} }
public List<LivingEntity> getMobThrowerQueue() { public List<LivingEntity> getMobThrowerQueue()
{
return mobThrowerQueue; return mobThrowerQueue;
} }
public BukkitTask getMp44ScheduleTask() { public BukkitTask getMp44ScheduleTask()
{
return mp44ScheduleTask; return mp44ScheduleTask;
} }
public void setMp44ScheduleTask(BukkitTask mp44ScheduleTask) { public void setMp44ScheduleTask(BukkitTask mp44ScheduleTask)
{
this.mp44ScheduleTask = mp44ScheduleTask; this.mp44ScheduleTask = mp44ScheduleTask;
} }
public boolean isMp44Armed() { public boolean isMp44Armed()
{
return mp44Armed; return mp44Armed;
} }
public void setMp44Armed(boolean mp44Armed) { public void setMp44Armed(boolean mp44Armed)
{
this.mp44Armed = mp44Armed; this.mp44Armed = mp44Armed;
} }
public boolean isMp44Firing() { public boolean isMp44Firing()
{
return mp44Firing; return mp44Firing;
} }
public void setMp44Firing(boolean mp44Firing) { public void setMp44Firing(boolean mp44Firing)
{
this.mp44Firing = mp44Firing; this.mp44Firing = mp44Firing;
} }
public BukkitTask getLockupScheduleTask() { public BukkitTask getLockupScheduleTask()
{
return lockupScheduleTask; return lockupScheduleTask;
} }
public void setLockupScheduleTask(BukkitTask lockupScheduleTask) { public void setLockupScheduleTask(BukkitTask lockupScheduleTask)
{
this.lockupScheduleTask = lockupScheduleTask; this.lockupScheduleTask = lockupScheduleTask;
} }
public boolean isInAdminchat() { public boolean isInAdminchat()
{
return inAdminchat; return inAdminchat;
} }
public void setInAdminchat(boolean inAdminchat) { public void setInAdminchat(boolean inAdminchat)
{
this.inAdminchat = inAdminchat; this.inAdminchat = inAdminchat;
} }
public boolean isAllCommandsBlocked() { public boolean isAllCommandsBlocked()
{
return allCommandsBlocked; return allCommandsBlocked;
} }
public void setAllCommandsBlocked(boolean allCommandsBlocked) { public void setAllCommandsBlocked(boolean allCommandsBlocked)
{
this.allCommandsBlocked = allCommandsBlocked; this.allCommandsBlocked = allCommandsBlocked;
} }
public boolean isSuperadminIdVerified() { public boolean isSuperadminIdVerified()
{
return superadminIdVerified; return superadminIdVerified;
} }
public void setSuperadminIdVerified(boolean superadminIdVerified) { public void setSuperadminIdVerified(boolean superadminIdVerified)
{
this.superadminIdVerified = superadminIdVerified; this.superadminIdVerified = superadminIdVerified;
} }
public boolean isCmdspyEnabled() { public boolean isCmdspyEnabled()
{
return cmdspyEnabled; return cmdspyEnabled;
} }
public void setCmdspyEnabled(boolean cmdspyEnabled) { public void setCmdspyEnabled(boolean cmdspyEnabled)
{
this.cmdspyEnabled = cmdspyEnabled; this.cmdspyEnabled = cmdspyEnabled;
} }
public boolean isEditBlocked() { public boolean isEditBlocked()
{
return editBlocked; return editBlocked;
} }
public void setEditBlocked(boolean editBlocked) { public void setEditBlocked(boolean editBlocked)
{
this.editBlocked = editBlocked; this.editBlocked = editBlocked;
} }
public boolean isPvpBlocked() { public boolean isPvpBlocked()
{
return pvpBlocked; return pvpBlocked;
} }
public void setPvpBlocked(boolean pvpBlocked) { public void setPvpBlocked(boolean pvpBlocked)
{
this.pvpBlocked = pvpBlocked; this.pvpBlocked = pvpBlocked;
} }
public boolean isInvSee() { public boolean isInvSee()
{
return invSee; return invSee;
} }
public void setInvSee(boolean invSee) { public void setInvSee(boolean invSee)
{
this.invSee = invSee; this.invSee = invSee;
} }
private static class ArrowShooter extends BukkitRunnable { private static class ArrowShooter extends BukkitRunnable
{
private final Player player; private final Player player;
private ArrowShooter(Player player) { private ArrowShooter(Player player)
{
this.player = player; this.player = player;
} }
@Override @Override
public void run() { public void run()
if (player != null) { {
Arrow shot = player.launchProjectile(Arrow.class); Arrow shot = player.launchProjectile(Arrow.class);
shot.setVelocity(shot.getVelocity().multiply(2.0)); shot.setVelocity(shot.getVelocity().multiply(2.0));
}
} }
} }
} }

View File

@ -3,8 +3,10 @@ package me.totalfreedom.totalfreedommod.player;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.*; import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import me.totalfreedom.totalfreedommod.shop.ShopItem; import me.totalfreedom.totalfreedommod.shop.ShopItem;
import me.totalfreedom.totalfreedommod.util.FLog; import me.totalfreedom.totalfreedommod.util.FLog;
@ -18,7 +20,7 @@ public class PlayerData
private final List<String> ips = Lists.newArrayList(); private final List<String> ips = Lists.newArrayList();
private final List<String> notes = Lists.newArrayList(); private final List<String> notes = Lists.newArrayList();
private final List<String> backupCodes = Lists.newArrayList(); private final List<String> backupCodes = Lists.newArrayList();
private UUID uuid; private String name;
private String tag = null; private String tag = null;
private String discordID = null; private String discordID = null;
private Boolean masterBuilder = false; private Boolean masterBuilder = false;
@ -46,7 +48,7 @@ public class PlayerData
{ {
try try
{ {
uuid = UUID.fromString(resultSet.getString("uuid")); name = resultSet.getString("username");
ips.clear(); ips.clear();
ips.addAll(FUtil.stringToList(resultSet.getString("ips"))); ips.addAll(FUtil.stringToList(resultSet.getString("ips")));
notes.clear(); notes.clear();
@ -86,13 +88,14 @@ public class PlayerData
public PlayerData(Player player) public PlayerData(Player player)
{ {
this.uuid = player.getUniqueId(); this.name = player.getName();
} }
@Override @Override
public String toString() public String toString()
{ {
return "Player: " + uuid.toString() + "\n" +
return "Player: " + name + "\n" +
"- IPs: " + StringUtils.join(ips, ", ") + "\n" + "- IPs: " + StringUtils.join(ips, ", ") + "\n" +
"- Discord ID: " + discordID + "\n" + "- Discord ID: " + discordID + "\n" +
"- Master Builder: " + masterBuilder + "\n" + "- Master Builder: " + masterBuilder + "\n" +
@ -229,7 +232,7 @@ public class PlayerData
{ {
return new HashMap<String, Object>() return new HashMap<String, Object>()
{{ {{
put("uuid", uuid); put("username", name);
put("ips", FUtil.listToString(ips)); put("ips", FUtil.listToString(ips));
put("notes", FUtil.listToString(notes)); put("notes", FUtil.listToString(notes));
put("tag", tag); put("tag", tag);
@ -252,14 +255,14 @@ public class PlayerData
return displayDiscord; return displayDiscord;
} }
public UUID getUniqueId() public String getName()
{ {
return uuid; return name;
} }
public void setUniqueId(UUID uuid) public void setName(String name)
{ {
this.uuid = uuid; this.name = name;
} }
public String getTag() public String getTag()
@ -361,9 +364,4 @@ public class PlayerData
{ {
this.inspect = inspect; this.inspect = inspect;
} }
public String getName()
{
return FUtil.getNameFromUUID(uuid);
}
} }

View File

@ -3,9 +3,11 @@ package me.totalfreedom.totalfreedommod.player;
import com.google.common.collect.Maps; import com.google.common.collect.Maps;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.util.*; import java.util.ArrayList;
import java.util.stream.Collectors; import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.FreedomService;
import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.admin.Admin;
import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.config.ConfigEntry;
@ -18,12 +20,13 @@ import org.bukkit.entity.Player;
public class PlayerList extends FreedomService public class PlayerList extends FreedomService
{ {
public final Map<UUID, FPlayer> playerMap = Maps.newHashMap(); // uuid,dataMap public final Map<String, FPlayer> playerMap = Maps.newHashMap(); // ip,dataMap
//public final Map<String, PlayerData> dataMap = Maps.newHashMap(); // username, data public final Map<String, PlayerData> dataMap = Maps.newHashMap(); // username, data
@Override @Override
public void onStart() public void onStart()
{ {
dataMap.clear();
loadMasterBuilders(); loadMasterBuilders();
} }
@ -54,6 +57,7 @@ public class PlayerList extends FreedomService
while (resultSet.next()) while (resultSet.next())
{ {
PlayerData playerData = load(resultSet); PlayerData playerData = load(resultSet);
dataMap.put(playerData.getName(), playerData);
} }
} }
catch (SQLException e) catch (SQLException e)
@ -69,20 +73,27 @@ public class PlayerList extends FreedomService
return FUtil.getIp(Objects.requireNonNull(player.getPlayer())); return FUtil.getIp(Objects.requireNonNull(player.getPlayer()));
} }
final PlayerData entry = getData(player.getUniqueId()); final PlayerData entry = getData(player.getName());
return (entry == null ? null : entry.getIps().iterator().next()); return (entry == null ? null : entry.getIps().iterator().next());
} }
public List<String> getMasterBuilderNames() public List<String> getMasterBuilderNames()
{ {
return playerMap.values().stream().map(FPlayer::getPlayerData).filter(PlayerData::isMasterBuilder).map(p -> FUtil.getNameFromUUID(p.getUniqueId())).collect(Collectors.toList()); List<String> masterBuilders = new ArrayList<>();
for (PlayerData playerData : plugin.pl.dataMap.values())
{
if (playerData.isMasterBuilder())
{
masterBuilders.add(playerData.getName());
}
}
return masterBuilders;
} }
public boolean canManageMasterBuilders(UUID uuid) public boolean canManageMasterBuilders(String name)
{ {
PlayerData data = getData(uuid); PlayerData data = getData(name);
String name = FUtil.getNameFromUUID(uuid);
return (!ConfigEntry.HOST_SENDER_NAMES.getStringList().contains(name.toLowerCase()) && data != null && !ConfigEntry.SERVER_OWNERS.getStringList().contains(data.getName())) return (!ConfigEntry.HOST_SENDER_NAMES.getStringList().contains(name.toLowerCase()) && data != null && !ConfigEntry.SERVER_OWNERS.getStringList().contains(data.getName()))
&& !ConfigEntry.SERVER_EXECUTIVES.getStringList().contains(data.getName()) && !ConfigEntry.SERVER_EXECUTIVES.getStringList().contains(data.getName())
@ -92,41 +103,31 @@ public class PlayerList extends FreedomService
public boolean isTelnetMasterBuilder(PlayerData playerData) public boolean isTelnetMasterBuilder(PlayerData playerData)
{ {
Admin admin = plugin.al.getEntryByUUID(playerData.getUniqueId()); Admin admin = plugin.al.getEntryByName(playerData.getName());
return admin != null && admin.getRank().isAtLeast(Rank.ADMIN) && playerData.isMasterBuilder(); return admin != null && admin.getRank().isAtLeast(Rank.ADMIN) && playerData.isMasterBuilder();
} }
// May not return null // May not return null
public FPlayer getPlayer(Player player) public FPlayer getPlayer(Player player)
{ {
FPlayer tPlayer = playerMap.get(player.getUniqueId()); FPlayer tPlayer = playerMap.get(FUtil.getIp(player));
if (tPlayer != null) if (tPlayer != null)
{ {
return tPlayer; return tPlayer;
} }
tPlayer = new FPlayer(plugin, player); tPlayer = new FPlayer(plugin, player);
playerMap.put(player.getUniqueId(), tPlayer); playerMap.put(FUtil.getIp(player), tPlayer);
return tPlayer; return tPlayer;
} }
/*public PlayerData loadByName(String name) public PlayerData loadByName(String name)
{ {
return load(plugin.sql.getPlayerByName(name)); return load(plugin.sql.getPlayerByName(name));
} }
public PlayerData loadByIp(String ip) public PlayerData loadByIp(String ip)
{
return load(plugin.sql.getPlayerByIp(ip));
}*/
public PlayerData loadByUUID(UUID uuid)
{
return load(plugin.sql.getPlayerByUUID(uuid));
}
private PlayerData loadByIp(String ip)
{ {
return load(plugin.sql.getPlayerByIp(ip)); return load(plugin.sql.getPlayerByIp(ip));
} }
@ -167,7 +168,7 @@ public class PlayerList extends FreedomService
if (plugin.al.isAdminImpostor(player)) if (plugin.al.isAdminImpostor(player))
{ {
Admin admin = plugin.al.getEntryByUUID(player.getUniqueId()); Admin admin = plugin.al.getEntryByName(player.getName());
admin.setLastLogin(new Date()); admin.setLastLogin(new Date());
admin.addIp(FUtil.getIp(player)); admin.addIp(FUtil.getIp(player));
plugin.al.updateTables(); plugin.al.updateTables();
@ -179,7 +180,7 @@ public class PlayerList extends FreedomService
public void syncIps(Admin admin) public void syncIps(Admin admin)
{ {
PlayerData playerData = getData(admin.getUniqueId()); PlayerData playerData = getData(admin.getName());
playerData.clearIps(); playerData.clearIps();
playerData.addIps(admin.getIps()); playerData.addIps(admin.getIps());
plugin.pl.save(playerData); plugin.pl.save(playerData);
@ -187,7 +188,7 @@ public class PlayerList extends FreedomService
public void syncIps(PlayerData playerData) public void syncIps(PlayerData playerData)
{ {
Admin admin = plugin.al.getEntryByUUID(playerData.getUniqueId()); Admin admin = plugin.al.getEntryByName(playerData.getName());
if (admin != null && admin.isActive()) if (admin != null && admin.isActive())
{ {
@ -203,7 +204,7 @@ public class PlayerList extends FreedomService
{ {
try try
{ {
ResultSet currentSave = plugin.sql.getPlayerByUUID(player.getUniqueId()); ResultSet currentSave = plugin.sql.getPlayerByName(player.getName());
for (Map.Entry<String, Object> entry : player.toSQLStorable().entrySet()) for (Map.Entry<String, Object> entry : player.toSQLStorable().entrySet())
{ {
Object storedValue = plugin.sql.getValue(currentSave, entry.getKey(), entry.getValue()); Object storedValue = plugin.sql.getValue(currentSave, entry.getKey(), entry.getValue());
@ -222,32 +223,31 @@ public class PlayerList extends FreedomService
public PlayerData getData(Player player) public PlayerData getData(Player player)
{ {
// Check for existing data // Check for existing data
PlayerData playerData = playerMap.get(player.getUniqueId()).getPlayerData(); PlayerData playerData = dataMap.get(player.getName());
if (playerData != null) if (playerData != null)
{ {
return playerData; return playerData;
} }
// Load data // Load data
playerData = loadByUUID(player.getUniqueId()); playerData = loadByName(player.getName());
/*if (playerData == null) if (playerData == null)
{ {
playerData = loadByIp(FUtil.getIp(player)); playerData = loadByIp(FUtil.getIp(player));
if (playerData != null) if (playerData != null)
{ {
plugin.sql.updatePlayerName(playerData.getName(), player.getName()); plugin.sql.updatePlayerName(playerData.getName(), player.getName());
playerMap.get(player.getUniqueId()).setPlayerData(playerData); playerData.setName(player.getName());
dataMap.put(player.getName(), playerData);
return playerData; return playerData;
} }
} }
else else
{ {
playerMap.get(player.getUniqueId()).setPlayerData(playerData); dataMap.put(player.getName(), playerData);
return playerData; return playerData;
}*/ }
playerMap.get(player.getUniqueId()).setPlayerData(playerData);
// Create new data if nonexistent // Create new data if nonexistent
FLog.info("Creating new player verification entry for " + player.getName()); FLog.info("Creating new player verification entry for " + player.getName());
@ -257,7 +257,7 @@ public class PlayerList extends FreedomService
playerData.addIp(FUtil.getIp(player)); playerData.addIp(FUtil.getIp(player));
// Store player // Store player
playerMap.get(player.getUniqueId()).setPlayerData(playerData); dataMap.put(player.getName(), playerData);
// Save player // Save player
plugin.sql.addPlayer(playerData); plugin.sql.addPlayer(playerData);
@ -265,10 +265,8 @@ public class PlayerList extends FreedomService
} }
/*@Deprecated
public PlayerData getData(String username) public PlayerData getData(String username)
{ {
throw new UnsupportedOperationException();
// Check for existing data // Check for existing data
PlayerData playerData = dataMap.get(username); PlayerData playerData = dataMap.get(username);
if (playerData != null) if (playerData != null)
@ -287,58 +285,28 @@ public class PlayerList extends FreedomService
return null; return null;
} }
return playerData;
}*/
public PlayerData getData(UUID uuid)
{
PlayerData playerData = playerMap.get(uuid).getPlayerData();
if (playerData != null)
{
return playerData;
}
playerData = loadByUUID(uuid);
if (playerData != null)
{
playerMap.get(uuid).setPlayerData(playerData);
}
else
{
return null;
}
return playerData; return playerData;
} }
public PlayerData getDataByUUID(UUID uuid) public PlayerData getDataByIp(String ip)
{
PlayerData player = loadByUUID(uuid);
if (player != null)
{
playerMap.get(uuid).setPlayerData(player);
}
return player;
}
public PlayerData getDataByIp(String ip)
{ {
PlayerData player = loadByIp(ip); PlayerData player = loadByIp(ip);
if (player != null) if (player != null)
{ {
playerMap.get(player.getUniqueId()).setPlayerData(player); dataMap.put(player.getName(), player);
} }
return player; return player;
} }
public Map<UUID, FPlayer> getPlayerMap() public Map<String, FPlayer> getPlayerMap()
{ {
return playerMap; return playerMap;
} }
public Map<String, PlayerData> getDataMap()
{
return dataMap;
}
} }

View File

@ -7,11 +7,5 @@ public enum PunishmentType
KICK, KICK,
TEMPBAN, TEMPBAN,
BAN, BAN,
DOOM, DOOM
WARN,
CAGE,
BLOCKEDIT,
BLOCKPVP,
BLOCKCMD,
ORBIT
} }

View File

@ -117,7 +117,7 @@ public class RankManager extends FreedomService
} }
// Console admin, get by name // Console admin, get by name
Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(sender.getName())); Admin admin = plugin.al.getEntryByName(sender.getName());
// Unknown console: RCON? // Unknown console: RCON?
if (admin == null) if (admin == null)

View File

@ -37,7 +37,7 @@ public class Votifier extends FreedomService
} }
else else
{ {
data = plugin.pl.getData(FUtil.getUUIDFromName(name)); data = plugin.pl.getData(name);
} }
if (data != null) if (data != null)

View File

@ -7,8 +7,6 @@ import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.sql.SQLException; import java.sql.SQLException;
import java.text.MessageFormat; import java.text.MessageFormat;
import java.util.UUID;
import me.totalfreedom.totalfreedommod.FreedomService; import me.totalfreedom.totalfreedommod.FreedomService;
import me.totalfreedom.totalfreedommod.admin.Admin; import me.totalfreedom.totalfreedommod.admin.Admin;
import me.totalfreedom.totalfreedommod.banning.Ban; import me.totalfreedom.totalfreedommod.banning.Ban;
@ -72,7 +70,6 @@ public class SQLite extends FreedomService
{ {
try try
{ {
//TODO: move bans to uuid
connection.createStatement().execute("CREATE TABLE `bans` (`name` VARCHAR, `uuid` VARCHAR, `ips` VARCHAR, `by` VARCHAR NOT NULL, `at` LONG NOT NULL, `expires` LONG, `reason` VARCHAR);"); connection.createStatement().execute("CREATE TABLE `bans` (`name` VARCHAR, `uuid` VARCHAR, `ips` VARCHAR, `by` VARCHAR NOT NULL, `at` LONG NOT NULL, `expires` LONG, `reason` VARCHAR);");
} }
catch (SQLException e) catch (SQLException e)
@ -85,7 +82,7 @@ public class SQLite extends FreedomService
{ {
try try
{ {
connection.createStatement().execute("CREATE TABLE `admins` (`uuid` VARCHAR NOT NULL, `ips` VARCHAR NOT NULL, `rank` VARCHAR NOT NULL, `active` BOOLEAN NOT NULL, `last_login` LONG NOT NULL, `command_spy` BOOLEAN NOT NULL, `potion_spy` BOOLEAN NOT NULL, `ac_format` VARCHAR, `ptero_id` VARCHAR);"); connection.createStatement().execute("CREATE TABLE `admins` (`username` VARCHAR NOT NULL, `ips` VARCHAR NOT NULL, `rank` VARCHAR NOT NULL, `active` BOOLEAN NOT NULL, `last_login` LONG NOT NULL, `command_spy` BOOLEAN NOT NULL, `potion_spy` BOOLEAN NOT NULL, `ac_format` VARCHAR, `ptero_id` VARCHAR);");
} }
catch (SQLException e) catch (SQLException e)
{ {
@ -96,7 +93,7 @@ public class SQLite extends FreedomService
{ {
try try
{ {
connection.createStatement().execute("CREATE TABLE `players` (`uuid` VARCHAR NOT NULL, `ips` VARCHAR NOT NULL, `notes` VARCHAR, `tag` VARCHAR, `discord_id` VARCHAR, `backup_codes` VARCHAR, `master_builder` BOOLEAN NOT NULL,`verification` BOOLEAN NOT NULL, `ride_mode` VARCHAR NOT NULL, `coins` INT, `items` VARCHAR, `total_votes` INT NOT NULL, `display_discord` BOOLEAN NOT NULL, `login_message` VARCHAR, `inspect` BOOLEAN NOT NULL);"); connection.createStatement().execute("CREATE TABLE `players` (`username` VARCHAR NOT NULL, `ips` VARCHAR NOT NULL, `notes` VARCHAR, `tag` VARCHAR, `discord_id` VARCHAR, `backup_codes` VARCHAR, `master_builder` BOOLEAN NOT NULL,`verification` BOOLEAN NOT NULL, `ride_mode` VARCHAR NOT NULL, `coins` INT, `items` VARCHAR, `total_votes` INT NOT NULL, `display_discord` BOOLEAN NOT NULL, `login_message` VARCHAR, `inspect` BOOLEAN NOT NULL);");
} }
catch (SQLException e) catch (SQLException e)
{ {
@ -136,8 +133,8 @@ public class SQLite extends FreedomService
{ {
try try
{ {
Object[] data = {key, admin.getUniqueId().toString()}; Object[] data = {key, admin.getName()};
PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE admins SET {0}=? WHERE uuid=''{1}''", data)); PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE admins SET {0}=? WHERE username=''{1}''", data));
statement = setUnknownType(statement, 1, value); statement = setUnknownType(statement, 1, value);
statement.executeUpdate(); statement.executeUpdate();
@ -153,8 +150,8 @@ public class SQLite extends FreedomService
{ {
try try
{ {
Object[] data = {key, player.getUniqueId().toString()}; Object[] data = {key, player.getName()};
PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE players SET {0}=? WHERE uuid=''{1}''", data)); PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE players SET {0}=? WHERE username=''{1}''", data));
statement = setUnknownType(statement, 1, value); statement = setUnknownType(statement, 1, value);
statement.executeUpdate(); statement.executeUpdate();
@ -165,11 +162,9 @@ public class SQLite extends FreedomService
} }
} }
@Deprecated public void updateAdminName(String oldName, String newName)
public void oldUpdateAdminName(String oldName, String newName)
{ {
throw new UnsupportedOperationException("Admin no longer stores names in the object, may be changed in a future update"); try
/*try
{ {
PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE admins SET username=? WHERE username=''{0}''", oldName)); PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE admins SET username=? WHERE username=''{0}''", oldName));
statement = setUnknownType(statement, 1, newName); statement = setUnknownType(statement, 1, newName);
@ -179,10 +174,10 @@ public class SQLite extends FreedomService
catch (SQLException e) catch (SQLException e)
{ {
FLog.severe("Failed to update admin name: " + e.getMessage()); FLog.severe("Failed to update admin name: " + e.getMessage());
}*/ }
} }
/*public void updatePlayerName(String oldName, String newName) public void updatePlayerName(String oldName, String newName)
{ {
try try
{ {
@ -195,7 +190,7 @@ public class SQLite extends FreedomService
{ {
FLog.severe("Failed to update player name: " + e.getMessage()); FLog.severe("Failed to update player name: " + e.getMessage());
} }
}*/ }
public PreparedStatement setUnknownType(PreparedStatement statement, int index, Object value) throws SQLException public PreparedStatement setUnknownType(PreparedStatement statement, int index, Object value) throws SQLException
{ {
@ -253,7 +248,7 @@ public class SQLite extends FreedomService
try try
{ {
PreparedStatement statement = connection.prepareStatement("INSERT INTO admins VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)"); PreparedStatement statement = connection.prepareStatement("INSERT INTO admins VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
statement.setString(1, admin.getUniqueId().toString()); statement.setString(1, admin.getName());
statement.setString(2, FUtil.listToString(admin.getIps())); statement.setString(2, FUtil.listToString(admin.getIps()));
statement.setString(3, admin.getRank().toString()); statement.setString(3, admin.getRank().toString());
statement.setBoolean(4, admin.isActive()); statement.setBoolean(4, admin.isActive());
@ -276,7 +271,7 @@ public class SQLite extends FreedomService
try try
{ {
PreparedStatement statement = connection.prepareStatement("INSERT INTO players VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); PreparedStatement statement = connection.prepareStatement("INSERT INTO players VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
statement.setString(1, player.getUniqueId().toString()); statement.setString(1, player.getName());
statement.setString(2, FUtil.listToString(player.getIps())); statement.setString(2, FUtil.listToString(player.getIps()));
statement.setString(3, FUtil.listToString(player.getNotes())); statement.setString(3, FUtil.listToString(player.getNotes()));
statement.setString(4, player.getTag()); statement.setString(4, player.getTag());
@ -300,7 +295,7 @@ public class SQLite extends FreedomService
} }
} }
/*public ResultSet getAdminByName(String name) public ResultSet getAdminByName(String name)
{ {
try try
{ {
@ -316,29 +311,10 @@ public class SQLite extends FreedomService
FLog.severe(e); FLog.severe(e);
} }
return null;
}*/
public ResultSet getAdminByUUID(UUID uuid)
{
try
{
ResultSet resultSet = connection.createStatement().executeQuery(MessageFormat.format("SELECT * FROM admins WHERE uuid=''{0}''", uuid.toString()));
if (resultSet.next())
{
return resultSet;
}
}
catch (SQLException e)
{
FLog.severe("Failed to get admin by name:");
FLog.severe(e);
}
return null; return null;
} }
/*public ResultSet getPlayerByName(String name) public ResultSet getPlayerByName(String name)
{ {
try try
{ {
@ -356,8 +332,6 @@ public class SQLite extends FreedomService
return null; return null;
} }
*/
public ResultSet getMasterBuilders() public ResultSet getMasterBuilders()
{ {
@ -374,25 +348,6 @@ public class SQLite extends FreedomService
return null; return null;
} }
public ResultSet getPlayerByUUID(UUID uuid)
{
try
{
ResultSet resultSet = connection.createStatement().executeQuery(MessageFormat.format("SELECT * FROM players WHERE uuid LIKE ''%{0}%''", uuid.toString()));
if (resultSet.next())
{
return resultSet;
}
}
catch (SQLException e)
{
FLog.severe("Failed to get player by uuid:");
FLog.severe(e);
}
return null;
}
public ResultSet getPlayerByIp(String ip) public ResultSet getPlayerByIp(String ip)
{ {
try try
@ -416,7 +371,7 @@ public class SQLite extends FreedomService
{ {
try try
{ {
connection.createStatement().executeUpdate(MessageFormat.format("DELETE FROM admins where uuid=''{0}''", admin.getUniqueId())); connection.createStatement().executeUpdate(MessageFormat.format("DELETE FROM admins where name=''{0}''", admin.getName()));
} }
catch (SQLException e) catch (SQLException e)
{ {

View File

@ -1,18 +1,16 @@
package me.totalfreedom.totalfreedommod.util; package me.totalfreedom.totalfreedommod.util;
import com.google.common.collect.Maps;
import me.totalfreedom.totalfreedommod.TotalFreedomMod; import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import me.totalfreedom.totalfreedommod.config.ConfigEntry; import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.WordUtils; import org.apache.commons.lang.WordUtils;
import org.apache.hc.client5.http.classic.methods.HttpGet; import org.bukkit.Bukkit;
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient; import org.bukkit.ChatColor;
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse; import org.bukkit.Color;
import org.apache.hc.client5.http.impl.classic.HttpClients; import org.bukkit.Location;
import org.apache.hc.core5.http.HttpResponse; import org.bukkit.Material;
import org.apache.hc.core5.http.io.entity.EntityUtils; import org.bukkit.OfflinePlayer;
import org.bukkit.*;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@ -21,14 +19,12 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask; import org.bukkit.scheduler.BukkitTask;
import org.json.JSONObject;
import org.json.simple.JSONArray; import org.json.simple.JSONArray;
import java.io.*; import java.io.*;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.net.HttpURLConnection; import java.net.HttpURLConnection;
import java.net.URL; import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.time.Instant; import java.time.Instant;
@ -41,8 +37,6 @@ import static org.bukkit.Bukkit.getServer;
public class FUtil public class FUtil
{ {
private static final Map<UUID, String> NAME_CACHE = Maps.newHashMap();
public static final String SAVED_FLAGS_FILENAME = "savedflags.dat"; public static final String SAVED_FLAGS_FILENAME = "savedflags.dat";
/* See https://github.com/TotalFreedom/License - None of the listed names may be removed. /* See https://github.com/TotalFreedom/License - None of the listed names may be removed.
Leaving this list here for anyone running TFM on a cracked server: Leaving this list here for anyone running TFM on a cracked server:
@ -889,52 +883,4 @@ public class FUtil
return subList(startIndex, endIndex + 1); return subList(startIndex, endIndex + 1);
} }
} }
public static String getNameFromUUID(UUID uuid) {
OfflinePlayer player = Bukkit.getOfflinePlayer(uuid);
if (player.hasPlayedBefore()) return player.getName();
if (NAME_CACHE.containsKey(uuid)) return NAME_CACHE.get(uuid);
CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet("https://api.ashcon.app/mojang/v2/user/" + uuid.toString().replace("-", ""));
try {
CloseableHttpResponse response = client.execute(get);
String json = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
JSONObject obj = new JSONObject(json);
response.close();
if (response.getCode() == 200) {
String name = NAME_CACHE.put(uuid, obj.getString("username"));
Bukkit.getScheduler().runTaskLaterAsynchronously(TotalFreedomMod.getPlugin(), () -> NAME_CACHE.remove(uuid), 20 * 60L * 5); // remove the uuid from cache as names can be changed
return name;
}
client.close();
} catch (IOException | org.apache.hc.core5.http.ParseException e) {
e.printStackTrace();
}
return "";
}
public static UUID getUUIDFromName(String name) {
//get offline player is deprecated so we'll just see if they're online to get their uuid
Player player = Bukkit.getPlayer(name);
if (player != null) return player.getUniqueId();
CloseableHttpClient client = HttpClients.createDefault();
HttpGet get = new HttpGet("https://api.ashcon.app/mojang/v2/user/" + name);
try {
CloseableHttpResponse response = client.execute(get);
String json = EntityUtils.toString(response.getEntity(), StandardCharsets.UTF_8);
JSONObject obj = new JSONObject(json);
response.close();
if (response.getCode() == 200) {
return UUID.fromString(obj.getString("uuid"));
}
client.close();
} catch (IOException | org.apache.hc.core5.http.ParseException e) {
e.printStackTrace();
}
return null;
}
} }

View File

@ -52,7 +52,7 @@ public class WorldRestrictions extends FreedomService
public boolean doRestrict(Player player) public boolean doRestrict(Player player)
{ {
if (!plugin.pl.getData(player).isMasterBuilder() && plugin.pl.canManageMasterBuilders(player.getUniqueId())) if (!plugin.pl.getData(player).isMasterBuilder() && plugin.pl.canManageMasterBuilders(player.getName()))
{ {
if (player.getWorld().equals(plugin.wm.masterBuilderWorld.getWorld())) if (player.getWorld().equals(plugin.wm.masterBuilderWorld.getWorld()))
{ {

View File

@ -1,50 +1,16 @@
# #
# TotalFreedomMod 5.5 Permissions # TotalFreedomMod Permissions
# by ZeroEpoch1969 # by ZeroEpoch1969
# #
# Note that every group inherits the previous groups' permissions # Note that every group inherits the previous groups' permissions
# Meaning Telnet Admins have the permissions of Operators and Super Admins, and etc # Meaning Senior Admins have the permissions of Operators and Admins, and etc
# This is used to remove all permission begging with the root node # This is used to remove all permission begging with the root node
# This is useful when a plugin gives all permissions to a player because they are opped # This is useful when a plugin gives all permissions to a player because they are opped
remove: remove:
- "voxelsniper" - "voxelsniper"
- "bending.admin" - "bending"
- "bending.ability.Cleanse"
- "worldedit.brush.apply"
- "essentials.near.exclude"
- "plots.admin"
- "plots.debugroadregen"
- "plots.debugclaimtest"
- "plots.debugpaste"
- "plots.debugallowunsafe"
- "plots.debugloadtest"
- "plots.debugsavetest"
- "plots.cluster"
#Crackshot
- "crackshot.bypass.all"
#NetworkManager
- "networkmanager.*"
- "networkmanager.notify.joinbanned"
- "networkmanager.notify.*"
- "networkmanager.announce.global"
- "networkmanager.announce"
- "networkmanager.chatlock"
- "networkmanager.clearchat.bypass"
- "networkmanager.clearchat.*"
- "networkmanager.notify.ticket.new"
- "networkmanager.lookup"
- "networkmanager.maintenance.*"
- "networkmanager.permissions"
- "networkmanager.reports"
- "networkmanager.tickets"
- "networkmanager.chatlock.bypass"
- "networkmanager.anticaps.bypass"
- "networkmanager.antispam.bypass"
- "networkmanager.commandblocker.bypass"
- "networkmanager.tags.*"
# Operator permission nodes # Operator permission nodes
operators: operators:
@ -70,79 +36,16 @@ operators:
- "worldedit.removebelow" - "worldedit.removebelow"
- "worldedit.removenear" - "worldedit.removenear"
- "worldedit.replacenear" - "worldedit.replacenear"
- "worldedit.brush.*"
- "worldedit.global-mask"
- "worldedit.fill"
- "worldedit.fill.recursive"
# LibsDisguises # LibsDisguises
- "libsdisguises.noactionbar" - "libsdisguises.noactionbar"
# WorldGuard # WorldGuard
- "worldguard.region.list.own" - "worldguard.region.list.own"
- "worldguard.region.addmember.own.*" - "worldguard.region.addmember.own.*"
- "worldguard.region.removemember.own.*" - "worldguard.region.removemember.own.*"
- "worldguard.region.info.*" - "worldguard.region.info.*"
# Bending
- "bending.command.add"
- "bending.command.bind"
- "bending.command.check"
- "bending.command.choose"
- "bending.command.rechoose"
- "bending.command.clear"
- "bending.command.copy"
- "bending.command.display"
- "bending.command.help"
- "bending.command.invincible"
- "bending.command.preset"
- "bending.command.preset.list"
- "bending.command.preset.create"
- "bending.command.preset.delete"
- "bending.command.preset.bind"
- "bending.command.preset.bind.assign"
- "bending.command.preset.bind.external"
- "bending.command.toggle"
- "bending.command.version"
- "bending.command.who"
- "bending.earth"
- "bending.air"
- "bending.fire"
- "bending.water"
- "bending.water.bloodbending.anytime"
- "bending.ability.AvatarState"
- "bending.command.add.chi"
- "bending.command.choose.chi"
- "bending.ability.Paralyze"
- "bending.ability.RapidPunch"
- "bending.ability.Smokescreen"
- "bending.ability.WarriorStance"
- "bending.ability.AcrobatStance"
- "bending.ability.QuickStrike"
- "bending.ability.SwiftKick"
- "bending.ability.ChiCombo"
- "bending.chi.passive"
- "bending.ability.MetalClips.throw"
- "bending.ability.AirCombo"
- "bending.ability.Flight"
- "bending.ability.WaterCombo"
- "bending.ability.EarthCombo"
- "bending.ability.FireCombo"
- "bending.ability.ChiCombo"
- "bending.air.passive"
- "bending.chi.passive"
- "bending.earth.passive"
- "bending.fire.passive"
- "bending.water.passive"
# NetworkManager
- "networkmanager.chatlog"
- "networkmanager.find"
- "networkmanager.gtps"
- "networkmanager.lookup"
- "networkmanager.slashserver.*"
- "networkmanager.notification.join"
- "networkmanager.party.nolimit"
- "networkmanager.tabcompletechat"
# Master Builder permission nodes # Master Builder permission nodes
master_builders: master_builders:
- "worldedit.tool.*" - "worldedit.tool.*"
@ -156,25 +59,13 @@ master_builders:
- "voxelsniper.sniper" - "voxelsniper.sniper"
- "voxelsniper.goto" - "voxelsniper.goto"
- "voxelsniper.brush.*" - "voxelsniper.brush.*"
# Admin permission nodes # Admin permission nodes
admins: admins:
- "coreprotect.*"
- "worldedit.*" - "worldedit.*"
- "worldguard.*" - "worldguard.*"
- "bending.admin.remove" - "bending.*"
- "bending.command.toggle.all"
- "bending.admin.toggle"
- "bending.command.reload"
- "plots.cluster"
- "networkmanager.adminchat"
- "networkmanager.announce.server"
- "networkmanager.socialspy"
- "networkmanager.fullproxy.bypass"
- "networkmanager.lookup.ip"
#Crackshot
- "crackshot.bypass.all"
# Senior Admin permission nodes # Senior Admin permission nodes
senior_admins: senior_admins: []
- "bending.admin.permaremove"
- "bending.ability.Cleanse"