Mirror von
https://github.com/IntellectualSites/FastAsyncWorldEdit.git
synchronisiert 2024-12-26 02:50:06 +01:00
Added /toggleplace which lets you perform actions that require one point to use position #1 rather than your feet.
Dieser Commit ist enthalten in:
Ursprung
9739336730
Commit
5f1a014bfb
@ -71,6 +71,7 @@ public class WorldEdit {
|
|||||||
public WorldEdit() {
|
public WorldEdit() {
|
||||||
commands.put("/editpos1", "Set editing position #1");
|
commands.put("/editpos1", "Set editing position #1");
|
||||||
commands.put("/editpos2", "Set editing position #2");
|
commands.put("/editpos2", "Set editing position #2");
|
||||||
|
commands.put("/toggleplace", "Toggle placing at pos #1");
|
||||||
commands.put("/editwand", "Gives you the \"edit wand\"");
|
commands.put("/editwand", "Gives you the \"edit wand\"");
|
||||||
commands.put("/toggleeditwand", "Toggles edit wand selection");
|
commands.put("/toggleeditwand", "Toggles edit wand selection");
|
||||||
commands.put("/,", "Toggles super pick axe.");
|
commands.put("/,", "Toggles super pick axe.");
|
||||||
@ -251,6 +252,16 @@ public class WorldEdit {
|
|||||||
player.print("Right click = sel. pos 1; double right click = sel. pos 2");
|
player.print("Right click = sel. pos 1; double right click = sel. pos 2");
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
// Toggle placing at pos #1
|
||||||
|
} else if (split[0].equalsIgnoreCase("/toggleplace")) {
|
||||||
|
checkArgs(split, 0, 0, split[0]);
|
||||||
|
if (session.togglePlacementPosition()) {
|
||||||
|
player.print("Now placing at pos #1.");
|
||||||
|
} else {
|
||||||
|
player.print("Now placing at the block you stand in.");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
|
||||||
// Toggle edit wand
|
// Toggle edit wand
|
||||||
} else if (split[0].equalsIgnoreCase("/toggleeditwand")) {
|
} else if (split[0].equalsIgnoreCase("/toggleeditwand")) {
|
||||||
checkArgs(split, 0, 0, split[0]);
|
checkArgs(split, 0, 0, split[0]);
|
||||||
@ -317,7 +328,7 @@ public class WorldEdit {
|
|||||||
// Paste
|
// Paste
|
||||||
} else if (split[0].equalsIgnoreCase("/editpasteair") ||
|
} else if (split[0].equalsIgnoreCase("/editpasteair") ||
|
||||||
split[0].equalsIgnoreCase("/editpaste")) {
|
split[0].equalsIgnoreCase("/editpaste")) {
|
||||||
Vector pos = player.getBlockIn();
|
Vector pos = session.getPlacementPosition(player);
|
||||||
session.getClipboard().paste(editSession, pos,
|
session.getClipboard().paste(editSession, pos,
|
||||||
split[0].equalsIgnoreCase("/editpaste"));
|
split[0].equalsIgnoreCase("/editpaste"));
|
||||||
player.findFreePosition();
|
player.findFreePosition();
|
||||||
@ -332,7 +343,7 @@ public class WorldEdit {
|
|||||||
int radius = Math.max(1, Integer.parseInt(split[2]));
|
int radius = Math.max(1, Integer.parseInt(split[2]));
|
||||||
int depth = split.length > 3 ? Math.max(1, Integer.parseInt(split[3])) : 1;
|
int depth = split.length > 3 ? Math.max(1, Integer.parseInt(split[3])) : 1;
|
||||||
|
|
||||||
Vector pos = player.getBlockIn();
|
Vector pos = session.getPlacementPosition(player);
|
||||||
int affected = editSession.fillXZ((int)pos.getX(), (int)pos.getZ(),
|
int affected = editSession.fillXZ((int)pos.getX(), (int)pos.getZ(),
|
||||||
pos, block, radius, depth);
|
pos, block, radius, depth);
|
||||||
player.print(affected + " block(s) have been created.");
|
player.print(affected + " block(s) have been created.");
|
||||||
@ -344,7 +355,8 @@ public class WorldEdit {
|
|||||||
int size = split.length > 1 ? Math.max(1, Integer.parseInt(split[1])) : 1;
|
int size = split.length > 1 ? Math.max(1, Integer.parseInt(split[1])) : 1;
|
||||||
int height = split.length > 2 ? Math.min(128, Integer.parseInt(split[2]) + 2) : 128;
|
int height = split.length > 2 ? Math.min(128, Integer.parseInt(split[2]) + 2) : 128;
|
||||||
|
|
||||||
int affected = editSession.removeAbove(player.getBlockIn(), size, height);
|
int affected = editSession.removeAbove(
|
||||||
|
session.getPlacementPosition(player), size, height);
|
||||||
player.print(affected + " block(s) have been removed.");
|
player.print(affected + " block(s) have been removed.");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -354,7 +366,8 @@ public class WorldEdit {
|
|||||||
int size = split.length > 1 ? Math.max(1, Integer.parseInt(split[1])) : 1;
|
int size = split.length > 1 ? Math.max(1, Integer.parseInt(split[1])) : 1;
|
||||||
int height = split.length > 2 ? Math.max(1, Integer.parseInt(split[2])) : 128;
|
int height = split.length > 2 ? Math.max(1, Integer.parseInt(split[2])) : 128;
|
||||||
|
|
||||||
int affected = editSession.removeBelow(player.getBlockIn(), size, height);
|
int affected = editSession.removeBelow(
|
||||||
|
session.getPlacementPosition(player), size, height);
|
||||||
player.print(affected + " block(s) have been removed.");
|
player.print(affected + " block(s) have been removed.");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
@ -451,7 +464,8 @@ public class WorldEdit {
|
|||||||
} else if(split[0].equalsIgnoreCase("/editdrain")) {
|
} else if(split[0].equalsIgnoreCase("/editdrain")) {
|
||||||
checkArgs(split, 1, 1, split[0]);
|
checkArgs(split, 1, 1, split[0]);
|
||||||
int radius = Math.max(0, Integer.parseInt(split[1]));
|
int radius = Math.max(0, Integer.parseInt(split[1]));
|
||||||
int affected = editSession.drainArea(player.getBlockIn(), radius);
|
int affected = editSession.drainArea(
|
||||||
|
session.getPlacementPosition(player), radius);
|
||||||
player.print(affected + " block(s) have been changed.");
|
player.print(affected + " block(s) have been changed.");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -28,6 +28,7 @@ import java.util.LinkedList;
|
|||||||
*/
|
*/
|
||||||
public class WorldEditSession {
|
public class WorldEditSession {
|
||||||
public static final int MAX_HISTORY_SIZE = 15;
|
public static final int MAX_HISTORY_SIZE = 15;
|
||||||
|
private boolean placeAtPos1 = false;
|
||||||
private Vector pos1, pos2;
|
private Vector pos1, pos2;
|
||||||
private Region region;
|
private Region region;
|
||||||
private LinkedList<EditSession> history = new LinkedList<EditSession>();
|
private LinkedList<EditSession> history = new LinkedList<EditSession>();
|
||||||
@ -282,4 +283,26 @@ public class WorldEditSession {
|
|||||||
superPickAxe = !superPickAxe;
|
superPickAxe = !superPickAxe;
|
||||||
return superPickAxe;
|
return superPickAxe;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return position
|
||||||
|
* @throws IncompleteRegionException
|
||||||
|
*/
|
||||||
|
public Vector getPlacementPosition(WorldEditPlayer player)
|
||||||
|
throws IncompleteRegionException {
|
||||||
|
if (!placeAtPos1) {
|
||||||
|
return player.getBlockIn();
|
||||||
|
}
|
||||||
|
|
||||||
|
checkPos1();
|
||||||
|
return pos1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggle placement position;
|
||||||
|
*/
|
||||||
|
public boolean togglePlacementPosition() {
|
||||||
|
placeAtPos1 = !placeAtPos1;
|
||||||
|
return placeAtPos1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren