Skip to content

Commit 82704f2

Browse files
committed
some stuff
1 parent 88d6d15 commit 82704f2

File tree

5 files changed

+13
-9
lines changed

5 files changed

+13
-9
lines changed

src/main/java/net/potato/tuff/TuffX.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -129,16 +129,18 @@ public void run() {
129129
private void processAndSendChunk(final Player player, final Chunk chunk) {
130130
if (chunk == null || !player.isOnline()) return;
131131

132-
final ChunkSnapshot snapshot = chunk.getChunkSnapshot(true, false, false);
132+
final Map<BlockData, int[]> conversionCache = new HashMap<>();
133133

134134
new BukkitRunnable() {
135135
@Override
136136
public void run() {
137+
final ChunkSnapshot snapshot = chunk.getChunkSnapshot(true, false, false);
138+
137139
for (int sectionY = -4; sectionY < 0; sectionY++) {
138140
if (!player.isOnline()) break;
139141

140142
try {
141-
byte[] payload = createSectionPayload(snapshot, chunk.getX(), chunk.getZ(), sectionY);
143+
byte[] payload = createSectionPayload(snapshot, chunk.getX(), chunk.getZ(), sectionY, conversionCache);
142144
if (payload != null) {
143145
player.sendPluginMessage(TuffX.this, CHANNEL, payload);
144146
}
@@ -164,27 +166,29 @@ private byte[] createWelcomePayload(String message, int someNumber) {
164166
} catch (IOException e) { return null; }
165167
}
166168

167-
private byte[] createSectionPayload(ChunkSnapshot snapshot, int cx, int cz, int sectionY) throws IOException {
169+
private byte[] createSectionPayload(ChunkSnapshot snapshot, int cx, int cz, int sectionY, Map<BlockData, int[]> cache) throws IOException {
168170
try (ByteArrayOutputStream bout = new ByteArrayOutputStream(8200); DataOutputStream out = new DataOutputStream(bout)) {
169171
out.writeUTF("chunk_data");
170172
out.writeInt(cx); out.writeInt(cz); out.writeInt(sectionY);
171173
boolean hasNonAirBlock = false;
172174
int baseY = sectionY * 16;
173175
for (int y = 0; y < 16; y++) for (int z = 0; z < 16; z++) for (int x = 0; x < 16; x++) {
174176
int worldY = baseY + y;
175-
String blockKey = snapshot.getBlockData(x, worldY, z).getAsString().replace("minecraft:", "");
176-
int[] legacyData = viablockids.toLegacy(blockKey);
177+
BlockData blockData = snapshot.getBlockData(x, worldY, z);
178+
179+
int[] legacyData = cache.computeIfAbsent(blockData, viablockids::toLegacy);
180+
177181
if (legacyData[0] != 0) hasNonAirBlock = true;
178182
out.writeShort((short) ((legacyData[1] << 12) | (legacyData[0] & 0xFFF)));
179183
}
180184
return hasNonAirBlock ? bout.toByteArray() : null;
181185
}
182186
}
183187

184-
//@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
185-
//public void onBlockBreak(BlockBreakEvent event) { if (event.getBlock().getY() < 0) sendBlockUpdateToNearby(event.getBlock().getLocation(), Material.AIR.createBlockData()); }
186-
//@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
187-
//public void onBlockPlace(BlockPlaceEvent event) { if (event.getBlock().getY() < 0) sendBlockUpdateToNearby(event.getBlock().getLocation(), event.getBlock().getBlockData()); }
188+
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
189+
public void onBlockBreak(BlockBreakEvent event) { if (event.getBlock().getY() < 0) sendBlockUpdateToNearby(event.getBlock().getLocation(), Material.AIR.createBlockData()); }
190+
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
191+
public void onBlockPlace(BlockPlaceEvent event) { if (event.getBlock().getY() < 0) sendBlockUpdateToNearby(event.getBlock().getLocation(), event.getBlock().getBlockData()); }
188192
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
189193
public void onBlockPhysics(BlockPhysicsEvent event) { if (event.getBlock().getY() < 0) sendBlockUpdateToNearby(event.getBlock().getLocation(), event.getBlock().getBlockData()); }
190194

target/TuffX.jar

300 Bytes
Binary file not shown.
164 Bytes
Binary file not shown.
828 Bytes
Binary file not shown.

target/original-TuffX.jar

300 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)