1
0
mirror of https://github.com/GeyserMC/Floodgate.git synced 2026-01-06 15:42:03 +00:00

Final classes; implement join message

This commit is contained in:
Camotoy
2021-03-28 18:27:40 -04:00
parent be3bef4ce8
commit 312c59f67d
17 changed files with 83 additions and 24 deletions

View File

@@ -26,6 +26,7 @@ dependencies {
// PSA: Some older mods, compiled on Loom 0.2.1, might have outdated Maven POMs.
// You may need to force-disable transitiveness on them.
// Base Floodgate
include(implementation("org.geysermc.floodgate:common:2.0-SNAPSHOT"))
// Cloud - commands
@@ -35,6 +36,8 @@ dependencies {
// Fabric Adventure platform
// For translating from Adventure to Minecraft
include(modImplementation('net.kyori:adventure-platform-fabric:4.0.0-SNAPSHOT') {
// Thanks to zml for this fix
// The package modifies Brigadier which causes a LinkageError at runtime if included
exclude group: 'ca.stellardrift', module: "colonel"
})

View File

@@ -1,9 +1,6 @@
package org.geysermc.floodgate;
import org.geysermc.floodgate.inject.fabric.FabricInjector;
import org.geysermc.floodgate.module.FabricAddonModule;
import org.geysermc.floodgate.module.FabricCommandModule;
import org.geysermc.floodgate.module.FabricPlatformModule;
import com.google.inject.Guice;
import com.google.inject.Injector;
import net.fabricmc.api.ModInitializer;
@@ -12,6 +9,10 @@ import net.fabricmc.loader.api.FabricLoader;
import net.kyori.adventure.platform.fabric.FabricServerAudiences;
import net.minecraft.server.MinecraftServer;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
import org.geysermc.floodgate.module.FabricAddonModule;
import org.geysermc.floodgate.module.FabricCommandModule;
import org.geysermc.floodgate.module.FabricListenerModule;
import org.geysermc.floodgate.module.FabricPlatformModule;
import org.geysermc.floodgate.module.ServerCommonModule;
public class FabricMod implements ModInitializer {
@@ -35,7 +36,8 @@ public class FabricMod implements ModInitializer {
injector.getInstance(FabricPlatform.class)
.enable(
new FabricAddonModule(),
new FabricCommandModule()
new FabricCommandModule(),
new FabricListenerModule()
);
long endCtm = System.currentTimeMillis();

View File

@@ -7,7 +7,7 @@ import org.geysermc.floodgate.api.FloodgateApi;
import org.geysermc.floodgate.api.inject.PlatformInjector;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
public class FabricPlatform extends FloodgatePlatform {
public final class FabricPlatform extends FloodgatePlatform {
@Inject
public FabricPlatform(FloodgateApi api, PlatformInjector platformInjector, FloodgateLogger logger, Injector guice) {
super(api, platformInjector, logger, guice);

View File

@@ -12,7 +12,7 @@ import org.geysermc.floodgate.config.FloodgateConfig;
import org.geysermc.floodgate.player.FloodgateHandshakeHandler;
import org.geysermc.floodgate.util.Utils;
public class FabricDataAddon implements InjectorAddon {
public final class FabricDataAddon implements InjectorAddon {
@Inject private FloodgateHandshakeHandler handshakeHandler;
@Inject private FloodgateConfig config;
@Inject private SimpleFloodgateApi api;

View File

@@ -20,7 +20,7 @@ import org.geysermc.floodgate.util.BedrockData;
import org.geysermc.floodgate.util.Constants;
@RequiredArgsConstructor
public class FabricDataHandler extends ChannelInboundHandlerAdapter {
public final class FabricDataHandler extends ChannelInboundHandlerAdapter {
private final FloodgateConfig config;
private final FloodgateHandshakeHandler handshakeHandler;
private final FloodgateLogger logger;

View File

@@ -6,7 +6,7 @@ import lombok.RequiredArgsConstructor;
import org.geysermc.floodgate.inject.CommonPlatformInjector;
@RequiredArgsConstructor
public class FabricInjector extends CommonPlatformInjector {
public final class FabricInjector extends CommonPlatformInjector {
private static FabricInjector instance;
@Getter private final boolean injected = true;

View File

@@ -1,12 +1,29 @@
package org.geysermc.floodgate.listener;
public class FabricEventListener {
import com.google.inject.Inject;
import net.fabricmc.fabric.api.networking.v1.PacketSender;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ServerPlayNetworkHandler;
import org.geysermc.floodgate.api.FloodgateApi;
import org.geysermc.floodgate.api.logger.FloodgateLogger;
import org.geysermc.floodgate.api.player.FloodgatePlayer;
import org.geysermc.floodgate.player.FloodgatePlayerImpl;
import org.geysermc.floodgate.util.LanguageManager;
public void onPlayerJoin() {
public final class FabricEventListener {
@Inject private FloodgateApi api;
@Inject private FloodgateLogger logger;
@Inject private LanguageManager languageManager;
}
public void onPlayerQuit() {
//todo
public void onPlayerJoin(ServerPlayNetworkHandler networkHandler, PacketSender packetSender, MinecraftServer server) {
FloodgatePlayer player = api.getPlayer(networkHandler.player.getUuid());
if (player != null) {
player.as(FloodgatePlayerImpl.class).setLogin(false);
logger.translatedInfo(
"floodgate.ingame.login_name",
player.getCorrectUsername(), player.getCorrectUniqueId()
);
languageManager.loadLocale(player.getLanguageCode());
}
}
}

View File

@@ -0,0 +1,14 @@
package org.geysermc.floodgate.listener;
import com.google.inject.Inject;
import lombok.RequiredArgsConstructor;
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
import org.geysermc.floodgate.platform.listener.ListenerRegistration;
@RequiredArgsConstructor(onConstructor = @__(@Inject))
public final class FabricEventRegistration implements ListenerRegistration<FabricEventListener> {
@Override
public void register(FabricEventListener listener) {
ServerPlayConnectionEvents.JOIN.register(listener::onPlayerJoin);
}
}

View File

@@ -10,7 +10,7 @@ import org.geysermc.floodgate.util.LanguageManager;
import static org.geysermc.floodgate.util.MessageFormatter.format;
@RequiredArgsConstructor
public class Log4jFloodgateLogger implements FloodgateLogger {
public final class Log4jFloodgateLogger implements FloodgateLogger {
private final Logger logger;
private final LanguageManager languageManager;

View File

@@ -14,7 +14,7 @@ import java.net.InetAddress;
import java.util.List;
@Mixin(ServerNetworkIo.class)
public class ServerNetworkIoMixin {
public abstract class ServerNetworkIoMixin {
@Shadow @Final private List<ChannelFuture> channels;

View File

@@ -9,7 +9,7 @@ import org.geysermc.floodgate.addon.DebugAddon;
import org.geysermc.floodgate.api.inject.InjectorAddon;
import org.geysermc.floodgate.register.AddonRegister;
public class FabricAddonModule extends AbstractModule {
public final class FabricAddonModule extends AbstractModule {
@Override
protected void configure() {
bind(AddonRegister.class).asEagerSingleton();

View File

@@ -8,12 +8,11 @@ import com.google.inject.Provides;
import com.google.inject.Singleton;
import lombok.SneakyThrows;
import net.minecraft.server.command.ServerCommandSource;
import org.geysermc.floodgate.module.CommandModule;
import org.geysermc.floodgate.platform.command.CommandUtil;
import org.geysermc.floodgate.player.FloodgateCommandPreprocessor;
import org.geysermc.floodgate.player.UserAudience;
public class FabricCommandModule extends CommandModule {
public final class FabricCommandModule extends CommandModule {
@Provides
@Singleton
@SneakyThrows

View File

@@ -1,6 +1,21 @@
package org.geysermc.floodgate.module;
import com.google.inject.AbstractModule;
import com.google.inject.Singleton;
import com.google.inject.TypeLiteral;
import com.google.inject.multibindings.ProvidesIntoSet;
import org.geysermc.floodgate.listener.FabricEventListener;
import org.geysermc.floodgate.register.ListenerRegister;
public class FabricListenerModule extends AbstractModule {
public final class FabricListenerModule extends AbstractModule {
@Override
protected void configure() {
bind(new TypeLiteral<ListenerRegister<FabricEventListener>>() {}).asEagerSingleton();
}
@Singleton
@ProvidesIntoSet
public FabricEventListener fabricEventListener() {
return new FabricEventListener();
}
}

View File

@@ -1,7 +1,10 @@
package org.geysermc.floodgate.module;
import org.geysermc.floodgate.inject.fabric.FabricInjector;
import org.geysermc.floodgate.listener.FabricEventListener;
import org.geysermc.floodgate.listener.FabricEventRegistration;
import org.geysermc.floodgate.logger.Log4jFloodgateLogger;
import org.geysermc.floodgate.platform.listener.ListenerRegistration;
import org.geysermc.floodgate.pluginmessage.FabricSkinApplier;
import org.geysermc.floodgate.util.FabricCommandUtil;
import com.google.inject.AbstractModule;
@@ -20,7 +23,7 @@ import org.geysermc.floodgate.skin.SkinApplier;
import org.geysermc.floodgate.util.LanguageManager;
@RequiredArgsConstructor
public class FabricPlatformModule extends AbstractModule {
public final class FabricPlatformModule extends AbstractModule {
private final MinecraftServer server;
private final FabricServerAudiences adventure;
@@ -51,6 +54,12 @@ public class FabricPlatformModule extends AbstractModule {
return new FabricCommandUtil(adventure, api, logger, languageManager, server);
}
@Provides
@Singleton
public ListenerRegistration<FabricEventListener> listenerRegistration() {
return new FabricEventRegistration();
}
/*
DebugAddon / PlatformInjector
*/

View File

@@ -13,7 +13,7 @@ import org.geysermc.floodgate.api.player.FloodgatePlayer;
import org.geysermc.floodgate.skin.SkinApplier;
@RequiredArgsConstructor
public class FabricSkinApplier implements SkinApplier {
public final class FabricSkinApplier implements SkinApplier {
private final MinecraftServer server;
@Override

View File

@@ -24,7 +24,7 @@ import org.geysermc.floodgate.player.UserAudienceArgument;
import java.util.*;
@RequiredArgsConstructor
public class FabricCommandUtil implements CommandUtil {
public final class FabricCommandUtil implements CommandUtil {
@Getter private final FabricServerAudiences adventure;
@Getter private final FloodgateApi api;
@Getter private final FloodgateLogger logger;

View File

@@ -15,7 +15,7 @@ import org.geysermc.floodgate.player.UserAudience;
import java.util.UUID;
@RequiredArgsConstructor
public class FabricUserAudience implements UserAudience, ForwardingAudience.Single {
public final class FabricUserAudience implements UserAudience, ForwardingAudience.Single {
private final UUID uuid;
private final String locale;
private final ServerCommandSource source;