mirror of
https://github.com/IntellectualSites/PlotSquared.git
synced 2025-01-19 16:59:36 +01:00
Fix unable to locate sign issue.
This commit is contained in:
parent
63888827aa
commit
98a4a9889e
@ -27,11 +27,14 @@ import java.util.HashSet;
|
|||||||
|
|
||||||
import com.intellectualcrafters.plot.PlotSquared;
|
import com.intellectualcrafters.plot.PlotSquared;
|
||||||
import com.intellectualcrafters.plot.commands.Template;
|
import com.intellectualcrafters.plot.commands.Template;
|
||||||
|
import com.intellectualcrafters.plot.object.ChunkLoc;
|
||||||
import com.intellectualcrafters.plot.object.FileBytes;
|
import com.intellectualcrafters.plot.object.FileBytes;
|
||||||
import com.intellectualcrafters.plot.object.Location;
|
import com.intellectualcrafters.plot.object.Location;
|
||||||
import com.intellectualcrafters.plot.object.Plot;
|
import com.intellectualcrafters.plot.object.Plot;
|
||||||
import com.intellectualcrafters.plot.object.PlotBlock;
|
import com.intellectualcrafters.plot.object.PlotBlock;
|
||||||
import com.intellectualcrafters.plot.object.PlotWorld;
|
import com.intellectualcrafters.plot.object.PlotWorld;
|
||||||
|
import com.intellectualcrafters.plot.object.PseudoRandom;
|
||||||
|
import com.intellectualcrafters.plot.util.ChunkManager;
|
||||||
import com.intellectualcrafters.plot.util.MainUtil;
|
import com.intellectualcrafters.plot.util.MainUtil;
|
||||||
import com.intellectualcrafters.plot.util.TaskManager;
|
import com.intellectualcrafters.plot.util.TaskManager;
|
||||||
import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
|
import com.intellectualcrafters.plot.util.bukkit.BukkitUtil;
|
||||||
@ -103,29 +106,6 @@ public class HybridPlotManager extends ClassicPlotManager {
|
|||||||
TaskManager.runTaskLater(new Runnable() {
|
TaskManager.runTaskLater(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if ((pos2.getX() - pos1.getX()) < 48) {
|
|
||||||
MainUtil.setSimpleCuboid(world, new Location(world, pos1.getX(), 0, pos1.getZ()), new Location(world, pos2.getX() + 1, 1, pos2.getZ() + 1), new PlotBlock((short) 7, (byte) 0));
|
|
||||||
TaskManager.runTaskLater(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
MainUtil.setSimpleCuboid(world, new Location(world, pos1.getX(), dpw.PLOT_HEIGHT + 1, pos1.getZ()), new Location(world, pos2.getX() + 1, maxy + 1, pos2.getZ() + 1), new PlotBlock((short) 0, (byte) 0));
|
|
||||||
TaskManager.runTaskLater(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
MainUtil.setCuboid(world, new Location(world, pos1.getX(), 1, pos1.getZ()), new Location(world, pos2.getX() + 1, dpw.PLOT_HEIGHT, pos2.getZ() + 1), filling);
|
|
||||||
TaskManager.runTaskLater(new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
MainUtil.setCuboid(world, new Location(world, pos1.getX(), dpw.PLOT_HEIGHT, pos1.getZ()), new Location(world, pos2.getX() + 1, dpw.PLOT_HEIGHT + 1, pos2.getZ() + 1), plotfloor);
|
|
||||||
TaskManager.runTask(whenDone);
|
|
||||||
}
|
|
||||||
}, 5);
|
|
||||||
}
|
|
||||||
}, 5);
|
|
||||||
}
|
|
||||||
}, 5);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
final int startX = (pos1.getX() / 16) * 16;
|
final int startX = (pos1.getX() / 16) * 16;
|
||||||
final int startZ = (pos1.getZ() / 16) * 16;
|
final int startZ = (pos1.getZ() / 16) * 16;
|
||||||
final int chunkX = 16 + pos2.getX();
|
final int chunkX = 16 + pos2.getX();
|
||||||
@ -166,7 +146,14 @@ public class HybridPlotManager extends ClassicPlotManager {
|
|||||||
} else if ((mx.getZ() < (j + 15)) || (mx.getX() < (i + 15))) {
|
} else if ((mx.getZ() < (j + 15)) || (mx.getX() < (i + 15))) {
|
||||||
mx = new Location(world, Math.min(i + 16, plotMaxX), 0, Math.min(j + 16, plotMaxZ));
|
mx = new Location(world, Math.min(i + 16, plotMaxX), 0, Math.min(j + 16, plotMaxZ));
|
||||||
}
|
}
|
||||||
BukkitUtil.regenerateChunk(world, i / 16, j / 16);
|
final int I = i;
|
||||||
|
final int J = j;
|
||||||
|
TaskManager.runTaskLater(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
BukkitUtil.regenerateChunk(world, I / 16, J / 16);
|
||||||
|
}
|
||||||
|
}, PseudoRandom.random(40));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
final Location max = mx;
|
final Location max = mx;
|
||||||
|
@ -157,11 +157,13 @@ public class MainUtil {
|
|||||||
|
|
||||||
public static void update(final Location loc) {
|
public static void update(final Location loc) {
|
||||||
final String world = loc.getWorld();
|
final String world = loc.getWorld();
|
||||||
|
int ox = loc.getX() >> 4;
|
||||||
|
int oz = loc.getX() >> 4;
|
||||||
final ArrayList<ChunkLoc> chunks = new ArrayList<>();
|
final ArrayList<ChunkLoc> chunks = new ArrayList<>();
|
||||||
final int distance = BukkitUtil.getViewDistance();
|
final int distance = BukkitUtil.getViewDistance();
|
||||||
for (int cx = -distance; cx < distance; cx++) {
|
for (int cx = -distance; cx <= distance; cx++) {
|
||||||
for (int cz = -distance; cz < distance; cz++) {
|
for (int cz = -distance; cz <= distance; cz++) {
|
||||||
final ChunkLoc chunk = new ChunkLoc(cx, cz);
|
final ChunkLoc chunk = new ChunkLoc(ox + cx, oz + cz);
|
||||||
chunks.add(chunk);
|
chunks.add(chunk);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -28,6 +28,7 @@ import org.bukkit.Chunk;
|
|||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
|
||||||
|
import com.intellectualcrafters.plot.object.ChunkLoc;
|
||||||
import com.intellectualcrafters.plot.util.MainUtil;
|
import com.intellectualcrafters.plot.util.MainUtil;
|
||||||
import com.intellectualcrafters.plot.util.ReflectionUtils.RefClass;
|
import com.intellectualcrafters.plot.util.ReflectionUtils.RefClass;
|
||||||
import com.intellectualcrafters.plot.util.ReflectionUtils.RefConstructor;
|
import com.intellectualcrafters.plot.util.ReflectionUtils.RefConstructor;
|
||||||
@ -64,6 +65,8 @@ public class SetBlockFast_1_8 extends BukkitSetBlockManager {
|
|||||||
methodA = classChunk.getMethod("a", classBlockPosition, classIBlockData);
|
methodA = classChunk.getMethod("a", classBlockPosition, classIBlockData);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private ChunkLoc lastLoc = null;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set the block at the location
|
* Set the block at the location
|
||||||
*
|
*
|
||||||
@ -76,16 +79,28 @@ public class SetBlockFast_1_8 extends BukkitSetBlockManager {
|
|||||||
*
|
*
|
||||||
* @return true
|
* @return true
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
@Override
|
@Override
|
||||||
public void set(final World world, final int x, final int y, final int z, final int id, final byte data) {
|
public void set(final World world, final int x, final int y, final int z, final int id, final byte data) {
|
||||||
|
// Start blockstate workaround //
|
||||||
switch (id) {
|
switch (id) {
|
||||||
case 54:
|
case 54:
|
||||||
case 130:
|
case 130:
|
||||||
case 146:
|
case 142:
|
||||||
case 27:
|
case 27:
|
||||||
|
case 137:
|
||||||
|
case 52:
|
||||||
|
case 154:
|
||||||
|
case 84:
|
||||||
|
case 25:
|
||||||
|
case 144:
|
||||||
|
case 138:
|
||||||
|
case 176:
|
||||||
|
case 177:
|
||||||
case 63:
|
case 63:
|
||||||
case 68:
|
case 68:
|
||||||
case 313:
|
case 323:
|
||||||
|
case 117:
|
||||||
case 28:
|
case 28:
|
||||||
case 66:
|
case 66:
|
||||||
case 157:
|
case 157:
|
||||||
@ -114,6 +129,66 @@ public class SetBlockFast_1_8 extends BukkitSetBlockManager {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
int currentId = world.getBlockAt(x, y, z).getTypeId();
|
||||||
|
if (currentId == id) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
switch(currentId) {
|
||||||
|
case 54:
|
||||||
|
case 130:
|
||||||
|
case 142:
|
||||||
|
case 27:
|
||||||
|
case 137:
|
||||||
|
case 52:
|
||||||
|
case 154:
|
||||||
|
case 84:
|
||||||
|
case 25:
|
||||||
|
case 144:
|
||||||
|
case 138:
|
||||||
|
case 176:
|
||||||
|
case 177:
|
||||||
|
case 63:
|
||||||
|
case 68:
|
||||||
|
case 323:
|
||||||
|
case 117:
|
||||||
|
case 28:
|
||||||
|
case 66:
|
||||||
|
case 157:
|
||||||
|
case 61:
|
||||||
|
case 62:
|
||||||
|
case 158:
|
||||||
|
case 23:
|
||||||
|
case 123:
|
||||||
|
case 124:
|
||||||
|
case 29:
|
||||||
|
case 33:
|
||||||
|
case 151:
|
||||||
|
case 178: {
|
||||||
|
final Block block = world.getBlockAt(x, y, z);
|
||||||
|
if (block.getData() == data) {
|
||||||
|
if (block.getTypeId() != id) {
|
||||||
|
block.setTypeId(id, false);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (block.getTypeId() == id) {
|
||||||
|
block.setData(data, false);
|
||||||
|
} else {
|
||||||
|
block.setTypeIdAndData(id, data, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// End blockstate workaround //
|
||||||
|
|
||||||
|
int X = x >> 4;
|
||||||
|
int Z = z >> 4;
|
||||||
|
ChunkLoc loc = new ChunkLoc(X, Z);
|
||||||
|
if (!loc.equals(lastLoc)) {
|
||||||
|
world.loadChunk(X, Z, false);
|
||||||
|
lastLoc = loc;
|
||||||
|
}
|
||||||
|
// check sign
|
||||||
final Object w = methodGetHandle.of(world).call();
|
final Object w = methodGetHandle.of(world).call();
|
||||||
final Object chunk = methodGetChunkAt.of(w).call(x >> 4, z >> 4);
|
final Object chunk = methodGetChunkAt.of(w).call(x >> 4, z >> 4);
|
||||||
final Object pos = constructorBlockPosition.create(x & 0x0f, y, z & 0x0f);
|
final Object pos = constructorBlockPosition.create(x & 0x0f, y, z & 0x0f);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user