diff --git a/pom.xml b/pom.xml
index 674d4eb..7a006d7 100644
--- a/pom.xml
+++ b/pom.xml
@@ -3,18 +3,16 @@
4.0.0
com.wimbli.WorldBorder
WorldBorder
- 2.0.5
+ 2.0.6
WorldBorder
https://github.com/PryPurity/WorldBorder
GitHub
https://github.com/PryPurity/WorldBorder/issues
-
UTF-8
-
spigot-repo
@@ -51,6 +49,12 @@
1.0.4
compile
+
+ com.destroystokyo.paper
+ paper-api
+ 1.16.1-R0.1-SNAPSHOT
+ provided
+
diff --git a/src/main/java/com/wimbli/WorldBorder/WorldFileData.java b/src/main/java/com/wimbli/WorldBorder/WorldFileData.java
index cb8319a..cdff555 100644
--- a/src/main/java/com/wimbli/WorldBorder/WorldFileData.java
+++ b/src/main/java/com/wimbli/WorldBorder/WorldFileData.java
@@ -6,9 +6,9 @@ import org.bukkit.entity.Player;
import javax.imageio.ImageIO;
import java.awt.*;
import java.awt.image.BufferedImage;
-import java.io.File;
-import java.io.FileFilter;
-import java.io.IOException;
+import java.io.*;
+import java.nio.ByteBuffer;
+import java.nio.IntBuffer;
import java.util.List;
import java.util.*;
@@ -155,46 +155,46 @@ public class WorldFileData {
data.add(Boolean.FALSE);
}
- //for (int i = 0; i < regionFiles.length; i++) {
- // CoordXZ coord = regionFileCoordinates(i);
- // // is this region file the one we're looking for?
- // if (!coord.equals(region))
- // continue;
+ for (int i = 0; i < regionFiles.length; i++) {
+ CoordXZ coord = regionFileCoordinates(i);
+ // is this region file the one we're looking for?
+ if (!coord.equals(region))
+ continue;
//
- // try {
- // RandomAccessFile regionData = new RandomAccessFile(this.regionFile(i), "r");
+ try {
+ RandomAccessFile regionData = new RandomAccessFile(this.regionFile(i), "r");
//
- // // Use of ByteBuffer+IntBuffer for reading file headers to improve performance, as suggested by aikar, reference:
- // // https://github.com/PaperMC/Paper/blob/b62dfa0bf95ac27ba0fbb3fae18c064e4bb61d50/Spigot-Server-Patches/0086-Reduce-IO-ops-opening-a-new-region-file.patch
- // ByteBuffer header = ByteBuffer.allocate(8192);
- // while (header.hasRemaining()) {
- // if (regionData.getChannel().read(header) == -1)
- // throw new EOFException();
- // }
- // header.clear();
- // IntBuffer headerAsInts = header.asIntBuffer();
+ // Use of ByteBuffer+IntBuffer for reading file headers to improve performance, as suggested by aikar, reference:
+ // https://github.com/PaperMC/Paper/blob/b62dfa0bf95ac27ba0fbb3fae18c064e4bb61d50/Spigot-Server-Patches/0086-Reduce-IO-ops-opening-a-new-region-file.patch
+ ByteBuffer header = ByteBuffer.allocate(8192);
+ while (header.hasRemaining()) {
+ if (regionData.getChannel().read(header) == -1)
+ throw new EOFException();
+ }
+ header.clear();
+ IntBuffer headerAsInts = header.asIntBuffer();
//
- // // first 4096 bytes of region file consists of 4-byte int pointers to chunk data in the file (32*32 chunks = 1024; 1024 chunks * 4 bytes each = 4096)
- // for (int j = 0; j < 1024; j++) {
- // // if chunk pointer data is 0, chunk doesn't exist yet; otherwise, it does
- // if (headerAsInts.get() != 0)
- // data.set(j, true);
- // }
- // // Read timestamps
- // for (int j = 0; j < 1024; j++) {
- // // if timestamp is zero, it is protochunk (ignore it)
- // if ((headerAsInts.get() == 0) && data.get(j))
- // data.set(j, false);
- // }
- // regionData.close();
- // } catch (FileNotFoundException ex) {
- // sendMessage("Error! Could not open region file to find generated chunks: " + this.regionFile(i).getName());
- // } catch (IOException ex) {
- // sendMessage("Error! Could not read region file to find generated chunks: " + this.regionFile(i).getName());
- // }
- //}
+ // first 4096 bytes of region file consists of 4-byte int pointers to chunk data in the file (32*32 chunks = 1024; 1024 chunks * 4 bytes each = 4096)
+ for (int j = 0; j < 1024; j++) {
+ // if chunk pointer data is 0, chunk doesn't exist yet; otherwise, it does
+ if (headerAsInts.get() != 0)
+ data.set(j, true);
+ }
+ // Read timestamps
+ for (int j = 0; j < 1024; j++) {
+ // if timestamp is zero, it is protochunk (ignore it)
+ if ((headerAsInts.get() == 0) && data.get(j))
+ data.set(j, false);
+ }
+ regionData.close();
+ } catch (FileNotFoundException ex) {
+ sendMessage("Error! Could not open region file to find generated chunks: " + this.regionFile(i).getName());
+ } catch (IOException ex) {
+ sendMessage("Error! Could not read region file to find generated chunks: " + this.regionFile(i).getName());
+ }
+ }
regionChunkExistence.put(region, data);
-// testImage(region, data);
+ testImage(region, data);
return data;
}
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index 9f1d42a..6721470 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,7 +1,7 @@
name: WorldBorder
authors: [Brettflan, PryPurity]
description: Efficient, feature-rich plugin for limiting the size of your worlds.
-version: 2.0.5
+version: 2.0.6
api-version: 1.13
main: com.wimbli.WorldBorder.WorldBorder
softdepend: