diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 00000000..60dde504
--- /dev/null
+++ b/.github/dependabot.yml
@@ -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"
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 59cede28..cd7f4aee 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -8,10 +8,20 @@ jobs:
runs-on: ubuntu-latest
steps:
+ # Java 11 Builds
- uses: actions/checkout@v1
- - name: Set up JDK 1.8
+ - name: Set up JDK 11
uses: actions/setup-java@v1
with:
java-version: 11
- name: Build with Maven
run: mvn -B package --file pom.xml
+
+ # Java 16 Builds
+ - uses: actions/checkout@v1
+ - name: Set up JDK 16
+ uses: actions/setup-java@v1
+ with:
+ java-version: 16
+ - name: Build with Maven
+ run: mvn -B package --file pom.xml
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 141c7052..00000000
--- a/.travis.yml
+++ /dev/null
@@ -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
diff --git a/pom.xml b/pom.xml
index 8a6735cc..7c8f8d02 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
me.totalfreedom
TotalFreedomMod
- 2021.05
+ 2021.06
jar
@@ -105,11 +105,6 @@
https://papermc.io/repo/repository/maven-public/
-
- rayzr-repo
- https://cdn.rawgit.com/Rayzr522/maven-repo/master/
-
-
ess-repo
https://ci.ender.zone/plugin/repository/everything/
@@ -168,9 +163,9 @@
- com.github.TotalFreedomMC
+ com.github.AtlasMediaGroup
TF-LibsDisguises
- 48f01cf2fe
+ 5a340341b0
provided
@@ -216,13 +211,6 @@
compile
-
- me.rayzr522
- jsonmessage
- 1.0.0
- compile
-
-
com.github.vexsoftware
votifier
@@ -454,7 +442,6 @@
commons-codec:commons-codec
org.reflections:reflections
org.javassist:javassist
- me.rayzr522:jsonmessage
io.papermc:paperlib
com.github.speedxx:Mojangson
org.bstats:bstats-bukkit
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java b/src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java
index 63c9818a..2e84035a 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/AutoEject.java
@@ -85,6 +85,10 @@ public class AutoEject extends FreedomService
player.kickPlayer(kickMessage);
break;
}
+ default:
+ {
+ FLog.warning("Unrecognized EjectMethod " + method.name() + " found, defaulting to STRIKE_THREE");
+ }
case STRIKE_THREE:
{
plugin.bm.addBan(Ban.forPlayerFuzzy(player, Bukkit.getConsoleSender(), null, kickMessage));
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java b/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java
index 6a641bee..30d39f0f 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/CommandSpy.java
@@ -25,11 +25,6 @@ public class CommandSpy extends FreedomService
{
if (plugin.al.isAdmin(player) && plugin.al.getAdmin(player).getCommandSpy())
{
- if (plugin.al.isAdmin(event.getPlayer()) && !plugin.al.isSeniorAdmin(player))
- {
- continue;
- }
-
if (player != event.getPlayer())
{
FUtil.playerMsg(player, event.getPlayer().getName() + ": " + event.getMessage());
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java b/src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java
index 67a61cc2..3c58a451 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/EntityWiper.java
@@ -2,6 +2,8 @@ package me.totalfreedom.totalfreedommod;
import java.util.Arrays;
import java.util.List;
+
+import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import me.totalfreedom.totalfreedommod.util.Groups;
import org.bukkit.Bukkit;
import org.bukkit.World;
@@ -33,7 +35,10 @@ public class EntityWiper extends FreedomService
@Override
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
}
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java
index 2cbe79de..015cb064 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/LoginProcess.java
@@ -4,7 +4,6 @@ import io.papermc.lib.PaperLib;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
-import me.rayzr522.jsonmessage.JSONMessage;
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import me.totalfreedom.totalfreedommod.player.FPlayer;
import me.totalfreedom.totalfreedommod.player.PlayerData;
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java b/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java
index 8f9eb229..ba80fa8f 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/banning/IndefiniteBan.java
@@ -43,6 +43,7 @@ public class IndefiniteBan implements IConfig
@Override
public void saveTo(ConfigurationSection cs)
{
+ // The indefinite ban list is only intended to be modified manually. It is not intended to save.
}
@Override
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java
index db80dff9..746ce186 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/BlockBlocker.java
@@ -171,6 +171,11 @@ public class BlockBlocker extends FreedomService
}
break;
}
+ default:
+ {
+ // Do nothing
+ break;
+ }
}
if (Groups.BANNERS.contains(event.getBlockPlaced().getType()))
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java b/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java
index c8f6efb6..2e53f9de 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/blocking/InteractBlocker.java
@@ -36,10 +36,9 @@ public class InteractBlocker extends FreedomService
break;
}
- case LEFT_CLICK_AIR:
- case LEFT_CLICK_BLOCK:
+ default:
{
- //
+ // Do nothing
break;
}
}
@@ -158,6 +157,11 @@ public class InteractBlocker extends FreedomService
event.setCancelled(true);
break;
}
+ default:
+ {
+ // Do nothing
+ break;
+ }
}
}
}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java
index fece338d..ee2ba733 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockcmd.java
@@ -1,6 +1,8 @@
package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.player.FPlayer;
+import me.totalfreedom.totalfreedommod.punishments.Punishment;
+import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.ChatColor;
@@ -75,9 +77,11 @@ public class Command_blockcmd extends FreedomCommand
FPlayer playerdata = plugin.pl.getPlayer(player);
if (!playerdata.allCommandsBlocked())
{
- playerdata.setCommandsBlocked(true);
FUtil.adminAction(sender.getName(), "Blocking all commands for " + player.getName(), true);
+ playerdata.setCommandsBlocked(true);
msg("Blocked commands for " + player.getName() + ".");
+
+ plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.BLOCKCMD, null));
}
else
{
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java
index e1904553..cba22999 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockedit.java
@@ -1,6 +1,8 @@
package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.player.FPlayer;
+import me.totalfreedom.totalfreedommod.punishments.Punishment;
+import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.apache.commons.lang.ArrayUtils;
@@ -128,6 +130,8 @@ public class Command_blockedit extends FreedomCommand
msg(player2, "Your block modification abilities have been blocked.", ChatColor.RED);
msg("Blocked all block modification abilities for " + player2.getName());
+
+ plugin.pul.logPunishment(new Punishment(player2.getName(), FUtil.getIp(player2), sender.getName(), PunishmentType.BLOCKEDIT, null));
}
return true;
}
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java
index 0471724c..9c4bee0f 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_blockpvp.java
@@ -1,6 +1,8 @@
package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.player.FPlayer;
+import me.totalfreedom.totalfreedommod.punishments.Punishment;
+import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.apache.commons.lang3.ArrayUtils;
@@ -125,6 +127,7 @@ public class Command_blockpvp extends FreedomCommand
{
Command_smite.smite(sender, p, reason);
}
+ plugin.pul.logPunishment(new Punishment(p.getName(), FUtil.getIp(p), sender.getName(), PunishmentType.BLOCKPVP, null));
msg(p, "Your PVP has been disabled.", ChatColor.RED);
msg("Disabled PVP for " + p.getName());
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java
index 2ba3812d..c7992547 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cage.java
@@ -5,6 +5,8 @@ import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import me.totalfreedom.totalfreedommod.player.FPlayer;
+import me.totalfreedom.totalfreedommod.punishments.Punishment;
+import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.ChatColor;
@@ -75,17 +77,43 @@ public class Command_cage extends FreedomCommand
}
case "block":
{
- if (Material.matchMaterial(args[2]) != null)
+ if (args.length >= 3)
{
- outerMaterial = Material.matchMaterial(args[2]);
- break;
+ // Checks the validity of the Material and checks if it's a block.
+ // This is incredibly inefficient, as Spigot's isBlock() method in Material is an actual
+ // nightmare of switch-cases.
+ if (Material.matchMaterial(args[2]) != null && Material.matchMaterial(args[2]).isBlock())
+ {
+ outerMaterial = Material.matchMaterial(args[2]);
+ break;
+ }
+ else
+ {
+ msg("Invalid block!", ChatColor.RED);
+ return true;
+ }
}
- msg("Invalid block!", ChatColor.RED);
- break;
+ else
+ {
+ return false;
+ }
+ }
+ default:
+ {
+ return false;
}
}
}
+ if (outerMaterial == Material.PLAYER_HEAD)
+ {
+ FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true);
+ }
+ else
+ {
+ FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true);
+ }
+
Location location = player.getLocation().clone().add(0.0, 1.0, 0.0);
if (skullName != null)
@@ -96,17 +124,9 @@ public class Command_cage extends FreedomCommand
{
fPlayer.getCageData().cage(location, outerMaterial, innerMaterial);
}
-
player.setGameMode(GameMode.SURVIVAL);
- if (outerMaterial == Material.PLAYER_HEAD)
- {
- FUtil.adminAction(sender.getName(), "Caging " + player.getName() + " in " + skullName, true);
- }
- else
- {
- FUtil.adminAction(sender.getName(), "Caging " + player.getName(), true);
- }
+ plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.CAGE, null));
return true;
}
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleanchat.java
similarity index 94%
rename from src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java
rename to src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleanchat.java
index 3e891b9d..6bcf50ed 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_clearchat.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_cleanchat.java
@@ -8,7 +8,7 @@ import org.bukkit.entity.Player;
@CommandPermissions(level = Rank.ADMIN, source = SourceType.BOTH)
@CommandParameters(description = "Clears the chat.", usage = "/", aliases = "cc")
-public class Command_clearchat extends FreedomCommand
+public class Command_cleanchat extends FreedomCommand
{
@Override
@@ -27,4 +27,4 @@ public class Command_clearchat extends FreedomCommand
FUtil.adminAction(sender.getName(), "Cleared chat", true);
return true;
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java
index ff2043b2..f83157f5 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_entitywipe.java
@@ -64,6 +64,12 @@ public class Command_entitywipe extends FreedomCommand
return true;
}
+ if (type == EntityType.PLAYER)
+ {
+ msg("Player entities cannot be purged.", ChatColor.RED);
+ return true;
+ }
+
if (!getAllEntities().contains(type))
{
msg(FUtil.formatName(type.name()) + " is an entity, however: it is a mob.", ChatColor.RED);
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java
index 45de1bde..fdcce361 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_freeze.java
@@ -23,12 +23,12 @@ public class Command_freeze extends FreedomCommand
if (!gFreeze)
{
- FUtil.adminAction(sender.getName(), "Disabling global player freeze", false);
+ FUtil.adminAction(sender.getName(), "Unfreezing all players", false);
msg("Players are now free to move.");
return true;
}
- FUtil.adminAction(sender.getName(), "Enabling global player freeze", false);
+ FUtil.adminAction(sender.getName(), "Freezing all players", false);
for (Player player : server.getOnlinePlayers())
{
if (!isAdmin(player))
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java
index 60c786c3..1c0a7a81 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_manageshop.java
@@ -35,8 +35,8 @@ public class Command_manageshop extends FreedomCommand
}
switch (args[1])
{
-
case "add":
+ {
try
{
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);
return true;
}
+ }
case "remove":
+ {
try
{
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);
return true;
}
+ }
case "set":
+ {
try
{
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);
return true;
}
+ }
+ default:
+ {
+ return false;
+ }
}
}
else if (args[0].equals("items"))
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java
index 8a4754b2..4a4cd2ab 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_notes.java
@@ -116,8 +116,12 @@ public class Command_notes extends FreedomCommand
msg("Cleared " + count + " notes.", ChatColor.GREEN);
return true;
}
+
+ default:
+ {
+ return false;
+ }
}
- return false;
}
@Override
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java
index 08894999..06320f31 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_orbit.java
@@ -1,6 +1,8 @@
package me.totalfreedom.totalfreedommod.command;
import me.totalfreedom.totalfreedommod.player.FPlayer;
+import me.totalfreedom.totalfreedommod.punishments.Punishment;
+import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
import me.totalfreedom.totalfreedommod.rank.Rank;
import me.totalfreedom.totalfreedommod.util.FUtil;
import org.bukkit.ChatColor;
@@ -56,11 +58,13 @@ public class Command_orbit extends FreedomCommand
}
}
+ FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false);
+
player.setGameMode(GameMode.SURVIVAL);
playerdata.startOrbiting(strength);
-
player.setVelocity(new Vector(0, strength, 0));
- FUtil.adminAction(sender.getName(), "Orbiting " + player.getName(), false);
+
+ plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.ORBIT, null));
return true;
}
}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java
index 0f30f24d..feab9776 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java
@@ -29,6 +29,7 @@ public class Command_potion extends FreedomCommand
switch (args.length)
{
case 1:
+ {
if (args[0].equalsIgnoreCase("list"))
{
List potionEffectTypeNames = new ArrayList<>();
@@ -58,8 +59,10 @@ public class Command_potion extends FreedomCommand
}
}
}
+ }
case 2:
+ {
if (args[0].equalsIgnoreCase("clear"))
{
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);
}
break;
+ }
case 4:
case 5:
+ {
if (args[0].equalsIgnoreCase("add"))
{
Player target = playerSender;
@@ -167,8 +172,11 @@ public class Command_potion extends FreedomCommand
+ (!target.equals(playerSender) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA);
}
break;
+ }
default:
+ {
return false;
+ }
}
return true;
}
@@ -179,14 +187,17 @@ public class Command_potion extends FreedomCommand
switch (args.length)
{
case 1:
+ {
List arguments = new ArrayList<>(Arrays.asList("list", "clear", "add"));
if (plugin.al.isAdmin(sender))
{
arguments.add("clearall");
}
return arguments;
+ }
case 2:
+ {
if (args[0].equals("clear"))
{
if (plugin.al.isAdmin(sender))
@@ -199,22 +210,28 @@ public class Command_potion extends FreedomCommand
return getAllPotionTypes();
}
break;
+ }
case 3:
+ {
if (args[0].equals("add"))
{
return Collections.singletonList("");
}
break;
+ }
case 4:
+ {
if (args[0].equals("add"))
{
return Collections.singletonList("");
}
break;
+ }
case 5:
+ {
if (plugin.al.isAdmin(sender))
{
if (args[0].equals("add"))
@@ -223,6 +240,12 @@ public class Command_potion extends FreedomCommand
}
}
break;
+ }
+
+ default:
+ {
+ break;
+ }
}
return Collections.emptyList();
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java
new file mode 100644
index 00000000..ff489582
--- /dev/null
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_seed.java
@@ -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 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 worlds = new ArrayList<>();
+ for (World world : server.getWorlds())
+ {
+ worlds.add(world.getName());
+ }
+ return worlds;
+ }
+
+ return null;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java
index 6f6a1520..0ae1b9d4 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_tag.java
@@ -105,6 +105,11 @@ public class Command_tag extends FreedomCommand
}
return true;
}
+
+ default:
+ {
+ return false;
+ }
}
}
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);
return true;
}
+
+ default:
+ {
+ return false;
+ }
}
}
return false;
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java
index c25ebe9c..712ff7ff 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java
@@ -16,6 +16,12 @@ import org.bukkit.entity.Player;
@CommandParameters(description = "Toggles TotalFreedomMod settings", usage = "/ [option] [value] [value]")
public class Command_toggle extends FreedomCommand
{
+ private final List toggles = Arrays.asList(
+ "waterplace", "fireplace", "lavaplace", "fluidspread", "lavadmg", "firespread", "frostwalk",
+ "firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke [range] [count]",
+ "explosives [radius]", "unsafeenchs", "bells", "armorstands", "structureblocks", "jigsaws", "grindstones",
+ "jukeboxes", "spawners", "4chan", "beehives", "respawnanchors", "autotp", "autoclear", "minecarts", "mp44",
+ "landmines", "tossmob", "gravity");
@Override
public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
@@ -23,38 +29,10 @@ public class Command_toggle extends FreedomCommand
if (args.length == 0)
{
msg("Available toggles: ");
- msg("- waterplace");
- msg("- fireplace");
- msg("- lavaplace");
- msg("- fluidspread");
- msg("- lavadmg");
- msg("- firespread");
- msg("- frostwalk");
- msg("- firework");
- msg("- prelog");
- msg("- lockdown");
- msg("- petprotect");
- msg("- entitywipe");
- msg("- nonuke [range] [count]");
- msg("- explosives [radius]");
- msg("- unsafeenchs");
- msg("- bells");
- msg("- armorstands");
- msg("- structureblocks");
- msg("- jigsaws");
- msg("- grindstones");
- msg("- jukeboxes");
- msg("- spawners");
- msg("- 4chan");
- msg("- beehives");
- msg("- respawnanchors");
- msg("- autotp");
- msg("- autoclear");
- msg("- minecarts");
- msg("- landmines");
- msg("- mp44");
- msg("- tossmob");
- msg("- gravity");
+ for (String toggle : toggles)
+ {
+ msg("- " + toggle);
+ }
return false;
}
@@ -304,6 +282,16 @@ public class Command_toggle extends FreedomCommand
toggle("Block gravity is", ConfigEntry.ALLOW_GRAVITY);
break;
}
+
+ default:
+ {
+ msg("Available toggles: ");
+ for (String toggle : toggles)
+ {
+ msg("- " + toggle);
+ }
+ return false;
+ }
}
return true;
}
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java
index 827a5b04..17be800f 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_warn.java
@@ -1,6 +1,9 @@
package me.totalfreedom.totalfreedommod.command;
+import me.totalfreedom.totalfreedommod.punishments.Punishment;
+import me.totalfreedom.totalfreedommod.punishments.PunishmentType;
import me.totalfreedom.totalfreedommod.rank.Rank;
+import me.totalfreedom.totalfreedommod.util.FUtil;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
@@ -53,25 +56,28 @@ public class Command_warn extends FreedomCommand
String warnReason = StringUtils.join(ArrayUtils.subarray(args, 1, args.length), " ");
player.sendTitle(ChatColor.RED + "You've been warned.", ChatColor.YELLOW + "Reason: " + warnReason, 20, 100, 60);
- msg(ChatColor.GREEN + "You have successfully warned " + player.getName());
+ msg(player, ChatColor.RED + "[WARNING] You received a warning from " + sender.getName() + ": " + warnReason);
+ plugin.pl.getPlayer(player).incrementWarnings(quiet);
+ plugin.pul.logPunishment(new Punishment(player.getName(), FUtil.getIp(player), sender.getName(), PunishmentType.WARN, warnReason));
if (quiet)
{
- msg("Warned " + player.getName() + " quietly");
- return true;
+ msg("You have successfully warned " + player.getName() + " quietly.");
}
+ 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);
- String adminNotice = ChatColor.RED +
- sender.getName() +
- " - " +
- "Warning: " +
- player.getName() +
- " - Reason: " +
- ChatColor.YELLOW +
- warnReason;
- plugin.al.messageAllAdmins(adminNotice);
- plugin.pl.getPlayer(player).incrementWarnings();
+ msg("You have successfully warned " + player.getName() + ".");
+ }
return true;
}
}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java
index 55c4ec94..08ae5252 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/ItemFun.java
@@ -128,7 +128,7 @@ public class ItemFun extends FreedomService
LivingEntity livingEntity = (LivingEntity)event.getRightClicked();
EntityType entityType = livingEntity.getType();
- if (!(entityType == fPlayer.mobThrowerCreature()))
+ if (entityType != fPlayer.mobThrowerCreature())
{
return;
}
@@ -304,6 +304,11 @@ public class ItemFun extends FreedomService
}
break;
}
+ default:
+ {
+ // Do nothing
+ break;
+ }
}
}
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java b/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java
index bf9c8bde..fc249df9 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/fun/Landminer.java
@@ -73,7 +73,7 @@ public class Landminer extends FreedomService
continue;
}
- if (!(player.getLocation().distanceSquared(location) <= (landmine.radius * landmine.radius)))
+ if (player.getLocation().distanceSquared(location) > (landmine.radius * landmine.radius))
{
break;
}
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java
index 8ee00487..33573926 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_list.java
@@ -79,11 +79,20 @@ public class Module_list extends HTTPDModule
switch (admin.getRank())
{
case ADMIN:
+ {
admins.add(player.getName());
break;
+ }
case SENIOR_ADMIN:
+ {
senioradmins.add(player.getName());
break;
+ }
+ default:
+ {
+ // Do nothing
+ break;
+ }
}
}
}
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java
index 3ae3fbbe..61f8b819 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/httpd/module/Module_players.java
@@ -51,11 +51,20 @@ public class Module_players extends HTTPDModule
switch (admin.getRank())
{
case ADMIN:
+ {
admins.add(username);
break;
+ }
case SENIOR_ADMIN:
+ {
senioradmins.add(username);
break;
+ }
+ default:
+ {
+ // Do nothing
+ break;
+ }
}
}
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java
index 4e1febc4..03e0c075 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/player/FPlayer.java
@@ -1,7 +1,5 @@
package me.totalfreedom.totalfreedommod.player;
-import java.util.ArrayList;
-import java.util.List;
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import me.totalfreedom.totalfreedommod.caging.CageData;
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
@@ -16,8 +14,12 @@ import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
+import java.util.ArrayList;
+import java.util.List;
+
public class FPlayer
{
+
public static final long AUTO_PURGE_TICKS = 5L * 60L * 20L;
@@ -247,7 +249,7 @@ public class FPlayer
public void startArrowShooter(TotalFreedomMod plugin)
{
this.stopArrowShooter();
- this.mp44ScheduleTask = new ArrowShooter(this.player).runTaskTimer(plugin, 1L, 1L);
+ this.mp44ScheduleTask = new ArrowShooter(getPlayer()).runTaskTimer(plugin, 1L, 1L);
this.mp44Firing = true;
}
@@ -429,14 +431,19 @@ public class FPlayer
this.warningCount = warningCount;
}
- public void incrementWarnings()
+ public void incrementWarnings(boolean quiet)
{
this.warningCount++;
if (this.warningCount % 2 == 0)
{
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());
}
}
@@ -704,8 +711,11 @@ public class FPlayer
@Override
public void run()
{
- Arrow shot = player.launchProjectile(Arrow.class);
- shot.setVelocity(shot.getVelocity().multiply(2.0));
+ if (player != null)
+ {
+ Arrow shot = player.launchProjectile(Arrow.class);
+ shot.setVelocity(shot.getVelocity().multiply(2.0));
+ }
}
}
}
\ No newline at end of file
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java b/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java
index 705fd928..1c710350 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/punishments/PunishmentType.java
@@ -7,5 +7,11 @@ public enum PunishmentType
KICK,
TEMPBAN,
BAN,
- DOOM
+ DOOM,
+ WARN,
+ CAGE,
+ BLOCKEDIT,
+ BLOCKPVP,
+ BLOCKCMD,
+ ORBIT
}
diff --git a/src/main/resources/permissions.yml b/src/main/resources/permissions.yml
index ae404160..1c1877d7 100644
--- a/src/main/resources/permissions.yml
+++ b/src/main/resources/permissions.yml
@@ -1,16 +1,50 @@
#
-# TotalFreedomMod Permissions
+# TotalFreedomMod 5.5 Permissions
# by ZeroEpoch1969
#
# Note that every group inherits the previous groups' permissions
-# Meaning Senior Admins have the permissions of Operators and Admins, and etc
+# Meaning Telnet Admins have the permissions of Operators and Super Admins, and etc
# This is used to remove all permission begging with the root node
# This is useful when a plugin gives all permissions to a player because they are opped
remove:
- "voxelsniper"
- - "bending"
+ - "bending.admin"
+ - "bending.ability.Cleanse"
+ - "worldedit.brush.apply"
+ - "essentials.near.exclude"
+ - "plots.admin"
+ - "plots.debugroadregen"
+ - "plots.debugclaimtest"
+ - "plots.debugpaste"
+ - "plots.debugallowunsafe"
+ - "plots.debugloadtest"
+ - "plots.debugsavetest"
+ - "plots.cluster"
+ #Crackshot
+ - "crackshot.bypass.all"
+ #NetworkManager
+ - "networkmanager.*"
+ - "networkmanager.notify.joinbanned"
+ - "networkmanager.notify.*"
+ - "networkmanager.announce.global"
+ - "networkmanager.announce"
+ - "networkmanager.chatlock"
+ - "networkmanager.clearchat.bypass"
+ - "networkmanager.clearchat.*"
+ - "networkmanager.notify.ticket.new"
+ - "networkmanager.lookup"
+ - "networkmanager.maintenance.*"
+ - "networkmanager.permissions"
+ - "networkmanager.reports"
+ - "networkmanager.tickets"
+ - "networkmanager.chatlock.bypass"
+ - "networkmanager.anticaps.bypass"
+ - "networkmanager.antispam.bypass"
+ - "networkmanager.commandblocker.bypass"
+ - "networkmanager.tags.*"
+
# Operator permission nodes
operators:
@@ -36,16 +70,79 @@ operators:
- "worldedit.removebelow"
- "worldedit.removenear"
- "worldedit.replacenear"
-
+ - "worldedit.brush.*"
+ - "worldedit.global-mask"
+ - "worldedit.fill"
+ - "worldedit.fill.recursive"
# LibsDisguises
- "libsdisguises.noactionbar"
-
+
# WorldGuard
- "worldguard.region.list.own"
- "worldguard.region.addmember.own.*"
- "worldguard.region.removemember.own.*"
- "worldguard.region.info.*"
+ # Bending
+ - "bending.command.add"
+ - "bending.command.bind"
+ - "bending.command.check"
+ - "bending.command.choose"
+ - "bending.command.rechoose"
+ - "bending.command.clear"
+ - "bending.command.copy"
+ - "bending.command.display"
+ - "bending.command.help"
+ - "bending.command.invincible"
+ - "bending.command.preset"
+ - "bending.command.preset.list"
+ - "bending.command.preset.create"
+ - "bending.command.preset.delete"
+ - "bending.command.preset.bind"
+ - "bending.command.preset.bind.assign"
+ - "bending.command.preset.bind.external"
+ - "bending.command.toggle"
+ - "bending.command.version"
+ - "bending.command.who"
+ - "bending.earth"
+ - "bending.air"
+ - "bending.fire"
+ - "bending.water"
+ - "bending.water.bloodbending.anytime"
+ - "bending.ability.AvatarState"
+ - "bending.command.add.chi"
+ - "bending.command.choose.chi"
+ - "bending.ability.Paralyze"
+ - "bending.ability.RapidPunch"
+ - "bending.ability.Smokescreen"
+ - "bending.ability.WarriorStance"
+ - "bending.ability.AcrobatStance"
+ - "bending.ability.QuickStrike"
+ - "bending.ability.SwiftKick"
+ - "bending.ability.ChiCombo"
+ - "bending.chi.passive"
+ - "bending.ability.MetalClips.throw"
+ - "bending.ability.AirCombo"
+ - "bending.ability.Flight"
+ - "bending.ability.WaterCombo"
+ - "bending.ability.EarthCombo"
+ - "bending.ability.FireCombo"
+ - "bending.ability.ChiCombo"
+ - "bending.air.passive"
+ - "bending.chi.passive"
+ - "bending.earth.passive"
+ - "bending.fire.passive"
+ - "bending.water.passive"
+ # NetworkManager
+ - "networkmanager.chatlog"
+ - "networkmanager.find"
+ - "networkmanager.gtps"
+ - "networkmanager.lookup"
+ - "networkmanager.slashserver.*"
+ - "networkmanager.notification.join"
+ - "networkmanager.party.nolimit"
+ - "networkmanager.tabcompletechat"
+
# Master Builder permission nodes
master_builders:
- "worldedit.tool.*"
@@ -59,13 +156,25 @@ master_builders:
- "voxelsniper.sniper"
- "voxelsniper.goto"
- "voxelsniper.brush.*"
-
+
# Admin permission nodes
admins:
- - "coreprotect.*"
- "worldedit.*"
- "worldguard.*"
- - "bending.*"
+ - "bending.admin.remove"
+ - "bending.command.toggle.all"
+ - "bending.admin.toggle"
+ - "bending.command.reload"
+ - "plots.cluster"
+ - "networkmanager.adminchat"
+ - "networkmanager.announce.server"
+ - "networkmanager.socialspy"
+ - "networkmanager.fullproxy.bypass"
+ - "networkmanager.lookup.ip"
+ #Crackshot
+ - "crackshot.bypass.all"
# Senior Admin permission nodes
-senior_admins: []
+senior_admins:
+ - "bending.admin.permaremove"
+ - "bending.ability.Cleanse"