3
0
Mirror von https://github.com/IntellectualSites/FastAsyncWorldEdit.git synchronisiert 2024-11-07 12:00:07 +01:00
Dieser Commit ist enthalten in:
matt 2019-04-01 21:28:49 -04:00
Ursprung 86ce762982
Commit c997a2583c
10 geänderte Dateien mit 81 neuen und 120 gelöschten Zeilen

Datei anzeigen

@ -103,7 +103,7 @@ public class BukkitImageListener implements Listener {
if (event.getHand() == EquipmentSlot.OFF_HAND) return;
} catch (NoSuchFieldError | NoSuchMethodError ignored) {}
List<Block> target = player.getLastTwoTargetBlocks((Set<Material>) null, 100);
List<Block> target = player.getLastTwoTargetBlocks(null, 100);
if (target.isEmpty()) return;
Block targetBlock = target.get(0);
@ -151,7 +151,7 @@ public class BukkitImageListener implements Listener {
if (generator == null) return null;
ImageViewer viewer = generator.getImageViewer();
if (viewer == null || !(viewer instanceof BukkitImageViewer)) return null;
if (!(viewer instanceof BukkitImageViewer)) return null;
BukkitImageViewer biv = (BukkitImageViewer) viewer;
return biv;
@ -185,12 +185,7 @@ public class BukkitImageListener implements Listener {
if (frames == null || tool == null) {
viewer.selectFrame(itemFrame);
player.updateInventory();
TaskManager.IMP.laterAsync(new Runnable() {
@Override
public void run() {
viewer.view(generator);
}
}, 1);
TaskManager.IMP.laterAsync(() -> viewer.view(generator), 1);
return;
}
@ -250,26 +245,23 @@ public class BukkitImageListener implements Listener {
if (worldX < 0 || worldX > width || worldZ < 0 || worldZ > length) return;
fp.runAction(new Runnable() {
@Override
public void run() {
BlockVector3 wPos = BlockVector3.at(worldX, 0, worldZ);
viewer.refresh();
int topY = generator.getNearestSurfaceTerrainBlock(wPos.getBlockX(), wPos.getBlockZ(), 255, 0, 255);
wPos = wPos.withY(topY);
fp.runAction(() -> {
BlockVector3 wPos = BlockVector3.at(worldX, 0, worldZ);
viewer.refresh();
int topY = generator.getNearestSurfaceTerrainBlock(wPos.getBlockX(), wPos.getBlockZ(), 255, 0, 255);
wPos = wPos.withY(topY);
EditSession es = new EditSessionBuilder(fp.getWorld()).player(fp).combineStages(false).autoQueue(false).blockBag(null).limitUnlimited().build();
ExtentTraverser last = new ExtentTraverser(es.getExtent()).last();
if (last.get() instanceof FastWorldEditExtent) last = last.previous();
last.setNext(generator);
try {
brush.build(es, wPos, context.getMaterial(), context.getSize());
} catch (WorldEditException e) {
e.printStackTrace();
}
es.flushQueue();
viewer.view(generator);
EditSession es = new EditSessionBuilder(fp.getWorld()).player(fp).combineStages(false).autoQueue(false).blockBag(null).limitUnlimited().build();
ExtentTraverser last = new ExtentTraverser(es.getExtent()).last();
if (last.get() instanceof FastWorldEditExtent) last = last.previous();
last.setNext(generator);
try {
brush.build(es, wPos, context.getMaterial(), context.getSize());
} catch (WorldEditException e) {
e.printStackTrace();
}
es.flushQueue();
viewer.view(generator);
}, true, true);

Datei anzeigen

@ -90,17 +90,13 @@ public class CFIPacketListener implements Listener {
PlayerInventory inv = plr.getInventory();
ItemStack hand = enumHand == EnumWrappers.Hand.MAIN_HAND ? inv.getItemInMainHand() : inv.getItemInOffHand();
if (hand != null && hand.getType().isBlock()) {
switch (hand.getType()) {
case AIR:
case CAVE_AIR:
case VOID_AIR:
break;
default:
BlockStateHolder block = BukkitAdapter.asBlockState(hand);
if (block != null) {
gen.setBlock(pt, block);
return;
}
Material type = hand.getType();
if (!type.isEmpty()) {
BlockStateHolder block = BukkitAdapter.asBlockState(hand);
if (block != null) {
gen.setBlock(pt, block);
return;
}
}
}
pt = getRelPos(event, gen);
@ -201,9 +197,7 @@ public class CFIPacketListener implements Listener {
reply.getIntegers().write(0, id);
try {
protocolmanager.recieveClientPacket(player, reply);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
} catch (IllegalAccessException | InvocationTargetException e) {
e.printStackTrace();
}
event.setCancelled(true);

Datei anzeigen

@ -8,7 +8,8 @@ public class VaultUtil {
public final Permission permission;
public VaultUtil() {
final RegisteredServiceProvider<Permission> permissionProvider = Bukkit.getServer().getServicesManager().getRegistration(net.milkbowl.vault.permission.Permission.class);
final RegisteredServiceProvider<Permission> permissionProvider =
Bukkit.getServer().getServicesManager().getRegistration(Permission.class);
if (permissionProvider != null) {
this.permission = permissionProvider.getProvider();
} else {

Datei anzeigen

@ -104,7 +104,7 @@ public class BukkitChunk_All extends IntFaweChunk<Chunk, BukkitQueue_All> {
int[][] sections = getCombinedIdArrays();
final int bx = getX() << 4;
final int bz = getZ() << 4;
boolean update = adapter != null ? adapter.isChunkInUse(chunk) : true;
boolean update = adapter == null || adapter.isChunkInUse(chunk);
if (layer == -1) {
if (adapter != null)
{

Datei anzeigen

@ -113,14 +113,15 @@ public abstract class BukkitQueue_0<CHUNK, CHUNKSECTIONS, SECTION> extends NMSMa
WirePacket packet = null;
int viewDistance = Bukkit.getViewDistance();
try {
for (int i = 0; i < players.length; i++) {
for (FawePlayer fawePlayer : players) {
int cx = chunk.getX();
int cz = chunk.getZ();
Player player = ((BukkitPlayer) players[i]).parent;
Player player = ((BukkitPlayer) fawePlayer).parent;
Location loc = player.getLocation();
if (Math.abs((loc.getBlockX() >> 4) - cx) <= viewDistance && Math.abs((loc.getBlockZ() >> 4) - cz) <= viewDistance) {
if (Math.abs((loc.getBlockX() >> 4) - cx) <= viewDistance
&& Math.abs((loc.getBlockZ() >> 4) - cz) <= viewDistance) {
if (packet == null) {
byte[] data;
byte[] buffer = new byte[8192];
@ -128,12 +129,12 @@ public abstract class BukkitQueue_0<CHUNK, CHUNKSECTIONS, SECTION> extends NMSMa
chunk = (FaweChunk) chunk.getChunk();
}
// TODO FIXME
// if (chunk instanceof MCAChunk) {
// data = new MCAChunkPacket((MCAChunk) chunk, true, true, hasSky()).apply(buffer);
// } else {
// data = new FaweChunkPacket(chunk, true, true, hasSky()).apply(buffer);
// }
// packet = new WirePacket(PacketType.Play.Server.MAP_CHUNK, data);
// if (chunk instanceof MCAChunk) {
// data = new MCAChunkPacket((MCAChunk) chunk, true, true, hasSky()).apply(buffer);
// } else {
// data = new FaweChunkPacket(chunk, true, true, hasSky()).apply(buffer);
// }
// packet = new WirePacket(PacketType.Play.Server.MAP_CHUNK, data);
}
manager.sendWirePacket(player, packet);
}

Datei anzeigen

@ -181,19 +181,16 @@ public class BukkitQueue_All extends BukkitQueue_0<ChunkSnapshot, ChunkSnapshot,
if (load && unloaded != null) {
final ArrayDeque<Chunk> finalUnloaded = unloaded;
TaskManager.IMP.async(new Runnable() {
@Override
public void run() {
for (Chunk chunk : finalUnloaded) {
int cx = chunk.getX();
int cz = chunk.getZ();
if (world.isChunkLoaded(cx, cz)) continue;
SetQueue.IMP.addTask(() -> {
world.loadChunk(chunk.getX(), chunk.getZ(), false);
world.refreshChunk(chunk.getX(), chunk.getZ());
});
TaskManager.IMP.async(() -> {
for (Chunk chunk : finalUnloaded) {
int cx = chunk.getX();
int cz = chunk.getZ();
if (world.isChunkLoaded(cx, cz)) continue;
SetQueue.IMP.addTask(() -> {
world.loadChunk(chunk.getX(), chunk.getZ(), false);
world.refreshChunk(chunk.getX(), chunk.getZ());
});
}
}
});
// load chunks

Datei anzeigen

@ -58,26 +58,23 @@ public abstract class ChunkListener implements Listener {
Plugin plugin = Fawe.<FaweBukkit>imp().getPlugin();
plm.registerEvents(this, plugin);
try { plm.registerEvents(new ChunkListener_8Plus(this), plugin); } catch (Throwable ignore) {}
TaskManager.IMP.repeat(new Runnable() {
@Override
public void run() {
rateLimit--;
physicsFreeze = false;
itemFreeze = false;
lastZ = Integer.MIN_VALUE;
physSkip = 0;
physCancelPair = Long.MIN_VALUE;
physCancel = false;
TaskManager.IMP.repeat(() -> {
rateLimit--;
physicsFreeze = false;
itemFreeze = false;
lastZ = Integer.MIN_VALUE;
physSkip = 0;
physCancelPair = Long.MIN_VALUE;
physCancel = false;
counter.clear();
for (Long2ObjectMap.Entry<Boolean> entry : badChunks.long2ObjectEntrySet()) {
long key = entry.getLongKey();
int x = MathMan.unpairIntX(key);
int z = MathMan.unpairIntY(key);
counter.put(key, badLimit);
}
badChunks.clear();
counter.clear();
for (Long2ObjectMap.Entry<Boolean> entry : badChunks.long2ObjectEntrySet()) {
long key = entry.getLongKey();
int x = MathMan.unpairIntX(key);
int z = MathMan.unpairIntY(key);
counter.put(key, badLimit);
}
badChunks.clear();
}, Settings.IMP.TICK_LIMITER.INTERVAL);
}
}
@ -381,4 +378,4 @@ public abstract class ChunkListener implements Listener {
return;
}
}
}
}

Datei anzeigen

@ -204,9 +204,10 @@ public class AsyncBlock implements Block {
@Override
public BlockFace getFace(Block block) {
BlockFace[] directions = BlockFace.values();
for(int i = 0; i < directions.length; ++i) {
BlockFace face = directions[i];
if(this.getX() + face.getModX() == block.getX() && this.getY() + face.getModY() == block.getY() && this.getZ() + face.getModZ() == block.getZ()) {
for (BlockFace face : directions) {
if (this.getX() + face.getModX() == block.getX()
&& this.getY() + face.getModY() == block.getY()
&& this.getZ() + face.getModZ() == block.getZ()) {
return face;
}
}
@ -272,14 +273,7 @@ public class AsyncBlock implements Block {
@Override
public boolean isEmpty() {
switch (getType()) {
case AIR:
case CAVE_AIR:
case VOID_AIR:
return true;
default:
return false;
}
return getType().isEmpty();
}
@Override

Datei anzeigen

@ -29,7 +29,7 @@ public class AsyncChunk implements Chunk {
@Override
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof Chunk)) {
if (!(obj instanceof Chunk)) {
return false;
}
Chunk other = (Chunk) obj;
@ -88,14 +88,14 @@ public class AsyncChunk implements Chunk {
BukkitQueue_0 bq = (BukkitQueue_0) queue;
if (world.isChunkLoaded(x, z)) {
long pair = MathMan.pairInt(x, z);
Long originalKeep = bq.keepLoaded.get(pair);
bq.keepLoaded.put(pair, Long.MAX_VALUE);
Long originalKeep = BukkitQueue_0.keepLoaded.get(pair);
BukkitQueue_0.keepLoaded.put(pair, Long.MAX_VALUE);
if (world.isChunkLoaded(x, z)) {
task.run();
if (originalKeep != null) {
bq.keepLoaded.put(pair, originalKeep);
BukkitQueue_0.keepLoaded.put(pair, originalKeep);
} else {
bq.keepLoaded.remove(pair);
BukkitQueue_0.keepLoaded.remove(pair);
}
return task.value;
}

Datei anzeigen

@ -114,7 +114,7 @@ public class AsyncWorld extends DelegateFaweQueue implements World, HasFaweQueue
this.parent = parent;
this.queue = queue;
if (queue instanceof BukkitQueue_0) {
this.adapter = (BukkitImplAdapter) ((BukkitQueue_0) queue).getAdapter();
this.adapter = BukkitQueue_0.getAdapter();
} else {
try {
this.adapter = WorldEditPlugin.getInstance().getBukkitImplAdapter();
@ -141,12 +141,7 @@ public class AsyncWorld extends DelegateFaweQueue implements World, HasFaweQueue
if (queue != this.queue) {
if (this.queue != null) {
final FaweQueue oldQueue = this.queue;
TaskManager.IMP.async(new Runnable() {
@Override
public void run() {
oldQueue.flush();
}
});
TaskManager.IMP.async(oldQueue::flush);
}
this.queue = queue;
}
@ -354,7 +349,7 @@ public class AsyncWorld extends DelegateFaweQueue implements World, HasFaweQueue
@Override
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof World)) {
if (!(obj instanceof World)) {
return false;
}
World other = (World) obj;
@ -571,7 +566,7 @@ public class AsyncWorld extends DelegateFaweQueue implements World, HasFaweQueue
return TaskManager.IMP.sync(new RunnableVal<Collection<T>>() {
@Override
public void run(Collection<T> value) {
this.value = (Collection<T>) parent.getEntitiesByClass(classes);
this.value = parent.getEntitiesByClass(classes);
}
});
}
@ -581,7 +576,7 @@ public class AsyncWorld extends DelegateFaweQueue implements World, HasFaweQueue
return TaskManager.IMP.sync(new RunnableVal<Collection<T>>() {
@Override
public void run(Collection<T> value) {
this.value = (Collection<T>) parent.getEntitiesByClass(cls);
this.value = parent.getEntitiesByClass(cls);
}
});
}
@ -799,22 +794,12 @@ public class AsyncWorld extends DelegateFaweQueue implements World, HasFaweQueue
@Override
@Deprecated
public FallingBlock spawnFallingBlock(Location location, Material material, byte data) throws IllegalArgumentException {
return TaskManager.IMP.sync(new Supplier<FallingBlock>() {
@Override
public FallingBlock get() {
return parent.spawnFallingBlock(location, material, data);
}
});
return TaskManager.IMP.sync(() -> parent.spawnFallingBlock(location, material, data));
}
@Override
public FallingBlock spawnFallingBlock(Location location, BlockData blockData) throws IllegalArgumentException {
return TaskManager.IMP.sync(new Supplier<FallingBlock>() {
@Override
public FallingBlock get() {
return parent.spawnFallingBlock(location, blockData);
}
});
return TaskManager.IMP.sync(() -> parent.spawnFallingBlock(location, blockData));
}
@Override