mirror of
https://github.com/GeyserMC/Geyser.git
synced 2024-08-14 23:57:35 +00:00
Merge 16a8d5740b
into d3ea65196b
This commit is contained in:
commit
ba62eb5dd6
2 changed files with 27 additions and 4 deletions
|
@ -84,6 +84,7 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
|
|||
private final Deque<String> packsToSent = new ArrayDeque<>();
|
||||
private final CompressionStrategy compressionStrategy;
|
||||
|
||||
private boolean optionalPackLoaded = false;
|
||||
private SessionLoadResourcePacksEventImpl resourcePackLoadEvent;
|
||||
|
||||
public UpstreamPacketHandler(GeyserImpl geyser, GeyserSession session) {
|
||||
|
@ -208,8 +209,8 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
|
|||
PackCodec codec = pack.codec();
|
||||
ResourcePackManifest.Header header = pack.manifest().header();
|
||||
resourcePacksInfo.getResourcePackInfos().add(new ResourcePacksInfoPacket.Entry(
|
||||
header.uuid().toString(), header.version().toString(), codec.size(), pack.contentKey(),
|
||||
"", header.uuid().toString(), false, false));
|
||||
header.uuid().toString(), header.version().toString(), codec.size(), pack.contentKey(),
|
||||
"", header.uuid().toString(), false, false));
|
||||
}
|
||||
resourcePacksInfo.setForcedToAccept(GeyserImpl.getInstance().getConfig().isForceResourcePacks());
|
||||
session.sendUpstreamPacket(resourcePacksInfo);
|
||||
|
@ -218,10 +219,22 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
|
|||
return PacketSignal.HANDLED;
|
||||
}
|
||||
|
||||
private boolean sendPacksRequested = false;
|
||||
private boolean haveAllPacksRequested = false;
|
||||
private boolean requestedPackData = false;
|
||||
|
||||
@Override
|
||||
public PacketSignal handle(ResourcePackClientResponsePacket packet) {
|
||||
switch (packet.getStatus()) {
|
||||
|
||||
case COMPLETED:
|
||||
if (!sendPacksRequested && haveAllPacksRequested && GeyserImpl.getInstance().getConfig().isForceResourcePacks()) {
|
||||
requestedPackData = true;
|
||||
}
|
||||
if (requestedPackData) {
|
||||
session.setOptionalPackLoaded(this.optionalPackLoaded);
|
||||
}
|
||||
geyser.getLogger().debug("Geyser Optional Pack loaded: " + (session.isOptionalPackLoaded() ? "Yes" : "No"));
|
||||
if (geyser.getConfig().getRemote().authType() != AuthType.ONLINE) {
|
||||
session.authenticate(session.getAuthData().name());
|
||||
} else if (!couldLoginUserByName(session.getAuthData().name())) {
|
||||
|
@ -232,11 +245,14 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
|
|||
break;
|
||||
|
||||
case SEND_PACKS:
|
||||
sendPacksRequested = true;
|
||||
requestedPackData = true;
|
||||
packsToSent.addAll(packet.getPackIds());
|
||||
sendPackDataInfo(packsToSent.pop());
|
||||
break;
|
||||
|
||||
case HAVE_ALL_PACKS:
|
||||
haveAllPacksRequested = true;
|
||||
ResourcePackStackPacket stackPacket = new ResourcePackStackPacket();
|
||||
stackPacket.setExperimentsPreviouslyToggled(false);
|
||||
stackPacket.setForcedToAccept(false); // Leaving this as false allows the player to choose to download or not
|
||||
|
@ -245,6 +261,9 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
|
|||
for (ResourcePack pack : this.resourcePackLoadEvent.resourcePacks()) {
|
||||
ResourcePackManifest.Header header = pack.manifest().header();
|
||||
stackPacket.getResourcePacks().add(new ResourcePackStackPacket.Entry(header.uuid().toString(), header.version().toString(), ""));
|
||||
if (pack.manifest().header().uuid().toString().equals("e5f5c938-a701-11eb-b2a3-047d7bb283ba")) {
|
||||
this.optionalPackLoaded = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (GeyserImpl.getInstance().getConfig().isAddNonBedrockItems()) {
|
||||
|
@ -308,10 +327,10 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
|
|||
|
||||
@Override
|
||||
public PacketSignal handle(ResourcePackChunkRequestPacket packet) {
|
||||
requestedPackData = true;
|
||||
ResourcePackChunkDataPacket data = new ResourcePackChunkDataPacket();
|
||||
ResourcePack pack = this.resourcePackLoadEvent.getPacks().get(packet.getPackId().toString());
|
||||
PackCodec codec = pack.codec();
|
||||
|
||||
data.setChunkIndex(packet.getChunkIndex());
|
||||
data.setProgress((long) packet.getChunkIndex() * GeyserResourcePack.CHUNK_SIZE);
|
||||
data.setPackVersion(packet.getPackVersion());
|
||||
|
@ -346,7 +365,9 @@ public class UpstreamPacketHandler extends LoggingPacketHandler {
|
|||
ResourcePack pack = this.resourcePackLoadEvent.getPacks().get(packID[0]);
|
||||
PackCodec codec = pack.codec();
|
||||
ResourcePackManifest.Header header = pack.manifest().header();
|
||||
|
||||
if (header.uuid().toString().equals("e5f5c938-a701-11eb-b2a3-047d7bb283ba")) {
|
||||
this.optionalPackLoaded = true;
|
||||
}
|
||||
data.setPackId(header.uuid());
|
||||
int chunkCount = (int) Math.ceil(codec.size() / (double) GeyserResourcePack.CHUNK_SIZE);
|
||||
data.setChunkCount(chunkCount);
|
||||
|
|
|
@ -563,6 +563,8 @@ public class GeyserSession implements GeyserConnection, GeyserCommandSource {
|
|||
@Setter
|
||||
private float walkSpeed;
|
||||
|
||||
@Setter
|
||||
private boolean optionalPackLoaded = false;
|
||||
/**
|
||||
* Caches current rain status.
|
||||
*/
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue