Skip to content

Commit 157fe23

Browse files
committed
Fix #1 & concurrency issue
- Updated docs
1 parent d6f27dd commit 157fe23

5 files changed

Lines changed: 24 additions & 10 deletions

File tree

README.md

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -226,11 +226,17 @@ public record MyPayloadTwo(Player player) implements Payload {
226226

227227
@PayloadDeserializer
228228
public static MyPayloadTwo deserialize(ByteBuf buf) {
229-
UUID uuid = SerializationImpl.getInternalDeserializer(UUID.class).apply(buf);
230-
Player player = Bukkit.getPlayer(uuid);
231-
assert player != null;
232-
233-
return new MyPayloadTwo(player);
229+
try {
230+
UUID uuid = SerializationImpl.getInternalDeserializer(UUID.class).apply(buf);
231+
Player player = Bukkit.getPlayer(uuid);
232+
assert player != null;
233+
234+
return new MyPayloadTwo(player);
235+
} catch (RuntimeException ex) {
236+
// This is required due to we're using an pooled buffer internally
237+
buf.release();
238+
throw ex;
239+
}
234240
}
235241
}
236242
```

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ plugins {
66
}
77

88
group = 'top.nlrdev'
9-
version = '0.0.2-SNAPSHOT'
9+
version = rootProject.plugin_version
1010

1111
subprojects {
1212
apply plugin: 'java'

core/build.gradle

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,10 @@ tasks {
8787
}
8888

8989
processResources {
90-
def props = [version: version]
90+
def props = [
91+
version: version + (Integer.parseInt(rootProject.hotfix_number) > 0 ? '+hotfix.' + rootProject.hotfix_number : '')
92+
]
93+
9194
inputs.properties props
9295
filteringCharset = 'UTF-8'
9396
filesMatching('plugin.yml') {

core/src/main/java/top/nlrdev/payloadlib/serialization/SerializationImpl.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,14 @@
2121
import java.lang.invoke.VarHandle;
2222
import java.util.HashMap;
2323
import java.util.UUID;
24+
import java.util.concurrent.ConcurrentHashMap;
2425
import java.util.function.BiConsumer;
2526
import java.util.function.Function;
2627

2728
public class SerializationImpl {
2829
private static final HashMap<Class<?>, BiConsumer<ByteBuf, ?>> INTERNAL_SERIALIZERS = new HashMap<>();
2930
private static final HashMap<Class<?>, Function<ByteBuf, ?>> INTERNAL_DESERIALIZERS = new HashMap<>();
30-
private static final HashMap<Class<?>, TypeBinding<?>> TYPE_BINDINGS = new HashMap<>();
31+
private static final ConcurrentHashMap<Class<?>, TypeBinding<?>> TYPE_BINDINGS = new ConcurrentHashMap<>();
3132

3233
// TODO: Collection, Map, Optional, Nullable, Bit Set, Enum Set, NBT(WTF?), Registry,
3334
// TODO: BlockHitResult
@@ -162,7 +163,7 @@ public static <T extends Payload> T deserialize(@NotNull Identifier id, @NotNull
162163

163164
TypeBinding<?> customBinding = TYPE_BINDINGS.get(varType);
164165
if (customBinding != null) {
165-
customBinding.deserializer().apply(buf);
166+
deserialized[i] = customBinding.deserializer().apply(buf);
166167
continue;
167168
}
168169

gradle.properties

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,5 @@
1-
org.gradle.parallel=true
1+
org.gradle.parallel=true
2+
org.gradle.configureondemand=true
3+
4+
plugin_version=0.0.2-SNAPSHOT
5+
hotfix_number=1

0 commit comments

Comments
 (0)