geforkt von Mirrors/FastAsyncWorldEdit
Gave /editreplace the ability to discriminate on block type to replace. Corrected arguments help for /editscript.
Dieser Commit ist enthalten in:
Ursprung
7d886c6572
Commit
b3eb1fc548
@ -55,14 +55,14 @@ public class WorldEdit extends Plugin {
|
|||||||
commands.put("/clearhistory", "Clear history");
|
commands.put("/clearhistory", "Clear history");
|
||||||
commands.put("/editsize", "Get size of selected region");
|
commands.put("/editsize", "Get size of selected region");
|
||||||
commands.put("/editset", "<Type> - Set all blocks inside region");
|
commands.put("/editset", "<Type> - Set all blocks inside region");
|
||||||
commands.put("/editreplace", "<ID> - Replace all existing blocks inside region");
|
commands.put("/editreplace", "<ID> <ToReplaceID> - Replace all existing blocks inside region");
|
||||||
commands.put("/editoverlay", "<ID> - Overlay the area one layer");
|
commands.put("/editoverlay", "<ID> - Overlay the area one layer");
|
||||||
commands.put("/removeabove", "<Size> - Remove blocks above head");
|
commands.put("/removeabove", "<Size> - Remove blocks above head");
|
||||||
commands.put("/editcopy", "Copies the currently selected region");
|
commands.put("/editcopy", "Copies the currently selected region");
|
||||||
commands.put("/editpaste", "Pastes the clipboard");
|
commands.put("/editpaste", "Pastes the clipboard");
|
||||||
commands.put("/editpasteair", "Pastes the clipboard (with air)");
|
commands.put("/editpasteair", "Pastes the clipboard (with air)");
|
||||||
commands.put("/editfill", "<ID> <Radius> <Depth> - Fill a hole");
|
commands.put("/editfill", "<ID> <Radius> <Depth> - Fill a hole");
|
||||||
commands.put("/editscript", "<Filename> [Args...] - Run an editscript");
|
commands.put("/editscript", "[Filename] <Args...> - Run an editscript");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -121,8 +121,8 @@ public class WorldEdit extends Plugin {
|
|||||||
* @throws UnknownItemException
|
* @throws UnknownItemException
|
||||||
* @throws DisallowedItemException
|
* @throws DisallowedItemException
|
||||||
*/
|
*/
|
||||||
private int getItem(String id) throws UnknownItemException,
|
private int getItem(String id, boolean allAllowed)
|
||||||
DisallowedItemException {
|
throws UnknownItemException, DisallowedItemException {
|
||||||
int foundID;
|
int foundID;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
@ -136,7 +136,7 @@ public class WorldEdit extends Plugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// All items allowed
|
// All items allowed
|
||||||
if (allowedBlocks[0].equals("")) {
|
if (allAllowed || allowedBlocks[0].equals("")) {
|
||||||
return foundID;
|
return foundID;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,6 +149,19 @@ public class WorldEdit extends Plugin {
|
|||||||
throw new DisallowedItemException();
|
throw new DisallowedItemException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get an item ID from an item name or an item ID number.
|
||||||
|
*
|
||||||
|
* @param id
|
||||||
|
* @return
|
||||||
|
* @throws UnknownItemException
|
||||||
|
* @throws DisallowedItemException
|
||||||
|
*/
|
||||||
|
private int getItem(String id) throws UnknownItemException,
|
||||||
|
DisallowedItemException {
|
||||||
|
return getItem(id, false);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* @override
|
* @override
|
||||||
@ -432,13 +445,15 @@ public class WorldEdit extends Plugin {
|
|||||||
} else if(split[0].equalsIgnoreCase("/editreplace")) {
|
} else if(split[0].equalsIgnoreCase("/editreplace")) {
|
||||||
checkArgs(split, 1);
|
checkArgs(split, 1);
|
||||||
int blockType = getItem(split[1]);
|
int blockType = getItem(split[1]);
|
||||||
|
int replaceType = split.length > 2 ? getItem(split[2], true) : -1;
|
||||||
|
|
||||||
int affected = 0;
|
int affected = 0;
|
||||||
|
|
||||||
for (int x = lowerX; x <= upperX; x++) {
|
for (int x = lowerX; x <= upperX; x++) {
|
||||||
for (int y = lowerY; y <= upperY; y++) {
|
for (int y = lowerY; y <= upperY; y++) {
|
||||||
for (int z = lowerZ; z <= upperZ; z++) {
|
for (int z = lowerZ; z <= upperZ; z++) {
|
||||||
if (editSession.getBlock(x, y, z) != 0) {
|
if ((replaceType == -1 && editSession.getBlock(x, y, z) != 0) ||
|
||||||
|
(editSession.getBlock(x, y, z) == replaceType)) {
|
||||||
editSession.setBlock(x, y, z, blockType);
|
editSession.setBlock(x, y, z, blockType);
|
||||||
affected++;
|
affected++;
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren