mirror of
https://github.com/AtlasMediaGroup/TotalFreedomMod.git
synced 2024-11-26 17:05:01 +00:00
Merge branch 'master' of https://github.com/StevenLawson/TotalFreedomMod
This commit is contained in:
commit
079fe2cb4e
7
.gitignore
vendored
7
.gitignore
vendored
@ -1,11 +1,12 @@
|
||||
# netbeans excludes (StevenLawson)
|
||||
# netbeans excludes - StevenLawson & JeromSar
|
||||
/nbproject/private/
|
||||
/dist/
|
||||
/build/
|
||||
appinfo.properties
|
||||
buildnumber.properties
|
||||
appinfo.properties
|
||||
manifest.mf
|
||||
|
||||
# eclipse excludes (JeromSar)
|
||||
# eclipse excludes - JeromSar (old)
|
||||
.project
|
||||
.classpath
|
||||
/bin/
|
||||
|
@ -1,6 +1,6 @@
|
||||
build.xml.data.CRC32=7bf70ec5
|
||||
build.xml.script.CRC32=b1031e10
|
||||
build.xml.stylesheet.CRC32=28e38971@1.44.1.45
|
||||
build.xml.stylesheet.CRC32=28e38971@1.53.1.46
|
||||
# This file is used by a NetBeans-based IDE to track changes in generated files such as build-impl.xml.
|
||||
# Do not edit this file. You may delete it but then the IDE will never regenerate such files for you.
|
||||
nbproject/build-impl.xml.data.CRC32=7bf70ec5
|
||||
|
@ -4,7 +4,7 @@ annotation.processing.processors.list=
|
||||
annotation.processing.run.all.processors=true
|
||||
annotation.processing.source.output=${build.generated.sources.dir}/ap-source-output
|
||||
application.title=TotalFreedomMod
|
||||
application.vendor=Michael
|
||||
application.vendor=Madgeek1450/DarthSalamon
|
||||
build.classes.dir=${build.dir}/classes
|
||||
build.classes.excludes=**/*.java,**/*.form
|
||||
# This directory is removed when the project is cleaned:
|
||||
@ -32,8 +32,8 @@ jar.archive.disabled=${jnlp.enabled}
|
||||
jar.compress=false
|
||||
jar.index=${jnlp.enabled}
|
||||
javac.classpath=\
|
||||
\# Space-separated list of extra javac options:\
|
||||
${libs.CraftBukkit.classpath}
|
||||
# Space-separated list of extra javac options
|
||||
javac.compilerargs=-Xlint:unchecked -Xlint:deprecation
|
||||
javac.deprecation=false
|
||||
javac.processorpath=\
|
||||
@ -65,7 +65,7 @@ jnlp.signed=false
|
||||
jnlp.signing=
|
||||
jnlp.signing.alias=
|
||||
jnlp.signing.keystore=
|
||||
main.class=totalfreedommod.TotalFreedomMod
|
||||
main.class=
|
||||
manifest.file=manifest.mf
|
||||
meta.inf.dir=${src.dir}/META-INF
|
||||
mkdist.disabled=false
|
||||
@ -73,9 +73,9 @@ platform.active=default_platform
|
||||
run.classpath=\
|
||||
${javac.classpath}:\
|
||||
${build.classes.dir}
|
||||
# Space-separated list of JVM arguments used when running the project
|
||||
# (you may also define separate properties like run-sys-prop.name=value instead of -Dname=value
|
||||
# or test-sys-prop.name=value to set system properties for unit tests):
|
||||
# Space-separated list of JVM arguments used when running the project.
|
||||
# You may also define separate properties like run-sys-prop.name=value instead of -Dname=value.
|
||||
# To set system properties for unit tests define test-sys-prop.name=value:
|
||||
run.jvmargs=
|
||||
run.test.classpath=\
|
||||
${javac.test.classpath}:\
|
||||
|
@ -40,6 +40,7 @@ public class Command_cage extends TFM_Command
|
||||
{
|
||||
if (TFM_Util.isStopCommand(args[1]))
|
||||
{
|
||||
TFM_Util.adminAction(sender.getName(), "Uncaging " + p.getName(), true);
|
||||
playerdata.setCaged(false);
|
||||
playerdata.regenerateHistory();
|
||||
playerdata.clearHistory();
|
||||
@ -50,6 +51,15 @@ public class Command_cage extends TFM_Command
|
||||
{
|
||||
cage_material_outer = Material.matchMaterial(args[1]);
|
||||
if (cage_material_outer == null)
|
||||
{
|
||||
TFM_Util.adminAction(sender.getName(), "Uncaging " + p.getName(), true);
|
||||
playerdata.setCaged(false);
|
||||
playerdata.regenerateHistory();
|
||||
playerdata.clearHistory();
|
||||
sender.sendMessage(ChatColor.GREEN + p.getName() + " uncaged.");
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
cage_material_outer = Material.GLASS;
|
||||
}
|
||||
@ -75,11 +85,8 @@ public class Command_cage extends TFM_Command
|
||||
TFM_Util.buildHistory(target_pos, 2, playerdata);
|
||||
TFM_Util.generateCube(target_pos, 2, playerdata.getCageMaterial(TFM_UserInfo.CageLayer.OUTER));
|
||||
TFM_Util.generateCube(target_pos, 1, playerdata.getCageMaterial(TFM_UserInfo.CageLayer.INNER));
|
||||
|
||||
p.setGameMode(GameMode.SURVIVAL);
|
||||
|
||||
TFM_Util.bcastMsg(sender.getName() + " caged " + p.getName() + "!", ChatColor.YELLOW);
|
||||
|
||||
TFM_Util.adminAction(sender.getName(), "Caging " + p.getName(), true);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package me.StevenLawson.TotalFreedomMod.Commands;
|
||||
|
||||
import me.StevenLawson.TotalFreedomMod.TFM_Util;
|
||||
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
@ -24,6 +25,8 @@ public class Command_explosives extends TFM_Command
|
||||
}
|
||||
catch (NumberFormatException nfex)
|
||||
{
|
||||
TFM_Util.playerMsg(sender, nfex.getMessage());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -40,7 +40,9 @@ public class Command_gadmin extends TFM_Command
|
||||
{
|
||||
if (mode.equals("kick"))
|
||||
{
|
||||
TFM_Util.adminAction(sender.getName(), "Kicking " + p.getName(), true);
|
||||
p.kickPlayer("Kicked by Administrator");
|
||||
|
||||
}
|
||||
else if (mode.equals("nameban"))
|
||||
{
|
||||
|
@ -34,9 +34,9 @@ public class Command_list extends TFM_Command
|
||||
{
|
||||
if (TFM_SuperadminList.isUserSuperadmin(p))
|
||||
{
|
||||
if (p.isOp())
|
||||
if(TFM_SuperadminList.isSeniorAdmin(p))
|
||||
{
|
||||
prefix = (ChatColor.GOLD + "[SA+OP]");
|
||||
prefix = (ChatColor.LIGHT_PURPLE + "[SrA]");
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -2,6 +2,7 @@ package me.StevenLawson.TotalFreedomMod.Commands;
|
||||
|
||||
import me.StevenLawson.TotalFreedomMod.TFM_UserInfo;
|
||||
import me.StevenLawson.TotalFreedomMod.TFM_Util;
|
||||
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.command.Command;
|
||||
@ -48,8 +49,10 @@ public class Command_orbit extends TFM_Command
|
||||
{
|
||||
strength = Math.max(1.0, Math.min(150.0, Double.parseDouble(args[1])));
|
||||
}
|
||||
catch (NumberFormatException nfex)
|
||||
catch (NumberFormatException ex)
|
||||
{
|
||||
sender.sendMessage(ex.getMessage());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -57,8 +60,7 @@ public class Command_orbit extends TFM_Command
|
||||
playerdata.startOrbiting(strength);
|
||||
|
||||
p.setVelocity(new Vector(0, strength, 0));
|
||||
|
||||
sender.sendMessage(ChatColor.GRAY + "Orbiting " + p.getName());
|
||||
TFM_Util.adminAction(sender.getName(), "Orbiting " + p.getName(), true);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -45,10 +45,7 @@ public class Command_permban extends TFM_Command
|
||||
else
|
||||
{
|
||||
TFM_Util.playerMsg(sender, TotalFreedomMod.permbanned_players.size() + " permanently banned players:");
|
||||
for (String player_name : TotalFreedomMod.permbanned_players)
|
||||
{
|
||||
TFM_Util.playerMsg(sender, "- " + player_name);
|
||||
}
|
||||
TFM_Util.playerMsg(sender, ChatColor.GRAY + TFM_Util.implodeStringList(", ", TotalFreedomMod.permbanned_players));
|
||||
}
|
||||
|
||||
if (TotalFreedomMod.permbanned_ips.isEmpty())
|
||||
@ -58,10 +55,7 @@ public class Command_permban extends TFM_Command
|
||||
else
|
||||
{
|
||||
TFM_Util.playerMsg(sender, TotalFreedomMod.permbanned_ips.size() + " permanently banned IPs:");
|
||||
for (String ip_address : TotalFreedomMod.permbanned_ips)
|
||||
{
|
||||
TFM_Util.playerMsg(sender, "- " + ip_address);
|
||||
}
|
||||
TFM_Util.playerMsg(sender, ChatColor.GRAY + TFM_Util.implodeStringList(", ", TotalFreedomMod.permbanned_ips));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package me.StevenLawson.TotalFreedomMod.Commands;
|
||||
|
||||
import me.StevenLawson.TotalFreedomMod.TFM_SuperadminList;
|
||||
import me.StevenLawson.TotalFreedomMod.TFM_Util;
|
||||
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
|
||||
import org.bukkit.command.Command;
|
||||
@ -16,7 +17,6 @@ public class Command_qdeop extends TFM_Command
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
boolean silent = false;
|
||||
if (args.length == 2)
|
||||
{
|
||||
|
@ -28,7 +28,7 @@ public class Command_rank extends TFM_Command
|
||||
|
||||
if (args.length == 0)
|
||||
{
|
||||
TFM_Util.playerMsg(sender, sender.getName() + " is " + TFM_Util.getRank(sender), ChatColor.AQUA);
|
||||
TFM_Util.bcastMsg(sender.getName() + " is " + TFM_Util.getRank(sender), ChatColor.AQUA);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,8 @@ public class Command_rd extends TFM_Command
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
//This terminology is wrong, this doesn't remove *all* entities, by far. - Madgeek
|
||||
// This terminology is wrong, this doesn't remove *all* entities, by far. - Madgeek
|
||||
// Back when I was just a player, I didn't even know what "entity" meant... :P - Darth
|
||||
TFM_Util.adminAction(sender.getName(), "Removing all server entities.", false);
|
||||
sender.sendMessage(ChatColor.GRAY + String.valueOf(TFM_Util.wipeEntities(true, true)) + " enties removed.");
|
||||
|
||||
|
81
src/me/StevenLawson/TotalFreedomMod/Commands/Command_ro.java
Normal file
81
src/me/StevenLawson/TotalFreedomMod/Commands/Command_ro.java
Normal file
@ -0,0 +1,81 @@
|
||||
package me.StevenLawson.TotalFreedomMod.Commands;
|
||||
|
||||
import me.StevenLawson.TotalFreedomMod.TFM_Util;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@CommandPermissions(level = ADMIN_LEVEL.SUPER, source = SOURCE_TYPE_ALLOWED.BOTH, block_web_console = false, ignore_permissions = false)
|
||||
public class Command_ro extends TFM_Command
|
||||
{
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
if(args.length < 1 || args.length > 3) {
|
||||
return false;
|
||||
}
|
||||
|
||||
int radius = 50;
|
||||
Player target_player = null;
|
||||
Material target_block = Material.matchMaterial(args[0]);
|
||||
|
||||
if (target_block == null)
|
||||
{
|
||||
TFM_Util.playerMsg(sender, "Invalid block!");
|
||||
return true;
|
||||
}
|
||||
|
||||
if(args.length >= 2)
|
||||
{
|
||||
try
|
||||
{
|
||||
radius = Integer.parseInt(args[1]);
|
||||
}
|
||||
catch(NumberFormatException nfex)
|
||||
{
|
||||
TFM_Util.playerMsg(sender, nfex.getMessage());
|
||||
return true;
|
||||
}
|
||||
if(radius > 3000)
|
||||
{
|
||||
TFM_Util.playerMsg(sender, "What the hell are you trying to do, you stupid idiot!", ChatColor.RED);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
if(args.length == 3)
|
||||
{
|
||||
try
|
||||
{
|
||||
target_player = getPlayer(args[2]);
|
||||
}
|
||||
catch (CantFindPlayerException ex)
|
||||
{
|
||||
sender.sendMessage(ex.getMessage());
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if(target_player == null)
|
||||
{
|
||||
for(Player p : server.getOnlinePlayers())
|
||||
{
|
||||
boolean is_Op = p.isOp();
|
||||
p.setOp(true);
|
||||
server.dispatchCommand(p, "/removenear " + target_block.getId() + " " + radius);
|
||||
p.setOp(is_Op);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
boolean is_Op = target_player.isOp();
|
||||
target_player.setOp(true);
|
||||
server.dispatchCommand(target_player, "/removenear " + target_block.getId() + " " + radius);
|
||||
target_player.setOp(is_Op);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
}
|
@ -12,7 +12,8 @@ public class Command_stop extends TFM_Command
|
||||
@Override
|
||||
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
|
||||
{
|
||||
TFM_Util.bcastMsg("Server is going offline.", ChatColor.GRAY);
|
||||
|
||||
TFM_Util.bcastMsg("Server is going offline!", ChatColor.LIGHT_PURPLE);
|
||||
|
||||
for (Player p : server.getOnlinePlayers())
|
||||
{
|
||||
|
@ -108,6 +108,13 @@ public class TFM_Command
|
||||
List<Player> matches = server.matchPlayer(partialname);
|
||||
if (matches.isEmpty())
|
||||
{
|
||||
for(Player p : server.getOnlinePlayers())
|
||||
{
|
||||
if(p.getDisplayName().toLowerCase().indexOf(partialname) != -1)
|
||||
{
|
||||
return p;
|
||||
}
|
||||
}
|
||||
throw new CantFindPlayerException(partialname);
|
||||
}
|
||||
else
|
||||
|
@ -101,7 +101,6 @@ public class TFM_PlayerListener implements Listener
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -109,7 +108,7 @@ public class TFM_PlayerListener implements Listener
|
||||
{
|
||||
if (TotalFreedomMod.allowExplosions && TFM_SuperadminList.isSeniorAdmin(player))
|
||||
{
|
||||
Block target_block = null;
|
||||
Block target_block;
|
||||
|
||||
if (event.getAction().equals(Action.LEFT_CLICK_AIR))
|
||||
{
|
||||
@ -131,7 +130,6 @@ public class TFM_PlayerListener implements Listener
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
|
||||
break;
|
||||
@ -211,7 +209,7 @@ public class TFM_PlayerListener implements Listener
|
||||
{
|
||||
Location target_pos = p.getLocation().add(0, 1, 0);
|
||||
|
||||
boolean out_of_cage = false;
|
||||
boolean out_of_cage;
|
||||
if (!target_pos.getWorld().equals(playerdata.getCagePos().getWorld()))
|
||||
{
|
||||
out_of_cage = true;
|
||||
@ -290,10 +288,22 @@ public class TFM_PlayerListener implements Listener
|
||||
try
|
||||
{
|
||||
final Player p = event.getPlayer();
|
||||
String message = event.getMessage().trim();
|
||||
|
||||
TFM_UserInfo playerdata = TFM_UserInfo.getPlayerData(p);
|
||||
playerdata.incrementMsgCount();
|
||||
|
||||
// check for message repeat
|
||||
if(playerdata.getLastMessage().equalsIgnoreCase(message))
|
||||
{
|
||||
TFM_Util.playerMsg(p, "Please do not repeat messages.");
|
||||
event.setCancelled(true);
|
||||
playerdata.setLastMessage(message);
|
||||
return;
|
||||
}
|
||||
|
||||
playerdata.setLastMessage(message);
|
||||
|
||||
// check for spam
|
||||
if (playerdata.getMsgCount() > 10)
|
||||
{
|
||||
@ -321,8 +331,6 @@ public class TFM_PlayerListener implements Listener
|
||||
}
|
||||
}
|
||||
|
||||
String message = event.getMessage().trim();
|
||||
|
||||
// strip color from messages
|
||||
message = ChatColor.stripColor(message);
|
||||
|
||||
@ -333,21 +341,33 @@ public class TFM_PlayerListener implements Listener
|
||||
TFM_Util.playerMsg(p, "Message was shortened because it was too long to send.");
|
||||
}
|
||||
|
||||
// check for caps
|
||||
|
||||
// check for caps and exclamation marks
|
||||
if (message.length() >= 6)
|
||||
{
|
||||
int caps = 0;
|
||||
int excl = 0;
|
||||
for (char c : message.toCharArray())
|
||||
{
|
||||
if (Character.isUpperCase(c))
|
||||
{
|
||||
caps++;
|
||||
}
|
||||
|
||||
if(c == '!')
|
||||
{
|
||||
excl++;
|
||||
}
|
||||
if (((float) caps / (float) message.length()) > 0.75) //Compute a ratio so that longer sentences can have more caps.
|
||||
}
|
||||
if (caps > 6 || caps > 3 && ((float) caps / (float) message.length()) > 0.55)
|
||||
{
|
||||
message = message.toLowerCase();
|
||||
}
|
||||
|
||||
if(excl++ > 3)
|
||||
{
|
||||
message = message.replaceAll("!", "") + '!';
|
||||
}
|
||||
}
|
||||
|
||||
// finally, set message
|
||||
@ -472,6 +492,18 @@ public class TFM_PlayerListener implements Listener
|
||||
{
|
||||
block_command = true;
|
||||
}
|
||||
else if (Pattern.compile("^/clear").matcher(command).find())
|
||||
{
|
||||
block_command = true;
|
||||
}
|
||||
else if (!TFM_SuperadminList.isUserSuperadmin(p) && Pattern.compile("^/socialspy").matcher(command).find())
|
||||
{
|
||||
block_command = true;
|
||||
}
|
||||
else if (!TFM_SuperadminList.isUserSuperadmin(p) && Pattern.compile("^/packet").matcher(command).find())
|
||||
{
|
||||
block_command = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (block_command)
|
||||
@ -481,7 +513,7 @@ public class TFM_PlayerListener implements Listener
|
||||
return;
|
||||
}
|
||||
|
||||
if (playerdata.isMuted())
|
||||
// block muted commands
|
||||
{
|
||||
if (!TFM_SuperadminList.isUserSuperadmin(p))
|
||||
{
|
||||
|
@ -15,6 +15,8 @@ import org.bukkit.World;
|
||||
|
||||
public class TFM_ProtectedArea implements Serializable
|
||||
{
|
||||
private static final long serialVersionUID = -3270338811000937254L;
|
||||
|
||||
public static final double MAX_RADIUS = 50.0D;
|
||||
private static Map<String, TFM_ProtectedArea> protectedAreas = new HashMap<String, TFM_ProtectedArea>();
|
||||
private final SerializableLocation center_location;
|
||||
|
@ -45,6 +45,7 @@ public class TFM_UserInfo
|
||||
private boolean mp44_armed = false;
|
||||
private boolean mp44_firing = false;
|
||||
private int lockup_schedule_id = -1;
|
||||
private String last_message = "";
|
||||
|
||||
public TFM_UserInfo(Player player)
|
||||
{
|
||||
@ -406,4 +407,14 @@ public class TFM_UserInfo
|
||||
{
|
||||
this.lockup_schedule_id = lockup_schedule_id;
|
||||
}
|
||||
|
||||
public void setLastMessage(String last_message)
|
||||
{
|
||||
this.last_message = last_message;
|
||||
}
|
||||
|
||||
public String getLastMessage()
|
||||
{
|
||||
return this.last_message;
|
||||
}
|
||||
}
|
||||
|
@ -68,19 +68,16 @@ public class TFM_Util
|
||||
TFM_Util.bcastMsg(message, null);
|
||||
}
|
||||
|
||||
//JeromSar
|
||||
public static void playerMsg(CommandSender sender, String message, ChatColor color)
|
||||
{
|
||||
sender.sendMessage(color + message);
|
||||
}
|
||||
|
||||
//JeromSar
|
||||
public static void playerMsg(CommandSender sender, String message)
|
||||
{
|
||||
TFM_Util.playerMsg(sender, message, ChatColor.GRAY);
|
||||
}
|
||||
|
||||
//JeromSar
|
||||
public static void adminAction(String adminName, String action, boolean isRed)
|
||||
{
|
||||
TFM_Util.bcastMsg(adminName + " - " + action, (isRed ? ChatColor.RED : ChatColor.AQUA));
|
||||
@ -545,7 +542,6 @@ public class TFM_Util
|
||||
return TFM_SuperadminList.isSuperadminImpostor(user);
|
||||
}
|
||||
|
||||
//JeromSar
|
||||
public static String getRank(CommandSender sender)
|
||||
{
|
||||
if (TFM_SuperadminList.isSuperadminImpostor(sender))
|
||||
@ -571,11 +567,11 @@ public class TFM_Util
|
||||
|
||||
if (admin_entry.isSeniorAdmin())
|
||||
{
|
||||
return "a " + ChatColor.GOLD + "senior admin" + ChatColor.AQUA + ".";
|
||||
return "a " + ChatColor.LIGHT_PURPLE + "Senior Admin" + ChatColor.AQUA + ".";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "an " + ChatColor.RED + "admin" + ChatColor.AQUA + ".";
|
||||
return "a " + ChatColor.GOLD + "Super Admin" + ChatColor.AQUA + ".";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -162,8 +162,11 @@ commands:
|
||||
description: Owner Command - Broadcasts the given message with no extra formatting.
|
||||
usage: /<command> <message>
|
||||
rd:
|
||||
description: Remove all projectiles, dropped items, experience orbs, primed explosives, and minecarts. Minecarts are optional, based on if "carts" is included after the command.
|
||||
description: Superadmin command - Remove all projectiles, dropped items, experience orbs, primed explosives, and minecarts. Minecarts are optional, based on if "carts" is included after the command.
|
||||
usage: /<command> <carts>
|
||||
ro:
|
||||
description: Superadmin Command - Remove all blocks of a certain type in the radius of certain players.
|
||||
usage: /<command> <block> [radius (default=50)] [player]
|
||||
saconfig:
|
||||
description: Owner command - Manage superadmins.
|
||||
usage: /<command> <list | clean | <add|delete> <username>>
|
||||
|
Loading…
Reference in New Issue
Block a user