Skip to content
This repository was archived by the owner on Aug 27, 2025. It is now read-only.

Commit fec706b

Browse files
author
itz_intellij
committed
build yay
1 parent b86ebde commit fec706b

File tree

4 files changed

+72
-10
lines changed

4 files changed

+72
-10
lines changed

pom.xml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,13 @@
7272
<version>0.4</version>
7373
</dependency>
7474

75-
<!-- Geyser API for Bedrock support (commented out as it requires additional setup) -->
76-
<!--
75+
<!-- Geyser-Floodgate API for Bedrock support -->
7776
<dependency>
7877
<groupId>org.geysermc.floodgate</groupId>
79-
<artifactId>api</artifactId>
80-
<version>2.0.0</version>
78+
<artifactId>floodgate-api</artifactId>
79+
<version>2.2.0-SNAPSHOT</version>
8180
<scope>provided</scope>
8281
</dependency>
83-
-->
8482
</dependencies>
8583

8684
<build>

src/main/java/com/lightlogin/listener/PlayerListener.java

Lines changed: 69 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.lightlogin.LightLogin;
44
import com.lightlogin.database.DatabaseManager;
5+
import org.bukkit.Bukkit;
56
import org.bukkit.entity.Player;
67
import org.bukkit.event.EventHandler;
78
import org.bukkit.event.Listener;
@@ -12,6 +13,7 @@
1213
import org.bukkit.event.inventory.InventoryClickEvent;
1314
import org.bukkit.event.inventory.InventoryOpenEvent;
1415
import org.bukkit.event.player.*;
16+
import org.geysermc.floodgate.api.FloodgateApi;
1517

1618
import java.util.HashSet;
1719
import java.util.Set;
@@ -34,32 +36,94 @@ public void onPlayerJoin(PlayerJoinEvent event) {
3436
String ipAddress = player.getAddress() != null ?
3537
player.getAddress().getAddress().getHostAddress() : "unknown";
3638

39+
// Handle Bedrock players
40+
if (isBedrockPlayer(player)) {
41+
handleBedrockPlayer(player, uuid, ipAddress);
42+
return;
43+
}
44+
45+
// Handle Java players
46+
handleJavaPlayer(player, uuid, ipAddress);
47+
}
48+
49+
private boolean isBedrockPlayer(Player player) {
50+
try {
51+
return Bukkit.getPluginManager().getPlugin("floodgate") != null &&
52+
FloodgateApi.getInstance().isFloodgatePlayer(player.getUniqueId());
53+
} catch (Exception e) {
54+
plugin.getLogger().warning("Error checking if player is from Bedrock: " + e.getMessage());
55+
return false;
56+
}
57+
}
58+
59+
private void handleBedrockPlayer(Player player, UUID uuid, String ipAddress) {
60+
// Auto-register Bedrock players if not registered
61+
if (!databaseManager.isPlayerRegistered(uuid)) {
62+
// Generate a random secure password for the Bedrock player
63+
String password = generateRandomPassword();
64+
if (databaseManager.registerPlayer(uuid, player.getName(), password, ipAddress)) {
65+
player.sendMessage(plugin.getConfig().getString(
66+
"messages.bedrock-auto-register",
67+
"§aWelcome Bedrock player! You've been automatically registered."));
68+
setLoggedIn(uuid, true);
69+
} else {
70+
player.kickPlayer(plugin.getConfig().getString(
71+
"messages.registration-error",
72+
"§cFailed to register your account. Please contact an administrator."));
73+
}
74+
} else {
75+
// Auto-login Bedrock players
76+
setLoggedIn(uuid, true);
77+
player.sendMessage(plugin.getConfig().getString(
78+
"messages.bedrock-auto-login",
79+
"§aWelcome back, Bedrock player! You've been automatically logged in."));
80+
}
81+
databaseManager.updateLastLogin(uuid, ipAddress);
82+
}
83+
84+
private void handleJavaPlayer(Player player, UUID uuid, String ipAddress) {
3785
// Check if player is registered
3886
if (!databaseManager.isPlayerRegistered(uuid)) {
3987
// Player needs to register
40-
player.sendMessage("§aWelcome! Please register using /register <password> <confirmPassword>");
88+
player.sendMessage(plugin.getConfig().getString(
89+
"messages.register-prompt",
90+
"§aWelcome! Please register using /register <password> <confirmPassword>"));
4191
} else {
42-
// Check for auto-login
43-
// Check if auto-login is enabled and IP matches if required
92+
// Check for auto-login if enabled
4493
if (plugin.getConfig().getBoolean("auto-login.enabled", true)) {
4594
boolean checkIp = plugin.getConfig().getBoolean("session.check-ip", false);
4695

4796
if (databaseManager.hasValidSession(uuid, ipAddress, checkIp)) {
4897
setLoggedIn(uuid, true);
49-
player.sendMessage(plugin.getConfig().getString("messages.auto-login", "§aAutomatically logged in!"));
98+
player.sendMessage(plugin.getConfig().getString(
99+
"messages.auto-login",
100+
"§aAutomatically logged in!"));
50101

51102
// Update last login time
52103
databaseManager.updateLastLogin(uuid, ipAddress);
53104
return;
54105
}
55106
}
56107

57-
player.sendMessage(plugin.getConfig().getString("messages.login-required", "§aWelcome back! Please login using /login <password>"));
108+
player.sendMessage(plugin.getConfig().getString(
109+
"messages.login-required",
110+
"§aWelcome back! Please login using /login <password>"));
58111
}
59112

60113
// Save/update IP and last login
61114
databaseManager.updateLastLogin(uuid, ipAddress);
62115
}
116+
117+
private String generateRandomPassword() {
118+
// Generate a secure random password for Bedrock players
119+
String chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()";
120+
StringBuilder sb = new StringBuilder(16);
121+
for (int i = 0; i < 16; i++) {
122+
int index = (int)(Math.random() * chars.length());
123+
sb.append(chars.charAt(index));
124+
}
125+
return sb.toString();
126+
}
63127

64128
@EventHandler
65129
public void onPlayerQuit(PlayerQuitEvent event) {
1.57 MB
Binary file not shown.

target/LightLogin-1.0-SNAPSHOT.jar

58 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)