Skip to content

Commit 1dc26dc

Browse files
committed
Merge branch 'release/2.5.3' of https://github.com/NukkitX/Protocol
� Conflicts: � README.md � bedrock/bedrock-common/pom.xml � bedrock/bedrock-v291/pom.xml � bedrock/bedrock-v313/pom.xml � bedrock/bedrock-v332/pom.xml � bedrock/bedrock-v340/pom.xml � bedrock/bedrock-v354/pom.xml � bedrock/bedrock-v361/pom.xml � bedrock/bedrock-v388/pom.xml � bedrock/bedrock-v389/pom.xml � bedrock/pom.xml � common/pom.xml � pom.xml
2 parents de292bc + 5416d47 commit 1dc26dc

File tree

280 files changed

+1007
-939
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

280 files changed

+1007
-939
lines changed

LICENSE

Lines changed: 201 additions & 164 deletions
Large diffs are not rendered by default.

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ server.bind().join();
145145
<dependency>
146146
<groupId>com.nukkitx.protocol</groupId>
147147
<artifactId>bedrock-v(VERSION)</artifactId>
148-
<version>2.5.2</version>
148+
<version>2.5.3</version>
149149
<scope>compile</scope>
150150
</dependency>
151151
</dependencies>

bedrock/bedrock-common/pom.xml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>bedrock-parent</artifactId>
77
<groupId>com.nukkitx.protocol</groupId>
8-
<version>2.5.2</version>
8+
<version>2.5.3</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

@@ -30,6 +30,18 @@
3030
<version>4.41.2</version>
3131
<scope>compile</scope>
3232
</dependency>
33+
<dependency>
34+
<groupId>com.nukkitx.fastutil</groupId>
35+
<artifactId>fastutil-long-common</artifactId>
36+
<version>8.3.1</version>
37+
<scope>compile</scope>
38+
</dependency>
39+
<dependency>
40+
<groupId>com.nukkitx.fastutil</groupId>
41+
<artifactId>fastutil-long-object-maps</artifactId>
42+
<version>8.3.1</version>
43+
<scope>compile</scope>
44+
</dependency>
3345
</dependencies>
3446

