geforkt von Mirrors/FastAsyncWorldEdit
Simplifications to VoxelSniper
Signed-off-by: MattBDev <4009945+MattBDev@users.noreply.github.com>
Dieser Commit ist enthalten in:
Ursprung
6c94cca15e
Commit
e6f2e17bdf
@ -281,8 +281,8 @@ public class RangeBlockHelper {
|
|||||||
this.range = range;
|
this.range = range;
|
||||||
this.step = step;
|
this.step = step;
|
||||||
this.length = 0.0D;
|
this.length = 0.0D;
|
||||||
this.rotX = (double)((this.playerLoc.getYaw() + 90.0F) % 360.0F);
|
this.rotX = (this.playerLoc.getYaw() + 90.0F) % 360.0F;
|
||||||
this.rotY = (double)(this.playerLoc.getPitch() * -1.0F);
|
this.rotY = this.playerLoc.getPitch() * -1.0F;
|
||||||
this.rotYCos = Math.cos(Math.toRadians(this.rotY));
|
this.rotYCos = Math.cos(Math.toRadians(this.rotY));
|
||||||
this.rotYSin = Math.sin(Math.toRadians(this.rotY));
|
this.rotYSin = Math.sin(Math.toRadians(this.rotY));
|
||||||
this.rotXCos = Math.cos(Math.toRadians(this.rotX));
|
this.rotXCos = Math.cos(Math.toRadians(this.rotX));
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/**
|
/*
|
||||||
This file is part of VoxelSniper, licensed under the MIT License (MIT).
|
This file is part of VoxelSniper, licensed under the MIT License (MIT).
|
||||||
|
|
||||||
Copyright (c) The VoxelBox <http://thevoxelbox.com>
|
Copyright (c) The VoxelBox <http://thevoxelbox.com>
|
||||||
@ -71,7 +71,6 @@ import java.util.Map;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class Sniper {
|
public class Sniper {
|
||||||
private VoxelSniper plugin;
|
|
||||||
private final UUID player;
|
private final UUID player;
|
||||||
private boolean enabled = true;
|
private boolean enabled = true;
|
||||||
// private LinkedList<FaweChangeSet> undoList = new LinkedList<>();
|
// private LinkedList<FaweChangeSet> undoList = new LinkedList<>();
|
||||||
@ -80,7 +79,6 @@ public class Sniper {
|
|||||||
public Sniper(VoxelSniper plugin, Player player) {
|
public Sniper(VoxelSniper plugin, Player player) {
|
||||||
Preconditions.checkNotNull(plugin);
|
Preconditions.checkNotNull(plugin);
|
||||||
Preconditions.checkNotNull(player);
|
Preconditions.checkNotNull(player);
|
||||||
this.plugin = plugin;
|
|
||||||
this.player = player.getUniqueId();
|
this.player = player.getUniqueId();
|
||||||
SniperTool sniperTool = new SniperTool(this);
|
SniperTool sniperTool = new SniperTool(this);
|
||||||
sniperTool.assignAction(SnipeAction.ARROW, Material.ARROW);
|
sniperTool.assignAction(SnipeAction.ARROW, Material.ARROW);
|
||||||
@ -89,7 +87,7 @@ public class Sniper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public String getCurrentToolId() {
|
public String getCurrentToolId() {
|
||||||
return getToolId((getPlayer().getInventory().getItemInMainHand() != null) ? getPlayer().getInventory().getItemInMainHand().getType() : null);
|
return getToolId(getPlayer().getInventory().getItemInMainHand().getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getToolId(Material itemInHand) {
|
public String getToolId(Material itemInHand) {
|
||||||
@ -397,14 +395,12 @@ public class Sniper {
|
|||||||
} else {
|
} else {
|
||||||
changeQueue.flush();
|
changeQueue.flush();
|
||||||
}
|
}
|
||||||
if (changeSet != null) {
|
if (Settings.IMP.HISTORY.COMBINE_STAGES) {
|
||||||
if (Settings.IMP.HISTORY.COMBINE_STAGES) {
|
changeSet.closeAsync();
|
||||||
changeSet.closeAsync();
|
} else {
|
||||||
} else {
|
changeSet.close();
|
||||||
changeSet.close();
|
|
||||||
}
|
|
||||||
session.remember(changeSet.toEditSession(fp));
|
|
||||||
}
|
}
|
||||||
|
session.remember(changeSet.toEditSession(fp));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
|
@ -9,6 +9,7 @@ import org.bukkit.command.Command;
|
|||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Bukkit extension point.
|
* Bukkit extension point.
|
||||||
@ -55,15 +56,10 @@ public class VoxelSniper extends JavaPlugin {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean onCommand(CommandSender sender, Command command, String commandLabel, String[] args) {
|
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, String commandLabel, @NotNull String[] args) {
|
||||||
if (sender instanceof Player) {
|
if (sender instanceof Player) {
|
||||||
String[] arguments = args;
|
|
||||||
|
|
||||||
if (arguments == null) {
|
return voxelSniperListener.onCommand((Player) sender, args, command.getName());
|
||||||
arguments = new String[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
return voxelSniperListener.onCommand((Player) sender, arguments, command.getName());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
getLogger().info("Only players can execute VoxelSniper commands.");
|
getLogger().info("Only players can execute VoxelSniper commands.");
|
||||||
@ -90,7 +86,7 @@ public class VoxelSniper extends JavaPlugin {
|
|||||||
Player player = (Player) fp.parent;
|
Player player = (Player) fp.parent;
|
||||||
return onCommand(player, new Command("p") {
|
return onCommand(player, new Command("p") {
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
|
public boolean execute(@NotNull CommandSender sender, String commandLabel, @NotNull String[] args) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}, null, args);
|
}, null, args);
|
||||||
@ -103,7 +99,7 @@ public class VoxelSniper extends JavaPlugin {
|
|||||||
Player player = (Player) fp.parent;
|
Player player = (Player) fp.parent;
|
||||||
return onCommand(player, new Command("d") {
|
return onCommand(player, new Command("d") {
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
|
public boolean execute(@NotNull CommandSender sender, String commandLabel, @NotNull String[] args) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}, null, args);
|
}, null, args);
|
||||||
|
@ -15,21 +15,25 @@ public class BlockResetBrush extends Brush {
|
|||||||
|
|
||||||
static {
|
static {
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.SIGN);
|
BlockResetBrush.DENIED_UPDATES.add(Material.SIGN);
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.LEGACY_SIGN_POST);
|
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.WALL_SIGN);
|
BlockResetBrush.DENIED_UPDATES.add(Material.WALL_SIGN);
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.CHEST);
|
BlockResetBrush.DENIED_UPDATES.add(Material.CHEST);
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.FURNACE);
|
BlockResetBrush.DENIED_UPDATES.add(Material.FURNACE);
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.LEGACY_BURNING_FURNACE);
|
BlockResetBrush.DENIED_UPDATES.add(Material.REDSTONE_TORCH);
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.LEGACY_REDSTONE_TORCH_OFF);
|
BlockResetBrush.DENIED_UPDATES.add(Material.REDSTONE_WALL_TORCH);
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.LEGACY_REDSTONE_TORCH_ON);
|
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.REDSTONE_WIRE);
|
BlockResetBrush.DENIED_UPDATES.add(Material.REDSTONE_WIRE);
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.LEGACY_DIODE_BLOCK_OFF);
|
BlockResetBrush.DENIED_UPDATES.add(Material.OAK_DOOR);
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.LEGACY_DIODE_BLOCK_ON);
|
BlockResetBrush.DENIED_UPDATES.add(Material.DARK_OAK_DOOR);
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.LEGACY_WOODEN_DOOR);
|
BlockResetBrush.DENIED_UPDATES.add(Material.BIRCH_DOOR);
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.LEGACY_WOOD_DOOR);
|
BlockResetBrush.DENIED_UPDATES.add(Material.ACACIA_DOOR);
|
||||||
|
BlockResetBrush.DENIED_UPDATES.add(Material.SPRUCE_DOOR);
|
||||||
|
BlockResetBrush.DENIED_UPDATES.add(Material.JUNGLE_DOOR);
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.IRON_DOOR);
|
BlockResetBrush.DENIED_UPDATES.add(Material.IRON_DOOR);
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.LEGACY_IRON_DOOR_BLOCK);
|
BlockResetBrush.DENIED_UPDATES.add(Material.DARK_OAK_FENCE_GATE);
|
||||||
BlockResetBrush.DENIED_UPDATES.add(Material.LEGACY_FENCE_GATE);
|
BlockResetBrush.DENIED_UPDATES.add(Material.ACACIA_FENCE_GATE);
|
||||||
|
BlockResetBrush.DENIED_UPDATES.add(Material.BIRCH_FENCE_GATE);
|
||||||
|
BlockResetBrush.DENIED_UPDATES.add(Material.SPRUCE_FENCE_GATE);
|
||||||
|
BlockResetBrush.DENIED_UPDATES.add(Material.JUNGLE_FENCE_GATE);
|
||||||
|
BlockResetBrush.DENIED_UPDATES.add(Material.OAK_FENCE_GATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -39,7 +43,6 @@ public class BlockResetBrush extends Brush {
|
|||||||
this.setName("Block Reset Brush");
|
this.setName("Block Reset Brush");
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
private void applyBrush(final SnipeData v) {
|
private void applyBrush(final SnipeData v) {
|
||||||
for (int z = -v.getBrushSize(); z <= v.getBrushSize(); z++) {
|
for (int z = -v.getBrushSize(); z <= v.getBrushSize(); z++) {
|
||||||
for (int x = -v.getBrushSize(); x <= v.getBrushSize(); x++) {
|
for (int x = -v.getBrushSize(); x <= v.getBrushSize(); x++) {
|
||||||
|
@ -84,7 +84,7 @@ public class HeatRayBrush extends Brush {
|
|||||||
|
|
||||||
if (currentLocation.toVector().isInSphere(targetLocation, v.getBrushSize())) {
|
if (currentLocation.toVector().isInSphere(targetLocation, v.getBrushSize())) {
|
||||||
currentBlock = currentLocation.getBlock();
|
currentBlock = currentLocation.getBlock();
|
||||||
if (currentBlock == null || currentBlock.getType() == Material.CHEST) {
|
if (currentBlock.getType() == Material.CHEST) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -168,13 +168,13 @@ public class HeatRayBrush extends Brush {
|
|||||||
v.sendMessage(ChatColor.AQUA + "/b hr freq[float] -- Frequency parameter for the noise generator.");
|
v.sendMessage(ChatColor.AQUA + "/b hr freq[float] -- Frequency parameter for the noise generator.");
|
||||||
}
|
}
|
||||||
if (parameter.startsWith("oct")) {
|
if (parameter.startsWith("oct")) {
|
||||||
this.octaves = Integer.valueOf(parameter.replace("oct", ""));
|
this.octaves = Integer.parseInt(parameter.replace("oct", ""));
|
||||||
v.getVoxelMessage().custom(ChatColor.GREEN + "Octaves: " + this.octaves);
|
v.getVoxelMessage().custom(ChatColor.GREEN + "Octaves: " + this.octaves);
|
||||||
} else if (parameter.startsWith("amp")) {
|
} else if (parameter.startsWith("amp")) {
|
||||||
this.amplitude = Double.valueOf(parameter.replace("amp", ""));
|
this.amplitude = Double.parseDouble(parameter.replace("amp", ""));
|
||||||
v.getVoxelMessage().custom(ChatColor.GREEN + "Amplitude: " + this.amplitude);
|
v.getVoxelMessage().custom(ChatColor.GREEN + "Amplitude: " + this.amplitude);
|
||||||
} else if (parameter.startsWith("freq")) {
|
} else if (parameter.startsWith("freq")) {
|
||||||
this.frequency = Double.valueOf(parameter.replace("freq", ""));
|
this.frequency = Double.parseDouble(parameter.replace("freq", ""));
|
||||||
v.getVoxelMessage().custom(ChatColor.GREEN + "Frequency: " + this.frequency);
|
v.getVoxelMessage().custom(ChatColor.GREEN + "Frequency: " + this.frequency);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -151,13 +151,13 @@ public class MoveBrush extends Brush {
|
|||||||
v.getVoxelMessage().custom(ChatColor.AQUA + "Z direction set to: " + this.moveDirections[2]);
|
v.getVoxelMessage().custom(ChatColor.AQUA + "Z direction set to: " + this.moveDirections[2]);
|
||||||
}
|
}
|
||||||
if (par[i].toLowerCase().startsWith("x")) {
|
if (par[i].toLowerCase().startsWith("x")) {
|
||||||
this.moveDirections[0] = Integer.valueOf(par[i].substring(1));
|
this.moveDirections[0] = Integer.parseInt(par[i].substring(1));
|
||||||
v.getVoxelMessage().custom(ChatColor.AQUA + "X direction set to: " + this.moveDirections[0]);
|
v.getVoxelMessage().custom(ChatColor.AQUA + "X direction set to: " + this.moveDirections[0]);
|
||||||
} else if (par[i].toLowerCase().startsWith("y")) {
|
} else if (par[i].toLowerCase().startsWith("y")) {
|
||||||
this.moveDirections[1] = Integer.valueOf(par[i].substring(1));
|
this.moveDirections[1] = Integer.parseInt(par[i].substring(1));
|
||||||
v.getVoxelMessage().custom(ChatColor.AQUA + "Y direction set to: " + this.moveDirections[1]);
|
v.getVoxelMessage().custom(ChatColor.AQUA + "Y direction set to: " + this.moveDirections[1]);
|
||||||
} else if (par[i].toLowerCase().startsWith("z")) {
|
} else if (par[i].toLowerCase().startsWith("z")) {
|
||||||
this.moveDirections[2] = Integer.valueOf(par[i].substring(1));
|
this.moveDirections[2] = Integer.parseInt(par[i].substring(1));
|
||||||
v.getVoxelMessage().custom(ChatColor.AQUA + "Z direction set to: " + this.moveDirections[2]);
|
v.getVoxelMessage().custom(ChatColor.AQUA + "Z direction set to: " + this.moveDirections[2]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -200,12 +200,12 @@ public class MoveBrush extends Brush {
|
|||||||
public boolean calculateRegion() throws Exception {
|
public boolean calculateRegion() throws Exception {
|
||||||
if (this.location1 != null && this.location2 != null) {
|
if (this.location1 != null && this.location2 != null) {
|
||||||
if (this.location1.getWorld().equals(this.location2.getWorld())) {
|
if (this.location1.getWorld().equals(this.location2.getWorld())) {
|
||||||
final int lowX = ((this.location1.getBlockX() <= this.location2.getBlockX()) ? this.location1.getBlockX() : this.location2.getBlockX());
|
final int lowX = Math.min(this.location1.getBlockX(), this.location2.getBlockX());
|
||||||
final int lowY = (this.location1.getBlockY() <= this.location2.getBlockY()) ? this.location1.getBlockY() : this.location2.getBlockY();
|
final int lowY = Math.min(this.location1.getBlockY(), this.location2.getBlockY());
|
||||||
final int lowZ = (this.location1.getBlockZ() <= this.location2.getBlockZ()) ? this.location1.getBlockZ() : this.location2.getBlockZ();
|
final int lowZ = Math.min(this.location1.getBlockZ(), this.location2.getBlockZ());
|
||||||
final int highX = (this.location1.getBlockX() >= this.location2.getBlockX()) ? this.location1.getBlockX() : this.location2.getBlockX();
|
final int highX = Math.max(this.location1.getBlockX(), this.location2.getBlockX());
|
||||||
final int highY = (this.location1.getBlockY() >= this.location2.getBlockY()) ? this.location1.getBlockY() : this.location2.getBlockY();
|
final int highY = Math.max(this.location1.getBlockY(), this.location2.getBlockY());
|
||||||
final int highZ = (this.location1.getBlockZ() >= this.location2.getBlockZ()) ? this.location1.getBlockZ() : this.location2.getBlockZ();
|
final int highZ = Math.max(this.location1.getBlockZ(), this.location2.getBlockZ());
|
||||||
if (Math.abs(highX - lowX) * Math.abs(highZ - lowZ) * Math.abs(highY - lowY) > Selection.MAX_BLOCK_COUNT) {
|
if (Math.abs(highX - lowX) * Math.abs(highZ - lowZ) * Math.abs(highY - lowY) > Selection.MAX_BLOCK_COUNT) {
|
||||||
throw new Exception(ChatColor.RED + "Selection size above hardcoded limit, please use a smaller selection.");
|
throw new Exception(ChatColor.RED + "Selection size above hardcoded limit, please use a smaller selection.");
|
||||||
}
|
}
|
||||||
|
@ -39,10 +39,6 @@ public class OceanBrush extends Brush {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @param v
|
|
||||||
* @param undo
|
|
||||||
*/
|
|
||||||
protected final void oceanator(final SnipeData v, final Undo undo) {
|
protected final void oceanator(final SnipeData v, final Undo undo) {
|
||||||
final AsyncWorld world = this.getWorld();
|
final AsyncWorld world = this.getWorld();
|
||||||
|
|
||||||
@ -55,7 +51,7 @@ public class OceanBrush extends Brush {
|
|||||||
for (int z = minZ; z <= maxZ; z++) {
|
for (int z = minZ; z <= maxZ; z++) {
|
||||||
final int currentHeight = getHeight(x, z);
|
final int currentHeight = getHeight(x, z);
|
||||||
final int wLevelDiff = currentHeight - (this.waterLevel - 1);
|
final int wLevelDiff = currentHeight - (this.waterLevel - 1);
|
||||||
final int newSeaFloorLevel = ((this.waterLevel - wLevelDiff) >= LOW_CUT_LEVEL) ? this.waterLevel - wLevelDiff : LOW_CUT_LEVEL;
|
final int newSeaFloorLevel = Math.max((this.waterLevel - wLevelDiff), LOW_CUT_LEVEL);
|
||||||
|
|
||||||
final int highestY = this.getWorld().getHighestBlockYAt(x, z);
|
final int highestY = this.getWorld().getHighestBlockYAt(x, z);
|
||||||
|
|
||||||
|
@ -29,10 +29,8 @@ public class ScannerBrush extends Brush {
|
|||||||
private int clamp(final int value, final int min, final int max) {
|
private int clamp(final int value, final int min, final int max) {
|
||||||
if (value < min) {
|
if (value < min) {
|
||||||
return min;
|
return min;
|
||||||
} else if (value > max) {
|
|
||||||
return max;
|
|
||||||
} else {
|
} else {
|
||||||
return value;
|
return Math.min(value, max);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,12 +32,12 @@ public class SetBrush extends PerformBrush {
|
|||||||
this.block = null;
|
this.block = null;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
final int lowX = (this.block.getX() <= bl.getX()) ? this.block.getX() : bl.getX();
|
final int lowX = Math.min(this.block.getX(), bl.getX());
|
||||||
final int lowY = (this.block.getY() <= bl.getY()) ? this.block.getY() : bl.getY();
|
final int lowY = Math.min(this.block.getY(), bl.getY());
|
||||||
final int lowZ = (this.block.getZ() <= bl.getZ()) ? this.block.getZ() : bl.getZ();
|
final int lowZ = Math.min(this.block.getZ(), bl.getZ());
|
||||||
final int highX = (this.block.getX() >= bl.getX()) ? this.block.getX() : bl.getX();
|
final int highX = Math.max(this.block.getX(), bl.getX());
|
||||||
final int highY = (this.block.getY() >= bl.getY()) ? this.block.getY() : bl.getY();
|
final int highY = Math.max(this.block.getY(), bl.getY());
|
||||||
final int highZ = (this.block.getZ() >= bl.getZ()) ? this.block.getZ() : bl.getZ();
|
final int highZ = Math.max(this.block.getZ(), bl.getZ());
|
||||||
|
|
||||||
if (Math.abs(highX - lowX) * Math.abs(highZ - lowZ) * Math.abs(highY - lowY) > SELECTION_SIZE_MAX) {
|
if (Math.abs(highX - lowX) * Math.abs(highZ - lowZ) * Math.abs(highY - lowY) > SELECTION_SIZE_MAX) {
|
||||||
v.sendMessage(ChatColor.RED + "Selection size above hardcoded limit, please use a smaller selection.");
|
v.sendMessage(ChatColor.RED + "Selection size above hardcoded limit, please use a smaller selection.");
|
||||||
|
@ -29,12 +29,12 @@ public class SetRedstoneFlipBrush extends Brush {
|
|||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
this.undo = new Undo();
|
this.undo = new Undo();
|
||||||
final int lowX = (this.block.getX() <= bl.getX()) ? this.block.getX() : bl.getX();
|
final int lowX = Math.min(this.block.getX(), bl.getX());
|
||||||
final int lowY = (this.block.getY() <= bl.getY()) ? this.block.getY() : bl.getY();
|
final int lowY = Math.min(this.block.getY(), bl.getY());
|
||||||
final int lowZ = (this.block.getZ() <= bl.getZ()) ? this.block.getZ() : bl.getZ();
|
final int lowZ = Math.min(this.block.getZ(), bl.getZ());
|
||||||
final int highX = (this.block.getX() >= bl.getX()) ? this.block.getX() : bl.getX();
|
final int highX = Math.max(this.block.getX(), bl.getX());
|
||||||
final int highY = (this.block.getY() >= bl.getY()) ? this.block.getY() : bl.getY();
|
final int highY = Math.max(this.block.getY(), bl.getY());
|
||||||
final int highZ = (this.block.getZ() >= bl.getZ()) ? this.block.getZ() : bl.getZ();
|
final int highZ = Math.max(this.block.getZ(), bl.getZ());
|
||||||
|
|
||||||
for (int y = lowY; y <= highY; y++) {
|
for (int y = lowY; y <= highY; y++) {
|
||||||
for (int x = lowX; x <= highX; x++) {
|
for (int x = lowX; x <= highX; x++) {
|
||||||
|
@ -28,12 +28,12 @@ public class SetRedstoneRotateBrush extends Brush {
|
|||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
this.undo = new Undo();
|
this.undo = new Undo();
|
||||||
final int lowX = (this.block.getX() <= bl.getX()) ? this.block.getX() : bl.getX();
|
final int lowX = Math.min(this.block.getX(), bl.getX());
|
||||||
final int lowY = (this.block.getY() <= bl.getY()) ? this.block.getY() : bl.getY();
|
final int lowY = Math.min(this.block.getY(), bl.getY());
|
||||||
final int lowZ = (this.block.getZ() <= bl.getZ()) ? this.block.getZ() : bl.getZ();
|
final int lowZ = Math.min(this.block.getZ(), bl.getZ());
|
||||||
final int highX = (this.block.getX() >= bl.getX()) ? this.block.getX() : bl.getX();
|
final int highX = Math.max(this.block.getX(), bl.getX());
|
||||||
final int highY = (this.block.getY() >= bl.getY()) ? this.block.getY() : bl.getY();
|
final int highY = Math.max(this.block.getY(), bl.getY());
|
||||||
final int highZ = (this.block.getZ() >= bl.getZ()) ? this.block.getZ() : bl.getZ();
|
final int highZ = Math.max(this.block.getZ(), bl.getZ());
|
||||||
|
|
||||||
for (int y = lowY; y <= highY; y++) {
|
for (int y = lowY; y <= highY; y++) {
|
||||||
for (int x = lowX; x <= highX; x++) {
|
for (int x = lowX; x <= highX; x++) {
|
||||||
|
@ -37,18 +37,18 @@ public class ShellSetBrush extends Brush {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
final int lowX = (this.block.getX() <= bl.getX()) ? this.block.getX() : bl.getX();
|
final int lowX = Math.min(this.block.getX(), bl.getX());
|
||||||
final int lowY = (this.block.getY() <= bl.getY()) ? this.block.getY() : bl.getY();
|
final int lowY = Math.min(this.block.getY(), bl.getY());
|
||||||
final int lowZ = (this.block.getZ() <= bl.getZ()) ? this.block.getZ() : bl.getZ();
|
final int lowZ = Math.min(this.block.getZ(), bl.getZ());
|
||||||
final int highX = (this.block.getX() >= bl.getX()) ? this.block.getX() : bl.getX();
|
final int highX = Math.max(this.block.getX(), bl.getX());
|
||||||
final int highY = (this.block.getY() >= bl.getY()) ? this.block.getY() : bl.getY();
|
final int highY = Math.max(this.block.getY(), bl.getY());
|
||||||
final int highZ = (this.block.getZ() >= bl.getZ()) ? this.block.getZ() : bl.getZ();
|
final int highZ = Math.max(this.block.getZ(), bl.getZ());
|
||||||
|
|
||||||
if (Math.abs(highX - lowX) * Math.abs(highZ - lowZ) * Math.abs(highY - lowY) > MAX_SIZE) {
|
int selectionSize = Math.abs(highX - lowX) * Math.abs(highZ - lowZ) * Math.abs(highY - lowY);
|
||||||
|
if (selectionSize > MAX_SIZE) {
|
||||||
v.sendMessage(ChatColor.RED + "Selection size above hardcoded limit, please use a smaller selection.");
|
v.sendMessage(ChatColor.RED + "Selection size above hardcoded limit, please use a smaller selection.");
|
||||||
} else {
|
} else {
|
||||||
final ArrayList<AsyncBlock> blocks = new ArrayList<>(
|
final ArrayList<AsyncBlock> blocks = new ArrayList<>(selectionSize / 2);
|
||||||
((Math.abs(highX - lowX) * Math.abs(highZ - lowZ) * Math.abs(highY - lowY)) / 2));
|
|
||||||
for (int y = lowY; y <= highY; y++) {
|
for (int y = lowY; y <= highY; y++) {
|
||||||
for (int x = lowX; x <= highX; x++) {
|
for (int x = lowX; x <= highX; x++) {
|
||||||
for (int z = lowZ; z <= highZ; z++) {
|
for (int z = lowZ; z <= highZ; z++) {
|
||||||
|
@ -8,6 +8,7 @@ import org.bukkit.block.BlockState;
|
|||||||
import org.bukkit.block.Sign;
|
import org.bukkit.block.Sign;
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Overwrites signs. (Wiki:
|
* Overwrites signs. (Wiki:
|
||||||
@ -240,7 +241,7 @@ public class SignOverwriteBrush extends Brush {
|
|||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
String newText = "";
|
StringBuilder newText = new StringBuilder();
|
||||||
|
|
||||||
// go through the array until the next top level parameter is found
|
// go through the array until the next top level parameter is found
|
||||||
for (i++; i < params.length; i++) {
|
for (i++; i < params.length; i++) {
|
||||||
@ -250,16 +251,16 @@ public class SignOverwriteBrush extends Brush {
|
|||||||
i--;
|
i--;
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
newText += currentParameter + " ";
|
newText.append(currentParameter).append(" ");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
newText = ChatColor.translateAlternateColorCodes('&', newText);
|
newText = new StringBuilder(ChatColor.translateAlternateColorCodes('&', newText.toString()));
|
||||||
|
|
||||||
// remove last space or return if the string is empty and the user just wanted to set the status
|
// remove last space or return if the string is empty and the user just wanted to set the status
|
||||||
if (!newText.isEmpty() && newText.endsWith(" ")) {
|
if ((newText.length() > 0) && newText.toString().endsWith(" ")) {
|
||||||
newText = newText.substring(0, newText.length() - 1);
|
newText = new StringBuilder(newText.substring(0, newText.length() - 1));
|
||||||
} else if (newText.isEmpty()) {
|
} else if (newText.length() == 0) {
|
||||||
if (statusSet) {
|
if (statusSet) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
@ -269,10 +270,10 @@ public class SignOverwriteBrush extends Brush {
|
|||||||
// check the line length and cut the text if needed
|
// check the line length and cut the text if needed
|
||||||
if (newText.length() > MAX_SIGN_LINE_LENGTH) {
|
if (newText.length() > MAX_SIGN_LINE_LENGTH) {
|
||||||
v.sendMessage(ChatColor.RED + "Warning: Text on line " + lineNumber + " exceeds the maximum line length of " + MAX_SIGN_LINE_LENGTH + " characters. Your text will be cut.");
|
v.sendMessage(ChatColor.RED + "Warning: Text on line " + lineNumber + " exceeds the maximum line length of " + MAX_SIGN_LINE_LENGTH + " characters. Your text will be cut.");
|
||||||
newText = newText.substring(0, MAX_SIGN_LINE_LENGTH);
|
newText = new StringBuilder(newText.substring(0, MAX_SIGN_LINE_LENGTH));
|
||||||
}
|
}
|
||||||
|
|
||||||
this.signTextLines[lineIndex] = newText;
|
this.signTextLines[lineIndex] = newText.toString();
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,17 +299,13 @@ public class SignOverwriteBrush extends Brush {
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
store.createNewFile();
|
store.createNewFile();
|
||||||
FileWriter outFile = new FileWriter(store);
|
try (FileWriter outFile = new FileWriter(store); BufferedWriter outStream = new BufferedWriter(outFile)) {
|
||||||
BufferedWriter outStream = new BufferedWriter(outFile);
|
for (int i = 0; i < this.signTextLines.length; i++) {
|
||||||
|
outStream.write(this.signLinesEnabled[i] + "\n");
|
||||||
for (int i = 0; i < this.signTextLines.length; i++) {
|
outStream.write(this.signTextLines[i] + "\n");
|
||||||
outStream.write(this.signLinesEnabled[i] + "\n");
|
}
|
||||||
outStream.write(this.signTextLines[i] + "\n");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
outStream.close();
|
|
||||||
outFile.close();
|
|
||||||
|
|
||||||
v.sendMessage(ChatColor.BLUE + "File saved successfully.");
|
v.sendMessage(ChatColor.BLUE + "File saved successfully.");
|
||||||
} catch (IOException exception) {
|
} catch (IOException exception) {
|
||||||
v.sendMessage(ChatColor.RED + "Failed to save file. " + exception.getMessage());
|
v.sendMessage(ChatColor.RED + "Failed to save file. " + exception.getMessage());
|
||||||
@ -330,17 +327,12 @@ public class SignOverwriteBrush extends Brush {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try (FileReader inFile = new FileReader(store); BufferedReader inStream = new BufferedReader(inFile)) {
|
||||||
FileReader inFile = new FileReader(store);
|
|
||||||
BufferedReader inStream = new BufferedReader(inFile);
|
|
||||||
|
|
||||||
for (int i = 0; i < this.signTextLines.length; i++) {
|
for (int i = 0; i < this.signTextLines.length; i++) {
|
||||||
this.signLinesEnabled[i] = Boolean.valueOf(inStream.readLine());
|
this.signLinesEnabled[i] = Boolean.parseBoolean(inStream.readLine());
|
||||||
this.signTextLines[i] = inStream.readLine();
|
this.signTextLines[i] = inStream.readLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
inStream.close();
|
|
||||||
inFile.close();
|
|
||||||
|
|
||||||
v.sendMessage(ChatColor.BLUE + "File loaded successfully.");
|
v.sendMessage(ChatColor.BLUE + "File loaded successfully.");
|
||||||
} catch (IOException exception) {
|
} catch (IOException exception) {
|
||||||
@ -353,18 +345,14 @@ public class SignOverwriteBrush extends Brush {
|
|||||||
* Clears the internal text buffer. (Sets it to empty strings)
|
* Clears the internal text buffer. (Sets it to empty strings)
|
||||||
*/
|
*/
|
||||||
private void clearBuffer() {
|
private void clearBuffer() {
|
||||||
for (int i = 0; i < this.signTextLines.length; i++) {
|
Arrays.fill(this.signTextLines, "");
|
||||||
this.signTextLines[i] = "";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Resets line enabled states to enabled.
|
* Resets line enabled states to enabled.
|
||||||
*/
|
*/
|
||||||
private void resetStates() {
|
private void resetStates() {
|
||||||
for (int i = 0; i < this.signLinesEnabled.length; i++) {
|
Arrays.fill(this.signLinesEnabled, true);
|
||||||
this.signLinesEnabled[i] = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -203,7 +203,7 @@ public class StencilBrush extends Brush {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("UnstableApiUsage")
|
||||||
private void stencilSave(final SnipeData v) {
|
private void stencilSave(final SnipeData v) {
|
||||||
|
|
||||||
final File file = new File("plugins/VoxelSniper/stencils/" + this.filename + ".vstencil");
|
final File file = new File("plugins/VoxelSniper/stencils/" + this.filename + ".vstencil");
|
||||||
@ -223,9 +223,9 @@ public class StencilBrush extends Brush {
|
|||||||
Files.createParentDirs(file);
|
Files.createParentDirs(file);
|
||||||
file.createNewFile();
|
file.createNewFile();
|
||||||
final FaweOutputStream out = new FaweOutputStream(new DataOutputStream(new PGZIPOutputStream(new BufferedOutputStream(new FileOutputStream(file)))));
|
final FaweOutputStream out = new FaweOutputStream(new DataOutputStream(new PGZIPOutputStream(new BufferedOutputStream(new FileOutputStream(file)))));
|
||||||
int blockPositionX = (this.firstPoint[0] > this.secondPoint[0]) ? this.secondPoint[0] : this.firstPoint[0];
|
int blockPositionX = Math.min(this.firstPoint[0], this.secondPoint[0]);
|
||||||
int blockPositionZ = (this.firstPoint[1] > this.secondPoint[1]) ? this.secondPoint[1] : this.firstPoint[1];
|
int blockPositionZ = Math.min(this.firstPoint[1], this.secondPoint[1]);
|
||||||
int blockPositionY = (this.firstPoint[2] > this.secondPoint[2]) ? this.secondPoint[2] : this.firstPoint[2];
|
int blockPositionY = Math.min(this.firstPoint[2], this.secondPoint[2]);
|
||||||
out.writeShort(this.x);
|
out.writeShort(this.x);
|
||||||
out.writeShort(this.z);
|
out.writeShort(this.z);
|
||||||
out.writeShort(this.y);
|
out.writeShort(this.y);
|
||||||
|
@ -62,10 +62,10 @@ public class TriangleBrush extends PerformBrush {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void triangleP(final SnipeData v) {
|
private void triangleP(final SnipeData v) {
|
||||||
double lengthOne = 0;
|
double lengthOne;
|
||||||
double lengthTwo = 0;
|
double lengthTwo;
|
||||||
double lengthThree = 0;
|
double lengthThree;
|
||||||
double heronBig = 0;
|
double heronBig;
|
||||||
|
|
||||||
// Calculate slope vectors
|
// Calculate slope vectors
|
||||||
for (int i = 0; i < 3; i++) {
|
for (int i = 0; i < 3; i++) {
|
||||||
@ -85,7 +85,7 @@ public class TriangleBrush extends PerformBrush {
|
|||||||
lengthThree = Math.pow(Math.pow(this.vectorThree[0], 2) + Math.pow(this.vectorThree[1], 2) + Math.pow(this.vectorThree[2], 2), .5);
|
lengthThree = Math.pow(Math.pow(this.vectorThree[0], 2) + Math.pow(this.vectorThree[1], 2) + Math.pow(this.vectorThree[2], 2), .5);
|
||||||
|
|
||||||
// Bigger vector determines brush size
|
// Bigger vector determines brush size
|
||||||
final int brushSize = (int) Math.ceil((lengthOne > lengthTwo) ? lengthOne : lengthTwo);
|
final int brushSize = (int) Math.ceil(Math.max(lengthOne, lengthTwo));
|
||||||
|
|
||||||
// Calculate constant term
|
// Calculate constant term
|
||||||
final double planeConstant = this.normalVector[0] * this.coordsOne[0] + this.normalVector[1] * this.coordsOne[1] + this.normalVector[2] * this.coordsOne[2];
|
final double planeConstant = this.normalVector[0] * this.coordsOne[0] + this.normalVector[1] * this.coordsOne[1] + this.normalVector[2] * this.coordsOne[2];
|
||||||
|
@ -31,11 +31,7 @@ public class VoxelBrushToolCommand extends VoxelCommand {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (args.length == 3 && args[2] != null && !args[2].isEmpty()) {
|
if (args.length == 3 && args[2] != null && !args[2].isEmpty()) {
|
||||||
Material itemInHand = (player.getItemInHand() != null) ? player.getItemInHand().getType() : null;
|
Material itemInHand = player.getItemInHand().getType();
|
||||||
if (itemInHand == null) {
|
|
||||||
player.sendMessage("/btool assign <arrow|powder> <toolid>");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (sniper.setTool(args[2], action, itemInHand)) {
|
if (sniper.setTool(args[2], action, itemInHand)) {
|
||||||
player.sendMessage(itemInHand.name() + " has been assigned to '" + args[2] + "' as action " + action.name() + ".");
|
player.sendMessage(itemInHand.name() + " has been assigned to '" + args[2] + "' as action " + action.name() + ".");
|
||||||
} else {
|
} else {
|
||||||
@ -48,11 +44,7 @@ public class VoxelBrushToolCommand extends VoxelCommand {
|
|||||||
sniper.removeTool(args[1]);
|
sniper.removeTool(args[1]);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
Material itemInHand = (player.getItemInHand() != null) ? player.getItemInHand().getType() : null;
|
Material itemInHand = player.getItemInHand().getType();
|
||||||
if (itemInHand == null) {
|
|
||||||
player.sendMessage("Can't unassign empty hands.");
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
if (sniper.getCurrentToolId() == null) {
|
if (sniper.getCurrentToolId() == null) {
|
||||||
player.sendMessage("Can't unassign default tool.");
|
player.sendMessage("Can't unassign default tool.");
|
||||||
return true;
|
return true;
|
||||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren