mirror of
https://github.com/Brettflan/WorldBorder.git
synced 2024-11-26 12:05:26 +01:00
added direct GroupManager support, several other bits and bobs
This commit is contained in:
parent
450692d439
commit
7378d58405
1
.gitignore
vendored
1
.gitignore
vendored
@ -4,3 +4,4 @@
|
|||||||
/nbproject/private
|
/nbproject/private
|
||||||
/build
|
/build
|
||||||
/dist
|
/dist
|
||||||
|
/lib/GroupManager.jar
|
@ -28,12 +28,14 @@ endorsed.classpath=
|
|||||||
excludes=
|
excludes=
|
||||||
file.reference.CalcTest-src=src
|
file.reference.CalcTest-src=src
|
||||||
file.reference.craftbukkit-0.0.1-SNAPSHOT.jar=lib/craftbukkit-0.0.1-SNAPSHOT.jar
|
file.reference.craftbukkit-0.0.1-SNAPSHOT.jar=lib/craftbukkit-0.0.1-SNAPSHOT.jar
|
||||||
|
file.reference.GroupManager.jar=lib\\GroupManager.jar
|
||||||
file.reference.Permissions.jar=lib/Permissions.jar
|
file.reference.Permissions.jar=lib/Permissions.jar
|
||||||
includes=**
|
includes=**
|
||||||
jar.compress=true
|
jar.compress=true
|
||||||
javac.classpath=\
|
javac.classpath=\
|
||||||
${file.reference.craftbukkit-0.0.1-SNAPSHOT.jar}:\
|
${file.reference.craftbukkit-0.0.1-SNAPSHOT.jar}:\
|
||||||
${file.reference.Permissions.jar}
|
${file.reference.Permissions.jar}:\
|
||||||
|
${file.reference.GroupManager.jar}
|
||||||
# Space-separated list of extra javac options
|
# Space-separated list of extra javac options
|
||||||
javac.compilerargs=
|
javac.compilerargs=
|
||||||
javac.deprecation=false
|
javac.deprecation=false
|
||||||
|
@ -80,11 +80,14 @@ public class BorderData
|
|||||||
// This algorithm of course needs to be fast, since it will be run very frequently
|
// This algorithm of course needs to be fast, since it will be run very frequently
|
||||||
public boolean insideBorder(double xLoc, double zLoc, boolean round)
|
public boolean insideBorder(double xLoc, double zLoc, boolean round)
|
||||||
{
|
{
|
||||||
if (!round) // square border
|
// square border
|
||||||
return (xLoc > minX && xLoc < maxX && zLoc > minZ && zLoc < maxZ);
|
if (!round)
|
||||||
else // round border
|
return !(xLoc < minX || xLoc > maxX || zLoc < minZ || zLoc > maxZ);
|
||||||
|
|
||||||
|
// round border
|
||||||
|
else
|
||||||
{
|
{
|
||||||
// round border checking algorithm is from rBorder by Reil with almost no changes, thanks
|
// elegant round border checking algorithm is from rBorder by Reil with almost no changes, all credit to him for it
|
||||||
double X = Math.abs(x - xLoc);
|
double X = Math.abs(x - xLoc);
|
||||||
double Z = Math.abs(z - zLoc);
|
double Z = Math.abs(z - zLoc);
|
||||||
|
|
||||||
@ -93,7 +96,7 @@ public class BorderData
|
|||||||
else if (X >= radius || Z >= radius)
|
else if (X >= radius || Z >= radius)
|
||||||
return false; // Definitely outside
|
return false; // Definitely outside
|
||||||
else if (X * X + Z * Z < radiusSquared)
|
else if (X * X + Z * Z < radiusSquared)
|
||||||
return true; // After much calculation, inside
|
return true; // After further calculation, inside
|
||||||
else
|
else
|
||||||
return false; // Apparently outside, then
|
return false; // Apparently outside, then
|
||||||
}
|
}
|
||||||
@ -105,7 +108,8 @@ public class BorderData
|
|||||||
double zLoc = loc.getZ();
|
double zLoc = loc.getZ();
|
||||||
double yLoc = loc.getY();
|
double yLoc = loc.getY();
|
||||||
|
|
||||||
if (!round) // square border
|
// square border
|
||||||
|
if (!round)
|
||||||
{
|
{
|
||||||
if (xLoc <= minX)
|
if (xLoc <= minX)
|
||||||
xLoc = minX + 3;
|
xLoc = minX + 3;
|
||||||
@ -116,7 +120,9 @@ public class BorderData
|
|||||||
else if (zLoc >= maxZ)
|
else if (zLoc >= maxZ)
|
||||||
zLoc = maxZ - 3;
|
zLoc = maxZ - 3;
|
||||||
}
|
}
|
||||||
else // round border
|
|
||||||
|
// round border
|
||||||
|
else
|
||||||
{
|
{
|
||||||
// algorithm from: http://stackoverflow.com/questions/300871/best-way-to-find-a-point-on-a-circle-closest-to-a-given-point
|
// algorithm from: http://stackoverflow.com/questions/300871/best-way-to-find-a-point-on-a-circle-closest-to-a-given-point
|
||||||
double vX = xLoc - x;
|
double vX = xLoc - x;
|
||||||
@ -147,9 +153,9 @@ public class BorderData
|
|||||||
private boolean isSafeSpot(World world, int X, int Y, int Z)
|
private boolean isSafeSpot(World world, int X, int Y, int Z)
|
||||||
{
|
{
|
||||||
Integer below = (Integer)world.getBlockAt(X, Y - 1, Z).getTypeId();
|
Integer below = (Integer)world.getBlockAt(X, Y - 1, Z).getTypeId();
|
||||||
return (acceptableBlocks.contains((Integer)world.getBlockAt(X, Y, Z).getTypeId()) // target block breatheable
|
return (acceptableBlocks.contains((Integer)world.getBlockAt(X, Y, Z).getTypeId()) // target block breathable, or is water
|
||||||
&& acceptableBlocks.contains((Integer)world.getBlockAt(X, Y + 1, Z).getTypeId()) // above target block breathable
|
&& acceptableBlocks.contains((Integer)world.getBlockAt(X, Y + 1, Z).getTypeId()) // above target block breathable, or is water
|
||||||
&& !acceptableBlocks.contains(below) // below target block not breathable (probably solid)
|
&& (!acceptableBlocks.contains(below) || below == 8 || below == 9) // below target block not breathable (probably solid), or is water
|
||||||
&& !painfulBlocks.contains(below) // below target block not something painful
|
&& !painfulBlocks.contains(below) // below target block not something painful
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.wimbli.WorldBorder;
|
package com.wimbli.WorldBorder;
|
||||||
|
|
||||||
import java.text.DecimalFormat;
|
import java.text.DecimalFormat;
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
@ -15,6 +16,7 @@ import org.bukkit.plugin.Plugin;
|
|||||||
import org.bukkit.util.config.Configuration;
|
import org.bukkit.util.config.Configuration;
|
||||||
import org.bukkit.util.config.ConfigurationNode;
|
import org.bukkit.util.config.ConfigurationNode;
|
||||||
|
|
||||||
|
import org.anjocaido.groupmanager.GroupManager;
|
||||||
import com.nijiko.permissions.PermissionHandler;
|
import com.nijiko.permissions.PermissionHandler;
|
||||||
import com.nijikokun.bukkit.Permissions.Permissions;
|
import com.nijikokun.bukkit.Permissions.Permissions;
|
||||||
|
|
||||||
@ -25,13 +27,14 @@ public class Config
|
|||||||
private static WorldBorder plugin;
|
private static WorldBorder plugin;
|
||||||
private static Configuration cfg = null;
|
private static Configuration cfg = null;
|
||||||
private static PermissionHandler Permissions = null;
|
private static PermissionHandler Permissions = null;
|
||||||
|
private static GroupManager GroupPlugin = null;
|
||||||
private static final Logger mcLog = Logger.getLogger("Minecraft");
|
private static final Logger mcLog = Logger.getLogger("Minecraft");
|
||||||
public static DecimalFormat coord = new DecimalFormat("0.0");
|
public static DecimalFormat coord = new DecimalFormat("0.0");
|
||||||
public static final boolean DEBUG = false;
|
public static final boolean DEBUG = false;
|
||||||
|
|
||||||
// actual configuration values which can be changed
|
// actual configuration values which can be changed
|
||||||
private static boolean shapeRound = false;
|
private static boolean shapeRound = false;
|
||||||
private static Map<String, BorderData> borders = new HashMap<String, BorderData>();
|
private static Map<String, BorderData> borders = Collections.synchronizedMap(new HashMap<String, BorderData>());
|
||||||
private static String message;
|
private static String message;
|
||||||
|
|
||||||
public static void setBorder(String world, BorderData border)
|
public static void setBorder(String world, BorderData border)
|
||||||
@ -112,10 +115,24 @@ public class Config
|
|||||||
|
|
||||||
public static void loadPermissions(WorldBorder plugin)
|
public static void loadPermissions(WorldBorder plugin)
|
||||||
{
|
{
|
||||||
if (Permissions != null || plugin == null)
|
if (GroupPlugin != null || Permissions != null || plugin == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
Plugin test = plugin.getServer().getPluginManager().getPlugin("Permissions");
|
// try GroupManager first
|
||||||
|
Plugin test = plugin.getServer().getPluginManager().getPlugin("GroupManager");
|
||||||
|
|
||||||
|
if (test != null)
|
||||||
|
{
|
||||||
|
if (!test.isEnabled()) {
|
||||||
|
plugin.getServer().getPluginManager().enablePlugin(test);
|
||||||
|
}
|
||||||
|
GroupPlugin = (GroupManager) test;
|
||||||
|
LogConfig("Will use plugin for permissions: "+((GroupManager)test).getDescription().getFullName());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// if GroupManager isn't available, try Permissions
|
||||||
|
test = plugin.getServer().getPluginManager().getPlugin("Permissions");
|
||||||
|
|
||||||
if (test != null)
|
if (test != null)
|
||||||
{
|
{
|
||||||
@ -132,9 +149,17 @@ public class Config
|
|||||||
return true;
|
return true;
|
||||||
else if (player.isOp()) // Op, always permitted
|
else if (player.isOp()) // Op, always permitted
|
||||||
return true;
|
return true;
|
||||||
else if (Permissions == null // Permissions plugin not available, or doesn't have permission
|
else if (GroupPlugin != null) // GroupManager plugin available
|
||||||
|| !Permissions.permission(player, "worldborder." + request))
|
|
||||||
{
|
{
|
||||||
|
if (GroupPlugin.getWorldsHolder().getWorldPermissions(player).has(player, "worldborder." + request))
|
||||||
|
return true;
|
||||||
|
player.sendMessage("You do not have sufficient permissions to do that.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if (Permissions != null) // Permissions plugin available
|
||||||
|
{
|
||||||
|
if (Permissions.permission(player, "worldborder." + request))
|
||||||
|
return true;
|
||||||
player.sendMessage("You do not have sufficient permissions to do that.");
|
player.sendMessage("You do not have sufficient permissions to do that.");
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ public class WBCommand implements CommandExecutor
|
|||||||
Player player = (sender instanceof Player) ? (Player)sender : null;
|
Player player = (sender instanceof Player) ? (Player)sender : null;
|
||||||
|
|
||||||
String cmd = ChatColor.AQUA + ((player == null) ? "wborder" : "/wborder");
|
String cmd = ChatColor.AQUA + ((player == null) ? "wborder" : "/wborder");
|
||||||
String cmdW = ChatColor.AQUA + ((player == null) ? "wborder " + ChatColor.GREEN + "<world>" : "/wborder " + ChatColor.DARK_AQUA + "[world]") + ChatColor.AQUA;
|
String cmdW = ChatColor.AQUA + ((player == null) ? "wborder " + ChatColor.DARK_GREEN + "<world>" : "/wborder " + ChatColor.GREEN + "[world]") + ChatColor.AQUA;
|
||||||
|
|
||||||
// "set" command from player or console, world specified
|
// "set" command from player or console, world specified
|
||||||
if (split.length == 5 && split[1].equalsIgnoreCase("set"))
|
if (split.length == 5 && split[1].equalsIgnoreCase("set"))
|
||||||
@ -93,7 +93,7 @@ public class WBCommand implements CommandExecutor
|
|||||||
int radius;
|
int radius;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
radius = Integer.parseInt(split[1]);
|
radius = Integer.parseInt(split[2]);
|
||||||
}
|
}
|
||||||
catch(NumberFormatException ex)
|
catch(NumberFormatException ex)
|
||||||
{
|
{
|
||||||
@ -102,6 +102,8 @@ public class WBCommand implements CommandExecutor
|
|||||||
}
|
}
|
||||||
|
|
||||||
Config.setBorder(world, radius, x, z);
|
Config.setBorder(world, radius, x, z);
|
||||||
|
|
||||||
|
if (player != null)
|
||||||
sender.sendMessage("Radius has been set. " + Config.BorderDescription(world));
|
sender.sendMessage("Radius has been set. " + Config.BorderDescription(world));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -274,18 +276,18 @@ public class WBCommand implements CommandExecutor
|
|||||||
{
|
{
|
||||||
if (!Config.HasPermission(player, "help")) return true;
|
if (!Config.HasPermission(player, "help")) return true;
|
||||||
|
|
||||||
sender.sendMessage(ChatColor.WHITE + plugin.getDescription().getFullName() + " - commands (" + (player != null ? ChatColor.DARK_AQUA + "[optional] " : "") + ChatColor.GREEN + "<required>" + ChatColor.WHITE + "):");
|
sender.sendMessage(ChatColor.WHITE + plugin.getDescription().getFullName() + " - commands (" + (player != null ? ChatColor.GREEN + "[optional] " : "") + ChatColor.DARK_GREEN + "<required>" + ChatColor.WHITE + "):");
|
||||||
if (player != null)
|
if (player != null)
|
||||||
sender.sendMessage(cmd+" set " + ChatColor.GREEN + "<radius>" + ChatColor.WHITE + " - set world border, centered on you.");
|
sender.sendMessage(cmd+" set " + ChatColor.DARK_GREEN + "<radius>" + ChatColor.WHITE + " - set world border, centered on you.");
|
||||||
sender.sendMessage(cmdW+" set " + ChatColor.GREEN + "<radius> <x> <z>" + ChatColor.WHITE + " - set world border.");
|
sender.sendMessage(cmdW+" set " + ChatColor.DARK_GREEN + "<radius> <x> <z>" + ChatColor.WHITE + " - set world border.");
|
||||||
sender.sendMessage(cmdW+" radius " + ChatColor.GREEN + "<radius>" + ChatColor.WHITE + " - change border radius for this world.");
|
sender.sendMessage(cmdW+" radius " + ChatColor.DARK_GREEN + "<radius>" + ChatColor.WHITE + " - change a border radius.");
|
||||||
sender.sendMessage(cmdW+" clear" + ChatColor.WHITE + " - remove border for this world.");
|
sender.sendMessage(cmdW+" clear" + ChatColor.WHITE + " - remove border for this world.");
|
||||||
sender.sendMessage(cmd+" clear all" + ChatColor.WHITE + " - remove border for all worlds.");
|
sender.sendMessage(cmd+" clear all" + ChatColor.WHITE + " - remove border for all worlds.");
|
||||||
sender.sendMessage(cmd+" list" + ChatColor.WHITE + " - show border information for all worlds.");
|
sender.sendMessage(cmd+" list" + ChatColor.WHITE + " - show border information for all worlds.");
|
||||||
sender.sendMessage(cmd+" shape " + ChatColor.GREEN + "<round|square>" + ChatColor.WHITE + " - set the border shape.");
|
sender.sendMessage(cmd+" shape " + ChatColor.DARK_GREEN + "<round|square>" + ChatColor.WHITE + " - set the border shape.");
|
||||||
sender.sendMessage(cmd+" getmsg" + ChatColor.WHITE + " - display border message.");
|
sender.sendMessage(cmd+" getmsg" + ChatColor.WHITE + " - display border message.");
|
||||||
sender.sendMessage(cmd+" setmsg " + ChatColor.GREEN + "<text>" + ChatColor.WHITE + " - set border message.");
|
sender.sendMessage(cmd+" setmsg " + ChatColor.DARK_GREEN + "<text>" + ChatColor.WHITE + " - set border message.");
|
||||||
if (player != null)
|
if (player == null)
|
||||||
sender.sendMessage(cmd+" reload" + ChatColor.WHITE + " - re-load data from config.yml.");
|
sender.sendMessage(cmd+" reload" + ChatColor.WHITE + " - re-load data from config.yml.");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,26 +25,8 @@ public class WBPlayerListener extends PlayerListener
|
|||||||
if (border.insideBorder(loc.getX(), loc.getZ(), Config.ShapeRound()))
|
if (border.insideBorder(loc.getX(), loc.getZ(), Config.ShapeRound()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (Config.DEBUG)
|
Location newLoc = newLocation(player, loc, border);
|
||||||
{
|
|
||||||
Config.LogWarn("Border crossing. Border " + border.toString());
|
|
||||||
Config.LogWarn("Player position X: " + Config.coord.format(loc.getX()) + " Y: " + Config.coord.format(loc.getY()) + " Z: " + Config.coord.format(loc.getZ()));
|
|
||||||
}
|
|
||||||
|
|
||||||
Location newLoc = border.correctedPosition(loc, Config.ShapeRound());
|
|
||||||
|
|
||||||
// it's remotely possible (such as in the Nether) a suitable location isn't available, in which case...
|
|
||||||
if (newLoc == null)
|
|
||||||
{
|
|
||||||
if (Config.DEBUG)
|
|
||||||
Config.LogWarn("Target new location unviable, using spawn.");
|
|
||||||
newLoc = player.getServer().getWorlds().get(0).getSpawnLocation();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Config.DEBUG)
|
|
||||||
Config.LogWarn("New position X: " + Config.coord.format(newLoc.getX()) + " Y: " + Config.coord.format(newLoc.getY()) + " Z: " + Config.coord.format(newLoc.getZ()));
|
|
||||||
|
|
||||||
player.sendMessage(ChatColor.RED + Config.Message());
|
|
||||||
player.teleport(newLoc);
|
player.teleport(newLoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -65,25 +47,7 @@ public class WBPlayerListener extends PlayerListener
|
|||||||
if (border.insideBorder(loc.getX(), loc.getZ(), Config.ShapeRound()))
|
if (border.insideBorder(loc.getX(), loc.getZ(), Config.ShapeRound()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (Config.DEBUG)
|
Location newLoc = newLocation(player, loc, border);
|
||||||
{
|
|
||||||
Config.LogWarn("Border crossing. Border " + border.toString());
|
|
||||||
Config.LogWarn("Player position X: " + Config.coord.format(loc.getX()) + " Y: " + Config.coord.format(loc.getY()) + " Z: " + Config.coord.format(loc.getZ()));
|
|
||||||
}
|
|
||||||
|
|
||||||
Location newLoc = border.correctedPosition(loc, Config.ShapeRound());
|
|
||||||
|
|
||||||
if (newLoc == null)
|
|
||||||
{
|
|
||||||
if (Config.DEBUG)
|
|
||||||
Config.LogWarn("Target new location unviable, using spawn.");
|
|
||||||
newLoc = player.getServer().getWorlds().get(0).getSpawnLocation();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Config.DEBUG)
|
|
||||||
Config.LogWarn("New position X: " + Config.coord.format(newLoc.getX()) + " Y: " + Config.coord.format(newLoc.getY()) + " Z: " + Config.coord.format(newLoc.getZ()));
|
|
||||||
|
|
||||||
player.sendMessage(ChatColor.RED + Config.Message());
|
|
||||||
|
|
||||||
if (!player.isInsideVehicle())
|
if (!player.isInsideVehicle())
|
||||||
player.teleport(newLoc);
|
player.teleport(newLoc);
|
||||||
@ -114,25 +78,7 @@ public class WBPlayerListener extends PlayerListener
|
|||||||
if (border.insideBorder(loc.getX(), loc.getZ(), Config.ShapeRound()))
|
if (border.insideBorder(loc.getX(), loc.getZ(), Config.ShapeRound()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (Config.DEBUG)
|
Location newLoc = newLocation(player, loc, border);
|
||||||
{
|
|
||||||
Config.LogWarn("Border crossing. Border " + border.toString());
|
|
||||||
Config.LogWarn("Player position X: " + Config.coord.format(loc.getX()) + " Y: " + Config.coord.format(loc.getY()) + " Z: " + Config.coord.format(loc.getZ()));
|
|
||||||
}
|
|
||||||
|
|
||||||
Location newLoc = border.correctedPosition(loc, Config.ShapeRound());
|
|
||||||
|
|
||||||
if (newLoc == null)
|
|
||||||
{
|
|
||||||
if (Config.DEBUG)
|
|
||||||
Config.LogWarn("Target new location unviable, using spawn.");
|
|
||||||
newLoc = player.getServer().getWorlds().get(0).getSpawnLocation();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Config.DEBUG)
|
|
||||||
Config.LogWarn("New position X: " + Config.coord.format(newLoc.getX()) + " Y: " + Config.coord.format(newLoc.getY()) + " Z: " + Config.coord.format(newLoc.getZ()));
|
|
||||||
|
|
||||||
player.sendMessage(ChatColor.RED + Config.Message());
|
|
||||||
|
|
||||||
if (!player.isInsideVehicle())
|
if (!player.isInsideVehicle())
|
||||||
player.teleport(newLoc);
|
player.teleport(newLoc);
|
||||||
@ -145,4 +91,31 @@ public class WBPlayerListener extends PlayerListener
|
|||||||
|
|
||||||
event.setTo(newLoc);
|
event.setTo(newLoc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private static Location newLocation(Player player, Location loc, BorderData border)
|
||||||
|
{
|
||||||
|
if (Config.DEBUG)
|
||||||
|
{
|
||||||
|
Config.LogWarn("Border crossing. Border " + border.toString());
|
||||||
|
Config.LogWarn("Player position X: " + Config.coord.format(loc.getX()) + " Y: " + Config.coord.format(loc.getY()) + " Z: " + Config.coord.format(loc.getZ()));
|
||||||
|
}
|
||||||
|
|
||||||
|
Location newLoc = border.correctedPosition(loc, Config.ShapeRound());
|
||||||
|
|
||||||
|
// it's remotely possible (such as in the Nether) a suitable location isn't available, in which case...
|
||||||
|
if (newLoc == null)
|
||||||
|
{
|
||||||
|
if (Config.DEBUG)
|
||||||
|
Config.LogWarn("Target new location unviable, using spawn.");
|
||||||
|
newLoc = player.getServer().getWorlds().get(0).getSpawnLocation();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Config.DEBUG)
|
||||||
|
Config.LogWarn("New position X: " + Config.coord.format(newLoc.getX()) + " Y: " + Config.coord.format(newLoc.getY()) + " Z: " + Config.coord.format(newLoc.getZ()));
|
||||||
|
|
||||||
|
player.sendMessage(ChatColor.RED + Config.Message());
|
||||||
|
|
||||||
|
return newLoc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
name: WorldBorder
|
name: WorldBorder
|
||||||
author: Brettflan
|
author: Brettflan
|
||||||
description: Limit the size of your worlds with a border, round or square.
|
description: Limit the size of your worlds with a border, round or square.
|
||||||
version: 0.9
|
version: 0.9 PRE-RELEASE
|
||||||
main: com.wimbli.WorldBorder.WorldBorder
|
main: com.wimbli.WorldBorder.WorldBorder
|
||||||
commands:
|
commands:
|
||||||
wborder:
|
wborder:
|
||||||
@ -11,7 +11,7 @@ commands:
|
|||||||
/<command> - list available commands (show help).
|
/<command> - list available commands (show help).
|
||||||
/<command> set <radius> - set world border, centered on you.
|
/<command> set <radius> - set world border, centered on you.
|
||||||
/<command> [world] set <radius> <x> <z> - set world border.
|
/<command> [world] set <radius> <x> <z> - set world border.
|
||||||
/<command> radius <radius> - change border radius for this world.
|
/<command> [world] radius <radius> - change world's border radius.
|
||||||
/<command> [world] clear - remove border for this world.
|
/<command> [world] clear - remove border for this world.
|
||||||
/<command> clear all - remove border for all worlds.
|
/<command> clear all - remove border for all worlds.
|
||||||
/<command> list - show border information for all worlds.
|
/<command> list - show border information for all worlds.
|
||||||
|
Loading…
Reference in New Issue
Block a user