mirror of
https://github.com/boy0001/FastAsyncWorldedit.git
synced 2024-11-25 03:55:35 +01:00
Fixes #502
This commit is contained in:
parent
093854f34e
commit
b5e500e716
@ -390,6 +390,20 @@ public class FaweBukkit implements IFawe, Listener {
|
||||
}
|
||||
return managers;
|
||||
}
|
||||
//
|
||||
// @EventHandler
|
||||
// public void onWorldLoad(WorldLoadEvent event) {
|
||||
// org.bukkit.World world = event.getWorld();
|
||||
// world.setKeepSpawnInMemory(false);
|
||||
// WorldServer nmsWorld = ((CraftWorld) world).getHandle();
|
||||
// ChunkProviderServer provider = nmsWorld.getChunkProviderServer();
|
||||
// try {
|
||||
// Field fieldChunkLoader = provider.getClass().getDeclaredField("chunkLoader");
|
||||
// ReflectionUtils.setFailsafeFieldValue(fieldChunkLoader, provider, new FaweChunkLoader());
|
||||
// } catch (Throwable e) {
|
||||
// e.printStackTrace();
|
||||
// }
|
||||
// }
|
||||
|
||||
@EventHandler
|
||||
public void onChunkLoad(ChunkLoadEvent event) {
|
||||
|
@ -353,7 +353,7 @@ public class BukkitChunk_1_10 extends CharFaweChunk<Chunk, BukkitQueue_1_10> {
|
||||
toRemove = new HashMap<>();
|
||||
}
|
||||
if (copy != null) {
|
||||
storeTile(tile.getValue(), tile.getKey());
|
||||
copy.storeTile(tile.getValue(), tile.getKey());
|
||||
}
|
||||
toRemove.put(tile.getKey(), tile.getValue());
|
||||
}
|
||||
|
@ -363,7 +363,7 @@ public class BukkitChunk_1_11 extends CharFaweChunk<Chunk, com.boydti.fawe.bukki
|
||||
toRemove = new HashMap<>();
|
||||
}
|
||||
if (copy != null) {
|
||||
storeTile(tile.getValue(), tile.getKey());
|
||||
copy.storeTile(tile.getValue(), tile.getKey());
|
||||
}
|
||||
toRemove.put(tile.getKey(), tile.getValue());
|
||||
}
|
||||
|
@ -17,6 +17,7 @@ import com.boydti.fawe.util.EditSessionBuilder;
|
||||
import com.boydti.fawe.util.MainUtil;
|
||||
import com.boydti.fawe.util.MemUtil;
|
||||
import com.boydti.fawe.util.SetQueue;
|
||||
import com.boydti.fawe.util.StringMan;
|
||||
import com.boydti.fawe.util.TaskManager;
|
||||
import com.boydti.fawe.util.WEManager;
|
||||
import com.boydti.fawe.wrappers.WorldWrapper;
|
||||
@ -211,9 +212,10 @@ public class FaweAPI {
|
||||
}
|
||||
|
||||
/**
|
||||
* If you just need things to look random, use this faster alternative
|
||||
* @return PseudoRandom
|
||||
* Use ThreadLocalRandom instead
|
||||
* @return
|
||||
*/
|
||||
@Deprecated
|
||||
public static PseudoRandom getFastRandom() {
|
||||
return new PseudoRandom();
|
||||
}
|
||||
|
@ -133,7 +133,7 @@ public class AnvilCommands {
|
||||
try {
|
||||
byte[] bytes = mca.getChunkCompressedBytes(offset);
|
||||
if (bytes == null) return;
|
||||
Runnable task = new Runnable() {
|
||||
Runnable task = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
|
@ -150,18 +150,6 @@ public class HeightMapMCAGenerator extends MCAWriter implements Extent {
|
||||
return true;
|
||||
}
|
||||
|
||||
private char get(char[][][] map, int x, int y, int z) {
|
||||
char[][] yMap = map[y];
|
||||
if (yMap == null) {
|
||||
return 0;
|
||||
}
|
||||
char[] zMap = yMap[z & 15];
|
||||
if (zMap == null) {
|
||||
return 0;
|
||||
}
|
||||
return zMap[x & 15];
|
||||
}
|
||||
|
||||
@Override
|
||||
public BaseBiome getBiome(Vector2D position) {
|
||||
int index = position.getBlockZ() * getWidth() + position.getBlockX();
|
||||
@ -247,62 +235,6 @@ public class HeightMapMCAGenerator extends MCAWriter implements Extent {
|
||||
}
|
||||
}
|
||||
|
||||
private void setOverlay(BufferedImage img, char combined, boolean white) {
|
||||
if (img.getWidth() != getWidth() || img.getHeight() != getLength()) throw new IllegalArgumentException("Input image dimensions do not match the current height map!");
|
||||
if (overlay == null) overlay = new char[getArea()];
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int height = img.getRGB(x, z) & 0xFF;
|
||||
if (height == 255 || height > 0 && white && PseudoRandom.random.nextInt(256) <= height) {
|
||||
overlay[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setMain(BufferedImage img, char combined, boolean white) {
|
||||
if (img.getWidth() != getWidth() || img.getHeight() != getLength()) throw new IllegalArgumentException("Input image dimensions do not match the current height map!");
|
||||
modifiedMain = true;
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int height = img.getRGB(x, z) & 0xFF;
|
||||
if (height == 255 || height > 0 && white && PseudoRandom.random.nextInt(256) <= height) {
|
||||
main[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setFloor(BufferedImage img, char combined, boolean white) {
|
||||
if (img.getWidth() != getWidth() || img.getHeight() != getLength()) throw new IllegalArgumentException("Input image dimensions do not match the current height map!");
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int height = img.getRGB(x, z) & 0xFF;
|
||||
if (height == 255 || height > 0 && white && PseudoRandom.random.nextInt(256) <= height) {
|
||||
floor[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setColumn(BufferedImage img, char combined, boolean white) {
|
||||
if (img.getWidth() != getWidth() || img.getHeight() != getLength()) throw new IllegalArgumentException("Input image dimensions do not match the current height map!");
|
||||
modifiedMain = true;
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int height = img.getRGB(x, z) & 0xFF;
|
||||
if (height == 255 || height > 0 && white && PseudoRandom.random.nextInt(256) <= height) {
|
||||
main[index] = combined;
|
||||
floor[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setBiome(Mask mask, byte biome) {
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
@ -318,70 +250,6 @@ public class HeightMapMCAGenerator extends MCAWriter implements Extent {
|
||||
}
|
||||
}
|
||||
|
||||
private void setOverlay(Mask mask, char combined) {
|
||||
int index = 0;
|
||||
if (overlay == null) overlay = new char[getArea()];
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
mutable.mutZ(z);
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int y = heights[index] & 0xFF;
|
||||
mutable.mutX(x);
|
||||
mutable.mutY(y);
|
||||
if (mask.test(mutable)) {
|
||||
overlay[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setFloor(Mask mask, char combined) {
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
mutable.mutZ(z);
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int y = heights[index] & 0xFF;
|
||||
mutable.mutX(x);
|
||||
mutable.mutY(y);
|
||||
if (mask.test(mutable)) {
|
||||
floor[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setMain(Mask mask, char combined) {
|
||||
modifiedMain = true;
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
mutable.mutZ(z);
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int y = heights[index] & 0xFF;
|
||||
mutable.mutX(x);
|
||||
mutable.mutY(y);
|
||||
if (mask.test(mutable)) {
|
||||
main[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setColumn(Mask mask, char combined) {
|
||||
modifiedMain = true;
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
mutable.mutZ(z);
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int y = heights[index] & 0xFF;
|
||||
mutable.mutX(x);
|
||||
mutable.mutY(y);
|
||||
if (mask.test(mutable)) {
|
||||
floor[index] = combined;
|
||||
main[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void setOverlay(BufferedImage img, Pattern pattern, boolean white) {
|
||||
if (pattern instanceof BlockPattern) {
|
||||
setOverlay(img, (char) ((BlockPattern) pattern).getBlock().getCombined(), white);
|
||||
@ -552,25 +420,6 @@ public class HeightMapMCAGenerator extends MCAWriter implements Extent {
|
||||
Arrays.fill(biomes, (byte) biome);
|
||||
}
|
||||
|
||||
private void setFloor(int value) {
|
||||
Arrays.fill(floor, (char) value);
|
||||
}
|
||||
|
||||
private void setColumn(int value) {
|
||||
setFloor(value);
|
||||
setMain(value);
|
||||
}
|
||||
|
||||
private void setMain(int value) {
|
||||
modifiedMain = true;
|
||||
Arrays.fill(main, (char) value);
|
||||
}
|
||||
|
||||
private void setOverlay(int value) {
|
||||
if (overlay == null) overlay = new char[getArea()];
|
||||
Arrays.fill(overlay, (char) value);
|
||||
}
|
||||
|
||||
public void setFloor(Pattern value) {
|
||||
if (value instanceof BlockPattern) {
|
||||
setFloor(((BlockPattern) value).getBlock().getCombined());
|
||||
@ -836,4 +685,155 @@ public class HeightMapMCAGenerator extends MCAWriter implements Extent {
|
||||
}
|
||||
return chunk;
|
||||
}
|
||||
|
||||
private char get(char[][][] map, int x, int y, int z) {
|
||||
char[][] yMap = map[y];
|
||||
if (yMap == null) {
|
||||
return 0;
|
||||
}
|
||||
char[] zMap = yMap[z & 15];
|
||||
if (zMap == null) {
|
||||
return 0;
|
||||
}
|
||||
return zMap[x & 15];
|
||||
}
|
||||
|
||||
private void setOverlay(Mask mask, char combined) {
|
||||
int index = 0;
|
||||
if (overlay == null) overlay = new char[getArea()];
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
mutable.mutZ(z);
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int y = heights[index] & 0xFF;
|
||||
mutable.mutX(x);
|
||||
mutable.mutY(y);
|
||||
if (mask.test(mutable)) {
|
||||
overlay[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setFloor(Mask mask, char combined) {
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
mutable.mutZ(z);
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int y = heights[index] & 0xFF;
|
||||
mutable.mutX(x);
|
||||
mutable.mutY(y);
|
||||
if (mask.test(mutable)) {
|
||||
floor[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setMain(Mask mask, char combined) {
|
||||
modifiedMain = true;
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
mutable.mutZ(z);
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int y = heights[index] & 0xFF;
|
||||
mutable.mutX(x);
|
||||
mutable.mutY(y);
|
||||
if (mask.test(mutable)) {
|
||||
main[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setColumn(Mask mask, char combined) {
|
||||
modifiedMain = true;
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
mutable.mutZ(z);
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int y = heights[index] & 0xFF;
|
||||
mutable.mutX(x);
|
||||
mutable.mutY(y);
|
||||
if (mask.test(mutable)) {
|
||||
floor[index] = combined;
|
||||
main[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setFloor(int value) {
|
||||
Arrays.fill(floor, (char) value);
|
||||
}
|
||||
|
||||
private void setColumn(int value) {
|
||||
setFloor(value);
|
||||
setMain(value);
|
||||
}
|
||||
|
||||
private void setMain(int value) {
|
||||
modifiedMain = true;
|
||||
Arrays.fill(main, (char) value);
|
||||
}
|
||||
|
||||
private void setOverlay(int value) {
|
||||
if (overlay == null) overlay = new char[getArea()];
|
||||
Arrays.fill(overlay, (char) value);
|
||||
}
|
||||
|
||||
private void setOverlay(BufferedImage img, char combined, boolean white) {
|
||||
if (img.getWidth() != getWidth() || img.getHeight() != getLength()) throw new IllegalArgumentException("Input image dimensions do not match the current height map!");
|
||||
if (overlay == null) overlay = new char[getArea()];
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int height = img.getRGB(x, z) & 0xFF;
|
||||
if (height == 255 || height > 0 && white && PseudoRandom.random.nextInt(256) <= height) {
|
||||
overlay[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setMain(BufferedImage img, char combined, boolean white) {
|
||||
if (img.getWidth() != getWidth() || img.getHeight() != getLength()) throw new IllegalArgumentException("Input image dimensions do not match the current height map!");
|
||||
modifiedMain = true;
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int height = img.getRGB(x, z) & 0xFF;
|
||||
if (height == 255 || height > 0 && white && PseudoRandom.random.nextInt(256) <= height) {
|
||||
main[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setFloor(BufferedImage img, char combined, boolean white) {
|
||||
if (img.getWidth() != getWidth() || img.getHeight() != getLength()) throw new IllegalArgumentException("Input image dimensions do not match the current height map!");
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int height = img.getRGB(x, z) & 0xFF;
|
||||
if (height == 255 || height > 0 && white && PseudoRandom.random.nextInt(256) <= height) {
|
||||
floor[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void setColumn(BufferedImage img, char combined, boolean white) {
|
||||
if (img.getWidth() != getWidth() || img.getHeight() != getLength()) throw new IllegalArgumentException("Input image dimensions do not match the current height map!");
|
||||
modifiedMain = true;
|
||||
int index = 0;
|
||||
for (int z = 0; z < getLength(); z++) {
|
||||
for (int x = 0; x < getWidth(); x++, index++){
|
||||
int height = img.getRGB(x, z) & 0xFF;
|
||||
if (height == 255 || height > 0 && white && PseudoRandom.random.nextInt(256) <= height) {
|
||||
main[index] = combined;
|
||||
floor[index] = combined;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,14 +2,16 @@ package com.boydti.fawe.object;
|
||||
|
||||
import com.sk89q.jnbt.NBTInputStream;
|
||||
import com.sk89q.jnbt.NamedTag;
|
||||
import java.io.DataInputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
public class FaweInputStream extends InputStream {
|
||||
public class FaweInputStream extends DataInputStream {
|
||||
|
||||
private final InputStream parent;
|
||||
|
||||
public FaweInputStream(InputStream parent) {
|
||||
super(parent);
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
@ -17,49 +19,6 @@ public class FaweInputStream extends InputStream {
|
||||
return parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int read() throws IOException {
|
||||
return parent.read();
|
||||
}
|
||||
|
||||
public long readLong() throws IOException {
|
||||
return (long)
|
||||
(read() << 64) +
|
||||
(read() << 56) +
|
||||
(read() << 48) +
|
||||
(read() << 36) +
|
||||
(read() << 24) +
|
||||
(read() << 16) +
|
||||
(read() << 8) +
|
||||
(read());
|
||||
}
|
||||
|
||||
public int readInt() throws IOException {
|
||||
return (int)
|
||||
(read() << 24) +
|
||||
(read() << 16) +
|
||||
(read() << 8) +
|
||||
(read());
|
||||
}
|
||||
|
||||
public short readShort() throws IOException {
|
||||
return (short) (
|
||||
(read() << 8) +
|
||||
read());
|
||||
}
|
||||
|
||||
public byte readByte() throws IOException {
|
||||
return (byte) read();
|
||||
}
|
||||
|
||||
public int readUnsignedByte() throws IOException {
|
||||
return read();
|
||||
}
|
||||
|
||||
public int readUnsignedShort() throws IOException {
|
||||
return (int) readShort() & 0xFFFF;
|
||||
}
|
||||
|
||||
public int readMedium() throws IOException {
|
||||
return (int) (
|
||||
(read() << 16) +
|
||||
|
@ -2,14 +2,16 @@ package com.boydti.fawe.object;
|
||||
|
||||
import com.sk89q.jnbt.NBTOutputStream;
|
||||
import com.sk89q.jnbt.Tag;
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.OutputStream;
|
||||
|
||||
public class FaweOutputStream extends OutputStream {
|
||||
public class FaweOutputStream extends DataOutputStream {
|
||||
|
||||
private final OutputStream parent;
|
||||
|
||||
public FaweOutputStream(OutputStream parent) {
|
||||
super(parent);
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
@ -17,35 +19,12 @@ public class FaweOutputStream extends OutputStream {
|
||||
return parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void write(int b) throws IOException {
|
||||
parent.write(b);
|
||||
}
|
||||
|
||||
public void write(int b, int amount) throws IOException {
|
||||
for (int i = 0; i < amount; i++) {
|
||||
write(b);
|
||||
}
|
||||
}
|
||||
|
||||
public void writeLong(long l) throws IOException {
|
||||
write((byte) (l >>> 64));
|
||||
write((byte) (l >>> 56));
|
||||
write((byte) (l >>> 48));
|
||||
write((byte) (l >>> 36));
|
||||
write((byte) (l >>> 24));
|
||||
write((byte) (l >>> 16));
|
||||
write((byte) (l >>> 8));
|
||||
write((byte) (l));
|
||||
}
|
||||
|
||||
public void writeInt(int i) throws IOException {
|
||||
write((byte) (i >>> 24));
|
||||
write((byte) (i >>> 16));
|
||||
write((byte) (i >>> 8));
|
||||
write((byte) (i));
|
||||
}
|
||||
|
||||
public void writeShort(short s) throws IOException {
|
||||
write((byte) (s >>> 8));
|
||||
write((byte) (s));
|
||||
|
@ -1,5 +1,6 @@
|
||||
package com.boydti.fawe.object.brush;
|
||||
|
||||
import com.boydti.fawe.object.brush.visualization.VisualExtent;
|
||||
import com.sk89q.worldedit.EditSession;
|
||||
import com.sk89q.worldedit.MaxChangedBlocksException;
|
||||
import com.sk89q.worldedit.Vector;
|
||||
@ -19,12 +20,13 @@ public class LineBrush implements Brush, ResettableTool {
|
||||
|
||||
@Override
|
||||
public void build(EditSession editSession, Vector position, final Pattern pattern, double size) throws MaxChangedBlocksException {
|
||||
boolean visual = (editSession.getExtent() instanceof VisualExtent);
|
||||
if (pos1 == null) {
|
||||
pos1 = position;
|
||||
if (!visual) pos1 = position;
|
||||
return;
|
||||
}
|
||||
editSession.drawLine(pattern, pos1, position, size, !shell, flat);
|
||||
if (!select) {
|
||||
if (!select && !visual) {
|
||||
pos1 = null;
|
||||
return;
|
||||
}
|
||||
|
@ -354,21 +354,16 @@ public class PlatformManager {
|
||||
|
||||
// At this time, only handle interaction from players
|
||||
if (actor instanceof Player) {
|
||||
final Player player = new LocationMaskedPlayerWrapper(PlayerWrapper.wrap((Player) actor), ((Player) actor).getLocation());
|
||||
final LocalSession session = worldEdit.getSessionManager().get(actor);
|
||||
|
||||
Player playerActor = (Player) actor;
|
||||
if (event.getType() == Interaction.HIT) {
|
||||
if (player.getItemInHand() == getConfiguration().wandItem) {
|
||||
if (!session.isToolControlEnabled()) {
|
||||
if (session.isToolControlEnabled() && playerActor.getItemInHand() == getConfiguration().wandItem) {
|
||||
FawePlayer<?> fp = FawePlayer.wrap(playerActor);
|
||||
if (!fp.hasPermission("worldedit.selection.pos")) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!actor.hasPermission("worldedit.selection.pos")) {
|
||||
return;
|
||||
}
|
||||
|
||||
final RegionSelector selector = session.getRegionSelector(player.getWorld());
|
||||
FawePlayer<?> fp = FawePlayer.wrap(player);
|
||||
final RegionSelector selector = session.getRegionSelector(playerActor.getWorld());
|
||||
final Player player = new LocationMaskedPlayerWrapper(PlayerWrapper.wrap((Player) actor), ((Player) actor).getLocation());
|
||||
fp.runAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@ -381,10 +376,11 @@ public class PlatformManager {
|
||||
event.setCancelled(true);
|
||||
return;
|
||||
}
|
||||
if (player.isHoldingPickAxe() && session.hasSuperPickAxe()) {
|
||||
if (session.hasSuperPickAxe() && playerActor.isHoldingPickAxe()) {
|
||||
final BlockTool superPickaxe = session.getSuperPickaxe();
|
||||
if (superPickaxe != null && superPickaxe.canUse(player)) {
|
||||
FawePlayer<?> fp = FawePlayer.wrap(player);
|
||||
if (superPickaxe != null && superPickaxe.canUse(playerActor)) {
|
||||
FawePlayer<?> fp = FawePlayer.wrap(playerActor);
|
||||
final Player player = new LocationMaskedPlayerWrapper(PlayerWrapper.wrap((Player) actor), ((Player) actor).getLocation());
|
||||
fp.runAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@ -395,10 +391,11 @@ public class PlatformManager {
|
||||
return;
|
||||
}
|
||||
}
|
||||
final Tool tool = session.getTool(player);
|
||||
final Tool tool = session.getTool(playerActor);
|
||||
if (tool != null && tool instanceof DoubleActionBlockTool) {
|
||||
if (tool.canUse(player)) {
|
||||
FawePlayer<?> fp = FawePlayer.wrap(player);
|
||||
if (tool.canUse(playerActor)) {
|
||||
FawePlayer<?> fp = FawePlayer.wrap(playerActor);
|
||||
final Player player = new LocationMaskedPlayerWrapper(PlayerWrapper.wrap((Player) actor), ((Player) actor).getLocation());
|
||||
fp.runAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@ -409,16 +406,13 @@ public class PlatformManager {
|
||||
}
|
||||
}
|
||||
} else if (event.getType() == Interaction.OPEN) {
|
||||
if (player.getItemInHand() == getConfiguration().wandItem) {
|
||||
if (!session.isToolControlEnabled()) {
|
||||
if (session.isToolControlEnabled() && playerActor.getItemInHand() == getConfiguration().wandItem) {
|
||||
FawePlayer<?> fp = FawePlayer.wrap(playerActor);
|
||||
if (!fp.hasPermission("worldedit.selection.pos")) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (!actor.hasPermission("worldedit.selection.pos")) {
|
||||
return;
|
||||
}
|
||||
final RegionSelector selector = session.getRegionSelector(player.getWorld());
|
||||
FawePlayer<?> fp = FawePlayer.wrap(player);
|
||||
final RegionSelector selector = session.getRegionSelector(playerActor.getWorld());
|
||||
final Player player = new LocationMaskedPlayerWrapper(PlayerWrapper.wrap((Player) actor), ((Player) actor).getLocation());
|
||||
fp.runAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@ -432,10 +426,11 @@ public class PlatformManager {
|
||||
return;
|
||||
}
|
||||
|
||||
final Tool tool = session.getTool(player);
|
||||
final Tool tool = session.getTool(playerActor);
|
||||
if (tool != null && tool instanceof BlockTool) {
|
||||
if (tool.canUse(player)) {
|
||||
FawePlayer<?> fp = FawePlayer.wrap(player);
|
||||
if (tool.canUse(playerActor)) {
|
||||
FawePlayer<?> fp = FawePlayer.wrap(playerActor);
|
||||
final Player player = new LocationMaskedPlayerWrapper(PlayerWrapper.wrap((Player) actor), ((Player) actor).getLocation());
|
||||
fp.runAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
|
Loading…
Reference in New Issue
Block a user