Send out a packet when the server is available to libzontreck

This commit is contained in:
zontreck 2024-01-09 03:28:59 -07:00
parent c8136451e0
commit adceccc275
4 changed files with 58 additions and 0 deletions

View file

@ -56,6 +56,8 @@ public class LibZontreck {
public static final String PLAYER_SKIN_URL = "https://sessionserver.mojang.com/session/minecraft/profile/";
public static final UUID NULL_ID;
public static boolean LIBZONTRECK_SERVER_AVAILABLE=false;
public static LogicalSide CURRENT_SIDE;

View file

@ -6,6 +6,7 @@ import dev.zontreck.libzontreck.LibZontreck;
import dev.zontreck.libzontreck.exceptions.InvalidSideException;
import dev.zontreck.libzontreck.memory.PlayerContainer;
import dev.zontreck.libzontreck.networking.ModMessages;
import dev.zontreck.libzontreck.networking.packets.S2CServerAvailable;
import dev.zontreck.libzontreck.networking.packets.S2CWalletInitialSyncPacket;
import dev.zontreck.libzontreck.profiles.Profile;
import dev.zontreck.libzontreck.profiles.UserProfileNotYetExistsException;
@ -56,6 +57,9 @@ public class ForgeEventHandlers {
public void run() {
// Check player wallet, then send wallet to client
//ModMessages.sendToPlayer(new S2CWalletInitialSyncPacket(player.getUUID()), player);
S2CServerAvailable avail = new S2CServerAvailable();
avail.send(player);
}
}, 10);
}
@ -63,6 +67,7 @@ public class ForgeEventHandlers {
@SubscribeEvent
public void onLeave(final PlayerEvent.PlayerLoggedOutEvent ev)
{
LibZontreck.LIBZONTRECK_SERVER_AVAILABLE=false; // Yes do this even on the client!
if(ev.getEntity().level().isClientSide)return;
// Get player profile, send disconnect alert, then commit profile and remove it from memory

View file

@ -5,6 +5,7 @@ import dev.zontreck.libzontreck.events.RegisterPacketsEvent;
import dev.zontreck.libzontreck.networking.packets.IPacket;
import dev.zontreck.libzontreck.networking.packets.S2CCloseChestGUI;
import dev.zontreck.libzontreck.networking.packets.S2CPlaySoundPacket;
import dev.zontreck.libzontreck.networking.packets.S2CServerAvailable;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.common.MinecraftForge;
@ -58,6 +59,13 @@ public class ModMessages {
.consumerMainThread(S2CCloseChestGUI::handle)
.add();
net.messageBuilder(S2CServerAvailable.class, PACKET_ID.getAndIncrement(),
NetworkDirection.PLAY_TO_CLIENT)
.decoder(S2CServerAvailable::new)
.encoder(S2CServerAvailable::toBytes)
.consumerMainThread(S2CServerAvailable::handle)
.add();
}

View file

@ -0,0 +1,43 @@
package dev.zontreck.libzontreck.networking.packets;
import dev.zontreck.libzontreck.LibZontreck;
import dev.zontreck.libzontreck.networking.ModMessages;
import net.minecraft.network.FriendlyByteBuf;
import net.minecraft.server.level.ServerPlayer;
import net.minecraftforge.network.NetworkEvent;
import java.util.function.Supplier;
public class S2CServerAvailable
{
public S2CServerAvailable(FriendlyByteBuf buf)
{
// nothing!
}
public S2CServerAvailable()
{
}
public void toBytes(FriendlyByteBuf buf)
{
}
public void handle(Supplier<NetworkEvent.Context> supplier)
{
NetworkEvent.Context context = supplier.get();
context.enqueueWork(()->{
// We are now on the client
LibZontreck.LIBZONTRECK_SERVER_AVAILABLE = true;
});
}
public void send(ServerPlayer player)
{
ModMessages.sendToPlayer(this, player);
}
}