From 59cbc05a4a735cf2dc608bf335d0ccd7aa283bb6 Mon Sep 17 00:00:00 2001
From: ZeroEpoch1969 <13510767+ZeroEpoch1969@users.noreply.github.com>
Date: Fri, 22 Feb 2019 16:16:08 -0700
Subject: [PATCH] chee
---
TotalFreedomMod.iml | 23 +--
pom.xml | 6 -
.../totalfreedommod/FrontDoor.java | 8 -
.../totalfreedommod/TotalFreedomMod.java | 3 -
.../bridge/BukkitSSHBridge.java | 94 -----------
.../bridge/CoreProtectBridge.java | 75 ++++-----
.../bridge/WorldEditBridge.java | 2 +-
.../totalfreedommod/command/Command_bird.java | 33 ++++
.../command/Command_enchant.java | 154 +++++++++++++++++-
.../command/Command_plotworld.java | 28 ++++
.../command/Command_toggle.java | 8 +-
.../totalfreedommod/config/ConfigEntry.java | 9 +-
.../MasterBuilderWorldRestrictions.java | 24 +--
.../totalfreedommod/rank/Title.java | 2 +-
src/main/resources/config.yml | 14 +-
15 files changed, 287 insertions(+), 196 deletions(-)
delete mode 100644 src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitSSHBridge.java
create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_bird.java
create mode 100644 src/main/java/me/totalfreedom/totalfreedommod/command/Command_plotworld.java
diff --git a/TotalFreedomMod.iml b/TotalFreedomMod.iml
index 7766ed47..3ec7936e 100644
--- a/TotalFreedomMod.iml
+++ b/TotalFreedomMod.iml
@@ -16,13 +16,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -48,7 +48,7 @@
-
+
@@ -59,7 +59,7 @@
-
+
@@ -71,10 +71,5 @@
-
-
-
-
-
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 2d74ab71..d47e3e7d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -168,12 +168,6 @@
50fd4cb470
provided
-
-
- com.github.TFPatches
- BukkitSSH
- master-SNAPSHOT
-
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java b/src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java
index a9611359..50b516ac 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/FrontDoor.java
@@ -481,14 +481,6 @@ public class FrontDoor extends FreedomService
case 10: // Enable Jumppads
{
- if (plugin.jp.getMode().isOn())
- {
- break;
- }
-
- FUtil.adminAction("FrontDoor", "Enabling Jumppads", true);
- plugin.jp.setMode(Jumppads.JumpPadMode.MADGEEK);
- break;
}
case 11: // Give everyone a book explaining how awesome TotalFreedom is
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java
index f49fcdbe..ff28c11f 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/TotalFreedomMod.java
@@ -16,7 +16,6 @@ import me.totalfreedom.totalfreedommod.blocking.PVPBlocker;
import me.totalfreedom.totalfreedommod.blocking.PotionBlocker;
import me.totalfreedom.totalfreedommod.blocking.SignBlocker;
import me.totalfreedom.totalfreedommod.blocking.command.CommandBlocker;
-import me.totalfreedom.totalfreedommod.bridge.BukkitSSHBridge;
import me.totalfreedom.totalfreedommod.bridge.BukkitTelnetBridge;
import me.totalfreedom.totalfreedommod.bridge.CoreProtectBridge;
import me.totalfreedom.totalfreedommod.bridge.EssentialsBridge;
@@ -127,7 +126,6 @@ public class TotalFreedomMod extends AeroPlugin
// Bridges
public ServiceManager bridges;
public BukkitTelnetBridge btb;
- public BukkitSSHBridge bsb;
public EssentialsBridge esb;
public LibsDisguisesBridge ldb;
public CoreProtectBridge cpb;
@@ -245,7 +243,6 @@ public class TotalFreedomMod extends AeroPlugin
// Start bridges
bridges = new ServiceManager<>(plugin);
btb = bridges.registerService(BukkitTelnetBridge.class);
- bsb = bridges.registerService(BukkitSSHBridge.class);
cpb = bridges.registerService(CoreProtectBridge.class);
esb = bridges.registerService(EssentialsBridge.class);
ldb = bridges.registerService(LibsDisguisesBridge.class);
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitSSHBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitSSHBridge.java
deleted file mode 100644
index ec0a1a50..00000000
--- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/BukkitSSHBridge.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package me.totalfreedom.totalfreedommod.bridge;
-
-import com.ryanmichela.bukkitssh.BukkitSSH;
-import com.ryanmichela.bukkitssh.SshTerminal;
-import me.totalfreedom.bukkitssh.SSHCommandEvent;
-import me.totalfreedom.bukkitssh.SSHPreLoginEvent;
-import java.util.ArrayList;
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import me.totalfreedom.totalfreedommod.FreedomService;
-import me.totalfreedom.totalfreedommod.TotalFreedomMod;
-import me.totalfreedom.totalfreedommod.admin.Admin;
-import me.totalfreedom.totalfreedommod.rank.Rank;
-import me.totalfreedom.totalfreedommod.util.FLog;
-import org.bukkit.entity.Player;
-import org.bukkit.event.EventHandler;
-import org.bukkit.event.EventPriority;
-import org.bukkit.plugin.Plugin;
-
-public class BukkitSSHBridge extends FreedomService
-{
-
- private BukkitSSH BukkitSSHPlugin = null;
-
- public BukkitSSHBridge(TotalFreedomMod plugin)
- {
- super(plugin);
- }
-
- @Override
- protected void onStart()
- {
- }
-
- @Override
- protected void onStop()
- {
- }
-
- @EventHandler(priority = EventPriority.NORMAL)
- public void onTelnetPreLogin(SSHPreLoginEvent event)
- {
-
- final String ip = event.getIp();
- if (ip == null || ip.isEmpty())
- {
- return;
- }
-
- final Admin admin = plugin.al.getEntryByIpFuzzy(ip);
-
- if (admin == null || !admin.isActive() || !admin.getRank().hasConsoleVariant())
- {
- return;
- }
-
- event.setBypassPassword(true);
- event.setName(admin.getName());
- }
-
- @EventHandler(priority = EventPriority.NORMAL)
- public void onTelnetCommand(SSHCommandEvent event)
- {
- if (plugin.cb.isCommandBlocked(event.getCommand(), event.getSender()))
- {
- event.setCancelled(true);
- }
- }
- public BukkitSSH getBukkitSSHPlugin()
- {
- if (BukkitSSHPlugin == null)
- {
- try
- {
- final Plugin BukkitSSH = server.getPluginManager().getPlugin("BukkitSSH");
- if (BukkitSSH != null)
- {
- if (BukkitSSH instanceof BukkitSSH)
- {
- BukkitSSHPlugin = (BukkitSSH)BukkitSSH;
- }
- }
- }
- catch (Exception ex)
- {
- FLog.severe(ex);
- }
- }
-
- return BukkitSSHPlugin;
- }
-}
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java
index 37438317..6c1da0cb 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/CoreProtectBridge.java
@@ -1,5 +1,19 @@
package me.totalfreedom.totalfreedommod.bridge;
+import com.sk89q.worldedit.WorldEditException;
+import com.sk89q.worldedit.entity.BaseEntity;
+import com.sk89q.worldedit.entity.Entity;
+import com.sk89q.worldedit.event.platform.BlockInteractEvent;
+import com.sk89q.worldedit.extent.Extent;
+import com.sk89q.worldedit.function.operation.Operation;
+import com.sk89q.worldedit.math.BlockVector2;
+import com.sk89q.worldedit.math.BlockVector3;
+import com.sk89q.worldedit.regions.Region;
+import com.sk89q.worldedit.util.Location;
+import com.sk89q.worldedit.world.biome.BaseBiome;
+import com.sk89q.worldedit.world.block.BaseBlock;
+import com.sk89q.worldedit.world.block.BlockState;
+import com.sk89q.worldedit.world.block.BlockStateHolder;
import java.io.File;
import java.sql.Connection;
import java.sql.DriverManager;
@@ -8,6 +22,7 @@ import java.sql.SQLException;
import java.sql.Statement;
import java.util.Arrays;
import java.util.List;
+import javax.annotation.Nullable;
import me.totalfreedom.totalfreedommod.FreedomService;
import me.totalfreedom.totalfreedommod.TotalFreedomMod;
import me.totalfreedom.totalfreedommod.config.ConfigEntry;
@@ -18,10 +33,13 @@ import net.coreprotect.CoreProtectAPI;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.World;
+import org.bukkit.event.EventHandler;
+import org.bukkit.event.EventPriority;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import org.bukkit.scheduler.BukkitRunnable;
import org.bukkit.scheduler.BukkitTask;
+import com.sk89q.worldedit.event.extent.EditSessionEvent;
public class CoreProtectBridge extends FreedomService
{
@@ -39,10 +57,6 @@ public class CoreProtectBridge extends FreedomService
@Override
protected void onStart()
{
- if (ConfigEntry.COREPROTECT_AUTO_WIPING_ENABLED.getBoolean() && getCoreProtect() != null)
- {
- createAutomaticWiper();
- }
}
@Override
@@ -151,41 +165,6 @@ public class CoreProtectBridge extends FreedomService
return (new File(getCoreProtect().getDataFolder(), "database.db"));
}
- private void createAutomaticWiper()
- {
- final long interval = 10 * 20L;
- final File databaseFile = getDatabase();
-
- wiper = new BukkitRunnable()
- {
- @Override
- public void run()
- {
- final CoreProtect coreProtect = getCoreProtect();
- if (getDBSize() > ConfigEntry.COREPROTECT_FILE_LIMIT.getInteger())
- {
- FLog.info("The CoreProtect log file has grown too big for the server to cope, the data is being wiped!");
- FUtil.bcastMsg("The CoreProtect log file has grown too big for the server to cope, the data is being wiped!", ChatColor.RED);
- PluginManager pluginManager = server.getPluginManager();
- pluginManager.disablePlugin(coreProtect);
- for (World world : Bukkit.getWorlds())
- {
- if (!world.equals(plugin.wm.adminworld.getWorld()))
- {
- clearDatabase(world);
- }
- }
- //check if still too big, if so delete all data
- if (getDBSize() > ConfigEntry.COREPROTECT_FILE_LIMIT.getInteger())
- {
- FUtil.deleteFolder(databaseFile);
- }
- pluginManager.enablePlugin(coreProtect);
- }
- }
- }.runTaskTimer(plugin, interval, interval);
- }
-
public double getDBSize()
{
double bytes = getDatabase().length();
@@ -203,6 +182,10 @@ public class CoreProtectBridge extends FreedomService
// Wipes DB for the specified world
public void clearDatabase(World world, Boolean shutdown)
{
+ if (!ConfigEntry.COREPROTECT_MYSQL_ENABLED.getBoolean())
+ {
+ return;
+ }
final CoreProtect coreProtect = getCoreProtect();
if (coreProtect == null)
@@ -212,11 +195,16 @@ public class CoreProtectBridge extends FreedomService
/* As CoreProtect doesn't have an API method for deleting all of the data for a specific world
we have to do this manually via SQL */
- File databaseFile = getDatabase();
Connection connection = null;
try
{
- connection = DriverManager.getConnection("jdbc:sqlite:" + databaseFile);
+ String host = ConfigEntry.COREPROTECT_MYSQL_HOST.getString();
+ String port = ConfigEntry.COREPROTECT_MYSQL_PORT.getString();
+ String username = ConfigEntry.COREPROTECT_MYSQL_USERNAME.getString();
+ String password = ConfigEntry.COREPROTECT_MYSQL_PASSWORD.getString();
+ String database = ConfigEntry.COREPROTECT_MYSQL_DATABASE.getString();
+ String url = host + ":" + port + "/" + database + "?user=" + username + "&password=" + password + "&useSSL=false";
+ connection = DriverManager.getConnection("jdbc:mysql://" + url);
final Statement statement = connection.createStatement();
statement.setQueryTimeout(30);
@@ -238,12 +226,9 @@ public class CoreProtectBridge extends FreedomService
// Iterate through each table and delete their data if the world ID matches
for (String table : tables)
{
- statement.executeUpdate("DELETE FROM " + table + " WHERE wid = " + worldID);
+ statement.executeQuery("DELETE FROM " + table + " WHERE wid = " + worldID);
}
- // This shrinks down the file size
- statement.executeUpdate("VACUUM");
-
connection.close();
}
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldEditBridge.java b/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldEditBridge.java
index 689964eb..60489b73 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldEditBridge.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/bridge/WorldEditBridge.java
@@ -34,7 +34,7 @@ public class WorldEditBridge extends FreedomService
listener.unregister();
}
- private WorldEditPlugin getWorldEditPlugin()
+ public WorldEditPlugin getWorldEditPlugin()
{
if (worldeditPlugin == null)
{
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_bird.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_bird.java
new file mode 100644
index 00000000..ce573103
--- /dev/null
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_bird.java
@@ -0,0 +1,33 @@
+package me.totalfreedom.totalfreedommod.command;
+
+import java.util.Arrays;
+import java.util.List;
+import me.totalfreedom.totalfreedommod.rank.Rank;
+import org.bukkit.Location;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.EntityType;
+import org.bukkit.entity.Player;
+import java.util.Random;
+
+@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME)
+@CommandParameters(description = ":goodbird:", usage = "/")
+public class Command_bird extends FreedomCommand
+{
+
+ @Override
+ public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
+ {
+ Location location = playerSender.getTargetBlock(null, 15).getLocation().add(0, 1, 0);
+ playerSender.getWorld().spawnEntity(location, getRandomFish());
+ msg(":goodbird:");
+ return true;
+ }
+
+ public EntityType getRandomFish()
+ {
+ List fishTypes = Arrays.asList(EntityType.COD, EntityType.SALMON, EntityType.PUFFERFISH, EntityType.TROPICAL_FISH);
+ Random random = new Random();
+ return fishTypes.get(random.nextInt(fishTypes.size()));
+ }
+}
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_enchant.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_enchant.java
index f7d1f4fe..64458561 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_enchant.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_enchant.java
@@ -1,6 +1,13 @@
package me.totalfreedom.totalfreedommod.command;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.LinkedList;
+import java.util.List;
+import me.totalfreedom.totalfreedommod.config.ConfigEntry;
import me.totalfreedom.totalfreedommod.rank.Rank;
+import org.bukkit.ChatColor;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
@@ -9,7 +16,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@CommandPermissions(level = Rank.OP, source = SourceType.ONLY_IN_GAME)
-@CommandParameters(description = "Enchant items.", usage = "/ | remove >")
+@CommandParameters(description = "Enchant items.", usage = "/ [level] | remove >")
public class Command_enchant extends FreedomCommand
{
@@ -105,16 +112,41 @@ public class Command_enchant extends FreedomCommand
if (args[0].equalsIgnoreCase("add"))
{
- if (ench.canEnchantItem(item))
+ if (!ench.canEnchantItem(item) && !ConfigEntry.ALLOW_UNSAFE_ENCHANTMENTS.getBoolean())
{
- item.addEnchantment(ench, ench.getMaxLevel());
-
- msg("Added enchantment: " + ench.getName());
+ msg("Can't use this enchantment on held item.");
+ return true;
+ }
+ int level = ench.getMaxLevel();
+ if (args.length > 2)
+ {
+ try
+ {
+ if (ConfigEntry.ALLOW_UNSAFE_ENCHANTMENTS.getBoolean())
+ {
+ level = Integer.valueOf(args[2]);
+ }
+ else
+ {
+ level = Math.max(1, Math.min(ench.getMaxLevel(), Integer.parseInt(args[2])));
+ }
+ }
+ catch (NumberFormatException ex)
+ {
+ msg("\"" + args[2] + "\" is not a valid number", ChatColor.RED);
+ return true;
+ }
+ }
+ if (!ConfigEntry.ALLOW_UNSAFE_ENCHANTMENTS.getBoolean())
+ {
+ item.addEnchantment(ench, level);
}
else
{
- msg("Can't use this enchantment on held item.");
+ item.addUnsafeEnchantment(ench, level);
}
+
+ msg("Added enchantment: " + ench.getName());
}
else if (args[0].equals("remove"))
{
@@ -126,4 +158,114 @@ public class Command_enchant extends FreedomCommand
return true;
}
+
+ public List getAllEnchantments()
+ {
+ List enchantments = new ArrayList();
+ for (Enchantment enchantment : Enchantment.values())
+ {
+ enchantments.add(enchantment.getName());
+ }
+ return enchantments;
+ }
+
+ public List getAllEnchantments(ItemStack item)
+ {
+ List enchantments = new ArrayList();
+ for (Enchantment enchantment : Enchantment.values())
+ {
+ if (enchantment.canEnchantItem(item))
+ {
+ enchantments.add(enchantment.getName());
+ }
+ }
+ return enchantments;
+ }
+
+ public List getEnchantments(ItemStack item)
+ {
+ List enchantments = new ArrayList();
+ for (Enchantment enchantment : item.getEnchantments().keySet())
+ {
+ enchantments.add(enchantment.getName());
+ }
+ return enchantments;
+ }
+
+ public static List stringNumberRange(int min, int max)
+ {
+ List range = new ArrayList();
+ for (int i = min; i <= max; i++)
+ {
+ range.add(String.valueOf(i));
+ }
+
+ return range;
+ }
+
+ @Override
+ public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args)
+ {
+ Player player;
+ if (sender instanceof Player)
+ {
+ player = (Player)sender;
+ }
+ else
+ {
+ return Collections.emptyList();
+ }
+ ItemStack item = player.getEquipment().getItemInMainHand();
+
+ if (item == null || item.getType() == Material.AIR)
+ {
+ return Collections.emptyList();
+ }
+
+ boolean unsafe = ConfigEntry.ALLOW_UNSAFE_ENCHANTMENTS.getBoolean();
+
+ if (args.length == 1)
+ {
+ return Arrays.asList("list", "addall", "reset", "add", "remove");
+ }
+ else if (args.length == 2)
+ {
+ if (args[0].equals("add"))
+ {
+ if (unsafe)
+ {
+ return getAllEnchantments();
+ }
+ else
+ {
+ return getAllEnchantments(item);
+ }
+ }
+ else if (args[0].equals("remove"))
+ {
+ return getEnchantments(item);
+ }
+ }
+ else if (args.length == 3)
+ {
+ if (args[0].equals("add"))
+ {
+ Enchantment enchantment = Enchantment.getByName(args[1].toUpperCase());
+ if (enchantment != null)
+ {
+ if (!unsafe)
+ {
+ return stringNumberRange(1, enchantment.getMaxLevel());
+ }
+ else
+ {
+ return Arrays.asList("[level]");
+ }
+ }
+ }
+ }
+
+ return Collections.emptyList();
+ }
+
}
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plotworld.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plotworld.java
new file mode 100644
index 00000000..ad6037e3
--- /dev/null
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_plotworld.java
@@ -0,0 +1,28 @@
+package me.totalfreedom.totalfreedommod.command;
+
+import me.totalfreedom.totalfreedommod.rank.Rank;
+import org.bukkit.World;
+import org.bukkit.command.Command;
+import org.bukkit.command.CommandSender;
+import org.bukkit.entity.Player;
+
+@CommandPermissions(level = Rank.NON_OP, source = SourceType.ONLY_IN_GAME)
+@CommandParameters(description = "Goto the plot world", usage = "/", aliases = "pw")
+public class Command_plotworld extends FreedomCommand
+{
+
+ @Override
+ public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
+ {
+ World plotworld = server.getWorld("plotworld");
+ if (plotworld != null)
+ {
+ playerSender.teleport(plotworld.getSpawnLocation());
+ }
+ else
+ {
+ msg("\"plotworld\" doesn't exist.");
+ }
+ return true;
+ }
+}
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 5079f342..413c966f 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_toggle.java
@@ -36,6 +36,7 @@ public class Command_toggle extends FreedomCommand
msg("- entitywipe");
msg("- nonuke [range] [count]");
msg("- explosives [radius]");
+ msg("- unsafeenchs");
return false;
}
@@ -153,6 +154,11 @@ public class Command_toggle extends FreedomCommand
}
return true;
}
+ else if (args[0].equalsIgnoreCase("unsafeenchs"))
+ {
+ toggle("Invalid enchantments are", ConfigEntry.ALLOW_UNSAFE_ENCHANTMENTS);
+ return true;
+ }
else
{
return false;
@@ -171,7 +177,7 @@ public class Command_toggle extends FreedomCommand
{
return Arrays.asList(
"waterplace", "fireplace", "lavaplace", "fluidspread", "lavadmg", "firespread", "frostwalk",
- "firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke", "explosives");
+ "firework", "prelog", "lockdown", "petprotect", "entitywipe", "nonuke", "explosives", "unsafeenchs");
}
return Collections.emptyList();
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java
index 100f2a3c..e97ce513 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/config/ConfigEntry.java
@@ -21,6 +21,7 @@ public enum ConfigEntry
ALLOW_REDSTONE(Boolean.class, "allow.redstone"),
ALLOW_FIREWORK_EXPLOSION(Boolean.class, "allow.fireworks"),
ALLOW_FROSTWALKER(Boolean.class, "allow.frostwalker"),
+ ALLOW_UNSAFE_ENCHANTMENTS(Boolean.class, "allow.unsafe_enchantments"),
//
BLOCKED_CHATCODES(String.class, "blocked_chatcodes"),
//
@@ -49,8 +50,12 @@ public enum ConfigEntry
ADMINLIST_CLEAN_THESHOLD_HOURS(Integer.class, "adminlist.clean_threshold_hours"),
ADMINLIST_CONSOLE_IS_SENIOR(Boolean.class, "adminlist.console_is_senior"),
//
- COREPROTECT_AUTO_WIPING_ENABLED(Boolean.class, "coreprotect.auto_wipe"),
- COREPROTECT_FILE_LIMIT(Integer.class, "coreprotect.file_limit"),
+ COREPROTECT_MYSQL_ENABLED(Boolean.class, "coreprotect.enabled"),
+ COREPROTECT_MYSQL_HOST(String.class, "coreprotect.host"),
+ COREPROTECT_MYSQL_PORT(String.class, "coreprotect.port"),
+ COREPROTECT_MYSQL_USERNAME(String.class, "coreprotect.username"),
+ COREPROTECT_MYSQL_PASSWORD(String.class, "coreprotect.password"),
+ COREPROTECT_MYSQL_DATABASE(String.class, "coreprotect.database"),
//
DISABLE_NIGHT(Boolean.class, "disable.night"),
DISABLE_WEATHER(Boolean.class, "disable.weather"),
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/masterbuilder/MasterBuilderWorldRestrictions.java b/src/main/java/me/totalfreedom/totalfreedommod/masterbuilder/MasterBuilderWorldRestrictions.java
index 0e818194..0f9c4f02 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/masterbuilder/MasterBuilderWorldRestrictions.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/masterbuilder/MasterBuilderWorldRestrictions.java
@@ -19,8 +19,8 @@ import org.bukkit.event.player.PlayerInteractEvent;
public class MasterBuilderWorldRestrictions extends FreedomService
{
- private final List BLOCKED_WORLDEDIT_COMMANDS = Arrays.asList(
- "green", "fixlava", "fixwater", "br", "brush", "tool", "mat", "range", "cs", "up", "fill", "setblock");
+ public final List BLOCKED_WORLDEDIT_COMMANDS = Arrays.asList(
+ "green", "fixlava", "fixwater", "br", "brush", "tool", "mat", "range", "cs", "up", "fill", "setblock", "tree");
public MasterBuilderWorldRestrictions(TotalFreedomMod plugin)
{
@@ -111,19 +111,23 @@ public class MasterBuilderWorldRestrictions extends FreedomService
final Player player = event.getPlayer();
if (doRestrict(player))
{
- // This is a very poor way of blocking WorldEdit commands, all the methods I know of
- // obtaining a list of a plugin's commands are returning null for world edit.
- String message = event.getMessage();
- if (message.startsWith("//") || BLOCKED_WORLDEDIT_COMMANDS.contains(message.split("\\s+")[0].replace("/", "")))
+ /* This is a very poor way of blocking WorldEdit commands, all the methods I know of
+ for obtaining a list of a plugin's commands are returning null for world edit. */
+ String command = event.getMessage().split("\\s+")[0].substring(1, event.getMessage().split("\\s+")[0].length()).toLowerCase();
+
+ if (command.startsWith("/") || BLOCKED_WORLDEDIT_COMMANDS.contains(command))
{
- player.sendMessage(ChatColor.RED + "Only Master Builders are allowed to use this WorldEdit command in the Master Builder world.");
+ player.sendMessage(ChatColor.RED + "Only Master Builders are allowed to use WorldEdit in the Master Builder world.");
event.setCancelled(true);
}
- if (plugin.al.isAdmin(player) && !plugin.al.isSeniorAdmin(player) && message.startsWith("/co"))
+ if (!plugin.al.isSeniorAdmin(player))
{
- player.sendMessage(ChatColor.RED + "Only Senior Admins are allowed to use CoreProtect in the Master Builder world.");
- event.setCancelled(true);
+ if (command.equals("coreprotect") || command.equals("co"))
+ {
+ player.sendMessage(ChatColor.RED + "Only Senior Admins are allowed to use CoreProtect in the Master Builder world.");
+ event.setCancelled(true);
+ }
}
}
}
diff --git a/src/main/java/me/totalfreedom/totalfreedommod/rank/Title.java b/src/main/java/me/totalfreedom/totalfreedommod/rank/Title.java
index 13a00141..6b32bc77 100644
--- a/src/main/java/me/totalfreedom/totalfreedommod/rank/Title.java
+++ b/src/main/java/me/totalfreedom/totalfreedommod/rank/Title.java
@@ -9,7 +9,7 @@ public enum Title implements Displayable
MASTER_BUILDER("a", "Master Builder", ChatColor.DARK_AQUA, "MB"),
EXECUTIVE("an", "Executive", ChatColor.RED, "Exec"),
DEVELOPER("a", "Developer", ChatColor.DARK_PURPLE, "Dev"),
- OWNER("the", "Owner", ChatColor.BLUE, "Owner");
+ OWNER("the", "Owner", ChatColor.DARK_RED, "Owner");
private final String determiner;
@Getter
diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml
index 813e5c78..3cfc9b82 100644
--- a/src/main/resources/config.yml
+++ b/src/main/resources/config.yml
@@ -47,9 +47,12 @@ adminlist:
# CoreProtect
coreprotect:
- auto_wipe: false
-
- file_limit: 5000
+ enabled: false
+ host: 'localhost'
+ port: '3306'
+ username: ''
+ password: ''
+ database: 'coreprotect'
# ForceIP configuration
forceip:
@@ -117,7 +120,7 @@ allow:
# - 'n:b:/ban:_'
#
blocked_commands:
- # Disabled commands
+ # Disabled commands
- 'n:b:/time:Server-side time changing is disabled. Please use /ptime to set your own personal time.'
- 'n:b:/gamemode:Use /creative and /survival to set your gamemode.'
- 'n:b:/pardon:_'
@@ -143,6 +146,8 @@ blocked_commands:
- 'n:b:/function:_'
- 'n:b:/data:_'
- 'n:b:/datapack:_'
+ - 'n:b:/bossbar:_'
+ - 'n:b://forceload:_'
# Admin commands
- 's:b:/save-all:_'
@@ -182,7 +187,6 @@ blocked_commands:
- 's:b:/fill:_'
- 's:b:/flood:_'
- 's:b:/team:_'
- - 'n:b:/bossbar:_'
# Automatically wipe dropped objects
auto_wipe: true