mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2025-07-01 12:36:41 +00:00
Compare commits
140 Commits
RELEASE-20
...
2021.09
Author | SHA1 | Date | |
---|---|---|---|
9155ac90b5 | |||
1e1367d08f | |||
3f690e2ca1 | |||
abfa3b977c | |||
a728ec24d4 | |||
74a71b1843 | |||
4d469cdc0a | |||
4c287ca9b8 | |||
912bc1a1e4 | |||
a598c933ec | |||
936f0b621e | |||
e122c4c5fa | |||
180cd81132 | |||
213a43380e | |||
8a31b4c5c0 | |||
0e12f5e792 | |||
aebe1acec2 | |||
938b3aa630 | |||
6772333eb4 | |||
0204961834 | |||
2f332a8c42 | |||
e288668c92 | |||
e50101df43 | |||
0a9b95bfce | |||
f00f075551 | |||
44ff621d73 | |||
032e54e2d4 | |||
54cb0cfac4 | |||
23caa4e853 | |||
4c3f188bb8 | |||
f380898bb7 | |||
464ed85f1b | |||
7dd235b166 | |||
f45466ee24 | |||
d70b7bbec2 | |||
541c66c3de | |||
d901cbaa81 | |||
538ed7020d | |||
18e6ef16be | |||
a335a2acf7 | |||
2eb6cc0036 | |||
5322d8ab64 | |||
dccc315869 | |||
7657ae1928 | |||
dcaf1ec11a | |||
0582c2e5be | |||
101987cc17 | |||
6874b2ce13 | |||
3be0ffba4e | |||
c8a4382a7b | |||
3f89f3f48e | |||
871acc2eeb | |||
a9c9979b1c | |||
fc3fe871b3 | |||
62529a6171 | |||
0caf972248 | |||
a37364d07e | |||
4ac9844534 | |||
939e98b759 | |||
d99f3e657b | |||
92bbb62379 | |||
e4a0943af2 | |||
36bd8c0fad | |||
d77f59435b | |||
a08fd2afb6 | |||
6fd075fe96 | |||
f57fc56f4a | |||
a6ca6b122c | |||
064e73f58b | |||
32138b2e59 | |||
e1c3bad4d0 | |||
4e78027f0c | |||
721f4f9fc3 | |||
24ad2611a9 | |||
c238f251f2 | |||
02848e3439 | |||
9550f54e2b | |||
39dade78e3 | |||
5b6d8b01a4 | |||
96bc83cead | |||
be700a90ce | |||
6d1fce1716 | |||
d3665f31fe | |||
4188cb80fa | |||
62fe72d99b | |||
f4749559d2 | |||
ed815794ed | |||
0c12a19d1d | |||
96d47e8e0c | |||
3027e2a18c | |||
06025b2e69 | |||
da7e8f64aa | |||
17b051e2a7 | |||
77a05f22a8 | |||
5c3ef1f107 | |||
53c5991971 | |||
ff760a6c11 | |||
63069ff9ec | |||
5e63b71861 | |||
b72782de4f | |||
de9556c550 | |||
6590504545 | |||
8d1e8dcf05 | |||
07b5076717 | |||
6fb9507a4c | |||
879a524bb4 | |||
c60b451ce7 | |||
f85f3e32ea | |||
57b3351047 | |||
dd10eb3f5e | |||
a498104777 | |||
8c7bf365a0 | |||
eedb7a5375 | |||
d047cfc8ff | |||
9ff5da8d8f | |||
ac615f54f7 | |||
21af722e23 | |||
b1196fcf00 | |||
d170f6d323 | |||
9dd0298f56 | |||
bdf4ca84e0 | |||
7258d7f1bf | |||
8a504bff07 | |||
c00e64f736 | |||
9e73db0f24 | |||
951c061d77 | |||
579d3e0719 | |||
9777733d04 | |||
05e118dcb4 | |||
7a0d6f49f4 | |||
19f1b7f6bd | |||
b12afbdc1f | |||
49e77d4f93 | |||
eb9107bedf | |||
951c699ed0 | |||
6895e46375 | |||
1cf46c7337 | |||
407b63e48b | |||
be562fe722 | |||
928ab41d7f |
23
.github/dependabot.yml
vendored
Normal file
23
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
# To get started with Dependabot version updates, you'll need to specify which
|
||||||
|
# package ecosystems to update and where the package manifests are located.
|
||||||
|
# Please see the documentation for all configuration options:
|
||||||
|
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
|
||||||
|
# Maintain Maven Updates
|
||||||
|
- package-ecosystem: "maven" # See documentation for possible values
|
||||||
|
directory: "/" # Location of package manifests
|
||||||
|
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
|
# Execute Codacy Analysis CLI and generate a SARIF output with the security issues identified during the analysis
|
||||||
- name: Run Codacy Analysis CLI
|
- name: Run Codacy Analysis CLI
|
||||||
uses: codacy/codacy-analysis-cli-action@1.1.0
|
uses: codacy/codacy-analysis-cli-action@4.0.0
|
||||||
with:
|
with:
|
||||||
# Check https://github.com/codacy/codacy-analysis-cli#project-token to get your project token from your Codacy repository
|
# 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
|
# 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,10 +38,11 @@ jobs:
|
|||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Setup Java JDK
|
- name: Setup Java JDK
|
||||||
uses: actions/setup-java@v1.4.3
|
uses: actions/setup-java@v2.3.0
|
||||||
with:
|
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
|
# 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
|
java-version: 11
|
||||||
|
distribution: 'adopt'
|
||||||
|
|
||||||
# Initializes the CodeQL tools for scanning.
|
# Initializes the CodeQL tools for scanning.
|
||||||
- name: Initialize CodeQL
|
- name: Initialize CodeQL
|
||||||
|
2
.github/workflows/downstream.yml
vendored
2
.github/workflows/downstream.yml
vendored
@ -30,7 +30,7 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
upstream_repository: AtlasMediaGroup/TotalFreedomMod
|
upstream_repository: AtlasMediaGroup/TotalFreedomMod
|
||||||
upstream_branch: main
|
upstream_branch: main
|
||||||
target_branch: main
|
target_branch: development
|
||||||
git_pull_args: --ff-only # optional arg use, defaults to simple 'pull'
|
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)
|
# Step 3: Display a message if 'sync' step had new commits (simple test)
|
||||||
|
@ -1,17 +1,21 @@
|
|||||||
name: Maven-Build
|
name: Java11-Maven-Build
|
||||||
|
|
||||||
on: [push]
|
on: [push]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build-java-11:
|
||||||
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
# Checkout the code
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
- name: Set up JDK 1.8
|
|
||||||
uses: actions/setup-java@v1
|
# Java 11 Builds
|
||||||
|
- name: Set up JDK 11
|
||||||
|
uses: actions/setup-java@v2.3.0
|
||||||
with:
|
with:
|
||||||
java-version: 11
|
java-version: 11
|
||||||
|
distribution: 'adopt'
|
||||||
- name: Build with Maven
|
- name: Build with Maven
|
||||||
run: mvn -B package --file pom.xml
|
run: mvn -B package --file pom.xml
|
21
.github/workflows/java17-maven.yml
vendored
Normal file
21
.github/workflows/java17-maven.yml
vendored
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
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
|
13
.travis.yml
13
.travis.yml
@ -1,13 +0,0 @@
|
|||||||
language: java
|
|
||||||
jdk:
|
|
||||||
- oraclejdk11
|
|
||||||
- openjdk11
|
|
||||||
notifications:
|
|
||||||
email: false
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- sshpass
|
|
||||||
script: mvn clean install
|
|
||||||
after_success:
|
|
||||||
- ./travis-upload.sh
|
|
@ -1,4 +1,4 @@
|
|||||||
# TotalFreedomMod [](https://travis-ci.com/AtlasMediaGroup/TotalFreedomMod) [](https://www.codacy.com/gh/AtlasMediaGroup/TotalFreedomMod/dashboard?utm_source=github.com&utm_medium=referral&utm_content=AtlasMediaGroup/TotalFreedomMod&utm_campaign=Badge_Grade)
|
# TotalFreedomMod [](https://github.com/AtlasMediaGroup/TotalFreedomMod/actions/workflows/maven.yml) [](https://www.codacy.com/gh/AtlasMediaGroup/TotalFreedomMod/dashboard?utm_source=github.com&utm_medium=referral&utm_content=AtlasMediaGroup/TotalFreedomMod&utm_campaign=Badge_Grade) [](https://github.com/AtlasMediaGroup/TotalFreedomMod/actions/workflows/codeql-analysis.yml)
|
||||||
|
|
||||||
TotalFreedomMod is a CraftBukkit server plugin designed primarily to support the [Official TotalFreedom Minecraft Server](https://totalfreedom.me/). However, you are more than welcome to adapt the source for your own server.
|
TotalFreedomMod is a CraftBukkit server plugin designed primarily to support the [Official TotalFreedom Minecraft Server](https://totalfreedom.me/). However, you are more than welcome to adapt the source for your own server.
|
||||||
|
|
||||||
@ -14,4 +14,4 @@ For information on our security policy and reporting an issue, please see [SECUR
|
|||||||
|
|
||||||
### Compiling
|
### Compiling
|
||||||
|
|
||||||
You need Maven to build. You'd also need to set the JDK version to Java 8 as that is the current standard as of now.
|
You need Maven to build. You'd also need to set the JDK version to Java 11 as that is the current standard as of now.
|
||||||
|
@ -11,21 +11,24 @@ These versions are currently actively supported by our team, and you should expe
|
|||||||
|
|
||||||
| Version | Supported | Support End: |
|
| Version | Supported | Support End: |
|
||||||
| ------------------- | ------------------ | ------------------------------ |
|
| ------------------- | ------------------ | ------------------------------ |
|
||||||
| 2021.05 | :white_check_mark: | No Earlier than August 2021 |
|
| 2021.09 | :white_check_mark: | No Earlier than December 2021 |
|
||||||
|
|
||||||
### Legacy Supported
|
### Legacy Supported
|
||||||
These versions are no longer under active development, however we will look to release critical secuirty patches where appropriate.
|
These versions are no longer under active development, however we will look to release critical secuirty patches where appropriate.
|
||||||
|
|
||||||
| Version | Supported | Support End: |
|
| Version | Supported | Support End: |
|
||||||
| ------------------- | ------------------ | ------------ |
|
| ------------------- | ------------------ | ------------ |
|
||||||
| 2021.04 | :white_check_mark: | July 2021 |
|
| 2021.06 | :white_check_mark: | October 2021 |
|
||||||
| 2021.02 | :white_check_mark: | June 2021 |
|
|
||||||
|
|
||||||
### No Longer Supported
|
### 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.
|
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: |
|
| 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 |
|
| 2020.11 | :x: | 3 May 2021 |
|
||||||
| 6.0.x (Pre-Release) | :x: | December 2020 |
|
| 6.0.x (Pre-Release) | :x: | December 2020 |
|
||||||
| < 2020.11 | :x: | December 2020 |
|
| < 2020.11 | :x: | December 2020 |
|
||||||
|
103
pom.xml
103
pom.xml
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
<groupId>me.totalfreedom</groupId>
|
<groupId>me.totalfreedom</groupId>
|
||||||
<artifactId>TotalFreedomMod</artifactId>
|
<artifactId>TotalFreedomMod</artifactId>
|
||||||
<version>2021.04</version>
|
<version>2021.09</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
@ -39,9 +39,10 @@
|
|||||||
</scm>
|
</scm>
|
||||||
|
|
||||||
<repositories>
|
<repositories>
|
||||||
|
|
||||||
<repository>
|
<repository>
|
||||||
<id>jitpack.io</id>
|
<id>atlas-nexus-01-totalfreedom-development</id>
|
||||||
<url>https://jitpack.io</url>
|
<url>https://nexus-01.core.atlas-media.co.uk/repository/totalfreedom-development/</url>
|
||||||
</repository>
|
</repository>
|
||||||
|
|
||||||
<repository>
|
<repository>
|
||||||
@ -101,19 +102,11 @@
|
|||||||
</repository>
|
</repository>
|
||||||
|
|
||||||
<repository>
|
<repository>
|
||||||
<id>papermc</id>
|
<id>esentialsx-repo</id>
|
||||||
<url>https://papermc.io/repo/repository/maven-public/</url>
|
<url>https://repo.essentialsx.net/releases/</url>
|
||||||
</repository>
|
|
||||||
|
|
||||||
<repository>
|
|
||||||
<id>rayzr-repo</id>
|
|
||||||
<url>https://cdn.rawgit.com/Rayzr522/maven-repo/master/</url>
|
|
||||||
</repository>
|
|
||||||
|
|
||||||
<repository>
|
|
||||||
<id>ess-repo</id>
|
|
||||||
<url>https://ci.ender.zone/plugin/repository/everything/</url>
|
|
||||||
</repository>
|
</repository>
|
||||||
|
|
||||||
|
|
||||||
</repositories>
|
</repositories>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
@ -121,14 +114,14 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>commons-io</groupId>
|
<groupId>commons-io</groupId>
|
||||||
<artifactId>commons-io</artifactId>
|
<artifactId>commons-io</artifactId>
|
||||||
<version>2.8.0</version>
|
<version>2.11.0</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.commons</groupId>
|
<groupId>org.apache.commons</groupId>
|
||||||
<artifactId>commons-lang3</artifactId>
|
<artifactId>commons-lang3</artifactId>
|
||||||
<version>3.11</version>
|
<version>3.12.0</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
@ -139,17 +132,10 @@
|
|||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.github.speedxx</groupId>
|
|
||||||
<artifactId>Mojangson</artifactId>
|
|
||||||
<version>1957eef8d6</version>
|
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.bstats</groupId>
|
<groupId>org.bstats</groupId>
|
||||||
<artifactId>bstats-bukkit</artifactId>
|
<artifactId>bstats-bukkit</artifactId>
|
||||||
<version>1.8</version>
|
<version>2.2.1</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
@ -168,23 +154,16 @@
|
|||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.TotalFreedomMC</groupId>
|
<groupId>com.github.AtlasMediaGroup</groupId>
|
||||||
<artifactId>TF-LibsDisguises</artifactId>
|
<artifactId>TF-LibsDisguises</artifactId>
|
||||||
<version>48f01cf2fe</version>
|
<version>5a340341b0</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.sk89q.worldedit</groupId>
|
<groupId>com.sk89q.worldedit</groupId>
|
||||||
<artifactId>worldedit-bukkit</artifactId>
|
<artifactId>worldedit-bukkit</artifactId>
|
||||||
<version>7.3.0-SNAPSHOT</version>
|
<version>7.2.4</version>
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>net.ess3</groupId>
|
|
||||||
<artifactId>EssentialsX</artifactId>
|
|
||||||
<version>2.18.2</version>
|
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
@ -198,7 +177,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.coreprotect</groupId>
|
<groupId>net.coreprotect</groupId>
|
||||||
<artifactId>coreprotect</artifactId>
|
<artifactId>coreprotect</artifactId>
|
||||||
<version>19.3</version>
|
<version>19.5</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
@ -216,25 +195,18 @@
|
|||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
|
||||||
<groupId>me.rayzr522</groupId>
|
|
||||||
<artifactId>jsonmessage</artifactId>
|
|
||||||
<version>1.0.0</version>
|
|
||||||
<scope>compile</scope>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.vexsoftware</groupId>
|
<groupId>com.github.vexsoftware</groupId>
|
||||||
<artifactId>votifier</artifactId>
|
<artifactId>votifier</artifactId>
|
||||||
<version>v1.9</version>
|
<version>v1.9</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.goldtreeservers</groupId>
|
<groupId>net.ess3</groupId>
|
||||||
<artifactId>worldguardextraflags</artifactId>
|
<artifactId>EssentialsX</artifactId>
|
||||||
<version>4.0.0</version>
|
<version>2.18.2</version>
|
||||||
<scope>provided</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -247,36 +219,43 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.javassist</groupId>
|
<groupId>org.javassist</groupId>
|
||||||
<artifactId>javassist</artifactId>
|
<artifactId>javassist</artifactId>
|
||||||
<version>3.27.0-GA</version>
|
<version>3.28.0-GA</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.TotalFreedomMC</groupId>
|
<groupId>me.totalfreedom</groupId>
|
||||||
<artifactId>TFGuilds</artifactId>
|
<artifactId>tfguilds</artifactId>
|
||||||
<version>db036fb187</version>
|
<version>2021.06-RC2</version>
|
||||||
<scope>provided</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.jetbrains</groupId>
|
<groupId>org.jetbrains</groupId>
|
||||||
<artifactId>annotations</artifactId>
|
<artifactId>annotations</artifactId>
|
||||||
<version>20.1.0</version>
|
<version>22.0.0</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||||
<version>3.1.1</version>
|
<version>3.1.2</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.junit.jupiter</groupId>
|
<groupId>org.junit.jupiter</groupId>
|
||||||
<artifactId>junit-jupiter</artifactId>
|
<artifactId>junit-jupiter</artifactId>
|
||||||
<version>5.4.2</version>
|
<version>5.8.0</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.eclipse.sisu</groupId>
|
||||||
|
<artifactId>org.eclipse.sisu.inject</artifactId>
|
||||||
|
<version>0.3.4</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
@ -306,7 +285,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>pl.project13.maven</groupId>
|
<groupId>pl.project13.maven</groupId>
|
||||||
<artifactId>git-commit-id-plugin</artifactId>
|
<artifactId>git-commit-id-plugin</artifactId>
|
||||||
<version>4.0.2</version>
|
<version>4.9.10</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<id>get-the-git-infos</id>
|
<id>get-the-git-infos</id>
|
||||||
@ -347,7 +326,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-antrun-plugin</artifactId>
|
<artifactId>maven-antrun-plugin</artifactId>
|
||||||
<version>1.8</version>
|
<version>3.0.0</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
<id>default-cli</id>
|
<id>default-cli</id>
|
||||||
@ -434,7 +413,8 @@
|
|||||||
<relocations>
|
<relocations>
|
||||||
<relocation>
|
<relocation>
|
||||||
<pattern>io.papermc.lib</pattern>
|
<pattern>io.papermc.lib</pattern>
|
||||||
<shadedPattern>me.totalfreedom.totalfreedommod.paperlib</shadedPattern> <!-- Replace this -->
|
<shadedPattern>me.totalfreedom.totalfreedommod.paperlib
|
||||||
|
</shadedPattern> <!-- Replace this -->
|
||||||
</relocation>
|
</relocation>
|
||||||
<relocation>
|
<relocation>
|
||||||
<pattern>org.bstats</pattern>
|
<pattern>org.bstats</pattern>
|
||||||
@ -448,10 +428,9 @@
|
|||||||
<include>commons-codec:commons-codec</include>
|
<include>commons-codec:commons-codec</include>
|
||||||
<include>org.reflections:reflections</include>
|
<include>org.reflections:reflections</include>
|
||||||
<include>org.javassist:javassist</include>
|
<include>org.javassist:javassist</include>
|
||||||
<include>me.rayzr522:jsonmessage</include>
|
|
||||||
<include>io.papermc:paperlib</include>
|
<include>io.papermc:paperlib</include>
|
||||||
<include>com.github.speedxx:Mojangson</include>
|
|
||||||
<include>org.bstats:bstats-bukkit</include>
|
<include>org.bstats:bstats-bukkit</include>
|
||||||
|
<include>org.bstats:bstats-base</include>
|
||||||
<include>org.jetbrains:annotations</include>
|
<include>org.jetbrains:annotations</include>
|
||||||
</includes>
|
</includes>
|
||||||
</artifactSet>
|
</artifactSet>
|
||||||
@ -469,7 +448,7 @@
|
|||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-checkstyle-plugin</artifactId>
|
<artifactId>maven-checkstyle-plugin</artifactId>
|
||||||
<version>3.1.1</version>
|
<version>3.1.2</version>
|
||||||
<configuration>
|
<configuration>
|
||||||
<configLocation>checkstyle.xml</configLocation>
|
<configLocation>checkstyle.xml</configLocation>
|
||||||
<failOnViolation>true</failOnViolation>
|
<failOnViolation>true</failOnViolation>
|
||||||
|
@ -85,6 +85,10 @@ public class AutoEject extends FreedomService
|
|||||||
player.kickPlayer(kickMessage);
|
player.kickPlayer(kickMessage);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
FLog.warning("Unrecognized EjectMethod " + method.name() + " found, defaulting to STRIKE_THREE");
|
||||||
|
}
|
||||||
case STRIKE_THREE:
|
case STRIKE_THREE:
|
||||||
{
|
{
|
||||||
plugin.bm.addBan(Ban.forPlayerFuzzy(player, Bukkit.getConsoleSender(), null, kickMessage));
|
plugin.bm.addBan(Ban.forPlayerFuzzy(player, Bukkit.getConsoleSender(), null, kickMessage));
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package me.totalfreedom.totalfreedommod;
|
package me.totalfreedom.totalfreedommod;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import me.totalfreedom.totalfreedommod.banning.IndefiniteBanList;
|
import me.totalfreedom.totalfreedommod.banning.IndefiniteBanList;
|
||||||
import me.totalfreedom.totalfreedommod.config.YamlConfig;
|
import me.totalfreedom.totalfreedommod.config.YamlConfig;
|
||||||
import me.totalfreedom.totalfreedommod.permissions.PermissionConfig;
|
import me.totalfreedom.totalfreedommod.permissions.PermissionConfig;
|
||||||
@ -9,8 +8,11 @@ import me.totalfreedom.totalfreedommod.util.FLog;
|
|||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.bukkit.util.FileUtil;
|
import org.bukkit.util.FileUtil;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
|
||||||
public class BackupManager extends FreedomService
|
public class BackupManager extends FreedomService
|
||||||
{
|
{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStart()
|
public void onStart()
|
||||||
{
|
{
|
||||||
@ -42,16 +44,16 @@ public class BackupManager extends FreedomService
|
|||||||
config.load();
|
config.load();
|
||||||
|
|
||||||
// Weekly
|
// Weekly
|
||||||
if (!config.isInt(save + ".weekly"))
|
if (!config.isLong(save + ".weekly"))
|
||||||
{
|
{
|
||||||
performBackup(file, "weekly");
|
performBackup(file, "weekly");
|
||||||
config.set(save + ".weekly", FUtil.getUnixTime());
|
config.set(save + ".weekly", FUtil.getUnixTime());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int lastBackupWeekly = config.getInt(save + ".weekly");
|
long lastBackupWeekly = config.getLong(save + ".weekly");
|
||||||
|
|
||||||
if (lastBackupWeekly + 3600 * 24 * 7 < FUtil.getUnixTime())
|
if (FUtil.parseLongOffset(lastBackupWeekly, "1w") < FUtil.getUnixTime())
|
||||||
{
|
{
|
||||||
performBackup(file, "weekly");
|
performBackup(file, "weekly");
|
||||||
config.set(save + ".weekly", FUtil.getUnixTime());
|
config.set(save + ".weekly", FUtil.getUnixTime());
|
||||||
@ -65,16 +67,16 @@ public class BackupManager extends FreedomService
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Daily
|
// Daily
|
||||||
if (!config.isInt(save + ".daily"))
|
if (!config.isLong(save + ".daily"))
|
||||||
{
|
{
|
||||||
performBackup(file, "daily");
|
performBackup(file, "daily");
|
||||||
config.set(save + ".daily", FUtil.getUnixTime());
|
config.set(save + ".daily", FUtil.getUnixTime());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int lastBackupDaily = config.getInt(save + ".daily");
|
long lastBackupDaily = config.getLong(save + ".daily");
|
||||||
|
|
||||||
if (lastBackupDaily + 3600 * 24 < FUtil.getUnixTime())
|
if (FUtil.parseLongOffset(lastBackupDaily, "1d") < FUtil.getUnixTime())
|
||||||
{
|
{
|
||||||
performBackup(file, "daily");
|
performBackup(file, "daily");
|
||||||
config.set(save + ".daily", FUtil.getUnixTime());
|
config.set(save + ".daily", FUtil.getUnixTime());
|
||||||
@ -98,5 +100,4 @@ public class BackupManager extends FreedomService
|
|||||||
final File newYaml = new File(backupFolder, file + "." + type + ".bak");
|
final File newYaml = new File(backupFolder, file + "." + type + ".bak");
|
||||||
FileUtil.copy(oldYaml, newYaml);
|
FileUtil.copy(oldYaml, newYaml);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -25,11 +25,6 @@ public class CommandSpy extends FreedomService
|
|||||||
{
|
{
|
||||||
if (plugin.al.isAdmin(player) && plugin.al.getAdmin(player).getCommandSpy())
|
if (plugin.al.isAdmin(player) && plugin.al.getAdmin(player).getCommandSpy())
|
||||||
{
|
{
|
||||||
if (plugin.al.isAdmin(event.getPlayer()) && !plugin.al.isSeniorAdmin(player))
|
|
||||||
{
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (player != event.getPlayer())
|
if (player != event.getPlayer())
|
||||||
{
|
{
|
||||||
FUtil.playerMsg(player, event.getPlayer().getName() + ": " + event.getMessage());
|
FUtil.playerMsg(player, event.getPlayer().getName() + ": " + event.getMessage());
|
||||||
|
@ -2,6 +2,8 @@ package me.totalfreedom.totalfreedommod;
|
|||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import me.totalfreedom.totalfreedommod.util.Groups;
|
import me.totalfreedom.totalfreedommod.util.Groups;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
@ -33,7 +35,10 @@ public class EntityWiper extends FreedomService
|
|||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
wipeEntities(false);
|
if (ConfigEntry.AUTO_ENTITY_WIPE.getBoolean())
|
||||||
|
{
|
||||||
|
wipeEntities(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}.runTaskTimer(plugin, 600L, 600L); // 30 second delay after startup + run every 30 seconds
|
}.runTaskTimer(plugin, 600L, 600L); // 30 second delay after startup + run every 30 seconds
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,6 @@ import io.papermc.lib.PaperLib;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
import me.rayzr522.jsonmessage.JSONMessage;
|
|
||||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||||
@ -20,6 +19,7 @@ import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
|||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.event.player.PlayerLoginEvent;
|
import org.bukkit.event.player.PlayerLoginEvent;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
public class LoginProcess extends FreedomService
|
public class LoginProcess extends FreedomService
|
||||||
{
|
{
|
||||||
@ -191,6 +191,22 @@ public class LoginProcess extends FreedomService
|
|||||||
final FPlayer fPlayer = plugin.pl.getPlayer(player);
|
final FPlayer fPlayer = plugin.pl.getPlayer(player);
|
||||||
final PlayerData playerData = plugin.pl.getData(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.sendTitle(FUtil.colorize(ConfigEntry.SERVER_LOGIN_TITLE.getString()), FUtil.colorize(ConfigEntry.SERVER_LOGIN_SUBTITLE.getString()), 20, 100, 60);
|
||||||
player.setOp(true);
|
player.setOp(true);
|
||||||
|
|
||||||
@ -240,17 +256,9 @@ public class LoginProcess extends FreedomService
|
|||||||
if (noteCount != 0)
|
if (noteCount != 0)
|
||||||
{
|
{
|
||||||
String noteMessage = "This player has " + noteCount + " admin note" + (noteCount > 1 ? "s" : "") + ".";
|
String noteMessage = "This player has " + noteCount + " admin note" + (noteCount > 1 ? "s" : "") + ".";
|
||||||
JSONMessage notice = JSONMessage.create(ChatColor.GOLD + noteMessage + " Click here to view them.")
|
|
||||||
.tooltip("Click here to view them.")
|
|
||||||
.runCommand("/notes " + player.getName() + " list");
|
|
||||||
FLog.info(noteMessage);
|
FLog.info(noteMessage);
|
||||||
for (Player p : server.getOnlinePlayers())
|
plugin.al.messageAllAdmins(ChatColor.GOLD + noteMessage);
|
||||||
{
|
plugin.al.messageAllAdmins(ChatColor.GOLD + "Do " + ChatColor.YELLOW + "/notes " + player.getName() + " list" + ChatColor.GOLD + " to view them.");
|
||||||
if (plugin.al.isAdmin(p))
|
|
||||||
{
|
|
||||||
notice.send(p);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,17 +1,16 @@
|
|||||||
package me.totalfreedom.totalfreedommod;
|
package me.totalfreedom.totalfreedommod;
|
||||||
|
|
||||||
import ca.momothereal.mojangson.ex.MojangsonParseException;
|
import com.google.common.collect.Multimap;
|
||||||
import ca.momothereal.mojangson.value.MojangsonCompound;
|
|
||||||
import ca.momothereal.mojangson.value.MojangsonValue;
|
|
||||||
import io.papermc.lib.PaperLib;
|
import io.papermc.lib.PaperLib;
|
||||||
import java.util.List;
|
|
||||||
|
import java.util.Collection;
|
||||||
|
import java.util.Map;
|
||||||
import java.util.Objects;
|
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.ChatColor;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.craftbukkit.v1_16_R3.inventory.CraftItemStack;
|
import org.bukkit.attribute.Attribute;
|
||||||
|
import org.bukkit.attribute.AttributeModifier;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@ -20,6 +19,7 @@ import org.bukkit.event.player.PlayerLoginEvent;
|
|||||||
import org.bukkit.event.player.PlayerMoveEvent;
|
import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
import org.bukkit.event.player.PlayerTeleportEvent;
|
import org.bukkit.event.player.PlayerTeleportEvent;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
public class MovementValidator extends FreedomService
|
public class MovementValidator extends FreedomService
|
||||||
{
|
{
|
||||||
@ -133,55 +133,49 @@ public class MovementValidator extends FreedomService
|
|||||||
|
|
||||||
private Boolean exploitItem(ItemStack item)
|
private Boolean exploitItem(ItemStack item)
|
||||||
{
|
{
|
||||||
net.minecraft.server.v1_16_R3.ItemStack nmsStack = CraftItemStack.asNMSCopy(item);
|
if (item == null)
|
||||||
NBTTagList modifiers = getAttributeList(nmsStack);
|
|
||||||
MojangsonCompound compound = new MojangsonCompound();
|
|
||||||
boolean foundNegative = false;
|
|
||||||
boolean foundPositive = false;
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
String mod = modifiers.toString();
|
return false;
|
||||||
String fancy = ("{" + (mod.substring(1, mod.length() - 1).replace("{", "").replace("}", "")) + "}");
|
}
|
||||||
compound.read(fancy);
|
|
||||||
for (String key : compound.keySet())
|
ItemMeta meta = item.getItemMeta();
|
||||||
|
if (meta != null)
|
||||||
|
{
|
||||||
|
Multimap<Attribute, AttributeModifier> attributes = meta.getAttributeModifiers();
|
||||||
|
if (attributes != null)
|
||||||
{
|
{
|
||||||
if (Objects.equals(key, "Amount")) //null-safe .equals()
|
Map<Attribute, Collection<AttributeModifier>> attrMap = attributes.asMap();
|
||||||
|
|
||||||
|
// For every attribute...
|
||||||
|
for (Attribute attr : attributes.keySet())
|
||||||
{
|
{
|
||||||
@SuppressWarnings("rawtypes")
|
// Default values
|
||||||
List<MojangsonValue> values = compound.get(key);
|
boolean posInf = false;
|
||||||
for (MojangsonValue<?> val : values)
|
boolean negInf = false;
|
||||||
|
|
||||||
|
// For every AttributeModifier...
|
||||||
|
for (AttributeModifier modifier : attrMap.get(attr))
|
||||||
{
|
{
|
||||||
if (val.getValue().toString().equals("Infinityd"))
|
// Are they ∞ or -∞?
|
||||||
|
if (modifier.getAmount() == Double.POSITIVE_INFINITY)
|
||||||
{
|
{
|
||||||
foundPositive = true;
|
posInf = true;
|
||||||
}
|
}
|
||||||
if (val.getValue().toString().equals("-Infinityd"))
|
else if (modifier.getAmount() == Double.NEGATIVE_INFINITY)
|
||||||
{
|
{
|
||||||
foundNegative = true;
|
negInf = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Are both values set as true?
|
||||||
|
if (posInf && negInf)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
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);
|
return false;
|
||||||
if (attr == null)
|
|
||||||
{
|
|
||||||
stack.getTag().set("AttributeModifiers", new NBTTagList());
|
|
||||||
}
|
|
||||||
return stack.getTag().getList("AttributeModifiers", 10);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,13 +1,11 @@
|
|||||||
package me.totalfreedom.totalfreedommod;
|
package me.totalfreedom.totalfreedommod;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
import me.totalfreedom.totalfreedommod.util.FLog;
|
import me.totalfreedom.totalfreedommod.util.FLog;
|
||||||
import me.totalfreedom.totalfreedommod.util.FSync;
|
import me.totalfreedom.totalfreedommod.util.FSync;
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -20,7 +18,6 @@ import org.bukkit.event.player.PlayerJoinEvent;
|
|||||||
public class Muter extends FreedomService
|
public class Muter extends FreedomService
|
||||||
{
|
{
|
||||||
|
|
||||||
public static final List<String> MUTE_COMMANDS = Arrays.asList(StringUtils.split("say,me,msg,tell,reply,mail", ","));
|
|
||||||
public final List<String> MUTED_PLAYERS = new ArrayList<>();
|
public final List<String> MUTED_PLAYERS = new ArrayList<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -88,7 +85,7 @@ public class Muter extends FreedomService
|
|||||||
cmdName = command.getName().toLowerCase();
|
cmdName = command.getName().toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (MUTE_COMMANDS.contains(cmdName))
|
if (ConfigEntry.MUTED_BLOCKED_COMMANDS.getStringList().contains(cmdName))
|
||||||
{
|
{
|
||||||
player.sendMessage(ChatColor.RED + "That command is blocked while you are muted.");
|
player.sendMessage(ChatColor.RED + "That command is blocked while you are muted.");
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
@ -127,7 +127,6 @@ public class TotalFreedomMod extends JavaPlugin
|
|||||||
public Sitter st;
|
public Sitter st;
|
||||||
public VanishHandler vh;
|
public VanishHandler vh;
|
||||||
public Pterodactyl ptero;
|
public Pterodactyl ptero;
|
||||||
//public HubWorldRestrictions hwr;
|
|
||||||
//
|
//
|
||||||
// Bridges
|
// Bridges
|
||||||
public BukkitTelnetBridge btb;
|
public BukkitTelnetBridge btb;
|
||||||
|
@ -43,6 +43,7 @@ public class IndefiniteBan implements IConfig
|
|||||||
@Override
|
@Override
|
||||||
public void saveTo(ConfigurationSection cs)
|
public void saveTo(ConfigurationSection cs)
|
||||||
{
|
{
|
||||||
|
// The indefinite ban list is only intended to be modified manually. It is not intended to save.
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -171,6 +171,11 @@ public class BlockBlocker extends FreedomService
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
// Do nothing
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Groups.BANNERS.contains(event.getBlockPlaced().getType()))
|
if (Groups.BANNERS.contains(event.getBlockPlaced().getType()))
|
||||||
|
@ -36,10 +36,9 @@ public class InteractBlocker extends FreedomService
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case LEFT_CLICK_AIR:
|
default:
|
||||||
case LEFT_CLICK_BLOCK:
|
|
||||||
{
|
{
|
||||||
//
|
// Do nothing
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -158,6 +157,11 @@ public class InteractBlocker extends FreedomService
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
// Do nothing
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -276,8 +276,25 @@ public class CoreProtectBridge extends FreedomService
|
|||||||
Block block = event.getClickedBlock();
|
Block block = event.getClickedBlock();
|
||||||
final CoreProtectAPI coreProtect = getCoreProtectAPI();
|
final CoreProtectAPI coreProtect = getCoreProtectAPI();
|
||||||
|
|
||||||
|
// TODO: Rewrite this
|
||||||
if (data.hasInspection())
|
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 (event.getAction() == Action.LEFT_CLICK_BLOCK)
|
||||||
{
|
{
|
||||||
if (block != null)
|
if (block != null)
|
||||||
@ -285,19 +302,6 @@ public class CoreProtectBridge extends FreedomService
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
List<String[]> lookup = coreProtect.blockLookup(block, -1);
|
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))
|
if (!plugin.al.isAdmin(player))
|
||||||
{
|
{
|
||||||
cooldown.put(player.getName(), System.currentTimeMillis());
|
cooldown.put(player.getName(), System.currentTimeMillis());
|
||||||
@ -364,91 +368,75 @@ public class CoreProtectBridge extends FreedomService
|
|||||||
{
|
{
|
||||||
if (block != null)
|
if (block != null)
|
||||||
{
|
{
|
||||||
if (data.hasInspection())
|
BlockState blockState = block.getRelative(event.getBlockFace()).getState();
|
||||||
{
|
Block placedBlock = blockState.getBlock();
|
||||||
BlockState blockState = block.getRelative(event.getBlockFace()).getState();
|
event.setCancelled(true);
|
||||||
Block placedBlock = blockState.getBlock();
|
List<String[]> lookup = coreProtect.blockLookup(placedBlock, -1);
|
||||||
event.setCancelled(true);
|
|
||||||
List<String[]> lookup = coreProtect.blockLookup(placedBlock, -1);
|
|
||||||
|
|
||||||
|
if (lookup.isEmpty())
|
||||||
|
{
|
||||||
|
lookup = coreProtect.blockLookup(block, -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!plugin.al.isAdmin(player))
|
||||||
|
{
|
||||||
|
cooldown.put(player.getName(), System.currentTimeMillis());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (lookup != null)
|
||||||
|
{
|
||||||
if (lookup.isEmpty())
|
if (lookup.isEmpty())
|
||||||
{
|
{
|
||||||
lookup = coreProtect.blockLookup(block, -1);
|
player.sendMessage(net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector " + ChatColor.WHITE + "- " + "No block data found for this location");
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
int cooldownTime = 3;
|
HISTORY_MAP.remove(event.getPlayer());
|
||||||
|
HISTORY_MAP.put(event.getPlayer(), new FUtil.PaginationList<>(10));
|
||||||
|
FUtil.PaginationList<String> paged = HISTORY_MAP.get(event.getPlayer());
|
||||||
|
|
||||||
if (cooldown.containsKey(player.getName()))
|
player.sendMessage("---- " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector" + ChatColor.WHITE + " ---- " +
|
||||||
|
ChatColor.GRAY + "(x" + block.getX() + "/" + "y" + block.getY() + "/" + "z" + block.getZ() + ")");
|
||||||
|
|
||||||
|
for (String[] value : lookup)
|
||||||
{
|
{
|
||||||
long secondsLeft = getSecondsLeft(cooldown.get(player.getName()), cooldownTime);
|
CoreProtectAPI.ParseResult result = coreProtect.parseResult(value);
|
||||||
if (secondsLeft > 0L)
|
BlockData bl = result.getBlockData();
|
||||||
|
|
||||||
|
String s;
|
||||||
|
String st = "";
|
||||||
|
|
||||||
|
if (result.getActionString().equals("Placement"))
|
||||||
{
|
{
|
||||||
event.setCancelled(true);
|
s = " placed ";
|
||||||
player.sendMessage(ChatColor.RED + String.valueOf(secondsLeft) + " seconds left before next query.");
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
else if (result.getActionString().equals("Removal"))
|
||||||
|
{
|
||||||
|
s = " broke ";
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s = " interacted with ";
|
||||||
|
}
|
||||||
|
|
||||||
|
if (result.isRolledBack())
|
||||||
|
{
|
||||||
|
st += "§m";
|
||||||
|
}
|
||||||
|
|
||||||
|
int time = (int)(System.currentTimeMillis() / 1000L);
|
||||||
|
|
||||||
|
paged.add(ChatColor.GRAY + getTimeAgo(result.getTime(), time) + ChatColor.WHITE + " - " + net.md_5.bungee.api.ChatColor.of("#30ade4") +
|
||||||
|
st + result.getPlayer() + ChatColor.WHITE + st + s + net.md_5.bungee.api.ChatColor.of("#30ade4") + st + bl.getMaterial().toString().toLowerCase());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!plugin.al.isAdmin(player))
|
List<String> page = paged.getPage(1);
|
||||||
|
for (String entries : page)
|
||||||
{
|
{
|
||||||
cooldown.put(player.getName(), System.currentTimeMillis());
|
player.sendMessage(entries);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lookup != null)
|
player.sendMessage("Page 1/" + paged.getPageCount() + " | To index through the pages, type " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "/ins history <page>");
|
||||||
{
|
|
||||||
if (lookup.isEmpty())
|
|
||||||
{
|
|
||||||
player.sendMessage(net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector " + ChatColor.WHITE + "- " + "No block data found for this location");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
HISTORY_MAP.remove(event.getPlayer());
|
|
||||||
HISTORY_MAP.put(event.getPlayer(), new FUtil.PaginationList<>(10));
|
|
||||||
FUtil.PaginationList<String> paged = HISTORY_MAP.get(event.getPlayer());
|
|
||||||
|
|
||||||
player.sendMessage("---- " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector" + ChatColor.WHITE + " ---- " +
|
|
||||||
ChatColor.GRAY + "(x" + block.getX() + "/" + "y" + block.getY() + "/" + "z" + block.getZ() + ")");
|
|
||||||
|
|
||||||
for (String[] value : lookup)
|
|
||||||
{
|
|
||||||
CoreProtectAPI.ParseResult result = coreProtect.parseResult(value);
|
|
||||||
BlockData bl = result.getBlockData();
|
|
||||||
|
|
||||||
String s;
|
|
||||||
String st = "";
|
|
||||||
|
|
||||||
if (result.getActionString().equals("Placement"))
|
|
||||||
{
|
|
||||||
s = " placed ";
|
|
||||||
}
|
|
||||||
else if (result.getActionString().equals("Removal"))
|
|
||||||
{
|
|
||||||
s = " broke ";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
s = " interacted with ";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result.isRolledBack())
|
|
||||||
{
|
|
||||||
st += "§m";
|
|
||||||
}
|
|
||||||
|
|
||||||
int time = (int)(System.currentTimeMillis() / 1000L);
|
|
||||||
|
|
||||||
paged.add(ChatColor.GRAY + getTimeAgo(result.getTime(), time) + ChatColor.WHITE + " - " + net.md_5.bungee.api.ChatColor.of("#30ade4") +
|
|
||||||
st + result.getPlayer() + ChatColor.WHITE + st + s + net.md_5.bungee.api.ChatColor.of("#30ade4") + st + bl.getMaterial().toString().toLowerCase());
|
|
||||||
}
|
|
||||||
|
|
||||||
List<String> page = paged.getPage(1);
|
|
||||||
for (String entries : page)
|
|
||||||
{
|
|
||||||
player.sendMessage(entries);
|
|
||||||
}
|
|
||||||
|
|
||||||
player.sendMessage("Page 1/" + paged.getPageCount() + " | To index through the pages, type " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "/ins history <page>");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,6 +53,6 @@ public class TFGuildsBridge extends FreedomService
|
|||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
return Common.IN_GUILD_CHAT.contains(player);
|
return Common.GUILD_CHAT.contains(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -15,7 +15,6 @@ public class WorldGuardBridge extends FreedomService
|
|||||||
@Override
|
@Override
|
||||||
public void onStart()
|
public void onStart()
|
||||||
{
|
{
|
||||||
plugin.wr.protectWorld(plugin.wm.hubworld.getWorld());
|
|
||||||
plugin.wr.protectWorld(plugin.wm.masterBuilderWorld.getWorld());
|
plugin.wr.protectWorld(plugin.wm.masterBuilderWorld.getWorld());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import com.earth2me.essentials.User;
|
||||||
import me.totalfreedom.totalfreedommod.banning.Ban;
|
import me.totalfreedom.totalfreedommod.banning.Ban;
|
||||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||||
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||||
@ -60,28 +60,39 @@ public class Command_ban extends FreedomCommand
|
|||||||
}
|
}
|
||||||
|
|
||||||
final String username;
|
final String username;
|
||||||
final List<String> ips = new ArrayList<>();
|
final String ip;
|
||||||
|
|
||||||
final Player player = getPlayer(args[0]);
|
final Player player = getPlayer(args[0]);
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
final PlayerData entry = plugin.pl.getData(args[0]);
|
// Gets the IP using Essentials data if available
|
||||||
|
if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null)
|
||||||
if (entry == null)
|
|
||||||
{
|
{
|
||||||
msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
|
User essUser = plugin.esb.getEssentialsUser(args[0]);
|
||||||
return true;
|
//
|
||||||
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
username = entry.getName();
|
|
||||||
ips.addAll(entry.getIps());
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
final PlayerData entry = plugin.pl.getData(player);
|
|
||||||
username = player.getName();
|
username = player.getName();
|
||||||
//ips.addAll(entry.getIps());/
|
ip = FUtil.getIp(player);
|
||||||
ips.add(FUtil.getIp(player));
|
|
||||||
|
|
||||||
// Deop
|
// Deop
|
||||||
player.setOp(false);
|
player.setOp(false);
|
||||||
@ -126,7 +137,6 @@ public class Command_ban extends FreedomCommand
|
|||||||
|
|
||||||
// Ban player
|
// Ban player
|
||||||
Ban ban;
|
Ban ban;
|
||||||
|
|
||||||
if (player != null)
|
if (player != null)
|
||||||
{
|
{
|
||||||
ban = Ban.forPlayer(player, sender, null, reason);
|
ban = Ban.forPlayer(player, sender, null, reason);
|
||||||
@ -135,12 +145,8 @@ public class Command_ban extends FreedomCommand
|
|||||||
{
|
{
|
||||||
ban = Ban.forPlayerName(username, sender, null, reason);
|
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);
|
plugin.bm.addBan(ban);
|
||||||
|
|
||||||
|
|
||||||
@ -154,7 +160,7 @@ public class Command_ban extends FreedomCommand
|
|||||||
{
|
{
|
||||||
bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(reason);
|
bcast.append(" - Reason: ").append(ChatColor.YELLOW).append(reason);
|
||||||
}
|
}
|
||||||
msg(sender, ChatColor.GRAY + username + " has been banned and IP is: " + StringUtils.join(ips, ", "));
|
msg(sender, ChatColor.GRAY + username + " has been banned and IP is: " + ip);
|
||||||
FUtil.adminAction(sender.getName(), bcast.toString(), true);
|
FUtil.adminAction(sender.getName(), bcast.toString(), true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -172,7 +178,7 @@ public class Command_ban extends FreedomCommand
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Log ban
|
// Log ban
|
||||||
plugin.pul.logPunishment(new Punishment(username, ips.get(0), sender.getName(), PunishmentType.BAN, reason));
|
plugin.pul.logPunishment(new Punishment(username, ip, sender.getName(), PunishmentType.BAN, reason));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -75,9 +77,11 @@ public class Command_blockcmd extends FreedomCommand
|
|||||||
FPlayer playerdata = plugin.pl.getPlayer(player);
|
FPlayer playerdata = plugin.pl.getPlayer(player);
|
||||||
if (!playerdata.allCommandsBlocked())
|
if (!playerdata.allCommandsBlocked())
|
||||||
{
|
{
|
||||||
playerdata.setCommandsBlocked(true);
|
|
||||||
FUtil.adminAction(sender.getName(), "Blocking all commands for " + player.getName(), true);
|
FUtil.adminAction(sender.getName(), "Blocking all commands for " + player.getName(), true);
|
||||||
|
playerdata.setCommandsBlocked(true);
|
||||||
msg("Blocked commands for " + player.getName() + ".");
|
msg("Blocked commands for " + player.getName() + ".");
|
||||||
|
|
||||||
|
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.BLOCKCMD, null));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.apache.commons.lang.ArrayUtils;
|
import org.apache.commons.lang.ArrayUtils;
|
||||||
@ -128,6 +130,8 @@ public class Command_blockedit extends FreedomCommand
|
|||||||
|
|
||||||
msg(player2, "Your block modification abilities have been blocked.", ChatColor.RED);
|
msg(player2, "Your block modification abilities have been blocked.", ChatColor.RED);
|
||||||
msg("Blocked all block modification abilities for " + player2.getName());
|
msg("Blocked all block modification abilities for " + player2.getName());
|
||||||
|
|
||||||
|
plugin.pul.logPunishment(new Punishment(player2.getName(), FUtil.getIp(player2), sender.getName(), PunishmentType.BLOCKEDIT, null));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
@ -125,6 +127,7 @@ public class Command_blockpvp extends FreedomCommand
|
|||||||
{
|
{
|
||||||
Command_smite.smite(sender, p, reason);
|
Command_smite.smite(sender, p, reason);
|
||||||
}
|
}
|
||||||
|
plugin.pul.logPunishment(new Punishment(p.getName(), FUtil.getIp(p), sender.getName(), PunishmentType.BLOCKPVP, null));
|
||||||
|
|
||||||
msg(p, "Your PVP has been disabled.", ChatColor.RED);
|
msg(p, "Your PVP has been disabled.", ChatColor.RED);
|
||||||
msg("Disabled PVP for " + p.getName());
|
msg("Disabled PVP for " + p.getName());
|
||||||
|
@ -5,6 +5,8 @@ import java.util.Arrays;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -75,17 +77,43 @@ public class Command_cage extends FreedomCommand
|
|||||||
}
|
}
|
||||||
case "block":
|
case "block":
|
||||||
{
|
{
|
||||||
if (Material.matchMaterial(args[2]) != null)
|
if (args.length >= 3)
|
||||||
{
|
{
|
||||||
outerMaterial = Material.matchMaterial(args[2]);
|
// Checks the validity of the Material and checks if it's a block.
|
||||||
break;
|
// This is incredibly inefficient, as Spigot's isBlock() method in Material is an actual
|
||||||
|
// nightmare of switch-cases.
|
||||||
|
if (Material.matchMaterial(args[2]) != null && Material.matchMaterial(args[2]).isBlock())
|
||||||
|
{
|
||||||
|
outerMaterial = Material.matchMaterial(args[2]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
msg("Invalid block!", ChatColor.RED);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
msg("Invalid block!", ChatColor.RED);
|
else
|
||||||
break;
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (outerMaterial == Material.PLAYER_HEAD)
|
||||||
|
{
|
||||||
|
FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true);
|
||||||
|
}
|
||||||
|
|
||||||
Location location = player.getLocation().clone().add(0.0, 1.0, 0.0);
|
Location location = player.getLocation().clone().add(0.0, 1.0, 0.0);
|
||||||
|
|
||||||
if (skullName != null)
|
if (skullName != null)
|
||||||
@ -96,17 +124,9 @@ public class Command_cage extends FreedomCommand
|
|||||||
{
|
{
|
||||||
fPlayer.getCageData().cage(location, outerMaterial, innerMaterial);
|
fPlayer.getCageData().cage(location, outerMaterial, innerMaterial);
|
||||||
}
|
}
|
||||||
|
|
||||||
player.setGameMode(GameMode.SURVIVAL);
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
|
|
||||||
if (outerMaterial == Material.PLAYER_HEAD)
|
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.CAGE, null));
|
||||||
{
|
|
||||||
FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ import org.bukkit.entity.Player;
|
|||||||
|
|
||||||
@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH)
|
@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH)
|
||||||
@CommandParameters(description = "Clears the chat.", usage = "/<command>", aliases = "cc")
|
@CommandParameters(description = "Clears the chat.", usage = "/<command>", aliases = "cc")
|
||||||
public class Command_clearchat extends FreedomCommand
|
public class Command_cleanchat extends FreedomCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -27,4 +27,4 @@ public class Command_clearchat extends FreedomCommand
|
|||||||
FUtil.adminAction(sender.getName(), "Cleared chat", true);
|
FUtil.adminAction(sender.getName(), "Cleared chat", true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,5 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import java.util.Objects;
|
|
||||||
import me.totalfreedom.totalfreedommod.admin.Admin;
|
import me.totalfreedom.totalfreedommod.admin.Admin;
|
||||||
import me.totalfreedom.totalfreedommod.banning.Ban;
|
import me.totalfreedom.totalfreedommod.banning.Ban;
|
||||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
@ -43,7 +42,7 @@ public class Command_doom extends FreedomCommand
|
|||||||
FUtil.adminAction(sender.getName(), "Casting oblivion over " + player.getName(), true);
|
FUtil.adminAction(sender.getName(), "Casting oblivion over " + player.getName(), true);
|
||||||
FUtil.bcastMsg(player.getName() + " will be completely obliviated!", ChatColor.RED);
|
FUtil.bcastMsg(player.getName() + " will be completely obliviated!", ChatColor.RED);
|
||||||
|
|
||||||
final String ip = Objects.requireNonNull(player.getAddress()).getAddress().getHostAddress().trim();
|
final String ip = FUtil.getIp(player);
|
||||||
|
|
||||||
// Remove from admin
|
// Remove from admin
|
||||||
Admin admin = getAdmin(player);
|
Admin admin = getAdmin(player);
|
||||||
@ -76,10 +75,7 @@ public class Command_doom extends FreedomCommand
|
|||||||
// Ban player
|
// Ban player
|
||||||
Ban ban = Ban.forPlayer(player, sender);
|
Ban ban = Ban.forPlayer(player, sender);
|
||||||
ban.setReason((reason == null ? "FUCKOFF" : reason));
|
ban.setReason((reason == null ? "FUCKOFF" : reason));
|
||||||
for (String playerIp : plugin.pl.getData(player).getIps())
|
ban.addIp(ip);
|
||||||
{
|
|
||||||
ban.addIp(playerIp);
|
|
||||||
}
|
|
||||||
plugin.bm.addBan(ban);
|
plugin.bm.addBan(ban);
|
||||||
|
|
||||||
// Set gamemode to survival
|
// Set gamemode to survival
|
||||||
|
@ -1,40 +1,50 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME)
|
@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME)
|
||||||
@CommandParameters(description = "Eject players that are riding you.", usage = "/<command>")
|
@CommandParameters(description = "Eject any entities that are riding you.", usage = "/<command>")
|
||||||
public class Command_eject extends FreedomCommand
|
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
|
@Override
|
||||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||||
{
|
{
|
||||||
|
// Uses the size of the return value of Player.getPassengers() as the starting number of entities ejected
|
||||||
|
int count = playerSender.getPassengers().size();
|
||||||
|
|
||||||
List<String> names = new ArrayList<>();
|
// Removes any entities from the sender's shoulders
|
||||||
|
if (playerSender.getShoulderEntityLeft() != null)
|
||||||
for (Entity entity : playerSender.getPassengers())
|
|
||||||
{
|
{
|
||||||
names.add(entity.getName());
|
playerSender.setShoulderEntityLeft(null);
|
||||||
|
count++;
|
||||||
|
}
|
||||||
|
if (playerSender.getShoulderEntityRight() != null)
|
||||||
|
{
|
||||||
|
playerSender.setShoulderEntityLeft(null);
|
||||||
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (names.isEmpty())
|
// Removes anything riding the sender
|
||||||
|
playerSender.eject();
|
||||||
|
|
||||||
|
if (count != 0)
|
||||||
|
{
|
||||||
|
msg(count + " entit" + (count == 1 ? "y was" : "ies were") + " ejected.", ChatColor.GREEN);
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
msg("Nothing was ejected.", ChatColor.GREEN);
|
msg("Nothing was ejected.", ChatColor.GREEN);
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
msg("Ejecting " + StringUtils.join(names, ", ") + ".", ChatColor.GREEN);
|
|
||||||
playerSender.eject();
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,6 +64,12 @@ public class Command_entitywipe extends FreedomCommand
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (type == EntityType.PLAYER)
|
||||||
|
{
|
||||||
|
msg("Player entities cannot be purged.", ChatColor.RED);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
if (!getAllEntities().contains(type))
|
if (!getAllEntities().contains(type))
|
||||||
{
|
{
|
||||||
msg(FUtil.formatName(type.name()) + " is an entity, however: it is a mob.", ChatColor.RED);
|
msg(FUtil.formatName(type.name()) + " is an entity, however: it is a mob.", ChatColor.RED);
|
||||||
|
@ -23,12 +23,12 @@ public class Command_freeze extends FreedomCommand
|
|||||||
|
|
||||||
if (!gFreeze)
|
if (!gFreeze)
|
||||||
{
|
{
|
||||||
FUtil.adminAction(sender.getName(), "Disabling global player freeze", false);
|
FUtil.adminAction(sender.getName(), "Unfreezing all players", false);
|
||||||
msg("Players are now free to move.");
|
msg("Players are now free to move.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
FUtil.adminAction(sender.getName(), "Enabling global player freeze", false);
|
FUtil.adminAction(sender.getName(), "Freezing all players", false);
|
||||||
for (Player player : server.getOnlinePlayers())
|
for (Player player : server.getOnlinePlayers())
|
||||||
{
|
{
|
||||||
if (!isAdmin(player))
|
if (!isAdmin(player))
|
||||||
|
@ -26,7 +26,7 @@ public class Command_glow extends FreedomCommand
|
|||||||
playerSender.addPotionEffect(glow);
|
playerSender.addPotionEffect(glow);
|
||||||
glowing = true;
|
glowing = true;
|
||||||
}
|
}
|
||||||
msg("You " + (glowing ? "are now" : "no longer") + " glowing.");
|
msg("You are " + (glowing ? "now" : "no longer") + " glowing.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,202 +0,0 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
|
||||||
|
|
||||||
import io.papermc.lib.PaperLib;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
|
||||||
import me.totalfreedom.totalfreedommod.world.WorldTime;
|
|
||||||
import me.totalfreedom.totalfreedommod.world.WorldWeather;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.OP, source = SourceType.BOTH)
|
|
||||||
@CommandParameters(description = "HubWorld management stuff",
|
|
||||||
usage = "/<command> [time <morning | noon | evening | night> | weather <off | rain | storm>]",
|
|
||||||
aliases = "hw,hub")
|
|
||||||
public class Command_hubworld extends FreedomCommand
|
|
||||||
{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
|
||||||
{
|
|
||||||
CommandMode commandMode = null;
|
|
||||||
|
|
||||||
if (args.length == 0)
|
|
||||||
{
|
|
||||||
commandMode = CommandMode.TELEPORT;
|
|
||||||
}
|
|
||||||
else if (args.length >= 2)
|
|
||||||
{
|
|
||||||
if ("time".equalsIgnoreCase(args[0]))
|
|
||||||
{
|
|
||||||
commandMode = CommandMode.TIME;
|
|
||||||
}
|
|
||||||
else if ("weather".equalsIgnoreCase(args[0]))
|
|
||||||
{
|
|
||||||
commandMode = CommandMode.WEATHER;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (commandMode == null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
switch (commandMode)
|
|
||||||
{
|
|
||||||
case TELEPORT:
|
|
||||||
{
|
|
||||||
if (!(sender instanceof Player) || playerSender == null)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
World hubWorld = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
hubWorld = plugin.wm.hubworld.getWorld();
|
|
||||||
}
|
|
||||||
catch (Exception ignored)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
if (hubWorld == null || playerSender.getWorld() == hubWorld)
|
|
||||||
{
|
|
||||||
msg("Going to the main world.");
|
|
||||||
PaperLib.teleportAsync(playerSender, server.getWorlds().get(0).getSpawnLocation());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
msg("Going to the hub world");
|
|
||||||
plugin.wm.hubworld.sendToWorld(playerSender);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case TIME:
|
|
||||||
{
|
|
||||||
assertCommandPerms(sender, playerSender);
|
|
||||||
|
|
||||||
if (args.length == 2)
|
|
||||||
{
|
|
||||||
WorldTime timeOfDay = WorldTime.getByAlias(args[1]);
|
|
||||||
if (timeOfDay != null)
|
|
||||||
{
|
|
||||||
plugin.wm.hubworld.setTimeOfDay(timeOfDay);
|
|
||||||
msg("Hub world time set to: " + timeOfDay.name());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
msg("Invalid time of day. Can be: sunrise, noon, sunset, midnight");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case WEATHER:
|
|
||||||
{
|
|
||||||
assertCommandPerms(sender, playerSender);
|
|
||||||
|
|
||||||
if (args.length == 2)
|
|
||||||
{
|
|
||||||
WorldWeather weatherMode = WorldWeather.getByAlias(args[1]);
|
|
||||||
if (weatherMode != null)
|
|
||||||
{
|
|
||||||
plugin.wm.hubworld.setWeatherMode(weatherMode);
|
|
||||||
msg("Hub world weather set to: " + weatherMode.name());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
msg("Invalid weather mode. Can be: off, rain, storm");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch (PermissionDeniedException ex)
|
|
||||||
{
|
|
||||||
if (ex.getMessage().isEmpty())
|
|
||||||
{
|
|
||||||
return noPerms();
|
|
||||||
}
|
|
||||||
msg(ex.getMessage());
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<String> getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args)
|
|
||||||
{
|
|
||||||
if (!plugin.al.isAdmin(sender))
|
|
||||||
{
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
if (args.length == 1)
|
|
||||||
{
|
|
||||||
return Arrays.asList("time", "weather");
|
|
||||||
}
|
|
||||||
else if (args.length == 2)
|
|
||||||
{
|
|
||||||
if (args[0].equals("time"))
|
|
||||||
{
|
|
||||||
return Arrays.asList("morning", "noon", "evening", "night");
|
|
||||||
}
|
|
||||||
else if (args[0].equals("weather"))
|
|
||||||
{
|
|
||||||
return Arrays.asList("off", "rain", "storm");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Redo this properly
|
|
||||||
private void assertCommandPerms(CommandSender sender, Player playerSender) throws PermissionDeniedException
|
|
||||||
{
|
|
||||||
if (!(sender instanceof Player) || playerSender == null || !plugin.al.isAdmin(playerSender))
|
|
||||||
{
|
|
||||||
throw new PermissionDeniedException();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private enum CommandMode
|
|
||||||
{
|
|
||||||
TELEPORT, TIME, WEATHER
|
|
||||||
}
|
|
||||||
|
|
||||||
private static class PermissionDeniedException extends Exception
|
|
||||||
{
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
|
||||||
|
|
||||||
private PermissionDeniedException()
|
|
||||||
{
|
|
||||||
super("");
|
|
||||||
}
|
|
||||||
|
|
||||||
private PermissionDeniedException(String string)
|
|
||||||
{
|
|
||||||
super(string);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -88,7 +88,7 @@ public class Command_list extends FreedomCommand
|
|||||||
|
|
||||||
List<String> n = new ArrayList<>();
|
List<String> n = new ArrayList<>();
|
||||||
|
|
||||||
if (listFilter == ListFilter.TELNET_SESSIONS && plugin.al.isAdmin(sender) && plugin.al.getAdmin(playerSender).getRank().isAtLeast(Rank.ADMIN))
|
if (listFilter == ListFilter.TELNET_SESSIONS && plugin.al.isAdmin(sender))
|
||||||
{
|
{
|
||||||
List<Admin> connectedAdmins = plugin.btb.getConnectedAdmins();
|
List<Admin> connectedAdmins = plugin.btb.getConnectedAdmins();
|
||||||
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(connectedAdmins.size())
|
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(connectedAdmins.size())
|
||||||
@ -101,8 +101,7 @@ public class Command_list extends FreedomCommand
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
int count = server.getOnlinePlayers().size() - AdminList.vanished.size();
|
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(FUtil.getFakePlayerCount())
|
||||||
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(count < 0 ? 0 : count)
|
|
||||||
.append(ChatColor.BLUE)
|
.append(ChatColor.BLUE)
|
||||||
.append(" out of a maximum ")
|
.append(" out of a maximum ")
|
||||||
.append(ChatColor.RED)
|
.append(ChatColor.RED)
|
||||||
|
@ -1,96 +0,0 @@
|
|||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -35,8 +35,8 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
}
|
}
|
||||||
switch (args[1])
|
switch (args[1])
|
||||||
{
|
{
|
||||||
|
|
||||||
case "add":
|
case "add":
|
||||||
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
||||||
@ -75,7 +75,9 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
msg("Invalid number: " + args[2], ChatColor.RED);
|
msg("Invalid number: " + args[2], ChatColor.RED);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
case "remove":
|
case "remove":
|
||||||
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
||||||
@ -122,7 +124,9 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
msg("Invalid number: " + args[2], ChatColor.RED);
|
msg("Invalid number: " + args[2], ChatColor.RED);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
case "set":
|
case "set":
|
||||||
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
||||||
@ -147,6 +151,11 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
msg("Invalid number: " + args[2], ChatColor.RED);
|
msg("Invalid number: " + args[2], ChatColor.RED);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (args[0].equals("items"))
|
else if (args[0].equals("items"))
|
||||||
|
@ -116,8 +116,12 @@ public class Command_notes extends FreedomCommand
|
|||||||
msg("Cleared " + count + " notes.", ChatColor.GREEN);
|
msg("Cleared " + count + " notes.", ChatColor.GREEN);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -56,11 +58,13 @@ public class Command_orbit extends FreedomCommand
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false);
|
||||||
|
|
||||||
player.setGameMode(GameMode.SURVIVAL);
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
playerdata.startOrbiting(strength);
|
playerdata.startOrbiting(strength);
|
||||||
|
|
||||||
player.setVelocity(new Vector(0, strength, 0));
|
player.setVelocity(new Vector(0, strength, 0));
|
||||||
FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false);
|
|
||||||
|
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.ORBIT, null));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -29,6 +29,7 @@ public class Command_potion extends FreedomCommand
|
|||||||
switch (args.length)
|
switch (args.length)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
|
{
|
||||||
if (args[0].equalsIgnoreCase("list"))
|
if (args[0].equalsIgnoreCase("list"))
|
||||||
{
|
{
|
||||||
List<String> potionEffectTypeNames = new ArrayList<>();
|
List<String> potionEffectTypeNames = new ArrayList<>();
|
||||||
@ -58,14 +59,16 @@ public class Command_potion extends FreedomCommand
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
|
{
|
||||||
if (args[0].equalsIgnoreCase("clear"))
|
if (args[0].equalsIgnoreCase("clear"))
|
||||||
{
|
{
|
||||||
Player target = playerSender;
|
Player target = playerSender;
|
||||||
if (args.length == 2)
|
if (args.length == 2)
|
||||||
{
|
{
|
||||||
if (!plugin.al.isAdmin(sender) && !target.equals(getPlayer(sender.getName())))
|
if (!plugin.al.isAdmin(sender) && !args[1].equalsIgnoreCase(sender.getName()))
|
||||||
{
|
{
|
||||||
msg(ChatColor.RED + "Only admins can clear potion effects from other players.");
|
msg(ChatColor.RED + "Only admins can clear potion effects from other players.");
|
||||||
return true;
|
return true;
|
||||||
@ -95,16 +98,18 @@ public class Command_potion extends FreedomCommand
|
|||||||
msg("Cleared all active potion effects " + (!target.equals(playerSender) ? "from player " + target.getName() + "." : "from yourself."), ChatColor.AQUA);
|
msg("Cleared all active potion effects " + (!target.equals(playerSender) ? "from player " + target.getName() + "." : "from yourself."), ChatColor.AQUA);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
case 5:
|
case 5:
|
||||||
|
{
|
||||||
if (args[0].equalsIgnoreCase("add"))
|
if (args[0].equalsIgnoreCase("add"))
|
||||||
{
|
{
|
||||||
Player target = playerSender;
|
Player target = playerSender;
|
||||||
|
|
||||||
if (args.length == 5)
|
if (args.length == 5)
|
||||||
{
|
{
|
||||||
if (!plugin.al.isAdmin(sender) && !getPlayer(args[4]).equals(getPlayer(sender.getName())))
|
if (!plugin.al.isAdmin(sender) && !args[4].equalsIgnoreCase(sender.getName()))
|
||||||
{
|
{
|
||||||
msg("Only admins can apply potion effects to other players.", ChatColor.RED);
|
msg("Only admins can apply potion effects to other players.", ChatColor.RED);
|
||||||
return true;
|
return true;
|
||||||
@ -167,8 +172,11 @@ public class Command_potion extends FreedomCommand
|
|||||||
+ (!target.equals(playerSender) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA);
|
+ (!target.equals(playerSender) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
|
{
|
||||||
return false;
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -179,14 +187,17 @@ public class Command_potion extends FreedomCommand
|
|||||||
switch (args.length)
|
switch (args.length)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
|
{
|
||||||
List<String> arguments = new ArrayList<>(Arrays.asList("list", "clear", "add"));
|
List<String> arguments = new ArrayList<>(Arrays.asList("list", "clear", "add"));
|
||||||
if (plugin.al.isAdmin(sender))
|
if (plugin.al.isAdmin(sender))
|
||||||
{
|
{
|
||||||
arguments.add("clearall");
|
arguments.add("clearall");
|
||||||
}
|
}
|
||||||
return arguments;
|
return arguments;
|
||||||
|
}
|
||||||
|
|
||||||
case 2:
|
case 2:
|
||||||
|
{
|
||||||
if (args[0].equals("clear"))
|
if (args[0].equals("clear"))
|
||||||
{
|
{
|
||||||
if (plugin.al.isAdmin(sender))
|
if (plugin.al.isAdmin(sender))
|
||||||
@ -199,22 +210,28 @@ public class Command_potion extends FreedomCommand
|
|||||||
return getAllPotionTypes();
|
return getAllPotionTypes();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case 3:
|
case 3:
|
||||||
|
{
|
||||||
if (args[0].equals("add"))
|
if (args[0].equals("add"))
|
||||||
{
|
{
|
||||||
return Collections.singletonList("<duration>");
|
return Collections.singletonList("<duration>");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case 4:
|
case 4:
|
||||||
|
{
|
||||||
if (args[0].equals("add"))
|
if (args[0].equals("add"))
|
||||||
{
|
{
|
||||||
return Collections.singletonList("<amplifier>");
|
return Collections.singletonList("<amplifier>");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case 5:
|
case 5:
|
||||||
|
{
|
||||||
if (plugin.al.isAdmin(sender))
|
if (plugin.al.isAdmin(sender))
|
||||||
{
|
{
|
||||||
if (args[0].equals("add"))
|
if (args[0].equals("add"))
|
||||||
@ -223,6 +240,12 @@ public class Command_potion extends FreedomCommand
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
|
@ -1,41 +0,0 @@
|
|||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -26,7 +26,7 @@ public class Command_ride extends FreedomCommand
|
|||||||
final FPlayer fPlayer = plugin.pl.getPlayer(playerSender);
|
final FPlayer fPlayer = plugin.pl.getPlayer(playerSender);
|
||||||
if (fPlayer.getCageData().isCaged())
|
if (fPlayer.getCageData().isCaged())
|
||||||
{
|
{
|
||||||
msg("You cannot used this command while caged.");
|
msg("You cannot use this command while caged.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,97 @@
|
|||||||
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
|
import net.md_5.bungee.api.chat.BaseComponent;
|
||||||
|
import net.md_5.bungee.api.chat.ClickEvent;
|
||||||
|
import net.md_5.bungee.api.chat.HoverEvent;
|
||||||
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
|
import net.md_5.bungee.api.chat.TranslatableComponent;
|
||||||
|
import net.md_5.bungee.api.chat.hover.content.Text;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.World;
|
||||||
|
import org.bukkit.command.Command;
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@CommandPermissions(level = Rank.NON_OP, source = SourceType.BOTH)
|
||||||
|
@CommandParameters(description = "Get the seed of the world you are currently in.", usage = "/seed [world]")
|
||||||
|
public class Command_seed extends FreedomCommand
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||||
|
{
|
||||||
|
World world;
|
||||||
|
|
||||||
|
if (args.length > 0)
|
||||||
|
{
|
||||||
|
world = server.getWorld(args[0]);
|
||||||
|
if (world == null)
|
||||||
|
{
|
||||||
|
msg("That world could not be found", ChatColor.RED);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// If the sender is a Player, use that world. Otherwise, use the overworld as a fallback.
|
||||||
|
if (!senderIsConsole)
|
||||||
|
{
|
||||||
|
world = playerSender.getWorld();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
world = server.getWorlds().get(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// If the sender is not a Player, use the usual msg method to
|
||||||
|
if (senderIsConsole)
|
||||||
|
{
|
||||||
|
msg("Seed: [" + ChatColor.GREEN + world.getSeed() + ChatColor.WHITE + "]", ChatColor.WHITE);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Gets the seed for later uses
|
||||||
|
String seed = String.valueOf(world.getSeed());
|
||||||
|
|
||||||
|
// This is a really stupid hack to get things to play nicely, but it works so I don't give a damn
|
||||||
|
BaseComponent[] components = {new TranslatableComponent("chat.copy.click")};
|
||||||
|
TextComponent seedAsComponent = new TextComponent(seed);
|
||||||
|
|
||||||
|
// Style the message like in vanilla Minecraft.
|
||||||
|
seedAsComponent.setColor(ChatColor.GREEN.asBungee());
|
||||||
|
seedAsComponent.setClickEvent(new ClickEvent(ClickEvent.Action.COPY_TO_CLIPBOARD, seed));
|
||||||
|
seedAsComponent.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new Text(components)));
|
||||||
|
|
||||||
|
// Enclose the seed with brackets
|
||||||
|
TextComponent seedString = new TextComponent("[");
|
||||||
|
seedString.addExtra(seedAsComponent);
|
||||||
|
seedString.addExtra("]");
|
||||||
|
|
||||||
|
// Send the message to the player.
|
||||||
|
TranslatableComponent response = new TranslatableComponent("commands.seed.success", seedString);
|
||||||
|
playerSender.spigot().sendMessage(response);
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<String> getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args)
|
||||||
|
{
|
||||||
|
if (args.length == 1)
|
||||||
|
{
|
||||||
|
// Returns a list of worlds on the server and returns it
|
||||||
|
List<String> worlds = new ArrayList<>();
|
||||||
|
for (World world : server.getWorlds())
|
||||||
|
{
|
||||||
|
worlds.add(world.getName());
|
||||||
|
}
|
||||||
|
return worlds;
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
@ -1,49 +0,0 @@
|
|||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -15,7 +15,7 @@ import org.bukkit.command.CommandSender;
|
|||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH)
|
@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH)
|
||||||
@CommandParameters(description = "Someone being a little bitch? Smite them down...", usage = "/<command> <player> [reason] [-c | -q]")
|
@CommandParameters(description = "Someone being a little bitch? Smite them down...", usage = "/<command> <player> [reason] [-ci | -q]")
|
||||||
public class Command_smite extends FreedomCommand
|
public class Command_smite extends FreedomCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -106,9 +106,9 @@ public class Command_smite extends FreedomCommand
|
|||||||
reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length - 1), " ");
|
reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length - 1), " ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (args[args.length - 1].equalsIgnoreCase("-c"))
|
else if (args[args.length - 1].equalsIgnoreCase("-ci"))
|
||||||
{
|
{
|
||||||
if (args[args.length - 1].equalsIgnoreCase("-c"))
|
if (args[args.length - 1].equalsIgnoreCase("-ci"))
|
||||||
{
|
{
|
||||||
clearinv = true;
|
clearinv = true;
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
@ -19,9 +20,6 @@ import org.bukkit.entity.Player;
|
|||||||
public class Command_tag extends FreedomCommand
|
public class Command_tag extends FreedomCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
public static final List<String> FORBIDDEN_WORDS = Arrays.asList(
|
|
||||||
"admin", "owner", "moderator", "developer", "console", "dev", "staff", "mod", "sra", "tca", "sta", "sa");
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||||
{
|
{
|
||||||
@ -107,6 +105,11 @@ public class Command_tag extends FreedomCommand
|
|||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (args.length >= 2)
|
else if (args.length >= 2)
|
||||||
@ -170,7 +173,7 @@ public class Command_tag extends FreedomCommand
|
|||||||
|
|
||||||
if (!plugin.al.isAdmin(sender))
|
if (!plugin.al.isAdmin(sender))
|
||||||
{
|
{
|
||||||
for (String word : FORBIDDEN_WORDS)
|
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||||
{
|
{
|
||||||
if (rawTag.contains(word))
|
if (rawTag.contains(word))
|
||||||
{
|
{
|
||||||
@ -261,7 +264,7 @@ public class Command_tag extends FreedomCommand
|
|||||||
|
|
||||||
if (!plugin.al.isAdmin(sender))
|
if (!plugin.al.isAdmin(sender))
|
||||||
{
|
{
|
||||||
for (String word : FORBIDDEN_WORDS)
|
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||||
{
|
{
|
||||||
if (rawTag.contains(word))
|
if (rawTag.contains(word))
|
||||||
{
|
{
|
||||||
@ -281,6 +284,11 @@ public class Command_tag extends FreedomCommand
|
|||||||
msg("Tag set to '" + outputTag + ChatColor.GRAY + "'." + (save ? " (Saved)" : "") + from + to);
|
msg("Tag set to '" + outputTag + ChatColor.GRAY + "'." + (save ? " (Saved)" : "") + from + to);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
@ -43,7 +44,7 @@ public class Command_tagnyan extends FreedomCommand
|
|||||||
|
|
||||||
if (!plugin.al.isAdmin(sender))
|
if (!plugin.al.isAdmin(sender))
|
||||||
{
|
{
|
||||||
for (String word : Command_tag.FORBIDDEN_WORDS)
|
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||||
{
|
{
|
||||||
if (rawTag.contains(word))
|
if (rawTag.contains(word))
|
||||||
{
|
{
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
@ -33,7 +34,7 @@ public class Command_tagrainbow extends FreedomCommand
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String word : Command_tag.FORBIDDEN_WORDS)
|
for (String word : ConfigEntry.FORBIDDEN_WORDS.getStringList())
|
||||||
{
|
{
|
||||||
if (rawTag.contains(word))
|
if (rawTag.contains(word))
|
||||||
{
|
{
|
||||||
|
@ -1,143 +0,0 @@
|
|||||||
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(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;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
|
import com.earth2me.essentials.User;
|
||||||
import me.totalfreedom.totalfreedommod.banning.Ban;
|
import me.totalfreedom.totalfreedommod.banning.Ban;
|
||||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||||
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||||
@ -13,13 +13,15 @@ import me.totalfreedom.totalfreedommod.rank.Rank;
|
|||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.apache.commons.lang.ArrayUtils;
|
import org.apache.commons.lang.ArrayUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH)
|
@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH)
|
||||||
@CommandParameters(description = "Temporarily ban someone.", usage = "/<command> [-q] <username> [duration] [reason]")
|
@CommandParameters(description = "Temporarily ban someone.", usage = "/<command> [-q] <username> [duration] [reason]", aliases = "tban,noob")
|
||||||
public class Command_tempban extends FreedomCommand
|
public class Command_tempban extends FreedomCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -44,74 +46,119 @@ public class Command_tempban extends FreedomCommand
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
final String username;
|
||||||
|
final String ip;
|
||||||
|
|
||||||
final Player player = getPlayer(args[0]);
|
final Player player = getPlayer(args[0]);
|
||||||
final PlayerData entry;
|
PlayerData entry;
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
entry = plugin.pl.getData(args[0]);
|
// Gets the IP using Essentials data if available
|
||||||
|
if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null)
|
||||||
if (entry == null)
|
|
||||||
{
|
{
|
||||||
msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
|
User essUser = plugin.esb.getEssentialsUser(args[0]);
|
||||||
return true;
|
//
|
||||||
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
entry = plugin.pl.getData(player);
|
username = player.getName();
|
||||||
|
ip = FUtil.getIp(player);
|
||||||
}
|
}
|
||||||
final List<String> ips = new ArrayList<>(entry.getIps());
|
|
||||||
|
|
||||||
assert player != null;
|
final StringBuilder message = new StringBuilder("Temporarily banned " + username);
|
||||||
final StringBuilder message = new StringBuilder("Temporarily banned " + player.getName());
|
|
||||||
|
// 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));
|
message.append(" until ").append(date_format.format(expires));
|
||||||
|
|
||||||
|
// If a reason appears to exist, set it.
|
||||||
String reason = null;
|
String reason = null;
|
||||||
if (args.length >= 2)
|
if (args.length > 2)
|
||||||
{
|
{
|
||||||
Date parsed_offset = FUtil.parseDateOffset(args[1]);
|
reason = StringUtils.join(ArrayUtils.subarray(args, 2, args.length), " ") + " (" + sender.getName() + ")";
|
||||||
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("\"");
|
message.append(", Reason: \"").append(reason).append("\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Ban ban;
|
||||||
|
if (player != null)
|
||||||
|
{
|
||||||
|
ban = Ban.forPlayer(player, sender, expires, reason);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ban = Ban.forPlayerName(username, sender, expires, reason);
|
||||||
|
}
|
||||||
|
ban.addIp(ip);
|
||||||
|
|
||||||
|
plugin.bm.addBan(ban);
|
||||||
|
|
||||||
if (!quiet)
|
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++)
|
// Strike with lightning
|
||||||
|
final Location targetPos = player.getLocation();
|
||||||
|
for (int x = -1; x <= 1; x++)
|
||||||
{
|
{
|
||||||
final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
|
for (int z = -1; z <= 1; z++)
|
||||||
Objects.requireNonNull(targetPos.getWorld()).strikeLightningEffect(strike_pos);
|
{
|
||||||
|
final Location strike_pos = new Location(targetPos.getWorld(), targetPos.getBlockX() + x, targetPos.getBlockY(), targetPos.getBlockZ() + z);
|
||||||
|
Objects.requireNonNull(targetPos.getWorld()).strikeLightningEffect(strike_pos);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
player.kickPlayer(ban.bakeKickMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
FUtil.adminAction(sender.getName(), message.toString(), true);
|
FUtil.adminAction(sender.getName(), message.toString(), true);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
msg("Quietly temporarily banned " + player.getName() + ".");
|
msg("Quietly temporarily banned " + username + ".");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (Player p : Bukkit.getOnlinePlayers())
|
||||||
Ban ban;
|
|
||||||
|
|
||||||
ban = Ban.forPlayer(player, sender, null, reason);
|
|
||||||
|
|
||||||
for (String ip : ips)
|
|
||||||
{
|
{
|
||||||
ban.addIp(ip);
|
if (FUtil.getIp(p).equals(ip))
|
||||||
|
{
|
||||||
|
p.kickPlayer(ChatColor.RED + "You've been kicked because someone on your IP has been banned.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
plugin.bm.addBan(ban);
|
|
||||||
player.kickPlayer(ban.bakeKickMessage());
|
plugin.pul.logPunishment(new Punishment(username, ip, sender.getName(), PunishmentType.TEMPBAN, reason));
|
||||||
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.TEMPBAN, reason));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -16,6 +16,12 @@ import org.bukkit.entity.Player;
|
|||||||
@CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/<command> [option] [value] [value]")
|
@CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/<command> [option] [value] [value]")
|
||||||
public class Command_toggle extends FreedomCommand
|
public class Command_toggle extends FreedomCommand
|
||||||
{
|
{
|
||||||
|
private final List<String> toggles = Arrays.asList(
|
||||||
|
"waterplace", "fireplace", "lavaplace", "fluidspread", "lavadmg", "firespread", "frostwalk",
|
||||||
|
"firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke [range] [count]",
|
||||||
|
"explosives [radius]", "unsafeenchs", "bells", "armorstands", "structureblocks", "jigsaws", "grindstones",
|
||||||
|
"jukeboxes", "spawners", "4chan", "beehives", "respawnanchors", "autotp", "autoclear", "minecarts", "mp44",
|
||||||
|
"landmines", "tossmob", "gravity");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||||
@ -23,38 +29,10 @@ public class Command_toggle extends FreedomCommand
|
|||||||
if (args.length == 0)
|
if (args.length == 0)
|
||||||
{
|
{
|
||||||
msg("Available toggles: ");
|
msg("Available toggles: ");
|
||||||
msg("- waterplace");
|
for (String toggle : toggles)
|
||||||
msg("- fireplace");
|
{
|
||||||
msg("- lavaplace");
|
msg("- " + toggle);
|
||||||
msg("- fluidspread");
|
}
|
||||||
msg("- lavadmg");
|
|
||||||
msg("- firespread");
|
|
||||||
msg("- frostwalk");
|
|
||||||
msg("- firework");
|
|
||||||
msg("- prelog");
|
|
||||||
msg("- lockdown");
|
|
||||||
msg("- petprotect");
|
|
||||||
msg("- entitywipe");
|
|
||||||
msg("- nonuke [range] [count]");
|
|
||||||
msg("- explosives [radius]");
|
|
||||||
msg("- unsafeenchs");
|
|
||||||
msg("- bells");
|
|
||||||
msg("- armorstands");
|
|
||||||
msg("- structureblocks");
|
|
||||||
msg("- jigsaws");
|
|
||||||
msg("- grindstones");
|
|
||||||
msg("- jukeboxes");
|
|
||||||
msg("- spawners");
|
|
||||||
msg("- 4chan");
|
|
||||||
msg("- beehives");
|
|
||||||
msg("- respawnanchors");
|
|
||||||
msg("- autotp");
|
|
||||||
msg("- autoclear");
|
|
||||||
msg("- minecarts");
|
|
||||||
msg("- landmines");
|
|
||||||
msg("- mp44");
|
|
||||||
msg("- tossmob");
|
|
||||||
msg("- gravity");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,6 +282,16 @@ public class Command_toggle extends FreedomCommand
|
|||||||
toggle("Block gravity is", ConfigEntry.ALLOW_GRAVITY);
|
toggle("Block gravity is", ConfigEntry.ALLOW_GRAVITY);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
msg("Available toggles: ");
|
||||||
|
for (String toggle : toggles)
|
||||||
|
{
|
||||||
|
msg("- " + toggle);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,9 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import com.earth2me.essentials.User;
|
||||||
import java.util.List;
|
|
||||||
import me.totalfreedom.totalfreedommod.banning.Ban;
|
|
||||||
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
import me.totalfreedom.totalfreedommod.player.PlayerData;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.apache.commons.lang.StringUtils;
|
|
||||||
import org.bukkit.command.Command;
|
import org.bukkit.command.Command;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -22,20 +19,33 @@ public class Command_unban extends FreedomCommand
|
|||||||
if (args.length > 0)
|
if (args.length > 0)
|
||||||
{
|
{
|
||||||
String username;
|
String username;
|
||||||
final PlayerData entry = plugin.pl.getData(args[0]);
|
String ip;
|
||||||
|
|
||||||
if (entry == null)
|
// Gets the IP using Essentials data if available
|
||||||
|
if (plugin.esb.isEnabled() && plugin.esb.getEssentialsUser(args[0]) != null)
|
||||||
{
|
{
|
||||||
msg("Can't find that user. If target is not logged in, make sure that you spelled the name exactly.");
|
User essUser = plugin.esb.getEssentialsUser(args[0]);
|
||||||
return true;
|
//
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
username = entry.getName();
|
|
||||||
final List<String> ips = new ArrayList<>(entry.getIps());
|
|
||||||
|
|
||||||
FUtil.adminAction(sender.getName(), "Unbanning " + username, true);
|
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.getByUsername(username));
|
||||||
|
plugin.bm.removeBan(plugin.bm.getByIp(ip));
|
||||||
|
msg(username + " has been unbanned along with the IP: " + ip);
|
||||||
|
|
||||||
if (args.length >= 2)
|
if (args.length >= 2)
|
||||||
{
|
{
|
||||||
@ -45,20 +55,6 @@ public class Command_unban extends FreedomCommand
|
|||||||
msg("Restored edits for: " + username);
|
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 true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.apache.commons.lang.ArrayUtils;
|
import org.apache.commons.lang.ArrayUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -53,25 +56,28 @@ public class Command_warn extends FreedomCommand
|
|||||||
|
|
||||||
String warnReason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
|
String warnReason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
|
||||||
player.sendTitle(ChatColor.RED + "You've been warned.", ChatColor.YELLOW + "Reason: " + warnReason, 20, 100, 60);
|
player.sendTitle(ChatColor.RED + "You've been warned.", ChatColor.YELLOW + "Reason: " + warnReason, 20, 100, 60);
|
||||||
msg(ChatColor.GREEN + "You have successfully warned " + player.getName());
|
msg(player, ChatColor.RED + "[WARNING] You received a warning from " + sender.getName() + ": " + warnReason);
|
||||||
|
plugin.pl.getPlayer(player).incrementWarnings(quiet);
|
||||||
|
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.WARN, warnReason));
|
||||||
|
|
||||||
if (quiet)
|
if (quiet)
|
||||||
{
|
{
|
||||||
msg("Warned " + player.getName() + " quietly");
|
msg("You have successfully warned " + player.getName() + " quietly.");
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String adminNotice = ChatColor.RED +
|
||||||
|
sender.getName() +
|
||||||
|
" - " +
|
||||||
|
"Warning: " +
|
||||||
|
player.getName() +
|
||||||
|
" - Reason: " +
|
||||||
|
ChatColor.YELLOW +
|
||||||
|
warnReason;
|
||||||
|
plugin.al.messageAllAdmins(adminNotice);
|
||||||
|
|
||||||
msg(player, ChatColor.RED + "[WARNING] You received a warning from " + sender.getName() + ": " + warnReason);
|
msg("You have successfully warned " + player.getName() + ".");
|
||||||
String adminNotice = ChatColor.RED +
|
}
|
||||||
sender.getName() +
|
|
||||||
" - " +
|
|
||||||
"Warning: " +
|
|
||||||
player.getName() +
|
|
||||||
" - Reason: " +
|
|
||||||
ChatColor.YELLOW +
|
|
||||||
warnReason;
|
|
||||||
plugin.al.messageAllAdmins(adminNotice);
|
|
||||||
plugin.pl.getPlayer(player).incrementWarnings();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -3,6 +3,8 @@ package me.totalfreedom.totalfreedommod.command;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -15,14 +17,6 @@ import org.bukkit.entity.Player;
|
|||||||
public class Command_wildcard extends FreedomCommand
|
public class Command_wildcard extends FreedomCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
public static final List<String> BLOCKED_COMMANDS = Arrays.asList(
|
|
||||||
"wildcard",
|
|
||||||
"gtfo",
|
|
||||||
"doom",
|
|
||||||
"slconfig",
|
|
||||||
"smite"
|
|
||||||
);
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||||
{
|
{
|
||||||
@ -52,7 +46,7 @@ public class Command_wildcard extends FreedomCommand
|
|||||||
aliases = Arrays.asList(fCmd.getAliases().split(","));
|
aliases = Arrays.asList(fCmd.getAliases().split(","));
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String blockedCommand : BLOCKED_COMMANDS)
|
for (String blockedCommand : ConfigEntry.WILDCARD_BLOCKED_COMMANDS.getStringList())
|
||||||
{
|
{
|
||||||
if (blockedCommand.equals(args[0].toLowerCase()) || aliases.contains(blockedCommand))
|
if (blockedCommand.equals(args[0].toLowerCase()) || aliases.contains(blockedCommand))
|
||||||
{
|
{
|
||||||
|
@ -1,37 +0,0 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
|
||||||
|
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.ADMIN, source = SourceType.ONLY_CONSOLE)
|
|
||||||
@CommandParameters(description = "Wipes the CoreProtect data for the flatlands", usage = "/<command>")
|
|
||||||
public class Command_wipecoreprotectdata extends FreedomCommand
|
|
||||||
{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
|
||||||
{
|
|
||||||
if (!plugin.cpb.isEnabled())
|
|
||||||
{
|
|
||||||
msg("CoreProtect is not enabled on this server");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
FUtil.adminAction(sender.getName(), "Wiping CoreProtect data for the flatlands", true);
|
|
||||||
|
|
||||||
new BukkitRunnable()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
plugin.cpb.clearDatabase(plugin.wm.flatlands.getWorld());
|
|
||||||
}
|
|
||||||
}.runTaskAsynchronously(plugin);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,53 +0,0 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
|
||||||
|
|
||||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true)
|
|
||||||
@CommandParameters(description = "Wipe the flatlands map. Requires manual restart after command is used.", usage = "/<command>")
|
|
||||||
public class Command_wipeflatlands extends FreedomCommand
|
|
||||||
{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
|
||||||
{
|
|
||||||
plugin.sf.setSavedFlag("do_wipe_flatlands", true);
|
|
||||||
|
|
||||||
if (!ConfigEntry.FLATLANDS_GENERATE.getBoolean())
|
|
||||||
{
|
|
||||||
msg("Flatlands generation is disabled, therefore it cannot be wiped.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
FUtil.bcastMsg("Server is going offline for flatlands wipe.", ChatColor.GRAY);
|
|
||||||
|
|
||||||
World flatlands = plugin.wm.flatlands.getWorld();
|
|
||||||
|
|
||||||
if (plugin.wgb.isEnabled())
|
|
||||||
{
|
|
||||||
plugin.wgb.wipeRegions(flatlands);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Player player : server.getOnlinePlayers())
|
|
||||||
{
|
|
||||||
player.kickPlayer("Server is going offline for flatlands wipe, come back in a few minutes.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (plugin.cpb.isEnabled())
|
|
||||||
{
|
|
||||||
plugin.cpb.clearDatabase(flatlands, true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
server.shutdown();
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,40 +0,0 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
|
||||||
|
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true)
|
|
||||||
@CommandParameters(description = "Wipes all logged punishments or punishments for a specific user.", usage = "/<command> <username | -a>")
|
|
||||||
public class Command_wipepunishments extends FreedomCommand
|
|
||||||
{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean run(final CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (args.length < 1)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args[0].equalsIgnoreCase("-a"))
|
|
||||||
{
|
|
||||||
FUtil.adminAction(sender.getName(), "Wiping the punishment history", true);
|
|
||||||
|
|
||||||
msg("Wiped " + plugin.pul.clear() + " punishments.");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
String username = args[0];
|
|
||||||
|
|
||||||
FUtil.adminAction(sender.getName(), "Wiping the punishment history for " + username, true);
|
|
||||||
|
|
||||||
msg("Wiped " + plugin.pul.clear(username) + " punishments for " + username + ".");
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,73 +0,0 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE)
|
|
||||||
@CommandParameters(description = "Wipe all WorldGuard regions for a specified world.", usage = "/<command> <world>")
|
|
||||||
public class Command_wiperegions extends FreedomCommand
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
|
||||||
{
|
|
||||||
if (!plugin.wgb.isEnabled())
|
|
||||||
{
|
|
||||||
msg("WorldGuard is not enabled.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.length != 1)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
World world = server.getWorld(args[0]);
|
|
||||||
if (world == null)
|
|
||||||
{
|
|
||||||
msg("There is no world named \"" + args[0] + "\"", ChatColor.RED);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
int regionsWiped = plugin.wgb.wipeRegions(world);
|
|
||||||
|
|
||||||
if (regionsWiped != 0)
|
|
||||||
{
|
|
||||||
FUtil.adminAction(sender.getName(), "Wiped all regions in " + world.getName(), true);
|
|
||||||
msg("Wiped " + regionsWiped + " regions in " + world.getName());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
msg(ChatColor.RED + "No regions were found in \"" + world.getName() + "\"");
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<String> getAllWorldNames()
|
|
||||||
{
|
|
||||||
List<String> names = new ArrayList<>();
|
|
||||||
for (World world : server.getWorlds())
|
|
||||||
{
|
|
||||||
names.add(world.getName());
|
|
||||||
}
|
|
||||||
return names;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<String> getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args)
|
|
||||||
{
|
|
||||||
if (args.length == 1)
|
|
||||||
{
|
|
||||||
return getAllWorldNames();
|
|
||||||
}
|
|
||||||
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,34 +0,0 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
|
||||||
|
|
||||||
import com.earth2me.essentials.Essentials;
|
|
||||||
import java.io.File;
|
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_CONSOLE, blockHostConsole = true)
|
|
||||||
@CommandParameters(description = "Removes all Essentials warps", usage = "/<command>")
|
|
||||||
public class Command_wipewarps extends FreedomCommand
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
|
||||||
{
|
|
||||||
if (!plugin.esb.isEnabled())
|
|
||||||
{
|
|
||||||
msg("Essentials is not enabled on this server.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
Essentials essentials = plugin.esb.getEssentialsPlugin();
|
|
||||||
File warps = new File(essentials.getDataFolder(), "warps");
|
|
||||||
FUtil.adminAction(sender.getName(), "Wiping Essentials warps", true);
|
|
||||||
FUtil.deleteFolder(warps);
|
|
||||||
//noinspection ResultOfMethodCallIgnored
|
|
||||||
warps.mkdir();
|
|
||||||
essentials.reload();
|
|
||||||
msg("All warps deleted.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
@ -83,6 +83,7 @@ public enum ConfigEntry
|
|||||||
DISCORD_NEW_ADMIN_ROLE_ID(String.class, "discord.admin_role_id"),
|
DISCORD_NEW_ADMIN_ROLE_ID(String.class, "discord.admin_role_id"),
|
||||||
DISCORD_SENIOR_ADMIN_ROLE_ID(String.class, "discord.senior_admin_role_id"),
|
DISCORD_SENIOR_ADMIN_ROLE_ID(String.class, "discord.senior_admin_role_id"),
|
||||||
DISCORD_DEVELOPER_ROLE_ID(String.class, "discord.developer_role_id"),
|
DISCORD_DEVELOPER_ROLE_ID(String.class, "discord.developer_role_id"),
|
||||||
|
DISCORD_ASSISTANT_EXECUTIVE_ROLE_ID(String.class, "discord.assistant_executive_role_id"),
|
||||||
DISCORD_EXECUTIVE_ROLE_ID(String.class, "discord.executive_role_id"),
|
DISCORD_EXECUTIVE_ROLE_ID(String.class, "discord.executive_role_id"),
|
||||||
DISCORD_SERVER_OWNER_ROLE_ID(String.class, "discord.server_owner_role_id"),
|
DISCORD_SERVER_OWNER_ROLE_ID(String.class, "discord.server_owner_role_id"),
|
||||||
//
|
//
|
||||||
@ -154,13 +155,18 @@ public enum ConfigEntry
|
|||||||
EXPLOSIVE_RADIUS(Double.class, "explosive_radius"),
|
EXPLOSIVE_RADIUS(Double.class, "explosive_radius"),
|
||||||
FREECAM_TRIGGER_COUNT(Integer.class, "freecam_trigger_count"),
|
FREECAM_TRIGGER_COUNT(Integer.class, "freecam_trigger_count"),
|
||||||
SERVICE_CHECKER_URL(String.class, "service_checker_url"),
|
SERVICE_CHECKER_URL(String.class, "service_checker_url"),
|
||||||
BLOCKED_COMMANDS(List.class, "blocked_commands"),
|
BLOCKED_COMMANDS(List.class, "blocked_commands.global"),
|
||||||
|
MUTED_BLOCKED_COMMANDS(List.class, "blocked_commands.muted"),
|
||||||
|
WILDCARD_BLOCKED_COMMANDS(List.class, "blocked_commands.wildcard"),
|
||||||
|
FORBIDDEN_WORDS(List.class, "forbidden_words"),
|
||||||
HOST_SENDER_NAMES(List.class, "host_sender_names"),
|
HOST_SENDER_NAMES(List.class, "host_sender_names"),
|
||||||
FAMOUS_PLAYERS(List.class, "famous_players"),
|
FAMOUS_PLAYERS(List.class, "famous_players"),
|
||||||
ADMIN_ONLY_MODE(Boolean.class, "admin_only_mode"),
|
ADMIN_ONLY_MODE(Boolean.class, "admin_only_mode"),
|
||||||
ADMIN_INFO(List.class, "admininfo"),
|
ADMIN_INFO(List.class, "admininfo"),
|
||||||
VOTING_INFO(List.class, "votinginfo"),
|
VOTING_INFO(List.class, "votinginfo"),
|
||||||
MASTER_BUILDER_INFO(List.class, "masterbuilderinfo"),
|
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"),
|
AUTO_ENTITY_WIPE(Boolean.class, "auto_wipe"),
|
||||||
TOGGLE_CHAT(Boolean.class, "toggle_chat"),
|
TOGGLE_CHAT(Boolean.class, "toggle_chat"),
|
||||||
DEVELOPER_MODE(Boolean.class, "developer_mode"),
|
DEVELOPER_MODE(Boolean.class, "developer_mode"),
|
||||||
|
@ -119,6 +119,11 @@ public class DiscordToAdminChatListener extends ListenerAdapter
|
|||||||
{
|
{
|
||||||
return Title.EXECUTIVE;
|
return Title.EXECUTIVE;
|
||||||
}
|
}
|
||||||
|
// Assistant Executives
|
||||||
|
else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_ASSISTANT_EXECUTIVE_ROLE_ID.getString())))
|
||||||
|
{
|
||||||
|
return Title.ASSTEXEC;
|
||||||
|
}
|
||||||
// Senior Admins
|
// Senior Admins
|
||||||
else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_SENIOR_ADMIN_ROLE_ID.getString())))
|
else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_SENIOR_ADMIN_ROLE_ID.getString())))
|
||||||
{
|
{
|
||||||
|
@ -84,6 +84,11 @@ public class DiscordToMinecraftListener extends ListenerAdapter
|
|||||||
{
|
{
|
||||||
return Title.EXECUTIVE.getColoredTag();
|
return Title.EXECUTIVE.getColoredTag();
|
||||||
}
|
}
|
||||||
|
// Assistant Executives
|
||||||
|
else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_ASSISTANT_EXECUTIVE_ROLE_ID.getString())))
|
||||||
|
{
|
||||||
|
return Title.ASSTEXEC.getColoredTag();
|
||||||
|
}
|
||||||
// Senior Admins
|
// Senior Admins
|
||||||
else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_SENIOR_ADMIN_ROLE_ID.getString())))
|
else if (member.getRoles().contains(server.getRoleById(ConfigEntry.DISCORD_SENIOR_ADMIN_ROLE_ID.getString())))
|
||||||
{
|
{
|
||||||
|
@ -128,7 +128,7 @@ public class ItemFun extends FreedomService
|
|||||||
|
|
||||||
LivingEntity livingEntity = (LivingEntity)event.getRightClicked();
|
LivingEntity livingEntity = (LivingEntity)event.getRightClicked();
|
||||||
EntityType entityType = livingEntity.getType();
|
EntityType entityType = livingEntity.getType();
|
||||||
if (!(entityType == fPlayer.mobThrowerCreature()))
|
if (entityType != fPlayer.mobThrowerCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -304,6 +304,11 @@ public class ItemFun extends FreedomService
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
// Do nothing
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ public class Landminer extends FreedomService
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(player.getLocation().distanceSquared(location) <= (landmine.radius * landmine.radius)))
|
if (player.getLocation().distanceSquared(location) > (landmine.radius * landmine.radius))
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -79,17 +79,24 @@ public class Module_list extends HTTPDModule
|
|||||||
switch (admin.getRank())
|
switch (admin.getRank())
|
||||||
{
|
{
|
||||||
case ADMIN:
|
case ADMIN:
|
||||||
|
{
|
||||||
admins.add(player.getName());
|
admins.add(player.getName());
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case SENIOR_ADMIN:
|
case SENIOR_ADMIN:
|
||||||
|
{
|
||||||
senioradmins.add(player.getName());
|
senioradmins.add(player.getName());
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
// Do nothing
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int count = server.getOnlinePlayers().size() - AdminList.vanished.size();
|
|
||||||
|
|
||||||
// for future refernce - any multi-worded ranks are to be delimited by underscores in the json; eg. senior_admins
|
// for future refernce - any multi-worded ranks are to be delimited by underscores in the json; eg. senior_admins
|
||||||
responseObject.put("owners", owners);
|
responseObject.put("owners", owners);
|
||||||
responseObject.put("executives", executives);
|
responseObject.put("executives", executives);
|
||||||
@ -99,7 +106,7 @@ public class Module_list extends HTTPDModule
|
|||||||
responseObject.put("master_builders", masterbuilders);
|
responseObject.put("master_builders", masterbuilders);
|
||||||
responseObject.put("operators", operators);
|
responseObject.put("operators", operators);
|
||||||
responseObject.put("imposters", imposters);
|
responseObject.put("imposters", imposters);
|
||||||
responseObject.put("online", count < 0 ? 0 : count);
|
responseObject.put("online", FUtil.getFakePlayerCount());
|
||||||
responseObject.put("max", server.getMaxPlayers());
|
responseObject.put("max", server.getMaxPlayers());
|
||||||
|
|
||||||
final NanoHTTPD.Response response = new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK, NanoHTTPD.MIME_JSON, responseObject.toString());
|
final NanoHTTPD.Response response = new NanoHTTPD.Response(NanoHTTPD.Response.Status.OK, NanoHTTPD.MIME_JSON, responseObject.toString());
|
||||||
|
@ -51,11 +51,20 @@ public class Module_players extends HTTPDModule
|
|||||||
switch (admin.getRank())
|
switch (admin.getRank())
|
||||||
{
|
{
|
||||||
case ADMIN:
|
case ADMIN:
|
||||||
|
{
|
||||||
admins.add(username);
|
admins.add(username);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case SENIOR_ADMIN:
|
case SENIOR_ADMIN:
|
||||||
|
{
|
||||||
senioradmins.add(username);
|
senioradmins.add(username);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
// Do nothing
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package me.totalfreedom.totalfreedommod.player;
|
package me.totalfreedom.totalfreedommod.player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
||||||
import me.totalfreedom.totalfreedommod.caging.CageData;
|
import me.totalfreedom.totalfreedommod.caging.CageData;
|
||||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
@ -16,8 +14,12 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class FPlayer
|
public class FPlayer
|
||||||
{
|
{
|
||||||
|
|
||||||
public static final long AUTO_PURGE_TICKS = 5L * 60L * 20L;
|
public static final long AUTO_PURGE_TICKS = 5L * 60L * 20L;
|
||||||
|
|
||||||
|
|
||||||
@ -247,7 +249,7 @@ public class FPlayer
|
|||||||
public void startArrowShooter(TotalFreedomMod plugin)
|
public void startArrowShooter(TotalFreedomMod plugin)
|
||||||
{
|
{
|
||||||
this.stopArrowShooter();
|
this.stopArrowShooter();
|
||||||
this.mp44ScheduleTask = new ArrowShooter(this.player).runTaskTimer(plugin, 1L, 1L);
|
this.mp44ScheduleTask = new ArrowShooter(getPlayer()).runTaskTimer(plugin, 1L, 1L);
|
||||||
this.mp44Firing = true;
|
this.mp44Firing = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -429,14 +431,19 @@ public class FPlayer
|
|||||||
this.warningCount = warningCount;
|
this.warningCount = warningCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void incrementWarnings()
|
public void incrementWarnings(boolean quiet)
|
||||||
{
|
{
|
||||||
this.warningCount++;
|
this.warningCount++;
|
||||||
|
|
||||||
if (this.warningCount % 2 == 0)
|
if (this.warningCount % 2 == 0)
|
||||||
{
|
{
|
||||||
Player p = getPlayer();
|
Player p = getPlayer();
|
||||||
p.getWorld().strikeLightning(p.getLocation());
|
|
||||||
|
if (!quiet)
|
||||||
|
{
|
||||||
|
p.getWorld().strikeLightning(p.getLocation());
|
||||||
|
}
|
||||||
|
|
||||||
FUtil.playerMsg(p, ChatColor.RED + "You have been warned at least twice now, make sure to read the rules at " + ConfigEntry.SERVER_BAN_URL.getString());
|
FUtil.playerMsg(p, ChatColor.RED + "You have been warned at least twice now, make sure to read the rules at " + ConfigEntry.SERVER_BAN_URL.getString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -704,8 +711,11 @@ public class FPlayer
|
|||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
Arrow shot = player.launchProjectile(Arrow.class);
|
if (player != null)
|
||||||
shot.setVelocity(shot.getVelocity().multiply(2.0));
|
{
|
||||||
|
Arrow shot = player.launchProjectile(Arrow.class);
|
||||||
|
shot.setVelocity(shot.getVelocity().multiply(2.0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -7,5 +7,11 @@ public enum PunishmentType
|
|||||||
KICK,
|
KICK,
|
||||||
TEMPBAN,
|
TEMPBAN,
|
||||||
BAN,
|
BAN,
|
||||||
DOOM
|
DOOM,
|
||||||
|
WARN,
|
||||||
|
CAGE,
|
||||||
|
BLOCKEDIT,
|
||||||
|
BLOCKPVP,
|
||||||
|
BLOCKCMD,
|
||||||
|
ORBIT
|
||||||
}
|
}
|
||||||
|
@ -227,7 +227,7 @@ public class Shop extends FreedomService
|
|||||||
ItemStack itemStack = new ItemStack(Material.BLAZE_ROD);
|
ItemStack itemStack = new ItemStack(Material.BLAZE_ROD);
|
||||||
ItemMeta itemMeta = itemStack.getItemMeta();
|
ItemMeta itemMeta = itemStack.getItemMeta();
|
||||||
assert itemMeta != null;
|
assert itemMeta != null;
|
||||||
itemMeta.setDisplayName(FUtil.colorize("&bL&3i&bg&3h&bt&3i&bn&3g &b&bR&3o&bd"));
|
itemMeta.setDisplayName(FUtil.colorize("&bL&3i&bg&3h&bt&3n&bi&3n&bg &3R&bo&3d"));
|
||||||
itemMeta.setLore(Arrays.asList(ChatColor.AQUA + "Strike others down with the power of lightning.", ChatColor.RED + ChatColor.ITALIC.toString() + "The classic way to exterminate annoyances."));
|
itemMeta.setLore(Arrays.asList(ChatColor.AQUA + "Strike others down with the power of lightning.", ChatColor.RED + ChatColor.ITALIC.toString() + "The classic way to exterminate annoyances."));
|
||||||
itemMeta.addEnchant(Enchantment.CHANNELING, 1, false);
|
itemMeta.addEnchant(Enchantment.CHANNELING, 1, false);
|
||||||
itemStack.setItemMeta(itemMeta);
|
itemStack.setItemMeta(itemMeta);
|
||||||
|
@ -1,33 +1,5 @@
|
|||||||
package me.totalfreedom.totalfreedommod.util;
|
package me.totalfreedom.totalfreedommod.util;
|
||||||
|
|
||||||
import java.io.BufferedReader;
|
|
||||||
import java.io.DataOutputStream;
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.io.InputStreamReader;
|
|
||||||
import java.lang.reflect.Field;
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.URL;
|
|
||||||
import java.text.ParseException;
|
|
||||||
import java.text.SimpleDateFormat;
|
|
||||||
import java.time.Instant;
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Calendar;
|
|
||||||
import java.util.Date;
|
|
||||||
import java.util.GregorianCalendar;
|
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.Locale;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Set;
|
|
||||||
import java.util.SplittableRandom;
|
|
||||||
import java.util.TimeZone;
|
|
||||||
import java.util.UUID;
|
|
||||||
import java.util.regex.Matcher;
|
|
||||||
import java.util.regex.Pattern;
|
|
||||||
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
||||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
@ -48,6 +20,18 @@ import org.bukkit.inventory.meta.ItemMeta;
|
|||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
import org.json.simple.JSONArray;
|
import org.json.simple.JSONArray;
|
||||||
|
|
||||||
|
import java.io.*;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.net.HttpURLConnection;
|
||||||
|
import java.net.URL;
|
||||||
|
import java.text.ParseException;
|
||||||
|
import java.text.SimpleDateFormat;
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.util.*;
|
||||||
|
import java.util.regex.Matcher;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import static org.bukkit.Bukkit.getServer;
|
import static org.bukkit.Bukkit.getServer;
|
||||||
|
|
||||||
public class FUtil
|
public class FUtil
|
||||||
@ -70,13 +54,12 @@ public class FUtil
|
|||||||
"d018f2b8-ce60-4672-a45f-e580e0331299", // speednt
|
"d018f2b8-ce60-4672-a45f-e580e0331299", // speednt
|
||||||
"458de06f-36a5-4e1b-aaa6-ec1d1751c5b6", // SupItsDillon
|
"458de06f-36a5-4e1b-aaa6-ec1d1751c5b6", // SupItsDillon
|
||||||
"c8e5af82-6aba-4dd7-83e8-474381380cc9", // Paldiu
|
"c8e5af82-6aba-4dd7-83e8-474381380cc9", // Paldiu
|
||||||
"38ea7c82-7bdc-4f48-b7fd-0e93fc26813d", // AwesomePinch
|
|
||||||
"ba5aafba-9012-418f-9819-a7020d591068", // TFTWPhoenix
|
"ba5aafba-9012-418f-9819-a7020d591068", // TFTWPhoenix
|
||||||
"d6dd9740-40db-45f5-ab16-4ee16a633009", // Abhi
|
"d6dd9740-40db-45f5-ab16-4ee16a633009", // Abhi
|
||||||
"2e06e049-24c8-42e4-8bcf-d35372af31e6", // unsuperiordev
|
"2e06e049-24c8-42e4-8bcf-d35372af31e6", // NotInSync
|
||||||
"f97c0d7b-6413-4558-a409-88f09a8f9adb" // videogamesm12
|
"f97c0d7b-6413-4558-a409-88f09a8f9adb" // videogamesm12
|
||||||
);
|
);
|
||||||
public static final List<String> DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "AwesomePinch", "TFTWPhoenix","abhithedev", "unsuperiordev", "videogamesm12");
|
public static final List<String> DEVELOPER_NAMES = Arrays.asList("Madgeek1450", "Prozza", "WickedGamingUK", "Wild1145", "aggelosQQ", "scripthead", "CoolJWB", "elmon_", "speednt", "SupItsDillon", "Paldiu", "TFTWPhoenix", "abhithedev", "NotInSync", "videogamesm12");
|
||||||
public static final Map<String, ChatColor> CHAT_COLOR_NAMES = new HashMap<>();
|
public static final Map<String, ChatColor> CHAT_COLOR_NAMES = new HashMap<>();
|
||||||
public static final List<ChatColor> CHAT_COLOR_POOL = Arrays.asList(
|
public static final List<ChatColor> CHAT_COLOR_POOL = Arrays.asList(
|
||||||
ChatColor.DARK_RED,
|
ChatColor.DARK_RED,
|
||||||
@ -274,7 +257,7 @@ public class FUtil
|
|||||||
public static Response sendRequest(String endpoint, String method, List<String> headers, String body) throws IOException
|
public static Response sendRequest(String endpoint, String method, List<String> headers, String body) throws IOException
|
||||||
{
|
{
|
||||||
URL url = new URL(endpoint);
|
URL url = new URL(endpoint);
|
||||||
HttpURLConnection connection = (HttpURLConnection)url.openConnection();
|
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
|
||||||
|
|
||||||
connection.setRequestMethod(method);
|
connection.setRequestMethod(method);
|
||||||
|
|
||||||
@ -393,7 +376,8 @@ public class FUtil
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final List<String> regxList = new ArrayList<String>(){{
|
private static final List<String> regxList = new ArrayList<String>()
|
||||||
|
{{
|
||||||
add("y");
|
add("y");
|
||||||
add("mo");
|
add("mo");
|
||||||
add("w");
|
add("w");
|
||||||
@ -403,11 +387,13 @@ public class FUtil
|
|||||||
add("s");
|
add("s");
|
||||||
}};
|
}};
|
||||||
|
|
||||||
private static long a(String parse) {
|
private static long a(String parse)
|
||||||
|
{
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
||||||
regxList.forEach(obj -> {
|
regxList.forEach(obj -> {
|
||||||
if (parse.endsWith(obj)) {
|
if (parse.endsWith(obj))
|
||||||
|
{
|
||||||
sb.append(parse.split(obj)[0]);
|
sb.append(parse.split(obj)[0]);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -415,7 +401,8 @@ public class FUtil
|
|||||||
return Long.parseLong(sb.toString());
|
return Long.parseLong(sb.toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static TimeUnit verify(String arg) {
|
private static TimeUnit verify(String arg)
|
||||||
|
{
|
||||||
TimeUnit unit = null;
|
TimeUnit unit = null;
|
||||||
for (String c : regxList)
|
for (String c : regxList)
|
||||||
{
|
{
|
||||||
@ -461,6 +448,16 @@ public class FUtil
|
|||||||
return Date.from(instant);
|
return Date.from(instant);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static long parseLongOffset(long unix, String... time)
|
||||||
|
{
|
||||||
|
Instant instant = Instant.ofEpochMilli(unix);
|
||||||
|
for (String arg : time)
|
||||||
|
{
|
||||||
|
instant = instant.plusSeconds(verify(arg).get() * a(arg));
|
||||||
|
}
|
||||||
|
return FUtil.getUnixTime(Date.from(instant));
|
||||||
|
}
|
||||||
|
|
||||||
public static String playerListToNames(Set<OfflinePlayer> players)
|
public static String playerListToNames(Set<OfflinePlayer> players)
|
||||||
{
|
{
|
||||||
List<String> names = new ArrayList<>();
|
List<String> names = new ArrayList<>();
|
||||||
@ -553,7 +550,7 @@ public class FUtil
|
|||||||
{
|
{
|
||||||
Field field = checkClass.getDeclaredField(name);
|
Field field = checkClass.getDeclaredField(name);
|
||||||
field.setAccessible(true);
|
field.setAccessible(true);
|
||||||
return (T)field.get(from);
|
return (T) field.get(from);
|
||||||
|
|
||||||
}
|
}
|
||||||
catch (NoSuchFieldException | IllegalAccessException ignored)
|
catch (NoSuchFieldException | IllegalAccessException ignored)
|
||||||
@ -635,7 +632,7 @@ public class FUtil
|
|||||||
public static int randomInteger(int min, int max)
|
public static int randomInteger(int min, int max)
|
||||||
{
|
{
|
||||||
int range = max - min + 1;
|
int range = max - min + 1;
|
||||||
return (int)(Math.random() * range) + min;
|
return (int) (Math.random() * range) + min;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String randomString(int length)
|
public static String randomString(int length)
|
||||||
@ -773,7 +770,7 @@ public class FUtil
|
|||||||
{
|
{
|
||||||
c1values[i] = Math.round(c1values[i] + factor * (c2values[i] - c1values[i]));
|
c1values[i] = Math.round(c1values[i] + factor * (c2values[i] - c1values[i]));
|
||||||
}
|
}
|
||||||
return Color.fromRGB((int)c1values[0], (int)c1values[1], (int)c1values[2]);
|
return Color.fromRGB((int) c1values[0], (int) c1values[1], (int) c1values[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static boolean isValidIPv4(String ip)
|
public static boolean isValidIPv4(String ip)
|
||||||
@ -838,8 +835,22 @@ public class FUtil
|
|||||||
}.runTaskLater(TotalFreedomMod.getPlugin(), delay);
|
}.runTaskLater(TotalFreedomMod.getPlugin(), delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int getFakePlayerCount()
|
||||||
|
{
|
||||||
|
int i = TotalFreedomMod.getPlugin().al.vanished.size();
|
||||||
|
for (String name : TotalFreedomMod.getPlugin().al.vanished)
|
||||||
|
{
|
||||||
|
if (Bukkit.getPlayer(name) == null)
|
||||||
|
{
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return getServer().getOnlinePlayers().size() - i;
|
||||||
|
}
|
||||||
|
|
||||||
public static class PaginationList<T> extends ArrayList<T>
|
public static class PaginationList<T> extends ArrayList<T>
|
||||||
{
|
{
|
||||||
|
|
||||||
private final int epp;
|
private final int epp;
|
||||||
|
|
||||||
public PaginationList(int epp)
|
public PaginationList(int epp)
|
||||||
@ -857,7 +868,7 @@ public class FUtil
|
|||||||
|
|
||||||
public int getPageCount()
|
public int getPageCount()
|
||||||
{
|
{
|
||||||
return (int)Math.ceil((double)size() / (double)epp);
|
return (int) Math.ceil((double) size() / (double) epp);
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<T> getPage(int page)
|
public List<T> getPage(int page)
|
||||||
|
@ -1,102 +0,0 @@
|
|||||||
package me.totalfreedom.totalfreedommod.world;
|
|
||||||
|
|
||||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.WorldCreator;
|
|
||||||
import org.bukkit.WorldType;
|
|
||||||
import org.bukkit.block.Block;
|
|
||||||
import org.bukkit.block.BlockFace;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
public final class HubWorld extends CustomWorld
|
|
||||||
{
|
|
||||||
|
|
||||||
private static final String GENERATION_PARAMETERS = ConfigEntry.FLATLANDS_GENERATE_PARAMS.getString();
|
|
||||||
//
|
|
||||||
private WorldWeather weather = WorldWeather.OFF;
|
|
||||||
private WorldTime time = WorldTime.INHERIT;
|
|
||||||
|
|
||||||
public HubWorld()
|
|
||||||
{
|
|
||||||
super("hubworld");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void sendToWorld(Player player)
|
|
||||||
{
|
|
||||||
super.sendToWorld(player);
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: Replace instances of org.bukkit.Sign with a non deprecated version. This might include more boilerplate.
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
@Override
|
|
||||||
protected World generateWorld()
|
|
||||||
{
|
|
||||||
final WorldCreator worldCreator = new WorldCreator(getName());
|
|
||||||
worldCreator.generateStructures(false);
|
|
||||||
worldCreator.type(WorldType.NORMAL);
|
|
||||||
worldCreator.environment(World.Environment.NORMAL);
|
|
||||||
worldCreator.generator(new CleanroomChunkGenerator(GENERATION_PARAMETERS));
|
|
||||||
|
|
||||||
final World world = server.createWorld(worldCreator);
|
|
||||||
|
|
||||||
assert world != null;
|
|
||||||
world.setSpawnFlags(false, false);
|
|
||||||
world.setSpawnLocation(0, 50, 0);
|
|
||||||
|
|
||||||
final Block welcomeSignBlock = world.getBlockAt(0, 50, 0);
|
|
||||||
welcomeSignBlock.setType(Material.OAK_SIGN);
|
|
||||||
org.bukkit.block.Sign welcomeSign = (org.bukkit.block.Sign)welcomeSignBlock.getState();
|
|
||||||
|
|
||||||
org.bukkit.material.Sign signData = (org.bukkit.material.Sign)welcomeSign.getData();
|
|
||||||
signData.setFacingDirection(BlockFace.NORTH);
|
|
||||||
|
|
||||||
welcomeSign.setLine(0, ChatColor.GREEN + "Hub World");
|
|
||||||
welcomeSign.setLine(1, ChatColor.DARK_GRAY + "---");
|
|
||||||
welcomeSign.setLine(2, ChatColor.YELLOW + "Spawn Point");
|
|
||||||
welcomeSign.setLine(3, ChatColor.DARK_GRAY + "---");
|
|
||||||
welcomeSign.update();
|
|
||||||
|
|
||||||
plugin.gr.commitGameRules();
|
|
||||||
return world;
|
|
||||||
}
|
|
||||||
|
|
||||||
public WorldWeather getWeatherMode()
|
|
||||||
{
|
|
||||||
return weather;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setWeatherMode(final WorldWeather weatherMode)
|
|
||||||
{
|
|
||||||
this.weather = weatherMode;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
weatherMode.setWorldToWeather(getWorld());
|
|
||||||
}
|
|
||||||
catch (Exception ignored)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public WorldTime getTimeOfDay()
|
|
||||||
{
|
|
||||||
return time;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setTimeOfDay(final WorldTime timeOfDay)
|
|
||||||
{
|
|
||||||
this.time = timeOfDay;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
timeOfDay.setWorldToTime(getWorld());
|
|
||||||
}
|
|
||||||
catch (Exception ignored)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -20,14 +20,12 @@ public class WorldManager extends FreedomService
|
|||||||
public Flatlands flatlands;
|
public Flatlands flatlands;
|
||||||
public AdminWorld adminworld;
|
public AdminWorld adminworld;
|
||||||
public MasterBuilderWorld masterBuilderWorld;
|
public MasterBuilderWorld masterBuilderWorld;
|
||||||
public HubWorld hubworld;
|
|
||||||
|
|
||||||
public WorldManager()
|
public WorldManager()
|
||||||
{
|
{
|
||||||
this.flatlands = new Flatlands();
|
this.flatlands = new Flatlands();
|
||||||
this.adminworld = new AdminWorld();
|
this.adminworld = new AdminWorld();
|
||||||
this.masterBuilderWorld = new MasterBuilderWorld();
|
this.masterBuilderWorld = new MasterBuilderWorld();
|
||||||
this.hubworld = new HubWorld();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -36,7 +34,6 @@ public class WorldManager extends FreedomService
|
|||||||
flatlands.getWorld();
|
flatlands.getWorld();
|
||||||
adminworld.getWorld();
|
adminworld.getWorld();
|
||||||
masterBuilderWorld.getWorld();
|
masterBuilderWorld.getWorld();
|
||||||
hubworld.getWorld();
|
|
||||||
|
|
||||||
// Disable weather
|
// Disable weather
|
||||||
if (ConfigEntry.DISABLE_WEATHER.getBoolean())
|
if (ConfigEntry.DISABLE_WEATHER.getBoolean())
|
||||||
@ -57,7 +54,6 @@ public class WorldManager extends FreedomService
|
|||||||
flatlands.getWorld().save();
|
flatlands.getWorld().save();
|
||||||
adminworld.getWorld().save();
|
adminworld.getWorld().save();
|
||||||
masterBuilderWorld.getWorld().save();
|
masterBuilderWorld.getWorld().save();
|
||||||
hubworld.getWorld().save();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH)
|
@EventHandler(priority = EventPriority.HIGH)
|
||||||
@ -73,10 +69,6 @@ public class WorldManager extends FreedomService
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (event.getWorld().equals(hubworld.getWorld()) && hubworld.getWeatherMode() != WorldWeather.OFF)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ignored)
|
catch (Exception ignored)
|
||||||
{
|
{
|
||||||
@ -101,10 +93,6 @@ public class WorldManager extends FreedomService
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (event.getWorld().equals(hubworld.getWorld()) && hubworld.getWeatherMode() != WorldWeather.OFF)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
catch (Exception ignored)
|
catch (Exception ignored)
|
||||||
{
|
{
|
||||||
|
@ -54,7 +54,7 @@ public class WorldRestrictions extends FreedomService
|
|||||||
{
|
{
|
||||||
if (!plugin.pl.getData(player).isMasterBuilder() && plugin.pl.canManageMasterBuilders(player.getName()))
|
if (!plugin.pl.getData(player).isMasterBuilder() && plugin.pl.canManageMasterBuilders(player.getName()))
|
||||||
{
|
{
|
||||||
if (player.getWorld().equals(plugin.wm.masterBuilderWorld.getWorld()) || player.getWorld().equals(plugin.wm.hubworld.getWorld()))
|
if (player.getWorld().equals(plugin.wm.masterBuilderWorld.getWorld()))
|
||||||
{
|
{
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -35,7 +35,7 @@ server:
|
|||||||
|
|
||||||
# All players who show up as executive
|
# All players who show up as executive
|
||||||
executives: [ ]
|
executives: [ ]
|
||||||
|
|
||||||
# All players who show up as assistant executive
|
# All players who show up as assistant executive
|
||||||
assistant_executives: []
|
assistant_executives: []
|
||||||
|
|
||||||
@ -78,6 +78,8 @@ discord:
|
|||||||
senior_admin_role_id: ''
|
senior_admin_role_id: ''
|
||||||
# Developer role ID
|
# Developer role ID
|
||||||
developer_role_id: ''
|
developer_role_id: ''
|
||||||
|
# Assistant Executive role ID
|
||||||
|
assistant_executive_role_id: ''
|
||||||
# Executive Admin role ID
|
# Executive Admin role ID
|
||||||
executive_role_id: ''
|
executive_role_id: ''
|
||||||
# Owner role ID
|
# Owner role ID
|
||||||
@ -204,7 +206,7 @@ allow:
|
|||||||
fire_spread: false
|
fire_spread: false
|
||||||
fluid_spread: false
|
fluid_spread: false
|
||||||
lava_place: true
|
lava_place: true
|
||||||
lava_damage: false
|
lava_damage: true
|
||||||
water_place: true
|
water_place: true
|
||||||
tnt_minecarts: false
|
tnt_minecarts: false
|
||||||
explosions: false
|
explosions: false
|
||||||
@ -228,214 +230,243 @@ allow:
|
|||||||
auto_clear: false
|
auto_clear: false
|
||||||
gravity: false
|
gravity: false
|
||||||
|
|
||||||
# Blocked commands:
|
|
||||||
#
|
|
||||||
# How blocked commands work:
|
|
||||||
# All sections described below are delimited by colon characters.
|
|
||||||
# Make sure that you block a command by its main command name, not an alias
|
|
||||||
# as all aliases are blocked by default. Commands are case-insensitive.
|
|
||||||
#
|
|
||||||
# * The first section is a letter which indicates which rank may use this command
|
|
||||||
# Valid ranks:
|
|
||||||
# n - Nobody (Completely disabled)
|
|
||||||
# a - Admins (Console)
|
|
||||||
# s - Senior Admins (Console)
|
|
||||||
# o - Ops (Non-Ops won't be able to use it)
|
|
||||||
#
|
|
||||||
# * The second section is a letter which indicates what to do when a player executes that command.
|
|
||||||
# Valid actions:
|
|
||||||
# b - Block the command
|
|
||||||
# a - Block the command and auto-eject that player (for ops and below)
|
|
||||||
# u - Block the command and Return an "Unknown command" message (Used to hide commands)
|
|
||||||
#
|
|
||||||
# * The third section is the command to be blocked, prefixed with a slash
|
|
||||||
#
|
|
||||||
# * The fourth section is the message to send to the player when executing that command.
|
|
||||||
# This should be omitted if unwanted. ChatColors are supported with the &-key. By default
|
|
||||||
# the starting ChatColor is set to gray. You can use the default 'That command is blocked.' message
|
|
||||||
# by using a single underscore.
|
|
||||||
#
|
|
||||||
# Examples:
|
|
||||||
# - 'n:b:/mail sendall:&4You can't send mails to everyone!'
|
|
||||||
# - 's:a:/stop'
|
|
||||||
# - 'n:b:/ban:_'
|
|
||||||
#
|
|
||||||
blocked_commands:
|
blocked_commands:
|
||||||
# Core Protect Blocked and shows as an unknown command...
|
#
|
||||||
- 'a:u:/co:_'
|
# How globally blocked commands work:
|
||||||
- 'n:u:/co purge:_'
|
# All sections described below are delimited by colon characters.
|
||||||
- 'a:u:/coreprotect:_'
|
# Make sure that you block a command by its main command name, not an alias
|
||||||
- 'n:u:/coreprotect purge:_'
|
# as all aliases are blocked by default. Commands are case-insensitive.
|
||||||
- 'a:u:/core:_'
|
#
|
||||||
- 'n:u:/core purge:_'
|
# * The first section is a letter which indicates which rank may use this command
|
||||||
# Disabled commands
|
# Valid ranks:
|
||||||
- 'n:b:/essentials:_'
|
# n - Nobody (Completely disabled)
|
||||||
- 'n:b:/time:Server-side time changing is disabled. Please use /ptime to set your own personal time.'
|
# a - Admins (Console)
|
||||||
- 'n:b:/disguiseradius:_'
|
# s - Senior Admins (Console)
|
||||||
- 'n:b:/undisguiseradius:_'
|
# o - Ops (Non-Ops won't be able to use it)
|
||||||
- 'n:b:/debug:_'
|
#
|
||||||
- 'n:b:/pardon:_'
|
# * The second section is a letter which indicates what to do when a player executes that command.
|
||||||
- 'n:b:/ban-ip:_'
|
# Valid actions:
|
||||||
- 'n:b:/pardon-ip:_'
|
# b - Block the command
|
||||||
- 'n:b:/toggledownfall:_'
|
# a - Block the command and auto-eject that player (for ops and below)
|
||||||
- 'n:b:/spreadplayers:_'
|
# u - Block the command and Return an "Unknown command" message (Used to hide commands)
|
||||||
- 'n:b:/blockdata:_'
|
#
|
||||||
- 'n:b:/clearhistory:_'
|
# * The third section is the command to be blocked, prefixed with a slash
|
||||||
- 'n:b:/save-on:_'
|
#
|
||||||
- 'n:b:/save-off:_'
|
# * The fourth section is the message to send to the player when executing that command.
|
||||||
- 'n:b:/packet:_'
|
# This should be omitted if unwanted. ChatColors are supported with the &-key. By default
|
||||||
- 'n:b://eval:_'
|
# the starting ChatColor is set to gray. You can use the default 'That command is blocked.' message
|
||||||
- 'n:b:/testvote:_'
|
# by using a single underscore.
|
||||||
- 'n:b:/nvreload:_'
|
#
|
||||||
- 'n:b:/bungeeguard:_'
|
# Examples:
|
||||||
- 'n:b:/buycraft:_'
|
# - 'n:b:/mail sendall:&4You can't send mails to everyone!'
|
||||||
- 'n:b:/spigot reload:_'
|
# - 's:a:/stop'
|
||||||
# - 'n:b:/setjail:_'
|
# - 'n:b:/ban:_'
|
||||||
- 'n:b:/mail sendall:Sending mail to all players is not allowed.'
|
#
|
||||||
- 'n:b:/entitydata:_'
|
global:
|
||||||
- 'n:b:/skins:_'
|
# CoreProtect Blocked and shows as an unknown command...
|
||||||
- 'n:b:/advancement:_'
|
- 'a:u:/co:_'
|
||||||
- 'n:b:/worldborder:The worldborder does not need to be changed. This command is disabled.'
|
- 'n:u:/co purge:_'
|
||||||
- 'n:b:/defaultgamemode:The default gamemode should not be changed.'
|
- 'a:u:/coreprotect:_'
|
||||||
- 'n:b:/thread:_'
|
- 'n:u:/coreprotect purge:_'
|
||||||
- 'n:b:/stacktrace:_'
|
- 'a:u:/core:_'
|
||||||
- 'n:b:/function:_'
|
- 'n:u:/core purge:_'
|
||||||
- 'n:b:/forceload:_'
|
|
||||||
- 'n:b:/fill:_'
|
|
||||||
- 'n:b:/paper:_'
|
|
||||||
- 'n:b:/locate:_'
|
|
||||||
- 'n:b:/vvbukkit:_'
|
|
||||||
- 'n:b:/plot area c:_'
|
|
||||||
- 'n:b:/d minecart_command:_'
|
|
||||||
- 'n:b:/loot:_'
|
|
||||||
- 'n:b:/plan:_'
|
|
||||||
# - 'n:b:/explosivearrows:&cDisabled until further notice'
|
|
||||||
- 'n:b://material:_'
|
|
||||||
- 'n:b://mat:_'
|
|
||||||
- 'n:b:/mat:_'
|
|
||||||
- 'n:b:/vpnguard:_'
|
|
||||||
- 'n:b:/pcapi:_'
|
|
||||||
- 'n:b://distr:&cNope.'
|
|
||||||
- 'n:b:/data:_'
|
|
||||||
- 'n:b:/datapack:_'
|
|
||||||
- 'n:b://regen:_'
|
|
||||||
- 'n:b:/onlinemode:&cThis breaks UUIDs.'
|
|
||||||
- 'n:b:/execute:_'
|
|
||||||
- 'n:b:/killall:_'
|
|
||||||
- 'n:b:/createdisguise:_'
|
|
||||||
- 'n:b:/attribute:_'
|
|
||||||
|
|
||||||
# Admin commands
|
# Disabled commands
|
||||||
- 'a:b:/vive:_'
|
- 'n:b:/essentials:_'
|
||||||
- 'a:b:/vse:_'
|
- 'n:b:/time:Server-side time changing is disabled. Please use /ptime to set your own personal time.'
|
||||||
- 'a:b:/lightning:_'
|
- 'n:b:/disguiseradius:_'
|
||||||
- 'a:b:/playsound:_'
|
- 'n:b:/undisguiseradius:_'
|
||||||
- 'a:b:/locatebiome:_'
|
- 'n:b:/debug:_'
|
||||||
- 'a:b:/delchunks:_'
|
- 'n:b:/pardon:_'
|
||||||
- 'a:b:/exploitfixer:_'
|
- 'n:b:/ban-ip:_'
|
||||||
- 'a:b:/massivelag:_'
|
- 'n:b:/pardon-ip:_'
|
||||||
- 'a:b:/ml:_'
|
- 'n:b:/toggledownfall:_'
|
||||||
- 'a:b:/createkit:_'
|
- 'n:b:/spreadplayers:_'
|
||||||
- 'a:b:/delkit:_'
|
- 'n:b:/blockdata:_'
|
||||||
- 'a:b:/region:_'
|
- 'n:b:/clearhistory:_'
|
||||||
- 'a:b:/clone:_'
|
- 'n:b:/save-on:_'
|
||||||
- 'a:b:/cap:_'
|
- 'n:b:/save-off:_'
|
||||||
- 'a:b:/gamemode:Use /gmc and /gms to set your gamemode.'
|
- 'n:b:/packet:_'
|
||||||
- 'a:b:/powernbt:_'
|
- 'n:b://eval:_'
|
||||||
- 'a:b:/nbt.:_'
|
- 'n:b:/testvote:_'
|
||||||
- 'a:b:/blockshub:_'
|
- 'n:b:/nvreload:_'
|
||||||
- 'a:b:/protocol:_'
|
- 'n:b:/bungeeguard:_'
|
||||||
- 'a:b:/libsdisguises reload:_'
|
- 'n:b:/buycraft:_'
|
||||||
- 'a:b://awe:_'
|
- 'n:b:/spigot reload:_'
|
||||||
- 'a:b:/stopfire:_'
|
- 'n:b:/mail sendall:Sending mail to all players is not allowed.'
|
||||||
- 'a:b:/allowfire'
|
- 'n:b:/entitydata:_'
|
||||||
- 'a:b:/stoplag:_'
|
- 'n:b:/skins:_'
|
||||||
- 'a:b:/worldguard:_'
|
- 'n:b:/advancement:_'
|
||||||
- 'a:b:/slay:_'
|
- 'n:b:/worldborder:The worldborder does not need to be changed. This command is disabled.'
|
||||||
- 'a:b:/save-all:_'
|
- 'n:b:/defaultgamemode:The default gamemode should not be changed.'
|
||||||
- 'a:b:/libsdisguises:_'
|
- 'n:b:/thread:_'
|
||||||
- 'a:b:/particle:Due to security reasons, the use of /particle has been disabled.'
|
- 'n:b:/stacktrace:_'
|
||||||
- 'a:b:/rainbowclear:_'
|
- 'n:b:/function:_'
|
||||||
- 'a:b:/rainbowspeed:_'
|
- 'n:b:/forceload:_'
|
||||||
- 'a:b:/kick:_'
|
- 'n:b:/fill:_'
|
||||||
- 'a:b:/difficulty:_'
|
- 'n:b:/paper:_'
|
||||||
- 'a:b:/captchafy:_'
|
- 'n:b:/locate:_'
|
||||||
- 'a:b:/socialspy:_'
|
- 'n:b:/vvbukkit:_'
|
||||||
- 'a:b:/sproxy:_'
|
- 'n:b:/plot area c:_'
|
||||||
- 'a:b:/replaceitem:_'
|
- 'n:b:/d minecart_command:_'
|
||||||
- 'a:b:/kill:_'
|
- 'n:b:/loot:_'
|
||||||
- 'a:b:/reaction:_'
|
- 'n:b:/plan:_'
|
||||||
- 'a:b:/setworldspawn:_'
|
- 'n:b://material:_'
|
||||||
- 'a:b:/scoreboard:_'
|
- 'n:b://mat:_'
|
||||||
- 'a:b:/setspawn:_'
|
- 'n:b:/mat:_'
|
||||||
- 'a:b:/forestgen:_'
|
- 'n:b:/vpnguard:_'
|
||||||
- 'a:b:/setidletimeout:_'
|
- 'n:b:/pcapi:_'
|
||||||
- 'a:b:/lrbuild:_'
|
- 'n:b://distr:&cNope.'
|
||||||
- 'a:b:/size:_'
|
- 'n:b:/data:_'
|
||||||
- 'a:b:/break:_'
|
- 'n:b:/datapack:_'
|
||||||
- 'a:b:/disentity:_'
|
- 'n:b://regen:_'
|
||||||
- 'a:b:/reload:_'
|
- 'n:b:/execute:_'
|
||||||
- 'a:b:/title:_'
|
- 'n:b:/killall:_'
|
||||||
- 'a:b:/weather:_'
|
- 'n:b:/createdisguise:_'
|
||||||
- 'a:b:/tpall:_'
|
- 'n:b:/attribute:_'
|
||||||
- 'a:b:/etpall:_'
|
|
||||||
- 'a:b:/setblock:_'
|
# Admin commands
|
||||||
- 'a:b:/gamerule:_'
|
- 'a:b:/vive:_'
|
||||||
- 'a:b:/togglejail:_'
|
- 'a:b:/vse:_'
|
||||||
- 'a:b:/range:_'
|
- 'a:b:/lightning:_'
|
||||||
- 'a:b:/stop:_'
|
- 'a:b:/playsound:_'
|
||||||
- 'a:b:/restart:_'
|
- 'a:b:/locatebiome:_'
|
||||||
- 'a:b:/sr:_'
|
- 'a:b:/delchunks:_'
|
||||||
- 'a:b:/tpo:_'
|
- 'a:b:/exploitfixer:_'
|
||||||
- 'a:b:/tpohere:_'
|
- 'a:b:/massivelag:_'
|
||||||
- 'a:b:/tphere:_'
|
- 'a:b:/ml:_'
|
||||||
- 'a:b:/rfchairs:_'
|
- 'a:b:/createkit:_'
|
||||||
- 'a:b:/ppo:_'
|
- 'a:b:/delkit:_'
|
||||||
- 'a:b:/vulnerabilitypatcher:_'
|
- 'a:b:/region:_'
|
||||||
- 'a:b:/crackshot config:_'
|
- 'a:b:/clone:_'
|
||||||
- 'a:b:/marry reload:_'
|
- 'a:b:/cap:_'
|
||||||
- 'a:b:/bh:_'
|
- 'a:b:/gamemode:Use /gmc and /gms to set your gamemode.'
|
||||||
- 'a:b:/tpaall:_'
|
- 'a:b:/powernbt:_'
|
||||||
- 'a:b:/paper heap:_'
|
- 'a:b:/nbt.:_'
|
||||||
- 'a:u:/burn:_'
|
- 'a:b:/blockshub:_'
|
||||||
- 'a:b:/summon:_'
|
- 'a:b:/protocol:_'
|
||||||
- 'a:b:/discord:_'
|
- 'a:b:/libsdisguises reload:_'
|
||||||
- 'a:b:/bossbar:_'
|
- 'a:b://awe:_'
|
||||||
- 'a:b:/team:_'
|
- 'a:b:/stopfire:_'
|
||||||
- 'a:b:/spawner:_'
|
- 'a:b:/allowfire'
|
||||||
# - 'a:b:/getpos:_'
|
- 'a:b:/stoplag:_'
|
||||||
- 's:b:/istack:_'
|
- 'a:b:/worldguard:_'
|
||||||
- 'a:b:/getloc:_'
|
- 'a:b:/slay:_'
|
||||||
- 'a:b:/holo:_'
|
- 'a:b:/save-all:_'
|
||||||
- 'a:b:/hd:_'
|
- 'a:b:/libsdisguises:_'
|
||||||
- 'a:b:/hologram:_'
|
- 'a:b:/particle:Due to security reasons, the use of /particle has been disabled.'
|
||||||
- 'a:b:/holograms:_'
|
- 'a:b:/rainbowclear:_'
|
||||||
# - 'a:b:/whois:&cpeople like aurulim ruined the usage of this command, stop tp bypassing' # Blocking this is ridiculous. Instead of being lazy and just blocking whois, how about you disable the part where it reveals people's coords, like you did with disabling IPs?
|
- 'a:b:/rainbowspeed:_'
|
||||||
- 's:b:/awe toggle:_'
|
- 'a:b:/kick:_'
|
||||||
- 's:b:/tellraw:_'
|
- 'a:b:/difficulty:_'
|
||||||
- 's:b://awe toggle:_'
|
- 'a:b:/captchafy:_'
|
||||||
- 'a:b:/openinv:_'
|
- 'a:b:/socialspy:_'
|
||||||
- 'a:b:/oi:_'
|
- 'a:b:/sproxy:_'
|
||||||
- 'a:b:/open:_'
|
- 'a:b:/replaceitem:_'
|
||||||
- 'a:b:/openender:_'
|
- 'a:b:/kill:_'
|
||||||
- 'a:b:/oe:_'
|
- 'a:b:/reaction:_'
|
||||||
- 'a:b:/searchinv:_'
|
- 'a:b:/setworldspawn:_'
|
||||||
- 'a:b:/si:_'
|
- 'a:b:/scoreboard:_'
|
||||||
- 'a:b:/searchender:_'
|
- 'a:b:/setspawn:_'
|
||||||
- 'a:b:/se:_'
|
- 'a:b:/forestgen:_'
|
||||||
- 'a:b:/searchenchant:_'
|
- 'a:b:/setidletimeout:_'
|
||||||
- 'a:b:/searchenchants:_'
|
- 'a:b:/lrbuild:_'
|
||||||
- 'a:b:/anycontainer:_'
|
- 'a:b:/size:_'
|
||||||
- 'a:b:/anychest:_'
|
- 'a:b:/break:_'
|
||||||
- 'a:b:/sc:_'
|
- 'a:b:/disentity:_'
|
||||||
- 'a:b:/fawe:_'
|
- 'a:b:/reload:_'
|
||||||
- 'a:b:/wea:_'
|
- 'a:b:/title:_'
|
||||||
- 'a:b:/protocolsupport:_'
|
- 'a:b:/weather:_'
|
||||||
- 'a:b:/ps:_'
|
- 'a:b:/tpall:_'
|
||||||
- 'n:b:/wra:_'
|
- 'a:b:/etpall:_'
|
||||||
- 's:b:/viaver:_'
|
- 'a:b:/setblock:_'
|
||||||
- 's:b:/viaversion:_'
|
- 'a:b:/gamerule:_'
|
||||||
- 's:b:/spark:_'
|
- 'a:b:/togglejail:_'
|
||||||
|
- 'a:b:/range:_'
|
||||||
|
- 'a:b:/stop:_'
|
||||||
|
- 'a:b:/restart:_'
|
||||||
|
- 'a:b:/sr:_'
|
||||||
|
- 'a:b:/tpo:_'
|
||||||
|
- 'a:b:/tpohere:_'
|
||||||
|
- 'a:b:/tphere:_'
|
||||||
|
- 'a:b:/rfchairs:_'
|
||||||
|
- 'a:b:/ppo:_'
|
||||||
|
- 'a:b:/vulnerabilitypatcher:_'
|
||||||
|
- 'a:b:/crackshot config:_'
|
||||||
|
- 'a:b:/marry reload:_'
|
||||||
|
- 'a:b:/bh:_'
|
||||||
|
- 'a:b:/tpaall:_'
|
||||||
|
- 'a:b:/paper heap:_'
|
||||||
|
- 'a:u:/burn:_'
|
||||||
|
- 'a:b:/summon:_'
|
||||||
|
- 'a:b:/discord:_'
|
||||||
|
- 'a:b:/bossbar:_'
|
||||||
|
- 'a:b:/team:_'
|
||||||
|
- 'a:b:/spawner:_'
|
||||||
|
- 's:b:/istack:_'
|
||||||
|
- 'a:b:/getloc:_'
|
||||||
|
- 'a:b:/holo:_'
|
||||||
|
- 'a:b:/hd:_'
|
||||||
|
- 'a:b:/hologram:_'
|
||||||
|
- 'a:b:/holograms:_'
|
||||||
|
- 's:b:/awe toggle:_'
|
||||||
|
- 's:b:/tellraw:_'
|
||||||
|
- 's:b://awe toggle:_'
|
||||||
|
- 'a:b:/openinv:_'
|
||||||
|
- 'a:b:/oi:_'
|
||||||
|
- 'a:b:/open:_'
|
||||||
|
- 'a:b:/openender:_'
|
||||||
|
- 'a:b:/oe:_'
|
||||||
|
- 'a:b:/searchinv:_'
|
||||||
|
- 'a:b:/si:_'
|
||||||
|
- 'a:b:/searchender:_'
|
||||||
|
- 'a:b:/se:_'
|
||||||
|
- 'a:b:/searchenchant:_'
|
||||||
|
- 'a:b:/searchenchants:_'
|
||||||
|
- 'a:b:/anycontainer:_'
|
||||||
|
- 'a:b:/anychest:_'
|
||||||
|
- 'a:b:/sc:_'
|
||||||
|
- 'a:b:/fawe:_'
|
||||||
|
- 'a:b:/wea:_'
|
||||||
|
- 'a:b:/protocolsupport:_'
|
||||||
|
- 'a:b:/ps:_'
|
||||||
|
- 'n:b:/wra:_'
|
||||||
|
- 's:b:/viaver:_'
|
||||||
|
- 's:b:/viaversion:_'
|
||||||
|
- 's:b:/spark:_'
|
||||||
|
- 's:b://g:_'
|
||||||
|
|
||||||
|
# Commands that cannot be used by muted players
|
||||||
|
muted:
|
||||||
|
- say
|
||||||
|
- me
|
||||||
|
- msg
|
||||||
|
- tell
|
||||||
|
- reply
|
||||||
|
- mail
|
||||||
|
|
||||||
|
# Commands that cannot be used with /wildcard
|
||||||
|
wildcard:
|
||||||
|
- wildcard
|
||||||
|
- gtfo
|
||||||
|
- doom
|
||||||
|
- slconfig
|
||||||
|
- smite
|
||||||
|
|
||||||
|
# Words that cannot be used in tags
|
||||||
|
forbidden_words:
|
||||||
|
- admin
|
||||||
|
- owner
|
||||||
|
- moderator
|
||||||
|
- developer
|
||||||
|
- console
|
||||||
|
- dev
|
||||||
|
- staff
|
||||||
|
- mod
|
||||||
|
- sra
|
||||||
|
- tca
|
||||||
|
- sta
|
||||||
|
- sa
|
||||||
|
|
||||||
# Automatically wipe dropped objects
|
# Automatically wipe dropped objects
|
||||||
auto_wipe: true
|
auto_wipe: true
|
||||||
@ -537,7 +568,7 @@ admininfo:
|
|||||||
- ' &6- Report those breaking the rules'
|
- ' &6- Report those breaking the rules'
|
||||||
- ' &2- And apply on our forums at the link:'
|
- ' &2- And apply on our forums at the link:'
|
||||||
- '&9https://forum.totalfreedom.me/d/45-admin-application-template'
|
- '&9https://forum.totalfreedom.me/d/45-admin-application-template'
|
||||||
|
|
||||||
# What to display in the vote command.
|
# What to display in the vote command.
|
||||||
votinginfo:
|
votinginfo:
|
||||||
- '&bVoting Links:'
|
- '&bVoting Links:'
|
||||||
@ -559,6 +590,14 @@ masterbuilderinfo:
|
|||||||
- ' &2- Template:'
|
- ' &2- Template:'
|
||||||
- '&9https://forum.totalfreedom.me/d/336-master-builder-application-process'
|
- '&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 - cannot be banned by username
|
||||||
famous_players:
|
famous_players:
|
||||||
- honeydew
|
- honeydew
|
||||||
|
@ -1,16 +1,50 @@
|
|||||||
#
|
#
|
||||||
# TotalFreedomMod Permissions
|
# TotalFreedomMod 5.5 Permissions
|
||||||
# by ZeroEpoch1969
|
# by ZeroEpoch1969
|
||||||
#
|
#
|
||||||
|
|
||||||
# Note that every group inherits the previous groups' permissions
|
# Note that every group inherits the previous groups' permissions
|
||||||
# Meaning Senior Admins have the permissions of Operators and Admins, and etc
|
# Meaning Telnet Admins have the permissions of Operators and Super Admins, and etc
|
||||||
|
|
||||||
# This is used to remove all permission begging with the root node
|
# This is used to remove all permission begging with the root node
|
||||||
# This is useful when a plugin gives all permissions to a player because they are opped
|
# This is useful when a plugin gives all permissions to a player because they are opped
|
||||||
remove:
|
remove:
|
||||||
- "voxelsniper"
|
- "voxelsniper"
|
||||||
- "bending"
|
- "bending.admin"
|
||||||
|
- "bending.ability.Cleanse"
|
||||||
|
- "worldedit.brush.apply"
|
||||||
|
- "essentials.near.exclude"
|
||||||
|
- "plots.admin"
|
||||||
|
- "plots.debugroadregen"
|
||||||
|
- "plots.debugclaimtest"
|
||||||
|
- "plots.debugpaste"
|
||||||
|
- "plots.debugallowunsafe"
|
||||||
|
- "plots.debugloadtest"
|
||||||
|
- "plots.debugsavetest"
|
||||||
|
- "plots.cluster"
|
||||||
|
#Crackshot
|
||||||
|
- "crackshot.bypass.all"
|
||||||
|
#NetworkManager
|
||||||
|
- "networkmanager.*"
|
||||||
|
- "networkmanager.notify.joinbanned"
|
||||||
|
- "networkmanager.notify.*"
|
||||||
|
- "networkmanager.announce.global"
|
||||||
|
- "networkmanager.announce"
|
||||||
|
- "networkmanager.chatlock"
|
||||||
|
- "networkmanager.clearchat.bypass"
|
||||||
|
- "networkmanager.clearchat.*"
|
||||||
|
- "networkmanager.notify.ticket.new"
|
||||||
|
- "networkmanager.lookup"
|
||||||
|
- "networkmanager.maintenance.*"
|
||||||
|
- "networkmanager.permissions"
|
||||||
|
- "networkmanager.reports"
|
||||||
|
- "networkmanager.tickets"
|
||||||
|
- "networkmanager.chatlock.bypass"
|
||||||
|
- "networkmanager.anticaps.bypass"
|
||||||
|
- "networkmanager.antispam.bypass"
|
||||||
|
- "networkmanager.commandblocker.bypass"
|
||||||
|
- "networkmanager.tags.*"
|
||||||
|
|
||||||
|
|
||||||
# Operator permission nodes
|
# Operator permission nodes
|
||||||
operators:
|
operators:
|
||||||
@ -36,16 +70,79 @@ operators:
|
|||||||
- "worldedit.removebelow"
|
- "worldedit.removebelow"
|
||||||
- "worldedit.removenear"
|
- "worldedit.removenear"
|
||||||
- "worldedit.replacenear"
|
- "worldedit.replacenear"
|
||||||
|
- "worldedit.brush.*"
|
||||||
|
- "worldedit.global-mask"
|
||||||
|
- "worldedit.fill"
|
||||||
|
- "worldedit.fill.recursive"
|
||||||
# LibsDisguises
|
# LibsDisguises
|
||||||
- "libsdisguises.noactionbar"
|
- "libsdisguises.noactionbar"
|
||||||
|
|
||||||
# WorldGuard
|
# WorldGuard
|
||||||
- "worldguard.region.list.own"
|
- "worldguard.region.list.own"
|
||||||
- "worldguard.region.addmember.own.*"
|
- "worldguard.region.addmember.own.*"
|
||||||
- "worldguard.region.removemember.own.*"
|
- "worldguard.region.removemember.own.*"
|
||||||
- "worldguard.region.info.*"
|
- "worldguard.region.info.*"
|
||||||
|
|
||||||
|
# Bending
|
||||||
|
- "bending.command.add"
|
||||||
|
- "bending.command.bind"
|
||||||
|
- "bending.command.check"
|
||||||
|
- "bending.command.choose"
|
||||||
|
- "bending.command.rechoose"
|
||||||
|
- "bending.command.clear"
|
||||||
|
- "bending.command.copy"
|
||||||
|
- "bending.command.display"
|
||||||
|
- "bending.command.help"
|
||||||
|
- "bending.command.invincible"
|
||||||
|
- "bending.command.preset"
|
||||||
|
- "bending.command.preset.list"
|
||||||
|
- "bending.command.preset.create"
|
||||||
|
- "bending.command.preset.delete"
|
||||||
|
- "bending.command.preset.bind"
|
||||||
|
- "bending.command.preset.bind.assign"
|
||||||
|
- "bending.command.preset.bind.external"
|
||||||
|
- "bending.command.toggle"
|
||||||
|
- "bending.command.version"
|
||||||
|
- "bending.command.who"
|
||||||
|
- "bending.earth"
|
||||||
|
- "bending.air"
|
||||||
|
- "bending.fire"
|
||||||
|
- "bending.water"
|
||||||
|
- "bending.water.bloodbending.anytime"
|
||||||
|
- "bending.ability.AvatarState"
|
||||||
|
- "bending.command.add.chi"
|
||||||
|
- "bending.command.choose.chi"
|
||||||
|
- "bending.ability.Paralyze"
|
||||||
|
- "bending.ability.RapidPunch"
|
||||||
|
- "bending.ability.Smokescreen"
|
||||||
|
- "bending.ability.WarriorStance"
|
||||||
|
- "bending.ability.AcrobatStance"
|
||||||
|
- "bending.ability.QuickStrike"
|
||||||
|
- "bending.ability.SwiftKick"
|
||||||
|
- "bending.ability.ChiCombo"
|
||||||
|
- "bending.chi.passive"
|
||||||
|
- "bending.ability.MetalClips.throw"
|
||||||
|
- "bending.ability.AirCombo"
|
||||||
|
- "bending.ability.Flight"
|
||||||
|
- "bending.ability.WaterCombo"
|
||||||
|
- "bending.ability.EarthCombo"
|
||||||
|
- "bending.ability.FireCombo"
|
||||||
|
- "bending.ability.ChiCombo"
|
||||||
|
- "bending.air.passive"
|
||||||
|
- "bending.chi.passive"
|
||||||
|
- "bending.earth.passive"
|
||||||
|
- "bending.fire.passive"
|
||||||
|
- "bending.water.passive"
|
||||||
|
# NetworkManager
|
||||||
|
- "networkmanager.chatlog"
|
||||||
|
- "networkmanager.find"
|
||||||
|
- "networkmanager.gtps"
|
||||||
|
- "networkmanager.lookup"
|
||||||
|
- "networkmanager.slashserver.*"
|
||||||
|
- "networkmanager.notification.join"
|
||||||
|
- "networkmanager.party.nolimit"
|
||||||
|
- "networkmanager.tabcompletechat"
|
||||||
|
|
||||||
# Master Builder permission nodes
|
# Master Builder permission nodes
|
||||||
master_builders:
|
master_builders:
|
||||||
- "worldedit.tool.*"
|
- "worldedit.tool.*"
|
||||||
@ -59,13 +156,25 @@ master_builders:
|
|||||||
- "voxelsniper.sniper"
|
- "voxelsniper.sniper"
|
||||||
- "voxelsniper.goto"
|
- "voxelsniper.goto"
|
||||||
- "voxelsniper.brush.*"
|
- "voxelsniper.brush.*"
|
||||||
|
|
||||||
# Admin permission nodes
|
# Admin permission nodes
|
||||||
admins:
|
admins:
|
||||||
- "coreprotect.*"
|
|
||||||
- "worldedit.*"
|
- "worldedit.*"
|
||||||
- "worldguard.*"
|
- "worldguard.*"
|
||||||
- "bending.*"
|
- "bending.admin.remove"
|
||||||
|
- "bending.command.toggle.all"
|
||||||
|
- "bending.admin.toggle"
|
||||||
|
- "bending.command.reload"
|
||||||
|
- "plots.cluster"
|
||||||
|
- "networkmanager.adminchat"
|
||||||
|
- "networkmanager.announce.server"
|
||||||
|
- "networkmanager.socialspy"
|
||||||
|
- "networkmanager.fullproxy.bypass"
|
||||||
|
- "networkmanager.lookup.ip"
|
||||||
|
#Crackshot
|
||||||
|
- "crackshot.bypass.all"
|
||||||
|
|
||||||
# Senior Admin permission nodes
|
# Senior Admin permission nodes
|
||||||
senior_admins: []
|
senior_admins:
|
||||||
|
- "bending.admin.permaremove"
|
||||||
|
- "bending.ability.Cleanse"
|
||||||
|
Reference in New Issue
Block a user