mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2025-07-01 04:26:42 +00:00
Compare commits
1 Commits
2022.02-RC
...
FS-177
Author | SHA1 | Date | |
---|---|---|---|
b99520b491 |
4
.github/dependabot.yml
vendored
4
.github/dependabot.yml
vendored
@ -9,15 +9,11 @@ updates:
|
||||
# Maintain Maven Updates
|
||||
- package-ecosystem: "maven" # See documentation for possible values
|
||||
directory: "/" # Location of package manifests
|
||||
target-branch: "development"
|
||||
open-pull-requests-limit: 50
|
||||
schedule:
|
||||
interval: "daily"
|
||||
|
||||
# Maintain dependencies for GitHub Actions
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
target-branch: "development"
|
||||
open-pull-requests-limit: 50
|
||||
schedule:
|
||||
interval: "daily"
|
||||
|
2
.github/workflows/codacy-analysis.yml
vendored
2
.github/workflows/codacy-analysis.yml
vendored
@ -25,7 +25,7 @@ jobs:
|
||||
|
||||
# Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis
|
||||
- name: Run Codacy Analysis CLI
|
||||
uses: codacy/codacy-analysis-cli-action@4.0.0
|
||||
uses: codacy/codacy-analysis-cli-action@1.1.0
|
||||
with:
|
||||
# Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository
|
||||
# You can also omit the token and run the tools that support default configurations
|
||||
|
3
.github/workflows/codeql-analysis.yml
vendored
3
.github/workflows/codeql-analysis.yml
vendored
@ -38,11 +38,10 @@ jobs:
|
||||
uses: actions/checkout@v2
|
||||
|
||||
- name: Setup Java JDK
|
||||
uses: actions/setup-java@v2.3.0
|
||||
uses: actions/setup-java@v1.4.3
|
||||
with:
|
||||
# The Java version to make available on the path. Takes a whole or semver Java version, or 1.x syntax (e.g. 1.8 => Java 8.x). Early access versions can be specified in the form of e.g. 14-ea, 14.0.0-ea, or 14.0.0-ea.28
|
||||
java-version: 11
|
||||
distribution: 'adopt'
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
|
2
.github/workflows/downstream.yml
vendored
2
.github/workflows/downstream.yml
vendored
@ -30,7 +30,7 @@ jobs:
|
||||
with:
|
||||
upstream_repository: AtlasMediaGroup/TotalFreedomMod
|
||||
upstream_branch: main
|
||||
target_branch: development
|
||||
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)
|
||||
|
21
.github/workflows/java11-maven.yml
vendored
21
.github/workflows/java11-maven.yml
vendored
@ -1,21 +0,0 @@
|
||||
name: Java11-Maven-Build
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
build-java-11:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
# Checkout the code
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
# Java 11 Builds
|
||||
- name: Set up JDK 11
|
||||
uses: actions/setup-java@v2.3.0
|
||||
with:
|
||||
java-version: 11
|
||||
distribution: 'adopt'
|
||||
- name: Build with Maven
|
||||
run: mvn -B package --file pom.xml
|
21
.github/workflows/java17-maven.yml
vendored
21
.github/workflows/java17-maven.yml
vendored
@ -1,21 +0,0 @@
|
||||
name: Java17-Maven-Build
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
build-java-17:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
# Checkout the code
|
||||
- uses: actions/checkout@v1
|
||||
|
||||
# Java 16 Builds
|
||||
- name: Set up JDK 17
|
||||
uses: actions/setup-java@v2.3.0
|
||||
with:
|
||||
java-version: 17
|
||||
distribution: 'adopt'
|
||||
- name: Build with Maven
|
||||
run: mvn -B package --file pom.xml
|
27
.github/workflows/maven.yml
vendored
Normal file
27
.github/workflows/maven.yml
vendored
Normal file
@ -0,0 +1,27 @@
|
||||
name: Maven-Build
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
# Java 11 Builds
|
||||
- uses: actions/checkout@v1
|
||||
- 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
|
@ -11,23 +11,20 @@ These versions are currently actively supported by our team, and you should expe
|
||||
|
||||
| Version | Supported | Support End: |
|
||||
| ------------------- | ------------------ | ------------------------------ |
|
||||
| 2021.09 | :white_check_mark: | No Earlier than December 2021 |
|
||||
| 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.06 | :white_check_mark: | October 2021 |
|
||||
|
||||
| 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.05 | :white_check_mark: | September 2021 |
|
||||
| 2021.04 | :white_check_mark: | July 2021 |
|
||||
| 2021.02 | :x: | 6 June 2021 |
|
||||
| 2020.11 | :x: | 3 May 2021 |
|
||||
| 6.0.x (Pre-Release) | :x: | December 2020 |
|
||||
|
94
pom.xml
94
pom.xml
@ -5,7 +5,7 @@
|
||||
|
||||
<groupId>me.totalfreedom</groupId>
|
||||
<artifactId>TotalFreedomMod</artifactId>
|
||||
<version>2021.09</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>
|
||||
@ -39,10 +41,9 @@
|
||||
</scm>
|
||||
|
||||
<repositories>
|
||||
|
||||
<repository>
|
||||
<id>atlas-nexus-01-totalfreedom-development</id>
|
||||
<url>https://nexus-01.core.atlas-media.co.uk/repository/totalfreedom-development/</url>
|
||||
<id>jitpack.io</id>
|
||||
<url>https://jitpack.io</url>
|
||||
</repository>
|
||||
|
||||
<repository>
|
||||
@ -102,11 +103,14 @@
|
||||
</repository>
|
||||
|
||||
<repository>
|
||||
<id>esentialsx-repo</id>
|
||||
<url>https://repo.essentialsx.net/releases/</url>
|
||||
<id>papermc</id>
|
||||
<url>https://papermc.io/repo/repository/maven-public/</url>
|
||||
</repository>
|
||||
|
||||
<repository>
|
||||
<id>ess-repo</id>
|
||||
<url>https://ci.ender.zone/plugin/repository/everything/</url>
|
||||
</repository>
|
||||
|
||||
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
@ -114,14 +118,14 @@
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
<version>2.11.0</version>
|
||||
<version>2.8.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-lang3</artifactId>
|
||||
<version>3.12.0</version>
|
||||
<version>3.11</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
@ -132,10 +136,17 @@
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.github.speedxx</groupId>
|
||||
<artifactId>Mojangson</artifactId>
|
||||
<version>1957eef8d6</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.bstats</groupId>
|
||||
<artifactId>bstats-bukkit</artifactId>
|
||||
<version>2.2.1</version>
|
||||
<version>1.8</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
@ -163,7 +174,14 @@
|
||||
<dependency>
|
||||
<groupId>com.sk89q.worldedit</groupId>
|
||||
<artifactId>worldedit-bukkit</artifactId>
|
||||
<version>7.2.4</version>
|
||||
<version>7.3.0-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>EssentialsX</artifactId>
|
||||
<version>2.18.2</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@ -177,7 +195,7 @@
|
||||
<dependency>
|
||||
<groupId>net.coreprotect</groupId>
|
||||
<artifactId>coreprotect</artifactId>
|
||||
<version>19.5</version>
|
||||
<version>19.3</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
@ -201,12 +219,12 @@
|
||||
<version>v1.9</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
|
||||
<dependency>
|
||||
<groupId>net.ess3</groupId>
|
||||
<artifactId>EssentialsX</artifactId>
|
||||
<version>2.18.2</version>
|
||||
<scope>compile</scope>
|
||||
<groupId>net.goldtreeservers</groupId>
|
||||
<artifactId>worldguardextraflags</artifactId>
|
||||
<version>4.0.0</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
@ -219,43 +237,53 @@
|
||||
<dependency>
|
||||
<groupId>org.javassist</groupId>
|
||||
<artifactId>javassist</artifactId>
|
||||
<version>3.28.0-GA</version>
|
||||
<version>3.27.0-GA</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>me.totalfreedom</groupId>
|
||||
<artifactId>tfguilds</artifactId>
|
||||
<version>2021.06-RC2</version>
|
||||
<scope>compile</scope>
|
||||
<groupId>com.github.AtlasMediaGroup</groupId>
|
||||
<artifactId>TFGuilds</artifactId>
|
||||
<version>${tfguilds.version}</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.jetbrains</groupId>
|
||||
<artifactId>annotations</artifactId>
|
||||
<version>22.0.0</version>
|
||||
<version>20.1.0</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<version>3.1.2</version>
|
||||
<version>3.1.1</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.junit.jupiter</groupId>
|
||||
<artifactId>junit-jupiter</artifactId>
|
||||
<version>5.8.0</version>
|
||||
<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>
|
||||
@ -285,7 +313,7 @@
|
||||
<plugin>
|
||||
<groupId>pl.project13.maven</groupId>
|
||||
<artifactId>git-commit-id-plugin</artifactId>
|
||||
<version>4.9.10</version>
|
||||
<version>4.0.2</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>get-the-git-infos</id>
|
||||
@ -326,7 +354,7 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-antrun-plugin</artifactId>
|
||||
<version>3.0.0</version>
|
||||
<version>1.8</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<id>default-cli</id>
|
||||
@ -429,9 +457,11 @@
|
||||
<include>org.reflections:reflections</include>
|
||||
<include>org.javassist:javassist</include>
|
||||
<include>io.papermc:paperlib</include>
|
||||
<include>com.github.speedxx:Mojangson</include>
|
||||
<include>org.bstats:bstats-bukkit</include>
|
||||
<include>org.bstats:bstats-base</include>
|
||||
<include>org.jetbrains:annotations</include>
|
||||
<includes>org.apache.httpcomponents.client5:httpclient5</includes>
|
||||
<includes>org.apache.httpcomponents.core5:httpcore5</includes>
|
||||
</includes>
|
||||
</artifactSet>
|
||||
</configuration>
|
||||
@ -448,7 +478,7 @@
|
||||
<plugin>
|
||||
<groupId>org.apache.maven.plugins</groupId>
|
||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||
<version>3.1.2</version>
|
||||
<version>3.1.1</version>
|
||||
<configuration>
|
||||
<configLocation>checkstyle.xml</configLocation>
|
||||
<failOnViolation>true</failOnViolation>
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -19,7 +19,6 @@ import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
public class LoginProcess extends FreedomService
|
||||
{
|
||||
@ -191,22 +190,6 @@ public class LoginProcess extends FreedomService
|
||||
final FPlayer fPlayer = plugin.pl.getPlayer(player);
|
||||
final PlayerData playerData = plugin.pl.getData(player);
|
||||
|
||||
// Sends a message to the player if they have never joined before (or simply lack player data).
|
||||
if (!event.getPlayer().hasPlayedBefore() && ConfigEntry.FIRST_JOIN_INFO_ENABLED.getBoolean())
|
||||
{
|
||||
new BukkitRunnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
for (String line : ConfigEntry.FIRST_JOIN_INFO.getStringList())
|
||||
{
|
||||
player.sendMessage(FUtil.colorize(line));
|
||||
}
|
||||
}
|
||||
}.runTaskLater(plugin, 20);
|
||||
}
|
||||
|
||||
player.sendTitle(FUtil.colorize(ConfigEntry.SERVER_LOGIN_TITLE.getString()), FUtil.colorize(ConfigEntry.SERVER_LOGIN_SUBTITLE.getString()), 20, 100, 60);
|
||||
player.setOp(true);
|
||||
|
||||
|
@ -1,16 +1,17 @@
|
||||
package me.totalfreedom.totalfreedommod;
|
||||
|
||||
import com.google.common.collect.Multimap;
|
||||
import ca.momothereal.mojangson.ex.MojangsonParseException;
|
||||
import ca.momothereal.mojangson.value.MojangsonCompound;
|
||||
import ca.momothereal.mojangson.value.MojangsonValue;
|
||||
import io.papermc.lib.PaperLib;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Map;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import net.minecraft.server.v1_16_R3.NBTTagCompound;
|
||||
import net.minecraft.server.v1_16_R3.NBTTagList;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.attribute.AttributeModifier;
|
||||
import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@ -19,7 +20,6 @@ import org.bukkit.event.player.PlayerLoginEvent;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
public class MovementValidator extends FreedomService
|
||||
{
|
||||
@ -133,49 +133,55 @@ public class MovementValidator extends FreedomService
|
||||
|
||||
private Boolean exploitItem(ItemStack item)
|
||||
{
|
||||
if (item == null)
|
||||
net.minecraft.server.v1_16_R3.ItemStack nmsStack = CraftItemStack.asNMSCopy(item);
|
||||
NBTTagList modifiers = getAttributeList(nmsStack);
|
||||
MojangsonCompound compound = new MojangsonCompound();
|
||||
boolean foundNegative = false;
|
||||
boolean foundPositive = false;
|
||||
try
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
if (meta != null)
|
||||
{
|
||||
Multimap<Attribute, AttributeModifier> attributes = meta.getAttributeModifiers();
|
||||
if (attributes != null)
|
||||
String mod = modifiers.toString();
|
||||
String fancy = ("{" + (mod.substring(1, mod.length() - 1).replace("{", "").replace("}", "")) + "}");
|
||||
compound.read(fancy);
|
||||
for (String key : compound.keySet())
|
||||
{
|
||||
Map<Attribute, Collection<AttributeModifier>> attrMap = attributes.asMap();
|
||||
|
||||
// For every attribute...
|
||||
for (Attribute attr : attributes.keySet())
|
||||
if (Objects.equals(key, "Amount")) //null-safe .equals()
|
||||
{
|
||||
// Default values
|
||||
boolean posInf = false;
|
||||
boolean negInf = false;
|
||||
|
||||
// For every AttributeModifier...
|
||||
for (AttributeModifier modifier : attrMap.get(attr))
|
||||
@SuppressWarnings("rawtypes")
|
||||
List<MojangsonValue> values = compound.get(key);
|
||||
for (MojangsonValue<?> val : values)
|
||||
{
|
||||
// Are they ∞ or -∞?
|
||||
if (modifier.getAmount() == Double.POSITIVE_INFINITY)
|
||||
if (val.getValue().toString().equals("Infinityd"))
|
||||
{
|
||||
posInf = true;
|
||||
foundPositive = true;
|
||||
}
|
||||
else if (modifier.getAmount() == Double.NEGATIVE_INFINITY)
|
||||
if (val.getValue().toString().equals("-Infinityd"))
|
||||
{
|
||||
negInf = true;
|
||||
foundNegative = true;
|
||||
}
|
||||
}
|
||||
|
||||
// Are both values set as true?
|
||||
if (posInf && negInf)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return false;
|
||||
catch (MojangsonParseException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
return foundNegative && foundPositive;
|
||||
}
|
||||
|
||||
|
||||
private NBTTagList getAttributeList(net.minecraft.server.v1_16_R3.ItemStack stack)
|
||||
{
|
||||
if (stack.getTag() == null)
|
||||
{
|
||||
stack.setTag(new NBTTagCompound());
|
||||
}
|
||||
NBTTagList attr = stack.getTag().getList("AttributeModifiers", 10);
|
||||
if (attr == null)
|
||||
{
|
||||
stack.getTag().set("AttributeModifiers", new NBTTagList());
|
||||
}
|
||||
return stack.getTag().getList("AttributeModifiers", 10);
|
||||
}
|
||||
}
|
@ -2,6 +2,8 @@ package me.totalfreedom.totalfreedommod;
|
||||
|
||||
import java.util.ArrayList;
|
||||
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;
|
||||
@ -18,7 +20,7 @@ import org.bukkit.event.player.PlayerJoinEvent;
|
||||
public class Muter extends FreedomService
|
||||
{
|
||||
|
||||
public final List<String> MUTED_PLAYERS = new ArrayList<>();
|
||||
public final List<UUID> MUTED_PLAYERS = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public void onStart()
|
||||
@ -45,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;
|
||||
}
|
||||
|
||||
@ -105,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);
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
@ -276,25 +276,8 @@ public class CoreProtectBridge extends FreedomService
|
||||
Block block = event.getClickedBlock();
|
||||
final CoreProtectAPI coreProtect = getCoreProtectAPI();
|
||||
|
||||
// TODO: Rewrite this
|
||||
if (data.hasInspection())
|
||||
{
|
||||
int cooldownTime = 3;
|
||||
|
||||
// Cooldown check
|
||||
if ((event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK)
|
||||
&& cooldown.containsKey(player.getName()))
|
||||
{
|
||||
long secondsLeft = getSecondsLeft(cooldown.get(player.getName()), cooldownTime);
|
||||
if (secondsLeft > 0L)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
player.sendMessage(ChatColor.RED + String.valueOf(secondsLeft) + " seconds left before next query.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
// Actual lookup time
|
||||
if (event.getAction() == Action.LEFT_CLICK_BLOCK)
|
||||
{
|
||||
if (block != null)
|
||||
@ -302,6 +285,19 @@ public class CoreProtectBridge extends FreedomService
|
||||
event.setCancelled(true);
|
||||
List<String[]> lookup = coreProtect.blockLookup(block, -1);
|
||||
|
||||
int cooldownTime = 3;
|
||||
|
||||
if (cooldown.containsKey(player.getName()))
|
||||
{
|
||||
long secondsLeft = getSecondsLeft(cooldown.get(player.getName()), cooldownTime);
|
||||
if (secondsLeft > 0L)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
player.sendMessage(ChatColor.RED + String.valueOf(secondsLeft) + " seconds left before next query.");
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (!plugin.al.isAdmin(player))
|
||||
{
|
||||
cooldown.put(player.getName(), System.currentTimeMillis());
|
||||
@ -368,75 +364,91 @@ public class CoreProtectBridge extends FreedomService
|
||||
{
|
||||
if (block != null)
|
||||
{
|
||||
BlockState blockState = block.getRelative(event.getBlockFace()).getState();
|
||||
Block placedBlock = blockState.getBlock();
|
||||
event.setCancelled(true);
|
||||
List<String[]> lookup = coreProtect.blockLookup(placedBlock, -1);
|
||||
|
||||
if (lookup.isEmpty())
|
||||
if (data.hasInspection())
|
||||
{
|
||||
lookup = coreProtect.blockLookup(block, -1);
|
||||
}
|
||||
BlockState blockState = block.getRelative(event.getBlockFace()).getState();
|
||||
Block placedBlock = blockState.getBlock();
|
||||
event.setCancelled(true);
|
||||
List<String[]> lookup = coreProtect.blockLookup(placedBlock, -1);
|
||||
|
||||
if (!plugin.al.isAdmin(player))
|
||||
{
|
||||
cooldown.put(player.getName(), System.currentTimeMillis());
|
||||
}
|
||||
|
||||
if (lookup != null)
|
||||
{
|
||||
if (lookup.isEmpty())
|
||||
{
|
||||
player.sendMessage(net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector " + ChatColor.WHITE + "- " + "No block data found for this location");
|
||||
return;
|
||||
lookup = coreProtect.blockLookup(block, -1);
|
||||
}
|
||||
|
||||
HISTORY_MAP.remove(event.getPlayer());
|
||||
HISTORY_MAP.put(event.getPlayer(), new FUtil.PaginationList<>(10));
|
||||
FUtil.PaginationList<String> paged = HISTORY_MAP.get(event.getPlayer());
|
||||
int cooldownTime = 3;
|
||||
|
||||
player.sendMessage("---- " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector" + ChatColor.WHITE + " ---- " +
|
||||
ChatColor.GRAY + "(x" + block.getX() + "/" + "y" + block.getY() + "/" + "z" + block.getZ() + ")");
|
||||
|
||||
for (String[] value : lookup)
|
||||
if (cooldown.containsKey(player.getName()))
|
||||
{
|
||||
CoreProtectAPI.ParseResult result = coreProtect.parseResult(value);
|
||||
BlockData bl = result.getBlockData();
|
||||
|
||||
String s;
|
||||
String st = "";
|
||||
|
||||
if (result.getActionString().equals("Placement"))
|
||||
long secondsLeft = getSecondsLeft(cooldown.get(player.getName()), cooldownTime);
|
||||
if (secondsLeft > 0L)
|
||||
{
|
||||
s = " placed ";
|
||||
event.setCancelled(true);
|
||||
player.sendMessage(ChatColor.RED + String.valueOf(secondsLeft) + " seconds left before next query.");
|
||||
return;
|
||||
}
|
||||
else if (result.getActionString().equals("Removal"))
|
||||
{
|
||||
s = " broke ";
|
||||
}
|
||||
else
|
||||
{
|
||||
s = " interacted with ";
|
||||
}
|
||||
|
||||
if (result.isRolledBack())
|
||||
{
|
||||
st += "§m";
|
||||
}
|
||||
|
||||
int time = (int)(System.currentTimeMillis() / 1000L);
|
||||
|
||||
paged.add(ChatColor.GRAY + getTimeAgo(result.getTime(), time) + ChatColor.WHITE + " - " + net.md_5.bungee.api.ChatColor.of("#30ade4") +
|
||||
st + result.getPlayer() + ChatColor.WHITE + st + s + net.md_5.bungee.api.ChatColor.of("#30ade4") + st + bl.getMaterial().toString().toLowerCase());
|
||||
}
|
||||
|
||||
List<String> page = paged.getPage(1);
|
||||
for (String entries : page)
|
||||
if (!plugin.al.isAdmin(player))
|
||||
{
|
||||
player.sendMessage(entries);
|
||||
cooldown.put(player.getName(), System.currentTimeMillis());
|
||||
}
|
||||
|
||||
player.sendMessage("Page 1/" + paged.getPageCount() + " | To index through the pages, type " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "/ins history <page>");
|
||||
if (lookup != null)
|
||||
{
|
||||
if (lookup.isEmpty())
|
||||
{
|
||||
player.sendMessage(net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector " + ChatColor.WHITE + "- " + "No block data found for this location");
|
||||
return;
|
||||
}
|
||||
|
||||
HISTORY_MAP.remove(event.getPlayer());
|
||||
HISTORY_MAP.put(event.getPlayer(), new FUtil.PaginationList<>(10));
|
||||
FUtil.PaginationList<String> paged = HISTORY_MAP.get(event.getPlayer());
|
||||
|
||||
player.sendMessage("---- " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector" + ChatColor.WHITE + " ---- " +
|
||||
ChatColor.GRAY + "(x" + block.getX() + "/" + "y" + block.getY() + "/" + "z" + block.getZ() + ")");
|
||||
|
||||
for (String[] value : lookup)
|
||||
{
|
||||
CoreProtectAPI.ParseResult result = coreProtect.parseResult(value);
|
||||
BlockData bl = result.getBlockData();
|
||||
|
||||
String s;
|
||||
String st = "";
|
||||
|
||||
if (result.getActionString().equals("Placement"))
|
||||
{
|
||||
s = " placed ";
|
||||
}
|
||||
else if (result.getActionString().equals("Removal"))
|
||||
{
|
||||
s = " broke ";
|
||||
}
|
||||
else
|
||||
{
|
||||
s = " interacted with ";
|
||||
}
|
||||
|
||||
if (result.isRolledBack())
|
||||
{
|
||||
st += "§m";
|
||||
}
|
||||
|
||||
int time = (int)(System.currentTimeMillis() / 1000L);
|
||||
|
||||
paged.add(ChatColor.GRAY + getTimeAgo(result.getTime(), time) + ChatColor.WHITE + " - " + net.md_5.bungee.api.ChatColor.of("#30ade4") +
|
||||
st + result.getPlayer() + ChatColor.WHITE + st + s + net.md_5.bungee.api.ChatColor.of("#30ade4") + st + bl.getMaterial().toString().toLowerCase());
|
||||
}
|
||||
|
||||
List<String> page = paged.getPage(1);
|
||||
for (String entries : page)
|
||||
{
|
||||
player.sendMessage(entries);
|
||||
}
|
||||
|
||||
player.sendMessage("Page 1/" + paged.getPageCount() + " | To index through the pages, type " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "/ins history <page>");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,8 +1,8 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import com.earth2me.essentials.User;
|
||||
import me.totalfreedom.totalfreedommod.banning.Ban;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||
@ -60,39 +60,28 @@ public class Command_ban extends FreedomCommand
|
||||
}
|
||||
|
||||
final String username;
|
||||
final String ip;
|
||||
final List<String> ips = new ArrayList<>();
|
||||
|
||||
final Player player = getPlayer(args[0]);
|
||||
if (player == null)
|
||||
{
|
||||
// Gets the IP using Essentials data if available
|
||||
if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null)
|
||||
final PlayerData entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0]));
|
||||
|
||||
if (entry == null)
|
||||
{
|
||||
User essUser = plugin.esb.getEssentialsUser(args[0]);
|
||||
//
|
||||
username = essUser.getName();
|
||||
ip = essUser.getLastLoginAddress();
|
||||
}
|
||||
// Last resort - Getting the first result from the username itself
|
||||
else
|
||||
{
|
||||
PlayerData entry = plugin.pl.getData(args[0]);
|
||||
if (entry == null)
|
||||
{
|
||||
msg(PLAYER_NOT_FOUND);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
username = entry.getName();
|
||||
ip = entry.getIps().get(0);
|
||||
}
|
||||
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
|
||||
{
|
||||
final PlayerData entry = plugin.pl.getData(player);
|
||||
username = player.getName();
|
||||
ip = FUtil.getIp(player);
|
||||
//ips.addAll(entry.getIps());/
|
||||
ips.add(FUtil.getIp(player));
|
||||
|
||||
// Deop
|
||||
player.setOp(false);
|
||||
@ -137,6 +126,7 @@ public class Command_ban extends FreedomCommand
|
||||
|
||||
// Ban player
|
||||
Ban ban;
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
ban = Ban.forPlayer(player, sender, null, reason);
|
||||
@ -145,8 +135,12 @@ public class Command_ban extends FreedomCommand
|
||||
{
|
||||
ban = Ban.forPlayerName(username, sender, null, reason);
|
||||
}
|
||||
ban.addIp(ip);
|
||||
|
||||
for (String ip : ips)
|
||||
{
|
||||
ban.addIp(ip);
|
||||
ban.addIp(FUtil.getFuzzyIp(ip));
|
||||
}
|
||||
plugin.bm.addBan(ban);
|
||||
|
||||
|
||||
@ -160,7 +154,7 @@ public class Command_ban extends FreedomCommand
|
||||
{
|
||||
bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(reason);
|
||||
}
|
||||
msg(sender, ChatColor.GRAY + username + " has been banned and IP is: " + ip);
|
||||
msg(sender, ChatColor.GRAY + username + " has been banned and IP is: " + StringUtils.join(ips, ", "));
|
||||
FUtil.adminAction(sender.getName(), bcast.toString(), true);
|
||||
}
|
||||
|
||||
@ -178,7 +172,7 @@ public class Command_ban extends FreedomCommand
|
||||
}
|
||||
|
||||
// Log ban
|
||||
plugin.pul.logPunishment(new Punishment(username, ip, sender.getName(), PunishmentType.BAN, reason));
|
||||
plugin.pul.logPunishment(new Punishment(username, ips.get(0), sender.getName(), PunishmentType.BAN, reason));
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import java.util.Objects;
|
||||
import me.totalfreedom.totalfreedommod.admin.Admin;
|
||||
import me.totalfreedom.totalfreedommod.banning.Ban;
|
||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||
@ -42,7 +43,7 @@ public class Command_doom extends FreedomCommand
|
||||
FUtil.adminAction(sender.getName(), "Casting oblivion over " + player.getName(), true);
|
||||
FUtil.bcastMsg(player.getName() + " will be completely obliviated!", ChatColor.RED);
|
||||
|
||||
final String ip = FUtil.getIp(player);
|
||||
final String ip = Objects.requireNonNull(player.getAddress()).getAddress().getHostAddress().trim();
|
||||
|
||||
// Remove from admin
|
||||
Admin admin = getAdmin(player);
|
||||
@ -55,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());
|
||||
}
|
||||
}
|
||||
|
||||
@ -75,7 +76,10 @@ public class Command_doom extends FreedomCommand
|
||||
// Ban player
|
||||
Ban ban = Ban.forPlayer(player, sender);
|
||||
ban.setReason((reason == null ? "FUCKOFF" : reason));
|
||||
ban.addIp(ip);
|
||||
for (String playerIp : plugin.pl.getData(player).getIps())
|
||||
{
|
||||
ban.addIp(playerIp);
|
||||
}
|
||||
plugin.bm.addBan(ban);
|
||||
|
||||
// Set gamemode to survival
|
||||
|
@ -1,50 +1,40 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME)
|
||||
@CommandParameters(description = "Eject any entities that are riding you.", usage = "/<command>")
|
||||
@CommandParameters(description = "Eject players that are riding you.", usage = "/<command>")
|
||||
public class Command_eject extends FreedomCommand
|
||||
{
|
||||
/* Player.getShoulderEntityLeft() and Player.getShoulderEntityRight() are deprecated, however unless
|
||||
Player.getPassengers() also includes shoulders (which isn't likely, given the official documentation doesn't
|
||||
state an alternative method to use instead), these methods will continue to be used here. */
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
// Uses the size of the return value of Player.getPassengers() as the starting number of entities ejected
|
||||
int count = playerSender.getPassengers().size();
|
||||
|
||||
// Removes any entities from the sender's shoulders
|
||||
if (playerSender.getShoulderEntityLeft() != null)
|
||||
List<String> names = new ArrayList<>();
|
||||
|
||||
for (Entity entity : playerSender.getPassengers())
|
||||
{
|
||||
playerSender.setShoulderEntityLeft(null);
|
||||
count++;
|
||||
}
|
||||
if (playerSender.getShoulderEntityRight() != null)
|
||||
{
|
||||
playerSender.setShoulderEntityLeft(null);
|
||||
count++;
|
||||
names.add(entity.getName());
|
||||
}
|
||||
|
||||
// Removes anything riding the sender
|
||||
playerSender.eject();
|
||||
|
||||
if (count != 0)
|
||||
{
|
||||
msg(count + " entit" + (count == 1 ? "y was" : "ies were") + " ejected.", ChatColor.GREEN);
|
||||
}
|
||||
else
|
||||
if (names.isEmpty())
|
||||
{
|
||||
msg("Nothing was ejected.", ChatColor.GREEN);
|
||||
return true;
|
||||
}
|
||||
|
||||
msg("Ejecting " + StringUtils.join(names, ", ") + ".", ChatColor.GREEN);
|
||||
playerSender.eject();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
@ -0,0 +1,96 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import com.sk89q.worldedit.IncompleteRegionException;
|
||||
import com.sk89q.worldedit.LocalSession;
|
||||
import com.sk89q.worldedit.regions.Region;
|
||||
import com.sk89q.worldguard.domains.DefaultDomain;
|
||||
import com.sk89q.worldguard.protection.flags.Flag;
|
||||
import com.sk89q.worldguard.protection.flags.Flags;
|
||||
import com.sk89q.worldguard.protection.flags.RegionGroup;
|
||||
import com.sk89q.worldguard.protection.flags.StateFlag;
|
||||
import com.sk89q.worldguard.protection.managers.RegionManager;
|
||||
import com.sk89q.worldguard.protection.regions.ProtectedCuboidRegion;
|
||||
import com.sk89q.worldguard.protection.regions.ProtectedRegion;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_IN_GAME)
|
||||
@CommandParameters(description = "Make a WorldGuard region for an OP.", usage = "/<command> <playername> <name>", aliases = "mor")
|
||||
public class Command_makeopregion extends FreedomCommand
|
||||
{
|
||||
|
||||
final Map<Flag<?>, Object> flags = new HashMap<Flag<?>, Object>()
|
||||
{{
|
||||
put(Flags.BLOCK_PLACE, StateFlag.State.ALLOW);
|
||||
put(Flags.BLOCK_BREAK, StateFlag.State.ALLOW);
|
||||
put(Flags.BUILD, StateFlag.State.ALLOW);
|
||||
put(Flags.PLACE_VEHICLE, StateFlag.State.ALLOW);
|
||||
put(Flags.DESTROY_VEHICLE, StateFlag.State.ALLOW);
|
||||
put(Flags.ENTITY_ITEM_FRAME_DESTROY, StateFlag.State.ALLOW);
|
||||
put(Flags.ENTITY_PAINTING_DESTROY, StateFlag.State.ALLOW);
|
||||
put(net.goldtreeservers.worldguardextraflags.flags.Flags.WORLDEDIT, StateFlag.State.ALLOW);
|
||||
}};
|
||||
|
||||
public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole)
|
||||
{
|
||||
if (args.length < 2)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
final Player player = getPlayer(args[0]);
|
||||
|
||||
if (player == null)
|
||||
{
|
||||
msg(FreedomCommand.PLAYER_NOT_FOUND);
|
||||
return true;
|
||||
}
|
||||
|
||||
String name = args[1];
|
||||
|
||||
LocalSession session = plugin.web.getWorldEditPlugin().getSession(playerSender);
|
||||
|
||||
Region selection;
|
||||
|
||||
try
|
||||
{
|
||||
selection = session.getSelection(session.getSelectionWorld());
|
||||
}
|
||||
catch (IncompleteRegionException e)
|
||||
{
|
||||
msg("Please make a WorldEdit selection", ChatColor.RED);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (selection == null)
|
||||
{
|
||||
msg("Please make a WorldEdit selection", ChatColor.RED);
|
||||
return true;
|
||||
}
|
||||
|
||||
ProtectedRegion region = new ProtectedCuboidRegion(name, selection.getMinimumPoint(), selection.getMaximumPoint());
|
||||
|
||||
DefaultDomain owners = new DefaultDomain();
|
||||
owners.addPlayer(playerSender.getName());
|
||||
owners.addPlayer(player.getName());
|
||||
region.setOwners(owners);
|
||||
region.setFlags(flags);
|
||||
|
||||
for (Flag<?> flag : flags.keySet())
|
||||
{
|
||||
region.setFlag(flag.getRegionGroupFlag(), RegionGroup.MEMBERS);
|
||||
}
|
||||
|
||||
RegionManager regionManager = plugin.wgb.getRegionManager(playerSender.getWorld());
|
||||
|
||||
regionManager.addRegion(region);
|
||||
|
||||
msg("Successfully created the region '" + name + "' for " + player.getName(), ChatColor.GREEN);
|
||||
return true;
|
||||
}
|
||||
}
|
@ -42,7 +42,7 @@ public class Command_manageshop extends FreedomCommand
|
||||
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);
|
||||
@ -83,7 +83,7 @@ public class Command_manageshop extends FreedomCommand
|
||||
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);
|
||||
@ -130,7 +130,7 @@ public class Command_manageshop extends FreedomCommand
|
||||
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);
|
||||
@ -180,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);
|
||||
@ -205,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
|
||||
{
|
||||
|
@ -0,0 +1,41 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME)
|
||||
@CommandParameters(description = "Release parrots from your shoulders.", usage = "/<command>", aliases = "removeparrots")
|
||||
public class Command_releaseparrots extends FreedomCommand
|
||||
{
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
Entity leftShoulderEntity = playerSender.getShoulderEntityLeft();
|
||||
Entity rightShoulderEntity = playerSender.getShoulderEntityRight();
|
||||
|
||||
if (rightShoulderEntity == null && leftShoulderEntity == null)
|
||||
{
|
||||
msg("No parrots were detected on either of your shoulders.");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (leftShoulderEntity != null && leftShoulderEntity.getType().equals(EntityType.PARROT))
|
||||
{
|
||||
playerSender.setShoulderEntityLeft(null);
|
||||
msg("Removed the parrot on your left shoulder.");
|
||||
}
|
||||
|
||||
if (rightShoulderEntity != null && rightShoulderEntity.getType().equals(EntityType.PARROT))
|
||||
{
|
||||
playerSender.setShoulderEntityRight(null);
|
||||
msg("Removed the parrot on your right shoulder.");
|
||||
}
|
||||
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,49 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME)
|
||||
@CommandParameters(description = "Sets your experience level (XP).", usage = "/<command> [level]")
|
||||
public class Command_setlevel extends FreedomCommand
|
||||
{
|
||||
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
if (args.length != 1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
int new_level;
|
||||
|
||||
try
|
||||
{
|
||||
new_level = Integer.parseInt(args[0]);
|
||||
|
||||
if (new_level < 0)
|
||||
{
|
||||
new_level = 0;
|
||||
}
|
||||
else if (new_level > 50)
|
||||
{
|
||||
new_level = 50;
|
||||
}
|
||||
}
|
||||
catch (NumberFormatException ex)
|
||||
{
|
||||
msg("Invalid level.", ChatColor.RED);
|
||||
return true;
|
||||
}
|
||||
|
||||
playerSender.setLevel(new_level);
|
||||
|
||||
msg("Your XP level is now set to " + ChatColor.GOLD + new_level);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
@ -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)
|
||||
{
|
||||
|
@ -0,0 +1,143 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import me.totalfreedom.totalfreedommod.banning.Ban;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
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.StringUtils;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH, blockHostConsole = true)
|
||||
@CommandParameters(description = "Temporarily bans a player for five minutes.", usage = "/<command> [-q] <username> [reason]", aliases = "noob")
|
||||
public class Command_tban extends FreedomCommand
|
||||
{
|
||||
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
if (args.length == 0)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean quiet = args[0].equalsIgnoreCase("-q");
|
||||
if (quiet)
|
||||
{
|
||||
args = org.apache.commons.lang3.ArrayUtils.subarray(args, 1, args.length);
|
||||
|
||||
if (args.length < 1)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
final String username;
|
||||
|
||||
final Player player = getPlayer(args[0]);
|
||||
final PlayerData entry;
|
||||
if (player == null)
|
||||
{
|
||||
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();
|
||||
}
|
||||
else
|
||||
{
|
||||
entry = plugin.pl.getData(player);
|
||||
username = player.getName();
|
||||
}
|
||||
final List<String> ips = new ArrayList<>(entry.getIps());
|
||||
|
||||
String reason = null;
|
||||
if (args.length > 1)
|
||||
{
|
||||
reason = StringUtils.join(args, " ", 1, args.length);
|
||||
}
|
||||
|
||||
StringBuilder kick = new StringBuilder()
|
||||
.append(ChatColor.RED)
|
||||
.append("You have been temporarily banned for five minutes. Please read totalfreedom.me for more info.");
|
||||
|
||||
if (!quiet)
|
||||
{
|
||||
// Strike with lightning
|
||||
if (player != null)
|
||||
{
|
||||
final Location targetPos = player.getLocation();
|
||||
for (int x = -1; x <= 1; x++)
|
||||
{
|
||||
for (int z = -1; z <= 1; z++)
|
||||
{
|
||||
final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
|
||||
Objects.requireNonNull(targetPos.getWorld()).strikeLightning(strike_pos);
|
||||
}
|
||||
}
|
||||
|
||||
// Kill player
|
||||
player.setHealth(0.0);
|
||||
|
||||
if (reason != null)
|
||||
{
|
||||
FUtil.adminAction(sender.getName(), "Tempbanning " + player.getName() + " for 5 minutes - Reason: " + reason, true);
|
||||
kick.append("\n")
|
||||
.append(ChatColor.RED)
|
||||
.append("Reason: ")
|
||||
.append(ChatColor.GOLD)
|
||||
.append(reason);
|
||||
}
|
||||
else
|
||||
{
|
||||
FUtil.adminAction(sender.getName(), "Tempbanning " + player.getName() + " for 5 minutes", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
if (reason != null)
|
||||
{
|
||||
msg("Quietly temporarily banned " + player.getName() + " for 5 minutes.");
|
||||
kick.append("\n")
|
||||
.append(ChatColor.RED)
|
||||
.append("Reason: ")
|
||||
.append(ChatColor.GOLD)
|
||||
.append(reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Ban player
|
||||
Ban ban = Ban.forPlayerName(username, sender, FUtil.parseDateOffset("5m"), reason);
|
||||
for (String ip : ips)
|
||||
{
|
||||
ban.addIp(ip);
|
||||
}
|
||||
plugin.bm.addBan(ban);
|
||||
|
||||
// Kick player
|
||||
if (player != null)
|
||||
{
|
||||
player.kickPlayer(kick.toString());
|
||||
}
|
||||
|
||||
// Log ban
|
||||
plugin.pul.logPunishment(new Punishment(username, ips.get(0), sender.getName(), PunishmentType.TEMPBAN, reason));
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1,10 +1,10 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
import com.earth2me.essentials.User;
|
||||
import me.totalfreedom.totalfreedommod.banning.Ban;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||
@ -21,7 +21,7 @@ import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH)
|
||||
@CommandParameters(description = "Temporarily ban someone.", usage = "/<command> [-q] <username> [duration] [reason]", aliases = "tban,noob")
|
||||
@CommandParameters(description = "Temporarily ban someone.", usage = "/<command> [-q] <username> [duration] [reason]")
|
||||
public class Command_tempban extends FreedomCommand
|
||||
{
|
||||
|
||||
@ -47,72 +47,49 @@ public class Command_tempban extends FreedomCommand
|
||||
}
|
||||
|
||||
final String username;
|
||||
final String ip;
|
||||
final List<String> ips = new ArrayList<>();
|
||||
|
||||
final Player player = getPlayer(args[0]);
|
||||
PlayerData entry;
|
||||
final PlayerData entry;
|
||||
if (player == null)
|
||||
{
|
||||
// Gets the IP using Essentials data if available
|
||||
if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null)
|
||||
entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0]));
|
||||
|
||||
if (entry == null)
|
||||
{
|
||||
User essUser = plugin.esb.getEssentialsUser(args[0]);
|
||||
//
|
||||
username = essUser.getName();
|
||||
ip = essUser.getLastLoginAddress();
|
||||
}
|
||||
// Last resort - Getting the first result from the username itself
|
||||
else
|
||||
{
|
||||
entry = plugin.pl.getData(args[0]);
|
||||
if (entry == null)
|
||||
{
|
||||
msg(PLAYER_NOT_FOUND);
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
username = entry.getName();
|
||||
ip = entry.getIps().get(0);
|
||||
}
|
||||
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();
|
||||
ip = FUtil.getIp(player);
|
||||
ips.add(FUtil.getIp(player));
|
||||
}
|
||||
|
||||
final StringBuilder message = new StringBuilder("Temporarily banned " + username);
|
||||
|
||||
// Default expiration date is 5 minutes
|
||||
Date expires = FUtil.parseDateOffset("5m");
|
||||
|
||||
// Parses what comes after as a duration
|
||||
if (args.length > 1)
|
||||
{
|
||||
try
|
||||
{
|
||||
expires = FUtil.parseDateOffset(args[1]);
|
||||
}
|
||||
catch (NumberFormatException error)
|
||||
{
|
||||
msg("Invalid duration: " + args[1], ChatColor.RED);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
Date expires = FUtil.parseDateOffset("30m");
|
||||
message.append(" until ").append(date_format.format(expires));
|
||||
|
||||
// If a reason appears to exist, set it.
|
||||
String reason = null;
|
||||
if (args.length > 2)
|
||||
if (args.length >= 2)
|
||||
{
|
||||
reason = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ") + " (" + sender.getName() + ")";
|
||||
Date parsed_offset = FUtil.parseDateOffset(args[1]);
|
||||
reason = StringUtils.join(ArrayUtils.subarray(args, parsed_offset == null ? 1 : 2, args.length), " ") + " (" + sender.getName() + ")";
|
||||
if (parsed_offset != null)
|
||||
{
|
||||
expires = parsed_offset;
|
||||
}
|
||||
message.append(", Reason: \"").append(reason).append("\"");
|
||||
}
|
||||
|
||||
Ban ban;
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
ban = Ban.forPlayer(player, sender, expires, reason);
|
||||
@ -121,8 +98,11 @@ public class Command_tempban extends FreedomCommand
|
||||
{
|
||||
ban = Ban.forPlayerName(username, sender, expires, reason);
|
||||
}
|
||||
ban.addIp(ip);
|
||||
|
||||
for (String ip : ips)
|
||||
{
|
||||
ban.addIp(ip);
|
||||
}
|
||||
plugin.bm.addBan(ban);
|
||||
|
||||
if (!quiet)
|
||||
@ -139,8 +119,6 @@ public class Command_tempban extends FreedomCommand
|
||||
Objects.requireNonNull(targetPos.getWorld()).strikeLightningEffect(strike_pos);
|
||||
}
|
||||
}
|
||||
|
||||
player.kickPlayer(ban.bakeKickMessage());
|
||||
}
|
||||
|
||||
FUtil.adminAction(sender.getName(), message.toString(), true);
|
||||
@ -150,15 +128,19 @@ public class Command_tempban extends FreedomCommand
|
||||
msg("Quietly temporarily banned " + username + ".");
|
||||
}
|
||||
|
||||
for (Player p : Bukkit.getOnlinePlayers())
|
||||
if (player != null)
|
||||
{
|
||||
if (FUtil.getIp(p).equals(ip))
|
||||
player.kickPlayer(ban.bakeKickMessage());
|
||||
for (Player p : Bukkit.getOnlinePlayers())
|
||||
{
|
||||
p.kickPlayer(ChatColor.RED + "You've been kicked because someone on your IP has been banned.");
|
||||
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, ip, sender.getName(), PunishmentType.TEMPBAN, reason));
|
||||
plugin.pul.logPunishment(new Punishment(username, ips.get(0), sender.getName(), PunishmentType.TEMPBAN, reason));
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1,9 +1,12 @@
|
||||
package me.totalfreedom.totalfreedommod.command;
|
||||
|
||||
import com.earth2me.essentials.User;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import me.totalfreedom.totalfreedommod.banning.Ban;
|
||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -19,33 +22,20 @@ public class Command_unban extends FreedomCommand
|
||||
if (args.length > 0)
|
||||
{
|
||||
String username;
|
||||
String ip;
|
||||
final PlayerData entry = plugin.pl.getData(FUtil.getUUIDFromName(args[0]));
|
||||
|
||||
// Gets the IP using Essentials data if available
|
||||
if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null)
|
||||
if (entry == null)
|
||||
{
|
||||
User essUser = plugin.esb.getEssentialsUser(args[0]);
|
||||
//
|
||||
username = essUser.getName();
|
||||
ip = essUser.getLastLoginAddress();
|
||||
}
|
||||
// Secondary method - using Essentials if available
|
||||
else
|
||||
{
|
||||
final PlayerData entry = plugin.pl.getData(args[0]);
|
||||
if (entry == null)
|
||||
{
|
||||
msg(PLAYER_NOT_FOUND);
|
||||
return true;
|
||||
}
|
||||
username = entry.getName();
|
||||
ip = entry.getIps().get(0);
|
||||
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();
|
||||
final List<String> ips = new ArrayList<>(entry.getIps());
|
||||
|
||||
FUtil.adminAction(sender.getName(), "Unbanning " + username, true);
|
||||
msg(username + " has been unbanned along with the following IPs: " + StringUtils.join(ips, ", "));
|
||||
plugin.bm.removeBan(plugin.bm.getByUsername(username));
|
||||
plugin.bm.removeBan(plugin.bm.getByIp(ip));
|
||||
msg(username + " has been unbanned along with the IP: " + ip);
|
||||
|
||||
if (args.length >= 2)
|
||||
{
|
||||
@ -55,6 +45,20 @@ public class Command_unban extends FreedomCommand
|
||||
msg("Restored edits for: " + username);
|
||||
}
|
||||
}
|
||||
|
||||
for (String ip : ips)
|
||||
{
|
||||
Ban ban = plugin.bm.getByIp(ip);
|
||||
if (ban != null)
|
||||
{
|
||||
plugin.bm.removeBan(ban);
|
||||
}
|
||||
ban = plugin.bm.getByIp(FUtil.getFuzzyIp(ip));
|
||||
if (ban != null)
|
||||
{
|
||||
plugin.bm.removeBan(ban);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -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);
|
||||
|
@ -165,8 +165,6 @@ public enum ConfigEntry
|
||||
ADMIN_INFO(List.class, "admininfo"),
|
||||
VOTING_INFO(List.class, "votinginfo"),
|
||||
MASTER_BUILDER_INFO(List.class, "masterbuilderinfo"),
|
||||
FIRST_JOIN_INFO(List.class, "first_join_info.text"),
|
||||
FIRST_JOIN_INFO_ENABLED(Boolean.class, "first_join_info.enabled"),
|
||||
AUTO_ENTITY_WIPE(Boolean.class, "auto_wipe"),
|
||||
TOGGLE_CHAT(Boolean.class, "toggle_chat"),
|
||||
DEVELOPER_MODE(Boolean.class, "developer_mode"),
|
||||
|
@ -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());
|
||||
|
@ -16,23 +16,22 @@ import org.bukkit.scheduler.BukkitTask;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class FPlayer
|
||||
{
|
||||
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;
|
||||
@ -71,376 +70,295 @@ 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(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(boolean quiet)
|
||||
{
|
||||
public void incrementWarnings(boolean quiet) {
|
||||
this.warningCount++;
|
||||
|
||||
if (this.warningCount % 2 == 0)
|
||||
{
|
||||
if (this.warningCount % 2 == 0) {
|
||||
Player p = getPlayer();
|
||||
|
||||
if (!quiet)
|
||||
{
|
||||
if (!quiet) {
|
||||
p.getWorld().strikeLightning(p.getLocation());
|
||||
}
|
||||
|
||||
@ -448,271 +366,221 @@ public class FPlayer
|
||||
}
|
||||
}
|
||||
|
||||
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()
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
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)
|
||||
@ -285,28 +287,58 @@ public class PlayerList extends FreedomService
|
||||
return null;
|
||||
}
|
||||
|
||||
return playerData;
|
||||
}*/
|
||||
|
||||
public PlayerData getData(UUID uuid)
|
||||
{
|
||||
PlayerData playerData = playerMap.get(uuid).getPlayerData();
|
||||
if (playerData != null)
|
||||
{
|
||||
return playerData;
|
||||
}
|
||||
|
||||
playerData = loadByUUID(uuid);
|
||||
|
||||
if (playerData != null)
|
||||
{
|
||||
playerMap.get(uuid).setPlayerData(playerData);
|
||||
}
|
||||
else
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
return playerData;
|
||||
}
|
||||
|
||||
public PlayerData getDataByIp(String ip)
|
||||
public PlayerData getDataByUUID(UUID uuid)
|
||||
{
|
||||
PlayerData player = loadByIp(ip);
|
||||
PlayerData player = loadByUUID(uuid);
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
dataMap.put(player.getName(), player);
|
||||
playerMap.get(uuid).setPlayerData(player);
|
||||
}
|
||||
|
||||
return player;
|
||||
}
|
||||
|
||||
public Map<String, FPlayer> getPlayerMap()
|
||||
public PlayerData getDataByIp(String ip)
|
||||
{
|
||||
PlayerData player = loadByIp(ip);
|
||||
|
||||
if (player != null)
|
||||
{
|
||||
playerMap.get(player.getUniqueId()).setPlayerData(player);
|
||||
}
|
||||
|
||||
return player;
|
||||
}
|
||||
|
||||
public Map<UUID, FPlayer> getPlayerMap()
|
||||
{
|
||||
return playerMap;
|
||||
}
|
||||
|
||||
public Map<String, PlayerData> getDataMap()
|
||||
{
|
||||
return dataMap;
|
||||
}
|
||||
}
|
@ -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)
|
||||
|
@ -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
|
||||
{
|
||||
@ -311,10 +316,29 @@ public class SQLite extends FreedomService
|
||||
FLog.severe(e);
|
||||
}
|
||||
|
||||
return null;
|
||||
}*/
|
||||
|
||||
public ResultSet getAdminByUUID(UUID uuid)
|
||||
{
|
||||
try
|
||||
{
|
||||
ResultSet resultSet = connection.createStatement().executeQuery(MessageFormat.format("SELECT * FROM admins WHERE uuid=''{0}''", uuid.toString()));
|
||||
if (resultSet.next())
|
||||
{
|
||||
return resultSet;
|
||||
}
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
FLog.severe("Failed to get admin by name:");
|
||||
FLog.severe(e);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public ResultSet getPlayerByName(String name)
|
||||
/*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,16 +1,18 @@
|
||||
package me.totalfreedom.totalfreedommod.util;
|
||||
|
||||
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;
|
||||
@ -19,12 +21,14 @@ 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;
|
||||
@ -37,6 +41,8 @@ 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:
|
||||
@ -54,12 +60,13 @@ public class FUtil
|
||||
"d018f2b8-ce60-4672-a45f-e580e0331299", // speednt
|
||||
"458de06f-36a5-4e1b-aaa6-ec1d1751c5b6", // SupItsDillon
|
||||
"c8e5af82-6aba-4dd7-83e8-474381380cc9", // Paldiu
|
||||
"38ea7c82-7bdc-4f48-b7fd-0e93fc26813d", // AwesomePinch
|
||||
"ba5aafba-9012-418f-9819-a7020d591068", // TFTWPhoenix
|
||||
"d6dd9740-40db-45f5-ab16-4ee16a633009", // Abhi
|
||||
"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", "TFTWPhoenix", "abhithedev", "NotInSync", "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,
|
||||
@ -882,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;
|
||||
}
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ 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()))
|
||||
{
|
||||
|
@ -206,7 +206,7 @@ allow:
|
||||
fire_spread: false
|
||||
fluid_spread: false
|
||||
lava_place: true
|
||||
lava_damage: true
|
||||
lava_damage: false
|
||||
water_place: true
|
||||
tnt_minecarts: false
|
||||
explosions: false
|
||||
@ -590,14 +590,6 @@ masterbuilderinfo:
|
||||
- ' &2- Template:'
|
||||
- '&9https://forum.totalfreedom.me/d/336-master-builder-application-process'
|
||||
|
||||
# What new players will see upon joining for the first time.
|
||||
first_join_info:
|
||||
enabled: true
|
||||
text:
|
||||
- "&6Welcome to TotalFreedom -- the original Free-OP server!"
|
||||
- "&eThe server's name doesn't mean we have no rules. Do &6/rules &efor a list of them."
|
||||
- "&aNeed help getting started? Do &2/help &aor a list of commands!"
|
||||
|
||||
# Famous players - cannot be banned by username
|
||||
famous_players:
|
||||
- honeydew
|
||||
|
Reference in New Issue
Block a user