Archived
0

стабилизируем код

This commit is contained in:
2021-07-18 00:01:44 +03:00
parent b0bb86f215
commit f280e9beaa
9 changed files with 118 additions and 51 deletions

View File

@@ -2,6 +2,7 @@ package mc.protocol.pool;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import mc.protocol.model.ChunkSectionLocation;
import mc.protocol.model.Location;
import mc.protocol.model.Look;
import mc.protocol.packets.ClientSidePacket;
@@ -13,24 +14,29 @@ import mc.utils.pool.SimpleObjectPool;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class ProtocolObjectPool {
private static final ObjectPool<Location> locationPool = new SimpleObjectPool<>(Location.class);
private static final ObjectPool<Look> lookPool = new SimpleObjectPool<>(Look.class);
private static final NetByteBufObjectPool netByteBufPool = new NetByteBufObjectPool();
private static final MultiObjectPool<ClientSidePacket> packetPool = new PassivableMultiObjectPool<>();
private static final ObjectPool<Location> LOCATION_POOL = new SimpleObjectPool<>(Location.class);
private static final ObjectPool<ChunkSectionLocation> CHUNK_SECTION_LOCATION_POOL = new SimpleObjectPool<>(ChunkSectionLocation.class);
private static final ObjectPool<Look> LOOK_POOL = new SimpleObjectPool<>(Look.class);
private static final NetByteBufObjectPool NETBYTEBUF_POOL = new NetByteBufObjectPool();
private static final MultiObjectPool<ClientSidePacket> PACKET_POOL = new PassivableMultiObjectPool<>();
public static ObjectPool<Location> location() {
return locationPool;
return LOCATION_POOL;
}
public static ObjectPool<ChunkSectionLocation> chunkSectionLocation() {
return CHUNK_SECTION_LOCATION_POOL;
}
public static ObjectPool<Look> look() {
return lookPool;
return LOOK_POOL;
}
public static NetByteBufObjectPool netByteBuf() {
return netByteBufPool;
return NETBYTEBUF_POOL;
}
public static MultiObjectPool<ClientSidePacket> packet() {
return packetPool;
return PACKET_POOL;
}
}

View File

@@ -0,0 +1,52 @@
package mc.protocol.utils;
import lombok.AccessLevel;
import lombok.NoArgsConstructor;
import mc.protocol.model.BlockLocation;
import mc.protocol.model.ChunkSectionLocation;
import mc.protocol.model.Location;
import mc.protocol.pool.ProtocolObjectPool;
@NoArgsConstructor(access = AccessLevel.PRIVATE)
public final class LocationUtils {
//region Unpooled
public static ChunkSectionLocation location2chunk(Location location) {
var chunkSectionLocation = new ChunkSectionLocation();
chunkSectionLocation.set(
(int) location.getX() >> 4,
(int) location.getY() >> 4,
(int) location.getZ() >> 4);
return chunkSectionLocation;
}
public static ChunkSectionLocation location2chunk(BlockLocation blockLocation) {
var chunkSectionLocation = new ChunkSectionLocation();
chunkSectionLocation.set(
blockLocation.getX() >> 4,
blockLocation.getY() >> 4,
blockLocation.getZ() >> 4);
return chunkSectionLocation;
}
//endregion
//region Pooled
public static ChunkSectionLocation location2chunkPooled(Location location) {
ChunkSectionLocation chunkSectionLocation = ProtocolObjectPool.chunkSectionLocation().borrowObject();
chunkSectionLocation.set(
(int) location.getX() >> 4,
(int) location.getY() >> 4,
(int) location.getZ() >> 4);
return chunkSectionLocation;
}
public static ChunkSectionLocation location2chunkPooled(BlockLocation blockLocation) {
ChunkSectionLocation chunkSectionLocation = ProtocolObjectPool.chunkSectionLocation().borrowObject();
chunkSectionLocation.set(
blockLocation.getX() >> 4,
blockLocation.getY() >> 4,
blockLocation.getZ() >> 4);
return chunkSectionLocation;
}
//endregion
}

View File

@@ -1,5 +1,6 @@
package mc.protocol.world;
import mc.protocol.model.ChunkSectionLocation;
import mc.protocol.model.Location;
import mc.protocol.utils.LevelType;
@@ -10,4 +11,5 @@ public interface World {
Location getSpawn();
Chunk getChunk(int x, int z);
Chunk getChunk(ChunkSectionLocation chunkSectionLocation);
}