From d47fb586ca1d117a4f7ef1db97d58fc25e408ca2 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 14:11:24 +0300 Subject: [PATCH 01/15] Sonar: [squid:S2095] Use try-with-resources --- .../ByteArrayOutputNetStream.java | 6 ++ .../packets/serverside/ChunkDataPacket.java | 102 +++++++++--------- .../proto_1_12_2/ByteArrayInputNetStream.java | 5 + .../proto_1_12_2/netty/PacketDecoder.java | 3 + .../proto_1_12_2/netty/PacketEncoder.java | 3 + .../proto_1_12_2/netty/PacketPostEncoder.java | 3 + 6 files changed, 73 insertions(+), 49 deletions(-) diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/ByteArrayOutputNetStream.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/ByteArrayOutputNetStream.java index 7a2b7d6..8bcd5b1 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/ByteArrayOutputNetStream.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/ByteArrayOutputNetStream.java @@ -1,6 +1,7 @@ package mc.core.network.proto_1_12_2; import java.io.ByteArrayOutputStream; +import java.io.IOException; public class ByteArrayOutputNetStream extends NetOutputStream_p340 { private ByteArrayOutputStream baos = new ByteArrayOutputStream(); @@ -61,6 +62,11 @@ public class ByteArrayOutputNetStream extends NetOutputStream_p340 { writeLong(Double.doubleToLongBits(value)); } + @Override + public void close() throws IOException { + baos.close(); + } + public int size() { return baos.size(); } diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java index 55d0d7a..9c694b2 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java @@ -13,6 +13,7 @@ import mc.core.world.block.BlockType; import mc.core.world.chunk.Chunk; import mc.core.world.chunk.ChunkSection; +import java.io.IOException; import java.util.ArrayList; import java.util.Comparator; import java.util.List; @@ -127,72 +128,75 @@ public class ChunkDataPacket implements SCPacket { } netStream.writeVarInt(bitMask); // Primary Bit Mask - final ByteArrayOutputNetStream data = new ByteArrayOutputNetStream(); + try (ByteArrayOutputNetStream data = new ByteArrayOutputNetStream(); + ByteArrayOutputNetStream biomes = new ByteArrayOutputNetStream()) { - final ByteArrayOutputNetStream biomes = new ByteArrayOutputNetStream(); - boolean biomeWrite = true; + boolean biomeWrite = true; - List nbtList = new ArrayList<>(); + List nbtList = new ArrayList<>(); - for (int h = 0; h < maxH; h++) { - ChunkSection chunkSection = null; + for (int h = 0; h < maxH; h++) { + ChunkSection chunkSection = null; - if (chunk != null) { - chunkSection = chunk.getChunkSection(h); - } else if (sectionList != null) { - chunkSection = sectionList.remove(0); - } + if (chunk != null) { + chunkSection = chunk.getChunkSection(h); + } else if (sectionList != null) { + chunkSection = sectionList.remove(0); + } - if (chunkSection == null) { - continue; - } + if (chunkSection == null) { + continue; + } - final PalettedChunkSection palettedChunkSection = new PalettedChunkSection(); + final PalettedChunkSection palettedChunkSection = new PalettedChunkSection(); - for (int y = 0; y < 16; y++) { - for (int z = 0; z < 16; z++) { - for (int x = 0; x < 16; x++) { - Block block = chunkSection.getBlock(x, y, z); + for (int y = 0; y < 16; y++) { + for (int z = 0; z < 16; z++) { + for (int x = 0; x < 16; x++) { + Block block = chunkSection.getBlock(x, y, z); - palettedChunkSection.addBlock( - block, - chunkSection.getSkyLight(x, y, z) - ); + palettedChunkSection.addBlock( + block, + chunkSection.getSkyLight(x, y, z) + ); - CompoundTag nbt = block.getNBTData(); - if (nbt != null) { - nbtList.add(nbt); - } + CompoundTag nbt = block.getNBTData(); + if (nbt != null) { + nbtList.add(nbt); + } - if (biomeWrite) { - biomes.writeByte(chunk.getBiome( - (chunk.getX() << 4) + x, - (chunk.getZ() << 4) + z - ).getId()); - if (x == 15 && z == 15) { - biomeWrite = false; + if (biomeWrite) { + biomes.writeByte(chunk.getBiome( + (chunk.getX() << 4) + x, + (chunk.getZ() << 4) + z + ).getId()); + if (x == 15 && z == 15) { + biomeWrite = false; + } } } } } + + // + palettedChunkSection.writeToNetStream(data); + // } + // + data.writeBytes(biomes.toByteArray()); + // - // - palettedChunkSection.writeToNetStream(data); - // + netStream.writeVarInt(data.size()); // Size of Data + netStream.writeBytes(data.toByteArray()); // Data + netStream.writeVarInt(nbtList.size()); // Number of block entities + // + for (CompoundTag compoundTag : nbtList) { + netStream.writeNBT(compoundTag); + } + // + } catch (IOException e) { + log.error("", e); } - // - data.writeBytes(biomes.toByteArray()); - // - - netStream.writeVarInt(data.size()); // Size of Data - netStream.writeBytes(data.toByteArray()); // Data - netStream.writeVarInt(nbtList.size()); // Number of block entities - // - for (CompoundTag compoundTag : nbtList) { - netStream.writeNBT(compoundTag); - } - // } @Override diff --git a/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/ByteArrayInputNetStream.java b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/ByteArrayInputNetStream.java index 4b0c90a..1d13d18 100644 --- a/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/ByteArrayInputNetStream.java +++ b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/ByteArrayInputNetStream.java @@ -81,4 +81,9 @@ public class ByteArrayInputNetStream extends NetInputStream_p340 { public void skipBytes(int count) { throw new UnsupportedOperationException(); } + + @Override + public void close() throws IOException { + bais.close(); + } } diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketDecoder.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketDecoder.java index 2e0ee69..35dfd5d 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketDecoder.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketDecoder.java @@ -32,6 +32,9 @@ public class PacketDecoder extends ReplayingDecoder { @Override protected void decode(ChannelHandlerContext ctx, ByteBuf in, List out) throws Exception { State state = ctx.channel().attr(ATTR_STATE).get(); + /* FIXME: SONAR посчитал нужным здесь задействовать try-with-resources + * однако для ByteBuf не существует понятия `close`. Необходимо проанализировать необходимость + * использования реализации интерфейса InputStream и если её нет, то убрать. */ NetInputStream netStream = new WrapperNetInputStream(in); int packetSize = netStream.readVarInt(); diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketEncoder.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketEncoder.java index 5198f01..8c8714c 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketEncoder.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketEncoder.java @@ -27,6 +27,9 @@ public class PacketEncoder extends MessageToByteEncoder { log.debug("Send {}:{}", state, packet); try { + /* FIXME: SONAR посчитал нужным здесь задействовать try-with-resources + * однако для ByteBuf не существует понятия `close`. Необходимо проанализировать необходимость + * использования реализации интерфейса OutputStream и если её нет, то убрать. */ NetOutputStream netStream = new WrapperNetOutputStream(out); netStream.writeVarInt(id); packet.writeSelf(netStream); diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketPostEncoder.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketPostEncoder.java index 7e7b848..f25f5c5 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketPostEncoder.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PacketPostEncoder.java @@ -32,6 +32,9 @@ public class PacketPostEncoder extends MessageToByteEncoder { } out.ensureWritable(sizeOfPktSize + pktSize); + /* FIXME: SONAR посчитал нужным здесь задействовать try-with-resources + * однако для ByteBuf не существует понятия `close`. Необходимо проанализировать необходимость + * использования реализации интерфейса OutputStream и если её нет, то убрать. */ (new WrapperNetOutputStream(out)).writeVarInt(pktSize); out.writeBytes(msg); } From 50d4da653cda3506d0d1550096a63cbd2e59dc3f Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 14:22:46 +0300 Subject: [PATCH 02/15] Sonar: [squid:S1148] Use a logger to log this exception --- core/src/main/java/mc/core/EntityLocation.java | 4 +++- core/src/main/java/mc/core/world/block/BlockLocation.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/mc/core/EntityLocation.java b/core/src/main/java/mc/core/EntityLocation.java index 53fadcb..485d067 100644 --- a/core/src/main/java/mc/core/EntityLocation.java +++ b/core/src/main/java/mc/core/EntityLocation.java @@ -3,8 +3,10 @@ package mc.core; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; import mc.core.world.block.BlockLocation; +@Slf4j @NoArgsConstructor @AllArgsConstructor @Data @@ -53,7 +55,7 @@ public class EntityLocation implements Cloneable { try { return (EntityLocation) super.clone(); } catch (CloneNotSupportedException e) { - e.printStackTrace(); + log.error("", e); return ZERO(); } } diff --git a/core/src/main/java/mc/core/world/block/BlockLocation.java b/core/src/main/java/mc/core/world/block/BlockLocation.java index ff6fd5f..aa9a038 100644 --- a/core/src/main/java/mc/core/world/block/BlockLocation.java +++ b/core/src/main/java/mc/core/world/block/BlockLocation.java @@ -3,7 +3,9 @@ package mc.core.world.block; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; +@Slf4j @NoArgsConstructor @AllArgsConstructor @Data @@ -25,7 +27,7 @@ public class BlockLocation implements Cloneable { try { return (BlockLocation) super.clone(); } catch (CloneNotSupportedException e) { - e.printStackTrace(); + log.error("", e); return ZERO(); } } From 667ea373b854250915e833c1ced93a716665fe54 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 14:25:25 +0300 Subject: [PATCH 03/15] Sonar: [squid:ClassVariableVisibilityCheck] Make field a static final constant or non-public --- .../java/mc/core/network/proto_1_12_2/TeleportManager.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/TeleportManager.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/TeleportManager.java index 50a15da..288d610 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/TeleportManager.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/TeleportManager.java @@ -17,8 +17,8 @@ public class TeleportManager { @AllArgsConstructor private class TpData { - public Player player; - public EntityLocation newLocation; + Player player; + EntityLocation newLocation; // TODO необходимо добавить TimeStamp, что бы понимать, когда клиент отвергнул телепортацию // т.е. идея такова: долгое молчание клиента знак отвержения телепортации. } From d4a3a49b47a1e6052a2b2d4c92a1d9ffe74a1b34 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 14:33:33 +0300 Subject: [PATCH 04/15] Sonar: [squid:S2975] Remove this "clone" implementation; use a copy constructor or copy factory instead --- core/src/main/java/mc/core/EntityLocation.java | 12 +++--------- .../main/java/mc/core/world/block/BlockLocation.java | 12 +++--------- core/src/test/java/mc/core/EntityLocationTest.java | 4 ++-- .../java/mc/core/ImmutableEntityLocationTest.java | 2 +- .../java/mc/core/world/block/BlockLocationTest.java | 4 ++-- .../src/main/java/mc/core/h2db/H2PlayerManager.java | 3 +-- .../core/network/proto_1_12_2/TeleportManager.java | 2 +- .../proto_1_12_2/netty/handlers/PlayHandler.java | 2 +- 8 files changed, 14 insertions(+), 27 deletions(-) diff --git a/core/src/main/java/mc/core/EntityLocation.java b/core/src/main/java/mc/core/EntityLocation.java index 485d067..0614b85 100644 --- a/core/src/main/java/mc/core/EntityLocation.java +++ b/core/src/main/java/mc/core/EntityLocation.java @@ -10,7 +10,7 @@ import mc.core.world.block.BlockLocation; @NoArgsConstructor @AllArgsConstructor @Data -public class EntityLocation implements Cloneable { +public class EntityLocation { private double x, y, z; private float yaw, pitch; @@ -50,13 +50,7 @@ public class EntityLocation implements Cloneable { return new BlockLocation(getBlockX(), getBlockY(), getBlockZ()); } - @Override - public EntityLocation clone() { - try { - return (EntityLocation) super.clone(); - } catch (CloneNotSupportedException e) { - log.error("", e); - return ZERO(); - } + public EntityLocation copy() { + return new EntityLocation(x, y, z, yaw, pitch); } } diff --git a/core/src/main/java/mc/core/world/block/BlockLocation.java b/core/src/main/java/mc/core/world/block/BlockLocation.java index aa9a038..ddf36e4 100644 --- a/core/src/main/java/mc/core/world/block/BlockLocation.java +++ b/core/src/main/java/mc/core/world/block/BlockLocation.java @@ -9,7 +9,7 @@ import lombok.extern.slf4j.Slf4j; @NoArgsConstructor @AllArgsConstructor @Data -public class BlockLocation implements Cloneable { +public class BlockLocation { private int x, y, z; public static BlockLocation ZERO() { @@ -22,13 +22,7 @@ public class BlockLocation implements Cloneable { this.z = z; } - @Override - public BlockLocation clone() { - try { - return (BlockLocation) super.clone(); - } catch (CloneNotSupportedException e) { - log.error("", e); - return ZERO(); - } + public BlockLocation copy() { + return new BlockLocation(x, y, z); } } diff --git a/core/src/test/java/mc/core/EntityLocationTest.java b/core/src/test/java/mc/core/EntityLocationTest.java index 0e31fdc..36b5254 100644 --- a/core/src/test/java/mc/core/EntityLocationTest.java +++ b/core/src/test/java/mc/core/EntityLocationTest.java @@ -37,9 +37,9 @@ class EntityLocationTest { } @Test - void clone_() { + void copy() { EntityLocation locOrig = new EntityLocation(x, y, z, yaw, pitch); - EntityLocation locClone = locOrig.clone(); + EntityLocation locClone = locOrig.copy(); assertEquals(locOrig, locClone); assertNotSame(locOrig, locClone); } diff --git a/core/src/test/java/mc/core/ImmutableEntityLocationTest.java b/core/src/test/java/mc/core/ImmutableEntityLocationTest.java index 0335538..f631530 100644 --- a/core/src/test/java/mc/core/ImmutableEntityLocationTest.java +++ b/core/src/test/java/mc/core/ImmutableEntityLocationTest.java @@ -26,7 +26,7 @@ class ImmutableEntityLocationTest { @Test void clone_() { EntityLocation locOrig = new ImmutableEntityLocation(1d, 2d, 3d, 4f, 5f); - EntityLocation locClone = locOrig.clone(); + EntityLocation locClone = locOrig.copy(); assertEquals(locOrig, locClone); } diff --git a/core/src/test/java/mc/core/world/block/BlockLocationTest.java b/core/src/test/java/mc/core/world/block/BlockLocationTest.java index d716995..608cfbc 100644 --- a/core/src/test/java/mc/core/world/block/BlockLocationTest.java +++ b/core/src/test/java/mc/core/world/block/BlockLocationTest.java @@ -31,9 +31,9 @@ class BlockLocationTest { } @Test - void clone_() { + void copy() { BlockLocation locOrig = new BlockLocation(x, y, z); - BlockLocation locClone = locOrig.clone(); + BlockLocation locClone = locOrig.copy(); assertEquals(locOrig, locClone); } } diff --git a/h2_playermanager/src/main/java/mc/core/h2db/H2PlayerManager.java b/h2_playermanager/src/main/java/mc/core/h2db/H2PlayerManager.java index b22699c..7ebeb86 100644 --- a/h2_playermanager/src/main/java/mc/core/h2db/H2PlayerManager.java +++ b/h2_playermanager/src/main/java/mc/core/h2db/H2PlayerManager.java @@ -12,7 +12,6 @@ import mc.core.player.PlayerManager; import mc.core.player.PlayerSettings; import mc.core.world.World; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; import java.util.*; @@ -30,7 +29,7 @@ public class H2PlayerManager implements PlayerManager { H2Player h2Player = new H2Player(); h2Player.setName(name); h2Player.setUuid(UUID.randomUUID()); - h2Player.setLocation(location.clone()); + h2Player.setLocation(location.copy()); h2Player.setLoadedChunks(new ArrayList<>()); h2Player.setWorld(world); h2Player.setSettings(new PlayerSettings()); diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/TeleportManager.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/TeleportManager.java index 288d610..27cb484 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/TeleportManager.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/TeleportManager.java @@ -34,7 +34,7 @@ public class TeleportManager { teleportId = RAND.nextInt(9999); } while (teleportMap.containsKey(teleportId)); - teleportMap.put(teleportId, new TpData(player, location.clone())); + teleportMap.put(teleportId, new TpData(player, location.copy())); return teleportId; } diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/PlayHandler.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/PlayHandler.java index 90c4ce5..62d3861 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/PlayHandler.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/handlers/PlayHandler.java @@ -74,7 +74,7 @@ public class PlayHandler extends AbstractStateHandler implements PlayStateHandle return; } - CS_PlayerMoveEvent event = new CS_PlayerMoveEvent(player, player.getLocation().clone()); + CS_PlayerMoveEvent event = new CS_PlayerMoveEvent(player, player.getLocation().copy()); event.setNewLocation(new EntityLocation( packet.getX(), packet.getY(), packet.getZ(), player.getLocation().getYaw(), From 441e0e91d2552674e836fa7d6ad607fd8712ec72 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 14:44:57 +0300 Subject: [PATCH 05/15] Sonar: [squid:S3776] make the method easier --- .../main/java/mc/core/CoreEventListener.java | 76 ++++++++++--------- 1 file changed, 42 insertions(+), 34 deletions(-) diff --git a/core/src/main/java/mc/core/CoreEventListener.java b/core/src/main/java/mc/core/CoreEventListener.java index de3791b..da2ff8b 100644 --- a/core/src/main/java/mc/core/CoreEventListener.java +++ b/core/src/main/java/mc/core/CoreEventListener.java @@ -19,6 +19,42 @@ public class CoreEventListener { EventBus.getInstance().registerSubscribes(this); } + private void processLoadChunks(CS_PlayerMoveEvent event, int cMinX, int cMaxX, int cMinZ, int cMaxZ) { + SC_ChunkLoadEvent eventChunkLoad = new SC_ChunkLoadEvent(event.getPlayer()); + for (int cZ = cMinZ; cZ <= cMaxZ; cZ++) { + for (int cX = cMinX; cX <= cMaxX; cX++) { + int compressXZ = CompactedCoords.compressXZ(cX, cZ); + if (!event.getPlayer().getLoadedChunks().contains(compressXZ)) { + if (!event.getPlayer().getLoadedChunks().contains(compressXZ)) { + eventChunkLoad.getNeedLoadChunks().add(compressXZ); + event.getPlayer().getLoadedChunks().add(compressXZ); + } + } + } + } + + if (!eventChunkLoad.getNeedLoadChunks().isEmpty()) { + EventBus.getInstance().post(eventChunkLoad); + } + } + + private void processUnloadChunks(CS_PlayerMoveEvent event, int cMinX, int cMaxX, int cMinZ, int cMaxZ) { + SC_ChunkUnloadEvent eventChunkUnload = new SC_ChunkUnloadEvent(event.getPlayer()); + Iterator itr = event.getPlayer().getLoadedChunks().iterator(); + while(itr.hasNext()) { + int compressXZ = itr.next(); + int[] xz = CompactedCoords.uncompressXZ(compressXZ); + if (xz[0] > cMaxX || xz[0] < cMinX || xz[1] > cMaxZ || xz[1] < cMinZ) { + eventChunkUnload.getNeedUnloadChunks().add(compressXZ); + itr.remove(); + } + } + + if (!eventChunkUnload.getNeedUnloadChunks().isEmpty()) { + EventBus.getInstance().post(eventChunkUnload); + } + } + @Subscriber public void handlerPlayerMoveEvent(CS_PlayerMoveEvent event) { Chunk chunk; @@ -33,42 +69,14 @@ public class CoreEventListener { if (event.isRecalcChunk() || (ncX != ccX || ncZ != ccZ)) { final int viewDistance = event.getPlayer().getSettings().getViewDistance() + 1; - int cMinX = chunk.getX() - viewDistance; - int cMaxX = chunk.getX() + viewDistance; - int cMinZ = chunk.getZ() - viewDistance; - int cMaxZ = chunk.getZ() + viewDistance; + final int cMinX = chunk.getX() - viewDistance; + final int cMaxX = chunk.getX() + viewDistance; + final int cMinZ = chunk.getZ() - viewDistance; + final int cMaxZ = chunk.getZ() + viewDistance; - SC_ChunkLoadEvent eventChunkLoad = new SC_ChunkLoadEvent(event.getPlayer()); - for (int cZ = cMinZ; cZ <= cMaxZ; cZ++) { - for (int cX = cMinX; cX <= cMaxX; cX++) { - int compressXZ = CompactedCoords.compressXZ(cX, cZ); - if (!event.getPlayer().getLoadedChunks().contains(compressXZ)) { - if (!event.getPlayer().getLoadedChunks().contains(compressXZ)) { - eventChunkLoad.getNeedLoadChunks().add(compressXZ); - event.getPlayer().getLoadedChunks().add(compressXZ); - } - } - } - } + processLoadChunks(event, cMinX, cMaxX, cMinZ, cMaxZ); + processUnloadChunks(event, cMinX, cMaxX, cMinZ, cMaxZ); - if (!eventChunkLoad.getNeedLoadChunks().isEmpty()) { - EventBus.getInstance().post(eventChunkLoad); - } - - SC_ChunkUnloadEvent eventChunkUnload = new SC_ChunkUnloadEvent(event.getPlayer()); - Iterator itr = event.getPlayer().getLoadedChunks().iterator(); - while(itr.hasNext()) { - int compressXZ = itr.next(); - int[] xz = CompactedCoords.uncompressXZ(compressXZ); - if (xz[0] > cMaxX || xz[0] < cMinX || xz[1] > cMaxZ || xz[1] < cMinZ) { - eventChunkUnload.getNeedUnloadChunks().add(compressXZ); - itr.remove(); - } - } - - if (!eventChunkUnload.getNeedUnloadChunks().isEmpty()) { - EventBus.getInstance().post(eventChunkUnload); - } } event.getPlayer().getLocation().setXYZ( From b95dd2dfdc1eab12e1e0ba42f7a280c412764a91 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 14:47:44 +0300 Subject: [PATCH 06/15] Sonar: [squid:S1452] Remove usage of generic wildcard type --- core/src/main/java/mc/core/network/NetInputStream.java | 2 +- .../java/mc/core/network/proto_1_12_2/NetInputStream_p340.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/mc/core/network/NetInputStream.java b/core/src/main/java/mc/core/network/NetInputStream.java index 9262610..7e8b56a 100644 --- a/core/src/main/java/mc/core/network/NetInputStream.java +++ b/core/src/main/java/mc/core/network/NetInputStream.java @@ -31,7 +31,7 @@ public abstract class NetInputStream extends InputStream { public abstract double readDouble(); public abstract String readString(); public abstract UUID readUUID(); - public abstract Tag readNBT(); + public abstract Tag readNBT(); public abstract void skipBytes(int count); diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/NetInputStream_p340.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/NetInputStream_p340.java index 6be6f48..5dd1a7a 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/NetInputStream_p340.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/NetInputStream_p340.java @@ -62,7 +62,7 @@ public abstract class NetInputStream_p340 extends NetInputStream { } @Override - public Tag readNBT() { + public Tag readNBT() { if (nbtInputStream == null) { try { nbtInputStream = new NBTInputStream(this, false); From 3a25bc34f47838006653c46f4d51a081878168ad Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 15:07:56 +0300 Subject: [PATCH 07/15] Sonar: [squid:S3776] make the method easier --- .../packets/serverside/ChunkDataPacket.java | 126 +++++++++++------- 1 file changed, 75 insertions(+), 51 deletions(-) diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java index 9c694b2..5a2b24d 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java @@ -17,6 +17,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Comparator; import java.util.List; +import java.util.concurrent.atomic.AtomicBoolean; /* Packet structure @@ -89,19 +90,13 @@ public class ChunkDataPacket implements SCPacket { this.sectionList = sectionList; } - @Override - public void writeSelf(NetOutputStream netStream) { - if (sectionList == null && chunk == null) { - log.warn("Empty chunk data!"); //TODO для такого нужна заглушка - return; - } - - netStream.writeInt(x); // Chunk X - netStream.writeInt(z); // Chunk Y - netStream.writeBoolean(initChunk); // Init Chunk - + /** + * @return max height chunk + */ + private int calcAndWriteBitMask(NetOutputStream netStream) { int maxH = 0; int bitMask = 0; + if (sectionList == null && chunk != null) { for (int h = 15; h >= 0; h--) { bitMask = bitMask << 1; @@ -126,60 +121,89 @@ public class ChunkDataPacket implements SCPacket { } } } + netStream.writeVarInt(bitMask); // Primary Bit Mask + return maxH; + } + + private ChunkSection getChunkSection(int h) { + if (chunk != null) { + return chunk.getChunkSection(h); + } else if (sectionList != null) { + return sectionList.remove(0); + } + + return null; + } + + private PalettedChunkSection createPalette(final ChunkSection chunkSection, + final List nbtList, + final AtomicBoolean biomeWrite, + final ByteArrayOutputNetStream biomes) { + + final PalettedChunkSection palettedChunkSection = new PalettedChunkSection(); + + for (int y = 0; y < 16; y++) { + for (int z = 0; z < 16; z++) { + for (int x = 0; x < 16; x++) { + Block block = chunkSection.getBlock(x, y, z); + + palettedChunkSection.addBlock( + block, + chunkSection.getSkyLight(x, y, z) + ); + + CompoundTag nbt = block.getNBTData(); + if (nbt != null) { + nbtList.add(nbt); + } + + if (biomeWrite.get()) { + biomes.writeByte(chunk.getBiome( + (chunk.getX() << 4) + x, + (chunk.getZ() << 4) + z + ).getId()); + if (x == 15 && z == 15) { + biomeWrite.set(false); + } + } + } + } + } + + return palettedChunkSection; + } + + @Override + public void writeSelf(NetOutputStream netStream) { + if (sectionList == null && chunk == null) { + log.warn("Empty chunk data!"); //TODO для такого нужна заглушка + return; + } + + netStream.writeInt(x); // Chunk X + netStream.writeInt(z); // Chunk Y + netStream.writeBoolean(initChunk); // Init Chunk + + final int maxH = calcAndWriteBitMask(netStream); + try (ByteArrayOutputNetStream data = new ByteArrayOutputNetStream(); ByteArrayOutputNetStream biomes = new ByteArrayOutputNetStream()) { - boolean biomeWrite = true; + AtomicBoolean biomeWrite = new AtomicBoolean(true); List nbtList = new ArrayList<>(); for (int h = 0; h < maxH; h++) { - ChunkSection chunkSection = null; - - if (chunk != null) { - chunkSection = chunk.getChunkSection(h); - } else if (sectionList != null) { - chunkSection = sectionList.remove(0); - } - + final ChunkSection chunkSection = getChunkSection(h); if (chunkSection == null) { continue; } - final PalettedChunkSection palettedChunkSection = new PalettedChunkSection(); - - for (int y = 0; y < 16; y++) { - for (int z = 0; z < 16; z++) { - for (int x = 0; x < 16; x++) { - Block block = chunkSection.getBlock(x, y, z); - - palettedChunkSection.addBlock( - block, - chunkSection.getSkyLight(x, y, z) - ); - - CompoundTag nbt = block.getNBTData(); - if (nbt != null) { - nbtList.add(nbt); - } - - if (biomeWrite) { - biomes.writeByte(chunk.getBiome( - (chunk.getX() << 4) + x, - (chunk.getZ() << 4) + z - ).getId()); - if (x == 15 && z == 15) { - biomeWrite = false; - } - } - } - } - } - // - palettedChunkSection.writeToNetStream(data); + createPalette(chunkSection, nbtList, biomeWrite, biomes) + .writeToNetStream(data); // } // From 96a69f1bcae499b3d703644a415e6e4c2079cb0d Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 15:12:41 +0300 Subject: [PATCH 08/15] Sonar: [squid:S3776] make the method easier --- .../packets/serverside/ChunkDataPacket.java | 32 +++++++++++++------ 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java index 5a2b24d..f451fdf 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/serverside/ChunkDataPacket.java @@ -268,7 +268,7 @@ public class ChunkDataPacket implements SCPacket { this.skyLight.set(bx, by, bz, skyLight); } - void writeToNetStream(final NetOutputStream netOutputStream) { + private int getBitsPerBlock() { int bitsPerBlock = 4; if (palette.size() > 15) { if (palette.size() <= 31) @@ -281,15 +281,12 @@ public class ChunkDataPacket implements SCPacket { bitsPerBlock = 8; } - // - netOutputStream.writeUnsignedByte(bitsPerBlock); // Bits Per Block - netOutputStream.writeVarInt(palette.size()); // Size of palette - palette.forEach(netOutputStream::writeVarInt); // Palette - // - // - final int dataLength = (4096/*16*16*16*/ * bitsPerBlock) / 64/*size of long in bits*/; - netOutputStream.writeVarInt(dataLength); // Size of Data Array - // + return bitsPerBlock; + } + + private void writePalette(final int bitsPerBlock, + final NetOutputStream netOutputStream) { + long value = 0; int lastPos = 0; boolean fairy = false; @@ -324,6 +321,21 @@ public class ChunkDataPacket implements SCPacket { } } netOutputStream.writeLong(value); + } + + void writeToNetStream(final NetOutputStream netOutputStream) { + final int bitsPerBlock = getBitsPerBlock(); + + // + netOutputStream.writeUnsignedByte(bitsPerBlock); // Bits Per Block + netOutputStream.writeVarInt(palette.size()); // Size of palette + palette.forEach(netOutputStream::writeVarInt); // Palette + // + // + final int dataLength = (4096/*16*16*16*/ * bitsPerBlock) / 64/*size of long in bits*/; + netOutputStream.writeVarInt(dataLength); // Size of Data Array + // + writePalette(bitsPerBlock, netOutputStream); // // // From 74f725eec4c4dbdd17becabdc7ba6af989cf2395 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 15:24:01 +0300 Subject: [PATCH 09/15] Sonar: double if --- core/src/main/java/mc/core/CoreEventListener.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/mc/core/CoreEventListener.java b/core/src/main/java/mc/core/CoreEventListener.java index da2ff8b..b35269a 100644 --- a/core/src/main/java/mc/core/CoreEventListener.java +++ b/core/src/main/java/mc/core/CoreEventListener.java @@ -25,10 +25,8 @@ public class CoreEventListener { for (int cX = cMinX; cX <= cMaxX; cX++) { int compressXZ = CompactedCoords.compressXZ(cX, cZ); if (!event.getPlayer().getLoadedChunks().contains(compressXZ)) { - if (!event.getPlayer().getLoadedChunks().contains(compressXZ)) { - eventChunkLoad.getNeedLoadChunks().add(compressXZ); - event.getPlayer().getLoadedChunks().add(compressXZ); - } + eventChunkLoad.getNeedLoadChunks().add(compressXZ); + event.getPlayer().getLoadedChunks().add(compressXZ); } } } From 63b68c481b54b507e9941aea660f6b2a8ff1264d Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 15:29:41 +0300 Subject: [PATCH 10/15] Sonar: [squid:S3725] Replace with a call to the "toFile().exists()" method --- .../src/main/java/mc/world/anvil/AnvilChunkProvider.java | 3 ++- anvil-loader/src/main/java/mc/world/anvil/RegionManager.java | 2 +- core/src/main/java/mc/core/Main.java | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/anvil-loader/src/main/java/mc/world/anvil/AnvilChunkProvider.java b/anvil-loader/src/main/java/mc/world/anvil/AnvilChunkProvider.java index d3fafc3..e9ac399 100644 --- a/anvil-loader/src/main/java/mc/world/anvil/AnvilChunkProvider.java +++ b/anvil-loader/src/main/java/mc/world/anvil/AnvilChunkProvider.java @@ -7,6 +7,7 @@ import mc.core.world.chunk.Chunk; import mc.core.world.chunk.ChunkProvider; import org.springframework.stereotype.Component; +import java.io.File; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; @@ -20,7 +21,7 @@ public class AnvilChunkProvider implements ChunkProvider { public AnvilChunkProvider(String mapPath) { Path pathMap = Paths.get(mapPath); - if (Files.exists(pathMap)) { + if (pathMap.toFile().exists()) { log.info("Use Anvil map from \"{}\"", pathMap); this.setRegionManager(new RegionManager(pathMap.resolve("region"))); } else { diff --git a/anvil-loader/src/main/java/mc/world/anvil/RegionManager.java b/anvil-loader/src/main/java/mc/world/anvil/RegionManager.java index b0cdb50..45545c4 100644 --- a/anvil-loader/src/main/java/mc/world/anvil/RegionManager.java +++ b/anvil-loader/src/main/java/mc/world/anvil/RegionManager.java @@ -32,7 +32,7 @@ public class RegionManager { return regions.get(xz); } else { Path regionFilePath = regionFilesPath.resolve("r." + x + "." + z + ".mca"); - if (Files.exists(regionFilePath)) { + if (regionFilePath.toFile().exists()) { try { Region region = new Region(regionFilePath.toFile()); regions.put(xz, region); diff --git a/core/src/main/java/mc/core/Main.java b/core/src/main/java/mc/core/Main.java index 19dcbb4..2ab8ac9 100644 --- a/core/src/main/java/mc/core/Main.java +++ b/core/src/main/java/mc/core/Main.java @@ -7,6 +7,7 @@ import org.apache.commons.io.IOUtils; import org.springframework.context.ApplicationContext; import org.springframework.context.support.FileSystemXmlApplicationContext; +import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.nio.file.Files; @@ -17,7 +18,7 @@ public class Main { private static ApplicationContext createContext() { final String springXml = System.getProperty("springConfig", "./spring.xml"); - if (!Files.exists(Paths.get(springXml))) { + if (!(new File(springXml)).exists()) { log.info("File \"{}\" not found. Get default config.", springXml); try (FileOutputStream fos = new FileOutputStream(springXml)) { IOUtils.copy(Main.class.getResourceAsStream("/spring.xml"), fos); From 1e6e9500c17745476acd49d118d89a06e0e64147 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 15:35:36 +0300 Subject: [PATCH 11/15] remove unused packet --- .../java/mc/core/network/proto_1_12_2/State.java | 1 - .../packets/clientside/HeldItemChangePacket.java | 13 ------------- 2 files changed, 14 deletions(-) delete mode 100644 proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/clientside/HeldItemChangePacket.java diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/State.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/State.java index 152dfcb..005d35e 100644 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/State.java +++ b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/State.java @@ -78,7 +78,6 @@ public enum State { .put(0x0E, PlayerPositionAndLookPacket.class) .put(0x0F, PlayerLookPacket.class) .put(0x13, PlayerAbilitiesPacket.class) - .put(0x1A, HeldItemChangePacket.class) .build(), ImmutableMap., Integer>builder() .put(BossBarPacket.class, 0x0C) diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/clientside/HeldItemChangePacket.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/clientside/HeldItemChangePacket.java deleted file mode 100644 index 99ea558..0000000 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/packets/clientside/HeldItemChangePacket.java +++ /dev/null @@ -1,13 +0,0 @@ -package mc.core.network.proto_1_12_2.packets.clientside; - -import mc.core.network.CSPacket; -import mc.core.network.NetInputStream; - -public class HeldItemChangePacket implements CSPacket { - private int slot; - - @Override - public void readSelf(NetInputStream netStream) { - this.slot = netStream.readShort(); - } -} From d5b2557104e8cd602e9c818a7cc28b44781dba60 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 15:38:52 +0300 Subject: [PATCH 12/15] remove unused class --- .../serializers/BlockLocationSerializer.java | 63 ------------------- .../BlockLocationSerializerTest.java | 32 ---------- 2 files changed, 95 deletions(-) delete mode 100644 proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/serializers/BlockLocationSerializer.java delete mode 100644 proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/serializers/BlockLocationSerializerTest.java diff --git a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/serializers/BlockLocationSerializer.java b/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/serializers/BlockLocationSerializer.java deleted file mode 100644 index 9aea2f5..0000000 --- a/proto_1.12.2/src/main/java/mc/core/network/proto_1_12_2/serializers/BlockLocationSerializer.java +++ /dev/null @@ -1,63 +0,0 @@ -package mc.core.network.proto_1_12_2.serializers; - -import mc.core.world.block.BlockLocation; - -import static com.google.common.math.IntMath.isPowerOfTwo; - -public class BlockLocationSerializer { - private static final int[] MULTIPLY_DE_BRUIJN_BIT_POSITION = new int[] {0, 1, 28, 2, 29, 14, 24, 3, 30, 22, 20, 15, 25, 17, 4, 8, 31, 27, 13, 23, 21, 19, 16, 7, 26, 12, 18, 6, 11, 5, 10, 9}; - private static final int NUM_X_BITS = 1 + log2(smallestEncompassingPowerOfTwo(30000000)); - private static final int NUM_Z_BITS = NUM_X_BITS; - private static final int NUM_Y_BITS = 64 - NUM_X_BITS - NUM_Z_BITS; - private static final int Y_SHIFT = NUM_Z_BITS; - private static final int X_SHIFT = Y_SHIFT + NUM_Y_BITS; - private static final long X_MASK = (1L << NUM_X_BITS) - 1L; - private static final long Y_MASK = (1L << NUM_Y_BITS) - 1L; - private static final long Z_MASK = (1L << NUM_Z_BITS) - 1L; - - /* - * net.minecraft.util.math.MathHelper#log2(int) - */ - private static int log2(int value) { - return log2DeBruijn(value) - (isPowerOfTwo(value) ? 0 : 1); - } - - /* - * net.minecraft.util.math.MathHelper#log2DeBruijn(int) - */ - private static int log2DeBruijn(int value) { - value = isPowerOfTwo(value) ? value : smallestEncompassingPowerOfTwo(value); - return MULTIPLY_DE_BRUIJN_BIT_POSITION[(int)((long)value * 125613361L >> 27) & 31]; - } - - /* - * net.minecraft.util.math.MathHelper#smallestEncompassingPowerOfTwo(int) - */ - private static int smallestEncompassingPowerOfTwo(int value) { - int i = value - 1; - i = i | i >> 1; - i = i | i >> 2; - i = i | i >> 4; - i = i | i >> 8; - i = i | i >> 16; - return i + 1; - } - - public static long toLong(BlockLocation location) { - return ((long)location.getX() & X_MASK) << X_SHIFT | - ((long)location.getY() & Y_MASK) << Y_SHIFT | - ((long)location.getZ() & Z_MASK); - } - - public static BlockLocation fromLong(long value) { - BlockLocation location = BlockLocation.ZERO(); - fromLong(value, location); - return location; - } - - public static void fromLong(long value, BlockLocation location) { - location.setX((int)(value << 64 - X_SHIFT - NUM_X_BITS >> 64 - NUM_X_BITS)); - location.setY((int)(value << 64 - Y_SHIFT - NUM_Y_BITS >> 64 - NUM_Y_BITS)); - location.setZ((int)(value << 64 - NUM_Z_BITS >> 64 - NUM_Z_BITS)); - } -} diff --git a/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/serializers/BlockLocationSerializerTest.java b/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/serializers/BlockLocationSerializerTest.java deleted file mode 100644 index dda7500..0000000 --- a/proto_1.12.2/src/test/java/mc/core/network/proto_1_12_2/serializers/BlockLocationSerializerTest.java +++ /dev/null @@ -1,32 +0,0 @@ -package mc.core.network.proto_1_12_2.serializers; - -import mc.core.world.block.BlockLocation; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Test; - -import java.util.concurrent.ThreadLocalRandom; - -import static org.junit.jupiter.api.Assertions.assertEquals; - -class BlockLocationSerializerTest { - private static final ThreadLocalRandom rnd = ThreadLocalRandom.current(); - private static final int minI = 0, maxI = 10; - private int x, y, z; - - @BeforeEach - void before() { - x = rnd.nextInt(minI, maxI); - y = rnd.nextInt(minI, maxI); - z = rnd.nextInt(minI, maxI); - } - - @Test - void serialize() { - BlockLocation location = new BlockLocation(x, y, z); - final long serializedCoords = BlockLocationSerializer.toLong(location); - - BlockLocation deserLoc = BlockLocationSerializer.fromLong(serializedCoords); - - assertEquals(location, deserLoc); - } -} \ No newline at end of file From cade216ff489509873d9acdca3f6c22bd6d61e15 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 15:40:34 +0300 Subject: [PATCH 13/15] Sonar: [squid:S1118] Utility classes should not have public constructors --- core/src/main/java/mc/core/utils/CompactedCoords.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/src/main/java/mc/core/utils/CompactedCoords.java b/core/src/main/java/mc/core/utils/CompactedCoords.java index c05884c..de3a985 100644 --- a/core/src/main/java/mc/core/utils/CompactedCoords.java +++ b/core/src/main/java/mc/core/utils/CompactedCoords.java @@ -1,8 +1,11 @@ package mc.core.utils; +import lombok.AccessLevel; +import lombok.NoArgsConstructor; import lombok.extern.slf4j.Slf4j; @Slf4j +@NoArgsConstructor(access = AccessLevel.PRIVATE) public class CompactedCoords { public static int compressXZ(int x, int z) { if (x < Short.MIN_VALUE || x > Short.MAX_VALUE || From fa2e992c3d91d4cf5fbc5e24b32b9a1ea0198c53 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 15:50:30 +0300 Subject: [PATCH 14/15] optimize imports --- anvil-loader/src/main/java/com/flowpowered/nbt/TagType.java | 1 - .../src/main/java/mc/world/anvil/AnvilChunkProvider.java | 2 -- .../src/main/java/mc/world/anvil/AnvilChunkSection.java | 1 - anvil-loader/src/main/java/mc/world/anvil/RegionManager.java | 1 - core/src/main/java/mc/core/Main.java | 2 -- core/src/main/java/mc/core/embedded/FakeServer.java | 1 - core/src/main/java/mc/core/world/Biome.java | 1 - 7 files changed, 9 deletions(-) diff --git a/anvil-loader/src/main/java/com/flowpowered/nbt/TagType.java b/anvil-loader/src/main/java/com/flowpowered/nbt/TagType.java index 444e3e2..e92ca72 100644 --- a/anvil-loader/src/main/java/com/flowpowered/nbt/TagType.java +++ b/anvil-loader/src/main/java/com/flowpowered/nbt/TagType.java @@ -1,7 +1,6 @@ package com.flowpowered.nbt; import java.util.HashMap; -import java.util.List; import java.util.Map; public enum TagType { diff --git a/anvil-loader/src/main/java/mc/world/anvil/AnvilChunkProvider.java b/anvil-loader/src/main/java/mc/world/anvil/AnvilChunkProvider.java index e9ac399..d2cf5a3 100644 --- a/anvil-loader/src/main/java/mc/world/anvil/AnvilChunkProvider.java +++ b/anvil-loader/src/main/java/mc/world/anvil/AnvilChunkProvider.java @@ -7,8 +7,6 @@ import mc.core.world.chunk.Chunk; import mc.core.world.chunk.ChunkProvider; import org.springframework.stereotype.Component; -import java.io.File; -import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; diff --git a/anvil-loader/src/main/java/mc/world/anvil/AnvilChunkSection.java b/anvil-loader/src/main/java/mc/world/anvil/AnvilChunkSection.java index c4115ce..86f8194 100644 --- a/anvil-loader/src/main/java/mc/world/anvil/AnvilChunkSection.java +++ b/anvil-loader/src/main/java/mc/world/anvil/AnvilChunkSection.java @@ -2,7 +2,6 @@ package mc.world.anvil; import gnu.trove.list.TByteList; import gnu.trove.list.array.TByteArrayList; -import gnu.trove.list.linked.TByteLinkedList; import lombok.Getter; import lombok.Setter; import mc.core.utils.NibbleArray; diff --git a/anvil-loader/src/main/java/mc/world/anvil/RegionManager.java b/anvil-loader/src/main/java/mc/world/anvil/RegionManager.java index 45545c4..18332c2 100644 --- a/anvil-loader/src/main/java/mc/world/anvil/RegionManager.java +++ b/anvil-loader/src/main/java/mc/world/anvil/RegionManager.java @@ -7,7 +7,6 @@ import mc.core.utils.CompactedCoords; import org.springframework.lang.Nullable; import java.io.IOException; -import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; diff --git a/core/src/main/java/mc/core/Main.java b/core/src/main/java/mc/core/Main.java index 2ab8ac9..8d632e2 100644 --- a/core/src/main/java/mc/core/Main.java +++ b/core/src/main/java/mc/core/Main.java @@ -10,8 +10,6 @@ import org.springframework.context.support.FileSystemXmlApplicationContext; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; -import java.nio.file.Files; -import java.nio.file.Paths; @Slf4j public class Main { diff --git a/core/src/main/java/mc/core/embedded/FakeServer.java b/core/src/main/java/mc/core/embedded/FakeServer.java index 6c93937..c4c6c53 100644 --- a/core/src/main/java/mc/core/embedded/FakeServer.java +++ b/core/src/main/java/mc/core/embedded/FakeServer.java @@ -2,7 +2,6 @@ package mc.core.embedded; import lombok.extern.slf4j.Slf4j; import mc.core.network.Server; -import mc.core.network.StartServerException; @Slf4j public class FakeServer implements Server { diff --git a/core/src/main/java/mc/core/world/Biome.java b/core/src/main/java/mc/core/world/Biome.java index 3f4d555..a2a49f3 100644 --- a/core/src/main/java/mc/core/world/Biome.java +++ b/core/src/main/java/mc/core/world/Biome.java @@ -2,7 +2,6 @@ package mc.core.world; import lombok.Getter; import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; import java.util.Arrays; From 3f062b987354b547e45cbab17b7aeb8a7f5a1a09 Mon Sep 17 00:00:00 2001 From: DmitriyMX Date: Mon, 11 Feb 2019 15:51:56 +0300 Subject: [PATCH 15/15] Sonar: [squid:S1155] Use isEmpty() to check whether the collection is empty or not --- .../core/network/proto_1_12_2/netty/PlayerEventListener.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PlayerEventListener.java b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PlayerEventListener.java index 927ac82..e0a0cb7 100644 --- a/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PlayerEventListener.java +++ b/proto_1.12.2_netty/src/main/java/mc/core/network/proto_1_12_2/netty/PlayerEventListener.java @@ -28,7 +28,7 @@ public class PlayerEventListener { @Subscriber public void playerChunkLoadHandler(SC_ChunkLoadEvent event) { - if (event.getNeedLoadChunks().size() == 0) return; + if (event.getNeedLoadChunks().isEmpty()) return; final NetChannel channel = event.getPlayer().getChannel(); @@ -51,7 +51,7 @@ public class PlayerEventListener { @Subscriber public void playerChunkUnloadHandler(SC_ChunkUnloadEvent event) { - if (event.getNeedUnloadChunks().size() == 0) return; + if (event.getNeedUnloadChunks().isEmpty()) return; final NetChannel channel = event.getPlayer().getChannel();