Compare commits

...

5 commits

Author SHA1 Message Date
Alex
f196c0cef5
Merge e6acb395fb into 8150091888 2024-11-20 18:02:15 +00:00
AlexProgrammerDE
e6acb395fb Allow server to define packet handler executor factory 2024-11-20 19:02:08 +01:00
Eclipse
8150091888
Fix equippable component writing (#868)
Some checks failed
Java CI with Gradle / build (push) Has been cancelled
Deploy / build (push) Has been cancelled
2024-11-07 19:03:03 +08:00
basaigh
88188c5b39
Merge pull request #867 from AJ-Ferguson/lock-nbt
Read lock data component as compound nbt
2024-11-07 10:07:35 +00:00
AJ Ferguson
f82aa5bc87 Read lock data component as compound nbt 2024-11-07 04:44:11 -05:00
4 changed files with 13 additions and 12 deletions

View file

@ -19,17 +19,24 @@ import org.slf4j.LoggerFactory;
import java.net.InetSocketAddress;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.Executor;
import java.util.function.Supplier;
public class TcpServer extends AbstractServer {
private static final TransportHelper.TransportType TRANSPORT_TYPE = TransportHelper.determineTransportMethod();
private static final Logger log = LoggerFactory.getLogger(TcpServer.class);
private final Supplier<Executor> packetHandlerExecutorFactory;
private EventLoopGroup group;
private Channel channel;
public TcpServer(String host, int port, Supplier<? extends PacketProtocol> protocol) {
this(host, port, protocol, DefaultPacketHandlerExecutor::createExecutor);
}
public TcpServer(String host, int port, Supplier<? extends PacketProtocol> protocol, Supplier<Executor> packetHandlerExecutorFactory) {
super(host, port, protocol);
this.packetHandlerExecutorFactory = packetHandlerExecutorFactory;
}
@Override
@ -57,7 +64,7 @@ public class TcpServer extends AbstractServer {
InetSocketAddress address = (InetSocketAddress) channel.remoteAddress();
PacketProtocol protocol = createPacketProtocol();
TcpSession session = new TcpServerSession(address.getHostName(), address.getPort(), protocol, TcpServer.this);
TcpSession session = new TcpServerSession(address.getHostName(), address.getPort(), protocol, TcpServer.this, packetHandlerExecutorFactory.get());
session.getPacketProtocol().newServerSession(TcpServer.this, session);
ChannelPipeline pipeline = channel.pipeline();

View file

@ -7,13 +7,14 @@ import org.geysermc.mcprotocollib.network.packet.PacketProtocol;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.Executor;
public class TcpServerSession extends TcpSession {
private final TcpServer server;
private final PacketCodecHelper codecHelper;
public TcpServerSession(String host, int port, PacketProtocol protocol, TcpServer server) {
super(host, port, protocol, DefaultPacketHandlerExecutor.createExecutor());
public TcpServerSession(String host, int port, PacketProtocol protocol, TcpServer server, Executor packetHandlerExecutor) {
super(host, port, protocol, packetHandlerExecutor);
this.server = server;
this.codecHelper = protocol.createHelper();
}

View file

@ -86,7 +86,7 @@ public class DataComponentType<T> {
public static final DataComponentType<List<ItemStack>> CONTAINER = new DataComponentType<>(listReader(ItemCodecHelper::readOptionalItemStack), listWriter(MinecraftCodecHelper::writeOptionalItemStack), ObjectDataComponent::new);
public static final DataComponentType<BlockStateProperties> BLOCK_STATE = new DataComponentType<>(ItemCodecHelper::readBlockStateProperties, ItemCodecHelper::writeBlockStateProperties, ObjectDataComponent::new);
public static final DataComponentType<List<BeehiveOccupant>> BEES = new DataComponentType<>(listReader(ItemCodecHelper::readBeehiveOccupant), listWriter(ItemCodecHelper::writeBeehiveOccupant), ObjectDataComponent::new);
public static final DataComponentType<String> LOCK = new DataComponentType<>(ItemCodecHelper::readLock, ItemCodecHelper::writeLock, ObjectDataComponent::new);
public static final DataComponentType<NbtMap> LOCK = new DataComponentType<>(ItemCodecHelper::readCompoundTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
public static final DataComponentType<NbtMap> CONTAINER_LOOT = new DataComponentType<>(ItemCodecHelper::readCompoundTag, ItemCodecHelper::writeAnyTag, ObjectDataComponent::new);
protected final int id;

View file

@ -158,6 +158,7 @@ public class ItemCodecHelper extends MinecraftCodecHelper {
}
this.writeNullable(buf, equippable.model(), this::writeResourceLocation);
this.writeNullable(buf, equippable.cameraOverlay(), this::writeResourceLocation);
this.writeNullable(buf, equippable.allowedEntities(), this::writeHolderSet);
buf.writeBoolean(equippable.dispensable());
buf.writeBoolean(equippable.swappable());
@ -637,12 +638,4 @@ public class ItemCodecHelper extends MinecraftCodecHelper {
this.writeVarInt(buf, occupant.getTicksInHive());
this.writeVarInt(buf, occupant.getMinTicksInHive());
}
public String readLock(ByteBuf buf) {
return this.readAnyTag(buf, NbtType.STRING);
}
public void writeLock(ByteBuf buf, String key) {
this.writeAnyTag(buf, key);
}
}