mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2025-07-01 04:26:42 +00:00
Compare commits
209 Commits
2021.02
...
2022.02-RC
Author | SHA1 | Date | |
---|---|---|---|
6453e4efca | |||
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 | |||
4e577f97fa | |||
8c7bf365a0 | |||
eedb7a5375 | |||
d047cfc8ff | |||
9ff5da8d8f | |||
ac615f54f7 | |||
21af722e23 | |||
b1196fcf00 | |||
d170f6d323 | |||
9dd0298f56 | |||
bdf4ca84e0 | |||
caaa067096 | |||
7258d7f1bf | |||
8a504bff07 | |||
c00e64f736 | |||
9e73db0f24 | |||
951c061d77 | |||
579d3e0719 | |||
9777733d04 | |||
05e118dcb4 | |||
7a0d6f49f4 | |||
19f1b7f6bd | |||
b12afbdc1f | |||
49e77d4f93 | |||
eb9107bedf | |||
951c699ed0 | |||
9e676143b8 | |||
6895e46375 | |||
c8b20bc255 | |||
1cf46c7337 | |||
f240a15af3 | |||
6073712fdf | |||
407b63e48b | |||
be562fe722 | |||
928ab41d7f | |||
d11d55b218 | |||
debb95fb4c | |||
b9f7ab3ec3 | |||
2cdf1e66a6 | |||
20c2c4c96e | |||
d5238150d0 | |||
64a4e70c41 | |||
0c2f0a714c | |||
4c67553bdd | |||
ffab5e3c12 | |||
f7556a4861 | |||
385fc77771 | |||
b852ea1822 | |||
4a5a3a1a2d | |||
37762e5470 | |||
85d90090c8 | |||
09930c2d9a | |||
7ae1ab035a | |||
2bd1787663 | |||
765b7dcc4b | |||
091381a076 | |||
27dfd71b2e | |||
16e06bd932 | |||
a33c310757 | |||
df21bdfa7e | |||
d7e2c0da42 | |||
a7529b41fb | |||
c4fce3f0f9 | |||
27f5f18962 | |||
dca5e30291 | |||
09a435053e | |||
14309275fb | |||
2375e92d90 | |||
97672c2fff | |||
5837b05a35 | |||
b3b68ebd13 | |||
2dbbb5c262 | |||
e45655edbb | |||
9713fcabd6 | |||
dc10c40578 | |||
db3c190b2b | |||
2725857364 | |||
9f291f675c | |||
561c192c27 | |||
086dec28ac | |||
b03870c0aa | |||
f5c08cd28b | |||
2a87271642 | |||
3b57aec0e8 | |||
efac65bc76 | |||
9c8fe6c590 | |||
9f52cdf753 | |||
216234ea01 | |||
881dead392 | |||
ff2bca26aa | |||
89ad934aa6 | |||
d0a195647c | |||
eb05b05042 | |||
b9c1970d20 | |||
9eca9ac5b2 | |||
5b577fae07 | |||
452a8755c2 |
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
|
||||||
|
43
.github/workflows/downstream.yml
vendored
Normal file
43
.github/workflows/downstream.yml
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# This is a basic workflow to help you get started with Actions
|
||||||
|
|
||||||
|
name: Downstream Branch Updates
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '20 7 * * *'
|
||||||
|
# scheduled at 07:00 every Monday and Thursday
|
||||||
|
|
||||||
|
workflow_dispatch: # click the button on Github repo!
|
||||||
|
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
sync_with_upstream:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
name: Sync main with upstream latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
# Step 1: run a standard checkout action, provided by github
|
||||||
|
- name: Checkout main
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
ref: main
|
||||||
|
# submodules: 'recursive' ### may be needed in your situation
|
||||||
|
|
||||||
|
# Step 2: run this sync action - specify the upstream repo, upstream branch to sync with, and target sync branch
|
||||||
|
- name: Pull (Fast-Forward) upstream changes
|
||||||
|
id: sync
|
||||||
|
uses: aormsby/Fork-Sync-With-Upstream-action@v2.1
|
||||||
|
with:
|
||||||
|
upstream_repository: AtlasMediaGroup/TotalFreedomMod
|
||||||
|
upstream_branch: main
|
||||||
|
target_branch: development
|
||||||
|
git_pull_args: --ff-only # optional arg use, defaults to simple 'pull'
|
||||||
|
|
||||||
|
# Step 3: Display a message if 'sync' step had new commits (simple test)
|
||||||
|
- name: Check for new commits
|
||||||
|
if: steps.sync.outputs.has_new_commits
|
||||||
|
run: echo "There were new commits."
|
||||||
|
|
||||||
|
# Step 4: Print a helpful timestamp for your records (not required, just nice)
|
||||||
|
- name: Timestamp
|
||||||
|
run: date
|
@ -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,3 +1,3 @@
|
|||||||
# Contributing to TotalFreedomMod #
|
# Contributing to TotalFreedomMod
|
||||||
|
|
||||||
For information about contributing to TotalFreedomMod, please see the [contributing guidelines](https://github.com/TotalFreedom/TotalFreedomMod/wiki/Contributing).
|
For information about contributing to TotalFreedomMod, please see the [contributing guidelines](https://github.com/TotalFreedom/TotalFreedomMod/wiki/Contributing).
|
||||||
|
19
LICENSE.md
19
LICENSE.md
@ -1,4 +1,5 @@
|
|||||||
# TotalFreedom General License #
|
# TotalFreedom General License
|
||||||
|
|
||||||
_Version 2.0, 27th February 2015_
|
_Version 2.0, 27th February 2015_
|
||||||
|
|
||||||
Copyright (c) 2011 Steven Lawson
|
Copyright (c) 2011 Steven Lawson
|
||||||
@ -7,7 +8,8 @@ Copyright (c) 2012 Jerom van der Sar
|
|||||||
|
|
||||||
All rights reserved.
|
All rights reserved.
|
||||||
|
|
||||||
##### 1. Definitions #####
|
##### 1. Definitions
|
||||||
|
|
||||||
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by this document.
|
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by this document.
|
||||||
|
|
||||||
"Licensor" shall mean the copyright holder or entity authorised by the copyright owner that is granting the License.
|
"Licensor" shall mean the copyright holder or entity authorised by the copyright owner that is granting the License.
|
||||||
@ -30,12 +32,13 @@ All rights reserved.
|
|||||||
|
|
||||||
"Redistribution" shall mean any partial or complete availability, transfer or publication of the Work from one Legal Entity to another.
|
"Redistribution" shall mean any partial or complete availability, transfer or publication of the Work from one Legal Entity to another.
|
||||||
|
|
||||||
##### 2. Grant of Copyright License #####
|
##### 2. Grant of Copyright License
|
||||||
Subject to the terms and conditions of this License, You are granted a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to prepare Derivative Works of, publicly display, publicly perform, inspect and redistribute the Work and such Derivative Works as long as the following conditions are met:
|
|
||||||
|
Subject to the terms and conditions of this License, You are granted a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to prepare Derivative Works of, publicly display, publicly perform, inspect and redistribute the Work and such Derivative Works as long as the following conditions are met:
|
||||||
|
|
||||||
1. Redistributions of This Software must solely occur in Source form. Redistribution in Object form is prohibited without prior written permission from the Licensor.
|
1. Redistributions of This Software must solely occur in Source form. Redistribution in Object form is prohibited without prior written permission from the Licensor.
|
||||||
|
|
||||||
2. Neither the names of the copyright holders nor the names this software's contributors may be removed from This Software's source code.
|
2. Neither the names of the copyright holders nor the names this software's contributors may be removed from This Software's source code.
|
||||||
|
|
||||||
3. Neither the names of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from This Software without specific prior written permission.
|
3. Neither the names of the copyright holders nor the names of its contributors may be used to endorse or promote products derived from This Software without specific prior written permission.
|
||||||
|
|
||||||
@ -47,8 +50,10 @@ All rights reserved.
|
|||||||
|
|
||||||
7. Sub licensing of This Software is prohibited without prior written permission from the Licensor.
|
7. Sub licensing of This Software is prohibited without prior written permission from the Licensor.
|
||||||
|
|
||||||
##### 3. Submission of Contributions #####
|
##### 3. Submission of Contributions
|
||||||
|
|
||||||
Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.
|
||||||
|
|
||||||
##### 4. Disclaimer of Warranty #####
|
##### 4. Disclaimer of Warranty
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
# 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.
|
||||||
|
|
||||||
This plugin was originally coded by StevenLawson (Madgeek1450), with Jerom van der Sar (Prozza) becoming heavily involved in its development some time later. It consists of over 85 custom coded commands and a large variety of distinguishable features not included in any other plugin. The plugin has since its beginning grown immensely. Together, with the main TotalFreedom server, TotalFreedomMod has a long-standing reputation of effectiveness whilst maintaining a clear feeling of openness towards the administrators and the players themselves.
|
This plugin was originally coded by StevenLawson (Madgeek1450), with Jerom van der Sar (Prozza) becoming heavily involved in its development some time later. It consists of over 85 custom coded commands and a large variety of distinguishable features not included in any other plugin. The plugin has since its beginning grown immensely. Together, with the main TotalFreedom server, TotalFreedomMod has a long-standing reputation of effectiveness whilst maintaining a clear feeling of openness towards the administrators and the players themselves.
|
||||||
|
|
||||||
### Contributing ###
|
### Contributing
|
||||||
|
|
||||||
Please see [CONTRIBUTING.md](CONTRIBUTING.md) if you are interested in developing TotalFreedomMod.
|
Please see [CONTRIBUTING.md](CONTRIBUTING.md) if you are interested in developing TotalFreedomMod.
|
||||||
|
|
||||||
For information on how TotalFreedomMod is licensed, please see [LICENSE.md](LICENSE.md).
|
For information on how TotalFreedomMod is licensed, please see [LICENSE.md](LICENSE.md).
|
||||||
|
|
||||||
For information on our security policy and reporting an issue, please see [SECURITY.md](SECURITY.md)
|
For information on our security policy and reporting an issue, please see [SECURITY.md](SECURITY.md)
|
||||||
|
|
||||||
### 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.
|
||||||
|
39
SECURITY.md
39
SECURITY.md
@ -2,19 +2,40 @@
|
|||||||
|
|
||||||
## Supported Versions
|
## Supported Versions
|
||||||
|
|
||||||
We currently support the code running on the "development" branch of this repository. This is supported in addition to those formal releases, but note anything not yet released should be treated as in-development.
|
We currently support the code running on the "main" branch and "development" branch of this repository. This is supported in addition to those formal releases, but note anything not yet released should be treated as in-development.
|
||||||
|
|
||||||
In terms of plugin releases, we support the following versions:
|
In terms of plugin releases, our support matrix is as follows:
|
||||||
|
|
||||||
| Version | Supported |
|
### Actively Supported
|
||||||
| ------- | ------------------ |
|
These versions are currently actively supported by our team, and you should expect security patches where appropriate for these versions.
|
||||||
| 2020.11 | :white_check_mark: |
|
|
||||||
| 6.0.x (Pre-Release) | :x: |
|
| Version | Supported | Support End: |
|
||||||
| < 2020.11 | :x: |
|
| ------------------- | ------------------ | ------------------------------ |
|
||||||
| < 5.x | :x: |
|
| 2021.09 | :white_check_mark: | No Earlier than December 2021 |
|
||||||
|
|
||||||
|
### Legacy Supported
|
||||||
|
These versions are no longer under active development, however we will look to release critical secuirty patches where appropriate.
|
||||||
|
|
||||||
|
| Version | Supported | Support End: |
|
||||||
|
| ------------------- | ------------------ | ------------ |
|
||||||
|
| 2021.06 | :white_check_mark: | October 2021 |
|
||||||
|
|
||||||
|
|
||||||
|
### No Longer Supported
|
||||||
|
These versions are no longer supported at all. It is strongly advised to update if you are running any of these versions.
|
||||||
|
|
||||||
|
| Version | Supported | Support Ended: |
|
||||||
|
| ------------------- | ------------------ | ------------------- |
|
||||||
|
| 2021.05 | :white_check_mark: | September 2021 |
|
||||||
|
| 2021.04 | :white_check_mark: | July 2021 |
|
||||||
|
| 2021.02 | :x: | 6 June 2021 |
|
||||||
|
| 2020.11 | :x: | 3 May 2021 |
|
||||||
|
| 6.0.x (Pre-Release) | :x: | December 2020 |
|
||||||
|
| < 2020.11 | :x: | December 2020 |
|
||||||
|
| < 5.x | :x: | December 2020 |
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
If the report has minor security implications (ie we've added a super admin to a senior admins permission) please raise an post on [our forums](https://forum.totalfreedom.me/) in the first instance. If you do not have a forum account and do not wish to sign up, please e-mail us using the e-mail in the next sentence.
|
If the report has minor security implications (ie we've added a super admin to a senior admins permission) please raise an post on [our forums](https://forum.totalfreedom.me/) in the first instance. If you do not have a forum account and do not wish to sign up, please e-mail us using the e-mail in the next sentence.
|
||||||
|
|
||||||
For security vulnerabilities that are more severe and that may pose a more significant threat to the servers running this plugin, please e-mail os-security-reports [ AT ] atlas-media.co.uk - You can expect an automated response immediately to acknowledge receipt of your e-mail, and one of our team will aim to respond within 72 hours and will work with you on the best way to address your concerns.
|
For security vulnerabilities that are more severe and that may pose a more significant threat to the servers running this plugin, please e-mail os-security-reports [ AT ] atlas-media.co.uk - You can expect an automated response immediately to acknowledge receipt of your e-mail, and one of our team will aim to respond within 72 hours and will work with you on the best way to address your concerns.
|
||||||
|
@ -2,20 +2,16 @@
|
|||||||
<!DOCTYPE module PUBLIC
|
<!DOCTYPE module PUBLIC
|
||||||
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
|
"-//Puppy Crawl//DTD Check Configuration 1.3//EN"
|
||||||
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
|
"http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
|
||||||
|
|
||||||
<module name="Checker">
|
<module name="Checker">
|
||||||
<property name="charset" value="UTF-8"/>
|
<property name="charset" value="UTF-8"/>
|
||||||
<property name="severity" value="warning"/>
|
<property name="severity" value="warning"/>
|
||||||
<property name="fileExtensions" value="java, properties, xml"/>
|
<property name="fileExtensions" value="java, properties, xml"/>
|
||||||
|
|
||||||
<module name="SuppressionFilter">
|
<module name="SuppressionFilter">
|
||||||
<property name="file" value="supressions.xml"/>
|
<property name="file" value="supressions.xml"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module name="FileTabCharacter">
|
<module name="FileTabCharacter">
|
||||||
<property name="eachLine" value="true"/>
|
<property name="eachLine" value="true"/>
|
||||||
</module>
|
</module>
|
||||||
|
|
||||||
<module name="TreeWalker">
|
<module name="TreeWalker">
|
||||||
<module name="OuterTypeFilename"/>
|
<module name="OuterTypeFilename"/>
|
||||||
<module name="IllegalTokenText">
|
<module name="IllegalTokenText">
|
||||||
@ -91,7 +87,7 @@
|
|||||||
value="Local variable name ''{0}'' must match pattern ''{1}''."/>
|
value="Local variable name ''{0}'' must match pattern ''{1}''."/>
|
||||||
</module>
|
</module>
|
||||||
<module name="ClassTypeParameterName">
|
<module name="ClassTypeParameterName">
|
||||||
<property name="format" value="(^[A-Z][0-9]?)$|([A-Z][a-zA-Z0-9][_]*[T]$)"/>
|
<property name="format" value="(^[A-Z][a-zA-Z0-9]*$)|([A-Z][a-zA-Z0-9]*[_][a-zA-Z0-9]*$)"/>
|
||||||
<message key="name.invalidPattern"
|
<message key="name.invalidPattern"
|
||||||
value="Class type name ''{0}'' must match pattern ''{1}''."/>
|
value="Class type name ''{0}'' must match pattern ''{1}''."/>
|
||||||
</module>
|
</module>
|
||||||
@ -112,7 +108,8 @@
|
|||||||
value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
|
value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
|
||||||
</module>
|
</module>
|
||||||
<module name="OverloadMethodsDeclarationOrder"/>
|
<module name="OverloadMethodsDeclarationOrder"/>
|
||||||
<module name="CustomImportOrder"/><!-- http://checkstyle.sourceforge.net/config_imports.html -->
|
<module name="CustomImportOrder"/>
|
||||||
|
<!-- http://checkstyle.sourceforge.net/config_imports.html -->
|
||||||
<module name="MethodParamPad"/>
|
<module name="MethodParamPad"/>
|
||||||
<module name="OperatorWrap">
|
<module name="OperatorWrap">
|
||||||
<property name="option" value="NL"/>
|
<property name="option" value="NL"/>
|
||||||
@ -133,4 +130,4 @@
|
|||||||
</module>
|
</module>
|
||||||
<module name="CommentsIndentation"/>
|
<module name="CommentsIndentation"/>
|
||||||
</module>
|
</module>
|
||||||
</module>
|
</module>
|
111
pom.xml
111
pom.xml
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
<groupId>me.totalfreedom</groupId>
|
<groupId>me.totalfreedom</groupId>
|
||||||
<artifactId>TotalFreedomMod</artifactId>
|
<artifactId>TotalFreedomMod</artifactId>
|
||||||
<version>2021.02-RC03</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>
|
||||||
@ -75,9 +76,9 @@
|
|||||||
</repository>
|
</repository>
|
||||||
|
|
||||||
<repository>
|
<repository>
|
||||||
<id>jcenter</id>
|
<id>dv8tion</id>
|
||||||
<name>jcenter-bintray</name>
|
<name>m2-dv8tion</name>
|
||||||
<url>https://jcenter.bintray.com</url>
|
<url>https://m2.dv8tion.net/releases/</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,37 +154,30 @@
|
|||||||
</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>
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>net.dv8tion</groupId>
|
<groupId>net.dv8tion</groupId>
|
||||||
<artifactId>JDA</artifactId>
|
<artifactId>JDA</artifactId>
|
||||||
<version>4.2.0_224</version>
|
<version>4.2.1_255</version>
|
||||||
<scope>provided</scope>
|
<scope>provided</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<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>
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
package me.totalfreedom.totalfreedommod;
|
package me.totalfreedom.totalfreedommod;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
import java.util.List;
|
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
import me.totalfreedom.totalfreedommod.util.FSync;
|
import me.totalfreedom.totalfreedommod.util.FSync;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
@ -11,10 +10,12 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||||
import org.bukkit.event.player.PlayerKickEvent;
|
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
public class AntiSpam extends FreedomService
|
public class AntiSpam extends FreedomService
|
||||||
{
|
{
|
||||||
|
|
||||||
@ -22,7 +23,7 @@ public class AntiSpam extends FreedomService
|
|||||||
public static final int TICKS_PER_CYCLE = 2 * 10;
|
public static final int TICKS_PER_CYCLE = 2 * 10;
|
||||||
//
|
//
|
||||||
public BukkitTask cycleTask = null;
|
public BukkitTask cycleTask = null;
|
||||||
List<Player> markedForDeath = new ArrayList<>();
|
private Map<Player, Integer> muteCounts = new HashMap<>();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStart()
|
public void onStart()
|
||||||
@ -67,23 +68,26 @@ public class AntiSpam extends FreedomService
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
String message = event.getMessage().trim();
|
|
||||||
|
|
||||||
final FPlayer playerdata = plugin.pl.getPlayerSync(player);
|
final FPlayer playerdata = plugin.pl.getPlayerSync(player);
|
||||||
|
int count = muteCounts.getOrDefault(player, 0);
|
||||||
|
int minutes = ConfigEntry.ANTISPAM_MINUTES.getInteger();
|
||||||
|
|
||||||
// Check for spam
|
// Check for spam
|
||||||
if (playerdata.incrementAndGetMsgCount() > MSG_PER_CYCLE)
|
if (playerdata.incrementAndGetMsgCount() > MSG_PER_CYCLE && !playerdata.isMuted())
|
||||||
{
|
{
|
||||||
if (!markedForDeath.contains(player))
|
count++;
|
||||||
{
|
muteCounts.put(player, count);
|
||||||
markedForDeath.add(player);
|
|
||||||
FSync.bcastMsg(player.getName() + " was automatically kicked for spamming chat.", ChatColor.RED);
|
|
||||||
FSync.autoEject(player, "Kicked for spamming chat.");
|
|
||||||
|
|
||||||
playerdata.resetMsgCount();
|
int time = count * minutes;
|
||||||
|
playerdata.setMuted(true, time);
|
||||||
|
|
||||||
event.setCancelled(true);
|
FSync.bcastMsg(String.format("%s has automatically been muted for %d minutes for spamming chat.",
|
||||||
}
|
player.getName(),
|
||||||
|
time),
|
||||||
|
ChatColor.RED);
|
||||||
|
|
||||||
|
playerdata.resetMsgCount();
|
||||||
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
else if (playerdata.incrementAndGetMsgCount() > MSG_PER_CYCLE / 2)
|
else if (playerdata.incrementAndGetMsgCount() > MSG_PER_CYCLE / 2)
|
||||||
{
|
{
|
||||||
@ -122,10 +126,4 @@ public class AntiSpam extends FreedomService
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.NORMAL)
|
|
||||||
public void onPlayerKick(PlayerKickEvent event)
|
|
||||||
{
|
|
||||||
markedForDeath.remove(event.getPlayer());
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -159,24 +159,20 @@ public class ChatManager extends FreedomService
|
|||||||
FLog.info("[ADMIN] " + sender.getName() + " " + display.getTag() + ": " + message, true);
|
FLog.info("[ADMIN] " + sender.getName() + " " + display.getTag() + ": " + message, true);
|
||||||
plugin.dc.messageAdminChatChannel(sender.getName() + " \u00BB " + message);
|
plugin.dc.messageAdminChatChannel(sender.getName() + " \u00BB " + message);
|
||||||
|
|
||||||
for (Player player : server.getOnlinePlayers())
|
server.getOnlinePlayers().stream().filter(player -> plugin.al.isAdmin(player)).forEach(player ->
|
||||||
{
|
{
|
||||||
if (plugin.al.isAdmin(player))
|
Admin admin = plugin.al.getAdmin(player);
|
||||||
{
|
if (!Strings.isNullOrEmpty(admin.getAcFormat())) {
|
||||||
Admin admin = plugin.al.getAdmin(player);
|
String format = admin.getAcFormat();
|
||||||
if (!Strings.isNullOrEmpty(admin.getAcFormat()))
|
ChatColor color = getColor(display);
|
||||||
{
|
String msg = format.replace("%name%", sender.getName()).replace("%rank%", display.getAbbr()).replace("%rankcolor%", color.toString()).replace("%msg%", message);
|
||||||
String format = admin.getAcFormat();
|
player.sendMessage(FUtil.colorize(msg));
|
||||||
ChatColor color = getColor(display);
|
|
||||||
String msg = format.replace("%name%", sender.getName()).replace("%rank%", display.getAbbr()).replace("%rankcolor%", color.toString()).replace("%msg%", message);
|
|
||||||
player.sendMessage(FUtil.colorize(msg));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
player.sendMessage("[" + ChatColor.AQUA + "ADMIN" + ChatColor.WHITE + "] " + ChatColor.DARK_RED + sender.getName() + ChatColor.DARK_GRAY + " [" + getColoredTag(display) + ChatColor.DARK_GRAY + "]" + ChatColor.WHITE + ": " + ChatColor.GOLD + FUtil.colorize(message));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
|
{
|
||||||
|
player.sendMessage("[" + ChatColor.AQUA + "ADMIN" + ChatColor.WHITE + "] " + ChatColor.DARK_RED + sender.getName() + ChatColor.DARK_GRAY + " [" + getColoredTag(display) + ChatColor.DARK_GRAY + "]" + ChatColor.WHITE + ": " + ChatColor.GOLD + FUtil.colorize(message));
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reportAction(Player reporter, Player reported, String report)
|
public void reportAction(Player reporter, Player reported, String report)
|
||||||
|
@ -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.isAdminImpostor(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);
|
||||||
|
@ -28,7 +28,6 @@ import me.totalfreedom.totalfreedommod.command.CommandLoader;
|
|||||||
import me.totalfreedom.totalfreedommod.config.MainConfig;
|
import me.totalfreedom.totalfreedommod.config.MainConfig;
|
||||||
import me.totalfreedom.totalfreedommod.discord.Discord;
|
import me.totalfreedom.totalfreedommod.discord.Discord;
|
||||||
import me.totalfreedom.totalfreedommod.freeze.Freezer;
|
import me.totalfreedom.totalfreedommod.freeze.Freezer;
|
||||||
import me.totalfreedom.totalfreedommod.fun.CurseListener;
|
|
||||||
import me.totalfreedom.totalfreedommod.fun.ItemFun;
|
import me.totalfreedom.totalfreedommod.fun.ItemFun;
|
||||||
import me.totalfreedom.totalfreedommod.fun.Jumppads;
|
import me.totalfreedom.totalfreedommod.fun.Jumppads;
|
||||||
import me.totalfreedom.totalfreedommod.fun.Landminer;
|
import me.totalfreedom.totalfreedommod.fun.Landminer;
|
||||||
@ -116,7 +115,6 @@ public class TotalFreedomMod extends JavaPlugin
|
|||||||
public Monitors mo;
|
public Monitors mo;
|
||||||
public MovementValidator mv;
|
public MovementValidator mv;
|
||||||
public ServerPing sp;
|
public ServerPing sp;
|
||||||
public CurseListener cul;
|
|
||||||
public ItemFun it;
|
public ItemFun it;
|
||||||
public Landminer lm;
|
public Landminer lm;
|
||||||
public MP44 mp;
|
public MP44 mp;
|
||||||
@ -129,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;
|
||||||
@ -368,7 +365,6 @@ public class TotalFreedomMod extends JavaPlugin
|
|||||||
private void initFun()
|
private void initFun()
|
||||||
{
|
{
|
||||||
// Fun
|
// Fun
|
||||||
cul = new CurseListener();
|
|
||||||
it = new ItemFun();
|
it = new ItemFun();
|
||||||
lm = new Landminer();
|
lm = new Landminer();
|
||||||
mp = new MP44();
|
mp = new MP44();
|
||||||
|
@ -25,17 +25,9 @@ public class Admin
|
|||||||
private boolean active = true;
|
private boolean active = true;
|
||||||
private Rank rank = Rank.ADMIN;
|
private Rank rank = Rank.ADMIN;
|
||||||
private Date lastLogin = new Date();
|
private Date lastLogin = new Date();
|
||||||
|
|
||||||
|
|
||||||
private Boolean commandSpy = false;
|
private Boolean commandSpy = false;
|
||||||
|
|
||||||
|
|
||||||
private Boolean potionSpy = false;
|
private Boolean potionSpy = false;
|
||||||
|
|
||||||
|
|
||||||
private String acFormat = null;
|
private String acFormat = null;
|
||||||
|
|
||||||
|
|
||||||
private String pteroID = null;
|
private String pteroID = null;
|
||||||
|
|
||||||
public Admin(Player player)
|
public Admin(Player player)
|
||||||
|
@ -22,8 +22,7 @@ import org.bukkit.entity.Player;
|
|||||||
public class AdminList extends FreedomService
|
public class AdminList extends FreedomService
|
||||||
{
|
{
|
||||||
public static final List<String> vanished = new ArrayList<>();
|
public static final List<String> vanished = new ArrayList<>();
|
||||||
public final List<String> verifiedNoAdmin = new ArrayList<>();
|
public final Map<String, List<String>> verifiedNoAdmin = Maps.newHashMap();
|
||||||
public final Map<String, List<String>> verifiedNoAdminIps = Maps.newHashMap();
|
|
||||||
private final Set<Admin> allAdmins = Sets.newHashSet(); // Includes disabled admins
|
private final Set<Admin> allAdmins = Sets.newHashSet(); // Includes disabled admins
|
||||||
// Only active admins below
|
// Only active admins below
|
||||||
private final Set<Admin> activeAdmins = Sets.newHashSet();
|
private final Set<Admin> activeAdmins = Sets.newHashSet();
|
||||||
@ -240,8 +239,7 @@ public class AdminList extends FreedomService
|
|||||||
|
|
||||||
public boolean isVerifiedAdmin(Player player)
|
public boolean isVerifiedAdmin(Player player)
|
||||||
{
|
{
|
||||||
// Fix of issue FS-33
|
return verifiedNoAdmin.containsKey(player.getName()) && verifiedNoAdmin.get(player.getName()).contains(FUtil.getIp(player));
|
||||||
return !verifiedNoAdmin.contains(player.getName()) || verifiedNoAdminIps.containsKey(player.getName()) && !verifiedNoAdminIps.get(player.getName()).contains(FUtil.getIp(player));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isIdentityMatched(Player player)
|
public boolean isIdentityMatched(Player player)
|
||||||
@ -404,13 +402,8 @@ public class AdminList extends FreedomService
|
|||||||
return ipTable;
|
return ipTable;
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<String> getVerifiedNoAdmin()
|
public Map<String, List<String>> getVerifiedNoAdmin()
|
||||||
{
|
{
|
||||||
return verifiedNoAdmin;
|
return verifiedNoAdmin;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Map<String, List<String>> getVerifiedNoAdminIps()
|
|
||||||
{
|
|
||||||
return verifiedNoAdminIps;
|
|
||||||
}
|
|
||||||
}
|
}
|
@ -169,7 +169,7 @@ public class Ban
|
|||||||
|
|
||||||
public boolean isExpired()
|
public boolean isExpired()
|
||||||
{
|
{
|
||||||
return hasExpiry() && expiryUnix < FUtil.getUnixTime();
|
return hasExpiry() && FUtil.getUnixDate(expiryUnix).before(new Date(FUtil.getUnixTime()));
|
||||||
}
|
}
|
||||||
|
|
||||||
public String bakeKickMessage()
|
public String bakeKickMessage()
|
||||||
|
@ -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()))
|
||||||
|
@ -14,6 +14,7 @@ import org.bukkit.attribute.AttributeModifier;
|
|||||||
import org.bukkit.block.data.AnaloguePowerable;
|
import org.bukkit.block.data.AnaloguePowerable;
|
||||||
import org.bukkit.block.data.Powerable;
|
import org.bukkit.block.data.Powerable;
|
||||||
import org.bukkit.entity.Entity;
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.FallingBlock;
|
||||||
import org.bukkit.entity.Tameable;
|
import org.bukkit.entity.Tameable;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
@ -30,6 +31,7 @@ import org.bukkit.event.entity.EntityCombustEvent;
|
|||||||
import org.bukkit.event.entity.EntityDamageEvent;
|
import org.bukkit.event.entity.EntityDamageEvent;
|
||||||
import org.bukkit.event.entity.EntityDeathEvent;
|
import org.bukkit.event.entity.EntityDeathEvent;
|
||||||
import org.bukkit.event.entity.EntityExplodeEvent;
|
import org.bukkit.event.entity.EntityExplodeEvent;
|
||||||
|
import org.bukkit.event.entity.EntitySpawnEvent;
|
||||||
import org.bukkit.event.entity.ExplosionPrimeEvent;
|
import org.bukkit.event.entity.ExplosionPrimeEvent;
|
||||||
import org.bukkit.event.entity.FireworkExplodeEvent;
|
import org.bukkit.event.entity.FireworkExplodeEvent;
|
||||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||||
@ -212,6 +214,15 @@ public class EventBlocker extends FreedomService
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onEntitySpawn(EntitySpawnEvent event)
|
||||||
|
{
|
||||||
|
if (!ConfigEntry.ALLOW_GRAVITY.getBoolean() && event.getEntity() instanceof FallingBlock)
|
||||||
|
{
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onBlockPhysics(BlockPhysicsEvent event)
|
public void onBlockPhysics(BlockPhysicsEvent event)
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,11 +1,7 @@
|
|||||||
package me.totalfreedom.totalfreedommod.bridge;
|
package me.totalfreedom.totalfreedommod.bridge;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.sql.Connection;
|
import java.sql.*;
|
||||||
import java.sql.DriverManager;
|
|
||||||
import java.sql.ResultSet;
|
|
||||||
import java.sql.SQLException;
|
|
||||||
import java.sql.Statement;
|
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -228,11 +224,12 @@ public class CoreProtectBridge extends FreedomService
|
|||||||
String database = ConfigEntry.COREPROTECT_MYSQL_DATABASE.getString();
|
String database = ConfigEntry.COREPROTECT_MYSQL_DATABASE.getString();
|
||||||
String url = host + ":" + port + "/" + database + "?user=" + username + "&password=" + password + "&useSSL=false";
|
String url = host + ":" + port + "/" + database + "?user=" + username + "&password=" + password + "&useSSL=false";
|
||||||
connection = DriverManager.getConnection("jdbc:sql://" + url);
|
connection = DriverManager.getConnection("jdbc:sql://" + url);
|
||||||
final Statement statement = connection.createStatement();
|
final PreparedStatement statement = connection.prepareStatement("SELECT id FROM co_world WHERE world = ?");
|
||||||
statement.setQueryTimeout(30);
|
statement.setQueryTimeout(30);
|
||||||
|
|
||||||
// Obtain world ID from CoreProtect database
|
// Obtain world ID from CoreProtect database
|
||||||
ResultSet resultSet = statement.executeQuery("SELECT id FROM co_world WHERE world = '" + world.getName() + "'");
|
statement.setString(1, world.getName());
|
||||||
|
ResultSet resultSet = statement.executeQuery();
|
||||||
String worldID = null;
|
String worldID = null;
|
||||||
while (resultSet.next())
|
while (resultSet.next())
|
||||||
{
|
{
|
||||||
@ -250,7 +247,10 @@ public class CoreProtectBridge extends FreedomService
|
|||||||
// Iterate through each table and delete their data if the world ID matches
|
// Iterate through each table and delete their data if the world ID matches
|
||||||
for (String table : tables)
|
for (String table : tables)
|
||||||
{
|
{
|
||||||
statement.executeQuery("DELETE FROM " + table + " WHERE wid = " + worldID);
|
final PreparedStatement statement1 = connection.prepareStatement("DELETE FROM ? WHERE wid = ?");
|
||||||
|
statement1.setString(1, table);
|
||||||
|
statement1.setString(2, worldID);
|
||||||
|
statement1.executeQuery();
|
||||||
}
|
}
|
||||||
|
|
||||||
connection.close();
|
connection.close();
|
||||||
@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -137,7 +137,7 @@ public class Command_adminworld extends FreedomCommand
|
|||||||
{
|
{
|
||||||
return noPerms();
|
return noPerms();
|
||||||
}
|
}
|
||||||
sender.sendMessage(ex.getMessage());
|
msg(ex.getMessage());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ public class Command_adventure extends FreedomCommand
|
|||||||
{
|
{
|
||||||
if (isConsole())
|
if (isConsole())
|
||||||
{
|
{
|
||||||
sender.sendMessage("When used from the console, you must define a target player.");
|
msg("When used from the console, you must define a target player.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ public class Command_adventure extends FreedomCommand
|
|||||||
|
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -72,8 +72,8 @@ public class Command_banip extends FreedomCommand
|
|||||||
{
|
{
|
||||||
// Broadcast
|
// Broadcast
|
||||||
FLog.info(ChatColor.RED + sender.getName() + " - Banned the IP " + ip);
|
FLog.info(ChatColor.RED + sender.getName() + " - Banned the IP " + ip);
|
||||||
String message = ChatColor.RED + sender.getName() + " - Banned " + (plugin.al.isAdmin(player) ? "the IP " + ip : "an IP");
|
String message = sender.getName() + " - Banned " + (plugin.al.isAdmin(player) ? "the IP " + ip : "an IP");
|
||||||
player.sendMessage(message);
|
msg(player, message, ChatColor.RED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
@ -92,7 +94,7 @@ public class Command_blockedit extends FreedomCommand
|
|||||||
final Player player2 = getPlayer(args[0]);
|
final Player player2 = getPlayer(args[0]);
|
||||||
if (player2 == null)
|
if (player2 == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
@ -93,7 +95,7 @@ public class Command_blockpvp extends FreedomCommand
|
|||||||
final Player p = getPlayer(args[0]);
|
final Player p = getPlayer(args[0]);
|
||||||
if (p == null)
|
if (p == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
@ -42,14 +44,14 @@ public class Command_cage extends FreedomCommand
|
|||||||
Player player = getPlayer(args[0]);
|
Player player = getPlayer(args[0]);
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
final FPlayer fPlayer = plugin.pl.getPlayer(player);
|
final FPlayer fPlayer = plugin.pl.getPlayer(player);
|
||||||
if (fPlayer.getCageData().isCaged())
|
if (fPlayer.getCageData().isCaged())
|
||||||
{
|
{
|
||||||
sender.sendMessage(ChatColor.RED + "That player is already caged.");
|
msg("That player is already caged.", ChatColor.RED);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
sender.sendMessage(ChatColor.RED + "Invalid block!");
|
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -23,7 +23,7 @@ public class Command_cartsit extends FreedomCommand
|
|||||||
|
|
||||||
if (targetPlayer == null)
|
if (targetPlayer == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -32,7 +32,7 @@ public class Command_cartsit extends FreedomCommand
|
|||||||
{
|
{
|
||||||
if (targetPlayer == null)
|
if (targetPlayer == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage("When used from the console, you must define a target player: /cartsit <player>");
|
msg("When used from the console, you must define a target player: /cartsit <player>");
|
||||||
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
|
||||||
@ -20,11 +20,11 @@ public class Command_clearchat extends FreedomCommand
|
|||||||
{
|
{
|
||||||
for (int i = 0; i < 100; i++)
|
for (int i = 0; i < 100; i++)
|
||||||
{
|
{
|
||||||
player.sendMessage("");
|
msg(player, "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
FUtil.adminAction(sender.getName(), "Cleared chat", true);
|
FUtil.adminAction(sender.getName(), "Cleared chat", true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -52,7 +52,7 @@ public class Command_clearinventory extends FreedomCommand
|
|||||||
|
|
||||||
player.getInventory().clear();
|
player.getInventory().clear();
|
||||||
msg("Cleared " + player.getName() + "'s inventory.");
|
msg("Cleared " + player.getName() + "'s inventory.");
|
||||||
player.sendMessage(sender.getName() + " has cleared your inventory.");
|
msg(player, sender.getName() + " has cleared your inventory.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -43,7 +43,7 @@ public class Command_commandlist extends FreedomCommand
|
|||||||
|
|
||||||
Collections.sort(commands);
|
Collections.sort(commands);
|
||||||
|
|
||||||
sender.sendMessage(StringUtils.join(commands, ", "));
|
msg(StringUtils.join(commands, ", "));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,7 @@ public class Command_creative extends FreedomCommand
|
|||||||
{
|
{
|
||||||
if (isConsole())
|
if (isConsole())
|
||||||
{
|
{
|
||||||
sender.sendMessage("When used from the console, you must define a target player.");
|
msg("When used from the console, you must define a target player.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ public class Command_creative extends FreedomCommand
|
|||||||
|
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,64 +0,0 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
|
||||||
|
|
||||||
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.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.SENIOR_ADMIN, source = SourceType.ONLY_IN_GAME)
|
|
||||||
@CommandParameters(description = "Curse someone - sends a cursed texture pack to the specified player.", usage = "/<command> <player>")
|
|
||||||
public class Command_curse extends FreedomCommand
|
|
||||||
{
|
|
||||||
|
|
||||||
/* The only problem with this is someone can prevent themself from being cursed by declining to download the
|
|
||||||
resource pack. However, if they hit yes, then you can curse them whenever you want and they can't stop it unless
|
|
||||||
they go into their server settings. and set server resource packs to prompt or disabled */
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
|
||||||
{
|
|
||||||
|
|
||||||
if (!FUtil.isExecutive(sender.getName()))
|
|
||||||
{
|
|
||||||
return noPerms();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.length == 0)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
final Player player = getPlayer(args[0]);
|
|
||||||
|
|
||||||
if (player == null)
|
|
||||||
{
|
|
||||||
msg(FreedomCommand.PLAYER_NOT_FOUND);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (plugin.cul.cursedPlayers.containsKey(player))
|
|
||||||
{
|
|
||||||
msg("Already attempting to curse!", ChatColor.RED);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
player.setResourcePack("http://play.totalfreedom.me/cursed.zip");
|
|
||||||
msg("Attempting to curse " + player.getName(), ChatColor.GREEN);
|
|
||||||
plugin.cul.cursedPlayers.put(player, playerSender);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public List<String> getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args)
|
|
||||||
{
|
|
||||||
if (args.length == 1 && plugin.al.isAdmin(sender) && FUtil.isExecutive(sender.getName()))
|
|
||||||
{
|
|
||||||
return FUtil.getPlayerList();
|
|
||||||
}
|
|
||||||
return Collections.emptyList();
|
|
||||||
}
|
|
||||||
}
|
|
@ -39,7 +39,8 @@ public class Command_deop extends FreedomCommand
|
|||||||
{
|
{
|
||||||
matchedPlayerNames.add(player.getName());
|
matchedPlayerNames.add(player.getName());
|
||||||
player.setOp(false);
|
player.setOp(false);
|
||||||
player.sendMessage(FreedomCommand.YOU_ARE_NOT_OP);
|
msg(player, YOU_ARE_NOT_OP);
|
||||||
|
plugin.rm.updateDisplay(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,8 @@ public class Command_deopall extends FreedomCommand
|
|||||||
for (Player player : server.getOnlinePlayers())
|
for (Player player : server.getOnlinePlayers())
|
||||||
{
|
{
|
||||||
player.setOp(false);
|
player.setOp(false);
|
||||||
player.sendMessage(FreedomCommand.YOU_ARE_NOT_OP);
|
msg(player, YOU_ARE_NOT_OP);
|
||||||
|
plugin.rm.updateDisplay(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -43,7 +43,7 @@ public class Command_dispfill extends FreedomCommand
|
|||||||
}
|
}
|
||||||
catch (NumberFormatException ex)
|
catch (NumberFormatException ex)
|
||||||
{
|
{
|
||||||
sender.sendMessage("Invalid radius.");
|
msg("Invalid radius.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,7 +60,7 @@ public class Command_dispfill extends FreedomCommand
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sender.sendMessage("Skipping invalid item: " + searchItem);
|
msg("Skipping invalid item: " + searchItem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -80,7 +80,8 @@ public class Command_dispfill extends FreedomCommand
|
|||||||
{
|
{
|
||||||
if (targetBlock.getType().equals(Material.DISPENSER))
|
if (targetBlock.getType().equals(Material.DISPENSER))
|
||||||
{
|
{
|
||||||
sender.sendMessage("Filling dispenser @ " + FUtil.formatLocation(targetBlock.getLocation()));
|
msg("Filling dispenser @ " + FUtil.formatLocation(targetBlock.getLocation()));
|
||||||
|
plugin.cpb.getCoreProtectAPI().logContainerTransaction(sender.getName(), targetBlock.getLocation());
|
||||||
setDispenserContents(targetBlock, itemsArray);
|
setDispenserContents(targetBlock, itemsArray);
|
||||||
affected++;
|
affected++;
|
||||||
}
|
}
|
||||||
@ -89,7 +90,7 @@ public class Command_dispfill extends FreedomCommand
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sender.sendMessage("Done. " + affected + " dispenser(s) filled.");
|
msg("Done. " + affected + " dispenser(s) filled.");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -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;
|
||||||
@ -36,14 +35,14 @@ public class Command_doom extends FreedomCommand
|
|||||||
|
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
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))
|
||||||
|
@ -23,7 +23,7 @@ public class Command_gcmd extends FreedomCommand
|
|||||||
|
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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();
|
|
||||||
}
|
|
||||||
sender.sendMessage(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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -39,7 +39,7 @@ public class Command_inspect extends FreedomCommand
|
|||||||
}
|
}
|
||||||
catch (NumberFormatException e)
|
catch (NumberFormatException e)
|
||||||
{
|
{
|
||||||
sender.sendMessage(ChatColor.RED + "Invalid number");
|
msg("Invalid number", ChatColor.RED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -48,19 +48,19 @@ public class Command_inspect extends FreedomCommand
|
|||||||
{
|
{
|
||||||
if (pageIndex < 1 || pageIndex > paged.getPageCount())
|
if (pageIndex < 1 || pageIndex > paged.getPageCount())
|
||||||
{
|
{
|
||||||
sender.sendMessage(ChatColor.RED + "Not a valid page number");
|
msg("Not a valid page number", ChatColor.RED);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
sender.sendMessage("---- " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector" + ChatColor.WHITE + " ---- ");
|
msg("---- " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "Block Inspector" + ChatColor.WHITE + " ---- ", ChatColor.WHITE);
|
||||||
|
|
||||||
List<String> page = paged.getPage(pageIndex);
|
List<String> page = paged.getPage(pageIndex);
|
||||||
for (String entries : page)
|
for (String entries : page)
|
||||||
{
|
{
|
||||||
sender.sendMessage(entries);
|
msg(entries);
|
||||||
}
|
}
|
||||||
|
|
||||||
sender.sendMessage("Page " + pageIndex + "/" + paged.getPageCount() + " | To index through the pages, type " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "/ins history <page>");
|
msg("Page " + pageIndex + "/" + paged.getPageCount() + " | To index through the pages, type " + net.md_5.bungee.api.ChatColor.of("#30ade4") + "/ins history <page>", ChatColor.WHITE);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import me.totalfreedom.totalfreedommod.admin.Admin;
|
import me.totalfreedom.totalfreedommod.admin.Admin;
|
||||||
import me.totalfreedom.totalfreedommod.admin.AdminList;
|
import me.totalfreedom.totalfreedommod.admin.AdminList;
|
||||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
@ -14,10 +12,14 @@ 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;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.IMPOSTOR, source = SourceType.BOTH)
|
@CommandPermissions(level = Rank.IMPOSTOR, source = SourceType.BOTH)
|
||||||
@CommandParameters(description = "Lists the real names of all online players.", usage = "/<command> [-s | -i | -f | -v]", aliases = "who,lsit")
|
@CommandParameters(description = "Lists the real names of all online players.", usage = "/<command> [-s | -i | -f | -v]", aliases = "who,lsit")
|
||||||
public class Command_list extends FreedomCommand
|
public class Command_list extends FreedomCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole)
|
public boolean run(final CommandSender sender, final Player playerSender, final Command cmd, final String commandLabel, final String[] args, final boolean senderIsConsole)
|
||||||
{
|
{
|
||||||
if (args.length > 1)
|
if (args.length > 1)
|
||||||
@ -29,7 +31,10 @@ public class Command_list extends FreedomCommand
|
|||||||
List<String> names = new ArrayList<>();
|
List<String> names = new ArrayList<>();
|
||||||
for (Player player : server.getOnlinePlayers())
|
for (Player player : server.getOnlinePlayers())
|
||||||
{
|
{
|
||||||
names.add(player.getName());
|
if (!plugin.al.isVanished(player.getName()))
|
||||||
|
{
|
||||||
|
names.add(player.getName());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
msg("There are " + names.size() + "/" + server.getMaxPlayers() + " players online:\n" + StringUtils.join(names, ", "), ChatColor.WHITE);
|
msg("There are " + names.size() + "/" + server.getMaxPlayers() + " players online:\n" + StringUtils.join(names, ", "), ChatColor.WHITE);
|
||||||
return true;
|
return true;
|
||||||
@ -83,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())
|
||||||
@ -96,7 +101,7 @@ public class Command_list extends FreedomCommand
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(server.getOnlinePlayers().size() - AdminList.vanished.size())
|
onlineStats.append(ChatColor.BLUE).append("There are ").append(ChatColor.RED).append(FUtil.getFakePlayerCount())
|
||||||
.append(ChatColor.BLUE)
|
.append(ChatColor.BLUE)
|
||||||
.append(" out of a maximum ")
|
.append(" out of a maximum ")
|
||||||
.append(ChatColor.RED)
|
.append(ChatColor.RED)
|
||||||
@ -141,13 +146,13 @@ public class Command_list extends FreedomCommand
|
|||||||
.append(StringUtils.join(n, ChatColor.WHITE + ", "));
|
.append(StringUtils.join(n, ChatColor.WHITE + ", "));
|
||||||
if (senderIsConsole)
|
if (senderIsConsole)
|
||||||
{
|
{
|
||||||
sender.sendMessage(ChatColor.stripColor(onlineStats.toString()));
|
msg(ChatColor.stripColor(onlineStats.toString()));
|
||||||
sender.sendMessage(ChatColor.stripColor(onlineUsers.toString()));
|
msg(ChatColor.stripColor(onlineUsers.toString()));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sender.sendMessage(onlineStats.toString());
|
msg(onlineStats.toString());
|
||||||
sender.sendMessage(onlineUsers.toString());
|
msg(onlineUsers.toString());
|
||||||
}
|
}
|
||||||
n.clear();
|
n.clear();
|
||||||
return true;
|
return true;
|
||||||
|
@ -53,7 +53,7 @@ public class Command_lockup extends FreedomCommand
|
|||||||
|
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,7 +70,7 @@ public class Command_lockup extends FreedomCommand
|
|||||||
|
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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])));
|
||||||
@ -54,7 +54,7 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
Player player = getPlayer(args[3]);
|
Player player = getPlayer(args[3]);
|
||||||
if (player != null)
|
if (player != null)
|
||||||
{
|
{
|
||||||
player.sendMessage(ChatColor.GREEN + sender.getName() + " gave you " + amount + " coins. Your new balance is " + playerData.getCoins());
|
msg(player, sender.getName() + " gave you " + amount + " coins. Your new balance is " + playerData.getCoins(), ChatColor.GREEN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -64,7 +64,7 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
PlayerData playerData = plugin.pl.getData(player);
|
PlayerData playerData = plugin.pl.getData(player);
|
||||||
playerData.setCoins(playerData.getCoins() + amount);
|
playerData.setCoins(playerData.getCoins() + amount);
|
||||||
plugin.pl.save(playerData);
|
plugin.pl.save(playerData);
|
||||||
player.sendMessage(ChatColor.GREEN + sender.getName() + " gave you " + amount + " coins. Your new balance is " + playerData.getCoins());
|
msg(player, sender.getName() + " gave you " + amount + " coins. Your new balance is " + playerData.getCoins(), ChatColor.GREEN);
|
||||||
}
|
}
|
||||||
msg("Successfully added " + amount + " coins to all online players.", ChatColor.GREEN);
|
msg("Successfully added " + amount + " coins to all online players.", ChatColor.GREEN);
|
||||||
}
|
}
|
||||||
@ -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])));
|
||||||
@ -97,7 +99,7 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
Player player = getPlayer(args[3]);
|
Player player = getPlayer(args[3]);
|
||||||
if (player != null)
|
if (player != null)
|
||||||
{
|
{
|
||||||
player.sendMessage(ChatColor.RED + sender.getName() + " took " + amount + " coins from you. Your new balance is " + playerData.getCoins());
|
msg(player, sender.getName() + " took " + amount + " coins from you. Your new balance is " + playerData.getCoins(), ChatColor.RED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -111,7 +113,7 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
playerData.setCoins(0);
|
playerData.setCoins(0);
|
||||||
}
|
}
|
||||||
plugin.pl.save(playerData);
|
plugin.pl.save(playerData);
|
||||||
player.sendMessage(ChatColor.RED + sender.getName() + " took " + amount + " coins from you. Your new balance is " + playerData.getCoins());
|
msg(player, sender.getName() + " took " + amount + " coins from you. Your new balance is " + playerData.getCoins(), ChatColor.RED);
|
||||||
}
|
}
|
||||||
msg("Successfully took " + amount + " coins from all online players.", ChatColor.GREEN);
|
msg("Successfully took " + amount + " coins from all online players.", ChatColor.GREEN);
|
||||||
}
|
}
|
||||||
@ -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])));
|
||||||
@ -138,7 +142,7 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
Player player = getPlayer(args[3]);
|
Player player = getPlayer(args[3]);
|
||||||
if (player != null)
|
if (player != null)
|
||||||
{
|
{
|
||||||
player.sendMessage(ChatColor.GREEN + sender.getName() + " set your coin balance to " + amount);
|
msg(player, sender.getName() + " set your coin balance to " + amount, ChatColor.GREEN);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -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"))
|
||||||
@ -183,7 +192,7 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
Player player = getPlayer(args[3]);
|
Player player = getPlayer(args[3]);
|
||||||
if (player != null)
|
if (player != null)
|
||||||
{
|
{
|
||||||
player.sendMessage(ChatColor.GREEN + sender.getName() + " gave the " + item.getName() + " to you");
|
msg(player, sender.getName() + " gave the " + item.getName() + " to you", ChatColor.GREEN);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -208,7 +217,7 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
Player player = getPlayer(args[3]);
|
Player player = getPlayer(args[3]);
|
||||||
if (player != null)
|
if (player != null)
|
||||||
{
|
{
|
||||||
player.sendMessage(ChatColor.RED + sender.getName() + " took the " + item.getName() + " from you");
|
msg(player, sender.getName() + " took the " + item.getName() + " from you", ChatColor.RED);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -48,12 +48,12 @@ public class Command_manuallyverify extends FreedomCommand
|
|||||||
|
|
||||||
FUtil.adminAction(sender.getName(), "Manually verifying player " + player.getName(), false);
|
FUtil.adminAction(sender.getName(), "Manually verifying player " + player.getName(), false);
|
||||||
player.setOp(true);
|
player.setOp(true);
|
||||||
player.sendMessage(YOU_ARE_OP);
|
msg(player, YOU_ARE_OP);
|
||||||
|
|
||||||
if (plugin.pl.getPlayer(player).getFreezeData().isFrozen())
|
if (plugin.pl.getPlayer(player).getFreezeData().isFrozen())
|
||||||
{
|
{
|
||||||
plugin.pl.getPlayer(player).getFreezeData().setFrozen(false);
|
plugin.pl.getPlayer(player).getFreezeData().setFrozen(false);
|
||||||
player.sendMessage(ChatColor.GRAY + "You have been unfrozen.");
|
msg(player, "You have been unfrozen.");
|
||||||
}
|
}
|
||||||
|
|
||||||
plugin.pl.verify(player, null);
|
plugin.pl.verify(player, null);
|
||||||
|
@ -138,7 +138,7 @@ public class Command_masterbuilderworld extends FreedomCommand
|
|||||||
{
|
{
|
||||||
return noPerms();
|
return noPerms();
|
||||||
}
|
}
|
||||||
sender.sendMessage(ex.getMessage());
|
msg(ex.getMessage());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ public class Command_mbconfig extends FreedomCommand
|
|||||||
plugin.pl.verify(player, null);
|
plugin.pl.verify(player, null);
|
||||||
plugin.rm.updateDisplay(player);
|
plugin.rm.updateDisplay(player);
|
||||||
player.setOp(true);
|
player.setOp(true);
|
||||||
player.sendMessage(YOU_ARE_OP);
|
msg(player, YOU_ARE_OP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (!data.isMasterBuilder())
|
else if (!data.isMasterBuilder())
|
||||||
|
@ -65,7 +65,7 @@ public class Command_moblimiter extends FreedomCommand
|
|||||||
|
|
||||||
if (ConfigEntry.MOB_LIMITER_ENABLED.getBoolean())
|
if (ConfigEntry.MOB_LIMITER_ENABLED.getBoolean())
|
||||||
{
|
{
|
||||||
sender.sendMessage("Moblimiter enabled. Maximum mobcount set to: " + ConfigEntry.MOB_LIMITER_MAX.getInteger() + ".");
|
msg("Moblimiter enabled. Maximum mobcount set to: " + ConfigEntry.MOB_LIMITER_MAX.getInteger() + ".");
|
||||||
|
|
||||||
msg("Dragon: " + (ConfigEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean() ? "disabled" : "enabled") + ".");
|
msg("Dragon: " + (ConfigEntry.MOB_LIMITER_DISABLE_DRAGON.getBoolean() ? "disabled" : "enabled") + ".");
|
||||||
msg("Giant: " + (ConfigEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean() ? "disabled" : "enabled") + ".");
|
msg("Giant: " + (ConfigEntry.MOB_LIMITER_DISABLE_GIANT.getBoolean() ? "disabled" : "enabled") + ".");
|
||||||
|
@ -45,7 +45,7 @@ public class Command_mp44 extends FreedomCommand
|
|||||||
{
|
{
|
||||||
playerdata.disarmMP44();
|
playerdata.disarmMP44();
|
||||||
|
|
||||||
sender.sendMessage(ChatColor.GREEN + "mp44 Disarmed.");
|
msg("mp44 Disarmed.", ChatColor.GREEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -109,7 +109,7 @@ public class Command_mute extends FreedomCommand
|
|||||||
final Player player = getPlayer(args[0]);
|
final Player player = getPlayer(args[0]);
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,7 +7,6 @@ import java.util.regex.Pattern;
|
|||||||
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.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
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.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -81,7 +80,7 @@ public class Command_nickfilter extends FreedomCommand
|
|||||||
|
|
||||||
if (player == null || !plugin.al.isVanished(player.getName()) && !plugin.al.isAdmin(sender))
|
if (player == null || !plugin.al.isVanished(player.getName()) && !plugin.al.isAdmin(sender))
|
||||||
{
|
{
|
||||||
sender.sendMessage(ChatColor.GRAY + "Can't find player by nickname: " + displayName);
|
msg("Can't find player by nickname: " + displayName);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -101,7 +100,7 @@ public class Command_nickfilter extends FreedomCommand
|
|||||||
|
|
||||||
if (!nickMatched)
|
if (!nickMatched)
|
||||||
{
|
{
|
||||||
sender.sendMessage("No nicknames replaced in command.");
|
msg("No nicknames replaced in command.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,7 +112,7 @@ public class Command_nickfilter extends FreedomCommand
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
sender.sendMessage("Sending command: \"" + newCommand + "\".");
|
msg("Sending command: \"" + newCommand + "\".");
|
||||||
server.dispatchCommand(sender, newCommand);
|
server.dispatchCommand(sender, newCommand);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -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
|
||||||
|
@ -40,7 +40,8 @@ public class Command_op extends FreedomCommand
|
|||||||
{
|
{
|
||||||
matchedPlayerNames.add(player.getName());
|
matchedPlayerNames.add(player.getName());
|
||||||
player.setOp(true);
|
player.setOp(true);
|
||||||
player.sendMessage(FreedomCommand.YOU_ARE_OP);
|
msg(player, YOU_ARE_OP);
|
||||||
|
plugin.rm.updateDisplay(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,7 +21,8 @@ public class Command_opall extends FreedomCommand
|
|||||||
if (!player.isOp())
|
if (!player.isOp())
|
||||||
{
|
{
|
||||||
player.setOp(true);
|
player.setOp(true);
|
||||||
player.sendMessage(FreedomCommand.YOU_ARE_OP);
|
msg(player, YOU_ARE_OP);
|
||||||
|
plugin.rm.updateDisplay(player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,7 +16,8 @@ public class Command_opme extends FreedomCommand
|
|||||||
{
|
{
|
||||||
FUtil.adminAction(sender.getName(), "Opping " + sender.getName(), false);
|
FUtil.adminAction(sender.getName(), "Opping " + sender.getName(), false);
|
||||||
sender.setOp(true);
|
sender.setOp(true);
|
||||||
sender.sendMessage(FreedomCommand.YOU_ARE_OP);
|
msg(YOU_ARE_OP);
|
||||||
|
plugin.rm.updateDisplay(playerSender);
|
||||||
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;
|
||||||
@ -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,18 +98,20 @@ 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()))
|
||||||
{
|
{
|
||||||
sender.sendMessage(ChatColor.RED + "Only admins can apply potion effects to other players.");
|
msg("Only admins can apply potion effects to other players.", ChatColor.RED);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -114,7 +119,7 @@ public class Command_potion extends FreedomCommand
|
|||||||
|
|
||||||
if (target == null || plugin.al.isVanished(target.getName()) && !plugin.al.isAdmin(sender))
|
if (target == null || plugin.al.isVanished(target.getName()) && !plugin.al.isAdmin(sender))
|
||||||
{
|
{
|
||||||
msg(FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -122,7 +127,7 @@ public class Command_potion extends FreedomCommand
|
|||||||
{
|
{
|
||||||
if (senderIsConsole)
|
if (senderIsConsole)
|
||||||
{
|
{
|
||||||
sender.sendMessage("You must specify a target player when using this command from the console.");
|
msg("You must specify a target player when using this command from the console.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -130,7 +135,7 @@ public class Command_potion extends FreedomCommand
|
|||||||
PotionEffectType potion_effect_type = PotionEffectType.getByName(args[1]);
|
PotionEffectType potion_effect_type = PotionEffectType.getByName(args[1]);
|
||||||
if (potion_effect_type == null)
|
if (potion_effect_type == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(ChatColor.AQUA + "Invalid potion effect type.");
|
msg("Invalid potion effect type.", ChatColor.AQUA);
|
||||||
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,83 +0,0 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.net.HttpURLConnection;
|
|
||||||
import java.net.URL;
|
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
|
||||||
import me.totalfreedom.totalfreedommod.util.FLog;
|
|
||||||
import me.totalfreedom.totalfreedommod.util.FSync;
|
|
||||||
import org.bukkit.ChatColor;
|
|
||||||
import org.bukkit.command.Command;
|
|
||||||
import org.bukkit.command.CommandSender;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
|
||||||
|
|
||||||
@CommandPermissions(level = Rank.OP, source = SourceType.BOTH)
|
|
||||||
@CommandParameters(description = "Validates if a given account is premium, or cracked.", usage = "/<command> <player>", aliases = "prem")
|
|
||||||
public class Command_premium extends FreedomCommand
|
|
||||||
{
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
|
||||||
{
|
|
||||||
if (args.length != 1)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
final Player player = getPlayer(args[0]);
|
|
||||||
final String name;
|
|
||||||
|
|
||||||
if (player != null)
|
|
||||||
{
|
|
||||||
name = player.getName();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
name = args[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
new BukkitRunnable()
|
|
||||||
{
|
|
||||||
@Override
|
|
||||||
public void run()
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
final URL getUrl = new URL("https://api.ashcon.app/mojang/v2/user/" + name);
|
|
||||||
final HttpURLConnection urlConnection = (HttpURLConnection)getUrl.openConnection();
|
|
||||||
urlConnection.setRequestProperty("User-Agent", "");
|
|
||||||
String message;
|
|
||||||
/*old code
|
|
||||||
BufferedReader in = new BufferedReader(new InputStreamReader(urlConnection.getInputStream())))
|
|
||||||
//message = (!"PREMIUM".equalsIgnoreCase(in.readLine()) ? ChatColor.RED + "No" : ChatColor.DARK_GREEN + "Yes");
|
|
||||||
*/
|
|
||||||
try
|
|
||||||
{
|
|
||||||
if (urlConnection.getResponseCode() == 200)
|
|
||||||
{
|
|
||||||
message = ChatColor.GREEN + "Yes";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
message = ChatColor.RED + "No";
|
|
||||||
}
|
|
||||||
FSync.playerMsg(sender, "Player " + name + " is premium: " + message);
|
|
||||||
}
|
|
||||||
catch (IOException e)
|
|
||||||
{
|
|
||||||
FSync.playerMsg(sender, ChatColor.RED + "There was an error on trying to connect to the API server");
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
catch (IOException ex)
|
|
||||||
{
|
|
||||||
FLog.severe(ex);
|
|
||||||
msg("There was an error querying the API server.", ChatColor.RED);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}.runTaskAsynchronously(plugin);
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
@ -39,7 +39,7 @@ public class Command_rank extends FreedomCommand
|
|||||||
|
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ public class Command_ride extends FreedomCommand
|
|||||||
}
|
}
|
||||||
|
|
||||||
msg("Request accepted.");
|
msg("Request accepted.");
|
||||||
requester.sendMessage(ChatColor.GRAY + "Your request has been accepted.");
|
msg(requester, "Your request has been accepted.");
|
||||||
|
|
||||||
if (requester.getWorld() != playerSender.getWorld())
|
if (requester.getWorld() != playerSender.getWorld())
|
||||||
{
|
{
|
||||||
@ -80,7 +80,7 @@ public class Command_ride extends FreedomCommand
|
|||||||
}
|
}
|
||||||
msg("Request denied.");
|
msg("Request denied.");
|
||||||
RIDE_REQUESTS.remove(playerSender);
|
RIDE_REQUESTS.remove(playerSender);
|
||||||
requester.sendMessage(ChatColor.GRAY + "Your request has been denied.");
|
msg(requester, "Your request has been denied.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -123,10 +123,10 @@ public class Command_ride extends FreedomCommand
|
|||||||
if (playerData.getRideMode().equals("ask") && !FUtil.isExecutive(playerSender.getName()))
|
if (playerData.getRideMode().equals("ask") && !FUtil.isExecutive(playerSender.getName()))
|
||||||
{
|
{
|
||||||
msg("Sent a request to the player.", ChatColor.GREEN);
|
msg("Sent a request to the player.", ChatColor.GREEN);
|
||||||
player.sendMessage(ChatColor.AQUA + sender.getName() + " has requested to ride you.");
|
msg(player, sender.getName() + " has requested to ride you.", ChatColor.AQUA);
|
||||||
player.sendMessage(ChatColor.AQUA + "Type " + ChatColor.GREEN + "/ride accept" + ChatColor.AQUA + " to allow the player to ride you.");
|
msg(player, "Type " + ChatColor.GREEN + "/ride accept" + ChatColor.AQUA + " to allow the player to ride you.", ChatColor.AQUA);
|
||||||
player.sendMessage(ChatColor.AQUA + "Type " + ChatColor.RED + "/ride deny" + ChatColor.AQUA + " to deny the player permission.");
|
msg(player, "Type " + ChatColor.RED + "/ride deny" + ChatColor.AQUA + " to deny the player permission.", ChatColor.AQUA);
|
||||||
player.sendMessage(ChatColor.AQUA + "Request will expire in 30 seconds.");
|
msg(player, "Request will expire in 30 seconds.", ChatColor.AQUA);
|
||||||
RIDE_REQUESTS.put(player, playerSender);
|
RIDE_REQUESTS.put(player, playerSender);
|
||||||
|
|
||||||
new BukkitRunnable()
|
new BukkitRunnable()
|
||||||
@ -139,8 +139,8 @@ public class Command_ride extends FreedomCommand
|
|||||||
}
|
}
|
||||||
|
|
||||||
RIDE_REQUESTS.remove(player);
|
RIDE_REQUESTS.remove(player);
|
||||||
playerSender.sendMessage(ChatColor.RED + "It has been 30 seconds and " + player.getName() + " has not accepted your request.");
|
msg(playerSender, "It has been 30 seconds and " + player.getName() + " has not accepted your request.", ChatColor.RED);
|
||||||
player.sendMessage(ChatColor.RED + "Request expired.");
|
msg(player, "Request expired.", ChatColor.RED);
|
||||||
}
|
}
|
||||||
}.runTaskLater(plugin, 20 * 30);
|
}.runTaskLater(plugin, 20 * 30);
|
||||||
return true;
|
return true;
|
||||||
|
@ -220,7 +220,6 @@ public class Command_saconfig extends FreedomCommand
|
|||||||
if (plugin.al.isVerifiedAdmin(player))
|
if (plugin.al.isVerifiedAdmin(player))
|
||||||
{
|
{
|
||||||
plugin.al.verifiedNoAdmin.remove(player.getName());
|
plugin.al.verifiedNoAdmin.remove(player.getName());
|
||||||
plugin.al.verifiedNoAdminIps.remove(player.getName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
plugin.al.save(admin);
|
plugin.al.save(admin);
|
||||||
@ -244,7 +243,7 @@ public class Command_saconfig extends FreedomCommand
|
|||||||
if (!player.isOp())
|
if (!player.isOp())
|
||||||
{
|
{
|
||||||
player.setOp(true);
|
player.setOp(true);
|
||||||
player.sendMessage(YOU_ARE_OP);
|
msg(player, YOU_ARE_OP);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ public class Command_scare extends FreedomCommand
|
|||||||
}
|
}
|
||||||
|
|
||||||
msg("Scared " + player.getName());
|
msg("Scared " + player.getName());
|
||||||
player.sendMessage(ChatColor.RED + "ZING");
|
msg(player, "ZING", ChatColor.RED);
|
||||||
|
|
||||||
player.spawnParticle(Particle.MOB_APPEARANCE, player.getLocation(), 4);
|
player.spawnParticle(Particle.MOB_APPEARANCE, player.getLocation(), 4);
|
||||||
for (int i = 0; i < 10; ++i)
|
for (int i = 0; i < 10; ++i)
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,6 +1,7 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -39,6 +40,12 @@ public class Command_setlever extends FreedomCommand
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (x > 29999998 || x < -29999998 || y > 29999998 || y < -29999998 || z > 29999998 || z < -29999998)
|
||||||
|
{
|
||||||
|
msg("Coordinates cannot be larger than 29999998 or smaller than -29999998 blocks.");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
World world = null;
|
World world = null;
|
||||||
final String needleWorldName = args[3].trim();
|
final String needleWorldName = args[3].trim();
|
||||||
final List<World> worlds = server.getWorlds();
|
final List<World> worlds = server.getWorlds();
|
||||||
@ -72,6 +79,8 @@ public class Command_setlever extends FreedomCommand
|
|||||||
caster.setPowered(leverOn);
|
caster.setPowered(leverOn);
|
||||||
state.setBlockData(data);
|
state.setBlockData(data);
|
||||||
state.update();
|
state.update();
|
||||||
|
|
||||||
|
plugin.cpb.getCoreProtectAPI().logInteraction(sender.getName(), leverLocation);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -21,7 +21,7 @@ public class Command_setplayerlimit extends FreedomCommand
|
|||||||
Player player = Bukkit.getPlayer(args[0]);
|
Player player = Bukkit.getPlayer(args[0]);
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ public class Command_settotalvotes extends FreedomCommand
|
|||||||
|
|
||||||
if (player != null)
|
if (player != null)
|
||||||
{
|
{
|
||||||
player.sendMessage(ChatColor.GREEN + sender.getName() + " has set your total votes to " + votes);
|
msg(player, sender.getName() + " has set your total votes to " + votes, ChatColor.GREEN);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -15,21 +15,21 @@ 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] [-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
|
||||||
{
|
{
|
||||||
|
|
||||||
public static void smite(CommandSender sender, Player player)
|
public static void smite(CommandSender sender, Player player)
|
||||||
{
|
{
|
||||||
smite(sender, player, null, false);
|
smite(sender, player, null, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void smite(CommandSender sender, Player player, String reason)
|
public static void smite(CommandSender sender, Player player, String reason)
|
||||||
{
|
{
|
||||||
smite(sender, player, reason, false);
|
smite(sender, player, reason, false, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void smite(CommandSender sender, Player player, String reason, Boolean silent)
|
public static void smite(CommandSender sender, Player player, String reason, Boolean silent, Boolean clearinv)
|
||||||
{
|
{
|
||||||
player.sendTitle(ChatColor.RED + "You've been smitten.", ChatColor.YELLOW + "Be sure to follow the rules!", 20, 100, 60);
|
player.sendTitle(ChatColor.RED + "You've been smitten.", ChatColor.YELLOW + "Be sure to follow the rules!", 20, 100, 60);
|
||||||
|
|
||||||
@ -44,7 +44,7 @@ public class Command_smite extends FreedomCommand
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sender.sendMessage(ChatColor.GRAY + "Smitten " + player.getName() + " quietly.");
|
sender.sendMessage("Smitten " + player.getName() + " quietly.");
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deop
|
// Deop
|
||||||
@ -54,7 +54,10 @@ public class Command_smite extends FreedomCommand
|
|||||||
player.setGameMode(GameMode.SURVIVAL);
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
|
|
||||||
// Clear inventory
|
// Clear inventory
|
||||||
player.getInventory().clear();
|
if (clearinv)
|
||||||
|
{
|
||||||
|
player.getInventory().clear();
|
||||||
|
}
|
||||||
|
|
||||||
// Strike with lightning effect
|
// Strike with lightning effect
|
||||||
final Location targetPos = player.getLocation();
|
final Location targetPos = player.getLocation();
|
||||||
@ -88,6 +91,7 @@ public class Command_smite extends FreedomCommand
|
|||||||
|
|
||||||
String reason = null;
|
String reason = null;
|
||||||
boolean silent = false;
|
boolean silent = false;
|
||||||
|
boolean clearinv = false;
|
||||||
if (args.length >= 2)
|
if (args.length >= 2)
|
||||||
{
|
{
|
||||||
if (args[args.length - 1].equalsIgnoreCase("-q"))
|
if (args[args.length - 1].equalsIgnoreCase("-q"))
|
||||||
@ -102,6 +106,18 @@ 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("-ci"))
|
||||||
|
{
|
||||||
|
if (args[args.length - 1].equalsIgnoreCase("-ci"))
|
||||||
|
{
|
||||||
|
clearinv = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (args.length >= 3)
|
||||||
|
{
|
||||||
|
reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length - 1), " ");
|
||||||
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
|
reason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
|
||||||
@ -112,14 +128,14 @@ public class Command_smite extends FreedomCommand
|
|||||||
|
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
msg(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
smite(sender, player, reason, silent);
|
smite(sender, player, reason, silent, clearinv);
|
||||||
|
|
||||||
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.SMITE, reason));
|
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.SMITE, reason));
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ public class Command_spectator extends FreedomCommand
|
|||||||
{
|
{
|
||||||
if (isConsole())
|
if (isConsole())
|
||||||
{
|
{
|
||||||
sender.sendMessage("When used from the console, you must define a target player.");
|
msg("When used from the console, you must define a target player.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,7 +31,7 @@ public class Command_spectator extends FreedomCommand
|
|||||||
|
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ public class Command_survival extends FreedomCommand
|
|||||||
{
|
{
|
||||||
if (isConsole())
|
if (isConsole())
|
||||||
{
|
{
|
||||||
sender.sendMessage("When used from the console, you must define a target player.");
|
msg("When used from the console, you must define a target player.");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,7 +46,7 @@ public class Command_survival extends FreedomCommand
|
|||||||
|
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return 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,37 +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");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -297,6 +276,22 @@ public class Command_toggle extends FreedomCommand
|
|||||||
toggle("Tossmob is", ConfigEntry.TOSSMOB_ENABLED);
|
toggle("Tossmob is", ConfigEntry.TOSSMOB_ENABLED);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case "gravity":
|
||||||
|
{
|
||||||
|
toggle("Block gravity is", ConfigEntry.ALLOW_GRAVITY);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
msg("Available toggles: ");
|
||||||
|
for (String toggle : toggles)
|
||||||
|
{
|
||||||
|
msg("- " + toggle);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -320,7 +315,7 @@ public class Command_toggle extends FreedomCommand
|
|||||||
"waterplace", "fireplace", "lavaplace", "fluidspread", "lavadmg", "firespread", "frostwalk",
|
"waterplace", "fireplace", "lavaplace", "fluidspread", "lavadmg", "firespread", "frostwalk",
|
||||||
"firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke", "explosives", "unsafeenchs",
|
"firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke", "explosives", "unsafeenchs",
|
||||||
"bells", "armorstands", "structureblocks", "jigsaws", "grindstones", "jukeboxes", "spawners", "4chan", "beehives",
|
"bells", "armorstands", "structureblocks", "jigsaws", "grindstones", "jukeboxes", "spawners", "4chan", "beehives",
|
||||||
"respawnanchors", "autotp", "autoclear", "minecarts", "mp44", "landmines", "tossmob");
|
"respawnanchors", "autotp", "autoclear", "minecarts", "mp44", "landmines", "tossmob", "gravity");
|
||||||
}
|
}
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -24,7 +24,7 @@ public class Command_unblockcmd extends FreedomCommand
|
|||||||
Player player = getPlayer(args[0]);
|
Player player = getPlayer(args[0]);
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ public class Command_uncage extends FreedomCommand
|
|||||||
Player player = getPlayer(args[0]);
|
Player player = getPlayer(args[0]);
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,7 +37,7 @@ public class Command_unmute extends FreedomCommand
|
|||||||
final Player player = getPlayer(args[0]);
|
final Player player = getPlayer(args[0]);
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
sender.sendMessage(FreedomCommand.PLAYER_NOT_FOUND);
|
msg(PLAYER_NOT_FOUND);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,36 +34,32 @@ public class Command_verifynoadmin extends FreedomCommand
|
|||||||
|
|
||||||
if (plugin.al.isAdminImpostor(player))
|
if (plugin.al.isAdminImpostor(player))
|
||||||
{
|
{
|
||||||
if (!plugin.al.verifiedNoAdmin.contains(player.getName()))
|
|
||||||
{
|
|
||||||
plugin.al.verifiedNoAdmin.add(player.getName());
|
|
||||||
}
|
|
||||||
String ip = FUtil.getIp(player);
|
String ip = FUtil.getIp(player);
|
||||||
if (!plugin.al.verifiedNoAdminIps.containsKey(player.getName()))
|
if (!plugin.al.verifiedNoAdmin.containsKey(player.getName()))
|
||||||
{
|
{
|
||||||
List<String> ips = new ArrayList<>();
|
List<String> ips = new ArrayList<>();
|
||||||
ips.add(ip);
|
ips.add(ip);
|
||||||
plugin.al.verifiedNoAdminIps.put(player.getName(), ips);
|
plugin.al.verifiedNoAdmin.put(player.getName(), ips);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
List<String> ips = plugin.al.verifiedNoAdminIps.get(player.getName());
|
List<String> ips = plugin.al.verifiedNoAdmin.get(player.getName());
|
||||||
if (!ips.contains(ip))
|
if (!ips.contains(ip))
|
||||||
{
|
{
|
||||||
ips.add(ip);
|
ips.add(ip);
|
||||||
plugin.al.verifiedNoAdmin.remove(player.getName());
|
plugin.al.verifiedNoAdmin.remove(player.getName());
|
||||||
plugin.al.verifiedNoAdminIps.put(player.getName(), ips);
|
plugin.al.verifiedNoAdmin.put(player.getName(), ips);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
plugin.rm.updateDisplay(player);
|
plugin.rm.updateDisplay(player);
|
||||||
FUtil.adminAction(sender.getName(), "Verified " + player.getName() + ", without admin permissions.", true);
|
FUtil.adminAction(sender.getName(), "Verified " + player.getName() + ", without admin permissions.", true);
|
||||||
player.setOp(true);
|
player.setOp(true);
|
||||||
player.sendMessage(YOU_ARE_OP);
|
msg(player, YOU_ARE_OP);
|
||||||
final FPlayer fPlayer = plugin.pl.getPlayer(player);
|
final FPlayer fPlayer = plugin.pl.getPlayer(player);
|
||||||
if (fPlayer.getFreezeData().isFrozen())
|
if (fPlayer.getFreezeData().isFrozen())
|
||||||
{
|
{
|
||||||
fPlayer.getFreezeData().setFrozen(false);
|
fPlayer.getFreezeData().setFrozen(false);
|
||||||
player.sendMessage(ChatColor.GRAY + "You have been unfrozen.");
|
msg(player, "You have been unfrozen.");
|
||||||
}
|
}
|
||||||
msg("Verified " + player.getName() + " but didn't give them admin permissions", ChatColor.GREEN);
|
msg("Verified " + player.getName() + " but didn't give them admin permissions", ChatColor.GREEN);
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user