mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2025-07-01 12:36:41 +00:00
Compare commits
60 Commits
2021.05-RC
...
FS-396
Author | SHA1 | Date | |
---|---|---|---|
f8c305a23c | |||
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 | |||
caaa067096 |
19
.github/dependabot.yml
vendored
Normal file
19
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# To get started with Dependabot version updates, you'll need to specify which
|
||||||
|
# package ecosystems to update and where the package manifests are located.
|
||||||
|
# Please see the documentation for all configuration options:
|
||||||
|
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
|
||||||
|
|
||||||
|
version: 2
|
||||||
|
updates:
|
||||||
|
|
||||||
|
# Maintain Maven Updates
|
||||||
|
- package-ecosystem: "maven" # See documentation for possible values
|
||||||
|
directory: "/" # Location of package manifests
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
||||||
|
|
||||||
|
# Maintain dependencies for GitHub Actions
|
||||||
|
- package-ecosystem: "github-actions"
|
||||||
|
directory: "/"
|
||||||
|
schedule:
|
||||||
|
interval: "daily"
|
43
.github/workflows/downstream.yml
vendored
Normal file
43
.github/workflows/downstream.yml
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
# This is a basic workflow to help you get started with Actions
|
||||||
|
|
||||||
|
name: Downstream Branch Updates
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '20 7 * * *'
|
||||||
|
# scheduled at 07:00 every Monday and Thursday
|
||||||
|
|
||||||
|
workflow_dispatch: # click the button on Github repo!
|
||||||
|
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
sync_with_upstream:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
name: Sync main with upstream latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
# Step 1: run a standard checkout action, provided by github
|
||||||
|
- name: Checkout main
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
ref: main
|
||||||
|
# submodules: 'recursive' ### may be needed in your situation
|
||||||
|
|
||||||
|
# Step 2: run this sync action - specify the upstream repo, upstream branch to sync with, and target sync branch
|
||||||
|
- name: Pull (Fast-Forward) upstream changes
|
||||||
|
id: sync
|
||||||
|
uses: aormsby/Fork-Sync-With-Upstream-action@v2.1
|
||||||
|
with:
|
||||||
|
upstream_repository: AtlasMediaGroup/TotalFreedomMod
|
||||||
|
upstream_branch: main
|
||||||
|
target_branch: main
|
||||||
|
git_pull_args: --ff-only # optional arg use, defaults to simple 'pull'
|
||||||
|
|
||||||
|
# Step 3: Display a message if 'sync' step had new commits (simple test)
|
||||||
|
- name: Check for new commits
|
||||||
|
if: steps.sync.outputs.has_new_commits
|
||||||
|
run: echo "There were new commits."
|
||||||
|
|
||||||
|
# Step 4: Print a helpful timestamp for your records (not required, just nice)
|
||||||
|
- name: Timestamp
|
||||||
|
run: date
|
12
.github/workflows/maven.yml
vendored
12
.github/workflows/maven.yml
vendored
@ -8,10 +8,20 @@ jobs:
|
|||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
|
# Java 11 Builds
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
- name: Set up JDK 1.8
|
- name: Set up JDK 11
|
||||||
uses: actions/setup-java@v1
|
uses: actions/setup-java@v1
|
||||||
with:
|
with:
|
||||||
java-version: 11
|
java-version: 11
|
||||||
- name: Build with Maven
|
- name: Build with Maven
|
||||||
run: mvn -B package --file pom.xml
|
run: mvn -B package --file pom.xml
|
||||||
|
|
||||||
|
# Java 16 Builds
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Set up JDK 16
|
||||||
|
uses: actions/setup-java@v1
|
||||||
|
with:
|
||||||
|
java-version: 16
|
||||||
|
- name: Build with Maven
|
||||||
|
run: mvn -B package --file pom.xml
|
||||||
|
13
.travis.yml
13
.travis.yml
@ -1,13 +0,0 @@
|
|||||||
language: java
|
|
||||||
jdk:
|
|
||||||
- oraclejdk11
|
|
||||||
- openjdk11
|
|
||||||
notifications:
|
|
||||||
email: false
|
|
||||||
addons:
|
|
||||||
apt:
|
|
||||||
packages:
|
|
||||||
- sshpass
|
|
||||||
script: mvn clean install
|
|
||||||
after_success:
|
|
||||||
- ./travis-upload.sh
|
|
@ -1,4 +1,4 @@
|
|||||||
# TotalFreedomMod [](https://travis-ci.com/AtlasMediaGroup/TotalFreedomMod) [](https://www.codacy.com/gh/AtlasMediaGroup/TotalFreedomMod/dashboard?utm_source=github.com&utm_medium=referral&utm_content=AtlasMediaGroup/TotalFreedomMod&utm_campaign=Badge_Grade)
|
# TotalFreedomMod [](https://github.com/AtlasMediaGroup/TotalFreedomMod/actions/workflows/maven.yml) [](https://www.codacy.com/gh/AtlasMediaGroup/TotalFreedomMod/dashboard?utm_source=github.com&utm_medium=referral&utm_content=AtlasMediaGroup/TotalFreedomMod&utm_campaign=Badge_Grade) [](https://github.com/AtlasMediaGroup/TotalFreedomMod/actions/workflows/codeql-analysis.yml)
|
||||||
|
|
||||||
TotalFreedomMod is a CraftBukkit server plugin designed primarily to support the [Official TotalFreedom Minecraft Server](https://totalfreedom.me/). However, you are more than welcome to adapt the source for your own server.
|
TotalFreedomMod is a CraftBukkit server plugin designed primarily to support the [Official TotalFreedom Minecraft Server](https://totalfreedom.me/). However, you are more than welcome to adapt the source for your own server.
|
||||||
|
|
||||||
@ -14,4 +14,4 @@ For information on our security policy and reporting an issue, please see [SECUR
|
|||||||
|
|
||||||
### Compiling
|
### Compiling
|
||||||
|
|
||||||
You need Maven to build. You'd also need to set the JDK version to Java 8 as that is the current standard as of now.
|
You need Maven to build. You'd also need to set the JDK version to Java 11 as that is the current standard as of now.
|
||||||
|
36
SECURITY.md
36
SECURITY.md
@ -2,18 +2,34 @@
|
|||||||
|
|
||||||
## 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.
|
||||||
| 2021.04 | :white_check_mark: |
|
|
||||||
| 2021.02 | :white_check_mark: |
|
| Version | Supported | Support End: |
|
||||||
| 2020.11 | :white_check_mark: |
|
| ------------------- | ------------------ | ------------------------------ |
|
||||||
| 6.0.x (Pre-Release) | :x: |
|
| 2021.05 | :white_check_mark: | No Earlier than August 2021 |
|
||||||
| < 2020.11 | :x: |
|
|
||||||
| < 5.x | :x: |
|
### Legacy Supported
|
||||||
|
These versions are no longer under active development, however we will look to release critical secuirty patches where appropriate.
|
||||||
|
|
||||||
|
| Version | Supported | Support End: |
|
||||||
|
| ------------------- | ------------------ | ------------ |
|
||||||
|
| 2021.04 | :white_check_mark: | July 2021 |
|
||||||
|
|
||||||
|
### No Longer Supported
|
||||||
|
These versions are no longer supported at all. It is strongly advised to update if you are running any of these versions.
|
||||||
|
|
||||||
|
| Version | Supported | Support Ended: |
|
||||||
|
| ------------------- | ------------------ | ------------------- |
|
||||||
|
| 2021.02 | :x: | 6 June 2021 |
|
||||||
|
| 2020.11 | :x: | 3 May 2021 |
|
||||||
|
| 6.0.x (Pre-Release) | :x: | December 2020 |
|
||||||
|
| < 2020.11 | :x: | December 2020 |
|
||||||
|
| < 5.x | :x: | December 2020 |
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
## Reporting a Vulnerability
|
||||||
|
|
||||||
|
19
pom.xml
19
pom.xml
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
<groupId>me.totalfreedom</groupId>
|
<groupId>me.totalfreedom</groupId>
|
||||||
<artifactId>TotalFreedomMod</artifactId>
|
<artifactId>TotalFreedomMod</artifactId>
|
||||||
<version>2021.04</version>
|
<version>2021.05</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
@ -105,11 +105,6 @@
|
|||||||
<url>https://papermc.io/repo/repository/maven-public/</url>
|
<url>https://papermc.io/repo/repository/maven-public/</url>
|
||||||
</repository>
|
</repository>
|
||||||
|
|
||||||
<repository>
|
|
||||||
<id>rayzr-repo</id>
|
|
||||||
<url>https://cdn.rawgit.com/Rayzr522/maven-repo/master/</url>
|
|
||||||
</repository>
|
|
||||||
|
|
||||||
<repository>
|
<repository>
|
||||||
<id>ess-repo</id>
|
<id>ess-repo</id>
|
||||||
<url>https://ci.ender.zone/plugin/repository/everything/</url>
|
<url>https://ci.ender.zone/plugin/repository/everything/</url>
|
||||||
@ -168,9 +163,9 @@
|
|||||||
</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>
|
||||||
|
|
||||||
@ -216,13 +211,6 @@
|
|||||||
<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>
|
||||||
@ -454,7 +442,6 @@
|
|||||||
<include>commons-codec:commons-codec</include>
|
<include>commons-codec:commons-codec</include>
|
||||||
<include>org.reflections:reflections</include>
|
<include>org.reflections:reflections</include>
|
||||||
<include>org.javassist:javassist</include>
|
<include>org.javassist:javassist</include>
|
||||||
<include>me.rayzr522:jsonmessage</include>
|
|
||||||
<include>io.papermc:paperlib</include>
|
<include>io.papermc:paperlib</include>
|
||||||
<include>com.github.speedxx:Mojangson</include>
|
<include>com.github.speedxx:Mojangson</include>
|
||||||
<include>org.bstats:bstats-bukkit</include>
|
<include>org.bstats:bstats-bukkit</include>
|
||||||
|
@ -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));
|
||||||
|
@ -18,35 +18,28 @@ 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;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
|
||||||
import static me.totalfreedom.totalfreedommod.util.FUtil.playerMsg;
|
import static me.totalfreedom.totalfreedommod.util.FUtil.playerMsg;
|
||||||
|
|
||||||
public class ChatManager extends FreedomService
|
public class ChatManager extends FreedomService {
|
||||||
{
|
|
||||||
@Override
|
@Override
|
||||||
public void onStart()
|
public void onStart() {
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onStop()
|
public void onStop() {
|
||||||
{
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||||
public void onPlayerChatFormat(AsyncPlayerChatEvent event)
|
public void onPlayerChatFormat(AsyncPlayerChatEvent event) {
|
||||||
{
|
try {
|
||||||
try
|
|
||||||
{
|
|
||||||
handleChatEvent(event);
|
handleChatEvent(event);
|
||||||
}
|
} catch (Exception ex) {
|
||||||
catch (Exception ex)
|
|
||||||
{
|
|
||||||
FLog.severe(ex);
|
FLog.severe(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleChatEvent(AsyncPlayerChatEvent event)
|
private void handleChatEvent(AsyncPlayerChatEvent event) {
|
||||||
{
|
|
||||||
final Player player = event.getPlayer();
|
final Player player = event.getPlayer();
|
||||||
String message = event.getMessage().trim();
|
String message = event.getMessage().trim();
|
||||||
|
|
||||||
@ -54,8 +47,7 @@ public class ChatManager extends FreedomService
|
|||||||
message = FUtil.colorize(message);
|
message = FUtil.colorize(message);
|
||||||
message = message.replaceAll(ChatColor.MAGIC.toString(), "&k");
|
message = message.replaceAll(ChatColor.MAGIC.toString(), "&k");
|
||||||
|
|
||||||
if (ConfigEntry.SHOP_ENABLED.getBoolean() && ConfigEntry.SHOP_REACTIONS_ENABLED.getBoolean() && !plugin.sh.reactionString.isEmpty() && message.equals(plugin.sh.reactionString))
|
if (ConfigEntry.SHOP_ENABLED.getBoolean() && ConfigEntry.SHOP_REACTIONS_ENABLED.getBoolean() && !plugin.sh.reactionString.isEmpty() && message.equals(plugin.sh.reactionString)) {
|
||||||
{
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PlayerData data = plugin.pl.getData(player);
|
PlayerData data = plugin.pl.getData(player);
|
||||||
data.setCoins(data.getCoins() + plugin.sh.coinsPerReactionWin);
|
data.setCoins(data.getCoins() + plugin.sh.coinsPerReactionWin);
|
||||||
@ -65,31 +57,27 @@ public class ChatManager extends FreedomService
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!ConfigEntry.TOGGLE_CHAT.getBoolean() && !plugin.al.isAdmin(player))
|
if (!ConfigEntry.TOGGLE_CHAT.getBoolean() && !plugin.al.isAdmin(player)) {
|
||||||
{
|
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
playerMsg(player, "Chat is currently disabled.", org.bukkit.ChatColor.RED);
|
playerMsg(player, "Chat is currently disabled.", org.bukkit.ChatColor.RED);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Truncate messages that are too long - 256 characters is vanilla client max
|
// Truncate messages that are too long - 256 characters is vanilla client max
|
||||||
if (message.length() > 256)
|
if (message.length() > 256) {
|
||||||
{
|
|
||||||
message = message.substring(0, 256);
|
message = message.substring(0, 256);
|
||||||
FSync.playerMsg(player, "Message was shortened because it was too long to send.");
|
FSync.playerMsg(player, "Message was shortened because it was too long to send.");
|
||||||
}
|
}
|
||||||
|
|
||||||
final FPlayer fPlayer = plugin.pl.getPlayerSync(player);
|
final FPlayer fPlayer = plugin.pl.getPlayerSync(player);
|
||||||
if (fPlayer.isLockedUp())
|
if (fPlayer.isLockedUp()) {
|
||||||
{
|
|
||||||
FSync.playerMsg(player, "You're locked up and cannot talk.");
|
FSync.playerMsg(player, "You're locked up and cannot talk.");
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for adminchat
|
// Check for adminchat
|
||||||
if (fPlayer.inAdminChat())
|
if (fPlayer.inAdminChat()) {
|
||||||
{
|
|
||||||
FSync.adminChatMessage(player, message);
|
FSync.adminChatMessage(player, message);
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
@ -98,14 +86,10 @@ public class ChatManager extends FreedomService
|
|||||||
// Check for 4chan trigger
|
// Check for 4chan trigger
|
||||||
boolean green = ChatColor.stripColor(message).toLowerCase().startsWith(">");
|
boolean green = ChatColor.stripColor(message).toLowerCase().startsWith(">");
|
||||||
boolean orange = ChatColor.stripColor(message).toLowerCase().endsWith("<");
|
boolean orange = ChatColor.stripColor(message).toLowerCase().endsWith("<");
|
||||||
if (ConfigEntry.FOURCHAN_ENABLED.getBoolean())
|
if (ConfigEntry.FOURCHAN_ENABLED.getBoolean()) {
|
||||||
{
|
if (green) {
|
||||||
if (green)
|
|
||||||
{
|
|
||||||
message = ChatColor.GREEN + message;
|
message = ChatColor.GREEN + message;
|
||||||
}
|
} else if (orange) {
|
||||||
else if (orange)
|
|
||||||
{
|
|
||||||
message = ChatColor.GOLD + message;
|
message = ChatColor.GOLD + message;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -117,18 +101,17 @@ public class ChatManager extends FreedomService
|
|||||||
String format = "%1$s §8\u00BB §f%2$s";
|
String format = "%1$s §8\u00BB §f%2$s";
|
||||||
|
|
||||||
String tag = fPlayer.getTag();
|
String tag = fPlayer.getTag();
|
||||||
if (tag != null && !tag.isEmpty())
|
if (tag != null && !tag.isEmpty()) {
|
||||||
{
|
|
||||||
format = tag.replace("%", "%%") + " " + format;
|
format = tag.replace("%", "%%") + " " + format;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for mentions
|
// Check for mentions
|
||||||
boolean mentionEveryone = ChatColor.stripColor(message).toLowerCase().contains("@everyone") && plugin.al.isAdmin(player);
|
if (!event.isCancelled()) {
|
||||||
for (Player p : server.getOnlinePlayers())
|
boolean mentionEveryone = ChatColor.stripColor(message).toLowerCase().contains("@everyone") && plugin.al.isAdmin(player);
|
||||||
{
|
for (Player p : server.getOnlinePlayers()) {
|
||||||
if (ChatColor.stripColor(message).toLowerCase().contains("@" + p.getName().toLowerCase()) || mentionEveryone)
|
if (ChatColor.stripColor(message).toLowerCase().contains("@" + p.getName().toLowerCase()) || mentionEveryone) {
|
||||||
{
|
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, SoundCategory.MASTER, 1337F, 0.9F);
|
||||||
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, SoundCategory.MASTER, 1337F, 0.9F);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,25 +119,21 @@ public class ChatManager extends FreedomService
|
|||||||
event.setFormat(format);
|
event.setFormat(format);
|
||||||
|
|
||||||
// Send to discord
|
// Send to discord
|
||||||
if (!ConfigEntry.ADMIN_ONLY_MODE.getBoolean() && !Bukkit.hasWhitelist() && !plugin.pl.getPlayer(player).isMuted() && !plugin.tfg.inGuildChat(player))
|
if (!ConfigEntry.ADMIN_ONLY_MODE.getBoolean() && !Bukkit.hasWhitelist() && !plugin.pl.getPlayer(player).isMuted() && !plugin.tfg.inGuildChat(player)) {
|
||||||
{
|
|
||||||
plugin.dc.messageChatChannel(player.getName() + " \u00BB " + ChatColor.stripColor(message));
|
plugin.dc.messageChatChannel(player.getName() + " \u00BB " + ChatColor.stripColor(message));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public ChatColor getColor(Displayable display)
|
public ChatColor getColor(Displayable display) {
|
||||||
{
|
|
||||||
return display.getColor();
|
return display.getColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getColoredTag(Displayable display)
|
public String getColoredTag(Displayable display) {
|
||||||
{
|
|
||||||
ChatColor color = display.getColor();
|
ChatColor color = display.getColor();
|
||||||
return color + display.getAbbr();
|
return color + display.getAbbr();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void adminChat(CommandSender sender, String message)
|
public void adminChat(CommandSender sender, String message) {
|
||||||
{
|
|
||||||
Displayable display = plugin.rm.getDisplay(sender);
|
Displayable display = plugin.rm.getDisplay(sender);
|
||||||
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);
|
||||||
@ -167,20 +146,15 @@ public class ChatManager extends FreedomService
|
|||||||
ChatColor color = getColor(display);
|
ChatColor color = getColor(display);
|
||||||
String msg = format.replace("%name%", sender.getName()).replace("%rank%", display.getAbbr()).replace("%rankcolor%", color.toString()).replace("%msg%", message);
|
String msg = format.replace("%name%", sender.getName()).replace("%rank%", display.getAbbr()).replace("%rankcolor%", color.toString()).replace("%msg%", message);
|
||||||
player.sendMessage(FUtil.colorize(msg));
|
player.sendMessage(FUtil.colorize(msg));
|
||||||
}
|
} else {
|
||||||
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));
|
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) {
|
||||||
{
|
for (Player player : server.getOnlinePlayers()) {
|
||||||
for (Player player : server.getOnlinePlayers())
|
if (plugin.al.isAdmin(player)) {
|
||||||
{
|
|
||||||
if (plugin.al.isAdmin(player))
|
|
||||||
{
|
|
||||||
playerMsg(player, ChatColor.RED + "[REPORTS] " + ChatColor.GOLD + reporter.getName() + " has reported " + reported.getName() + " for " + report);
|
playerMsg(player, ChatColor.RED + "[REPORTS] " + ChatColor.GOLD + reporter.getName() + " has reported " + reported.getName() + " for " + 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;
|
||||||
|
@ -43,6 +43,7 @@ public class IndefiniteBan implements IConfig
|
|||||||
@Override
|
@Override
|
||||||
public void saveTo(ConfigurationSection cs)
|
public void saveTo(ConfigurationSection cs)
|
||||||
{
|
{
|
||||||
|
// The indefinite ban list is only intended to be modified manually. It is not intended to save.
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -171,6 +171,11 @@ public class BlockBlocker extends FreedomService
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
// Do nothing
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Groups.BANNERS.contains(event.getBlockPlaced().getType()))
|
if (Groups.BANNERS.contains(event.getBlockPlaced().getType()))
|
||||||
|
@ -36,10 +36,9 @@ public class InteractBlocker extends FreedomService
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case LEFT_CLICK_AIR:
|
default:
|
||||||
case LEFT_CLICK_BLOCK:
|
|
||||||
{
|
{
|
||||||
//
|
// Do nothing
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -158,6 +157,11 @@ public class InteractBlocker extends FreedomService
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
// Do nothing
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,6 +1,8 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -75,9 +77,11 @@ public class Command_blockcmd extends FreedomCommand
|
|||||||
FPlayer playerdata = plugin.pl.getPlayer(player);
|
FPlayer playerdata = plugin.pl.getPlayer(player);
|
||||||
if (!playerdata.allCommandsBlocked())
|
if (!playerdata.allCommandsBlocked())
|
||||||
{
|
{
|
||||||
playerdata.setCommandsBlocked(true);
|
|
||||||
FUtil.adminAction(sender.getName(), "Blocking all commands for " + player.getName(), true);
|
FUtil.adminAction(sender.getName(), "Blocking all commands for " + player.getName(), true);
|
||||||
|
playerdata.setCommandsBlocked(true);
|
||||||
msg("Blocked commands for " + player.getName() + ".");
|
msg("Blocked commands for " + player.getName() + ".");
|
||||||
|
|
||||||
|
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.BLOCKCMD, null));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.apache.commons.lang.ArrayUtils;
|
import org.apache.commons.lang.ArrayUtils;
|
||||||
@ -128,6 +130,8 @@ public class Command_blockedit extends FreedomCommand
|
|||||||
|
|
||||||
msg(player2, "Your block modification abilities have been blocked.", ChatColor.RED);
|
msg(player2, "Your block modification abilities have been blocked.", ChatColor.RED);
|
||||||
msg("Blocked all block modification abilities for " + player2.getName());
|
msg("Blocked all block modification abilities for " + player2.getName());
|
||||||
|
|
||||||
|
plugin.pul.logPunishment(new Punishment(player2.getName(), FUtil.getIp(player2), sender.getName(), PunishmentType.BLOCKEDIT, null));
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.apache.commons.lang3.ArrayUtils;
|
import org.apache.commons.lang3.ArrayUtils;
|
||||||
@ -125,6 +127,7 @@ public class Command_blockpvp extends FreedomCommand
|
|||||||
{
|
{
|
||||||
Command_smite.smite(sender, p, reason);
|
Command_smite.smite(sender, p, reason);
|
||||||
}
|
}
|
||||||
|
plugin.pul.logPunishment(new Punishment(p.getName(), FUtil.getIp(p), sender.getName(), PunishmentType.BLOCKPVP, null));
|
||||||
|
|
||||||
msg(p, "Your PVP has been disabled.", ChatColor.RED);
|
msg(p, "Your PVP has been disabled.", ChatColor.RED);
|
||||||
msg("Disabled PVP for " + p.getName());
|
msg("Disabled PVP for " + p.getName());
|
||||||
|
@ -5,6 +5,8 @@ import java.util.Arrays;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -75,17 +77,43 @@ public class Command_cage extends FreedomCommand
|
|||||||
}
|
}
|
||||||
case "block":
|
case "block":
|
||||||
{
|
{
|
||||||
if (Material.matchMaterial(args[2]) != null)
|
if (args.length >= 3)
|
||||||
{
|
{
|
||||||
outerMaterial = Material.matchMaterial(args[2]);
|
// Checks the validity of the Material and checks if it's a block.
|
||||||
break;
|
// This is incredibly inefficient, as Spigot's isBlock() method in Material is an actual
|
||||||
|
// nightmare of switch-cases.
|
||||||
|
if (Material.matchMaterial(args[2]) != null && Material.matchMaterial(args[2]).isBlock())
|
||||||
|
{
|
||||||
|
outerMaterial = Material.matchMaterial(args[2]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
msg("Invalid block!", ChatColor.RED);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
msg("Invalid block!", ChatColor.RED);
|
else
|
||||||
break;
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (outerMaterial == Material.PLAYER_HEAD)
|
||||||
|
{
|
||||||
|
FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true);
|
||||||
|
}
|
||||||
|
|
||||||
Location location = player.getLocation().clone().add(0.0, 1.0, 0.0);
|
Location location = player.getLocation().clone().add(0.0, 1.0, 0.0);
|
||||||
|
|
||||||
if (skullName != null)
|
if (skullName != null)
|
||||||
@ -96,17 +124,9 @@ public class Command_cage extends FreedomCommand
|
|||||||
{
|
{
|
||||||
fPlayer.getCageData().cage(location, outerMaterial, innerMaterial);
|
fPlayer.getCageData().cage(location, outerMaterial, innerMaterial);
|
||||||
}
|
}
|
||||||
|
|
||||||
player.setGameMode(GameMode.SURVIVAL);
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
|
|
||||||
if (outerMaterial == Material.PLAYER_HEAD)
|
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.CAGE, null));
|
||||||
{
|
|
||||||
FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true);
|
|
||||||
}
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,7 @@ import org.bukkit.entity.Player;
|
|||||||
|
|
||||||
@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH)
|
@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH)
|
||||||
@CommandParameters(description = "Clears the chat.", usage = "/<command>", aliases = "cc")
|
@CommandParameters(description = "Clears the chat.", usage = "/<command>", aliases = "cc")
|
||||||
public class Command_clearchat extends FreedomCommand
|
public class Command_cleanchat extends FreedomCommand
|
||||||
{
|
{
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -27,4 +27,4 @@ public class Command_clearchat extends FreedomCommand
|
|||||||
FUtil.adminAction(sender.getName(), "Cleared chat", true);
|
FUtil.adminAction(sender.getName(), "Cleared chat", true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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))
|
||||||
|
@ -35,8 +35,8 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
}
|
}
|
||||||
switch (args[1])
|
switch (args[1])
|
||||||
{
|
{
|
||||||
|
|
||||||
case "add":
|
case "add":
|
||||||
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
||||||
@ -75,7 +75,9 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
msg("Invalid number: " + args[2], ChatColor.RED);
|
msg("Invalid number: " + args[2], ChatColor.RED);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
case "remove":
|
case "remove":
|
||||||
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
||||||
@ -122,7 +124,9 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
msg("Invalid number: " + args[2], ChatColor.RED);
|
msg("Invalid number: " + args[2], ChatColor.RED);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
case "set":
|
case "set":
|
||||||
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
int amount = Math.max(0, Math.min(1000000, Integer.parseInt(args[2])));
|
||||||
@ -147,6 +151,11 @@ public class Command_manageshop extends FreedomCommand
|
|||||||
msg("Invalid number: " + args[2], ChatColor.RED);
|
msg("Invalid number: " + args[2], ChatColor.RED);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (args[0].equals("items"))
|
else if (args[0].equals("items"))
|
||||||
|
@ -116,8 +116,12 @@ public class Command_notes extends FreedomCommand
|
|||||||
msg("Cleared " + count + " notes.", ChatColor.GREEN);
|
msg("Cleared " + count + " notes.", ChatColor.GREEN);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
import me.totalfreedom.totalfreedommod.player.FPlayer;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
import me.totalfreedom.totalfreedommod.util.FUtil;
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -56,11 +58,13 @@ public class Command_orbit extends FreedomCommand
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false);
|
||||||
|
|
||||||
player.setGameMode(GameMode.SURVIVAL);
|
player.setGameMode(GameMode.SURVIVAL);
|
||||||
playerdata.startOrbiting(strength);
|
playerdata.startOrbiting(strength);
|
||||||
|
|
||||||
player.setVelocity(new Vector(0, strength, 0));
|
player.setVelocity(new Vector(0, strength, 0));
|
||||||
FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false);
|
|
||||||
|
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.ORBIT, null));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -29,6 +29,7 @@ public class Command_potion extends FreedomCommand
|
|||||||
switch (args.length)
|
switch (args.length)
|
||||||
{
|
{
|
||||||
case 1:
|
case 1:
|
||||||
|
{
|
||||||
if (args[0].equalsIgnoreCase("list"))
|
if (args[0].equalsIgnoreCase("list"))
|
||||||
{
|
{
|
||||||
List<String> potionEffectTypeNames = new ArrayList<>();
|
List<String> potionEffectTypeNames = new ArrayList<>();
|
||||||
@ -58,8 +59,10 @@ 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;
|
||||||
@ -95,9 +98,11 @@ 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;
|
||||||
@ -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();
|
||||||
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -105,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)
|
||||||
@ -279,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;
|
||||||
|
@ -16,6 +16,12 @@ import org.bukkit.entity.Player;
|
|||||||
@CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/<command> [option] [value] [value]")
|
@CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/<command> [option] [value] [value]")
|
||||||
public class Command_toggle extends FreedomCommand
|
public class Command_toggle extends FreedomCommand
|
||||||
{
|
{
|
||||||
|
private final List<String> toggles = Arrays.asList(
|
||||||
|
"waterplace", "fireplace", "lavaplace", "fluidspread", "lavadmg", "firespread", "frostwalk",
|
||||||
|
"firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke [range] [count]",
|
||||||
|
"explosives [radius]", "unsafeenchs", "bells", "armorstands", "structureblocks", "jigsaws", "grindstones",
|
||||||
|
"jukeboxes", "spawners", "4chan", "beehives", "respawnanchors", "autotp", "autoclear", "minecarts", "mp44",
|
||||||
|
"landmines", "tossmob", "gravity");
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||||
@ -23,38 +29,10 @@ public class Command_toggle extends FreedomCommand
|
|||||||
if (args.length == 0)
|
if (args.length == 0)
|
||||||
{
|
{
|
||||||
msg("Available toggles: ");
|
msg("Available toggles: ");
|
||||||
msg("- waterplace");
|
for (String toggle : toggles)
|
||||||
msg("- fireplace");
|
{
|
||||||
msg("- lavaplace");
|
msg("- " + toggle);
|
||||||
msg("- fluidspread");
|
}
|
||||||
msg("- lavadmg");
|
|
||||||
msg("- firespread");
|
|
||||||
msg("- frostwalk");
|
|
||||||
msg("- firework");
|
|
||||||
msg("- prelog");
|
|
||||||
msg("- lockdown");
|
|
||||||
msg("- petprotect");
|
|
||||||
msg("- entitywipe");
|
|
||||||
msg("- nonuke [range] [count]");
|
|
||||||
msg("- explosives [radius]");
|
|
||||||
msg("- unsafeenchs");
|
|
||||||
msg("- bells");
|
|
||||||
msg("- armorstands");
|
|
||||||
msg("- structureblocks");
|
|
||||||
msg("- jigsaws");
|
|
||||||
msg("- grindstones");
|
|
||||||
msg("- jukeboxes");
|
|
||||||
msg("- spawners");
|
|
||||||
msg("- 4chan");
|
|
||||||
msg("- beehives");
|
|
||||||
msg("- respawnanchors");
|
|
||||||
msg("- autotp");
|
|
||||||
msg("- autoclear");
|
|
||||||
msg("- minecarts");
|
|
||||||
msg("- landmines");
|
|
||||||
msg("- mp44");
|
|
||||||
msg("- tossmob");
|
|
||||||
msg("- gravity");
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -304,6 +282,16 @@ public class Command_toggle extends FreedomCommand
|
|||||||
toggle("Block gravity is", ConfigEntry.ALLOW_GRAVITY);
|
toggle("Block gravity is", ConfigEntry.ALLOW_GRAVITY);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
msg("Available toggles: ");
|
||||||
|
for (String toggle : toggles)
|
||||||
|
{
|
||||||
|
msg("- " + toggle);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,9 @@
|
|||||||
package me.totalfreedom.totalfreedommod.command;
|
package me.totalfreedom.totalfreedommod.command;
|
||||||
|
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.Punishment;
|
||||||
|
import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
|
||||||
import me.totalfreedom.totalfreedommod.rank.Rank;
|
import me.totalfreedom.totalfreedommod.rank.Rank;
|
||||||
|
import me.totalfreedom.totalfreedommod.util.FUtil;
|
||||||
import org.apache.commons.lang.ArrayUtils;
|
import org.apache.commons.lang.ArrayUtils;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
@ -53,25 +56,28 @@ public class Command_warn extends FreedomCommand
|
|||||||
|
|
||||||
String warnReason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
|
String warnReason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
|
||||||
player.sendTitle(ChatColor.RED + "You've been warned.", ChatColor.YELLOW + "Reason: " + warnReason, 20, 100, 60);
|
player.sendTitle(ChatColor.RED + "You've been warned.", ChatColor.YELLOW + "Reason: " + warnReason, 20, 100, 60);
|
||||||
msg(ChatColor.GREEN + "You have successfully warned " + player.getName());
|
msg(player, ChatColor.RED + "[WARNING] You received a warning from " + sender.getName() + ": " + warnReason);
|
||||||
|
plugin.pl.getPlayer(player).incrementWarnings(quiet);
|
||||||
|
plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.WARN, warnReason));
|
||||||
|
|
||||||
if (quiet)
|
if (quiet)
|
||||||
{
|
{
|
||||||
msg("Warned " + player.getName() + " quietly");
|
msg("You have successfully warned " + player.getName() + " quietly.");
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String adminNotice = ChatColor.RED +
|
||||||
|
sender.getName() +
|
||||||
|
" - " +
|
||||||
|
"Warning: " +
|
||||||
|
player.getName() +
|
||||||
|
" - Reason: " +
|
||||||
|
ChatColor.YELLOW +
|
||||||
|
warnReason;
|
||||||
|
plugin.al.messageAllAdmins(adminNotice);
|
||||||
|
|
||||||
msg(player, ChatColor.RED + "[WARNING] You received a warning from " + sender.getName() + ": " + warnReason);
|
msg("You have successfully warned " + player.getName() + ".");
|
||||||
String adminNotice = ChatColor.RED +
|
}
|
||||||
sender.getName() +
|
|
||||||
" - " +
|
|
||||||
"Warning: " +
|
|
||||||
player.getName() +
|
|
||||||
" - Reason: " +
|
|
||||||
ChatColor.YELLOW +
|
|
||||||
warnReason;
|
|
||||||
plugin.al.messageAllAdmins(adminNotice);
|
|
||||||
plugin.pl.getPlayer(player).incrementWarnings();
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -128,7 +128,7 @@ public class ItemFun extends FreedomService
|
|||||||
|
|
||||||
LivingEntity livingEntity = (LivingEntity)event.getRightClicked();
|
LivingEntity livingEntity = (LivingEntity)event.getRightClicked();
|
||||||
EntityType entityType = livingEntity.getType();
|
EntityType entityType = livingEntity.getType();
|
||||||
if (!(entityType == fPlayer.mobThrowerCreature()))
|
if (entityType != fPlayer.mobThrowerCreature())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -304,6 +304,11 @@ public class ItemFun extends FreedomService
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
// Do nothing
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -73,7 +73,7 @@ public class Landminer extends FreedomService
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(player.getLocation().distanceSquared(location) <= (landmine.radius * landmine.radius)))
|
if (player.getLocation().distanceSquared(location) > (landmine.radius * landmine.radius))
|
||||||
{
|
{
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -79,11 +79,20 @@ public class Module_list extends HTTPDModule
|
|||||||
switch (admin.getRank())
|
switch (admin.getRank())
|
||||||
{
|
{
|
||||||
case ADMIN:
|
case ADMIN:
|
||||||
|
{
|
||||||
admins.add(player.getName());
|
admins.add(player.getName());
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case SENIOR_ADMIN:
|
case SENIOR_ADMIN:
|
||||||
|
{
|
||||||
senioradmins.add(player.getName());
|
senioradmins.add(player.getName());
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
// Do nothing
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -51,11 +51,20 @@ public class Module_players extends HTTPDModule
|
|||||||
switch (admin.getRank())
|
switch (admin.getRank())
|
||||||
{
|
{
|
||||||
case ADMIN:
|
case ADMIN:
|
||||||
|
{
|
||||||
admins.add(username);
|
admins.add(username);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
case SENIOR_ADMIN:
|
case SENIOR_ADMIN:
|
||||||
|
{
|
||||||
senioradmins.add(username);
|
senioradmins.add(username);
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
{
|
||||||
|
// Do nothing
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
package me.totalfreedom.totalfreedommod.player;
|
package me.totalfreedom.totalfreedommod.player;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
|
||||||
import me.totalfreedom.totalfreedommod.caging.CageData;
|
import me.totalfreedom.totalfreedommod.caging.CageData;
|
||||||
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
|
||||||
@ -16,8 +14,12 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.scheduler.BukkitRunnable;
|
import org.bukkit.scheduler.BukkitRunnable;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class FPlayer
|
public class FPlayer
|
||||||
{
|
{
|
||||||
|
|
||||||
public static final long AUTO_PURGE_TICKS = 5L * 60L * 20L;
|
public static final long AUTO_PURGE_TICKS = 5L * 60L * 20L;
|
||||||
|
|
||||||
|
|
||||||
@ -247,7 +249,7 @@ public class FPlayer
|
|||||||
public void startArrowShooter(TotalFreedomMod plugin)
|
public void startArrowShooter(TotalFreedomMod plugin)
|
||||||
{
|
{
|
||||||
this.stopArrowShooter();
|
this.stopArrowShooter();
|
||||||
this.mp44ScheduleTask = new ArrowShooter(this.player).runTaskTimer(plugin, 1L, 1L);
|
this.mp44ScheduleTask = new ArrowShooter(getPlayer()).runTaskTimer(plugin, 1L, 1L);
|
||||||
this.mp44Firing = true;
|
this.mp44Firing = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -429,14 +431,19 @@ public class FPlayer
|
|||||||
this.warningCount = warningCount;
|
this.warningCount = warningCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void incrementWarnings()
|
public void incrementWarnings(boolean quiet)
|
||||||
{
|
{
|
||||||
this.warningCount++;
|
this.warningCount++;
|
||||||
|
|
||||||
if (this.warningCount % 2 == 0)
|
if (this.warningCount % 2 == 0)
|
||||||
{
|
{
|
||||||
Player p = getPlayer();
|
Player p = getPlayer();
|
||||||
p.getWorld().strikeLightning(p.getLocation());
|
|
||||||
|
if (!quiet)
|
||||||
|
{
|
||||||
|
p.getWorld().strikeLightning(p.getLocation());
|
||||||
|
}
|
||||||
|
|
||||||
FUtil.playerMsg(p, ChatColor.RED + "You have been warned at least twice now, make sure to read the rules at " + ConfigEntry.SERVER_BAN_URL.getString());
|
FUtil.playerMsg(p, ChatColor.RED + "You have been warned at least twice now, make sure to read the rules at " + ConfigEntry.SERVER_BAN_URL.getString());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -704,8 +711,11 @@ public class FPlayer
|
|||||||
@Override
|
@Override
|
||||||
public void run()
|
public void run()
|
||||||
{
|
{
|
||||||
Arrow shot = player.launchProjectile(Arrow.class);
|
if (player != null)
|
||||||
shot.setVelocity(shot.getVelocity().multiply(2.0));
|
{
|
||||||
|
Arrow shot = player.launchProjectile(Arrow.class);
|
||||||
|
shot.setVelocity(shot.getVelocity().multiply(2.0));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -7,5 +7,11 @@ public enum PunishmentType
|
|||||||
KICK,
|
KICK,
|
||||||
TEMPBAN,
|
TEMPBAN,
|
||||||
BAN,
|
BAN,
|
||||||
DOOM
|
DOOM,
|
||||||
|
WARN,
|
||||||
|
CAGE,
|
||||||
|
BLOCKEDIT,
|
||||||
|
BLOCKPVP,
|
||||||
|
BLOCKCMD,
|
||||||
|
ORBIT
|
||||||
}
|
}
|
||||||
|
@ -1,16 +1,50 @@
|
|||||||
#
|
#
|
||||||
# TotalFreedomMod Permissions
|
# TotalFreedomMod 5.5 Permissions
|
||||||
# by ZeroEpoch1969
|
# by ZeroEpoch1969
|
||||||
#
|
#
|
||||||
|
|
||||||
# Note that every group inherits the previous groups' permissions
|
# Note that every group inherits the previous groups' permissions
|
||||||
# Meaning Senior Admins have the permissions of Operators and Admins, and etc
|
# Meaning Telnet Admins have the permissions of Operators and Super Admins, and etc
|
||||||
|
|
||||||
# This is used to remove all permission begging with the root node
|
# This is used to remove all permission begging with the root node
|
||||||
# This is useful when a plugin gives all permissions to a player because they are opped
|
# This is useful when a plugin gives all permissions to a player because they are opped
|
||||||
remove:
|
remove:
|
||||||
- "voxelsniper"
|
- "voxelsniper"
|
||||||
- "bending"
|
- "bending.admin"
|
||||||
|
- "bending.ability.Cleanse"
|
||||||
|
- "worldedit.brush.apply"
|
||||||
|
- "essentials.near.exclude"
|
||||||
|
- "plots.admin"
|
||||||
|
- "plots.debugroadregen"
|
||||||
|
- "plots.debugclaimtest"
|
||||||
|
- "plots.debugpaste"
|
||||||
|
- "plots.debugallowunsafe"
|
||||||
|
- "plots.debugloadtest"
|
||||||
|
- "plots.debugsavetest"
|
||||||
|
- "plots.cluster"
|
||||||
|
#Crackshot
|
||||||
|
- "crackshot.bypass.all"
|
||||||
|
#NetworkManager
|
||||||
|
- "networkmanager.*"
|
||||||
|
- "networkmanager.notify.joinbanned"
|
||||||
|
- "networkmanager.notify.*"
|
||||||
|
- "networkmanager.announce.global"
|
||||||
|
- "networkmanager.announce"
|
||||||
|
- "networkmanager.chatlock"
|
||||||
|
- "networkmanager.clearchat.bypass"
|
||||||
|
- "networkmanager.clearchat.*"
|
||||||
|
- "networkmanager.notify.ticket.new"
|
||||||
|
- "networkmanager.lookup"
|
||||||
|
- "networkmanager.maintenance.*"
|
||||||
|
- "networkmanager.permissions"
|
||||||
|
- "networkmanager.reports"
|
||||||
|
- "networkmanager.tickets"
|
||||||
|
- "networkmanager.chatlock.bypass"
|
||||||
|
- "networkmanager.anticaps.bypass"
|
||||||
|
- "networkmanager.antispam.bypass"
|
||||||
|
- "networkmanager.commandblocker.bypass"
|
||||||
|
- "networkmanager.tags.*"
|
||||||
|
|
||||||
|
|
||||||
# Operator permission nodes
|
# Operator permission nodes
|
||||||
operators:
|
operators:
|
||||||
@ -36,16 +70,79 @@ operators:
|
|||||||
- "worldedit.removebelow"
|
- "worldedit.removebelow"
|
||||||
- "worldedit.removenear"
|
- "worldedit.removenear"
|
||||||
- "worldedit.replacenear"
|
- "worldedit.replacenear"
|
||||||
|
- "worldedit.brush.*"
|
||||||
|
- "worldedit.global-mask"
|
||||||
|
- "worldedit.fill"
|
||||||
|
- "worldedit.fill.recursive"
|
||||||
# LibsDisguises
|
# LibsDisguises
|
||||||
- "libsdisguises.noactionbar"
|
- "libsdisguises.noactionbar"
|
||||||
|
|
||||||
# WorldGuard
|
# WorldGuard
|
||||||
- "worldguard.region.list.own"
|
- "worldguard.region.list.own"
|
||||||
- "worldguard.region.addmember.own.*"
|
- "worldguard.region.addmember.own.*"
|
||||||
- "worldguard.region.removemember.own.*"
|
- "worldguard.region.removemember.own.*"
|
||||||
- "worldguard.region.info.*"
|
- "worldguard.region.info.*"
|
||||||
|
|
||||||
|
# Bending
|
||||||
|
- "bending.command.add"
|
||||||
|
- "bending.command.bind"
|
||||||
|
- "bending.command.check"
|
||||||
|
- "bending.command.choose"
|
||||||
|
- "bending.command.rechoose"
|
||||||
|
- "bending.command.clear"
|
||||||
|
- "bending.command.copy"
|
||||||
|
- "bending.command.display"
|
||||||
|
- "bending.command.help"
|
||||||
|
- "bending.command.invincible"
|
||||||
|
- "bending.command.preset"
|
||||||
|
- "bending.command.preset.list"
|
||||||
|
- "bending.command.preset.create"
|
||||||
|
- "bending.command.preset.delete"
|
||||||
|
- "bending.command.preset.bind"
|
||||||
|
- "bending.command.preset.bind.assign"
|
||||||
|
- "bending.command.preset.bind.external"
|
||||||
|
- "bending.command.toggle"
|
||||||
|
- "bending.command.version"
|
||||||
|
- "bending.command.who"
|
||||||
|
- "bending.earth"
|
||||||
|
- "bending.air"
|
||||||
|
- "bending.fire"
|
||||||
|
- "bending.water"
|
||||||
|
- "bending.water.bloodbending.anytime"
|
||||||
|
- "bending.ability.AvatarState"
|
||||||
|
- "bending.command.add.chi"
|
||||||
|
- "bending.command.choose.chi"
|
||||||
|
- "bending.ability.Paralyze"
|
||||||
|
- "bending.ability.RapidPunch"
|
||||||
|
- "bending.ability.Smokescreen"
|
||||||
|
- "bending.ability.WarriorStance"
|
||||||
|
- "bending.ability.AcrobatStance"
|
||||||
|
- "bending.ability.QuickStrike"
|
||||||
|
- "bending.ability.SwiftKick"
|
||||||
|
- "bending.ability.ChiCombo"
|
||||||
|
- "bending.chi.passive"
|
||||||
|
- "bending.ability.MetalClips.throw"
|
||||||
|
- "bending.ability.AirCombo"
|
||||||
|
- "bending.ability.Flight"
|
||||||
|
- "bending.ability.WaterCombo"
|
||||||
|
- "bending.ability.EarthCombo"
|
||||||
|
- "bending.ability.FireCombo"
|
||||||
|
- "bending.ability.ChiCombo"
|
||||||
|
- "bending.air.passive"
|
||||||
|
- "bending.chi.passive"
|
||||||
|
- "bending.earth.passive"
|
||||||
|
- "bending.fire.passive"
|
||||||
|
- "bending.water.passive"
|
||||||
|
# NetworkManager
|
||||||
|
- "networkmanager.chatlog"
|
||||||
|
- "networkmanager.find"
|
||||||
|
- "networkmanager.gtps"
|
||||||
|
- "networkmanager.lookup"
|
||||||
|
- "networkmanager.slashserver.*"
|
||||||
|
- "networkmanager.notification.join"
|
||||||
|
- "networkmanager.party.nolimit"
|
||||||
|
- "networkmanager.tabcompletechat"
|
||||||
|
|
||||||
# Master Builder permission nodes
|
# Master Builder permission nodes
|
||||||
master_builders:
|
master_builders:
|
||||||
- "worldedit.tool.*"
|
- "worldedit.tool.*"
|
||||||
@ -59,13 +156,25 @@ master_builders:
|
|||||||
- "voxelsniper.sniper"
|
- "voxelsniper.sniper"
|
||||||
- "voxelsniper.goto"
|
- "voxelsniper.goto"
|
||||||
- "voxelsniper.brush.*"
|
- "voxelsniper.brush.*"
|
||||||
|
|
||||||
# Admin permission nodes
|
# Admin permission nodes
|
||||||
admins:
|
admins:
|
||||||
- "coreprotect.*"
|
|
||||||
- "worldedit.*"
|
- "worldedit.*"
|
||||||
- "worldguard.*"
|
- "worldguard.*"
|
||||||
- "bending.*"
|
- "bending.admin.remove"
|
||||||
|
- "bending.command.toggle.all"
|
||||||
|
- "bending.admin.toggle"
|
||||||
|
- "bending.command.reload"
|
||||||
|
- "plots.cluster"
|
||||||
|
- "networkmanager.adminchat"
|
||||||
|
- "networkmanager.announce.server"
|
||||||
|
- "networkmanager.socialspy"
|
||||||
|
- "networkmanager.fullproxy.bypass"
|
||||||
|
- "networkmanager.lookup.ip"
|
||||||
|
#Crackshot
|
||||||
|
- "crackshot.bypass.all"
|
||||||
|
|
||||||
# Senior Admin permission nodes
|
# Senior Admin permission nodes
|
||||||
senior_admins: []
|
senior_admins:
|
||||||
|
- "bending.admin.permaremove"
|
||||||
|
- "bending.ability.Cleanse"
|
||||||
|
Reference in New Issue
Block a user