This commit is contained in:
Steven Lawson 2011-10-02 00:18:52 -04:00
parent e5cce52e5c
commit ff88c7bffe
7 changed files with 363 additions and 131 deletions

View File

@ -24,8 +24,17 @@ public class RadarData implements Comparator<RadarData>
@Override @Override
public int compare(RadarData t1, RadarData t2) public int compare(RadarData t1, RadarData t2)
{ {
if (t1.distance > t2.distance) return 1; if (t1.distance > t2.distance)
else if (t1.distance < t2.distance) return -1; {
else return 0; return 1;
}
else if (t1.distance < t2.distance)
{
return -1;
}
else
{
return 0;
}
} }
} }

View File

@ -14,6 +14,7 @@ public class TFUserInfo
{ {
return this.user_frozen; return this.user_frozen;
} }
public void setFrozen(boolean fr) public void setFrozen(boolean fr)
{ {
this.user_frozen = fr; this.user_frozen = fr;
@ -23,10 +24,12 @@ public class TFUserInfo
{ {
this.msg_count = 0; this.msg_count = 0;
} }
public void incrementMsgCount() public void incrementMsgCount()
{ {
this.msg_count++; this.msg_count++;
} }
public int getMsgCount() public int getMsgCount()
{ {
return this.msg_count; return this.msg_count;
@ -36,10 +39,12 @@ public class TFUserInfo
{ {
this.bd_count++; this.bd_count++;
} }
public int getBlockDestroyCount() public int getBlockDestroyCount()
{ {
return this.bd_count; return this.bd_count;
} }
public void resetBlockDestroyCount() public void resetBlockDestroyCount()
{ {
this.bd_count = 0; this.bd_count = 0;

View File

@ -7,16 +7,20 @@ import java.util.Arrays;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Random;
import java.util.logging.Level; import java.util.logging.Level;
import java.util.logging.Logger; import java.util.logging.Logger;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.*;
import org.bukkit.event.Event; import org.bukkit.event.Event;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.util.config.Configuration; import org.bukkit.util.config.Configuration;
@ -35,20 +39,25 @@ public class TotalFreedomMod extends JavaPlugin
public List<String> superadmins = new ArrayList<String>(); public List<String> superadmins = new ArrayList<String>();
public List<String> superadmin_ips = new ArrayList<String>(); public List<String> superadmin_ips = new ArrayList<String>();
public Boolean allowExplosions = false; public Boolean allowExplosions = false;
public boolean allowFirePlace = false;
public Boolean allowFireSpread = false;
public Boolean allowLavaDamage = false; public Boolean allowLavaDamage = false;
public Boolean allowFire = false; public boolean allowLavaPlace = false;
public boolean allowWaterPlace = false;
public boolean autoEntityWipe = false;
public double explosiveRadius = 4.0; public double explosiveRadius = 4.0;
public Boolean preprocessLogEnabled = false;
public boolean nukeMonitor = true; public boolean nukeMonitor = true;
public double nukeMonitorRange = 10.0;
public int nukeMonitorCount = 40; public int nukeMonitorCount = 40;
public boolean allPlayersFrozen = false; public double nukeMonitorRange = 10.0;
public Boolean preprocessLogEnabled = false;
public boolean allPlayersFrozen = false;
public HashMap userinfo = new HashMap(); public HashMap userinfo = new HashMap();
public final static String MSG_NO_PERMS = ChatColor.YELLOW + "You do not have permission to use this command."; public final static String MSG_NO_PERMS = ChatColor.YELLOW + "You do not have permission to use this command.";
public final static String YOU_ARE_OP = ChatColor.YELLOW + "You are now op!"; public final static String YOU_ARE_OP = ChatColor.YELLOW + "You are now op!";
public final static String YOU_ARE_NOT_OP = ChatColor.YELLOW + "You are no longer op!"; public final static String YOU_ARE_NOT_OP = ChatColor.YELLOW + "You are no longer op!";
public final static String CAKE_LYRICS = "But there's no sense crying over every mistake. You just keep on trying till you run out of cake.";
@Override @Override
public void onEnable() public void onEnable()
@ -67,25 +76,34 @@ public class TotalFreedomMod extends JavaPlugin
"0.0.0.0" "0.0.0.0"
}); });
CONFIG.setProperty("allow_explosions", false); CONFIG.setProperty("allow_explosions", false);
CONFIG.setProperty("allow_fire_place", false);
CONFIG.setProperty("allow_fire_spread", false);
CONFIG.setProperty("allow_lava_damage", false); CONFIG.setProperty("allow_lava_damage", false);
CONFIG.setProperty("allow_fire", false); CONFIG.setProperty("allow_lava_place", false);
CONFIG.setProperty("allow_water_place", false);
CONFIG.setProperty("auto_wipe", false);
CONFIG.setProperty("explosiveRadius", 4.0); CONFIG.setProperty("explosiveRadius", 4.0);
CONFIG.setProperty("preprocess_log", false);
CONFIG.setProperty("nuke_monitor", true); CONFIG.setProperty("nuke_monitor", true);
CONFIG.setProperty("nuke_monitor_range", 10.0);
CONFIG.setProperty("nuke_monitor_count", 40); CONFIG.setProperty("nuke_monitor_count", 40);
CONFIG.setProperty("nuke_monitor_range", 10.0);
CONFIG.setProperty("preprocess_log", false);
CONFIG.save(); CONFIG.save();
} }
CONFIG.load(); CONFIG.load();
superadmins = CONFIG.getStringList("superadmins", null); superadmins = CONFIG.getStringList("superadmins", null);
superadmin_ips = CONFIG.getStringList("superadmin_ips", null); superadmin_ips = CONFIG.getStringList("superadmin_ips", null);
allowExplosions = CONFIG.getBoolean("allow_explosions", false); allowExplosions = CONFIG.getBoolean("allow_explosions", false);
allowFirePlace = CONFIG.getBoolean("allow_fire_place", false);
allowFireSpread = CONFIG.getBoolean("allow_fire_spread", false);
allowLavaDamage = CONFIG.getBoolean("allow_lava_damage", false); allowLavaDamage = CONFIG.getBoolean("allow_lava_damage", false);
allowFire = CONFIG.getBoolean("allow_fire", false); allowLavaPlace = CONFIG.getBoolean("allow_lava_place", false);
allowWaterPlace = CONFIG.getBoolean("allow_water_place", false);
autoEntityWipe = CONFIG.getBoolean("auto_wipe", false);
explosiveRadius = CONFIG.getDouble("explosiveRadius", 4.0); explosiveRadius = CONFIG.getDouble("explosiveRadius", 4.0);
preprocessLogEnabled = CONFIG.getBoolean("preprocess_log", false); nukeMonitor = CONFIG.getBoolean("nuke_monitor", true);
nukeMonitorRange = CONFIG.getDouble("nuke_monitor_range", 10.0);
nukeMonitorCount = CONFIG.getInt("nuke_monitor_count", 40); nukeMonitorCount = CONFIG.getInt("nuke_monitor_count", 40);
nukeMonitorRange = CONFIG.getDouble("nuke_monitor_range", 10.0);
preprocessLogEnabled = CONFIG.getBoolean("preprocess_log", false);
PluginManager pm = this.getServer().getPluginManager(); PluginManager pm = this.getServer().getPluginManager();
@ -105,14 +123,16 @@ public class TotalFreedomMod extends JavaPlugin
pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Event.Priority.Normal, this); pm.registerEvent(Event.Type.PLAYER_CHAT, playerListener, Event.Priority.Normal, this);
log.log(Level.INFO, "[Total Freedom Mod] - Enabled! - Version: " + this.getDescription().getVersion() + " by Madgeek1450"); log.log(Level.INFO, "[Total Freedom Mod] - Enabled! - Version: " + this.getDescription().getVersion() + " by Madgeek1450");
log.log(Level.INFO, "[Total Freedom Mod] - Loaded superadmins: " + implodeStringList(", ", superadmins)); log.log(Level.INFO, "[Total Freedom Mod] - Loaded superadmin names: " + implodeStringList(", ", superadmins));
log.log(Level.INFO, "[Total Freedom Mod] - Loaded superadmin IPs: " + implodeStringList(", ", superadmins));
log.log(Level.INFO, "[Total Freedom Mod] - Auto drop deleter is " + (autoEntityWipe ? "enabled" : "disabled") + ".");
Bukkit.getServer().getScheduler().scheduleAsyncRepeatingTask(this, new Runnable() Bukkit.getServer().getScheduler().scheduleAsyncRepeatingTask(this, new Runnable()
{ {
@Override @Override
public void run() public void run()
{ {
tfm.resetCounts(); tfm.tfHeartbeat();
} }
}, 100L, 100L); }, 100L, 100L);
} }
@ -608,7 +628,7 @@ public class TotalFreedomMod extends JavaPlugin
return true; return true;
} }
else if (cmd.getName().equalsIgnoreCase("fire")) else if (cmd.getName().equalsIgnoreCase("firespread"))
{ {
if (player == null || isUserSuperadmin(sender)) if (player == null || isUserSuperadmin(sender))
{ {
@ -619,13 +639,40 @@ public class TotalFreedomMod extends JavaPlugin
if (args[0].equalsIgnoreCase("on")) if (args[0].equalsIgnoreCase("on"))
{ {
this.allowFire = true; this.allowFireSpread = true;
sender.sendMessage("Fire is now enabled."); sender.sendMessage("Fire spread is now enabled.");
} }
else else
{ {
this.allowFire = false; this.allowFireSpread = false;
sender.sendMessage("Fire is now disabled."); sender.sendMessage("Fire spread is now disabled.");
}
}
else
{
sender.sendMessage(MSG_NO_PERMS);
}
return true;
}
else if (cmd.getName().equalsIgnoreCase("fireplace"))
{
if (player == null || isUserSuperadmin(sender))
{
if (args.length != 1)
{
return false;
}
if (args[0].equalsIgnoreCase("on"))
{
this.allowFirePlace = true;
sender.sendMessage("Fire placement is now enabled.");
}
else
{
this.allowFirePlace = false;
sender.sendMessage("Fire placement is now disabled.");
} }
} }
else else
@ -662,6 +709,60 @@ public class TotalFreedomMod extends JavaPlugin
return true; return true;
} }
else if (cmd.getName().equalsIgnoreCase("lavaplace"))
{
if (player == null || isUserSuperadmin(sender))
{
if (args.length != 1)
{
return false;
}
if (args[0].equalsIgnoreCase("on"))
{
this.allowLavaPlace = true;
sender.sendMessage("Lava placement is now enabled.");
}
else
{
this.allowLavaPlace = false;
sender.sendMessage("Lava placement is now disabled.");
}
}
else
{
sender.sendMessage(MSG_NO_PERMS);
}
return true;
}
else if (cmd.getName().equalsIgnoreCase("waterplace"))
{
if (player == null || isUserSuperadmin(sender))
{
if (args.length != 1)
{
return false;
}
if (args[0].equalsIgnoreCase("on"))
{
this.allowWaterPlace = true;
sender.sendMessage("Water placement is now enabled.");
}
else
{
this.allowWaterPlace = false;
sender.sendMessage("Water placement is now disabled.");
}
}
else
{
sender.sendMessage(MSG_NO_PERMS);
}
return true;
}
else if (cmd.getName().equalsIgnoreCase("radar")) else if (cmd.getName().equalsIgnoreCase("radar"))
{ {
if (player == null) if (player == null)
@ -709,19 +810,10 @@ public class TotalFreedomMod extends JavaPlugin
} }
else if (cmd.getName().equalsIgnoreCase("rd")) else if (cmd.getName().equalsIgnoreCase("rd"))
{ {
if (player == null) if (player == null || sender.isOp())
{ {
sender.sendMessage("This command can only be used in-game."); sender.sendMessage(ChatColor.GRAY + "Removing all dropped items, arrows, exp. orbs and TNT...");
return true; sender.sendMessage(ChatColor.GRAY + String.valueOf(wipeDropEntities()) + " dropped enties removed.");
}
if (sender.isOp())
{
sender.sendMessage(ChatColor.GRAY + "Using WorldEdit to remove all dropped items, arrows, and TNT.");
Bukkit.getServer().dispatchCommand(sender, "remove items -1");
Bukkit.getServer().dispatchCommand(sender, "remove arrows -1");
Bukkit.getServer().dispatchCommand(sender, "remove tnt -1");
} }
else else
{ {
@ -732,17 +824,24 @@ public class TotalFreedomMod extends JavaPlugin
} }
else if (cmd.getName().equalsIgnoreCase("mp")) else if (cmd.getName().equalsIgnoreCase("mp"))
{ {
if (player == null) if (player == null || sender.isOp())
{ {
sender.sendMessage("This command can only be used in-game."); sender.sendMessage(ChatColor.GRAY + "Purging all mobs...");
return true;
int removed = 0;
for (World world : Bukkit.getWorlds())
{
for (Entity ent : world.getEntities())
{
if (ent instanceof Creature || ent instanceof Ghast || ent instanceof Slime)
{
ent.remove();
removed++;
}
}
} }
if (sender.isOp()) sender.sendMessage(ChatColor.GRAY + String.valueOf(removed) + " mobs removed.");
{
sender.sendMessage(ChatColor.GRAY + "Using MobLimiter to purge all mobs.");
Bukkit.getServer().dispatchCommand(sender, "moblimiter purge");
} }
else else
{ {
@ -795,7 +894,7 @@ public class TotalFreedomMod extends JavaPlugin
{ {
if (mode.equals("list")) if (mode.equals("list"))
{ {
sender.sendMessage(ChatColor.GOLD + "[Real Name]:[Display Name] - Hash:"); sender.sendMessage(ChatColor.GRAY + "[ Real Name ] : [ Display Name ] - Hash:");
} }
for (Player p : Bukkit.getOnlinePlayers()) for (Player p : Bukkit.getOnlinePlayers())
@ -803,7 +902,7 @@ public class TotalFreedomMod extends JavaPlugin
String hash = p.getUniqueId().toString().substring(0, 4); String hash = p.getUniqueId().toString().substring(0, 4);
if (mode.equals("list")) if (mode.equals("list"))
{ {
sender.sendMessage(ChatColor.GOLD + String.format("[%s]:[%s] - %s", sender.sendMessage(ChatColor.GRAY + String.format("[ %s ] : [ %s ] - %s",
p.getName(), p.getName(),
ChatColor.stripColor(p.getDisplayName()), ChatColor.stripColor(p.getDisplayName()),
hash)); hash));
@ -949,6 +1048,8 @@ public class TotalFreedomMod extends JavaPlugin
return true; return true;
} }
else if (cmd.getName().equalsIgnoreCase("nonuke")) else if (cmd.getName().equalsIgnoreCase("nonuke"))
{
if (player == null || isUserSuperadmin(sender))
{ {
if (args.length < 1) if (args.length < 1)
{ {
@ -983,6 +1084,39 @@ public class TotalFreedomMod extends JavaPlugin
CONFIG.setProperty("nuke_monitor_range", this.nukeMonitorRange); CONFIG.setProperty("nuke_monitor_range", this.nukeMonitorRange);
CONFIG.setProperty("nuke_monitor_count", this.nukeMonitorCount); CONFIG.setProperty("nuke_monitor_count", this.nukeMonitorCount);
CONFIG.save(); CONFIG.save();
}
else
{
sender.sendMessage(MSG_NO_PERMS);
}
return true;
}
else if (cmd.getName().equalsIgnoreCase("cake"))
{
if (player == null || isUserSuperadmin(sender))
{
StringBuilder output = new StringBuilder();
Random randomGenerator = new Random();
for (String word : CAKE_LYRICS.split(" "))
{
String color_code = Integer.toHexString(1 + randomGenerator.nextInt(14));
output.append("§").append(color_code).append(word).append(" ");
}
for (Player p : Bukkit.getOnlinePlayers())
{
ItemStack heldItem = new ItemStack(Material.CAKE, 1);
p.getInventory().setItem(p.getInventory().firstEmpty(), heldItem);
}
tfBroadcastMessage(output.toString());
}
else
{
sender.sendMessage(MSG_NO_PERMS);
}
return true; return true;
} }
@ -1005,6 +1139,16 @@ public class TotalFreedomMod extends JavaPlugin
} }
} }
public void tfBroadcastMessage(String message)
{
log.info(ChatColor.stripColor(message));
for (Player p : Bukkit.getOnlinePlayers())
{
p.sendMessage(message);
}
}
public String implodeStringList(String glue, List<String> pieces) public String implodeStringList(String glue, List<String> pieces)
{ {
StringBuilder output = new StringBuilder(); StringBuilder output = new StringBuilder();
@ -1070,7 +1214,7 @@ public class TotalFreedomMod extends JavaPlugin
return false; return false;
} }
private void resetCounts() private void tfHeartbeat()
{ {
for (Player p : Bukkit.getOnlinePlayers()) for (Player p : Bukkit.getOnlinePlayers())
{ {
@ -1081,5 +1225,27 @@ public class TotalFreedomMod extends JavaPlugin
playerdata.resetBlockDestroyCount(); playerdata.resetBlockDestroyCount();
} }
} }
if (this.autoEntityWipe)
{
wipeDropEntities();
}
}
public int wipeDropEntities()
{
int removed = 0;
for (World world : Bukkit.getWorlds())
{
for (Entity ent : world.getEntities())
{
if (ent instanceof Arrow || ent instanceof TNTPrimed || ent instanceof Item || ent instanceof ExperienceOrb)
{
ent.remove();
removed++;
}
}
}
return removed;
} }
} }

View File

@ -26,7 +26,7 @@ public class TotalFreedomModBlockListener extends BlockListener
@Override @Override
public void onBlockBurn(BlockBurnEvent event) public void onBlockBurn(BlockBurnEvent event)
{ {
if (!plugin.allowFire) if (!plugin.allowFireSpread)
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
@ -36,7 +36,7 @@ public class TotalFreedomModBlockListener extends BlockListener
@Override @Override
public void onBlockIgnite(BlockIgniteEvent event) public void onBlockIgnite(BlockIgniteEvent event)
{ {
if (!plugin.allowFire) if (!plugin.allowFirePlace)
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;
@ -102,54 +102,94 @@ public class TotalFreedomModBlockListener extends BlockListener
public void onBlockPlace(BlockPlaceEvent event) public void onBlockPlace(BlockPlaceEvent event)
{ {
ItemStack is = new ItemStack(event.getBlockPlaced().getType(), 1, (short) 0, event.getBlockPlaced().getData()); ItemStack is = new ItemStack(event.getBlockPlaced().getType(), 1, (short) 0, event.getBlockPlaced().getData());
Player p = event.getPlayer();
if (is.getType() == Material.LAVA || is.getType() == Material.STATIONARY_LAVA) if (is.getType() == Material.LAVA || is.getType() == Material.STATIONARY_LAVA)
{ {
Player player = event.getPlayer(); if (plugin.allowLavaPlace)
{
log.info(String.format("%s placed lava @ %s",
p.getName(),
plugin.formatLocation(event.getBlock().getLocation())));
int slot = player.getInventory().getHeldItemSlot(); p.getInventory().clear(p.getInventory().getHeldItemSlot());
}
else
{
int slot = p.getInventory().getHeldItemSlot();
ItemStack heldItem = new ItemStack(Material.COOKIE, 1); ItemStack heldItem = new ItemStack(Material.COOKIE, 1);
player.getInventory().setItem(slot, heldItem); p.getInventory().setItem(slot, heldItem);
player.sendMessage(ChatColor.GOLD + "LAVA NO FUN, YOU EAT COOKIE INSTEAD, NO?"); p.sendMessage(ChatColor.GOLD + "LAVA NO FUN, YOU EAT COOKIE INSTEAD, NO?");
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
}
else if (is.getType() == Material.WATER || is.getType() == Material.STATIONARY_WATER) else if (is.getType() == Material.WATER || is.getType() == Material.STATIONARY_WATER)
{ {
Player player = event.getPlayer(); if (plugin.allowWaterPlace)
{
log.info(String.format("%s placed water @ %s",
p.getName(),
plugin.formatLocation(event.getBlock().getLocation())));
int slot = player.getInventory().getHeldItemSlot(); p.getInventory().clear(p.getInventory().getHeldItemSlot());
}
else
{
int slot = p.getInventory().getHeldItemSlot();
ItemStack heldItem = new ItemStack(Material.COOKIE, 1); ItemStack heldItem = new ItemStack(Material.COOKIE, 1);
player.getInventory().setItem(slot, heldItem); p.getInventory().setItem(slot, heldItem);
player.sendMessage(ChatColor.GOLD + "Does this look like a waterpark to you?"); p.sendMessage(ChatColor.GOLD + "Does this look like a waterpark to you?");
event.setCancelled(true); event.setCancelled(true);
return; return;
} }
}
else if (is.getType() == Material.FIRE)
{
if (plugin.allowFirePlace)
{
log.info(String.format("%s placed fire @ %s",
p.getName(),
plugin.formatLocation(event.getBlock().getLocation())));
p.getInventory().clear(p.getInventory().getHeldItemSlot());
}
else
{
int slot = p.getInventory().getHeldItemSlot();
ItemStack heldItem = new ItemStack(Material.COOKIE, 1);
p.getInventory().setItem(slot, heldItem);
p.sendMessage(ChatColor.GOLD + "It's gettin (too) hot in here...");
event.setCancelled(true);
return;
}
}
else if (is.getType() == Material.TNT) else if (is.getType() == Material.TNT)
{ {
Player p = event.getPlayer(); if (plugin.allowExplosions)
if (!plugin.allowExplosions)
{
Player player = event.getPlayer();
int slot = player.getInventory().getHeldItemSlot();
ItemStack heldItem = new ItemStack(Material.COOKIE, 1);
player.getInventory().setItem(slot, heldItem);
player.sendMessage(ChatColor.GRAY + "TNT is currently disabled.");
event.setCancelled(true);
return;
}
else
{ {
log.info(String.format("%s placed TNT @ %s", log.info(String.format("%s placed TNT @ %s",
p.getName(), p.getName(),
plugin.formatLocation(event.getBlock().getLocation()))); plugin.formatLocation(event.getBlock().getLocation())));
p.getInventory().clear(p.getInventory().getHeldItemSlot());
}
else
{
int slot = p.getInventory().getHeldItemSlot();
ItemStack heldItem = new ItemStack(Material.COOKIE, 1);
p.getInventory().setItem(slot, heldItem);
p.sendMessage(ChatColor.GRAY + "TNT is currently disabled.");
event.setCancelled(true);
return;
} }
} }
} }

View File

@ -41,7 +41,7 @@ public class TotalFreedomModEntityListener extends EntityListener
@Override @Override
public void onEntityCombust(EntityCombustEvent event) public void onEntityCombust(EntityCombustEvent event)
{ {
if (!plugin.allowFire) if (!plugin.allowFireSpread)
{ {
event.setCancelled(true); event.setCancelled(true);
return; return;

View File

@ -4,6 +4,9 @@ version: 1.4
description: Plugin for the Total Freedom server description: Plugin for the Total Freedom server
author: StevenLawson / Madgeek1450 author: StevenLawson / Madgeek1450
commands: commands:
cake:
description: For the people that are still alive.
usage: /<command>
creative: creative:
description: Quickly change your own gamemode to creative, or define someone's username to change theirs. description: Quickly change your own gamemode to creative, or define someone's username to change theirs.
usage: /<command> [partialname] usage: /<command> [partialname]
@ -13,8 +16,11 @@ commands:
explosives: explosives:
description: Superadmin command - Enable/disable explosives and set effect radius. description: Superadmin command - Enable/disable explosives and set effect radius.
usage: /<command> <on|off> [radius] usage: /<command> <on|off> [radius]
fire: fireplace:
description: Superadmin command - Enable/disable fire. description: Superadmin command - Enable/disable fire placement.
usage: /<command> <on|off>
firespread:
description: Superadmin command - Enable/disable fire spread.
usage: /<command> <on|off> usage: /<command> <on|off>
fr: fr:
description: Superadmin command - Freeze all players (toggles on and off). description: Superadmin command - Freeze all players (toggles on and off).
@ -28,6 +34,9 @@ commands:
lavadmg: lavadmg:
description: Superadmin command - Enable/disable lava damage. description: Superadmin command - Enable/disable lava damage.
usage: /<command> <on|off> usage: /<command> <on|off>
lavaplace:
description: Superadmin command - Enable/disable lava placement.
usage: /<command> <on|off>
list: list:
description: Lists the real names of all online players. description: Lists the real names of all online players.
usage: /<command> usage: /<command>
@ -73,6 +82,9 @@ commands:
survival: survival:
description: Quickly change your own gamemode to survival, or define someone's username to change theirs. description: Quickly change your own gamemode to survival, or define someone's username to change theirs.
usage: /<command> [partialname] usage: /<command> [partialname]
waterplace:
description: Superadmin command - Enable/disable water placement.
usage: /<command> <on|off>
wildcard: wildcard:
description: Superadmin command - Run any command on all users, username placeholder = ?. description: Superadmin command - Run any command on all users, username placeholder = ?.
usage: /<command> [fluff] ? [fluff] ? usage: /<command> [fluff] ? [fluff] ?