Various
add git revision to jar fix fixlighting fix fallback bukkit queue (currently not stable for forge/sponge)
This commit is contained in:
parent
b5a8eb2176
commit
00c685cd93
@ -6,14 +6,21 @@ buildscript {
|
|||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3'
|
classpath 'com.github.jengelman.gradle.plugins:shadow:1.2.3'
|
||||||
|
classpath 'org.ajoberstar:grgit:1.1.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'java'
|
apply plugin: 'java'
|
||||||
clean { delete "target" }
|
clean { delete "target" }
|
||||||
|
|
||||||
group = 'com.boydti.fawe'
|
group = 'com.boydti.fawe'
|
||||||
version = '3.4.3'
|
def revision = ""
|
||||||
|
ext {
|
||||||
|
git = org.ajoberstar.grgit.Grgit.open(file(".git/"))
|
||||||
|
revision = "-${git.head().abbreviatedId}"
|
||||||
|
}
|
||||||
|
version = "3.5.0${revision}"
|
||||||
description = """FastAsyncWorldEdit"""
|
description = """FastAsyncWorldEdit"""
|
||||||
|
|
||||||
subprojects {
|
subprojects {
|
||||||
|
@ -191,6 +191,9 @@ public class FaweBukkit implements IFawe, Listener {
|
|||||||
try {
|
try {
|
||||||
return plugin.getQueue(world);
|
return plugin.getQueue(world);
|
||||||
} catch (Throwable ignore) {}
|
} catch (Throwable ignore) {}
|
||||||
|
// Disable incompatible settings
|
||||||
|
Settings.PARALLEL_THREADS = 1; // BukkitAPI placer is too slow to parallel thread at the chunk level
|
||||||
|
Settings.COMBINE_HISTORY_STAGE = false; // Performing a chunk copy (if possible) wouldn't be faster using the BukkitAPI
|
||||||
if (hasNMS) {
|
if (hasNMS) {
|
||||||
debug("====== NO NMS BLOCK PLACER FOUND ======");
|
debug("====== NO NMS BLOCK PLACER FOUND ======");
|
||||||
debug("FAWE couldn't find a fast block placer");
|
debug("FAWE couldn't find a fast block placer");
|
||||||
|
@ -35,6 +35,14 @@ public abstract class BukkitQueue_0<CHUNK, CHUNKSECTIONS, SECTION> extends NMSMa
|
|||||||
setupAdapter(null);
|
setupAdapter(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void checkVersion(String supported) {
|
||||||
|
String version = Bukkit.getServer().getClass().getPackage().getName();
|
||||||
|
if (!version.contains(supported)) {
|
||||||
|
Fawe.debug("This version of FAWE is for: " + supported);
|
||||||
|
throw new IllegalStateException("Unsupported version: " + version + " (supports: " + supported + ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setupAdapter(BukkitImplAdapter adapter) {
|
public void setupAdapter(BukkitImplAdapter adapter) {
|
||||||
try {
|
try {
|
||||||
WorldEditPlugin instance = (WorldEditPlugin) Bukkit.getPluginManager().getPlugin("WorldEdit");
|
WorldEditPlugin instance = (WorldEditPlugin) Bukkit.getPluginManager().getPlugin("WorldEdit");
|
||||||
@ -58,7 +66,6 @@ public abstract class BukkitQueue_0<CHUNK, CHUNKSECTIONS, SECTION> extends NMSMa
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
e.printStackTrace();
|
|
||||||
Fawe.debug("====== NO NATIVE WORLDEDIT ADAPTER ======");
|
Fawe.debug("====== NO NATIVE WORLDEDIT ADAPTER ======");
|
||||||
Fawe.debug("Try updating WorldEdit: ");
|
Fawe.debug("Try updating WorldEdit: ");
|
||||||
Fawe.debug(" - http://builds.enginehub.org/job/worldedit?branch=master");
|
Fawe.debug(" - http://builds.enginehub.org/job/worldedit?branch=master");
|
||||||
@ -208,6 +215,7 @@ public abstract class BukkitQueue_0<CHUNK, CHUNKSECTIONS, SECTION> extends NMSMa
|
|||||||
}
|
}
|
||||||
if (more) {
|
if (more) {
|
||||||
fc.addToQueue();
|
fc.addToQueue();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Biomes
|
// Biomes
|
||||||
|
@ -11,7 +11,7 @@ shadowJar {
|
|||||||
include(dependency(':bukkit0'))
|
include(dependency(':bukkit0'))
|
||||||
include(dependency(':core'))
|
include(dependency(':core'))
|
||||||
}
|
}
|
||||||
archiveName = "${parent.name}-${project.name}.jar"
|
archiveName = "${parent.name}-${project.name}-${parent.version}.jar"
|
||||||
destinationDir = file '../target'
|
destinationDir = file '../target'
|
||||||
}
|
}
|
||||||
shadowJar.doLast {
|
shadowJar.doLast {
|
||||||
|
@ -49,6 +49,7 @@ public class BukkitQueue18R3 extends BukkitQueue_0<Chunk, ChunkSection[], char[]
|
|||||||
|
|
||||||
public BukkitQueue18R3(final String world) {
|
public BukkitQueue18R3(final String world) {
|
||||||
super(world);
|
super(world);
|
||||||
|
checkVersion("v1_8_R3");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -256,6 +257,7 @@ public class BukkitQueue18R3 extends BukkitQueue_0<Chunk, ChunkSection[], char[]
|
|||||||
}
|
}
|
||||||
int k = FaweCache.CACHE_J[ly][lx][lz];
|
int k = FaweCache.CACHE_J[ly][lx][lz];
|
||||||
if (array[k] != 0) {
|
if (array[k] != 0) {
|
||||||
|
tile.getValue().E();
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -342,7 +344,7 @@ public class BukkitQueue18R3 extends BukkitQueue_0<Chunk, ChunkSection[], char[]
|
|||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
e.printStackTrace();
|
e.printStackTrace();
|
||||||
}
|
}
|
||||||
sendChunk(fc);
|
sendChunk(fc, null);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -387,6 +389,9 @@ public class BukkitQueue18R3 extends BukkitQueue_0<Chunk, ChunkSection[], char[]
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean fixLighting(FaweChunk chunk, RelightMode mode) {
|
public boolean fixLighting(FaweChunk chunk, RelightMode mode) {
|
||||||
|
if (mode == RelightMode.NONE) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
CharFaweChunk<Chunk> fc = (CharFaweChunk<Chunk>) chunk;
|
CharFaweChunk<Chunk> fc = (CharFaweChunk<Chunk>) chunk;
|
||||||
CraftChunk craftChunk = (CraftChunk) fc.getChunk();
|
CraftChunk craftChunk = (CraftChunk) fc.getChunk();
|
||||||
@ -395,13 +400,11 @@ public class BukkitQueue18R3 extends BukkitQueue_0<Chunk, ChunkSection[], char[]
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
ChunkSection[] sections = nmsChunk.getSections();
|
ChunkSection[] sections = nmsChunk.getSections();
|
||||||
if (mode != RelightMode.MINIMAL) {
|
if (mode == RelightMode.ALL) {
|
||||||
for (int i = 0; i < sections.length; i++) {
|
for (int i = 0; i < sections.length; i++) {
|
||||||
ChunkSection section = sections[i];
|
ChunkSection section = sections[i];
|
||||||
if (section != null) {
|
if (section != null) {
|
||||||
if (mode == RelightMode.ALL) {
|
|
||||||
section.a(new NibbleArray());
|
section.a(new NibbleArray());
|
||||||
}
|
|
||||||
section.b(new NibbleArray());
|
section.b(new NibbleArray());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -421,24 +424,34 @@ public class BukkitQueue18R3 extends BukkitQueue_0<Chunk, ChunkSection[], char[]
|
|||||||
if (section == null) {
|
if (section == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ((fc.getRelight(j) == 0 && mode == RelightMode.MINIMAL) || (fc.getCount(j) == 0 && mode != RelightMode.ALL) || (fc.getCount(j) >= 4096 && fc.getAir(j) == 0)) {
|
if (((fc.getRelight(j) == 0) && mode == RelightMode.MINIMAL) || (fc.getCount(j) == 0 && mode != RelightMode.ALL) || ((fc.getCount(j) >= 4096) && (fc.getAir(j) == 0)) || fc.getAir(j) == 4096) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
char[] array = section.getIdArray();
|
char[] array = section.getIdArray();
|
||||||
int l = PseudoRandom.random.random(2);
|
if (mode == RelightMode.ALL) {
|
||||||
for (int k = 0; k < array.length; k++) {
|
for (int k = array.length - 1; k >= 0; k--) {
|
||||||
int i = array[k];
|
final int x = FaweCache.CACHE_X[j][k];
|
||||||
if (i < 16) {
|
final int y = FaweCache.CACHE_Y[j][k];
|
||||||
|
final int z = FaweCache.CACHE_Z[j][k];
|
||||||
|
if (isSurrounded(sections, x, y, z)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
short id = (short) (i >> 4);
|
pos.c(X + x, y, Z + z);
|
||||||
|
nmsWorld.x(pos);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (int k = array.length - 1; k >= 0; k--) {
|
||||||
|
final int i = array[k];
|
||||||
|
final short id = (short) (i >> 4);
|
||||||
switch (id) { // Lighting
|
switch (id) { // Lighting
|
||||||
|
case 0:
|
||||||
|
continue;
|
||||||
default:
|
default:
|
||||||
if (mode == RelightMode.MINIMAL) {
|
if (mode == RelightMode.MINIMAL) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ((k & 1) == l) {
|
if (PseudoRandom.random.random(3) != 0) {
|
||||||
l = 1 - l;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
case 10:
|
case 10:
|
||||||
@ -456,9 +469,9 @@ public class BukkitQueue18R3 extends BukkitQueue_0<Chunk, ChunkSection[], char[]
|
|||||||
case 130:
|
case 130:
|
||||||
case 138:
|
case 138:
|
||||||
case 169:
|
case 169:
|
||||||
int x = FaweCache.CACHE_X[j][k];
|
final int x = FaweCache.CACHE_X[j][k];
|
||||||
int y = FaweCache.CACHE_Y[j][k];
|
final int y = FaweCache.CACHE_Y[j][k];
|
||||||
int z = FaweCache.CACHE_Z[j][k];
|
final int z = FaweCache.CACHE_Z[j][k];
|
||||||
if (isSurrounded(sections, x, y, z)) {
|
if (isSurrounded(sections, x, y, z)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ dependencies {
|
|||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'com.github.johnrengelman.shadow'
|
apply plugin: 'com.github.johnrengelman.shadow'
|
||||||
|
|
||||||
// We only want the shadow jar produced
|
// We only want the shadow jar produced
|
||||||
jar.enabled = false
|
jar.enabled = false
|
||||||
shadowJar {
|
shadowJar {
|
||||||
@ -11,7 +12,7 @@ shadowJar {
|
|||||||
include(dependency(':bukkit0'))
|
include(dependency(':bukkit0'))
|
||||||
include(dependency(':core'))
|
include(dependency(':core'))
|
||||||
}
|
}
|
||||||
archiveName = "${parent.name}-${project.name}.jar"
|
archiveName = "${parent.name}-${project.name}-${parent.version}.jar"
|
||||||
destinationDir = file '../target'
|
destinationDir = file '../target'
|
||||||
}
|
}
|
||||||
shadowJar.doLast {
|
shadowJar.doLast {
|
||||||
|
@ -46,7 +46,6 @@ import org.bukkit.World;
|
|||||||
import org.bukkit.World.Environment;
|
import org.bukkit.World.Environment;
|
||||||
import org.bukkit.block.Biome;
|
import org.bukkit.block.Biome;
|
||||||
import org.bukkit.craftbukkit.v1_9_R2.CraftChunk;
|
import org.bukkit.craftbukkit.v1_9_R2.CraftChunk;
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.entity.CreatureSpawnEvent;
|
import org.bukkit.event.entity.CreatureSpawnEvent;
|
||||||
|
|
||||||
public class BukkitQueue_1_9_R1 extends BukkitQueue_0<Chunk, ChunkSection[], DataPaletteBlock> {
|
public class BukkitQueue_1_9_R1 extends BukkitQueue_0<Chunk, ChunkSection[], DataPaletteBlock> {
|
||||||
@ -55,20 +54,19 @@ public class BukkitQueue_1_9_R1 extends BukkitQueue_0<Chunk, ChunkSection[], Dat
|
|||||||
|
|
||||||
public BukkitQueue_1_9_R1(final String world) {
|
public BukkitQueue_1_9_R1(final String world) {
|
||||||
super(world);
|
super(world);
|
||||||
|
checkVersion("v1_9_R2");
|
||||||
try {
|
try {
|
||||||
Field fieldAir = DataPaletteBlock.class.getDeclaredField("a");
|
Field fieldAir = DataPaletteBlock.class.getDeclaredField("a");
|
||||||
fieldAir.setAccessible(true);
|
fieldAir.setAccessible(true);
|
||||||
air = (IBlockData) fieldAir.get(null);
|
air = (IBlockData) fieldAir.get(null);
|
||||||
if (adapter == null) {
|
if (adapter == null) {
|
||||||
setupAdapter(new FaweAdapter_1_9());
|
setupAdapter(new FaweAdapter_1_9());
|
||||||
Fawe.debug("=========================================");
|
|
||||||
Fawe.debug("Using adapter: " + adapter);
|
Fawe.debug("Using adapter: " + adapter);
|
||||||
Fawe.debug("=========================================");
|
Fawe.debug("=========================================");
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Throwable e) {
|
||||||
e.printStackTrace();
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
Player player = null;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -102,6 +100,9 @@ public class BukkitQueue_1_9_R1 extends BukkitQueue_0<Chunk, ChunkSection[], Dat
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean fixLighting(final FaweChunk pc, RelightMode mode) {
|
public boolean fixLighting(final FaweChunk pc, RelightMode mode) {
|
||||||
|
if (mode == RelightMode.NONE) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
try {
|
try {
|
||||||
CharFaweChunk bc = (CharFaweChunk) pc;
|
CharFaweChunk bc = (CharFaweChunk) pc;
|
||||||
Chunk chunk = (Chunk) bc.getChunk();
|
Chunk chunk = (Chunk) bc.getChunk();
|
||||||
@ -113,13 +114,11 @@ public class BukkitQueue_1_9_R1 extends BukkitQueue_0<Chunk, ChunkSection[], Dat
|
|||||||
}
|
}
|
||||||
net.minecraft.server.v1_9_R2.Chunk c = ((CraftChunk) chunk).getHandle();
|
net.minecraft.server.v1_9_R2.Chunk c = ((CraftChunk) chunk).getHandle();
|
||||||
ChunkSection[] sections = c.getSections();
|
ChunkSection[] sections = c.getSections();
|
||||||
if (mode != RelightMode.MINIMAL) {
|
if (mode == RelightMode.ALL) {
|
||||||
for (int i = 0; i < sections.length; i++) {
|
for (int i = 0; i < sections.length; i++) {
|
||||||
ChunkSection section = sections[i];
|
ChunkSection section = sections[i];
|
||||||
if (section != null) {
|
if (section != null) {
|
||||||
if (mode == RelightMode.ALL) {
|
|
||||||
section.a(new NibbleArray());
|
section.a(new NibbleArray());
|
||||||
}
|
|
||||||
section.b(new NibbleArray());
|
section.b(new NibbleArray());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -136,24 +135,33 @@ public class BukkitQueue_1_9_R1 extends BukkitQueue_0<Chunk, ChunkSection[], Dat
|
|||||||
final int X = chunk.getX() << 4;
|
final int X = chunk.getX() << 4;
|
||||||
final int Z = chunk.getZ() << 4;
|
final int Z = chunk.getZ() << 4;
|
||||||
BlockPosition.MutableBlockPosition pos = new BlockPosition.MutableBlockPosition(0, 0, 0);
|
BlockPosition.MutableBlockPosition pos = new BlockPosition.MutableBlockPosition(0, 0, 0);
|
||||||
for (int j = 0; j < sections.length; j++) {
|
for (int j = sections.length - 1; j >= 0; j--) {
|
||||||
final Object section = sections[j];
|
final Object section = sections[j];
|
||||||
if (section == null) {
|
if (section == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (((bc.getRelight(j) == 0) && mode == RelightMode.MINIMAL) || (bc.getCount(j) == 0 && mode != RelightMode.ALL) || ((bc.getCount(j) >= 4096) && (bc.getAir(j) == 0))) {
|
if (((bc.getRelight(j) == 0) && mode == RelightMode.MINIMAL) || (bc.getCount(j) == 0 && mode != RelightMode.ALL) || ((bc.getCount(j) >= 4096) && (bc.getAir(j) == 0)) || bc.getAir(j) == 4096) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
final char[] array = bc.getIdArray(j);
|
final char[] array = bc.getIdArray(j);
|
||||||
if (array == null) {
|
if (array == null) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
int l = PseudoRandom.random.random(2);
|
if (mode == RelightMode.ALL) {
|
||||||
for (int k = 0; k < array.length; k++) {
|
for (int k = array.length - 1; k >= 0; k--) {
|
||||||
final int i = array[k];
|
final int x = FaweCache.CACHE_X[j][k];
|
||||||
if (i < 16) {
|
final int y = FaweCache.CACHE_Y[j][k];
|
||||||
|
final int z = FaweCache.CACHE_Z[j][k];
|
||||||
|
if (this.isSurrounded(bc.getCombinedIdArrays(), x, y, z)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
pos.c(X + x, y, Z + z);
|
||||||
|
w.w(pos);
|
||||||
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (int k = array.length - 1; k >= 0; k--) {
|
||||||
|
final int i = array[k];
|
||||||
final short id = (short) (i >> 4);
|
final short id = (short) (i >> 4);
|
||||||
switch (id) { // Lighting
|
switch (id) { // Lighting
|
||||||
case 0:
|
case 0:
|
||||||
@ -162,8 +170,7 @@ public class BukkitQueue_1_9_R1 extends BukkitQueue_0<Chunk, ChunkSection[], Dat
|
|||||||
if (mode == RelightMode.MINIMAL) {
|
if (mode == RelightMode.MINIMAL) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ((k & 1) == l) {
|
if (PseudoRandom.random.random(3) != 0) {
|
||||||
l = 1 - l;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
case 10:
|
case 10:
|
||||||
@ -461,6 +468,7 @@ public class BukkitQueue_1_9_R1 extends BukkitQueue_0<Chunk, ChunkSection[], Dat
|
|||||||
}
|
}
|
||||||
int k = FaweCache.CACHE_J[ly][lx][lz];
|
int k = FaweCache.CACHE_J[ly][lx][lz];
|
||||||
if (array[k] != 0) {
|
if (array[k] != 0) {
|
||||||
|
tile.getValue().invalidateBlockCache();
|
||||||
iterator.remove();
|
iterator.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -579,7 +587,7 @@ public class BukkitQueue_1_9_R1 extends BukkitQueue_0<Chunk, ChunkSection[], Dat
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
sendChunk(fs);
|
sendChunk(fs, null);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.boydti.fawe.command;
|
package com.boydti.fawe.command;
|
||||||
|
|
||||||
import com.boydti.fawe.FaweAPI;
|
|
||||||
import com.boydti.fawe.config.BBC;
|
import com.boydti.fawe.config.BBC;
|
||||||
import com.boydti.fawe.object.FaweCommand;
|
import com.boydti.fawe.object.FaweCommand;
|
||||||
import com.boydti.fawe.object.FaweLocation;
|
import com.boydti.fawe.object.FaweLocation;
|
||||||
@ -43,7 +42,7 @@ public class FixLighting extends FaweCommand {
|
|||||||
FaweQueue queue = SetQueue.IMP.getNewQueue(loc.world, true, false);
|
FaweQueue queue = SetQueue.IMP.getNewQueue(loc.world, true, false);
|
||||||
for (int x = minX; x <= maxX; x++) {
|
for (int x = minX; x <= maxX; x++) {
|
||||||
for (int z = minZ; z <= maxZ; z++) {
|
for (int z = minZ; z <= maxZ; z++) {
|
||||||
queue.fixLighting(queue.getChunk(x, z), FaweQueue.RelightMode.ALL);
|
queue.sendChunk(queue.getChunk(x, z), FaweQueue.RelightMode.ALL);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,8 +19,7 @@ public enum BBC {
|
|||||||
*/
|
*/
|
||||||
PREFIX("&8(&4&lFAWE&8)&7", "Info"),
|
PREFIX("&8(&4&lFAWE&8)&7", "Info"),
|
||||||
SCHEMATIC_PASTING("&7The schematic is pasting. This cannot be undone.", "Info"),
|
SCHEMATIC_PASTING("&7The schematic is pasting. This cannot be undone.", "Info"),
|
||||||
FIX_LIGHTING_CHUNK("&7Lighting has been fixed in your current chunk. Relog to see the affect.", "Info"),
|
FIX_LIGHTING_SELECTION("&7Lighting has been fixed in %s0 chunks. (It may take a second for the packets to send)", "Info"),
|
||||||
FIX_LIGHTING_SELECTION("&7Lighting has been fixed in %s0 chunks. Relog to see the affect.", "Info"),
|
|
||||||
SET_REGION("&7Selection set to your current WorldEdit region", "Info"),
|
SET_REGION("&7Selection set to your current WorldEdit region", "Info"),
|
||||||
WORLDEDIT_COMMAND_LIMIT("&7Please wait until your current action completes", "Info"),
|
WORLDEDIT_COMMAND_LIMIT("&7Please wait until your current action completes", "Info"),
|
||||||
WORLDEDIT_DELAYED("&7Please wait while we process your WorldEdit action...", "Info"),
|
WORLDEDIT_DELAYED("&7Please wait while we process your WorldEdit action...", "Info"),
|
||||||
|
@ -13,7 +13,6 @@ import com.sk89q.jnbt.CompoundTag;
|
|||||||
import com.sk89q.worldedit.world.biome.BaseBiome;
|
import com.sk89q.worldedit.world.biome.BaseBiome;
|
||||||
import java.util.ArrayDeque;
|
import java.util.ArrayDeque;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
import java.util.concurrent.LinkedBlockingDeque;
|
import java.util.concurrent.LinkedBlockingDeque;
|
||||||
@ -75,8 +74,6 @@ public abstract class MappedFaweQueue<WORLD, CHUNK, SECTION> extends FaweQueue {
|
|||||||
|
|
||||||
public abstract boolean regenerateChunk(WORLD world, int x, int z);
|
public abstract boolean regenerateChunk(WORLD world, int x, int z);
|
||||||
|
|
||||||
public abstract void sendChunk(FaweChunk chunk);
|
|
||||||
|
|
||||||
public abstract boolean setComponents(FaweChunk fc, RunnableVal<FaweChunk> changeTask);
|
public abstract boolean setComponents(FaweChunk fc, RunnableVal<FaweChunk> changeTask);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -344,13 +341,6 @@ public abstract class MappedFaweQueue<WORLD, CHUNK, SECTION> extends FaweQueue {
|
|||||||
chunks.add((FaweChunk) chunk);
|
chunks.add((FaweChunk) chunk);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Collection<FaweChunk> sendChunk(Collection<FaweChunk> fcs) {
|
|
||||||
for (final FaweChunk fc : fcs) {
|
|
||||||
sendChunk(fc);
|
|
||||||
}
|
|
||||||
return new ArrayList<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public int lastChunkX = Integer.MIN_VALUE;
|
public int lastChunkX = Integer.MIN_VALUE;
|
||||||
public int lastChunkZ = Integer.MIN_VALUE;
|
public int lastChunkZ = Integer.MIN_VALUE;
|
||||||
public int lastChunkY = Integer.MIN_VALUE;
|
public int lastChunkY = Integer.MIN_VALUE;
|
||||||
|
@ -15,16 +15,20 @@ public abstract class NMSMappedFaweQueue<WORLD, CHUNK, CHUNKSECTION, SECTION> ex
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void sendChunk(final FaweChunk fc) {
|
public void sendChunk(final FaweChunk fc, RelightMode mode) {
|
||||||
|
if (mode == null) {
|
||||||
|
mode = Settings.FIX_ALL_LIGHTING ? FaweQueue.RelightMode.OPTIMAL : FaweQueue.RelightMode.MINIMAL;
|
||||||
|
}
|
||||||
|
final RelightMode finalMode = mode;
|
||||||
TaskManager.IMP.taskSyncSoon(new Runnable() {
|
TaskManager.IMP.taskSyncSoon(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
final boolean result = fixLighting(fc, Settings.FIX_ALL_LIGHTING ? FaweQueue.RelightMode.OPTIMAL : FaweQueue.RelightMode.MINIMAL) || !Settings.ASYNC_LIGHTING;
|
final boolean result = finalMode == RelightMode.NONE || fixLighting(fc, finalMode);
|
||||||
TaskManager.IMP.taskSyncNow(new Runnable() {
|
TaskManager.IMP.taskSyncNow(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (!result) {
|
if (!result) {
|
||||||
fixLighting(fc, Settings.FIX_ALL_LIGHTING ? FaweQueue.RelightMode.OPTIMAL : FaweQueue.RelightMode.MINIMAL);
|
fixLighting(fc, finalMode);
|
||||||
}
|
}
|
||||||
CHUNK chunk = (CHUNK) fc.getChunk();
|
CHUNK chunk = (CHUNK) fc.getChunk();
|
||||||
refreshChunk(getWorld(), chunk);
|
refreshChunk(getWorld(), chunk);
|
||||||
|
@ -55,12 +55,11 @@ public class DiskOptimizedClipboard extends FaweClipboard {
|
|||||||
this(width, height, length, new File(Fawe.imp().getDirectory(), "clipboard" + File.separator + uuid));
|
this(width, height, length, new File(Fawe.imp().getDirectory(), "clipboard" + File.separator + uuid));
|
||||||
}
|
}
|
||||||
|
|
||||||
public DiskOptimizedClipboard(File file) {
|
public DiskOptimizedClipboard(File file) throws IOException {
|
||||||
nbtMap = new HashMap<>();
|
nbtMap = new HashMap<>();
|
||||||
entities = new HashSet<>();this.buffer = new byte[2];
|
entities = new HashSet<>();this.buffer = new byte[2];
|
||||||
this.file = file;
|
this.file = file;
|
||||||
this.lastAccessed = System.currentTimeMillis();
|
this.lastAccessed = System.currentTimeMillis();
|
||||||
try {
|
|
||||||
this.raf = new BufferedRandomAccessFile(file, "rw", Settings.BUFFER_SIZE);
|
this.raf = new BufferedRandomAccessFile(file, "rw", Settings.BUFFER_SIZE);
|
||||||
raf.setLength(file.length());
|
raf.setLength(file.length());
|
||||||
long size = (raf.length() - HEADER_SIZE) >> 1;
|
long size = (raf.length() - HEADER_SIZE) >> 1;
|
||||||
@ -72,9 +71,6 @@ public class DiskOptimizedClipboard extends FaweClipboard {
|
|||||||
length = (((buffer[1] & 0xFF) << 8) + ((buffer[0] & 0xFF)));
|
length = (((buffer[1] & 0xFF) << 8) + ((buffer[0] & 0xFF)));
|
||||||
height = (int) (size / (width * length));
|
height = (int) (size / (width * length));
|
||||||
area = width * length;
|
area = width * length;
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
autoCloseTask();
|
autoCloseTask();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ public abstract class FaweQueue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public enum RelightMode {
|
public enum RelightMode {
|
||||||
|
NONE,
|
||||||
MINIMAL,
|
MINIMAL,
|
||||||
OPTIMAL,
|
OPTIMAL,
|
||||||
ALL,
|
ALL,
|
||||||
@ -124,6 +125,8 @@ public abstract class FaweQueue {
|
|||||||
// Unload chunks
|
// Unload chunks
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public abstract void sendChunk(FaweChunk chunk, RelightMode mode);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This method is called when the server is < 1% available memory
|
* This method is called when the server is < 1% available memory
|
||||||
*/
|
*/
|
||||||
|
@ -52,7 +52,7 @@ shadowJar {
|
|||||||
include(dependency(':core'))
|
include(dependency(':core'))
|
||||||
include(dependency('org.yaml:snakeyaml:1.16'))
|
include(dependency('org.yaml:snakeyaml:1.16'))
|
||||||
}
|
}
|
||||||
archiveName = "${parent.name}-${project.name}.jar"
|
archiveName = "${parent.name}-${project.name}-${parent.version}.jar"
|
||||||
destinationDir = file '../target'
|
destinationDir = file '../target'
|
||||||
}
|
}
|
||||||
shadowJar.doLast {
|
shadowJar.doLast {
|
||||||
|
@ -61,7 +61,7 @@ shadowJar {
|
|||||||
include(dependency(':core'))
|
include(dependency(':core'))
|
||||||
include(dependency('org.yaml:snakeyaml:1.16'))
|
include(dependency('org.yaml:snakeyaml:1.16'))
|
||||||
}
|
}
|
||||||
archiveName = "${parent.name}-${project.name}.jar"
|
archiveName = "${parent.name}-${project.name}-${parent.version}.jar"
|
||||||
destinationDir = file '../target'
|
destinationDir = file '../target'
|
||||||
}
|
}
|
||||||
shadowJar.doLast {
|
shadowJar.doLast {
|
||||||
|
@ -67,7 +67,7 @@ shadowJar {
|
|||||||
include(dependency(':core'))
|
include(dependency(':core'))
|
||||||
include(dependency('org.yaml:snakeyaml:1.16'))
|
include(dependency('org.yaml:snakeyaml:1.16'))
|
||||||
}
|
}
|
||||||
archiveName = "${parent.name}-${project.name}.jar"
|
archiveName = "${parent.name}-${project.name}-${parent.version}.jar"
|
||||||
destinationDir = file '../target'
|
destinationDir = file '../target'
|
||||||
}
|
}
|
||||||
shadowJar.doLast {
|
shadowJar.doLast {
|
||||||
|
Loading…
Reference in New Issue
Block a user