Skip to content

Commit 894784e

Browse files
authored
1.1.14: Move registerPacket to Limbo interface (#96)
1 parent e9f6f27 commit 894784e

9 files changed

Lines changed: 94 additions & 63 deletions

File tree

VERSION

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.1.13
1+
1.1.14

api/src/main/java/net/elytrium/limboapi/api/Limbo.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,11 @@
1010
import com.velocitypowered.api.command.Command;
1111
import com.velocitypowered.api.command.CommandMeta;
1212
import com.velocitypowered.api.proxy.Player;
13+
import java.util.function.Supplier;
1314
import net.elytrium.limboapi.api.command.LimboCommandMeta;
1415
import net.elytrium.limboapi.api.player.GameMode;
16+
import net.elytrium.limboapi.api.protocol.PacketDirection;
17+
import net.elytrium.limboapi.api.protocol.packets.PacketMapping;
1518

1619
public interface Limbo {
1720

@@ -47,5 +50,7 @@ public interface Limbo {
4750

4851
Limbo registerCommand(CommandMeta commandMeta, Command command);
4952

53+
Limbo registerPacket(PacketDirection direction, Class<?> packetClass, Supplier<?> packetSupplier, PacketMapping[] packetMappings);
54+
5055
void dispose();
5156
}

api/src/main/java/net/elytrium/limboapi/api/LimboFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,9 @@ public interface LimboFactory {
196196
* @param packetClass Packet class.
197197
* @param packetSupplier Packet supplier to make a new instance. (::new)
198198
* @param packetMappings Packet id mappings.
199+
* @deprecated Use {@link Limbo#registerPacket} instead.
199200
*/
201+
@Deprecated(forRemoval = true)
200202
void registerPacket(PacketDirection direction, Class<?> packetClass, Supplier<?> packetSupplier, PacketMapping[] packetMappings);
201203

202204
/**

api/src/main/java/net/elytrium/limboapi/api/LimboSessionHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ default void onChat(String chat) {
4040
}
4141

4242
/**
43-
* @param packet Any velocity built-in packet or any packet registered via {@link LimboFactory#registerPacket}.
43+
* @param packet Any velocity built-in packet or any packet registered via {@link Limbo#registerPacket}.
4444
*/
4545
default void onGeneric(Object packet) {
4646

build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ allprojects {
1313
apply(plugin: "org.cadixdev.licenser")
1414

1515
setGroup("net.elytrium.limboapi")
16-
setVersion("1.1.13")
16+
setVersion("1.1.14")
1717

1818
compileJava {
1919
getOptions().setEncoding("UTF-8")

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
fastPrepareVersion=1.0.5
1+
fastPrepareVersion=1.0.7
22
velocityVersion=3.2.0-SNAPSHOT
33
nettyVersion=4.1.86.Final
44
fastutilVersion=8.5.11

plugin/src/main/java/net/elytrium/limboapi/LimboAPI.java

Lines changed: 5 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -124,7 +124,6 @@
124124
@SuppressFBWarnings("MS_EXPOSE_REP")
125125
public class LimboAPI implements LimboFactory {
126126

127-
private static final Map<Class<?>, Class<?>> PRIMITIVE_WRAPPER_MAP = new HashMap<>();
128127
private static final int SUPPORTED_MAXIMUM_PROTOCOL_VERSION_NUMBER = 763;
129128

130129
@MonotonicNonNull
@@ -435,17 +434,9 @@ public void fixCompressor(ChannelPipeline pipeline, ProtocolVersion version) {
435434
}
436435
}
437436

438-
private Class<?> primitiveToWrapper(Class<?> cls) {
439-
if (cls.isPrimitive()) {
440-
return PRIMITIVE_WRAPPER_MAP.get(cls);
441-
} else {
442-
return cls;
443-
}
444-
}
445-
446437
@Override
447438
public void registerPacket(PacketDirection direction, Class<?> packetClass, Supplier<?> packetSupplier, PacketMapping[] packetMappings) {
448-
LimboProtocol.register(direction, packetClass, packetSupplier, packetMappings);
439+
throw new UnsupportedOperationException();
449440
}
450441

451442
@Override
@@ -568,6 +559,10 @@ public boolean isCompressionEnabled() {
568559
return this.compressionEnabled;
569560
}
570561

562+
public PreparedPacketFactory getPreparedPacketFactory() {
563+
return this.preparedPacketFactory;
564+
}
565+
571566
public ProtocolVersion getPrepareMinVersion() {
572567
return this.minVersion;
573568
}
@@ -591,18 +586,6 @@ public WorldFile openWorldFile(BuiltInWorldFileType apiType, CompoundBinaryTag t
591586
return WorldFileTypeRegistry.fromApiType(apiType, tag);
592587
}
593588

594-
static {
595-
PRIMITIVE_WRAPPER_MAP.put(Boolean.TYPE, Boolean.class);
596-
PRIMITIVE_WRAPPER_MAP.put(Byte.TYPE, Byte.class);
597-
PRIMITIVE_WRAPPER_MAP.put(Character.TYPE, Character.class);
598-
PRIMITIVE_WRAPPER_MAP.put(Short.TYPE, Short.class);
599-
PRIMITIVE_WRAPPER_MAP.put(Integer.TYPE, Integer.class);
600-
PRIMITIVE_WRAPPER_MAP.put(Long.TYPE, Long.class);
601-
PRIMITIVE_WRAPPER_MAP.put(Double.TYPE, Double.class);
602-
PRIMITIVE_WRAPPER_MAP.put(Float.TYPE, Float.class);
603-
PRIMITIVE_WRAPPER_MAP.put(Void.TYPE, Void.TYPE);
604-
}
605-
606589
private static void setLogger(Logger logger) {
607590
LOGGER = logger;
608591
}

plugin/src/main/java/net/elytrium/limboapi/protocol/LimboProtocol.java

Lines changed: 59 additions & 35 deletions
Large diffs are not rendered by default.

plugin/src/main/java/net/elytrium/limboapi/server/LimboImpl.java

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
import com.velocitypowered.proxy.network.Connections;
4040
import com.velocitypowered.proxy.protocol.MinecraftPacket;
4141
import com.velocitypowered.proxy.protocol.ProtocolUtils;
42+
import com.velocitypowered.proxy.protocol.StateRegistry;
4243
import com.velocitypowered.proxy.protocol.VelocityConnectionEvent;
4344
import com.velocitypowered.proxy.protocol.packet.AvailableCommands;
4445
import com.velocitypowered.proxy.protocol.packet.JoinGame;
@@ -70,6 +71,7 @@
7071
import java.util.concurrent.atomic.LongAdder;
7172
import java.util.concurrent.locks.ReadWriteLock;
7273
import java.util.concurrent.locks.ReentrantReadWriteLock;
74+
import java.util.function.Supplier;
7375
import net.elytrium.commons.utils.reflection.ReflectionException;
7476
import net.elytrium.fastprepare.PreparedPacketFactory;
7577
import net.elytrium.limboapi.LimboAPI;
@@ -81,7 +83,9 @@
8183
import net.elytrium.limboapi.api.chunk.VirtualWorld;
8284
import net.elytrium.limboapi.api.command.LimboCommandMeta;
8385
import net.elytrium.limboapi.api.player.GameMode;
86+
import net.elytrium.limboapi.api.protocol.PacketDirection;
8487
import net.elytrium.limboapi.api.protocol.PreparedPacket;
88+
import net.elytrium.limboapi.api.protocol.packets.PacketMapping;
8589
import net.elytrium.limboapi.injection.packet.MinecraftLimitedCompressDecoder;
8690
import net.elytrium.limboapi.material.Biome;
8791
import net.elytrium.limboapi.protocol.LimboProtocol;
@@ -143,6 +147,7 @@ public class LimboImpl implements Limbo {
143147
private PreparedPacket firstChunks;
144148
private List<PreparedPacket> delayedChunks;
145149
private PreparedPacket respawnPackets;
150+
private StateRegistry localStateRegistry;
146151
private boolean shouldRespawn = true;
147152
private boolean shouldRejoin = true;
148153
private boolean shouldUpdateTags = true;
@@ -155,6 +160,7 @@ public class LimboImpl implements Limbo {
155160
public LimboImpl(LimboAPI plugin, VirtualWorld world) {
156161
this.plugin = plugin;
157162
this.world = world;
163+
this.localStateRegistry = LimboProtocol.getLimboStateRegistry();
158164

159165
this.refresh();
160166
}
@@ -240,8 +246,8 @@ public void spawnPlayer(Player apiPlayer, LimboSessionHandler handler) {
240246

241247
boolean shouldSpawnPlayerImmediately = true;
242248

243-
if (connection.getState() != LimboProtocol.getLimboStateRegistry()) {
244-
connection.eventLoop().execute(() -> connection.setState(LimboProtocol.getLimboStateRegistry()));
249+
if (connection.getState() != this.localStateRegistry) {
250+
connection.eventLoop().execute(() -> connection.setState(this.localStateRegistry));
245251
VelocityServerConnection server = player.getConnectedServer();
246252
if (server != null) {
247253
RegisteredServer previousServer = server.getServer();
@@ -525,6 +531,17 @@ public Limbo registerCommand(CommandMeta commandMeta, Command command) {
525531
throw new IllegalArgumentException(command + " does not implement a registrable Command sub-interface.");
526532
}
527533

534+
public Limbo registerPacket(PacketDirection direction, Class<?> packetClass, Supplier<?> packetSupplier, PacketMapping[] packetMappings) {
535+
if (this.localStateRegistry == LimboProtocol.getLimboStateRegistry()) {
536+
this.localStateRegistry = LimboProtocol.createLocalStateRegistry();
537+
this.plugin.getPreparedPacketFactory().addStateRegistry(this.localStateRegistry);
538+
}
539+
540+
LimboProtocol.register(this.localStateRegistry, direction, packetClass, packetSupplier, packetMappings);
541+
542+
return this;
543+
}
544+
528545
@Override
529546
public void dispose() {
530547
if (this.getCurrentOnline() == 0) {

0 commit comments

Comments
 (0)