Skip to content

Commit 647e431

Browse files
committed
Updated ViaVersion API usage
1 parent 3dce510 commit 647e431

11 files changed

Lines changed: 74 additions & 72 deletions

File tree

‎build.gradle‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ repositories {
4343
}
4444

4545
dependencies {
46-
compileOnly "com.viaversion:viaversion-common:5.9.0"
46+
compileOnly "com.viaversion:viaversion-common:5.9.1-SNAPSHOT"
4747
compileOnly "org.yaml:snakeyaml:2.6"
4848
compileOnly "com.google.guava:guava:33.6.0-jre"
4949
compileOnly "io.netty:netty-handler:4.2.12.Final"

‎src/main/java/net/raphimc/viabedrock/api/chunk/blockstate/BlockStateUpgradeSchema.java‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public String toString() {
7070
}
7171

7272
@Override
73-
public synchronized Throwable fillInStackTrace() {
73+
public Throwable fillInStackTrace() {
7474
return this;
7575
}
7676

‎src/main/java/net/raphimc/viabedrock/api/model/scoreboard/ScoreboardObjective.java‎

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,21 @@
2020
import com.viaversion.viaversion.api.connection.UserConnection;
2121
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
2222
import com.viaversion.viaversion.api.type.Types;
23+
import com.viaversion.viaversion.libs.fastutil.longs.Long2ObjectMap;
24+
import com.viaversion.viaversion.libs.fastutil.longs.Long2ObjectOpenHashMap;
2325
import com.viaversion.viaversion.protocols.v1_21_11to26_1.packet.ClientboundPackets26_1;
2426
import net.raphimc.viabedrock.protocol.BedrockProtocol;
2527
import net.raphimc.viabedrock.protocol.data.enums.bedrock.generated.IdentityDefinition_Type;
2628
import net.raphimc.viabedrock.protocol.data.enums.bedrock.generated.ObjectiveSortOrder;
2729

28-
import java.util.HashMap;
29-
import java.util.Map;
30-
3130
public class ScoreboardObjective {
3231

3332
private final String name;
34-
private final Map<Long, ScoreboardEntry> entries;
3533
private final ObjectiveSortOrder sortOrder;
34+
private final Long2ObjectMap<ScoreboardEntry> entries = new Long2ObjectOpenHashMap<>();
3635

3736
public ScoreboardObjective(final String name, final ObjectiveSortOrder sortOrder) {
3837
this.name = name;
39-
this.entries = new HashMap<>();
4038
this.sortOrder = sortOrder;
4139
}
4240

‎src/main/java/net/raphimc/viabedrock/experimental/ExperimentalFeatures.java‎

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import com.viaversion.viaversion.api.minecraft.BlockPosition;
2323
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
2424
import com.viaversion.viaversion.api.type.Types;
25+
import com.viaversion.viaversion.libs.fastutil.longs.LongArrayList;
26+
import com.viaversion.viaversion.libs.fastutil.longs.LongList;
2527
import com.viaversion.viaversion.protocols.v1_21_11to26_1.packet.ClientboundPackets26_1;
2628
import com.viaversion.viaversion.protocols.v1_21_11to26_1.packet.ServerboundPackets26_1;
2729
import net.raphimc.viabedrock.ViaBedrock;
@@ -357,11 +359,11 @@ public static void registerPacketTranslators(final BedrockProtocol protocol) {
357359
final boolean locked = wrapper.read(Types.BOOLEAN); // locked
358360
final BlockPosition origin = wrapper.read(BedrockTypes.BLOCK_POSITION); // origin
359361

360-
final List<Long> trackedEntities = new ArrayList<>();
362+
final LongList trackedEntities = new LongArrayList();
361363
if ((typeFlags & ClientboundMapItemDataPacket_Type.Creation.getValue()) != 0) {
362364
final int length = wrapper.read(BedrockTypes.UNSIGNED_VAR_INT); // length
363365
for (int i = 0; i < length; i++) {
364-
trackedEntities.add(wrapper.read(BedrockTypes.VAR_LONG));
366+
trackedEntities.add(wrapper.read(BedrockTypes.VAR_LONG).longValue());
365367
}
366368
}
367369

‎src/main/java/net/raphimc/viabedrock/experimental/model/map/MapObject.java‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@
1818
package net.raphimc.viabedrock.experimental.model.map;
1919

2020
import com.viaversion.viaversion.api.minecraft.BlockPosition;
21+
import com.viaversion.viaversion.libs.fastutil.longs.LongArrayList;
22+
import com.viaversion.viaversion.libs.fastutil.longs.LongList;
2123

2224
import java.util.ArrayList;
2325
import java.util.List;
@@ -28,7 +30,7 @@ public class MapObject {
2830
private byte dimension;
2931
private boolean locked;
3032
private BlockPosition origin;
31-
private final List<Long> trackedEntities;
33+
private final LongList trackedEntities;
3234
private byte scale;
3335
private final List<MapTrackedObject> trackedObjects;
3436
private final List<MapDecoration> decorations;
@@ -43,14 +45,14 @@ public class MapObject {
4345
public MapObject(long id, int java_id) {
4446
this.id = id;
4547

46-
this.trackedEntities = new ArrayList<>();
48+
this.trackedEntities = new LongArrayList();
4749
this.trackedObjects = new ArrayList<>();
4850
this.decorations = new ArrayList<>();
4951

5052
this.java_id = java_id;
5153
}
5254

53-
public MapObject(long id, byte dimension, boolean locked, BlockPosition origin, List<Long> trackedEntities,
55+
public MapObject(long id, byte dimension, boolean locked, BlockPosition origin, LongList trackedEntities,
5456
byte scale, List<MapTrackedObject> trackedObjects, List<MapDecoration> decorations,
5557
int width, int height, int xOffset, int yOffset, int[] colors, int java_id) {
5658
this.id = id;
@@ -90,7 +92,7 @@ public BlockPosition getOrigin() {
9092
return origin;
9193
}
9294

93-
public List<Long> getTrackedEntities() {
95+
public LongList getTrackedEntities() {
9496
return trackedEntities;
9597
}
9698

‎src/main/java/net/raphimc/viabedrock/experimental/storage/MapTracker.java‎

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,21 +19,20 @@
1919

2020
import com.viaversion.viaversion.api.connection.StoredObject;
2121
import com.viaversion.viaversion.api.connection.UserConnection;
22+
import com.viaversion.viaversion.libs.fastutil.longs.Long2ObjectMap;
23+
import com.viaversion.viaversion.libs.fastutil.longs.Long2ObjectOpenHashMap;
2224
import net.raphimc.viabedrock.experimental.model.map.MapObject;
2325

24-
import java.util.HashMap;
25-
import java.util.Map;
26-
2726
public class MapTracker extends StoredObject {
2827

29-
private final Map<Long, MapObject> mapObjects = new HashMap<>();
28+
private final Long2ObjectMap<MapObject> mapObjects = new Long2ObjectOpenHashMap<>();
3029
private int nextMapId = 0;
3130

3231
public MapTracker(UserConnection user) {
3332
super(user);
3433
}
3534

36-
public Map<Long, MapObject> getMapObjects() {
35+
public Long2ObjectMap<MapObject> getMapObjects() {
3736
return mapObjects;
3837
}
3938

‎src/main/java/net/raphimc/viabedrock/protocol/model/EntityProperties.java‎

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,7 @@
1818
package net.raphimc.viabedrock.protocol.model;
1919

2020
import com.viaversion.viaversion.libs.fastutil.ints.Int2IntMap;
21+
import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap;
2122

22-
import java.util.Map;
23-
24-
public record EntityProperties(Int2IntMap intProperties, Map<Integer, Float> floatProperties) {
23+
public record EntityProperties(Int2IntMap intProperties, Int2ObjectMap<Float> floatProperties) {
2524
}

‎src/main/java/net/raphimc/viabedrock/protocol/storage/BlobCache.java‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,10 @@
2121
import com.viaversion.viaversion.api.connection.StoredObject;
2222
import com.viaversion.viaversion.api.connection.UserConnection;
2323
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
24+
import com.viaversion.viaversion.libs.fastutil.longs.Long2ObjectMap;
25+
import com.viaversion.viaversion.libs.fastutil.longs.Long2ObjectOpenHashMap;
26+
import com.viaversion.viaversion.libs.fastutil.longs.LongArrayList;
27+
import com.viaversion.viaversion.libs.fastutil.longs.LongList;
2428
import io.netty.buffer.ByteBufUtil;
2529
import net.jpountz.xxhash.XXHash64;
2630
import net.jpountz.xxhash.XXHashFactory;
@@ -31,19 +35,15 @@
3135

3236
import java.io.ByteArrayOutputStream;
3337
import java.io.IOException;
34-
import java.util.ArrayList;
35-
import java.util.HashMap;
36-
import java.util.List;
37-
import java.util.Map;
3838
import java.util.concurrent.CompletableFuture;
3939

4040
public class BlobCache extends StoredObject {
4141

4242
private static final XXHash64 XXHASH64 = XXHashFactory.fastestInstance().hash64();
4343

44-
private final Map<Long, CompletableFuture<byte[]>> pending = new HashMap<>();
45-
private final List<Long> missing = new ArrayList<>();
46-
private final List<Long> acked = new ArrayList<>();
44+
private final Long2ObjectMap<CompletableFuture<byte[]>> pending = new Long2ObjectOpenHashMap<>();
45+
private final LongList missing = new LongArrayList();
46+
private final LongList acked = new LongArrayList();
4747

4848
public BlobCache(final UserConnection user) {
4949
super(user);
@@ -54,8 +54,8 @@ public void tick() {
5454
return;
5555
}
5656

57-
final List<Long> missingSubSet = this.missing.subList(0, Math.min(1024, this.missing.size()));
58-
final List<Long> ackedSubSet = this.acked.subList(0, Math.min(1024, this.acked.size()));
57+
final LongList missingSubSet = this.missing.subList(0, Math.min(1024, this.missing.size()));
58+
final LongList ackedSubSet = this.acked.subList(0, Math.min(1024, this.acked.size()));
5959

6060
final PacketWrapper clientCacheBlobStatus = PacketWrapper.create(ServerboundBedrockPackets.CLIENT_CACHE_BLOB_STATUS, this.user());
6161
clientCacheBlobStatus.write(BedrockTypes.UNSIGNED_VAR_INT, missingSubSet.size()); // missing blob count

‎src/main/java/net/raphimc/viabedrock/protocol/storage/ChunkTracker.java‎

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,10 @@
3030
import com.viaversion.viaversion.api.type.Types;
3131
import com.viaversion.viaversion.api.type.types.chunk.ChunkType26_1;
3232
import com.viaversion.viaversion.libs.fastutil.ints.*;
33+
import com.viaversion.viaversion.libs.fastutil.longs.Long2ObjectMap;
34+
import com.viaversion.viaversion.libs.fastutil.longs.Long2ObjectOpenHashMap;
35+
import com.viaversion.viaversion.libs.fastutil.longs.LongOpenHashSet;
36+
import com.viaversion.viaversion.libs.fastutil.longs.LongSet;
3337
import com.viaversion.viaversion.protocols.v1_21_11to26_1.packet.ClientboundPackets26_1;
3438
import com.viaversion.viaversion.util.CompactArrayUtil;
3539
import com.viaversion.viaversion.util.MathUtil;
@@ -73,8 +77,8 @@ public class ChunkTracker extends StoredObject {
7377
private final int worldHeight;
7478
private final Type<Chunk> chunkType;
7579

76-
private final Map<Long, BedrockChunk> chunks = new HashMap<>();
77-
private final Set<Long> dirtyChunks = new HashSet<>();
80+
private final Long2ObjectMap<BedrockChunk> chunks = new Long2ObjectOpenHashMap<>();
81+
private final LongSet dirtyChunks = new LongOpenHashSet();
7882

7983
private final Set<SubChunkPosition> subChunkRequests = new HashSet<>();
8084
private final Set<SubChunkPosition> pendingSubChunks = new HashSet<>();
@@ -436,7 +440,7 @@ public boolean isEmpty() {
436440
}
437441

438442
public void tick() {
439-
for (Long dirtyChunk : this.dirtyChunks) {
443+
for (long dirtyChunk : this.dirtyChunks) {
440444
final ChunkPosition chunkPos = new ChunkPosition(dirtyChunk);
441445
this.sendChunk(chunkPos.chunkX(), chunkPos.chunkZ());
442446
}

‎src/main/java/net/raphimc/viabedrock/protocol/storage/EntityTracker.java‎

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,21 @@
2525
import com.viaversion.viaversion.api.minecraft.entities.EntityTypes1_21_11;
2626
import com.viaversion.viaversion.api.protocol.packet.PacketWrapper;
2727
import com.viaversion.viaversion.api.type.Types;
28+
import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectMap;
29+
import com.viaversion.viaversion.libs.fastutil.ints.Int2ObjectOpenHashMap;
30+
import com.viaversion.viaversion.libs.fastutil.longs.Long2ObjectMap;
31+
import com.viaversion.viaversion.libs.fastutil.longs.Long2ObjectOpenHashMap;
32+
import com.viaversion.viaversion.libs.fastutil.objects.Object2IntMap;
33+
import com.viaversion.viaversion.libs.fastutil.objects.Object2IntOpenHashMap;
2834
import com.viaversion.viaversion.protocols.v1_21_11to26_1.packet.ClientboundPackets26_1;
2935
import net.raphimc.viabedrock.ViaBedrock;
3036
import net.raphimc.viabedrock.api.model.BlockState;
3137
import net.raphimc.viabedrock.api.model.entity.*;
3238
import net.raphimc.viabedrock.protocol.BedrockProtocol;
3339

34-
import java.util.*;
40+
import java.util.ArrayList;
41+
import java.util.List;
42+
import java.util.UUID;
3543
import java.util.concurrent.atomic.AtomicInteger;
3644
import java.util.logging.Level;
3745

@@ -40,10 +48,10 @@ public class EntityTracker extends StoredObject {
4048
private final AtomicInteger ID_COUNTER = new AtomicInteger(1);
4149

4250
private ClientPlayerEntity clientPlayerEntity = null;
43-
private final Map<Long, Entity> entities = new HashMap<>();
44-
private final Map<Long, Long> runtimeIdToUniqueId = new HashMap<>();
45-
private final Map<Integer, Long> javaIdToUniqueId = new HashMap<>();
46-
private final Map<BlockPosition, Integer> itemFrames = new HashMap<>();
51+
private final Long2ObjectMap<Entity> entities = new Long2ObjectOpenHashMap<>();
52+
private final Long2ObjectMap<Long> runtimeIdToUniqueId = new Long2ObjectOpenHashMap<>();
53+
private final Int2ObjectMap<Long> javaIdToUniqueId = new Int2ObjectOpenHashMap<>();
54+
private final Object2IntMap<BlockPosition> itemFrames = new Object2IntOpenHashMap<>();
4755

4856
public EntityTracker(final UserConnection user) {
4957
super(user);
@@ -67,8 +75,8 @@ public <T extends Entity> T addEntity(final T entity) {
6775
}
6876

6977
public <T extends Entity> T addEntity(final T entity, final boolean updateTeam) {
70-
if (entity instanceof ClientPlayerEntity) {
71-
this.clientPlayerEntity = (ClientPlayerEntity) entity;
78+
if (entity instanceof ClientPlayerEntity clientPlayerEntity) {
79+
this.clientPlayerEntity = clientPlayerEntity;
7280
}
7381

7482
final Entity prevEntity = this.entities.put(entity.uniqueId(), entity);
@@ -79,10 +87,10 @@ public <T extends Entity> T addEntity(final T entity, final boolean updateTeam)
7987
removeEntities.write(Types.VAR_INT_ARRAY_PRIMITIVE, new int[]{prevEntity.javaId()}); // entity ids
8088
removeEntities.send(BedrockProtocol.class);
8189
}
82-
if (this.javaIdToUniqueId.put(entity.javaId(), entity.uniqueId()) != null) {
90+
if (this.javaIdToUniqueId.put(entity.javaId(), (Long) entity.uniqueId()) != null) {
8391
ViaBedrock.getPlatform().getLogger().log(Level.WARNING, "Duplicate Java entity ID: " + entity.javaId());
8492
}
85-
if (this.runtimeIdToUniqueId.putIfAbsent(entity.runtimeId(), entity.uniqueId()) != null) {
93+
if (this.runtimeIdToUniqueId.putIfAbsent(entity.runtimeId(), (Long) entity.uniqueId()) != null) {
8694
ViaBedrock.getPlatform().getLogger().log(Level.WARNING, "Duplicate entity runtime ID: " + entity.runtimeId());
8795
}
8896

@@ -129,31 +137,22 @@ public void spawnItemFrame(final BlockPosition position, final BlockState blockS
129137
spawnEntity.send(BedrockProtocol.class);
130138
}
131139

132-
public int getItemFrameId(final BlockPosition position) {
133-
return this.itemFrames.getOrDefault(position, -1);
134-
}
135-
136140
public void removeItemFrame(final BlockPosition position) {
137-
final Integer javaId = this.itemFrames.remove(position);
138-
if (javaId == null) {
139-
return;
141+
if (this.itemFrames.containsKey(position)) {
142+
final PacketWrapper removeEntities = PacketWrapper.create(ClientboundPackets26_1.REMOVE_ENTITIES, this.user());
143+
removeEntities.write(Types.VAR_INT_ARRAY_PRIMITIVE, new int[]{this.itemFrames.getInt(position)}); // entity ids
144+
removeEntities.send(BedrockProtocol.class);
140145
}
141-
142-
final PacketWrapper removeEntities = PacketWrapper.create(ClientboundPackets26_1.REMOVE_ENTITIES, this.user());
143-
removeEntities.write(Types.VAR_INT_ARRAY_PRIMITIVE, new int[]{javaId}); // entity ids
144-
removeEntities.send(BedrockProtocol.class);
145146
}
146147

147148
public void removeItemFrame(final ChunkPosition chunkPos) {
148149
final List<BlockPosition> toRemove = new ArrayList<>();
149-
for (final Map.Entry<BlockPosition, Integer> entry : this.itemFrames.entrySet()) {
150-
final BlockPosition position = entry.getKey();
150+
for (BlockPosition position : this.itemFrames.keySet()) {
151151
if (position.x() >> 4 == chunkPos.chunkX() && position.z() >> 4 == chunkPos.chunkZ()) {
152152
toRemove.add(position);
153153
}
154154
}
155-
156-
for (final BlockPosition position : toRemove) {
155+
for (BlockPosition position : toRemove) {
157156
this.removeItemFrame(position);
158157
}
159158
}
@@ -173,15 +172,15 @@ public void prepareForRespawn() {
173172
}
174173

175174
public Entity getEntityByRid(final long runtimeId) {
176-
return this.entities.get(this.runtimeIdToUniqueId.get(runtimeId));
175+
return this.entities.get(this.runtimeIdToUniqueId.get(runtimeId).longValue());
177176
}
178177

179178
public Entity getEntityByUid(final long uniqueId) {
180179
return this.entities.get(uniqueId);
181180
}
182181

183182
public Entity getEntityByJid(final int javaId) {
184-
return this.entities.get(this.javaIdToUniqueId.get(javaId));
183+
return this.entities.get(this.javaIdToUniqueId.get(javaId).longValue());
185184
}
186185

187186
public ClientPlayerEntity getClientPlayer() {

0 commit comments

Comments
 (0)