add /restrictsubclaim (#135)
Will update databases - warn server owners to backup when releasing (they should be backing up anyways...)
This commit is contained in:
parent
8d0e5e8e5f
commit
5d474e51f5
|
|
@ -48,6 +48,11 @@ commands:
|
||||||
usage: /SubdivideClaims
|
usage: /SubdivideClaims
|
||||||
aliases: [sc, subdivideclaim]
|
aliases: [sc, subdivideclaim]
|
||||||
permission: griefprevention.claims
|
permission: griefprevention.claims
|
||||||
|
restrictsubclaim:
|
||||||
|
description: Restricts a subclaim, so that it inherits no permissions from the parent claim
|
||||||
|
usage: /restrictsubclaim
|
||||||
|
aliases: rsc
|
||||||
|
permission: griefprevention.claims
|
||||||
adjustbonusclaimblocks:
|
adjustbonusclaimblocks:
|
||||||
description: Adds or subtracts bonus claim blocks for a player.
|
description: Adds or subtracts bonus claim blocks for a player.
|
||||||
usage: /AdjustBonusClaimBlocks <player> <amount>
|
usage: /AdjustBonusClaimBlocks <player> <amount>
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,9 @@ public class Claim
|
||||||
//only used for claim subdivisions. top level claims have null here
|
//only used for claim subdivisions. top level claims have null here
|
||||||
public Claim parent = null;
|
public Claim parent = null;
|
||||||
|
|
||||||
|
// intended for subclaims - they inherit no permissions
|
||||||
|
private boolean inheritNothing = false;
|
||||||
|
|
||||||
//children (subdivisions)
|
//children (subdivisions)
|
||||||
//note subdivisions themselves never have children
|
//note subdivisions themselves never have children
|
||||||
public ArrayList<Claim> children = new ArrayList<Claim>();
|
public ArrayList<Claim> children = new ArrayList<Claim>();
|
||||||
|
|
@ -187,7 +190,7 @@ public class Claim
|
||||||
}
|
}
|
||||||
|
|
||||||
//main constructor. note that only creating a claim instance does nothing - a claim must be added to the data store to be effective
|
//main constructor. note that only creating a claim instance does nothing - a claim must be added to the data store to be effective
|
||||||
Claim(Location lesserBoundaryCorner, Location greaterBoundaryCorner, UUID ownerID, List<String> builderIDs, List<String> containerIDs, List<String> accessorIDs, List<String> managerIDs, Long id)
|
Claim(Location lesserBoundaryCorner, Location greaterBoundaryCorner, UUID ownerID, List<String> builderIDs, List<String> containerIDs, List<String> accessorIDs, List<String> managerIDs, boolean inheritNothing, Long id)
|
||||||
{
|
{
|
||||||
//modification date
|
//modification date
|
||||||
this.modifiedDate = Calendar.getInstance().getTime();
|
this.modifiedDate = Calendar.getInstance().getTime();
|
||||||
|
|
@ -234,6 +237,13 @@ public class Claim
|
||||||
this.managers.add(managerID);
|
this.managers.add(managerID);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
this.inheritNothing = inheritNothing;
|
||||||
|
}
|
||||||
|
|
||||||
|
Claim(Location lesserBoundaryCorner, Location greaterBoundaryCorner, UUID ownerID, List<String> builderIDs, List<String> containerIDs, List<String> accessorIDs, List<String> managerIDs, Long id)
|
||||||
|
{
|
||||||
|
this(lesserBoundaryCorner, greaterBoundaryCorner, ownerID, builderIDs, containerIDs, accessorIDs, managerIDs, false, id);
|
||||||
}
|
}
|
||||||
|
|
||||||
//measurements. all measurements are in blocks
|
//measurements. all measurements are in blocks
|
||||||
|
|
@ -254,7 +264,17 @@ public class Claim
|
||||||
{
|
{
|
||||||
return this.greaterBoundaryCorner.getBlockZ() - this.lesserBoundaryCorner.getBlockZ() + 1;
|
return this.greaterBoundaryCorner.getBlockZ() - this.lesserBoundaryCorner.getBlockZ() + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getSubclaimRestrictions()
|
||||||
|
{
|
||||||
|
return inheritNothing;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setSubclaimRestrictions(boolean inheritNothing)
|
||||||
|
{
|
||||||
|
this.inheritNothing = inheritNothing;
|
||||||
|
}
|
||||||
|
|
||||||
//distance check for claims, distance in this case is a band around the outside of the claim rather then euclidean distance
|
//distance check for claims, distance in this case is a band around the outside of the claim rather then euclidean distance
|
||||||
public boolean isNear(Location location, int howNear)
|
public boolean isNear(Location location, int howNear)
|
||||||
{
|
{
|
||||||
|
|
@ -301,7 +321,12 @@ public class Claim
|
||||||
|
|
||||||
//permission inheritance for subdivisions
|
//permission inheritance for subdivisions
|
||||||
if(this.parent != null)
|
if(this.parent != null)
|
||||||
return this.parent.allowEdit(player);
|
{
|
||||||
|
if (player.getUniqueId().equals(this.parent.ownerID))
|
||||||
|
return null;
|
||||||
|
if (!inheritNothing)
|
||||||
|
return this.parent.allowEdit(player);
|
||||||
|
}
|
||||||
|
|
||||||
//error message if all else fails
|
//error message if all else fails
|
||||||
return GriefPrevention.instance.dataStore.getMessage(Messages.OnlyOwnersModifyClaims, this.getOwnerName());
|
return GriefPrevention.instance.dataStore.getMessage(Messages.OnlyOwnersModifyClaims, this.getOwnerName());
|
||||||
|
|
@ -371,7 +396,12 @@ public class Claim
|
||||||
|
|
||||||
//subdivision permission inheritance
|
//subdivision permission inheritance
|
||||||
if(this.parent != null)
|
if(this.parent != null)
|
||||||
return this.parent.allowBuild(player, material);
|
{
|
||||||
|
if (player.getUniqueId().equals(this.parent.ownerID))
|
||||||
|
return null;
|
||||||
|
if (!inheritNothing)
|
||||||
|
return this.parent.allowBuild(player, material);
|
||||||
|
}
|
||||||
|
|
||||||
//failure message for all other cases
|
//failure message for all other cases
|
||||||
String reason = GriefPrevention.instance.dataStore.getMessage(Messages.NoBuildPermission, this.getOwnerName());
|
String reason = GriefPrevention.instance.dataStore.getMessage(Messages.NoBuildPermission, this.getOwnerName());
|
||||||
|
|
@ -471,7 +501,12 @@ public class Claim
|
||||||
|
|
||||||
//permission inheritance for subdivisions
|
//permission inheritance for subdivisions
|
||||||
if(this.parent != null)
|
if(this.parent != null)
|
||||||
return this.parent.allowAccess(player);
|
{
|
||||||
|
if (player.getUniqueId().equals(this.parent.ownerID))
|
||||||
|
return null;
|
||||||
|
if (!inheritNothing)
|
||||||
|
return this.parent.allowAccess(player);
|
||||||
|
}
|
||||||
|
|
||||||
//catch-all error message for all other cases
|
//catch-all error message for all other cases
|
||||||
String reason = GriefPrevention.instance.dataStore.getMessage(Messages.NoAccessPermission, this.getOwnerName());
|
String reason = GriefPrevention.instance.dataStore.getMessage(Messages.NoAccessPermission, this.getOwnerName());
|
||||||
|
|
@ -514,7 +549,12 @@ public class Claim
|
||||||
|
|
||||||
//permission inheritance for subdivisions
|
//permission inheritance for subdivisions
|
||||||
if(this.parent != null)
|
if(this.parent != null)
|
||||||
return this.parent.allowContainers(player);
|
{
|
||||||
|
if (player.getUniqueId().equals(this.parent.ownerID))
|
||||||
|
return null;
|
||||||
|
if (!inheritNothing)
|
||||||
|
return this.parent.allowContainers(player);
|
||||||
|
}
|
||||||
|
|
||||||
//error message for all other cases
|
//error message for all other cases
|
||||||
String reason = GriefPrevention.instance.dataStore.getMessage(Messages.NoContainersPermission, this.getOwnerName());
|
String reason = GriefPrevention.instance.dataStore.getMessage(Messages.NoContainersPermission, this.getOwnerName());
|
||||||
|
|
@ -548,7 +588,12 @@ public class Claim
|
||||||
|
|
||||||
//permission inheritance for subdivisions
|
//permission inheritance for subdivisions
|
||||||
if(this.parent != null)
|
if(this.parent != null)
|
||||||
return this.parent.allowGrantPermission(player);
|
{
|
||||||
|
if (player.getUniqueId().equals(this.parent.ownerID))
|
||||||
|
return null;
|
||||||
|
if (!inheritNothing)
|
||||||
|
return this.parent.allowGrantPermission(player);
|
||||||
|
}
|
||||||
|
|
||||||
//generic error message
|
//generic error message
|
||||||
String reason = GriefPrevention.instance.dataStore.getMessage(Messages.NoPermissionTrust, this.getOwnerName());
|
String reason = GriefPrevention.instance.dataStore.getMessage(Messages.NoPermissionTrust, this.getOwnerName());
|
||||||
|
|
|
||||||
|
|
@ -90,7 +90,7 @@ public abstract class DataStore
|
||||||
final static String bannedWordsFilePath = dataLayerFolderPath + File.separator + "bannedWords.txt";
|
final static String bannedWordsFilePath = dataLayerFolderPath + File.separator + "bannedWords.txt";
|
||||||
|
|
||||||
//the latest version of the data schema implemented here
|
//the latest version of the data schema implemented here
|
||||||
protected static final int latestSchemaVersion = 2;
|
protected static final int latestSchemaVersion = 3;
|
||||||
|
|
||||||
//reading and writing the schema version to the data store
|
//reading and writing the schema version to the data store
|
||||||
abstract int getSchemaVersionFromStorage();
|
abstract int getSchemaVersionFromStorage();
|
||||||
|
|
@ -1607,6 +1607,7 @@ public abstract class DataStore
|
||||||
this.addDefault(defaults, Messages.Build, "Build", null);
|
this.addDefault(defaults, Messages.Build, "Build", null);
|
||||||
this.addDefault(defaults, Messages.Containers, "Containers", null);
|
this.addDefault(defaults, Messages.Containers, "Containers", null);
|
||||||
this.addDefault(defaults, Messages.Access, "Access", null);
|
this.addDefault(defaults, Messages.Access, "Access", null);
|
||||||
|
this.addDefault(defaults, Messages.HasSubclaimRestriction, "This subclaim does not inherit permissions from the parent", null);
|
||||||
this.addDefault(defaults, Messages.StartBlockMath, "{0} blocks from play + {1} bonus = {2} total.", null);
|
this.addDefault(defaults, Messages.StartBlockMath, "{0} blocks from play + {1} bonus = {2} total.", null);
|
||||||
this.addDefault(defaults, Messages.ClaimsListHeader, "Claims:", null);
|
this.addDefault(defaults, Messages.ClaimsListHeader, "Claims:", null);
|
||||||
this.addDefault(defaults, Messages.ContinueBlockMath, " (-{0} blocks)", null);
|
this.addDefault(defaults, Messages.ContinueBlockMath, " (-{0} blocks)", null);
|
||||||
|
|
@ -1637,7 +1638,11 @@ public abstract class DataStore
|
||||||
this.addDefault(defaults, Messages.ConsoleOnlyCommand, "That command may only be executed from the server console.", null);
|
this.addDefault(defaults, Messages.ConsoleOnlyCommand, "That command may only be executed from the server console.", null);
|
||||||
this.addDefault(defaults, Messages.WorldNotFound, "World not found.", null);
|
this.addDefault(defaults, Messages.WorldNotFound, "World not found.", null);
|
||||||
this.addDefault(defaults, Messages.TooMuchIpOverlap, "Sorry, there are too many players logged in with your IP address.", null);
|
this.addDefault(defaults, Messages.TooMuchIpOverlap, "Sorry, there are too many players logged in with your IP address.", null);
|
||||||
|
|
||||||
|
this.addDefault(defaults, Messages.StandInSubclaim, "You need to be standing in a subclaim to restrict it", null);
|
||||||
|
this.addDefault(defaults, Messages.SubclaimRestricted, "This subclaim's permissions will no longer inherit from the parent claim", null);
|
||||||
|
this.addDefault(defaults, Messages.SubclaimUnrestricted, "This subclaim's permissions will now inherit from the parent claim", null);
|
||||||
|
|
||||||
//load the config file
|
//load the config file
|
||||||
FileConfiguration config = YamlConfiguration.loadConfiguration(new File(messagesFilePath));
|
FileConfiguration config = YamlConfiguration.loadConfiguration(new File(messagesFilePath));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ public class DatabaseDataStore extends DataStore
|
||||||
|
|
||||||
statement.execute("CREATE TABLE IF NOT EXISTS griefprevention_nextclaimid (nextid INT(15));");
|
statement.execute("CREATE TABLE IF NOT EXISTS griefprevention_nextclaimid (nextid INT(15));");
|
||||||
|
|
||||||
statement.execute("CREATE TABLE IF NOT EXISTS griefprevention_claimdata (id INT(15), owner VARCHAR(50), lessercorner VARCHAR(100), greatercorner VARCHAR(100), builders TEXT, containers TEXT, accessors TEXT, managers TEXT, parentid INT(15));");
|
statement.execute("CREATE TABLE IF NOT EXISTS griefprevention_claimdata (id INT(15), owner VARCHAR(50), lessercorner VARCHAR(100), greatercorner VARCHAR(100), builders TEXT, containers TEXT, accessors TEXT, managers TEXT, inheritnothing BOOLEAN, parentid INT(15));");
|
||||||
|
|
||||||
statement.execute("CREATE TABLE IF NOT EXISTS griefprevention_playerdata (name VARCHAR(50), lastlogin DATETIME, accruedblocks INT(15), bonusblocks INT(15));");
|
statement.execute("CREATE TABLE IF NOT EXISTS griefprevention_playerdata (name VARCHAR(50), lastlogin DATETIME, accruedblocks INT(15), bonusblocks INT(15));");
|
||||||
|
|
||||||
|
|
@ -224,6 +224,13 @@ public class DatabaseDataStore extends DataStore
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(this.getSchemaVersion() <= 2)
|
||||||
|
{
|
||||||
|
statement = this.databaseConnection.createStatement();
|
||||||
|
statement.execute("ALTER TABLE griefprevention_claimdata ADD inheritNothing BOOLEAN DEFAULT 0 AFTER managers;");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//load claims data into memory
|
//load claims data into memory
|
||||||
results = statement.executeQuery("SELECT * FROM griefprevention_claimdata;");
|
results = statement.executeQuery("SELECT * FROM griefprevention_claimdata;");
|
||||||
|
|
@ -237,22 +244,23 @@ public class DatabaseDataStore extends DataStore
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
//problematic claims will be removed from secondary storage, and never added to in-memory data store
|
//problematic claims will be removed from secondary storage, and never added to in-memory data store
|
||||||
boolean removeClaim = false;
|
boolean removeClaim = false;
|
||||||
|
|
||||||
long parentId = results.getLong("parentid");
|
long parentId = results.getLong("parentid");
|
||||||
claimID = results.getLong("id");
|
claimID = results.getLong("id");
|
||||||
|
boolean inheritNothing = results.getBoolean("inheritNothing");
|
||||||
|
|
||||||
Location lesserBoundaryCorner = null;
|
Location lesserBoundaryCorner = null;
|
||||||
Location greaterBoundaryCorner = null;
|
Location greaterBoundaryCorner = null;
|
||||||
String lesserCornerString = "(location not available)";
|
String lesserCornerString = "(location not available)";
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
lesserCornerString = results.getString("lessercorner");
|
lesserCornerString = results.getString("lessercorner");
|
||||||
lesserBoundaryCorner = this.locationFromString(lesserCornerString, validWorlds);
|
lesserBoundaryCorner = this.locationFromString(lesserCornerString, validWorlds);
|
||||||
|
|
||||||
String greaterCornerString = results.getString("greatercorner");
|
String greaterCornerString = results.getString("greatercorner");
|
||||||
greaterBoundaryCorner = this.locationFromString(greaterCornerString, validWorlds);
|
greaterBoundaryCorner = this.locationFromString(greaterCornerString, validWorlds);
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
|
|
@ -314,7 +322,7 @@ public class DatabaseDataStore extends DataStore
|
||||||
List<String> managerNames = Arrays.asList(managersString.split(";"));
|
List<String> managerNames = Arrays.asList(managersString.split(";"));
|
||||||
managerNames = this.convertNameListToUUIDList(managerNames);
|
managerNames = this.convertNameListToUUIDList(managerNames);
|
||||||
|
|
||||||
Claim claim = new Claim(lesserBoundaryCorner, greaterBoundaryCorner, ownerID, builderNames, containerNames, accessorNames, managerNames, claimID);
|
Claim claim = new Claim(lesserBoundaryCorner, greaterBoundaryCorner, ownerID, builderNames, containerNames, accessorNames, managerNames, inheritNothing, claimID);
|
||||||
|
|
||||||
if(removeClaim)
|
if(removeClaim)
|
||||||
{
|
{
|
||||||
|
|
@ -431,6 +439,8 @@ public class DatabaseDataStore extends DataStore
|
||||||
managersString += managers.get(i) + ";";
|
managersString += managers.get(i) + ";";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
boolean inheritNothing = claim.getSubclaimRestrictions();
|
||||||
|
|
||||||
long parentId;
|
long parentId;
|
||||||
if(claim.parent == null)
|
if(claim.parent == null)
|
||||||
{
|
{
|
||||||
|
|
@ -446,7 +456,7 @@ public class DatabaseDataStore extends DataStore
|
||||||
this.refreshDataConnection();
|
this.refreshDataConnection();
|
||||||
|
|
||||||
Statement statement = databaseConnection.createStatement();
|
Statement statement = databaseConnection.createStatement();
|
||||||
statement.execute("INSERT INTO griefprevention_claimdata (id, owner, lessercorner, greatercorner, builders, containers, accessors, managers, parentid) VALUES(" +
|
statement.execute("INSERT INTO griefprevention_claimdata (id, owner, lessercorner, greatercorner, builders, containers, accessors, managers, inheritnothing, parentid) VALUES(" +
|
||||||
claim.id + ", '" +
|
claim.id + ", '" +
|
||||||
owner + "', '" +
|
owner + "', '" +
|
||||||
lesserCornerString + "', '" +
|
lesserCornerString + "', '" +
|
||||||
|
|
@ -455,7 +465,8 @@ public class DatabaseDataStore extends DataStore
|
||||||
containersString + "', '" +
|
containersString + "', '" +
|
||||||
accessorsString + "', '" +
|
accessorsString + "', '" +
|
||||||
managersString + "', " +
|
managersString + "', " +
|
||||||
parentId +
|
inheritNothing + ", "+
|
||||||
|
parentId +
|
||||||
");");
|
");");
|
||||||
}
|
}
|
||||||
catch(SQLException e)
|
catch(SQLException e)
|
||||||
|
|
|
||||||
|
|
@ -506,10 +506,12 @@ public class FlatFileDataStore extends DataStore
|
||||||
|
|
||||||
List<String> managers = yaml.getStringList("Managers");
|
List<String> managers = yaml.getStringList("Managers");
|
||||||
|
|
||||||
|
boolean inheritNothing = yaml.getBoolean("inheritNothing");
|
||||||
|
|
||||||
out_parentID.add(yaml.getLong("Parent Claim ID", -1L));
|
out_parentID.add(yaml.getLong("Parent Claim ID", -1L));
|
||||||
|
|
||||||
//instantiate
|
//instantiate
|
||||||
claim = new Claim(lesserBoundaryCorner, greaterBoundaryCorner, ownerID, builders, containers, accessors, managers, claimID);
|
claim = new Claim(lesserBoundaryCorner, greaterBoundaryCorner, ownerID, builders, containers, accessors, managers, inheritNothing, claimID);
|
||||||
claim.modifiedDate = new Date(lastModifiedDate);
|
claim.modifiedDate = new Date(lastModifiedDate);
|
||||||
claim.id = claimID;
|
claim.id = claimID;
|
||||||
|
|
||||||
|
|
@ -548,6 +550,8 @@ public class FlatFileDataStore extends DataStore
|
||||||
|
|
||||||
yaml.set("Parent Claim ID", parentID);
|
yaml.set("Parent Claim ID", parentID);
|
||||||
|
|
||||||
|
yaml.set("inheritNothing", claim.getSubclaimRestrictions());
|
||||||
|
|
||||||
return yaml.saveToString();
|
return yaml.saveToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1502,6 +1502,11 @@ public class GriefPrevention extends JavaPlugin
|
||||||
ChatColor.GREEN + this.dataStore.getMessage(Messages.Containers) + " " +
|
ChatColor.GREEN + this.dataStore.getMessage(Messages.Containers) + " " +
|
||||||
ChatColor.BLUE + this.dataStore.getMessage(Messages.Access));
|
ChatColor.BLUE + this.dataStore.getMessage(Messages.Access));
|
||||||
|
|
||||||
|
if(claim.getSubclaimRestrictions())
|
||||||
|
{
|
||||||
|
GriefPrevention.sendMessage(player, TextMode.Err, Messages.HasSubclaimRestriction);
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1692,6 +1697,37 @@ public class GriefPrevention extends JavaPlugin
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//restrictsubclaim
|
||||||
|
else if (cmd.getName().equalsIgnoreCase("restrictsubclaim") && player != null)
|
||||||
|
{
|
||||||
|
PlayerData playerData = this.dataStore.getPlayerData(player.getUniqueId());
|
||||||
|
Claim claim = this.dataStore.getClaimAt(player.getLocation(), true, playerData.lastClaim);
|
||||||
|
if(claim == null || claim.parent == null)
|
||||||
|
{
|
||||||
|
GriefPrevention.sendMessage(player, TextMode.Err, Messages.StandInSubclaim);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!player.getUniqueId().equals(claim.parent.ownerID))
|
||||||
|
{
|
||||||
|
GriefPrevention.sendMessage(player, TextMode.Err, Messages.OnlyOwnersModifyClaims, claim.getOwnerName());
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(claim.getSubclaimRestrictions())
|
||||||
|
{
|
||||||
|
claim.setSubclaimRestrictions(false);
|
||||||
|
GriefPrevention.sendMessage(player, TextMode.Success, Messages.SubclaimUnrestricted);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
claim.setSubclaimRestrictions(true);
|
||||||
|
GriefPrevention.sendMessage(player, TextMode.Success, Messages.SubclaimRestricted);
|
||||||
|
}
|
||||||
|
this.dataStore.saveClaim(claim);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
//buyclaimblocks
|
//buyclaimblocks
|
||||||
else if(cmd.getName().equalsIgnoreCase("buyclaimblocks") && player != null)
|
else if(cmd.getName().equalsIgnoreCase("buyclaimblocks") && player != null)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -216,6 +216,7 @@ public enum Messages
|
||||||
Build,
|
Build,
|
||||||
Containers,
|
Containers,
|
||||||
Access,
|
Access,
|
||||||
|
HasSubclaimRestriction,
|
||||||
StartBlockMath,
|
StartBlockMath,
|
||||||
ClaimsListHeader,
|
ClaimsListHeader,
|
||||||
ContinueBlockMath,
|
ContinueBlockMath,
|
||||||
|
|
@ -247,5 +248,8 @@ public enum Messages
|
||||||
ConsoleOnlyCommand,
|
ConsoleOnlyCommand,
|
||||||
WorldNotFound,
|
WorldNotFound,
|
||||||
AdjustBlocksAllSuccess,
|
AdjustBlocksAllSuccess,
|
||||||
TooMuchIpOverlap
|
TooMuchIpOverlap,
|
||||||
|
StandInSubclaim,
|
||||||
|
SubclaimRestricted,
|
||||||
|
SubclaimUnrestricted
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user