mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2025-07-01 04:26:42 +00:00
Compare commits
89 Commits
Author | SHA1 | Date | |
---|---|---|---|
b99520b491 | |||
62529a6171 | |||
0caf972248 | |||
a37364d07e | |||
4ac9844534 | |||
939e98b759 | |||
d99f3e657b | |||
92bbb62379 | |||
e4a0943af2 | |||
36bd8c0fad | |||
d77f59435b | |||
a08fd2afb6 | |||
6fd075fe96 | |||
f57fc56f4a | |||
a6ca6b122c | |||
064e73f58b | |||
32138b2e59 | |||
e1c3bad4d0 | |||
4e78027f0c | |||
721f4f9fc3 | |||
24ad2611a9 | |||
c238f251f2 | |||
02848e3439 | |||
9550f54e2b | |||
39dade78e3 | |||
5b6d8b01a4 | |||
96bc83cead | |||
be700a90ce | |||
6d1fce1716 | |||
d3665f31fe | |||
4188cb80fa | |||
62fe72d99b | |||
f4749559d2 | |||
ed815794ed | |||
0c12a19d1d | |||
96d47e8e0c | |||
3027e2a18c | |||
06025b2e69 | |||
da7e8f64aa | |||
17b051e2a7 | |||
77a05f22a8 | |||
5c3ef1f107 | |||
53c5991971 | |||
ff760a6c11 | |||
63069ff9ec | |||
5e63b71861 | |||
b72782de4f | |||
de9556c550 | |||
6590504545 | |||
8d1e8dcf05 | |||
07b5076717 | |||
6fb9507a4c | |||
879a524bb4 | |||
c60b451ce7 | |||
f85f3e32ea | |||
57b3351047 | |||
dd10eb3f5e | |||
a498104777 | |||
4e577f97fa | |||
8c7bf365a0 | |||
eedb7a5375 | |||
d047cfc8ff | |||
9ff5da8d8f | |||
ac615f54f7 | |||
21af722e23 | |||
b1196fcf00 | |||
d170f6d323 | |||
9dd0298f56 | |||
bdf4ca84e0 | |||
caaa067096 | |||
7258d7f1bf | |||
8a504bff07 | |||
c00e64f736 | |||
9e73db0f24 | |||
951c061d77 | |||
579d3e0719 | |||
9777733d04 | |||
05e118dcb4 | |||
7a0d6f49f4 | |||
19f1b7f6bd | |||
b12afbdc1f | |||
49e77d4f93 | |||
eb9107bedf | |||
951c699ed0 | |||
6895e46375 | |||
1cf46c7337 | |||
407b63e48b | |||
be562fe722 | |||
928ab41d7f |
19
.github/dependabot.yml
vendored
Normal file
19
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
# 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"
|
43
.github/workflows/downstream.yml
vendored
Normal file
43
.github/workflows/downstream.yml
vendored
Normal file
@ -0,0 +1,43 @@
|
||||
# This is a basic workflow to help you get started with Actions
|
||||
|
||||
name: Downstream Branch Updates
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '20 7 * * *'
|
||||
# scheduled at 07:00 every Monday and Thursday
|
||||
|
||||
workflow_dispatch: # click the button on Github repo!
|
||||
|
||||
|
||||
jobs:
|
||||
sync_with_upstream:
|
||||
runs-on: ubuntu-latest
|
||||
name: Sync main with upstream latest
|
||||
|
||||
steps:
|
||||
# Step 1: run a standard checkout action, provided by github
|
||||
- name: Checkout main
|
||||
uses: actions/checkout@v2
|
||||
with:
|
||||
ref: main
|
||||
# submodules: 'recursive' ### may be needed in your situation
|
||||
|
||||
# Step 2: run this sync action - specify the upstream repo, upstream branch to sync with, and target sync branch
|
||||
- name: Pull (Fast-Forward) upstream changes
|
||||
id: sync
|
||||
uses: aormsby/Fork-Sync-With-Upstream-action@v2.1
|
||||
with:
|
||||
upstream_repository: AtlasMediaGroup/TotalFreedomMod
|
||||
upstream_branch: main
|
||||
target_branch: main
|
||||
git_pull_args: --ff-only # optional arg use, defaults to simple 'pull'
|
||||
|
||||
# Step 3: Display a message if 'sync' step had new commits (simple test)
|
||||
- name: Check for new commits
|
||||
if: steps.sync.outputs.has_new_commits
|
||||
run: echo "There were new commits."
|
||||
|
||||
# Step 4: Print a helpful timestamp for your records (not required, just nice)
|
||||
- name: Timestamp
|
||||
run: date
|
12
.github/workflows/maven.yml
vendored
12
.github/workflows/maven.yml
vendored
@ -8,10 +8,20 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
# Java 11 Builds
|
||||
- uses: actions/checkout@v1
|
||||
- name: Set up JDK 1.8
|
||||
- name: Set up JDK 11
|
||||
uses: actions/setup-java@v1
|
||||
with:
|
||||
java-version: 11
|
||||
- name: Build with Maven
|
||||
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
13
.travis.yml
@ -1,13 +0,0 @@
|
||||
language: java
|
||||
jdk:
|
||||
- oraclejdk11
|
||||
- openjdk11
|
||||
notifications:
|
||||
email: false
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- sshpass
|
||||
script: mvn clean install
|
||||
after_success:
|
||||
- ./travis-upload.sh
|
@ -1,4 +1,4 @@
|
||||
# TotalFreedomMod [](https://travis-ci.com/AtlasMediaGroup/TotalFreedomMod) [](https://www.codacy.com/gh/AtlasMediaGroup/TotalFreedomMod/dashboard?utm_source=github.com&utm_medium=referral&utm_content=AtlasMediaGroup/TotalFreedomMod&utm_campaign=Badge_Grade)
|
||||
# TotalFreedomMod [](https://github.com/AtlasMediaGroup/TotalFreedomMod/actions/workflows/maven.yml) [](https://www.codacy.com/gh/AtlasMediaGroup/TotalFreedomMod/dashboard?utm_source=github.com&utm_medium=referral&utm_content=AtlasMediaGroup/TotalFreedomMod&utm_campaign=Badge_Grade) [](https://github.com/AtlasMediaGroup/TotalFreedomMod/actions/workflows/codeql-analysis.yml)
|
||||
|
||||
TotalFreedomMod is a CraftBukkit server plugin designed primarily to support the [Official TotalFreedom Minecraft Server](https://totalfreedom.me/). However, you are more than welcome to adapt the source for your own server.
|
||||
|
||||
@ -14,4 +14,4 @@ For information on our security policy and reporting an issue, please see [SECUR
|
||||
|
||||
### Compiling
|
||||
|
||||
You need Maven to build. You'd also need to set the JDK version to Java 8 as that is the current standard as of now.
|
||||
You need Maven to build. You'd also need to set the JDK version to Java 11 as that is the current standard as of now.
|
||||
|
36
SECURITY.md
36
SECURITY.md
@ -2,18 +2,34 @@
|
||||
|
||||
## Supported Versions
|
||||
|
||||
We currently support the code running on the "development" branch of this repository. This is supported in addition to those formal releases, but note anything not yet released should be treated as in-development.
|
||||
We currently support the code running on the "main" branch and "development" branch of this repository. This is supported in addition to those formal releases, but note anything not yet released should be treated as in-development.
|
||||
|
||||
In terms of plugin releases, we support the following versions:
|
||||
In terms of plugin releases, our support matrix is as follows:
|
||||
|
||||
| Version | Supported |
|
||||
| ------------------- | ------------------ |
|
||||
| 2021.04 | :white_check_mark: |
|
||||
| 2021.02 | :white_check_mark: |
|
||||
| 2020.11 | :white_check_mark: |
|
||||
| 6.0.x (Pre-Release) | :x: |
|
||||
| < 2020.11 | :x: |
|
||||
| < 5.x | :x: |
|
||||
### Actively Supported
|
||||
These versions are currently actively supported by our team, and you should expect security patches where appropriate for these versions.
|
||||
|
||||
| Version | Supported | Support End: |
|
||||
| ------------------- | ------------------ | ------------------------------ |
|
||||
| 2021.05 | :white_check_mark: | No Earlier than August 2021 |
|
||||
|
||||
### Legacy Supported
|
||||
These versions are no longer under active development, however we will look to release critical secuirty patches where appropriate.
|
||||
|
||||
| Version | Supported | Support End: |
|
||||
| ------------------- | ------------------ | ------------ |
|
||||
| 2021.04 | :white_check_mark: | July 2021 |
|
||||
|
||||
### No Longer Supported
|
||||
These versions are no longer supported at all. It is strongly advised to update if you are running any of these versions.
|
||||
|
||||
| Version | Supported | Support Ended: |
|
||||
| ------------------- | ------------------ | ------------------- |
|
||||
| 2021.02 | :x: | 6 June 2021 |
|
||||
| 2020.11 | :x: | 3 May 2021 |
|
||||
| 6.0.x (Pre-Release) | :x: | December 2020 |
|
||||
| < 2020.11 | :x: | December 2020 |
|
||||
| < 5.x | :x: | December 2020 |
|
||||
|
||||
## Reporting a Vulnerability
|
||||
|
||||
|
47
pom.xml
47
pom.xml
@ -5,7 +5,7 @@
|
||||
|
||||
<groupId>me.totalfreedom</groupId>
|
||||
<artifactId>TotalFreedomMod</artifactId>
|
||||
<version>2021.04</version>
|
||||
<version>2021.05</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<properties>
|
||||
@ -14,6 +14,8 @@
|
||||
<jar.finalName>${project.name}</jar.finalName>
|
||||
<timestamp>${maven.build.timestamp}</timestamp>
|
||||
<maven.build.timestamp.format>MM/dd/yyyy HH:mm</maven.build.timestamp.format>
|
||||
|
||||
<tfguilds.version>master-4ec00d977c-1</tfguilds.version>
|
||||
</properties>
|
||||
|
||||
<name>TotalFreedomMod</name>
|
||||
@ -105,11 +107,6 @@
|
||||
<url>https://papermc.io/repo/repository/maven-public/</url>
|
||||
</repository>
|
||||
|
||||
<repository>
|
||||
<id>rayzr-repo</id>
|
||||
<url>https://cdn.rawgit.com/Rayzr522/maven-repo/master/</url>
|
||||
</repository>
|
||||
|
||||
<repository>
|
||||
<id>ess-repo</id>
|
||||
<url>https://ci.ender.zone/plugin/repository/everything/</url>
|
||||
@ -168,9 +165,9 @@
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.TotalFreedomMC</groupId>
|
||||
<groupId>com.github.AtlasMediaGroup</groupId>
|
||||
<artifactId>TF-LibsDisguises</artifactId>
|
||||
<version>48f01cf2fe</version>
|
||||
<version>5a340341b0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@ -216,13 +213,6 @@
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>me.rayzr522</groupId>
|
||||
<artifactId>jsonmessage</artifactId>
|
||||
<version>1.0.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.vexsoftware</groupId>
|
||||
<artifactId>votifier</artifactId>
|
||||
@ -252,9 +242,9 @@
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.TotalFreedomMC</groupId>
|
||||
<groupId>com.github.AtlasMediaGroup</groupId>
|
||||
<artifactId>TFGuilds</artifactId>
|
||||
<version>db036fb187</version>
|
||||
<version>${tfguilds.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@ -277,6 +267,23 @@
|
||||
<version>5.4.2</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.eclipse.sisu</groupId>
|
||||
<artifactId>org.eclipse.sisu.inject</artifactId>
|
||||
<version>0.3.4</version>
|
||||
</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>
|
||||
|
||||
<build>
|
||||
@ -434,7 +441,8 @@
|
||||
<relocations>
|
||||
<relocation>
|
||||
<pattern>io.papermc.lib</pattern>
|
||||
<shadedPattern>me.totalfreedom.totalfreedommod.paperlib</shadedPattern> <!-- Replace this -->
|
||||
<shadedPattern>me.totalfreedom.totalfreedommod.paperlib
|
||||
</shadedPattern> <!-- Replace this -->
|
||||
</relocation>
|
||||
<relocation>
|
||||
<pattern>org.bstats</pattern>
|
||||
@ -448,11 +456,12 @@
|
||||
<include>commons-codec:commons-codec</include>
|
||||
<include>org.reflections:reflections</include>
|
||||
<include>org.javassist:javassist</include>
|
||||
<include>me.rayzr522:jsonmessage</include>
|
||||
<include>io.papermc:paperlib</include>
|
||||
<include>com.github.speedxx:Mojangson</include>
|
||||
<include>org.bstats:bstats-bukkit</include>
|
||||
<include>org.jetbrains:annotations</include>
|
||||
<includes>org.apache.httpcomponents.client5:httpclient5</includes>
|
||||
<includes>org.apache.httpcomponents.core5:httpcore5</includes>
|
||||
</includes>
|
||||
</artifactSet>
|
||||
</configuration>
|
||||
|
@ -85,6 +85,10 @@ public class AutoEject extends FreedomService
|
||||
player.kickPlayer(kickMessage);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
FLog.warning("Unrecognized EjectMethod " + method.name() + " found, defaulting to STRIKE_THREE");
|
||||
}
|
||||
case STRIKE_THREE:
|
||||
{
|
||||
plugin.bm.addBan(Ban.forPlayerFuzzy(player, Bukkit.getConsoleSender(), null, kickMessage));
|
||||
|
@ -1,6 +1,5 @@
|
||||
package me.totalfreedom.totalfreedommod;
|
||||
|
||||
import java.io.File;
|
||||
import me.totalfreedom.totalfreedommod.banning.IndefiniteBanList;
|
||||
import me.totalfreedom.totalfreedommod.config.YamlConfig;
|
||||
import me.totalfreedom.totalfreedommod.permissions.PermissionConfig;
|
||||
@ -9,8 +8,11 @@ import me.totalfreedom.totalfreedommod.util.FLog;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.bukkit.util.FileUtil;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
public class BackupManager extends FreedomService
|
||||
{
|
||||
|
||||
@Override
|
||||
public void onStart()
|
||||
{
|
||||
@ -42,16 +44,16 @@ public class BackupManager extends FreedomService
|
||||
config.load();
|
||||
|
||||
// Weekly
|
||||
if (!config.isInt(save + ".weekly"))
|
||||
if (!config.isLong(save + ".weekly"))
|
||||
{
|
||||
performBackup(file, "weekly");
|
||||
config.set(save + ".weekly", FUtil.getUnixTime());
|
||||
}
|
||||
else
|
||||
{
|
||||
int lastBackupWeekly = config.getInt(save + ".weekly");
|
||||
long lastBackupWeekly = config.getLong(save + ".weekly");
|
||||
|
||||
if (lastBackupWeekly + 3600 * 24 * 7 < FUtil.getUnixTime())
|
||||
if (FUtil.parseLongOffset(lastBackupWeekly, "1w") < FUtil.getUnixTime())
|
||||
{
|
||||
performBackup(file, "weekly");
|
||||
config.set(save + ".weekly", FUtil.getUnixTime());
|
||||
@ -65,16 +67,16 @@ public class BackupManager extends FreedomService
|
||||
}
|
||||
|
||||
// Daily
|
||||
if (!config.isInt(save + ".daily"))
|
||||
if (!config.isLong(save + ".daily"))
|
||||
{
|
||||
performBackup(file, "daily");
|
||||
config.set(save + ".daily", FUtil.getUnixTime());
|
||||
}
|
||||
else
|
||||
{
|
||||
int lastBackupDaily = config.getInt(save + ".daily");
|
||||
long lastBackupDaily = config.getLong(save + ".daily");
|
||||
|
||||
if (lastBackupDaily + 3600 * 24 < FUtil.getUnixTime())
|
||||
if (FUtil.parseLongOffset(lastBackupDaily, "1d") < FUtil.getUnixTime())
|
||||
{
|
||||
performBackup(file, "daily");
|
||||
config.set(save + ".daily", FUtil.getUnixTime());
|
||||
@ -98,5 +100,4 @@ public class BackupManager extends FreedomService
|
||||
final File newYaml = new File(backupFolder, file + "." + type + ".bak");
|
||||
FileUtil.copy(oldYaml, newYaml);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -126,7 +126,7 @@ public class ChatManager extends FreedomService
|
||||
boolean mentionEveryone = ChatColor.stripColor(message).toLowerCase().contains("@everyone") && plugin.al.isAdmin(player);
|
||||
for (Player p : server.getOnlinePlayers())
|
||||
{
|
||||
if (ChatColor.stripColor(message).toLowerCase().contains("@" + p.getName().toLowerCase()) || mentionEveryone)
|
||||
if ((ChatColor.stripColor(message).toLowerCase().contains("@" + p.getName().toLowerCase()) || mentionEveryone) && !event.isCancelled())
|
||||
{
|
||||
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, SoundCategory.MASTER, 1337F, 0.9F);
|
||||
}
|
||||
|
@ -25,11 +25,6 @@ public class CommandSpy extends FreedomService
|
||||
{
|
||||
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())
|
||||
{
|
||||
FUtil.playerMsg(player, event.getPlayer().getName() + ": " + event.getMessage());
|
||||
|
@ -2,6 +2,8 @@ package me.totalfreedom.totalfreedommod;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.util.Groups;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
@ -32,9 +34,12 @@ public class EntityWiper extends FreedomService
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if (ConfigEntry.AUTO_ENTITY_WIPE.getBoolean())
|
||||
{
|
||||
wipeEntities(false);
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(plugin, 600L, 600L); // 30 second delay after startup + run every 30 seconds
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,6 @@ import io.papermc.lib.PaperLib;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.regex.Pattern;
|
||||
import me.rayzr522.jsonmessage.JSONMessage;
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
@ -240,17 +239,9 @@ public class LoginProcess extends FreedomService
|
||||
if (noteCount != 0)
|
||||
{
|
||||
String noteMessage = "This player has " + noteCount + " admin note" + (noteCount > 1 ? "s" : "") + ".";
|
||||
JSONMessage notice = JSONMessage.create(ChatColor.GOLD + noteMessage + " Click here to view them.")
|
||||
.tooltip("Click here to view them.")
|
||||
.runCommand("/notes " + player.getName() + " list");
|
||||
FLog.info(noteMessage);
|
||||
for (Player p : server.getOnlinePlayers())
|
||||
{
|
||||
if (plugin.al.isAdmin(p))
|
||||
{
|
||||
notice.send(p);
|
||||
}
|
||||
}
|
||||
plugin.al.messageAllAdmins(ChatColor.GOLD + noteMessage);
|
||||
plugin.al.messageAllAdmins(ChatColor.GOLD + "Do " + ChatColor.YELLOW + "/notes " + player.getName() + " list" + ChatColor.GOLD + " to view them.");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,13 +1,13 @@
|
||||
package me.totalfreedom.totalfreedommod;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||
import me.totalfreedom.totalfreedommod.util.FSync;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -20,8 +20,7 @@ import org.bukkit.event.player.PlayerJoinEvent;
|
||||
public class Muter extends FreedomService
|
||||
{
|
||||
|
||||
public static final List<String> MUTE_COMMANDS = Arrays.asList(StringUtils.split("say,me,msg,tell,reply,mail", ","));
|
||||
public final List<String> MUTED_PLAYERS = new ArrayList<>();
|
||||
public final List<UUID> MUTED_PLAYERS = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void onStart()
|
||||
@ -48,7 +47,7 @@ public class Muter extends FreedomService
|
||||
if (plugin.al.isAdminSync(player))
|
||||
{
|
||||
fPlayer.setMuted(false);
|
||||
MUTED_PLAYERS.remove(player.getName());
|
||||
MUTED_PLAYERS.remove(player.getUniqueId());
|
||||
return;
|
||||
}
|
||||
|
||||
@ -88,7 +87,7 @@ public class Muter extends FreedomService
|
||||
cmdName = command.getName().toLowerCase();
|
||||
}
|
||||
|
||||
if (MUTE_COMMANDS.contains(cmdName))
|
||||
if (ConfigEntry.MUTED_BLOCKED_COMMANDS.getStringList().contains(cmdName))
|
||||
{
|
||||
player.sendMessage(ChatColor.RED + "That command is blocked while you are muted.");
|
||||
event.setCancelled(true);
|
||||
@ -108,7 +107,7 @@ public class Muter extends FreedomService
|
||||
Player player = event.getPlayer();
|
||||
FPlayer playerdata = plugin.pl.getPlayer(player);
|
||||
|
||||
if (MUTED_PLAYERS.contains(player.getName()))
|
||||
if (MUTED_PLAYERS.contains(player.getUniqueId()))
|
||||
{
|
||||
playerdata.setMuted(true);
|
||||
}
|
||||
|
@ -127,7 +127,6 @@ public class TotalFreedomMod extends JavaPlugin
|
||||
public Sitter st;
|
||||
public VanishHandler vh;
|
||||
public Pterodactyl ptero;
|
||||
//public HubWorldRestrictions hwr;
|
||||
//
|
||||
// Bridges
|
||||
public BukkitTelnetBridge btb;
|
||||
|
@ -2,6 +2,8 @@ package me.totalfreedom.totalfreedommod.admin;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.FreedomService;
|
||||
import me.totalfreedom.totalfreedommod.config.YamlConfig;
|
||||
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||
@ -14,13 +16,14 @@ import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
//TODO: convert to uuids
|
||||
public class ActivityLog extends FreedomService
|
||||
{
|
||||
|
||||
public static final String FILENAME = "activitylog.yml";
|
||||
|
||||
private final Map<String, ActivityLogEntry> allActivityLogs = Maps.newHashMap();
|
||||
private final Map<String, ActivityLogEntry> nameTable = Maps.newHashMap();
|
||||
private final Map<UUID, ActivityLogEntry> allActivityLogs = Maps.newHashMap();
|
||||
private final Map<UUID, ActivityLogEntry> activityLogs = Maps.newHashMap();
|
||||
private final Map<String, ActivityLogEntry> ipTable = Maps.newHashMap();
|
||||
|
||||
private final YamlConfig config;
|
||||
@ -52,7 +55,7 @@ public class ActivityLog extends FreedomService
|
||||
config.load();
|
||||
|
||||
allActivityLogs.clear();
|
||||
nameTable.clear();
|
||||
activityLogs.clear();
|
||||
ipTable.clear();
|
||||
for (String key : config.getKeys(false))
|
||||
{
|
||||
@ -72,7 +75,7 @@ public class ActivityLog extends FreedomService
|
||||
continue;
|
||||
}
|
||||
|
||||
allActivityLogs.put(key, activityLogEntry);
|
||||
allActivityLogs.put(UUID.fromString(key), activityLogEntry);
|
||||
}
|
||||
|
||||
updateTables();
|
||||
@ -102,12 +105,12 @@ public class ActivityLog extends FreedomService
|
||||
return getActivityLog((Player)sender);
|
||||
}
|
||||
|
||||
return getEntryByName(sender.getName());
|
||||
return getEntryByUUID(FUtil.getUUIDFromName(sender.getName()));
|
||||
}
|
||||
|
||||
public ActivityLogEntry getActivityLog(Player player)
|
||||
{
|
||||
ActivityLogEntry activityLog = getEntryByName(player.getName());
|
||||
ActivityLogEntry activityLog = getEntryByUUID(player.getUniqueId());
|
||||
if (activityLog == null)
|
||||
{
|
||||
String ip = FUtil.getIp(player);
|
||||
@ -115,14 +118,13 @@ public class ActivityLog extends FreedomService
|
||||
if (activityLog != null)
|
||||
{
|
||||
// Set the new username
|
||||
activityLog.setName(player.getName());
|
||||
save();
|
||||
updateTables();
|
||||
}
|
||||
else
|
||||
{
|
||||
activityLog = new ActivityLogEntry(player);
|
||||
allActivityLogs.put(activityLog.getConfigKey(), activityLog);
|
||||
allActivityLogs.put(activityLog.getUUID(), activityLog);
|
||||
updateTables();
|
||||
|
||||
activityLog.saveTo(config.createSection(activityLog.getConfigKey()));
|
||||
@ -139,9 +141,9 @@ public class ActivityLog extends FreedomService
|
||||
return activityLog;
|
||||
}
|
||||
|
||||
public ActivityLogEntry getEntryByName(String name)
|
||||
public ActivityLogEntry getEntryByUUID(UUID uuid)
|
||||
{
|
||||
return nameTable.get(name.toLowerCase());
|
||||
return activityLogs.get(uuid);
|
||||
}
|
||||
|
||||
public ActivityLogEntry getEntryByIp(String ip)
|
||||
@ -151,12 +153,12 @@ public class ActivityLog extends FreedomService
|
||||
|
||||
public void updateTables()
|
||||
{
|
||||
nameTable.clear();
|
||||
activityLogs.clear();
|
||||
ipTable.clear();
|
||||
|
||||
for (ActivityLogEntry activityLog : allActivityLogs.values())
|
||||
{
|
||||
nameTable.put(activityLog.getName().toLowerCase(), activityLog);
|
||||
activityLogs.put(activityLog.getUUID(), activityLog);
|
||||
|
||||
for (String ip : activityLog.getIps())
|
||||
{
|
||||
@ -190,14 +192,14 @@ public class ActivityLog extends FreedomService
|
||||
}
|
||||
}
|
||||
|
||||
public Map<String, ActivityLogEntry> getAllActivityLogs()
|
||||
public Map<UUID, ActivityLogEntry> getAllActivityLogs()
|
||||
{
|
||||
return allActivityLogs;
|
||||
}
|
||||
|
||||
public Map<String, ActivityLogEntry> getNameTable()
|
||||
public Map<UUID, ActivityLogEntry> getActivityLogs()
|
||||
{
|
||||
return nameTable;
|
||||
return activityLogs;
|
||||
}
|
||||
|
||||
public Map<String, ActivityLogEntry> getIpTable()
|
||||
|
@ -4,6 +4,8 @@ import com.google.common.collect.Lists;
|
||||
import java.time.Instant;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.config.IConfig;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.apache.commons.lang.Validate;
|
||||
@ -18,17 +20,20 @@ public class ActivityLogEntry implements IConfig
|
||||
private final List<String> timestamps = Lists.newArrayList();
|
||||
private final List<String> durations = Lists.newArrayList();
|
||||
private String configKey;
|
||||
private String name;
|
||||
|
||||
public ActivityLogEntry(Player player)
|
||||
{
|
||||
this.configKey = player.getName().toLowerCase();
|
||||
this.name = player.getName();
|
||||
this.configKey = player.getUniqueId().toString();
|
||||
}
|
||||
|
||||
public ActivityLogEntry(String configKey)
|
||||
public ActivityLogEntry(UUID uuid)
|
||||
{
|
||||
this.configKey = configKey;
|
||||
this.configKey = uuid.toString();
|
||||
}
|
||||
|
||||
public ActivityLogEntry(String uuid)
|
||||
{
|
||||
this.configKey = uuid;
|
||||
}
|
||||
|
||||
public static String getFILENAME()
|
||||
@ -39,13 +44,11 @@ public class ActivityLogEntry implements IConfig
|
||||
public void loadFrom(Player player)
|
||||
{
|
||||
configKey = player.getName().toLowerCase();
|
||||
name = player.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadFrom(ConfigurationSection cs)
|
||||
{
|
||||
name = cs.getString("username", configKey);
|
||||
ips.clear();
|
||||
ips.addAll(cs.getStringList("ips"));
|
||||
timestamps.clear();
|
||||
@ -57,8 +60,8 @@ public class ActivityLogEntry implements IConfig
|
||||
@Override
|
||||
public void saveTo(ConfigurationSection cs)
|
||||
{
|
||||
Validate.isTrue(isValid(), "Could not save activity entry: " + name + ". Entry not valid!");
|
||||
cs.set("username", name);
|
||||
Validate.isTrue(isValid(), "Could not save activity entry: " + getUUID() + ". Entry not valid!");
|
||||
cs.set("uuid", getUUID().toString());
|
||||
cs.set("ips", Lists.newArrayList(ips));
|
||||
cs.set("timestamps", Lists.newArrayList(timestamps));
|
||||
cs.set("durations", Lists.newArrayList(durations));
|
||||
@ -73,11 +76,11 @@ public class ActivityLogEntry implements IConfig
|
||||
public void addLogout()
|
||||
{
|
||||
// Fix of Array index out of bonds issue: FS-131
|
||||
String lastLoginString;
|
||||
String lastLoginString = "";
|
||||
if(timestamps.size() > 1)
|
||||
{
|
||||
lastLoginString = timestamps.get(timestamps.size() - 1);
|
||||
}else
|
||||
} else if (timestamps.size() == 1)
|
||||
{
|
||||
lastLoginString = timestamps.get(0);
|
||||
}
|
||||
@ -136,7 +139,7 @@ public class ActivityLogEntry implements IConfig
|
||||
public boolean isValid()
|
||||
{
|
||||
return configKey != null
|
||||
&& name != null;
|
||||
&& getUUID() != null;
|
||||
}
|
||||
|
||||
public String getConfigKey()
|
||||
@ -149,16 +152,6 @@ public class ActivityLogEntry implements IConfig
|
||||
this.configKey = configKey;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
public void setName(String name)
|
||||
{
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public List<String> getIps()
|
||||
{
|
||||
return ips;
|
||||
@ -173,4 +166,12 @@ public class ActivityLogEntry implements IConfig
|
||||
{
|
||||
return durations;
|
||||
}
|
||||
|
||||
public UUID getUUID() {
|
||||
return UUID.fromString(configKey);
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return FUtil.getNameFromUUID(getUUID());
|
||||
}
|
||||
}
|
||||
|
@ -2,11 +2,8 @@ package me.totalfreedom.totalfreedommod.admin;
|
||||
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.LogViewer.LogsRegistrationMode;
|
||||
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
@ -21,7 +18,7 @@ public class Admin
|
||||
|
||||
|
||||
private final List<String> ips = new ArrayList<>();
|
||||
private String name;
|
||||
private UUID uuid;
|
||||
private boolean active = true;
|
||||
private Rank rank = Rank.ADMIN;
|
||||
private Date lastLogin = new Date();
|
||||
@ -32,7 +29,7 @@ public class Admin
|
||||
|
||||
public Admin(Player player)
|
||||
{
|
||||
this.name = player.getName();
|
||||
this.uuid = player.getUniqueId();
|
||||
this.ips.add(FUtil.getIp(player));
|
||||
}
|
||||
|
||||
@ -40,7 +37,7 @@ public class Admin
|
||||
{
|
||||
try
|
||||
{
|
||||
this.name = resultSet.getString("username");
|
||||
this.uuid = UUID.fromString(resultSet.getString("uuid"));
|
||||
this.active = resultSet.getBoolean("active");
|
||||
this.rank = Rank.findRank(resultSet.getString("rank"));
|
||||
this.ips.clear();
|
||||
@ -62,7 +59,7 @@ public class Admin
|
||||
{
|
||||
final StringBuilder output = new StringBuilder();
|
||||
|
||||
output.append("Admin: ").append(name).append("\n")
|
||||
output.append("Admin: ").append(uuid.toString()).append("\n")
|
||||
.append("- IPs: ").append(StringUtils.join(ips, ", ")).append("\n")
|
||||
.append("- Last Login: ").append(FUtil.dateToString(lastLogin)).append("\n")
|
||||
.append("- Rank: ").append(rank.getName()).append("\n")
|
||||
@ -78,7 +75,7 @@ public class Admin
|
||||
{
|
||||
Map<String, Object> map = new HashMap<String, Object>()
|
||||
{{
|
||||
put("username", name);
|
||||
put("uuid", uuid.toString());
|
||||
put("active", active);
|
||||
put("rank", rank.toString());
|
||||
put("ips", FUtil.listToString(ips));
|
||||
@ -120,20 +117,20 @@ public class Admin
|
||||
|
||||
public boolean isValid()
|
||||
{
|
||||
return name != null
|
||||
return uuid != null
|
||||
&& rank != null
|
||||
&& !ips.isEmpty()
|
||||
&& lastLogin != null;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
public UUID getUniqueId()
|
||||
{
|
||||
return name;
|
||||
return uuid;
|
||||
}
|
||||
|
||||
public void setName(String name)
|
||||
public void setUniqueId(UUID uuid)
|
||||
{
|
||||
this.name = name;
|
||||
this.uuid = uuid;
|
||||
}
|
||||
|
||||
public boolean isActive()
|
||||
@ -168,6 +165,7 @@ public class Admin
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public Rank getRank()
|
||||
{
|
||||
return rank;
|
||||
@ -232,4 +230,9 @@ public class Admin
|
||||
{
|
||||
this.pteroID = pteroID;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return FUtil.getNameFromUUID(uuid);
|
||||
}
|
||||
}
|
@ -4,11 +4,7 @@ import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import me.totalfreedom.totalfreedommod.FreedomService;
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
@ -26,7 +22,7 @@ public class AdminList extends FreedomService
|
||||
private final Set<Admin> allAdmins = Sets.newHashSet(); // Includes disabled admins
|
||||
// Only active admins below
|
||||
private final Set<Admin> activeAdmins = Sets.newHashSet();
|
||||
private final Map<String, Admin> nameTable = Maps.newHashMap();
|
||||
private final Map<UUID, Admin> adminTable = Maps.newHashMap();
|
||||
private final Map<String, Admin> ipTable = Maps.newHashMap();
|
||||
|
||||
public static List<String> getVanished()
|
||||
@ -66,7 +62,7 @@ public class AdminList extends FreedomService
|
||||
}
|
||||
|
||||
updateTables();
|
||||
FLog.info("Loaded " + allAdmins.size() + " admins (" + nameTable.size() + " active, " + ipTable.size() + " IPs)");
|
||||
FLog.info("Loaded " + allAdmins.size() + " admins (" + adminTable.size() + " active, " + ipTable.size() + " IPs)");
|
||||
}
|
||||
|
||||
public void messageAllAdmins(String message)
|
||||
@ -97,14 +93,16 @@ public class AdminList extends FreedomService
|
||||
return isAdmin(sender);
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public List<String> getActiveAdminNames()
|
||||
{
|
||||
List<String> names = new ArrayList();
|
||||
/*List<String> names = new ArrayList();
|
||||
for (Admin admin : activeAdmins)
|
||||
{
|
||||
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)
|
||||
@ -142,21 +140,21 @@ public class AdminList extends FreedomService
|
||||
return admin.getRank().ordinal() >= Rank.SENIOR_ADMIN.ordinal();
|
||||
}
|
||||
|
||||
public Admin getAdmin(CommandSender sender)
|
||||
public Admin getAdmin(CommandSender sender) //TODO: Fix
|
||||
{
|
||||
if (sender instanceof Player)
|
||||
{
|
||||
return getAdmin((Player)sender);
|
||||
}
|
||||
|
||||
return getEntryByName(sender.getName());
|
||||
return getEntryByUUID(FUtil.getUUIDFromName(sender.getName()));
|
||||
}
|
||||
|
||||
public Admin getAdmin(Player player)
|
||||
{
|
||||
// Find admin
|
||||
String ip = FUtil.getIp(player);
|
||||
Admin admin = getEntryByName(player.getName());
|
||||
Admin admin = getEntryByUUID(player.getUniqueId());
|
||||
|
||||
// Admin by name
|
||||
if (admin != null)
|
||||
@ -181,18 +179,16 @@ public class AdminList extends FreedomService
|
||||
if (admin != null)
|
||||
{
|
||||
// Set the new username
|
||||
String oldName = admin.getName();
|
||||
admin.setName(player.getName());
|
||||
plugin.sql.updateAdminName(oldName, admin.getName());
|
||||
//plugin.sql.updateAdminName(oldName, admin.getName());
|
||||
updateTables();
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public Admin getEntryByName(String name)
|
||||
public Admin getEntryByUUID(UUID uuid)
|
||||
{
|
||||
return nameTable.get(name.toLowerCase());
|
||||
return adminTable.get(uuid);
|
||||
}
|
||||
|
||||
public Admin getEntryByIp(String ip)
|
||||
@ -200,6 +196,7 @@ public class AdminList extends FreedomService
|
||||
return ipTable.get(ip);
|
||||
}
|
||||
|
||||
@Deprecated // TODO: no ips maybe ? idk soontm
|
||||
public Admin getEntryByIpFuzzy(String needleIp)
|
||||
{
|
||||
final Admin directAdmin = getEntryByIp(needleIp);
|
||||
@ -228,13 +225,12 @@ public class AdminList extends FreedomService
|
||||
}
|
||||
|
||||
admin.setLastLogin(new Date());
|
||||
admin.setName(player.getName());
|
||||
save(admin);
|
||||
}
|
||||
|
||||
public boolean isAdminImpostor(Player player)
|
||||
{
|
||||
return getEntryByName(player.getName()) != null && !isAdmin(player) && !isVerifiedAdmin(player);
|
||||
return getEntryByUUID(player.getUniqueId()) != null && !isAdmin(player) && !isVerifiedAdmin(player);
|
||||
}
|
||||
|
||||
public boolean isVerifiedAdmin(Player player)
|
||||
@ -297,7 +293,7 @@ public class AdminList extends FreedomService
|
||||
public void updateTables()
|
||||
{
|
||||
activeAdmins.clear();
|
||||
nameTable.clear();
|
||||
adminTable.clear();
|
||||
ipTable.clear();
|
||||
|
||||
for (Admin admin : allAdmins)
|
||||
@ -308,7 +304,7 @@ public class AdminList extends FreedomService
|
||||
}
|
||||
|
||||
activeAdmins.add(admin);
|
||||
nameTable.put(admin.getName().toLowerCase(), admin);
|
||||
adminTable.put(admin.getUniqueId(), admin);
|
||||
|
||||
for (String ip : admin.getIps())
|
||||
{
|
||||
@ -318,9 +314,9 @@ public class AdminList extends FreedomService
|
||||
}
|
||||
}
|
||||
|
||||
public Set<String> getAdminNames()
|
||||
public Set<UUID> getAdminUUIDs()
|
||||
{
|
||||
return nameTable.keySet();
|
||||
return adminTable.keySet();
|
||||
}
|
||||
|
||||
public Set<String> getAdminIps()
|
||||
@ -332,7 +328,7 @@ public class AdminList extends FreedomService
|
||||
{
|
||||
try
|
||||
{
|
||||
ResultSet currentSave = plugin.sql.getAdminByName(admin.getName());
|
||||
ResultSet currentSave = plugin.sql.getAdminByUUID(admin.getUniqueId());
|
||||
for (Map.Entry<String, Object> entry : admin.toSQLStorable().entrySet())
|
||||
{
|
||||
Object storedValue = plugin.sql.getValue(currentSave, entry.getKey(), entry.getValue());
|
||||
@ -392,11 +388,6 @@ public class AdminList extends FreedomService
|
||||
return activeAdmins;
|
||||
}
|
||||
|
||||
public Map<String, Admin> getNameTable()
|
||||
{
|
||||
return nameTable;
|
||||
}
|
||||
|
||||
public Map<String, Admin> getIpTable()
|
||||
{
|
||||
return ipTable;
|
||||
|
@ -19,6 +19,8 @@ import org.bukkit.entity.Player;
|
||||
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");
|
||||
private final List<String> ips = Lists.newArrayList();
|
||||
private String username = null;
|
||||
|
@ -43,6 +43,7 @@ public class IndefiniteBan implements IConfig
|
||||
@Override
|
||||
public void saveTo(ConfigurationSection cs)
|
||||
{
|
||||
// The indefinite ban list is only intended to be modified manually. It is not intended to save.
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -171,6 +171,11 @@ public class BlockBlocker extends FreedomService
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
// Do nothing
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (Groups.BANNERS.contains(event.getBlockPlaced().getType()))
|
||||
|
@ -36,10 +36,9 @@ public class InteractBlocker extends FreedomService
|
||||
break;
|
||||
}
|
||||
|
||||
case LEFT_CLICK_AIR:
|
||||
case LEFT_CLICK_BLOCK:
|
||||
default:
|
||||
{
|
||||
//
|
||||
// Do nothing
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -158,6 +157,11 @@ public class InteractBlocker extends FreedomService
|
||||
event.setCancelled(true);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
// Do nothing
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -12,6 +12,7 @@ import me.totalfreedom.totalfreedommod.FreedomService;
|
||||
import me.totalfreedom.totalfreedommod.admin.Admin;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@ -126,7 +127,7 @@ public class BukkitTelnetBridge extends FreedomService
|
||||
{
|
||||
for (ClientSession session : telnet.appender.getSessions())
|
||||
{
|
||||
Admin admin = plugin.al.getEntryByName(session.getUserName().toLowerCase());
|
||||
Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(session.getUserName()));
|
||||
if (admin != null && !admins.contains(admin))
|
||||
{
|
||||
admins.add(admin);
|
||||
|
@ -53,6 +53,6 @@ public class TFGuildsBridge extends FreedomService
|
||||
{
|
||||
return false;
|
||||
}
|
||||
return Common.IN_GUILD_CHAT.contains(player);
|
||||
return Common.GUILD_CHAT.contains(player);
|
||||
}
|
||||
}
|
@ -15,7 +15,6 @@ public class WorldGuardBridge extends FreedomService
|
||||
@Override
|
||||
public void onStart()
|
||||
{
|
||||
plugin.wr.protectWorld(plugin.wm.hubworld.getWorld());
|
||||
plugin.wr.protectWorld(plugin.wm.masterBuilderWorld.getWorld());
|
||||
}
|
||||
|
||||
|
@ -65,7 +65,7 @@ public class Command_ban extends FreedomCommand
|
||||
final Player player = getPlayer(args[0]);
|
||||
if (player == null)
|
||||
{
|
||||
final PlayerData entry = plugin.pl.getData(args[0]);
|
||||
final PlayerData entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0]));
|
||||
|
||||
if (entry == null)
|
||||
{
|
||||
|
@ -1,6 +1,8 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
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.util.FUtil;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -75,9 +77,11 @@ public class Command_blockcmd extends FreedomCommand
|
||||
FPlayer playerdata = plugin.pl.getPlayer(player);
|
||||
if (!playerdata.allCommandsBlocked())
|
||||
{
|
||||
playerdata.setCommandsBlocked(true);
|
||||
FUtil.adminAction(sender.getName(), "Blocking all commands for " + player.getName(), true);
|
||||
playerdata.setCommandsBlocked(true);
|
||||
msg("Blocked commands for " + player.getName() + ".");
|
||||
|
||||
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.BLOCKCMD, null));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -1,6 +1,8 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
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.util.FUtil;
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
@ -128,6 +130,8 @@ public class Command_blockedit extends FreedomCommand
|
||||
|
||||
msg(player2, "Your block modification abilities have been blocked.", ChatColor.RED);
|
||||
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;
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
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.util.FUtil;
|
||||
import org.apache.commons.lang3.ArrayUtils;
|
||||
@ -125,6 +127,7 @@ public class Command_blockpvp extends FreedomCommand
|
||||
{
|
||||
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("Disabled PVP for " + p.getName());
|
||||
|
@ -5,6 +5,8 @@ import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
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.util.FUtil;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -75,15 +77,41 @@ public class Command_cage extends FreedomCommand
|
||||
}
|
||||
case "block":
|
||||
{
|
||||
if (Material.matchMaterial(args[2]) != null)
|
||||
if (args.length >= 3)
|
||||
{
|
||||
// Checks the validity of the Material and checks if it's a block.
|
||||
// This is incredibly inefficient, as Spigot's isBlock() method in Material is an actual
|
||||
// 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);
|
||||
break;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
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);
|
||||
@ -96,17 +124,9 @@ public class Command_cage extends FreedomCommand
|
||||
{
|
||||
fPlayer.getCageData().cage(location, outerMaterial, innerMaterial);
|
||||
}
|
||||
|
||||
player.setGameMode(GameMode.SURVIVAL);
|
||||
|
||||
if (outerMaterial == Material.PLAYER_HEAD)
|
||||
{
|
||||
FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true);
|
||||
}
|
||||
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.CAGE, null));
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@ import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH)
|
||||
@CommandParameters(description = "Clears the chat.", usage = "/<command>", aliases = "cc")
|
||||
public class Command_clearchat extends FreedomCommand
|
||||
public class Command_cleanchat extends FreedomCommand
|
||||
{
|
||||
|
||||
@Override
|
@ -56,7 +56,7 @@ public class Command_doom extends FreedomCommand
|
||||
plugin.ptero.updateAccountStatus(admin);
|
||||
if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean())
|
||||
{
|
||||
Discord.syncRoles(admin, plugin.pl.getData(admin.getName()).getDiscordID());
|
||||
Discord.syncRoles(admin, plugin.pl.getData(admin.getUniqueId()).getDiscordID());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -64,6 +64,12 @@ public class Command_entitywipe extends FreedomCommand
|
||||
return true;
|
||||
}
|
||||
|
||||
if (type == EntityType.PLAYER)
|
||||
{
|
||||
msg("Player entities cannot be purged.", ChatColor.RED);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (!getAllEntities().contains(type))
|
||||
{
|
||||
msg(FUtil.formatName(type.name()) + " is an entity, however: it is a mob.", ChatColor.RED);
|
||||
|
@ -23,12 +23,12 @@ public class Command_freeze extends FreedomCommand
|
||||
|
||||
if (!gFreeze)
|
||||
{
|
||||
FUtil.adminAction(sender.getName(), "Disabling global player freeze", false);
|
||||
FUtil.adminAction(sender.getName(), "Unfreezing all players", false);
|
||||
msg("Players are now free to move.");
|
||||
return true;
|
||||
}
|
||||
|
||||
FUtil.adminAction(sender.getName(), "Enabling global player freeze", false);
|
||||
FUtil.adminAction(sender.getName(), "Freezing all players", false);
|
||||
for (Player player : server.getOnlinePlayers())
|
||||
{
|
||||
if (!isAdmin(player))
|
||||
|
@ -26,7 +26,7 @@ public class Command_glow extends FreedomCommand
|
||||
playerSender.addPotionEffect(glow);
|
||||
glowing = true;
|
||||
}
|
||||
msg("You " + (glowing ? "are now" : "no longer") + " glowing.");
|
||||
msg("You are " + (glowing ? "now" : "no longer") + " glowing.");
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -1,202 +0,0 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import io.papermc.lib.PaperLib;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.world.WorldTime;
|
||||
import me.totalfreedom.totalfreedommod.world.WorldWeather;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = Rank.OP, source = SourceType.BOTH)
|
||||
@CommandParameters(description = "HubWorld management stuff",
|
||||
usage = "/<command> [time <morning | noon | evening | night> | weather <off | rain | storm>]",
|
||||
aliases = "hw,hub")
|
||||
public class Command_hubworld extends FreedomCommand
|
||||
{
|
||||
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
CommandMode commandMode = null;
|
||||
|
||||
if (args.length == 0)
|
||||
{
|
||||
commandMode = CommandMode.TELEPORT;
|
||||
}
|
||||
else if (args.length >= 2)
|
||||
{
|
||||
if ("time".equalsIgnoreCase(args[0]))
|
||||
{
|
||||
commandMode = CommandMode.TIME;
|
||||
}
|
||||
else if ("weather".equalsIgnoreCase(args[0]))
|
||||
{
|
||||
commandMode = CommandMode.WEATHER;
|
||||
}
|
||||
}
|
||||
|
||||
if (commandMode == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
switch (commandMode)
|
||||
{
|
||||
case TELEPORT:
|
||||
{
|
||||
if (!(sender instanceof Player) || playerSender == null)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
World hubWorld = null;
|
||||
try
|
||||
{
|
||||
hubWorld = plugin.wm.hubworld.getWorld();
|
||||
}
|
||||
catch (Exception ignored)
|
||||
{
|
||||
}
|
||||
|
||||
if (hubWorld == null || playerSender.getWorld() == hubWorld)
|
||||
{
|
||||
msg("Going to the main world.");
|
||||
PaperLib.teleportAsync(playerSender, server.getWorlds().get(0).getSpawnLocation());
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("Going to the hub world");
|
||||
plugin.wm.hubworld.sendToWorld(playerSender);
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case TIME:
|
||||
{
|
||||
assertCommandPerms(sender, playerSender);
|
||||
|
||||
if (args.length == 2)
|
||||
{
|
||||
WorldTime timeOfDay = WorldTime.getByAlias(args[1]);
|
||||
if (timeOfDay != null)
|
||||
{
|
||||
plugin.wm.hubworld.setTimeOfDay(timeOfDay);
|
||||
msg("Hub world time set to: " + timeOfDay.name());
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("Invalid time of day. Can be: sunrise, noon, sunset, midnight");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case WEATHER:
|
||||
{
|
||||
assertCommandPerms(sender, playerSender);
|
||||
|
||||
if (args.length == 2)
|
||||
{
|
||||
WorldWeather weatherMode = WorldWeather.getByAlias(args[1]);
|
||||
if (weatherMode != null)
|
||||
{
|
||||
plugin.wm.hubworld.setWeatherMode(weatherMode);
|
||||
msg("Hub world weather set to: " + weatherMode.name());
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("Invalid weather mode. Can be: off, rain, storm");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (PermissionDeniedException ex)
|
||||
{
|
||||
if (ex.getMessage().isEmpty())
|
||||
{
|
||||
return noPerms();
|
||||
}
|
||||
msg(ex.getMessage());
|
||||
return true;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args)
|
||||
{
|
||||
if (!plugin.al.isAdmin(sender))
|
||||
{
|
||||
return Collections.emptyList();
|
||||
}
|
||||
if (args.length == 1)
|
||||
{
|
||||
return Arrays.asList("time", "weather");
|
||||
}
|
||||
else if (args.length == 2)
|
||||
{
|
||||
if (args[0].equals("time"))
|
||||
{
|
||||
return Arrays.asList("morning", "noon", "evening", "night");
|
||||
}
|
||||
else if (args[0].equals("weather"))
|
||||
{
|
||||
return Arrays.asList("off", "rain", "storm");
|
||||
}
|
||||
}
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
// TODO: Redo this properly
|
||||
private void assertCommandPerms(CommandSender sender, Player playerSender) throws PermissionDeniedException
|
||||
{
|
||||
if (!(sender instanceof Player) || playerSender == null || !plugin.al.isAdmin(playerSender))
|
||||
{
|
||||
throw new PermissionDeniedException();
|
||||
}
|
||||
}
|
||||
|
||||
private enum CommandMode
|
||||
{
|
||||
TELEPORT, TIME, WEATHER
|
||||
}
|
||||
|
||||
private static class PermissionDeniedException extends Exception
|
||||
{
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private PermissionDeniedException()
|
||||
{
|
||||
super("");
|
||||
}
|
||||
|
||||
private PermissionDeniedException(String string)
|
||||
{
|
||||
super(string);
|
||||
}
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package me.totalfreedom.totalfreedommod.command;
|
||||
import me.totalfreedom.totalfreedommod.discord.Discord;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -24,7 +25,7 @@ public class Command_linkdiscord extends FreedomCommand
|
||||
|
||||
if (args.length > 1 && plugin.al.isAdmin(playerSender))
|
||||
{
|
||||
PlayerData playerData = plugin.pl.getData(args[0]);
|
||||
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[0]));
|
||||
if (playerData == null)
|
||||
{
|
||||
msg(PLAYER_NOT_FOUND);
|
||||
|
@ -88,7 +88,7 @@ public class Command_list extends FreedomCommand
|
||||
|
||||
List<String> n = new ArrayList<>();
|
||||
|
||||
if (listFilter == ListFilter.TELNET_SESSIONS && plugin.al.isAdmin(sender) && plugin.al.getAdmin(playerSender).getRank().isAtLeast(Rank.ADMIN))
|
||||
if (listFilter == ListFilter.TELNET_SESSIONS && plugin.al.isAdmin(sender))
|
||||
{
|
||||
List<Admin> connectedAdmins = plugin.btb.getConnectedAdmins();
|
||||
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(connectedAdmins.size())
|
||||
@ -101,8 +101,7 @@ public class Command_list extends FreedomCommand
|
||||
}
|
||||
else
|
||||
{
|
||||
int count = server.getOnlinePlayers().size() - AdminList.vanished.size();
|
||||
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(count < 0 ? 0 : count)
|
||||
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(FUtil.getFakePlayerCount())
|
||||
.append(ChatColor.BLUE)
|
||||
.append(" out of a maximum ")
|
||||
.append(ChatColor.RED)
|
||||
|
@ -35,14 +35,14 @@ public class Command_manageshop extends FreedomCommand
|
||||
}
|
||||
switch (args[1])
|
||||
{
|
||||
|
||||
case "add":
|
||||
{
|
||||
try
|
||||
{
|
||||
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
||||
if (!args[3].equals("all"))
|
||||
{
|
||||
PlayerData playerData = plugin.pl.getData(args[3]);
|
||||
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3]));
|
||||
if (playerData == null)
|
||||
{
|
||||
msg(PLAYER_NOT_FOUND);
|
||||
@ -75,13 +75,15 @@ public class Command_manageshop extends FreedomCommand
|
||||
msg("Invalid number: " + args[2], ChatColor.RED);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
case "remove":
|
||||
{
|
||||
try
|
||||
{
|
||||
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
||||
if (!args[3].equals("all"))
|
||||
{
|
||||
PlayerData playerData = plugin.pl.getData(args[3]);
|
||||
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3]));
|
||||
if (playerData == null)
|
||||
{
|
||||
msg(PLAYER_NOT_FOUND);
|
||||
@ -122,11 +124,13 @@ public class Command_manageshop extends FreedomCommand
|
||||
msg("Invalid number: " + args[2], ChatColor.RED);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
case "set":
|
||||
{
|
||||
try
|
||||
{
|
||||
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
||||
PlayerData playerData = plugin.pl.getData(args[3]);
|
||||
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3]));
|
||||
if (playerData == null)
|
||||
{
|
||||
msg(PLAYER_NOT_FOUND);
|
||||
@ -148,6 +152,11 @@ public class Command_manageshop extends FreedomCommand
|
||||
return true;
|
||||
}
|
||||
}
|
||||
default:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (args[0].equals("items"))
|
||||
{
|
||||
@ -171,7 +180,7 @@ public class Command_manageshop extends FreedomCommand
|
||||
return true;
|
||||
}
|
||||
|
||||
PlayerData playerData = plugin.pl.getData(args[3]);
|
||||
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3]));
|
||||
if (playerData == null)
|
||||
{
|
||||
msg(PLAYER_NOT_FOUND);
|
||||
@ -196,7 +205,7 @@ public class Command_manageshop extends FreedomCommand
|
||||
return true;
|
||||
}
|
||||
|
||||
PlayerData playerData = plugin.pl.getData(args[3]);
|
||||
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[3]));
|
||||
if (playerData == null)
|
||||
{
|
||||
msg(PLAYER_NOT_FOUND);
|
||||
|
@ -45,7 +45,7 @@ public class Command_mbconfig extends FreedomCommand
|
||||
return true;
|
||||
}
|
||||
|
||||
PlayerData data = plugin.pl.getData(sender.getName());
|
||||
PlayerData data = plugin.pl.getData(FUtil.getUUIDFromName(sender.getName()));
|
||||
if (!data.isMasterBuilder())
|
||||
{
|
||||
msg("You are not a master builder!", ChatColor.RED);
|
||||
@ -74,7 +74,7 @@ public class Command_mbconfig extends FreedomCommand
|
||||
return true;
|
||||
}
|
||||
|
||||
PlayerData data = plugin.pl.getData(sender.getName());
|
||||
PlayerData data = plugin.pl.getData(FUtil.getUUIDFromName(sender.getName()));
|
||||
final String targetIp = FUtil.getIp(playerSender);
|
||||
|
||||
if (!data.isMasterBuilder())
|
||||
@ -101,14 +101,14 @@ public class Command_mbconfig extends FreedomCommand
|
||||
return false;
|
||||
}
|
||||
|
||||
if (plugin.pl.canManageMasterBuilders(sender.getName()))
|
||||
if (plugin.pl.canManageMasterBuilders(FUtil.getUUIDFromName(sender.getName())))
|
||||
{
|
||||
return noPerms();
|
||||
}
|
||||
|
||||
final Player player = getPlayer(args[1]);
|
||||
|
||||
PlayerData data = player != null ? plugin.pl.getData(player) : plugin.pl.getData(args[1]);
|
||||
PlayerData data = player != null ? plugin.pl.getData(player) : plugin.pl.getData(FUtil.getUUIDFromName(args[1]));
|
||||
|
||||
if (data == null)
|
||||
{
|
||||
@ -157,13 +157,13 @@ public class Command_mbconfig extends FreedomCommand
|
||||
return false;
|
||||
}
|
||||
|
||||
if (plugin.pl.canManageMasterBuilders(sender.getName()))
|
||||
if (plugin.pl.canManageMasterBuilders(FUtil.getUUIDFromName(sender.getName())))
|
||||
{
|
||||
return noPerms();
|
||||
}
|
||||
|
||||
Player player = getPlayer(args[1]);
|
||||
PlayerData data = player != null ? plugin.pl.getData(player) : plugin.pl.getData(args[1]);
|
||||
PlayerData data = player != null ? plugin.pl.getData(player) : plugin.pl.getData(FUtil.getUUIDFromName(args[1]));
|
||||
|
||||
if (data == null || !data.isMasterBuilder())
|
||||
{
|
||||
@ -210,7 +210,7 @@ public class Command_mbconfig extends FreedomCommand
|
||||
}
|
||||
else if (args[0].equalsIgnoreCase("clearip"))
|
||||
{
|
||||
PlayerData data = plugin.pl.getData(sender.getName());
|
||||
PlayerData data = plugin.pl.getData(FUtil.getUUIDFromName(sender.getName()));
|
||||
if (data.isMasterBuilder())
|
||||
{
|
||||
return data.getIps();
|
||||
|
@ -170,7 +170,7 @@ public class Command_myadmin extends FreedomCommand
|
||||
msg("Role syncing is not enabled.", ChatColor.RED);
|
||||
return true;
|
||||
}
|
||||
PlayerData playerData = plugin.pl.getData(target.getName());
|
||||
PlayerData playerData = plugin.pl.getData(target.getUniqueId());
|
||||
if (playerData.getDiscordID() == null)
|
||||
{
|
||||
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"))
|
||||
{
|
||||
Admin admin = plugin.al.getEntryByName(args[1]);
|
||||
Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(args[1]));
|
||||
if (admin != null)
|
||||
{
|
||||
return admin.getIps();
|
||||
|
@ -31,7 +31,7 @@ public class Command_notes extends FreedomCommand
|
||||
final Player player = getPlayer(args[0]);
|
||||
if (player == null)
|
||||
{
|
||||
final PlayerData entry = plugin.pl.getData(args[0]);
|
||||
final PlayerData entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0]));
|
||||
|
||||
if (entry == null)
|
||||
{
|
||||
@ -39,7 +39,7 @@ public class Command_notes extends FreedomCommand
|
||||
return true;
|
||||
}
|
||||
|
||||
playerData = plugin.pl.getData(entry.getName());
|
||||
playerData = entry;
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -116,9 +116,13 @@ public class Command_notes extends FreedomCommand
|
||||
msg("Cleared " + count + " notes.", ChatColor.GREEN);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args)
|
||||
|
@ -1,6 +1,8 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
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.util.FUtil;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -56,11 +58,13 @@ public class Command_orbit extends FreedomCommand
|
||||
}
|
||||
}
|
||||
|
||||
FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false);
|
||||
|
||||
player.setGameMode(GameMode.SURVIVAL);
|
||||
playerdata.startOrbiting(strength);
|
||||
|
||||
player.setVelocity(new Vector(0, strength, 0));
|
||||
FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false);
|
||||
|
||||
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.ORBIT, null));
|
||||
return true;
|
||||
}
|
||||
}
|
@ -29,6 +29,7 @@ public class Command_potion extends FreedomCommand
|
||||
switch (args.length)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
if (args[0].equalsIgnoreCase("list"))
|
||||
{
|
||||
List<String> potionEffectTypeNames = new ArrayList<>();
|
||||
@ -58,14 +59,16 @@ public class Command_potion extends FreedomCommand
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
if (args[0].equalsIgnoreCase("clear"))
|
||||
{
|
||||
Player target = playerSender;
|
||||
if (args.length == 2)
|
||||
{
|
||||
if (!plugin.al.isAdmin(sender) && !target.equals(getPlayer(sender.getName())))
|
||||
if (!plugin.al.isAdmin(sender) && !args[1].equalsIgnoreCase(sender.getName()))
|
||||
{
|
||||
msg(ChatColor.RED + "Only admins can clear potion effects from other players.");
|
||||
return true;
|
||||
@ -95,16 +98,18 @@ public class Command_potion extends FreedomCommand
|
||||
msg("Cleared all active potion effects " + (!target.equals(playerSender) ? "from player " + target.getName() + "." : "from yourself."), ChatColor.AQUA);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 4:
|
||||
case 5:
|
||||
{
|
||||
if (args[0].equalsIgnoreCase("add"))
|
||||
{
|
||||
Player target = playerSender;
|
||||
|
||||
if (args.length == 5)
|
||||
{
|
||||
if (!plugin.al.isAdmin(sender) && !getPlayer(args[4]).equals(getPlayer(sender.getName())))
|
||||
if (!plugin.al.isAdmin(sender) && !args[4].equalsIgnoreCase(sender.getName()))
|
||||
{
|
||||
msg("Only admins can apply potion effects to other players.", ChatColor.RED);
|
||||
return true;
|
||||
@ -167,9 +172,12 @@ public class Command_potion extends FreedomCommand
|
||||
+ (!target.equals(playerSender) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA);
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -179,14 +187,17 @@ public class Command_potion extends FreedomCommand
|
||||
switch (args.length)
|
||||
{
|
||||
case 1:
|
||||
{
|
||||
List<String> arguments = new ArrayList<>(Arrays.asList("list", "clear", "add"));
|
||||
if (plugin.al.isAdmin(sender))
|
||||
{
|
||||
arguments.add("clearall");
|
||||
}
|
||||
return arguments;
|
||||
}
|
||||
|
||||
case 2:
|
||||
{
|
||||
if (args[0].equals("clear"))
|
||||
{
|
||||
if (plugin.al.isAdmin(sender))
|
||||
@ -199,22 +210,28 @@ public class Command_potion extends FreedomCommand
|
||||
return getAllPotionTypes();
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 3:
|
||||
{
|
||||
if (args[0].equals("add"))
|
||||
{
|
||||
return Collections.singletonList("<duration>");
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 4:
|
||||
{
|
||||
if (args[0].equals("add"))
|
||||
{
|
||||
return Collections.singletonList("<amplifier>");
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 5:
|
||||
{
|
||||
if (plugin.al.isAdmin(sender))
|
||||
{
|
||||
if (args[0].equals("add"))
|
||||
@ -225,6 +242,12 @@ public class Command_potion extends FreedomCommand
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
|
@ -26,7 +26,7 @@ public class Command_ride extends FreedomCommand
|
||||
final FPlayer fPlayer = plugin.pl.getPlayer(playerSender);
|
||||
if (fPlayer.getCageData().isCaged())
|
||||
{
|
||||
msg("You cannot used this command while caged.");
|
||||
msg("You cannot use this command while caged.");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -5,6 +5,8 @@ import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.admin.Admin;
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.discord.Discord;
|
||||
@ -34,7 +36,7 @@ public class Command_saconfig extends FreedomCommand
|
||||
{
|
||||
case "list":
|
||||
{
|
||||
msg("Admins: " + StringUtils.join(plugin.al.getAdminNames(), ", "), ChatColor.GOLD);
|
||||
msg("Admins: " + StringUtils.join(plugin.al.getAdminUUIDs().stream().map(FUtil::getNameFromUUID).collect(Collectors.toList()), ", "), ChatColor.GOLD);
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -45,7 +47,7 @@ public class Command_saconfig extends FreedomCommand
|
||||
|
||||
FUtil.adminAction(sender.getName(), "Cleaning the admin list", true);
|
||||
plugin.al.deactivateOldEntries(true);
|
||||
msg("Admins: " + StringUtils.join(plugin.al.getAdminNames(), ", "), ChatColor.GOLD);
|
||||
msg("Admins: " + StringUtils.join(plugin.al.getAdminUUIDs().stream().map(FUtil::getNameFromUUID).collect(Collectors.toList()), ", "), ChatColor.GOLD);
|
||||
|
||||
return true;
|
||||
}
|
||||
@ -89,7 +91,7 @@ public class Command_saconfig extends FreedomCommand
|
||||
return true;
|
||||
}
|
||||
|
||||
Admin admin = plugin.al.getEntryByName(args[1]);
|
||||
Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(args[1]));
|
||||
if (admin == null)
|
||||
{
|
||||
msg("Unknown admin: " + args[1]);
|
||||
@ -109,7 +111,7 @@ public class Command_saconfig extends FreedomCommand
|
||||
|
||||
if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean())
|
||||
{
|
||||
Discord.syncRoles(admin, plugin.pl.getData(admin.getName()).getDiscordID());
|
||||
Discord.syncRoles(admin, plugin.pl.getData(admin.getUniqueId()).getDiscordID());
|
||||
}
|
||||
|
||||
plugin.ptero.updateAccountStatus(admin);
|
||||
@ -127,7 +129,7 @@ public class Command_saconfig extends FreedomCommand
|
||||
|
||||
checkRank(Rank.ADMIN);
|
||||
|
||||
Admin admin = plugin.al.getEntryByName(args[1]);
|
||||
Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(args[1]));
|
||||
|
||||
if (admin == null)
|
||||
{
|
||||
@ -206,12 +208,12 @@ public class Command_saconfig extends FreedomCommand
|
||||
{
|
||||
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()))
|
||||
{
|
||||
admin.setName(player.getName());
|
||||
plugin.sql.updateAdminName(oldName, admin.getName());
|
||||
}
|
||||
}*/
|
||||
admin.addIp(FUtil.getIp(player));
|
||||
|
||||
admin.setActive(true);
|
||||
@ -259,7 +261,7 @@ public class Command_saconfig extends FreedomCommand
|
||||
checkRank(Rank.ADMIN);
|
||||
|
||||
Player player = getPlayer(args[1]);
|
||||
Admin admin = player != null ? plugin.al.getAdmin(player) : plugin.al.getEntryByName(args[1]);
|
||||
Admin admin = player != null ? plugin.al.getAdmin(player) : plugin.al.getEntryByUUID(FUtil.getUUIDFromName(args[1]));
|
||||
|
||||
if (admin == null)
|
||||
{
|
||||
@ -280,7 +282,7 @@ public class Command_saconfig extends FreedomCommand
|
||||
|
||||
if (plugin.dc.enabled && ConfigEntry.DISCORD_ROLE_SYNC.getBoolean())
|
||||
{
|
||||
Discord.syncRoles(admin, plugin.pl.getData(admin.getName()).getDiscordID());
|
||||
Discord.syncRoles(admin, plugin.pl.getData(admin.getUniqueId()).getDiscordID());
|
||||
}
|
||||
|
||||
plugin.ptero.updateAccountStatus(admin);
|
||||
|
@ -0,0 +1,97 @@
|
||||
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;
|
||||
}
|
||||
}
|
@ -3,6 +3,7 @@ package me.totalfreedom.totalfreedommod.command;
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -38,7 +39,7 @@ public class Command_settotalvotes extends FreedomCommand
|
||||
return true;
|
||||
}
|
||||
|
||||
PlayerData playerData = plugin.pl.getData(args[1]);
|
||||
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[1]));
|
||||
|
||||
if (playerData == null)
|
||||
{
|
||||
|
@ -15,7 +15,7 @@ import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH)
|
||||
@CommandParameters(description = "Someone being a little bitch? Smite them down...", usage = "/<command> <player> [reason] [-c | -q]")
|
||||
@CommandParameters(description = "Someone being a little bitch? Smite them down...", usage = "/<command> <player> [reason] [-ci | -q]")
|
||||
public class Command_smite extends FreedomCommand
|
||||
{
|
||||
|
||||
@ -106,9 +106,9 @@ public class Command_smite extends FreedomCommand
|
||||
reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length - 1), " ");
|
||||
}
|
||||
}
|
||||
else if (args[args.length - 1].equalsIgnoreCase("-c"))
|
||||
else if (args[args.length - 1].equalsIgnoreCase("-ci"))
|
||||
{
|
||||
if (args[args.length - 1].equalsIgnoreCase("-c"))
|
||||
if (args[args.length - 1].equalsIgnoreCase("-ci"))
|
||||
{
|
||||
clearinv = true;
|
||||
}
|
||||
|
@ -1,7 +1,8 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
@ -19,9 +20,6 @@ import org.bukkit.entity.Player;
|
||||
public class Command_tag extends FreedomCommand
|
||||
{
|
||||
|
||||
public static final List<String> FORBIDDEN_WORDS = Arrays.asList(
|
||||
"admin", "owner", "moderator", "developer", "console", "dev", "staff", "mod", "sra", "tca", "sta", "sa");
|
||||
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
@ -107,6 +105,11 @@ public class Command_tag extends FreedomCommand
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (args.length >= 2)
|
||||
@ -170,7 +173,7 @@ public class Command_tag extends FreedomCommand
|
||||
|
||||
if (!plugin.al.isAdmin(sender))
|
||||
{
|
||||
for (String word : FORBIDDEN_WORDS)
|
||||
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||
{
|
||||
if (rawTag.contains(word))
|
||||
{
|
||||
@ -261,7 +264,7 @@ public class Command_tag extends FreedomCommand
|
||||
|
||||
if (!plugin.al.isAdmin(sender))
|
||||
{
|
||||
for (String word : FORBIDDEN_WORDS)
|
||||
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||
{
|
||||
if (rawTag.contains(word))
|
||||
{
|
||||
@ -281,6 +284,11 @@ public class Command_tag extends FreedomCommand
|
||||
msg("Tag set to '" + outputTag + ChatColor.GRAY + "'." + (save ? " (Saved)" : "") + from + to);
|
||||
return true;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
@ -1,5 +1,6 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
@ -43,7 +44,7 @@ public class Command_tagnyan extends FreedomCommand
|
||||
|
||||
if (!plugin.al.isAdmin(sender))
|
||||
{
|
||||
for (String word : Command_tag.FORBIDDEN_WORDS)
|
||||
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||
{
|
||||
if (rawTag.contains(word))
|
||||
{
|
||||
|
@ -1,5 +1,6 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
@ -33,7 +34,7 @@ public class Command_tagrainbow extends FreedomCommand
|
||||
return true;
|
||||
}
|
||||
|
||||
for (String word : Command_tag.FORBIDDEN_WORDS)
|
||||
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||
{
|
||||
if (rawTag.contains(word))
|
||||
{
|
||||
|
@ -46,7 +46,7 @@ public class Command_tban extends FreedomCommand
|
||||
final PlayerData entry;
|
||||
if (player == null)
|
||||
{
|
||||
entry = plugin.pl.getData(args[0]);
|
||||
entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0]));
|
||||
|
||||
if (entry == null)
|
||||
{
|
||||
|
@ -13,6 +13,8 @@ import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -44,26 +46,32 @@ public class Command_tempban extends FreedomCommand
|
||||
}
|
||||
}
|
||||
|
||||
final String username;
|
||||
final List<String> ips = new ArrayList<>();
|
||||
|
||||
final Player player = getPlayer(args[0]);
|
||||
final PlayerData entry;
|
||||
if (player == null)
|
||||
{
|
||||
entry = plugin.pl.getData(args[0]);
|
||||
entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0]));
|
||||
|
||||
if (entry == null)
|
||||
{
|
||||
msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
|
||||
return true;
|
||||
}
|
||||
|
||||
username = entry.getName();
|
||||
ips.addAll(entry.getIps());
|
||||
}
|
||||
else
|
||||
{
|
||||
entry = plugin.pl.getData(player);
|
||||
username = player.getName();
|
||||
ips.add(FUtil.getIp(player));
|
||||
}
|
||||
final List<String> ips = new ArrayList<>(entry.getIps());
|
||||
|
||||
assert player != null;
|
||||
final StringBuilder message = new StringBuilder("Temporarily banned " + player.getName());
|
||||
final StringBuilder message = new StringBuilder("Temporarily banned " + username);
|
||||
|
||||
Date expires = FUtil.parseDateOffset("30m");
|
||||
message.append(" until ").append(date_format.format(expires));
|
||||
@ -80,7 +88,26 @@ public class Command_tempban extends FreedomCommand
|
||||
message.append(", Reason: \"").append(reason).append("\"");
|
||||
}
|
||||
|
||||
Ban ban;
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
ban = Ban.forPlayer(player, sender, expires, reason);
|
||||
}
|
||||
else
|
||||
{
|
||||
ban = Ban.forPlayerName(username, sender, expires, reason);
|
||||
}
|
||||
|
||||
for (String ip : ips)
|
||||
{
|
||||
ban.addIp(ip);
|
||||
}
|
||||
plugin.bm.addBan(ban);
|
||||
|
||||
if (!quiet)
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
// Strike with lightning
|
||||
final Location targetPos = player.getLocation();
|
||||
@ -92,26 +119,28 @@ public class Command_tempban extends FreedomCommand
|
||||
Objects.requireNonNull(targetPos.getWorld()).strikeLightningEffect(strike_pos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FUtil.adminAction(sender.getName(), message.toString(), true);
|
||||
}
|
||||
else
|
||||
{
|
||||
msg("Quietly temporarily banned " + player.getName() + ".");
|
||||
msg("Quietly temporarily banned " + username + ".");
|
||||
}
|
||||
|
||||
|
||||
Ban ban;
|
||||
|
||||
ban = Ban.forPlayer(player, sender, null, reason);
|
||||
|
||||
for (String ip : ips)
|
||||
if (player != null)
|
||||
{
|
||||
ban.addIp(ip);
|
||||
}
|
||||
plugin.bm.addBan(ban);
|
||||
player.kickPlayer(ban.bakeKickMessage());
|
||||
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.TEMPBAN, reason));
|
||||
for (Player p : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
if (FUtil.getIp(p).equals(FUtil.getIp(player)))
|
||||
{
|
||||
p.kickPlayer(ChatColor.RED + "You've been kicked because someone on your IP has been banned.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
plugin.pul.logPunishment(new Punishment(username, ips.get(0), sender.getName(), PunishmentType.TEMPBAN, reason));
|
||||
return true;
|
||||
}
|
||||
}
|
@ -16,6 +16,12 @@ import org.bukkit.entity.Player;
|
||||
@CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/<command> [option] [value] [value]")
|
||||
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
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
@ -23,38 +29,10 @@ public class Command_toggle extends FreedomCommand
|
||||
if (args.length == 0)
|
||||
{
|
||||
msg("Available toggles: ");
|
||||
msg("- waterplace");
|
||||
msg("- fireplace");
|
||||
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");
|
||||
for (String toggle : toggles)
|
||||
{
|
||||
msg("- " + toggle);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -304,6 +282,16 @@ public class Command_toggle extends FreedomCommand
|
||||
toggle("Block gravity is", ConfigEntry.ALLOW_GRAVITY);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
{
|
||||
msg("Available toggles: ");
|
||||
for (String toggle : toggles)
|
||||
{
|
||||
msg("- " + toggle);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -22,7 +22,7 @@ public class Command_unban extends FreedomCommand
|
||||
if (args.length > 0)
|
||||
{
|
||||
String username;
|
||||
final PlayerData entry = plugin.pl.getData(args[0]);
|
||||
final PlayerData entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0]));
|
||||
|
||||
if (entry == null)
|
||||
{
|
||||
|
@ -2,6 +2,7 @@ package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -23,7 +24,7 @@ public class Command_unlinkdiscord extends FreedomCommand
|
||||
|
||||
if (args.length != 0 && plugin.al.isAdmin(playerSender))
|
||||
{
|
||||
PlayerData playerData = plugin.pl.getData(args[0]);
|
||||
PlayerData playerData = plugin.pl.getData(FUtil.getUUIDFromName(args[0]));
|
||||
if (playerData == null)
|
||||
{
|
||||
msg(PLAYER_NOT_FOUND);
|
||||
|
@ -1,6 +1,9 @@
|
||||
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.util.FUtil;
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -53,15 +56,16 @@ public class Command_warn extends FreedomCommand
|
||||
|
||||
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);
|
||||
msg(ChatColor.GREEN + "You have successfully warned " + player.getName());
|
||||
msg(player, ChatColor.RED + "[WARNING] You received a warning from " + sender.getName() + ": " + warnReason);
|
||||
plugin.pl.getPlayer(player).incrementWarnings(quiet);
|
||||
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.WARN, warnReason));
|
||||
|
||||
if (quiet)
|
||||
{
|
||||
msg("Warned " + player.getName() + " quietly");
|
||||
return true;
|
||||
msg("You have successfully warned " + player.getName() + " quietly.");
|
||||
}
|
||||
|
||||
msg(player, ChatColor.RED + "[WARNING] You received a warning from " + sender.getName() + ": " + warnReason);
|
||||
else
|
||||
{
|
||||
String adminNotice = ChatColor.RED +
|
||||
sender.getName() +
|
||||
" - " +
|
||||
@ -71,7 +75,9 @@ public class Command_warn extends FreedomCommand
|
||||
ChatColor.YELLOW +
|
||||
warnReason;
|
||||
plugin.al.messageAllAdmins(adminNotice);
|
||||
plugin.pl.getPlayer(player).incrementWarnings();
|
||||
|
||||
msg("You have successfully warned " + player.getName() + ".");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
@ -3,6 +3,8 @@ package me.totalfreedom.totalfreedommod.command;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
@ -15,14 +17,6 @@ import org.bukkit.entity.Player;
|
||||
public class Command_wildcard extends FreedomCommand
|
||||
{
|
||||
|
||||
public static final List<String> BLOCKED_COMMANDS = Arrays.asList(
|
||||
"wildcard",
|
||||
"gtfo",
|
||||
"doom",
|
||||
"slconfig",
|
||||
"smite"
|
||||
);
|
||||
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
@ -52,7 +46,7 @@ public class Command_wildcard extends FreedomCommand
|
||||
aliases = Arrays.asList(fCmd.getAliases().split(","));
|
||||
}
|
||||
|
||||
for (String blockedCommand : BLOCKED_COMMANDS)
|
||||
for (String blockedCommand : ConfigEntry.WILDCARD_BLOCKED_COMMANDS.getStringList())
|
||||
{
|
||||
if (blockedCommand.equals(args[0].toLowerCase()) || aliases.contains(blockedCommand))
|
||||
{
|
||||
|
@ -1,37 +0,0 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_CONSOLE)
|
||||
@CommandParameters(description = "Wipes the CoreProtect data for the flatlands", usage = "/<command>")
|
||||
public class Command_wipecoreprotectdata extends FreedomCommand
|
||||
{
|
||||
|
||||
@Override
|
||||
public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
if (!plugin.cpb.isEnabled())
|
||||
{
|
||||
msg("CoreProtect is not enabled on this server");
|
||||
return true;
|
||||
}
|
||||
|
||||
FUtil.adminAction(sender.getName(), "Wiping CoreProtect data for the flatlands", true);
|
||||
|
||||
new BukkitRunnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
plugin.cpb.clearDatabase(plugin.wm.flatlands.getWorld());
|
||||
}
|
||||
}.runTaskAsynchronously(plugin);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1,53 +0,0 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true)
|
||||
@CommandParameters(description = "Wipe the flatlands map. Requires manual restart after command is used.", usage = "/<command>")
|
||||
public class Command_wipeflatlands extends FreedomCommand
|
||||
{
|
||||
|
||||
@Override
|
||||
public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
plugin.sf.setSavedFlag("do_wipe_flatlands", true);
|
||||
|
||||
if (!ConfigEntry.FLATLANDS_GENERATE.getBoolean())
|
||||
{
|
||||
msg("Flatlands generation is disabled, therefore it cannot be wiped.");
|
||||
return true;
|
||||
}
|
||||
|
||||
FUtil.bcastMsg("Server is going offline for flatlands wipe.", ChatColor.GRAY);
|
||||
|
||||
World flatlands = plugin.wm.flatlands.getWorld();
|
||||
|
||||
if (plugin.wgb.isEnabled())
|
||||
{
|
||||
plugin.wgb.wipeRegions(flatlands);
|
||||
}
|
||||
|
||||
for (Player player : server.getOnlinePlayers())
|
||||
{
|
||||
player.kickPlayer("Server is going offline for flatlands wipe, come back in a few minutes.");
|
||||
}
|
||||
|
||||
if (plugin.cpb.isEnabled())
|
||||
{
|
||||
plugin.cpb.clearDatabase(flatlands, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
server.shutdown();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1,40 +0,0 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true)
|
||||
@CommandParameters(description = "Wipes all logged punishments or punishments for a specific user.", usage = "/<command> <username | -a>")
|
||||
public class Command_wipepunishments extends FreedomCommand
|
||||
{
|
||||
|
||||
@Override
|
||||
public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
|
||||
if (args.length < 1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
if (args[0].equalsIgnoreCase("-a"))
|
||||
{
|
||||
FUtil.adminAction(sender.getName(), "Wiping the punishment history", true);
|
||||
|
||||
msg("Wiped " + plugin.pul.clear() + " punishments.");
|
||||
}
|
||||
else
|
||||
{
|
||||
String username = args[0];
|
||||
|
||||
FUtil.adminAction(sender.getName(), "Wiping the punishment history for " + username, true);
|
||||
|
||||
msg("Wiped " + plugin.pul.clear(username) + " punishments for " + username + ".");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1,73 +0,0 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE)
|
||||
@CommandParameters(description = "Wipe all WorldGuard regions for a specified world.", usage = "/<command> <world>")
|
||||
public class Command_wiperegions extends FreedomCommand
|
||||
{
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
if (!plugin.wgb.isEnabled())
|
||||
{
|
||||
msg("WorldGuard is not enabled.");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (args.length != 1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
World world = server.getWorld(args[0]);
|
||||
if (world == null)
|
||||
{
|
||||
msg("There is no world named \"" + args[0] + "\"", ChatColor.RED);
|
||||
return true;
|
||||
}
|
||||
|
||||
int regionsWiped = plugin.wgb.wipeRegions(world);
|
||||
|
||||
if (regionsWiped != 0)
|
||||
{
|
||||
FUtil.adminAction(sender.getName(), "Wiped all regions in " + world.getName(), true);
|
||||
msg("Wiped " + regionsWiped + " regions in " + world.getName());
|
||||
}
|
||||
else
|
||||
{
|
||||
msg(ChatColor.RED + "No regions were found in \"" + world.getName() + "\"");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public List<String> getAllWorldNames()
|
||||
{
|
||||
List<String> names = new ArrayList<>();
|
||||
for (World world : server.getWorlds())
|
||||
{
|
||||
names.add(world.getName());
|
||||
}
|
||||
return names;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args)
|
||||
{
|
||||
if (args.length == 1)
|
||||
{
|
||||
return getAllWorldNames();
|
||||
}
|
||||
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import com.earth2me.essentials.Essentials;
|
||||
import java.io.File;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true)
|
||||
@CommandParameters(description = "Removes all Essentials warps", usage = "/<command>")
|
||||
public class Command_wipewarps extends FreedomCommand
|
||||
{
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
if (!plugin.esb.isEnabled())
|
||||
{
|
||||
msg("Essentials is not enabled on this server.");
|
||||
return true;
|
||||
}
|
||||
|
||||
Essentials essentials = plugin.esb.getEssentialsPlugin();
|
||||
File warps = new File(essentials.getDataFolder(), "warps");
|
||||
FUtil.adminAction(sender.getName(), "Wiping Essentials warps", true);
|
||||
FUtil.deleteFolder(warps);
|
||||
//noinspection ResultOfMethodCallIgnored
|
||||
warps.mkdir();
|
||||
essentials.reload();
|
||||
msg("All warps deleted.");
|
||||
return true;
|
||||
}
|
||||
}
|
@ -83,6 +83,7 @@ public enum ConfigEntry
|
||||
DISCORD_NEW_ADMIN_ROLE_ID(String.class, "discord.admin_role_id"),
|
||||
DISCORD_SENIOR_ADMIN_ROLE_ID(String.class, "discord.senior_admin_role_id"),
|
||||
DISCORD_DEVELOPER_ROLE_ID(String.class, "discord.developer_role_id"),
|
||||
DISCORD_ASSISTANT_EXECUTIVE_ROLE_ID(String.class, "discord.assistant_executive_role_id"),
|
||||
DISCORD_EXECUTIVE_ROLE_ID(String.class, "discord.executive_role_id"),
|
||||
DISCORD_SERVER_OWNER_ROLE_ID(String.class, "discord.server_owner_role_id"),
|
||||
//
|
||||
@ -154,7 +155,10 @@ public enum ConfigEntry
|
||||
EXPLOSIVE_RADIUS(Double.class, "explosive_radius"),
|
||||
FREECAM_TRIGGER_COUNT(Integer.class, "freecam_trigger_count"),
|
||||
SERVICE_CHECKER_URL(String.class, "service_checker_url"),
|
||||
BLOCKED_COMMANDS(List.class, "blocked_commands"),
|
||||
BLOCKED_COMMANDS(List.class, "blocked_commands.global"),
|
||||
MUTED_BLOCKED_COMMANDS(List.class, "blocked_commands.muted"),
|
||||
WILDCARD_BLOCKED_COMMANDS(List.class, "blocked_commands.wildcard"),
|
||||
FORBIDDEN_WORDS(List.class, "forbidden_words"),
|
||||
HOST_SENDER_NAMES(List.class, "host_sender_names"),
|
||||
FAMOUS_PLAYERS(List.class, "famous_players"),
|
||||
ADMIN_ONLY_MODE(Boolean.class, "admin_only_mode"),
|
||||
|
@ -119,6 +119,11 @@ public class DiscordToAdminChatListener extends ListenerAdapter
|
||||
{
|
||||
return Title.EXECUTIVE;
|
||||
}
|
||||
// Assistant Executives
|
||||
else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_ASSISTANT_EXECUTIVE_ROLE_ID.getString())))
|
||||
{
|
||||
return Title.ASSTEXEC;
|
||||
}
|
||||
// Senior Admins
|
||||
else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_SENIOR_ADMIN_ROLE_ID.getString())))
|
||||
{
|
||||
|
@ -84,6 +84,11 @@ public class DiscordToMinecraftListener extends ListenerAdapter
|
||||
{
|
||||
return Title.EXECUTIVE.getColoredTag();
|
||||
}
|
||||
// Assistant Executives
|
||||
else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_ASSISTANT_EXECUTIVE_ROLE_ID.getString())))
|
||||
{
|
||||
return Title.ASSTEXEC.getColoredTag();
|
||||
}
|
||||
// Senior Admins
|
||||
else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_SENIOR_ADMIN_ROLE_ID.getString())))
|
||||
{
|
||||
|
@ -24,7 +24,7 @@ public class PrivateMessageListener extends ListenerAdapter
|
||||
player.setDiscordID(event.getMessage().getAuthor().getId());
|
||||
player.setVerification(true);
|
||||
|
||||
Admin admin = TotalFreedomMod.getPlugin().al.getEntryByName(name);
|
||||
Admin admin = TotalFreedomMod.getPlugin().al.getEntryByUUID(player.getUniqueId());
|
||||
if (admin != null)
|
||||
{
|
||||
Discord.syncRoles(admin, player.getDiscordID());
|
||||
|
@ -128,7 +128,7 @@ public class ItemFun extends FreedomService
|
||||
|
||||
LivingEntity livingEntity = (LivingEntity)event.getRightClicked();
|
||||
EntityType entityType = livingEntity.getType();
|
||||
if (!(entityType == fPlayer.mobThrowerCreature()))
|
||||
if (entityType != fPlayer.mobThrowerCreature())
|
||||
{
|
||||
return;
|
||||
}
|
||||
@ -304,6 +304,11 @@ public class ItemFun extends FreedomService
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
// Do nothing
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -73,7 +73,7 @@ public class Landminer extends FreedomService
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!(player.getLocation().distanceSquared(location) <= (landmine.radius * landmine.radius)))
|
||||
if (player.getLocation().distanceSquared(location) > (landmine.radius * landmine.radius))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
@ -79,16 +79,23 @@ public class Module_list extends HTTPDModule
|
||||
switch (admin.getRank())
|
||||
{
|
||||
case ADMIN:
|
||||
{
|
||||
admins.add(player.getName());
|
||||
break;
|
||||
}
|
||||
case SENIOR_ADMIN:
|
||||
{
|
||||
senioradmins.add(player.getName());
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
// Do nothing
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int count = server.getOnlinePlayers().size() - AdminList.vanished.size();
|
||||
|
||||
// for future refernce - any multi-worded ranks are to be delimited by underscores in the json; eg. senior_admins
|
||||
responseObject.put("owners", owners);
|
||||
@ -99,7 +106,7 @@ public class Module_list extends HTTPDModule
|
||||
responseObject.put("master_builders", masterbuilders);
|
||||
responseObject.put("operators", operators);
|
||||
responseObject.put("imposters", imposters);
|
||||
responseObject.put("online", count < 0 ? 0 : count);
|
||||
responseObject.put("online", FUtil.getFakePlayerCount());
|
||||
responseObject.put("max", server.getMaxPlayers());
|
||||
|
||||
final NanoHTTPD.Response response = new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK, NanoHTTPD.MIME_JSON, responseObject.toString());
|
||||
|
@ -51,12 +51,21 @@ public class Module_players extends HTTPDModule
|
||||
switch (admin.getRank())
|
||||
{
|
||||
case ADMIN:
|
||||
{
|
||||
admins.add(username);
|
||||
break;
|
||||
}
|
||||
case SENIOR_ADMIN:
|
||||
{
|
||||
senioradmins.add(username);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
{
|
||||
// Do nothing
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
masterbuilders.addAll(plugin.pl.getMasterBuilderNames());
|
||||
|
@ -1,7 +1,5 @@
|
||||
package me.totalfreedom.totalfreedommod.player;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
||||
import me.totalfreedom.totalfreedommod.caging.CageData;
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
@ -16,21 +14,24 @@ import org.bukkit.entity.Player;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
public class FPlayer
|
||||
{
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class FPlayer {
|
||||
|
||||
public static final long AUTO_PURGE_TICKS = 5L * 60L * 20L;
|
||||
|
||||
|
||||
private final TotalFreedomMod plugin;
|
||||
|
||||
private final String name;
|
||||
|
||||
private final String ip;
|
||||
private final UUID uuid;
|
||||
//
|
||||
private final FreezeData freezeData = new FreezeData(this);
|
||||
private final CageData cageData = new CageData(this);
|
||||
private final List<LivingEntity> mobThrowerQueue = new ArrayList<>();
|
||||
private Player player;
|
||||
private PlayerData playerData;
|
||||
//
|
||||
private BukkitTask unmuteTask;
|
||||
private double fuckoffRadius = 0;
|
||||
@ -69,643 +70,520 @@ public class FPlayer
|
||||
|
||||
private boolean invSee = false;
|
||||
|
||||
public FPlayer(TotalFreedomMod plugin, Player player)
|
||||
{
|
||||
this(plugin, player.getName(), FUtil.getIp(player));
|
||||
|
||||
public FPlayer(TotalFreedomMod plugin, Player player) {
|
||||
this(plugin, player.getUniqueId());
|
||||
}
|
||||
|
||||
private FPlayer(TotalFreedomMod plugin, String name, String ip)
|
||||
{
|
||||
private FPlayer(TotalFreedomMod plugin, UUID uuid) {
|
||||
this.plugin = plugin;
|
||||
this.name = name;
|
||||
this.ip = ip;
|
||||
this.uuid = uuid;
|
||||
}
|
||||
|
||||
public static long getAutoPurgeTicks()
|
||||
{
|
||||
public static long getAutoPurgeTicks() {
|
||||
return AUTO_PURGE_TICKS;
|
||||
}
|
||||
|
||||
public Player getPlayer()
|
||||
{
|
||||
if (player != null && !player.isOnline())
|
||||
{
|
||||
player = null;
|
||||
}
|
||||
|
||||
if (player == null)
|
||||
{
|
||||
for (Player onlinePlayer : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
if (FUtil.getIp(onlinePlayer).equals(ip))
|
||||
{
|
||||
player = onlinePlayer;
|
||||
break;
|
||||
public Player getPlayer() {
|
||||
if (this.player == null) {
|
||||
for (Player onlinePlayer : Bukkit.getOnlinePlayers()) {
|
||||
if (onlinePlayer.getUniqueId().equals(this.uuid)) {
|
||||
this.player = onlinePlayer;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return player;
|
||||
return this.player;
|
||||
}
|
||||
|
||||
public void setPlayer(Player player)
|
||||
{
|
||||
public void setPlayer(Player player) {
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
public boolean isOrbiting()
|
||||
{
|
||||
public boolean isOrbiting() {
|
||||
return isOrbiting;
|
||||
}
|
||||
|
||||
public void setOrbiting(boolean orbiting)
|
||||
{
|
||||
public void setOrbiting(boolean orbiting) {
|
||||
isOrbiting = orbiting;
|
||||
}
|
||||
|
||||
public void startOrbiting(double strength)
|
||||
{
|
||||
public void startOrbiting(double strength) {
|
||||
this.isOrbiting = true;
|
||||
this.orbitStrength = strength;
|
||||
}
|
||||
|
||||
public void stopOrbiting()
|
||||
{
|
||||
public void stopOrbiting() {
|
||||
this.isOrbiting = false;
|
||||
}
|
||||
|
||||
public double orbitStrength()
|
||||
{
|
||||
public double orbitStrength() {
|
||||
return orbitStrength;
|
||||
}
|
||||
|
||||
public boolean isFuckOff()
|
||||
{
|
||||
public boolean isFuckOff() {
|
||||
return fuckoffRadius > 0;
|
||||
}
|
||||
|
||||
public void setFuckoff(double radius)
|
||||
{
|
||||
public void setFuckoff(double radius) {
|
||||
this.fuckoffRadius = radius;
|
||||
}
|
||||
|
||||
public void disableFuckoff()
|
||||
{
|
||||
public void disableFuckoff() {
|
||||
this.fuckoffRadius = 0;
|
||||
}
|
||||
|
||||
public void resetMsgCount()
|
||||
{
|
||||
public void resetMsgCount() {
|
||||
this.messageCount = 0;
|
||||
}
|
||||
|
||||
public int incrementAndGetMsgCount()
|
||||
{
|
||||
public int incrementAndGetMsgCount() {
|
||||
return this.messageCount++;
|
||||
}
|
||||
|
||||
public int incrementAndGetBlockDestroyCount()
|
||||
{
|
||||
public int incrementAndGetBlockDestroyCount() {
|
||||
return this.totalBlockDestroy++;
|
||||
}
|
||||
|
||||
public void resetBlockDestroyCount()
|
||||
{
|
||||
public void resetBlockDestroyCount() {
|
||||
this.totalBlockDestroy = 0;
|
||||
}
|
||||
|
||||
public int incrementAndGetBlockPlaceCount()
|
||||
{
|
||||
public int incrementAndGetBlockPlaceCount() {
|
||||
return this.totalBlockPlace++;
|
||||
}
|
||||
|
||||
public void resetBlockPlaceCount()
|
||||
{
|
||||
public void resetBlockPlaceCount() {
|
||||
this.totalBlockPlace = 0;
|
||||
}
|
||||
|
||||
public int incrementAndGetFreecamDestroyCount()
|
||||
{
|
||||
public int incrementAndGetFreecamDestroyCount() {
|
||||
return this.freecamDestroyCount++;
|
||||
}
|
||||
|
||||
public void resetFreecamDestroyCount()
|
||||
{
|
||||
public void resetFreecamDestroyCount() {
|
||||
this.freecamDestroyCount = 0;
|
||||
}
|
||||
|
||||
public int incrementAndGetFreecamPlaceCount()
|
||||
{
|
||||
public int incrementAndGetFreecamPlaceCount() {
|
||||
return this.freecamPlaceCount++;
|
||||
}
|
||||
|
||||
public void resetFreecamPlaceCount()
|
||||
{
|
||||
public void resetFreecamPlaceCount() {
|
||||
this.freecamPlaceCount = 0;
|
||||
}
|
||||
|
||||
public void enableMobThrower(EntityType mobThrowerCreature, double mobThrowerSpeed)
|
||||
{
|
||||
public void enableMobThrower(EntityType mobThrowerCreature, double mobThrowerSpeed) {
|
||||
this.mobThrowerEnabled = true;
|
||||
this.mobThrowerEntity = mobThrowerCreature;
|
||||
this.mobThrowerSpeed = mobThrowerSpeed;
|
||||
}
|
||||
|
||||
public void disableMobThrower()
|
||||
{
|
||||
public void disableMobThrower() {
|
||||
this.mobThrowerEnabled = false;
|
||||
}
|
||||
|
||||
public EntityType mobThrowerCreature()
|
||||
{
|
||||
public EntityType mobThrowerCreature() {
|
||||
return this.mobThrowerEntity;
|
||||
}
|
||||
|
||||
public double mobThrowerSpeed()
|
||||
{
|
||||
public double mobThrowerSpeed() {
|
||||
return this.mobThrowerSpeed;
|
||||
}
|
||||
|
||||
public boolean mobThrowerEnabled()
|
||||
{
|
||||
public boolean mobThrowerEnabled() {
|
||||
return this.mobThrowerEnabled;
|
||||
}
|
||||
|
||||
public void enqueueMob(LivingEntity mob)
|
||||
{
|
||||
public void enqueueMob(LivingEntity mob) {
|
||||
mobThrowerQueue.add(mob);
|
||||
if (mobThrowerQueue.size() > 4)
|
||||
{
|
||||
if (mobThrowerQueue.size() > 4) {
|
||||
LivingEntity oldmob = mobThrowerQueue.remove(0);
|
||||
if (oldmob != null)
|
||||
{
|
||||
if (oldmob != null) {
|
||||
oldmob.damage(500.0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void startArrowShooter(TotalFreedomMod plugin)
|
||||
{
|
||||
public void startArrowShooter(TotalFreedomMod plugin) {
|
||||
this.stopArrowShooter();
|
||||
this.mp44ScheduleTask = new ArrowShooter(this.player).runTaskTimer(plugin, 1L, 1L);
|
||||
this.mp44ScheduleTask = new ArrowShooter(getPlayer()).runTaskTimer(plugin, 1L, 1L);
|
||||
this.mp44Firing = true;
|
||||
}
|
||||
|
||||
public void stopArrowShooter()
|
||||
{
|
||||
if (this.mp44ScheduleTask != null)
|
||||
{
|
||||
public void stopArrowShooter() {
|
||||
if (this.mp44ScheduleTask != null) {
|
||||
this.mp44ScheduleTask.cancel();
|
||||
this.mp44ScheduleTask = null;
|
||||
}
|
||||
this.mp44Firing = false;
|
||||
}
|
||||
|
||||
public void armMP44()
|
||||
{
|
||||
public void armMP44() {
|
||||
this.mp44Armed = true;
|
||||
this.stopArrowShooter();
|
||||
}
|
||||
|
||||
public void disarmMP44()
|
||||
{
|
||||
public void disarmMP44() {
|
||||
this.mp44Armed = false;
|
||||
this.stopArrowShooter();
|
||||
}
|
||||
|
||||
public boolean isMP44Armed()
|
||||
{
|
||||
public boolean isMP44Armed() {
|
||||
return this.mp44Armed;
|
||||
}
|
||||
|
||||
public boolean toggleMP44Firing()
|
||||
{
|
||||
public boolean toggleMP44Firing() {
|
||||
this.mp44Firing = !this.mp44Firing;
|
||||
return mp44Firing;
|
||||
}
|
||||
|
||||
public boolean isMuted()
|
||||
{
|
||||
public boolean isMuted() {
|
||||
return unmuteTask != null;
|
||||
}
|
||||
|
||||
public void setMuted(boolean muted, int minutes)
|
||||
{
|
||||
public void setMuted(boolean muted, int minutes) {
|
||||
FUtil.cancel(unmuteTask);
|
||||
plugin.mu.MUTED_PLAYERS.remove(getPlayer().getName());
|
||||
plugin.mu.MUTED_PLAYERS.remove(getPlayer().getUniqueId());
|
||||
unmuteTask = null;
|
||||
|
||||
if (!muted)
|
||||
{
|
||||
if (!muted) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (getPlayer() == null)
|
||||
{
|
||||
if (getPlayer() == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
plugin.mu.MUTED_PLAYERS.add(getPlayer().getName());
|
||||
plugin.mu.MUTED_PLAYERS.add(getPlayer().getUniqueId());
|
||||
|
||||
// TODO: Simplify this into a Consumer<BukkitTask> lambda?
|
||||
unmuteTask = new BukkitRunnable()
|
||||
{
|
||||
unmuteTask = new BukkitRunnable() {
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
if (getPlayer() != null)
|
||||
{
|
||||
public void run() {
|
||||
if (getPlayer() != null) {
|
||||
FUtil.adminAction(ConfigEntry.SERVER_NAME.getString(), "Unmuting " + getPlayer().getName(), false);
|
||||
setMuted(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
FUtil.adminAction(ConfigEntry.SERVER_NAME.getString(), "Unmuting " + getName(), false);
|
||||
plugin.mu.MUTED_PLAYERS.remove(getName());
|
||||
} else {
|
||||
FUtil.adminAction(ConfigEntry.SERVER_NAME.getString(), "Unmuting " + Bukkit.getOfflinePlayer(uuid).getName(), false);
|
||||
plugin.mu.MUTED_PLAYERS.remove(uuid);
|
||||
}
|
||||
}
|
||||
}.runTaskLater(plugin, minutes * (60L * 20L));
|
||||
}
|
||||
|
||||
public void setMuted(boolean muted)
|
||||
{
|
||||
public void setMuted(boolean muted) {
|
||||
setMuted(muted, 5);
|
||||
}
|
||||
|
||||
public BukkitTask getLockupScheduleID()
|
||||
{
|
||||
public BukkitTask getLockupScheduleID() {
|
||||
return this.lockupScheduleTask;
|
||||
}
|
||||
|
||||
public void setLockupScheduleId(BukkitTask id)
|
||||
{
|
||||
public void setLockupScheduleId(BukkitTask id) {
|
||||
this.lockupScheduleTask = id;
|
||||
}
|
||||
|
||||
public boolean isLockedUp()
|
||||
{
|
||||
public boolean isLockedUp() {
|
||||
return this.lockedUp;
|
||||
}
|
||||
|
||||
public void setLockedUp(boolean lockedUp)
|
||||
{
|
||||
public void setLockedUp(boolean lockedUp) {
|
||||
this.lockedUp = lockedUp;
|
||||
}
|
||||
|
||||
public String getLastMessage()
|
||||
{
|
||||
public String getLastMessage() {
|
||||
return lastMessage;
|
||||
}
|
||||
|
||||
public void setLastMessage(String message)
|
||||
{
|
||||
public void setLastMessage(String message) {
|
||||
this.lastMessage = message;
|
||||
}
|
||||
|
||||
public void setAdminChat(boolean inAdminchat)
|
||||
{
|
||||
public void setAdminChat(boolean inAdminchat) {
|
||||
this.inAdminchat = inAdminchat;
|
||||
}
|
||||
|
||||
public boolean inAdminChat()
|
||||
{
|
||||
public boolean inAdminChat() {
|
||||
return this.inAdminchat;
|
||||
}
|
||||
|
||||
public boolean allCommandsBlocked()
|
||||
{
|
||||
public boolean allCommandsBlocked() {
|
||||
return this.allCommandsBlocked;
|
||||
}
|
||||
|
||||
public void setCommandsBlocked(boolean commandsBlocked)
|
||||
{
|
||||
public void setCommandsBlocked(boolean commandsBlocked) {
|
||||
this.allCommandsBlocked = commandsBlocked;
|
||||
}
|
||||
|
||||
public String getLastCommand()
|
||||
{
|
||||
public String getLastCommand() {
|
||||
return lastCommand;
|
||||
}
|
||||
|
||||
public void setLastCommand(String lastCommand)
|
||||
{
|
||||
public void setLastCommand(String lastCommand) {
|
||||
this.lastCommand = lastCommand;
|
||||
}
|
||||
|
||||
public void setCommandSpy(boolean enabled)
|
||||
{
|
||||
public void setCommandSpy(boolean enabled) {
|
||||
this.cmdspyEnabled = enabled;
|
||||
}
|
||||
|
||||
public boolean cmdspyEnabled()
|
||||
{
|
||||
public boolean cmdspyEnabled() {
|
||||
return cmdspyEnabled;
|
||||
}
|
||||
|
||||
public String getTag()
|
||||
{
|
||||
public String getTag() {
|
||||
return this.tag;
|
||||
}
|
||||
|
||||
public void setTag(String tag)
|
||||
{
|
||||
if (tag == null)
|
||||
{
|
||||
public void setTag(String tag) {
|
||||
if (tag == null) {
|
||||
this.tag = null;
|
||||
}
|
||||
else
|
||||
{
|
||||
} else {
|
||||
this.tag = FUtil.colorize(tag) + ChatColor.WHITE;
|
||||
}
|
||||
}
|
||||
|
||||
public int getWarningCount()
|
||||
{
|
||||
public int getWarningCount() {
|
||||
return this.warningCount;
|
||||
}
|
||||
|
||||
public void setWarningCount(int warningCount)
|
||||
{
|
||||
public void setWarningCount(int warningCount) {
|
||||
this.warningCount = warningCount;
|
||||
}
|
||||
|
||||
public void incrementWarnings()
|
||||
{
|
||||
public void incrementWarnings(boolean quiet) {
|
||||
this.warningCount++;
|
||||
|
||||
if (this.warningCount % 2 == 0)
|
||||
{
|
||||
if (this.warningCount % 2 == 0) {
|
||||
Player p = getPlayer();
|
||||
|
||||
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());
|
||||
}
|
||||
}
|
||||
|
||||
public TotalFreedomMod getPlugin()
|
||||
{
|
||||
public TotalFreedomMod getPlugin() {
|
||||
return plugin;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
public UUID getUniqueId() {
|
||||
return uuid;
|
||||
}
|
||||
|
||||
public String getIp()
|
||||
{
|
||||
return ip;
|
||||
public PlayerData getPlayerData() {
|
||||
return playerData;
|
||||
}
|
||||
|
||||
public BukkitTask getUnmuteTask()
|
||||
{
|
||||
public BukkitTask getUnmuteTask() {
|
||||
return unmuteTask;
|
||||
}
|
||||
|
||||
public void setUnmuteTask(BukkitTask unmuteTask)
|
||||
{
|
||||
public void setUnmuteTask(BukkitTask unmuteTask) {
|
||||
this.unmuteTask = unmuteTask;
|
||||
}
|
||||
|
||||
public FreezeData getFreezeData()
|
||||
{
|
||||
public FreezeData getFreezeData() {
|
||||
return freezeData;
|
||||
}
|
||||
|
||||
public double getFuckoffRadius()
|
||||
{
|
||||
public double getFuckoffRadius() {
|
||||
return fuckoffRadius;
|
||||
}
|
||||
|
||||
public void setFuckoffRadius(double fuckoffRadius)
|
||||
{
|
||||
public void setFuckoffRadius(double fuckoffRadius) {
|
||||
this.fuckoffRadius = fuckoffRadius;
|
||||
}
|
||||
|
||||
public int getMessageCount()
|
||||
{
|
||||
public int getMessageCount() {
|
||||
return messageCount;
|
||||
}
|
||||
|
||||
public void setMessageCount(int messageCount)
|
||||
{
|
||||
public void setMessageCount(int messageCount) {
|
||||
this.messageCount = messageCount;
|
||||
}
|
||||
|
||||
public int getTotalBlockDestroy()
|
||||
{
|
||||
public int getTotalBlockDestroy() {
|
||||
return totalBlockDestroy;
|
||||
}
|
||||
|
||||
public void setTotalBlockDestroy(int totalBlockDestroy)
|
||||
{
|
||||
public void setTotalBlockDestroy(int totalBlockDestroy) {
|
||||
this.totalBlockDestroy = totalBlockDestroy;
|
||||
}
|
||||
|
||||
public int getTotalBlockPlace()
|
||||
{
|
||||
public int getTotalBlockPlace() {
|
||||
return totalBlockPlace;
|
||||
}
|
||||
|
||||
public void setTotalBlockPlace(int totalBlockPlace)
|
||||
{
|
||||
public void setTotalBlockPlace(int totalBlockPlace) {
|
||||
this.totalBlockPlace = totalBlockPlace;
|
||||
}
|
||||
|
||||
public int getFreecamDestroyCount()
|
||||
{
|
||||
public int getFreecamDestroyCount() {
|
||||
return freecamDestroyCount;
|
||||
}
|
||||
|
||||
public void setFreecamDestroyCount(int freecamDestroyCount)
|
||||
{
|
||||
public void setFreecamDestroyCount(int freecamDestroyCount) {
|
||||
this.freecamDestroyCount = freecamDestroyCount;
|
||||
}
|
||||
|
||||
public int getFreecamPlaceCount()
|
||||
{
|
||||
public int getFreecamPlaceCount() {
|
||||
return freecamPlaceCount;
|
||||
}
|
||||
|
||||
public void setFreecamPlaceCount(int freecamPlaceCount)
|
||||
{
|
||||
public void setFreecamPlaceCount(int freecamPlaceCount) {
|
||||
this.freecamPlaceCount = freecamPlaceCount;
|
||||
}
|
||||
|
||||
public CageData getCageData()
|
||||
{
|
||||
public CageData getCageData() {
|
||||
return cageData;
|
||||
}
|
||||
|
||||
public double getOrbitStrength()
|
||||
{
|
||||
public double getOrbitStrength() {
|
||||
return orbitStrength;
|
||||
}
|
||||
|
||||
public void setOrbitStrength(double orbitStrength)
|
||||
{
|
||||
public void setOrbitStrength(double orbitStrength) {
|
||||
this.orbitStrength = orbitStrength;
|
||||
}
|
||||
|
||||
public boolean isMobThrowerEnabled()
|
||||
{
|
||||
public boolean isMobThrowerEnabled() {
|
||||
return mobThrowerEnabled;
|
||||
}
|
||||
|
||||
public void setMobThrowerEnabled(boolean mobThrowerEnabled)
|
||||
{
|
||||
public void setMobThrowerEnabled(boolean mobThrowerEnabled) {
|
||||
this.mobThrowerEnabled = mobThrowerEnabled;
|
||||
}
|
||||
|
||||
public EntityType getMobThrowerEntity()
|
||||
{
|
||||
public EntityType getMobThrowerEntity() {
|
||||
return mobThrowerEntity;
|
||||
}
|
||||
|
||||
public void setMobThrowerEntity(EntityType mobThrowerEntity)
|
||||
{
|
||||
public void setMobThrowerEntity(EntityType mobThrowerEntity) {
|
||||
this.mobThrowerEntity = mobThrowerEntity;
|
||||
}
|
||||
|
||||
public double getMobThrowerSpeed()
|
||||
{
|
||||
public double getMobThrowerSpeed() {
|
||||
return mobThrowerSpeed;
|
||||
}
|
||||
|
||||
public void setMobThrowerSpeed(double mobThrowerSpeed)
|
||||
{
|
||||
public void setPlayerData(PlayerData playerData) {
|
||||
this.playerData = playerData;
|
||||
}
|
||||
|
||||
public void setMobThrowerSpeed(double mobThrowerSpeed) {
|
||||
this.mobThrowerSpeed = mobThrowerSpeed;
|
||||
}
|
||||
|
||||
public List<LivingEntity> getMobThrowerQueue()
|
||||
{
|
||||
public List<LivingEntity> getMobThrowerQueue() {
|
||||
return mobThrowerQueue;
|
||||
}
|
||||
|
||||
public BukkitTask getMp44ScheduleTask()
|
||||
{
|
||||
public BukkitTask getMp44ScheduleTask() {
|
||||
return mp44ScheduleTask;
|
||||
}
|
||||
|
||||
public void setMp44ScheduleTask(BukkitTask mp44ScheduleTask)
|
||||
{
|
||||
public void setMp44ScheduleTask(BukkitTask mp44ScheduleTask) {
|
||||
this.mp44ScheduleTask = mp44ScheduleTask;
|
||||
}
|
||||
|
||||
public boolean isMp44Armed()
|
||||
{
|
||||
public boolean isMp44Armed() {
|
||||
return mp44Armed;
|
||||
}
|
||||
|
||||
public void setMp44Armed(boolean mp44Armed)
|
||||
{
|
||||
public void setMp44Armed(boolean mp44Armed) {
|
||||
this.mp44Armed = mp44Armed;
|
||||
}
|
||||
|
||||
public boolean isMp44Firing()
|
||||
{
|
||||
public boolean isMp44Firing() {
|
||||
return mp44Firing;
|
||||
}
|
||||
|
||||
public void setMp44Firing(boolean mp44Firing)
|
||||
{
|
||||
public void setMp44Firing(boolean mp44Firing) {
|
||||
this.mp44Firing = mp44Firing;
|
||||
}
|
||||
|
||||
public BukkitTask getLockupScheduleTask()
|
||||
{
|
||||
public BukkitTask getLockupScheduleTask() {
|
||||
return lockupScheduleTask;
|
||||
}
|
||||
|
||||
public void setLockupScheduleTask(BukkitTask lockupScheduleTask)
|
||||
{
|
||||
public void setLockupScheduleTask(BukkitTask lockupScheduleTask) {
|
||||
this.lockupScheduleTask = lockupScheduleTask;
|
||||
}
|
||||
|
||||
public boolean isInAdminchat()
|
||||
{
|
||||
public boolean isInAdminchat() {
|
||||
return inAdminchat;
|
||||
}
|
||||
|
||||
public void setInAdminchat(boolean inAdminchat)
|
||||
{
|
||||
public void setInAdminchat(boolean inAdminchat) {
|
||||
this.inAdminchat = inAdminchat;
|
||||
}
|
||||
|
||||
public boolean isAllCommandsBlocked()
|
||||
{
|
||||
public boolean isAllCommandsBlocked() {
|
||||
return allCommandsBlocked;
|
||||
}
|
||||
|
||||
public void setAllCommandsBlocked(boolean allCommandsBlocked)
|
||||
{
|
||||
public void setAllCommandsBlocked(boolean allCommandsBlocked) {
|
||||
this.allCommandsBlocked = allCommandsBlocked;
|
||||
}
|
||||
|
||||
public boolean isSuperadminIdVerified()
|
||||
{
|
||||
public boolean isSuperadminIdVerified() {
|
||||
return superadminIdVerified;
|
||||
}
|
||||
|
||||
public void setSuperadminIdVerified(boolean superadminIdVerified)
|
||||
{
|
||||
public void setSuperadminIdVerified(boolean superadminIdVerified) {
|
||||
this.superadminIdVerified = superadminIdVerified;
|
||||
}
|
||||
|
||||
public boolean isCmdspyEnabled()
|
||||
{
|
||||
public boolean isCmdspyEnabled() {
|
||||
return cmdspyEnabled;
|
||||
}
|
||||
|
||||
public void setCmdspyEnabled(boolean cmdspyEnabled)
|
||||
{
|
||||
public void setCmdspyEnabled(boolean cmdspyEnabled) {
|
||||
this.cmdspyEnabled = cmdspyEnabled;
|
||||
}
|
||||
|
||||
public boolean isEditBlocked()
|
||||
{
|
||||
public boolean isEditBlocked() {
|
||||
return editBlocked;
|
||||
}
|
||||
|
||||
public void setEditBlocked(boolean editBlocked)
|
||||
{
|
||||
public void setEditBlocked(boolean editBlocked) {
|
||||
this.editBlocked = editBlocked;
|
||||
}
|
||||
|
||||
public boolean isPvpBlocked()
|
||||
{
|
||||
public boolean isPvpBlocked() {
|
||||
return pvpBlocked;
|
||||
}
|
||||
|
||||
public void setPvpBlocked(boolean pvpBlocked)
|
||||
{
|
||||
public void setPvpBlocked(boolean pvpBlocked) {
|
||||
this.pvpBlocked = pvpBlocked;
|
||||
}
|
||||
|
||||
public boolean isInvSee()
|
||||
{
|
||||
public boolean isInvSee() {
|
||||
return invSee;
|
||||
}
|
||||
|
||||
public void setInvSee(boolean invSee)
|
||||
{
|
||||
public void setInvSee(boolean invSee) {
|
||||
this.invSee = invSee;
|
||||
}
|
||||
|
||||
private static class ArrowShooter extends BukkitRunnable
|
||||
{
|
||||
private static class ArrowShooter extends BukkitRunnable {
|
||||
|
||||
private final Player player;
|
||||
|
||||
private ArrowShooter(Player player)
|
||||
{
|
||||
private ArrowShooter(Player player) {
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
public void run() {
|
||||
if (player != null) {
|
||||
Arrow shot = player.launchProjectile(Arrow.class);
|
||||
shot.setVelocity(shot.getVelocity().multiply(2.0));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -3,10 +3,8 @@ package me.totalfreedom.totalfreedommod.player;
|
||||
import com.google.common.collect.Lists;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
||||
import me.totalfreedom.totalfreedommod.shop.ShopItem;
|
||||
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||
@ -20,7 +18,7 @@ public class PlayerData
|
||||
private final List<String> ips = Lists.newArrayList();
|
||||
private final List<String> notes = Lists.newArrayList();
|
||||
private final List<String> backupCodes = Lists.newArrayList();
|
||||
private String name;
|
||||
private UUID uuid;
|
||||
private String tag = null;
|
||||
private String discordID = null;
|
||||
private Boolean masterBuilder = false;
|
||||
@ -48,7 +46,7 @@ public class PlayerData
|
||||
{
|
||||
try
|
||||
{
|
||||
name = resultSet.getString("username");
|
||||
uuid = UUID.fromString(resultSet.getString("uuid"));
|
||||
ips.clear();
|
||||
ips.addAll(FUtil.stringToList(resultSet.getString("ips")));
|
||||
notes.clear();
|
||||
@ -88,14 +86,13 @@ public class PlayerData
|
||||
|
||||
public PlayerData(Player player)
|
||||
{
|
||||
this.name = player.getName();
|
||||
this.uuid = player.getUniqueId();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString()
|
||||
{
|
||||
|
||||
return "Player: " + name + "\n" +
|
||||
return "Player: " + uuid.toString() + "\n" +
|
||||
"- IPs: " + StringUtils.join(ips, ", ") + "\n" +
|
||||
"- Discord ID: " + discordID + "\n" +
|
||||
"- Master Builder: " + masterBuilder + "\n" +
|
||||
@ -232,7 +229,7 @@ public class PlayerData
|
||||
{
|
||||
return new HashMap<String, Object>()
|
||||
{{
|
||||
put("username", name);
|
||||
put("uuid", uuid);
|
||||
put("ips", FUtil.listToString(ips));
|
||||
put("notes", FUtil.listToString(notes));
|
||||
put("tag", tag);
|
||||
@ -255,14 +252,14 @@ public class PlayerData
|
||||
return displayDiscord;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
public UUID getUniqueId()
|
||||
{
|
||||
return name;
|
||||
return uuid;
|
||||
}
|
||||
|
||||
public void setName(String name)
|
||||
public void setUniqueId(UUID uuid)
|
||||
{
|
||||
this.name = name;
|
||||
this.uuid = uuid;
|
||||
}
|
||||
|
||||
public String getTag()
|
||||
@ -364,4 +361,9 @@ public class PlayerData
|
||||
{
|
||||
this.inspect = inspect;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return FUtil.getNameFromUUID(uuid);
|
||||
}
|
||||
}
|
@ -3,11 +3,9 @@ package me.totalfreedom.totalfreedommod.player;
|
||||
import com.google.common.collect.Maps;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.FreedomService;
|
||||
import me.totalfreedom.totalfreedommod.admin.Admin;
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
@ -20,13 +18,12 @@ import org.bukkit.entity.Player;
|
||||
public class PlayerList extends FreedomService
|
||||
{
|
||||
|
||||
public final Map<String, FPlayer> playerMap = Maps.newHashMap(); // ip,dataMap
|
||||
public final Map<String, PlayerData> dataMap = Maps.newHashMap(); // username, data
|
||||
public final Map<UUID, FPlayer> playerMap = Maps.newHashMap(); // uuid,dataMap
|
||||
//public final Map<String, PlayerData> dataMap = Maps.newHashMap(); // username, data
|
||||
|
||||
@Override
|
||||
public void onStart()
|
||||
{
|
||||
dataMap.clear();
|
||||
loadMasterBuilders();
|
||||
}
|
||||
|
||||
@ -57,7 +54,6 @@ public class PlayerList extends FreedomService
|
||||
while (resultSet.next())
|
||||
{
|
||||
PlayerData playerData = load(resultSet);
|
||||
dataMap.put(playerData.getName(), playerData);
|
||||
}
|
||||
}
|
||||
catch (SQLException e)
|
||||
@ -73,27 +69,20 @@ public class PlayerList extends FreedomService
|
||||
return FUtil.getIp(Objects.requireNonNull(player.getPlayer()));
|
||||
}
|
||||
|
||||
final PlayerData entry = getData(player.getName());
|
||||
final PlayerData entry = getData(player.getUniqueId());
|
||||
|
||||
return (entry == null ? null : entry.getIps().iterator().next());
|
||||
}
|
||||
|
||||
public List<String> getMasterBuilderNames()
|
||||
{
|
||||
List<String> masterBuilders = new ArrayList<>();
|
||||
for (PlayerData playerData : plugin.pl.dataMap.values())
|
||||
{
|
||||
if (playerData.isMasterBuilder())
|
||||
{
|
||||
masterBuilders.add(playerData.getName());
|
||||
}
|
||||
}
|
||||
return masterBuilders;
|
||||
return playerMap.values().stream().map(FPlayer::getPlayerData).filter(PlayerData::isMasterBuilder).map(p -> FUtil.getNameFromUUID(p.getUniqueId())).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public boolean canManageMasterBuilders(String name)
|
||||
public boolean canManageMasterBuilders(UUID uuid)
|
||||
{
|
||||
PlayerData data = getData(name);
|
||||
PlayerData data = getData(uuid);
|
||||
String name = FUtil.getNameFromUUID(uuid);
|
||||
|
||||
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())
|
||||
@ -103,31 +92,41 @@ public class PlayerList extends FreedomService
|
||||
|
||||
public boolean isTelnetMasterBuilder(PlayerData playerData)
|
||||
{
|
||||
Admin admin = plugin.al.getEntryByName(playerData.getName());
|
||||
Admin admin = plugin.al.getEntryByUUID(playerData.getUniqueId());
|
||||
return admin != null && admin.getRank().isAtLeast(Rank.ADMIN) && playerData.isMasterBuilder();
|
||||
}
|
||||
|
||||
// May not return null
|
||||
public FPlayer getPlayer(Player player)
|
||||
{
|
||||
FPlayer tPlayer = playerMap.get(FUtil.getIp(player));
|
||||
FPlayer tPlayer = playerMap.get(player.getUniqueId());
|
||||
if (tPlayer != null)
|
||||
{
|
||||
return tPlayer;
|
||||
}
|
||||
|
||||
tPlayer = new FPlayer(plugin, player);
|
||||
playerMap.put(FUtil.getIp(player), tPlayer);
|
||||
playerMap.put(player.getUniqueId(), tPlayer);
|
||||
|
||||
return tPlayer;
|
||||
}
|
||||
|
||||
public PlayerData loadByName(String name)
|
||||
/*public PlayerData loadByName(String name)
|
||||
{
|
||||
return load(plugin.sql.getPlayerByName(name));
|
||||
}
|
||||
|
||||
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));
|
||||
}
|
||||
@ -168,7 +167,7 @@ public class PlayerList extends FreedomService
|
||||
|
||||
if (plugin.al.isAdminImpostor(player))
|
||||
{
|
||||
Admin admin = plugin.al.getEntryByName(player.getName());
|
||||
Admin admin = plugin.al.getEntryByUUID(player.getUniqueId());
|
||||
admin.setLastLogin(new Date());
|
||||
admin.addIp(FUtil.getIp(player));
|
||||
plugin.al.updateTables();
|
||||
@ -180,7 +179,7 @@ public class PlayerList extends FreedomService
|
||||
|
||||
public void syncIps(Admin admin)
|
||||
{
|
||||
PlayerData playerData = getData(admin.getName());
|
||||
PlayerData playerData = getData(admin.getUniqueId());
|
||||
playerData.clearIps();
|
||||
playerData.addIps(admin.getIps());
|
||||
plugin.pl.save(playerData);
|
||||
@ -188,7 +187,7 @@ public class PlayerList extends FreedomService
|
||||
|
||||
public void syncIps(PlayerData playerData)
|
||||
{
|
||||
Admin admin = plugin.al.getEntryByName(playerData.getName());
|
||||
Admin admin = plugin.al.getEntryByUUID(playerData.getUniqueId());
|
||||
|
||||
if (admin != null && admin.isActive())
|
||||
{
|
||||
@ -204,7 +203,7 @@ public class PlayerList extends FreedomService
|
||||
{
|
||||
try
|
||||
{
|
||||
ResultSet currentSave = plugin.sql.getPlayerByName(player.getName());
|
||||
ResultSet currentSave = plugin.sql.getPlayerByUUID(player.getUniqueId());
|
||||
for (Map.Entry<String, Object> entry : player.toSQLStorable().entrySet())
|
||||
{
|
||||
Object storedValue = plugin.sql.getValue(currentSave, entry.getKey(), entry.getValue());
|
||||
@ -223,31 +222,32 @@ public class PlayerList extends FreedomService
|
||||
public PlayerData getData(Player player)
|
||||
{
|
||||
// Check for existing data
|
||||
PlayerData playerData = dataMap.get(player.getName());
|
||||
PlayerData playerData = playerMap.get(player.getUniqueId()).getPlayerData();
|
||||
if (playerData != null)
|
||||
{
|
||||
return playerData;
|
||||
}
|
||||
|
||||
// Load data
|
||||
playerData = loadByName(player.getName());
|
||||
playerData = loadByUUID(player.getUniqueId());
|
||||
|
||||
if (playerData == null)
|
||||
/*if (playerData == null)
|
||||
{
|
||||
playerData = loadByIp(FUtil.getIp(player));
|
||||
if (playerData != null)
|
||||
{
|
||||
plugin.sql.updatePlayerName(playerData.getName(), player.getName());
|
||||
playerData.setName(player.getName());
|
||||
dataMap.put(player.getName(), playerData);
|
||||
playerMap.get(player.getUniqueId()).setPlayerData(playerData);
|
||||
return playerData;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dataMap.put(player.getName(), playerData);
|
||||
playerMap.get(player.getUniqueId()).setPlayerData(playerData);
|
||||
return playerData;
|
||||
}
|
||||
}*/
|
||||
|
||||
playerMap.get(player.getUniqueId()).setPlayerData(playerData);
|
||||
|
||||
// Create new data if nonexistent
|
||||
FLog.info("Creating new player verification entry for " + player.getName());
|
||||
@ -257,7 +257,7 @@ public class PlayerList extends FreedomService
|
||||
playerData.addIp(FUtil.getIp(player));
|
||||
|
||||
// Store player
|
||||
dataMap.put(player.getName(), playerData);
|
||||
playerMap.get(player.getUniqueId()).setPlayerData(playerData);
|
||||
|
||||
// Save player
|
||||
plugin.sql.addPlayer(playerData);
|
||||
@ -265,8 +265,10 @@ public class PlayerList extends FreedomService
|
||||
|
||||
}
|
||||
|
||||
/*@Deprecated
|
||||
public PlayerData getData(String username)
|
||||
{
|
||||
throw new UnsupportedOperationException();
|
||||
// Check for existing data
|
||||
PlayerData playerData = dataMap.get(username);
|
||||
if (playerData != null)
|
||||
@ -286,6 +288,40 @@ public class PlayerList extends FreedomService
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
public PlayerData getDataByUUID(UUID uuid)
|
||||
{
|
||||
PlayerData player = loadByUUID(uuid);
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
playerMap.get(uuid).setPlayerData(player);
|
||||
}
|
||||
|
||||
return player;
|
||||
}
|
||||
|
||||
public PlayerData getDataByIp(String ip)
|
||||
@ -294,19 +330,15 @@ public class PlayerList extends FreedomService
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
dataMap.put(player.getName(), player);
|
||||
playerMap.get(player.getUniqueId()).setPlayerData(player);
|
||||
}
|
||||
|
||||
return player;
|
||||
}
|
||||
|
||||
public Map<String, FPlayer> getPlayerMap()
|
||||
public Map<UUID, FPlayer> getPlayerMap()
|
||||
{
|
||||
return playerMap;
|
||||
}
|
||||
|
||||
public Map<String, PlayerData> getDataMap()
|
||||
{
|
||||
return dataMap;
|
||||
}
|
||||
}
|
@ -7,5 +7,11 @@ public enum PunishmentType
|
||||
KICK,
|
||||
TEMPBAN,
|
||||
BAN,
|
||||
DOOM
|
||||
DOOM,
|
||||
WARN,
|
||||
CAGE,
|
||||
BLOCKEDIT,
|
||||
BLOCKPVP,
|
||||
BLOCKCMD,
|
||||
ORBIT
|
||||
}
|
||||
|
@ -117,7 +117,7 @@ public class RankManager extends FreedomService
|
||||
}
|
||||
|
||||
// Console admin, get by name
|
||||
Admin admin = plugin.al.getEntryByName(sender.getName());
|
||||
Admin admin = plugin.al.getEntryByUUID(FUtil.getUUIDFromName(sender.getName()));
|
||||
|
||||
// Unknown console: RCON?
|
||||
if (admin == null)
|
||||
|
@ -227,7 +227,7 @@ public class Shop extends FreedomService
|
||||
ItemStack itemStack = new ItemStack(Material.BLAZE_ROD);
|
||||
ItemMeta itemMeta = itemStack.getItemMeta();
|
||||
assert itemMeta != null;
|
||||
itemMeta.setDisplayName(FUtil.colorize("&bL&3i&bg&3h&bt&3i&bn&3g &b&bR&3o&bd"));
|
||||
itemMeta.setDisplayName(FUtil.colorize("&bL&3i&bg&3h&bt&3n&bi&3n&bg &3R&bo&3d"));
|
||||
itemMeta.setLore(Arrays.asList(ChatColor.AQUA + "Strike others down with the power of lightning.", ChatColor.RED + ChatColor.ITALIC.toString() + "The classic way to exterminate annoyances."));
|
||||
itemMeta.addEnchant(Enchantment.CHANNELING, 1, false);
|
||||
itemStack.setItemMeta(itemMeta);
|
||||
|
@ -37,7 +37,7 @@ public class Votifier extends FreedomService
|
||||
}
|
||||
else
|
||||
{
|
||||
data = plugin.pl.getData(name);
|
||||
data = plugin.pl.getData(FUtil.getUUIDFromName(name));
|
||||
}
|
||||
|
||||
if (data != null)
|
||||
|
@ -7,6 +7,8 @@ import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.UUID;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.FreedomService;
|
||||
import me.totalfreedom.totalfreedommod.admin.Admin;
|
||||
import me.totalfreedom.totalfreedommod.banning.Ban;
|
||||
@ -70,6 +72,7 @@ public class SQLite extends FreedomService
|
||||
{
|
||||
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);");
|
||||
}
|
||||
catch (SQLException e)
|
||||
@ -82,7 +85,7 @@ public class SQLite extends FreedomService
|
||||
{
|
||||
try
|
||||
{
|
||||
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);");
|
||||
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);");
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
@ -93,7 +96,7 @@ public class SQLite extends FreedomService
|
||||
{
|
||||
try
|
||||
{
|
||||
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);");
|
||||
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);");
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
@ -133,8 +136,8 @@ public class SQLite extends FreedomService
|
||||
{
|
||||
try
|
||||
{
|
||||
Object[] data = {key, admin.getName()};
|
||||
PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE admins SET {0}=? WHERE username=''{1}''", data));
|
||||
Object[] data = {key, admin.getUniqueId().toString()};
|
||||
PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE admins SET {0}=? WHERE uuid=''{1}''", data));
|
||||
statement = setUnknownType(statement, 1, value);
|
||||
statement.executeUpdate();
|
||||
|
||||
@ -150,8 +153,8 @@ public class SQLite extends FreedomService
|
||||
{
|
||||
try
|
||||
{
|
||||
Object[] data = {key, player.getName()};
|
||||
PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE players SET {0}=? WHERE username=''{1}''", data));
|
||||
Object[] data = {key, player.getUniqueId().toString()};
|
||||
PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE players SET {0}=? WHERE uuid=''{1}''", data));
|
||||
statement = setUnknownType(statement, 1, value);
|
||||
statement.executeUpdate();
|
||||
|
||||
@ -162,9 +165,11 @@ public class SQLite extends FreedomService
|
||||
}
|
||||
}
|
||||
|
||||
public void updateAdminName(String oldName, String newName)
|
||||
@Deprecated
|
||||
public void oldUpdateAdminName(String oldName, String newName)
|
||||
{
|
||||
try
|
||||
throw new UnsupportedOperationException("Admin no longer stores names in the object, may be changed in a future update");
|
||||
/*try
|
||||
{
|
||||
PreparedStatement statement = connection.prepareStatement(MessageFormat.format("UPDATE admins SET username=? WHERE username=''{0}''", oldName));
|
||||
statement = setUnknownType(statement, 1, newName);
|
||||
@ -174,10 +179,10 @@ public class SQLite extends FreedomService
|
||||
catch (SQLException e)
|
||||
{
|
||||
FLog.severe("Failed to update admin name: " + e.getMessage());
|
||||
}
|
||||
}*/
|
||||
}
|
||||
|
||||
public void updatePlayerName(String oldName, String newName)
|
||||
/*public void updatePlayerName(String oldName, String newName)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -190,7 +195,7 @@ public class SQLite extends FreedomService
|
||||
{
|
||||
FLog.severe("Failed to update player name: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
}*/
|
||||
|
||||
public PreparedStatement setUnknownType(PreparedStatement statement, int index, Object value) throws SQLException
|
||||
{
|
||||
@ -248,7 +253,7 @@ public class SQLite extends FreedomService
|
||||
try
|
||||
{
|
||||
PreparedStatement statement = connection.prepareStatement("INSERT INTO admins VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
statement.setString(1, admin.getName());
|
||||
statement.setString(1, admin.getUniqueId().toString());
|
||||
statement.setString(2, FUtil.listToString(admin.getIps()));
|
||||
statement.setString(3, admin.getRank().toString());
|
||||
statement.setBoolean(4, admin.isActive());
|
||||
@ -271,7 +276,7 @@ public class SQLite extends FreedomService
|
||||
try
|
||||
{
|
||||
PreparedStatement statement = connection.prepareStatement("INSERT INTO players VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
|
||||
statement.setString(1, player.getName());
|
||||
statement.setString(1, player.getUniqueId().toString());
|
||||
statement.setString(2, FUtil.listToString(player.getIps()));
|
||||
statement.setString(3, FUtil.listToString(player.getNotes()));
|
||||
statement.setString(4, player.getTag());
|
||||
@ -295,7 +300,7 @@ public class SQLite extends FreedomService
|
||||
}
|
||||
}
|
||||
|
||||
public ResultSet getAdminByName(String name)
|
||||
/*public ResultSet getAdminByName(String name)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -312,9 +317,28 @@ public class SQLite extends FreedomService
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
|
||||
public ResultSet getPlayerByName(String name)
|
||||
return null;
|
||||
}
|
||||
|
||||
/*public ResultSet getPlayerByName(String name)
|
||||
{
|
||||
try
|
||||
{
|
||||
@ -332,6 +356,8 @@ public class SQLite extends FreedomService
|
||||
|
||||
return null;
|
||||
}
|
||||
*/
|
||||
|
||||
|
||||
public ResultSet getMasterBuilders()
|
||||
{
|
||||
@ -348,6 +374,25 @@ public class SQLite extends FreedomService
|
||||
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)
|
||||
{
|
||||
try
|
||||
@ -371,7 +416,7 @@ public class SQLite extends FreedomService
|
||||
{
|
||||
try
|
||||
{
|
||||
connection.createStatement().executeUpdate(MessageFormat.format("DELETE FROM admins where name=''{0}''", admin.getName()));
|
||||
connection.createStatement().executeUpdate(MessageFormat.format("DELETE FROM admins where uuid=''{0}''", admin.getUniqueId()));
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
|
@ -1,44 +1,18 @@
|
||||
package me.totalfreedom.totalfreedommod.util;
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.lang.reflect.Field;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.GregorianCalendar;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
import java.util.SplittableRandom;
|
||||
import java.util.TimeZone;
|
||||
import java.util.UUID;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import com.google.common.collect.Maps;
|
||||
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.apache.commons.lang.WordUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.apache.hc.client5.http.classic.methods.HttpGet;
|
||||
import org.apache.hc.client5.http.impl.classic.CloseableHttpClient;
|
||||
import org.apache.hc.client5.http.impl.classic.CloseableHttpResponse;
|
||||
import org.apache.hc.client5.http.impl.classic.HttpClients;
|
||||
import org.apache.hc.core5.http.HttpResponse;
|
||||
import org.apache.hc.core5.http.io.entity.EntityUtils;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -47,12 +21,28 @@ import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
import org.json.JSONObject;
|
||||
import org.json.simple.JSONArray;
|
||||
|
||||
import java.io.*;
|
||||
import java.lang.reflect.Field;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.text.ParseException;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.time.Instant;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static org.bukkit.Bukkit.getServer;
|
||||
|
||||
public class FUtil
|
||||
{
|
||||
|
||||
private static final Map<UUID, String> NAME_CACHE = Maps.newHashMap();
|
||||
|
||||
public static final String SAVED_FLAGS_FILENAME = "savedflags.dat";
|
||||
/* 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:
|
||||
@ -73,10 +63,10 @@ public class FUtil
|
||||
"38ea7c82-7bdc-4f48-b7fd-0e93fc26813d", // AwesomePinch
|
||||
"ba5aafba-9012-418f-9819-a7020d591068", // TFTWPhoenix
|
||||
"d6dd9740-40db-45f5-ab16-4ee16a633009", // Abhi
|
||||
"2e06e049-24c8-42e4-8bcf-d35372af31e6", // unsuperiordev
|
||||
"2e06e049-24c8-42e4-8bcf-d35372af31e6", // NotInSync
|
||||
"f97c0d7b-6413-4558-a409-88f09a8f9adb" // videogamesm12
|
||||
);
|
||||
public static final List<String> DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "AwesomePinch", "TFTWPhoenix","abhithedev", "unsuperiordev", "videogamesm12");
|
||||
public static final List<String> DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "AwesomePinch", "TFTWPhoenix", "abhithedev", "NotInSync", "videogamesm12");
|
||||
public static final Map<String, ChatColor> CHAT_COLOR_NAMES = new HashMap<>();
|
||||
public static final List<ChatColor> CHAT_COLOR_POOL = Arrays.asList(
|
||||
ChatColor.DARK_RED,
|
||||
@ -274,7 +264,7 @@ public class FUtil
|
||||
public static Response sendRequest(String endpoint, String method, List<String> headers, String body) throws IOException
|
||||
{
|
||||
URL url = new URL(endpoint);
|
||||
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
|
||||
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||
|
||||
connection.setRequestMethod(method);
|
||||
|
||||
@ -393,7 +383,8 @@ public class FUtil
|
||||
}
|
||||
}
|
||||
|
||||
private static final List<String> regxList = new ArrayList<String>(){{
|
||||
private static final List<String> regxList = new ArrayList<String>()
|
||||
{{
|
||||
add("y");
|
||||
add("mo");
|
||||
add("w");
|
||||
@ -403,11 +394,13 @@ public class FUtil
|
||||
add("s");
|
||||
}};
|
||||
|
||||
private static long a(String parse) {
|
||||
private static long a(String parse)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
regxList.forEach(obj -> {
|
||||
if (parse.endsWith(obj)) {
|
||||
if (parse.endsWith(obj))
|
||||
{
|
||||
sb.append(parse.split(obj)[0]);
|
||||
}
|
||||
});
|
||||
@ -415,7 +408,8 @@ public class FUtil
|
||||
return Long.parseLong(sb.toString());
|
||||
}
|
||||
|
||||
private static TimeUnit verify(String arg) {
|
||||
private static TimeUnit verify(String arg)
|
||||
{
|
||||
TimeUnit unit = null;
|
||||
for (String c : regxList)
|
||||
{
|
||||
@ -461,6 +455,16 @@ public class FUtil
|
||||
return Date.from(instant);
|
||||
}
|
||||
|
||||
public static long parseLongOffset(long unix, String... time)
|
||||
{
|
||||
Instant instant = Instant.ofEpochMilli(unix);
|
||||
for (String arg : time)
|
||||
{
|
||||
instant = instant.plusSeconds(verify(arg).get() * a(arg));
|
||||
}
|
||||
return FUtil.getUnixTime(Date.from(instant));
|
||||
}
|
||||
|
||||
public static String playerListToNames(Set<OfflinePlayer> players)
|
||||
{
|
||||
List<String> names = new ArrayList<>();
|
||||
@ -553,7 +557,7 @@ public class FUtil
|
||||
{
|
||||
Field field = checkClass.getDeclaredField(name);
|
||||
field.setAccessible(true);
|
||||
return (T)field.get(from);
|
||||
return (T) field.get(from);
|
||||
|
||||
}
|
||||
catch (NoSuchFieldException | IllegalAccessException ignored)
|
||||
@ -635,7 +639,7 @@ public class FUtil
|
||||
public static int randomInteger(int min, int max)
|
||||
{
|
||||
int range = max - min + 1;
|
||||
return (int)(Math.random() * range) + min;
|
||||
return (int) (Math.random() * range) + min;
|
||||
}
|
||||
|
||||
public static String randomString(int length)
|
||||
@ -773,7 +777,7 @@ public class FUtil
|
||||
{
|
||||
c1values[i] = Math.round(c1values[i] + factor * (c2values[i] - c1values[i]));
|
||||
}
|
||||
return Color.fromRGB((int)c1values[0], (int)c1values[1], (int)c1values[2]);
|
||||
return Color.fromRGB((int) c1values[0], (int) c1values[1], (int) c1values[2]);
|
||||
}
|
||||
|
||||
public static boolean isValidIPv4(String ip)
|
||||
@ -838,8 +842,22 @@ public class FUtil
|
||||
}.runTaskLater(TotalFreedomMod.getPlugin(), delay);
|
||||
}
|
||||
|
||||
public static int getFakePlayerCount()
|
||||
{
|
||||
int i = TotalFreedomMod.getPlugin().al.vanished.size();
|
||||
for (String name : TotalFreedomMod.getPlugin().al.vanished)
|
||||
{
|
||||
if (Bukkit.getPlayer(name) == null)
|
||||
{
|
||||
i--;
|
||||
}
|
||||
}
|
||||
return getServer().getOnlinePlayers().size() - i;
|
||||
}
|
||||
|
||||
public static class PaginationList<T> extends ArrayList<T>
|
||||
{
|
||||
|
||||
private final int epp;
|
||||
|
||||
public PaginationList(int epp)
|
||||
@ -857,7 +875,7 @@ public class FUtil
|
||||
|
||||
public int getPageCount()
|
||||
{
|
||||
return (int)Math.ceil((double)size() / (double)epp);
|
||||
return (int) Math.ceil((double) size() / (double) epp);
|
||||
}
|
||||
|
||||
public List<T> getPage(int page)
|
||||
@ -871,4 +889,52 @@ public class FUtil
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -1,102 +0,0 @@
|
||||
package me.totalfreedom.totalfreedommod.world;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.WorldCreator;
|
||||
import org.bukkit.WorldType;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public final class HubWorld extends CustomWorld
|
||||
{
|
||||
|
||||
private static final String GENERATION_PARAMETERS = ConfigEntry.FLATLANDS_GENERATE_PARAMS.getString();
|
||||
//
|
||||
private WorldWeather weather = WorldWeather.OFF;
|
||||
private WorldTime time = WorldTime.INHERIT;
|
||||
|
||||
public HubWorld()
|
||||
{
|
||||
super("hubworld");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendToWorld(Player player)
|
||||
{
|
||||
super.sendToWorld(player);
|
||||
}
|
||||
|
||||
// TODO: Replace instances of org.bukkit.Sign with a non deprecated version. This might include more boilerplate.
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
protected World generateWorld()
|
||||
{
|
||||
final WorldCreator worldCreator = new WorldCreator(getName());
|
||||
worldCreator.generateStructures(false);
|
||||
worldCreator.type(WorldType.NORMAL);
|
||||
worldCreator.environment(World.Environment.NORMAL);
|
||||
worldCreator.generator(new CleanroomChunkGenerator(GENERATION_PARAMETERS));
|
||||
|
||||
final World world = server.createWorld(worldCreator);
|
||||
|
||||
assert world != null;
|
||||
world.setSpawnFlags(false, false);
|
||||
world.setSpawnLocation(0, 50, 0);
|
||||
|
||||
final Block welcomeSignBlock = world.getBlockAt(0, 50, 0);
|
||||
welcomeSignBlock.setType(Material.OAK_SIGN);
|
||||
org.bukkit.block.Sign welcomeSign = (org.bukkit.block.Sign)welcomeSignBlock.getState();
|
||||
|
||||
org.bukkit.material.Sign signData = (org.bukkit.material.Sign)welcomeSign.getData();
|
||||
signData.setFacingDirection(BlockFace.NORTH);
|
||||
|
||||
welcomeSign.setLine(0, ChatColor.GREEN + "Hub World");
|
||||
welcomeSign.setLine(1, ChatColor.DARK_GRAY + "---");
|
||||
welcomeSign.setLine(2, ChatColor.YELLOW + "Spawn Point");
|
||||
welcomeSign.setLine(3, ChatColor.DARK_GRAY + "---");
|
||||
welcomeSign.update();
|
||||
|
||||
plugin.gr.commitGameRules();
|
||||
return world;
|
||||
}
|
||||
|
||||
public WorldWeather getWeatherMode()
|
||||
{
|
||||
return weather;
|
||||
}
|
||||
|
||||
public void setWeatherMode(final WorldWeather weatherMode)
|
||||
{
|
||||
this.weather = weatherMode;
|
||||
|
||||
try
|
||||
{
|
||||
weatherMode.setWorldToWeather(getWorld());
|
||||
}
|
||||
catch (Exception ignored)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public WorldTime getTimeOfDay()
|
||||
{
|
||||
return time;
|
||||
}
|
||||
|
||||
public void setTimeOfDay(final WorldTime timeOfDay)
|
||||
{
|
||||
this.time = timeOfDay;
|
||||
|
||||
try
|
||||
{
|
||||
timeOfDay.setWorldToTime(getWorld());
|
||||
}
|
||||
catch (Exception ignored)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -20,14 +20,12 @@ public class WorldManager extends FreedomService
|
||||
public Flatlands flatlands;
|
||||
public AdminWorld adminworld;
|
||||
public MasterBuilderWorld masterBuilderWorld;
|
||||
public HubWorld hubworld;
|
||||
|
||||
public WorldManager()
|
||||
{
|
||||
this.flatlands = new Flatlands();
|
||||
this.adminworld = new AdminWorld();
|
||||
this.masterBuilderWorld = new MasterBuilderWorld();
|
||||
this.hubworld = new HubWorld();
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -36,7 +34,6 @@ public class WorldManager extends FreedomService
|
||||
flatlands.getWorld();
|
||||
adminworld.getWorld();
|
||||
masterBuilderWorld.getWorld();
|
||||
hubworld.getWorld();
|
||||
|
||||
// Disable weather
|
||||
if (ConfigEntry.DISABLE_WEATHER.getBoolean())
|
||||
@ -57,7 +54,6 @@ public class WorldManager extends FreedomService
|
||||
flatlands.getWorld().save();
|
||||
adminworld.getWorld().save();
|
||||
masterBuilderWorld.getWorld().save();
|
||||
hubworld.getWorld().save();
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
@ -73,10 +69,6 @@ public class WorldManager extends FreedomService
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if (event.getWorld().equals(hubworld.getWorld()) && hubworld.getWeatherMode() != WorldWeather.OFF)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (Exception ignored)
|
||||
{
|
||||
@ -101,10 +93,6 @@ public class WorldManager extends FreedomService
|
||||
{
|
||||
return;
|
||||
}
|
||||
else if (event.getWorld().equals(hubworld.getWorld()) && hubworld.getWeatherMode() != WorldWeather.OFF)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch (Exception ignored)
|
||||
{
|
||||
|
@ -52,9 +52,9 @@ public class WorldRestrictions extends FreedomService
|
||||
|
||||
public boolean doRestrict(Player player)
|
||||
{
|
||||
if (!plugin.pl.getData(player).isMasterBuilder() && plugin.pl.canManageMasterBuilders(player.getName()))
|
||||
if (!plugin.pl.getData(player).isMasterBuilder() && plugin.pl.canManageMasterBuilders(player.getUniqueId()))
|
||||
{
|
||||
if (player.getWorld().equals(plugin.wm.masterBuilderWorld.getWorld()) || player.getWorld().equals(plugin.wm.hubworld.getWorld()))
|
||||
if (player.getWorld().equals(plugin.wm.masterBuilderWorld.getWorld()))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -78,6 +78,8 @@ discord:
|
||||
senior_admin_role_id: ''
|
||||
# Developer role ID
|
||||
developer_role_id: ''
|
||||
# Assistant Executive role ID
|
||||
assistant_executive_role_id: ''
|
||||
# Executive Admin role ID
|
||||
executive_role_id: ''
|
||||
# Owner role ID
|
||||
@ -228,46 +230,47 @@ allow:
|
||||
auto_clear: false
|
||||
gravity: false
|
||||
|
||||
# Blocked commands:
|
||||
#
|
||||
# How blocked commands work:
|
||||
# All sections described below are delimited by colon characters.
|
||||
# Make sure that you block a command by its main command name, not an alias
|
||||
# as all aliases are blocked by default. Commands are case-insensitive.
|
||||
#
|
||||
# * The first section is a letter which indicates which rank may use this command
|
||||
# Valid ranks:
|
||||
# n - Nobody (Completely disabled)
|
||||
# a - Admins (Console)
|
||||
# s - Senior Admins (Console)
|
||||
# o - Ops (Non-Ops won't be able to use it)
|
||||
#
|
||||
# * The second section is a letter which indicates what to do when a player executes that command.
|
||||
# Valid actions:
|
||||
# b - Block the command
|
||||
# a - Block the command and auto-eject that player (for ops and below)
|
||||
# u - Block the command and Return an "Unknown command" message (Used to hide commands)
|
||||
#
|
||||
# * The third section is the command to be blocked, prefixed with a slash
|
||||
#
|
||||
# * The fourth section is the message to send to the player when executing that command.
|
||||
# This should be omitted if unwanted. ChatColors are supported with the &-key. By default
|
||||
# the starting ChatColor is set to gray. You can use the default 'That command is blocked.' message
|
||||
# by using a single underscore.
|
||||
#
|
||||
# Examples:
|
||||
# - 'n:b:/mail sendall:&4You can't send mails to everyone!'
|
||||
# - 's:a:/stop'
|
||||
# - 'n:b:/ban:_'
|
||||
#
|
||||
blocked_commands:
|
||||
# Core Protect Blocked and shows as an unknown command...
|
||||
#
|
||||
# How globally blocked commands work:
|
||||
# All sections described below are delimited by colon characters.
|
||||
# Make sure that you block a command by its main command name, not an alias
|
||||
# as all aliases are blocked by default. Commands are case-insensitive.
|
||||
#
|
||||
# * The first section is a letter which indicates which rank may use this command
|
||||
# Valid ranks:
|
||||
# n - Nobody (Completely disabled)
|
||||
# a - Admins (Console)
|
||||
# s - Senior Admins (Console)
|
||||
# o - Ops (Non-Ops won't be able to use it)
|
||||
#
|
||||
# * The second section is a letter which indicates what to do when a player executes that command.
|
||||
# Valid actions:
|
||||
# b - Block the command
|
||||
# a - Block the command and auto-eject that player (for ops and below)
|
||||
# u - Block the command and Return an "Unknown command" message (Used to hide commands)
|
||||
#
|
||||
# * The third section is the command to be blocked, prefixed with a slash
|
||||
#
|
||||
# * The fourth section is the message to send to the player when executing that command.
|
||||
# This should be omitted if unwanted. ChatColors are supported with the &-key. By default
|
||||
# the starting ChatColor is set to gray. You can use the default 'That command is blocked.' message
|
||||
# by using a single underscore.
|
||||
#
|
||||
# Examples:
|
||||
# - 'n:b:/mail sendall:&4You can't send mails to everyone!'
|
||||
# - 's:a:/stop'
|
||||
# - 'n:b:/ban:_'
|
||||
#
|
||||
global:
|
||||
# CoreProtect Blocked and shows as an unknown command...
|
||||
- 'a:u:/co:_'
|
||||
- 'n:u:/co purge:_'
|
||||
- 'a:u:/coreprotect:_'
|
||||
- 'n:u:/coreprotect purge:_'
|
||||
- 'a:u:/core:_'
|
||||
- 'n:u:/core purge:_'
|
||||
|
||||
# Disabled commands
|
||||
- 'n:b:/essentials:_'
|
||||
- 'n:b:/time:Server-side time changing is disabled. Please use /ptime to set your own personal time.'
|
||||
@ -290,7 +293,6 @@ blocked_commands:
|
||||
- 'n:b:/bungeeguard:_'
|
||||
- 'n:b:/buycraft:_'
|
||||
- 'n:b:/spigot reload:_'
|
||||
# - 'n:b:/setjail:_'
|
||||
- 'n:b:/mail sendall:Sending mail to all players is not allowed.'
|
||||
- 'n:b:/entitydata:_'
|
||||
- 'n:b:/skins:_'
|
||||
@ -309,7 +311,6 @@ blocked_commands:
|
||||
- 'n:b:/d minecart_command:_'
|
||||
- 'n:b:/loot:_'
|
||||
- 'n:b:/plan:_'
|
||||
# - 'n:b:/explosivearrows:&cDisabled until further notice'
|
||||
- 'n:b://material:_'
|
||||
- 'n:b://mat:_'
|
||||
- 'n:b:/mat:_'
|
||||
@ -319,7 +320,6 @@ blocked_commands:
|
||||
- 'n:b:/data:_'
|
||||
- 'n:b:/datapack:_'
|
||||
- 'n:b://regen:_'
|
||||
- 'n:b:/onlinemode:&cThis breaks UUIDs.'
|
||||
- 'n:b:/execute:_'
|
||||
- 'n:b:/killall:_'
|
||||
- 'n:b:/createdisguise:_'
|
||||
@ -403,14 +403,12 @@ blocked_commands:
|
||||
- 'a:b:/bossbar:_'
|
||||
- 'a:b:/team:_'
|
||||
- 'a:b:/spawner:_'
|
||||
# - 'a:b:/getpos:_'
|
||||
- 's:b:/istack:_'
|
||||
- 'a:b:/getloc:_'
|
||||
- 'a:b:/holo:_'
|
||||
- 'a:b:/hd:_'
|
||||
- 'a:b:/hologram:_'
|
||||
- 'a:b:/holograms:_'
|
||||
# - 'a:b:/whois:&cpeople like aurulim ruined the usage of this command, stop tp bypassing' # Blocking this is ridiculous. Instead of being lazy and just blocking whois, how about you disable the part where it reveals people's coords, like you did with disabling IPs?
|
||||
- 's:b:/awe toggle:_'
|
||||
- 's:b:/tellraw:_'
|
||||
- 's:b://awe toggle:_'
|
||||
@ -436,6 +434,39 @@ blocked_commands:
|
||||
- 's:b:/viaver:_'
|
||||
- 's:b:/viaversion:_'
|
||||
- 's:b:/spark:_'
|
||||
- 's:b://g:_'
|
||||
|
||||
# Commands that cannot be used by muted players
|
||||
muted:
|
||||
- say
|
||||
- me
|
||||
- msg
|
||||
- tell
|
||||
- reply
|
||||
- mail
|
||||
|
||||
# Commands that cannot be used with /wildcard
|
||||
wildcard:
|
||||
- wildcard
|
||||
- gtfo
|
||||
- doom
|
||||
- slconfig
|
||||
- smite
|
||||
|
||||
# Words that cannot be used in tags
|
||||
forbidden_words:
|
||||
- admin
|
||||
- owner
|
||||
- moderator
|
||||
- developer
|
||||
- console
|
||||
- dev
|
||||
- staff
|
||||
- mod
|
||||
- sra
|
||||
- tca
|
||||
- sta
|
||||
- sa
|
||||
|
||||
# Automatically wipe dropped objects
|
||||
auto_wipe: true
|
||||
|
@ -1,16 +1,50 @@
|
||||
#
|
||||
# TotalFreedomMod Permissions
|
||||
# TotalFreedomMod 5.5 Permissions
|
||||
# by ZeroEpoch1969
|
||||
#
|
||||
|
||||
# Note that every group inherits the previous groups' permissions
|
||||
# Meaning Senior Admins have the permissions of Operators and Admins, and etc
|
||||
# Meaning Telnet Admins have the permissions of Operators and Super Admins, and etc
|
||||
|
||||
# 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
|
||||
remove:
|
||||
- "voxelsniper"
|
||||
- "bending"
|
||||
- "bending.admin"
|
||||
- "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
|
||||
operators:
|
||||
@ -36,7 +70,10 @@ operators:
|
||||
- "worldedit.removebelow"
|
||||
- "worldedit.removenear"
|
||||
- "worldedit.replacenear"
|
||||
|
||||
- "worldedit.brush.*"
|
||||
- "worldedit.global-mask"
|
||||
- "worldedit.fill"
|
||||
- "worldedit.fill.recursive"
|
||||
# LibsDisguises
|
||||
- "libsdisguises.noactionbar"
|
||||
|
||||
@ -46,6 +83,66 @@ operators:
|
||||
- "worldguard.region.removemember.own.*"
|
||||
- "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_builders:
|
||||
- "worldedit.tool.*"
|
||||
@ -62,10 +159,22 @@ master_builders:
|
||||
|
||||
# Admin permission nodes
|
||||
admins:
|
||||
- "coreprotect.*"
|
||||
- "worldedit.*"
|
||||
- "worldguard.*"
|
||||
- "bending.*"
|
||||
- "bending.admin.remove"
|
||||
- "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_admins: []
|
||||
senior_admins:
|
||||
- "bending.admin.permaremove"
|
||||
- "bending.ability.Cleanse"
|
||||
|
Reference in New Issue
Block a user