3547
<build>

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/BedrockPacketCodec.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,14 @@
55
import com.nukkitx.protocol.bedrock.packet.PacketHeader;
66
import com.nukkitx.protocol.bedrock.packet.UnknownPacket;
77
import com.nukkitx.protocol.serializer.PacketSerializer;
8-
import com.nukkitx.protocol.util.TIntHashBiMap;
9-
import gnu.trove.iterator.TIntObjectIterator;
10-
import gnu.trove.map.TIntObjectMap;
11-
import gnu.trove.map.hash.TIntObjectHashMap;
8+
import com.nukkitx.protocol.util.Int2ObjectBiMap;
129
import io.netty.buffer.ByteBuf;
1310
import io.netty.buffer.PooledByteBufAllocator;
1411
import io.netty.util.ReferenceCountUtil;
1512
import io.netty.util.internal.logging.InternalLogger;
1613
import io.netty.util.internal.logging.InternalLoggerFactory;
14+
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
15+
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
1716
import lombok.AccessLevel;
1817
import lombok.Getter;
1918
import lombok.NoArgsConstructor;
@@ -33,7 +32,7 @@ public final class BedrockPacketCodec {
3332
@Getter
3433
private final String minecraftVersion;
3534
private final PacketSerializer<BedrockPacket>[] serializers;
36-
private final TIntHashBiMap<Class<? extends BedrockPacket>> idBiMap;
35+
private final Int2ObjectBiMap<Class<? extends BedrockPacket>> idBiMap;
3736
private final PacketSerializer<PacketHeader> headerSerializer;
3837

3938
public static Builder builder() {
@@ -104,8 +103,8 @@ public int getId(Class<? extends BedrockPacket> clazz) {
104103
@SuppressWarnings("unchecked")
105104
@NoArgsConstructor(access = AccessLevel.PRIVATE)
106105
public static class Builder {
107-
private final TIntObjectMap<PacketSerializer<BedrockPacket>> serializers = new TIntObjectHashMap<>();
108-
private final TIntHashBiMap<Class<? extends BedrockPacket>> idBiMap = new TIntHashBiMap<>((Class) UnknownPacket.class);
106+
private final Int2ObjectMap<PacketSerializer<BedrockPacket>> serializers = new Int2ObjectOpenHashMap<>();
107+
private final Int2ObjectBiMap<Class<? extends BedrockPacket>> idBiMap = new Int2ObjectBiMap<>(UnknownPacket.class);
109108
private int protocolVersion = -1;
110109
private String minecraftVersion = null;
111110
private PacketSerializer<PacketHeader> headerSerializer = null;
@@ -146,19 +145,16 @@ public BedrockPacketCodec build() {
146145
Preconditions.checkNotNull(minecraftVersion, "No Minecraft version defined");
147146
Preconditions.checkNotNull(headerSerializer, "headerSerializer cannot be null");
148147
int largestId = -1;
149-
for (int id : serializers.keys()) {
148+
for (int id : serializers.keySet()) {
150149
if (id > largestId) {
151150
largestId = id;
152151
}
153152
}
154153
Preconditions.checkArgument(largestId > -1, "Must have at least one packet registered");
155154
PacketSerializer<BedrockPacket>[] serializers = new PacketSerializer[largestId + 1];
156155

157-
TIntObjectIterator<PacketSerializer<BedrockPacket>> iterator = this.serializers.iterator();
158-
159-
while (iterator.hasNext()) {
160-
iterator.advance();
161-
serializers[iterator.key()] = iterator.value();
156+
for (Int2ObjectMap.Entry<PacketSerializer<BedrockPacket>> entry : this.serializers.int2ObjectEntrySet()) {
157+
serializers[entry.getIntKey()] = entry.getValue();
162158
}
163159
return new BedrockPacketCodec(protocolVersion, minecraftVersion, serializers, idBiMap, headerSerializer);
164160
}

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/data/CommandData.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,12 +28,14 @@ public String toString() {
2828
overloads.append("]\r\n");
2929

3030
StringBuilder builder = new StringBuilder("CommandData(\r\n");
31-
List objects = Arrays.asList("name=" + name, "description=" + description, "flags=" + Arrays.toString(flags.toArray()), "permission=" + permission, "aliases=" + aliases, "overloads=" + overloads);
31+
List<?> objects = Arrays.asList("name=" + name, "description=" + description,
32+
"flags=" + Arrays.toString(flags.toArray()), "permission=" + permission, "aliases=" + aliases,
33+
"overloads=" + overloads);
3234

3335
for (Object object : objects) {
3436
builder.append(" ").append(Objects.toString(object).replaceAll("\r\n", "\r\n ")).append("\r\n");
3537
}
36-
return builder.toString();
38+
return builder.append(")").toString();
3739
}
3840

3941
@Value

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/data/CommandParamData.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ public enum Type {
2828
INT_RANGE,
2929
STRING,
3030
POSITION,
31+
BLOCK_POSITION,
3132
MESSAGE,
3233
TEXT,
3334
JSON,

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/data/ContainerType.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.nukkitx.protocol.bedrock.data;
22

3-
import gnu.trove.map.TIntObjectMap;
4-
import gnu.trove.map.hash.TIntObjectHashMap;
3+
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
4+
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
55

66
public enum ContainerType {
77
UNTRACKED_UI_INTERACTION(-9),
@@ -29,7 +29,7 @@ public enum ContainerType {
2929
MATERIAL_REDUCER(22),
3030
LAB_TABLE(23);
3131

32-
public static final TIntObjectMap<ContainerType> BY_ID = new TIntObjectHashMap<>();
32+
public static final Int2ObjectMap<ContainerType> BY_ID = new Int2ObjectOpenHashMap<>();
3333

3434
static {
3535
for (ContainerType type : values()) {

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/data/EntityDataMap.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,15 @@ public EntityDataMap putVector3f(EntityData key, Vector3f value) {
133133
return this;
134134
}
135135

136+
@Nonnull
137+
public EntityFlags getOrCreateFlags() {
138+
EntityFlags flags = this.getFlags();
139+
if (flags == null) {
140+
this.putFlags(flags = new EntityFlags());
141+
}
142+
return flags;
143+
}
144+
136145
public EntityFlags getFlags() {
137146
return (EntityFlags) this.map.get(FLAGS);
138147
}
@@ -242,6 +251,19 @@ public Set<Entry<EntityData, Object>> entrySet() {
242251
return this.map.entrySet();
243252
}
244253

254+
@Override
255+
public boolean equals(Object o) {
256+
if (this == o) return true;
257+
if (o == null || getClass() != o.getClass()) return false;
258+
EntityDataMap that = (EntityDataMap) o;
259+
return this.map.equals(that.map);
260+
}
261+
262+
@Override
263+
public int hashCode() {
264+
return this.map.hashCode();
265+
}
266+
245267
@Override
246268
public String toString() {
247269
return map.toString();

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/data/EntityFlags.java

Lines changed: 21 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,39 +1,20 @@
11
package com.nukkitx.protocol.bedrock.data;
22

33
import com.nukkitx.network.util.Preconditions;
4-
import com.nukkitx.protocol.util.TIntHashBiMap;
4+
import com.nukkitx.protocol.util.Int2ObjectBiMap;
55
import io.netty.util.internal.logging.InternalLogger;
66
import io.netty.util.internal.logging.InternalLoggerFactory;
7+
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
78
import lombok.ToString;
89

910
import javax.annotation.Nonnull;
10-
import java.util.HashSet;
11-
import java.util.Objects;
1211
import java.util.Set;
1312

1413
@ToString
1514
public class EntityFlags {
1615
private static final InternalLogger log = InternalLoggerFactory.getInstance(EntityFlags.class);
1716

18-
private final Set<EntityFlag> flags = new HashSet<>();
19-
20-
public static EntityFlags create(long value, int index, TIntHashBiMap<EntityFlag> flagMappings) {
21-
EntityFlags flags = new EntityFlags();
22-
final int lower = index * 64;
23-
final int upper = lower + 64;
24-
for (int i = lower; i < upper; i++) {
25-
int idx = i & 0x3f;
26-
if ((value & (1L << idx)) != 0) {
27-
EntityFlag flag = flagMappings.get(i);
28-
if (flag != null) {
29-
flags.flags.add(flag);
30-
} else {
31-
log.debug("Unknown Metadata flag index {} detected", i);
32-
}
33-
}
34-
}
35-
return flags;
36-
}
17+
private final Set<EntityFlag> flags = new ObjectOpenHashSet<>();
3718

3819
/**
3920
* Set {@link EntityFlag} value
@@ -66,7 +47,7 @@ public boolean getFlag(@Nonnull EntityFlag flag) {
6647
return flags.contains(flag);
6748
}
6849

69-
public long get(int index, TIntHashBiMap<EntityFlag> flagMappings) {
50+
public long get(int index, Int2ObjectBiMap<EntityFlag> flagMappings) {
7051
long value = 0;
7152
final int lower = index * 64;
7253
final int upper = lower + 64;
@@ -79,12 +60,28 @@ public long get(int index, TIntHashBiMap<EntityFlag> flagMappings) {
7960
return value;
8061
}
8162

63+
public void set(long value, int index, Int2ObjectBiMap<EntityFlag> flagMappings) {
64+
final int lower = index * 64;
65+
final int upper = lower + 64;
66+
for (int i = lower; i < upper; i++) {
67+
int idx = i & 0x3f;
68+
if ((value & (1L << idx)) != 0) {
69+
EntityFlag flag = flagMappings.get(i);
70+
if (flag != null) {
71+
flags.add(flag);
72+
} else {
73+
log.debug("Unknown entity flag index {} detected", i);
74+
}
75+
}
76+
}
77+
}
78+
8279
@Override
8380
public boolean equals(Object o) {
8481
if (o == this) return true;
8582
if (!(o instanceof EntityFlags)) return false;
8683
EntityFlags that = (EntityFlags) o;
87-
return Objects.equals(this.flags, that.flags);
84+
return this.flags.equals(that.flags);
8885
}
8986

9087
@Override

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/data/GameRuleData.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,9 @@
66
public class GameRuleData<T> {
77
private final String name;
88
private final T value;
9+
10+
@Override
11+
public String toString() {
12+
return this.name + '=' + this.value;
13+
}
914
}

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/data/ImageData.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.nukkitx.protocol.bedrock.data;
22

3-
import lombok.AccessLevel;
4-
import lombok.Getter;
5-
import lombok.RequiredArgsConstructor;
6-
import lombok.ToString;
3+
import lombok.*;
74

85
import java.awt.*;
96
import java.awt.image.BufferedImage;
@@ -12,6 +9,7 @@
129

1310
@Getter
1411
@ToString(exclude = {"image"})
12+
@EqualsAndHashCode(doNotUseGetters = true)
1513
@RequiredArgsConstructor(access = AccessLevel.PACKAGE)
1614
public class ImageData {
1715
public static final ImageData EMPTY = new ImageData(0, 0, new byte[0]);

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/data/InventorySource.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.nukkitx.protocol.bedrock.data;
22

33
import com.nukkitx.network.util.Preconditions;
4-
import gnu.trove.map.TIntObjectMap;
5-
import gnu.trove.map.hash.TIntObjectHashMap;
4+
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
5+
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
66
import lombok.AccessLevel;
77
import lombok.RequiredArgsConstructor;
88
import lombok.Value;
@@ -60,7 +60,7 @@ public enum Type {
6060
UNTRACKED_INTERACTION_UI(100),
6161
NON_IMPLEMENTED_TODO(99999);
6262

63-
private static final TIntObjectMap<Type> BY_ID = new TIntObjectHashMap<>(6);
63+
private static final Int2ObjectMap<Type> BY_ID = new Int2ObjectOpenHashMap<>(6);
6464

6565
static {
6666
for (Type type : values()) {

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/data/SerializedSkin.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
package com.nukkitx.protocol.bedrock.data;
22

3-
import lombok.AccessLevel;
4-
import lombok.Getter;
5-
import lombok.RequiredArgsConstructor;
6-
import lombok.ToString;
3+
import lombok.*;
74
import net.minidev.json.JSONObject;
85
import net.minidev.json.JSONValue;
96

@@ -15,6 +12,7 @@
1512

1613
@Getter
1714
@ToString(exclude = {"geometryData"})
15+
@EqualsAndHashCode
1816
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
1917
public class SerializedSkin {
2018
private static final int PIXEL_SIZE = 4;

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/packet/AddBehaviorTreePacket.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import lombok.EqualsAndHashCode;
88

99
@Data
10-
@EqualsAndHashCode(callSuper = false)
10+
@EqualsAndHashCode(doNotUseGetters = true, callSuper = false)
1111
public class AddBehaviorTreePacket extends BedrockPacket {
1212
private String behaviorTreeJson;
1313

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/packet/AddEntityPacket.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
import java.util.List;
1515

1616
@Data
17-
@EqualsAndHashCode(callSuper = false)
17+
@EqualsAndHashCode(doNotUseGetters = true, callSuper = false)
1818
public class AddEntityPacket extends BedrockPacket {
1919
private final List<Attribute> attributes = new ArrayList<>();
2020
private final EntityDataMap metadata = new EntityDataMap();

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/packet/AddHangingEntityPacket.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import lombok.EqualsAndHashCode;
99

1010
@Data
11-
@EqualsAndHashCode(callSuper = false)
11+
@EqualsAndHashCode(doNotUseGetters = true, callSuper = false)
1212
public class AddHangingEntityPacket extends BedrockPacket {
1313
private long uniqueEntityId;
1414
private long runtimeEntityId;

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/packet/AddItemEntityPacket.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import lombok.EqualsAndHashCode;
1111

1212
@Data
13-
@EqualsAndHashCode(callSuper = false)
13+
@EqualsAndHashCode(doNotUseGetters = true, callSuper = false)
1414
public class AddItemEntityPacket extends BedrockPacket {
1515
private final EntityDataMap metadata = new EntityDataMap();
1616
private long uniqueEntityId;

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/packet/AddPaintingPacket.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import lombok.ToString;
88

99
@Data
10-
@EqualsAndHashCode(callSuper = false)
10+
@EqualsAndHashCode(doNotUseGetters = true, callSuper = false)
1111
@ToString(callSuper = false)
1212
public class AddPaintingPacket extends AddHangingEntityPacket {
1313
private String name;

bedrock/bedrock-common/src/main/java/com/nukkitx/protocol/bedrock/packet/AddPlayerPacket.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
import java.util.UUID;
1616

1717
@Data
18-
@EqualsAndHashCode(callSuper = false)
18+
@EqualsAndHashCode(doNotUseGetters = true, callSuper = false)
1919
public class AddPlayerPacket extends BedrockPacket {
2020
private final EntityDataMap metadata = new EntityDataMap();
2121
private final List<EntityLink> entityLinks = new ArrayList<>();

0 commit comments

Comments
 (0)