Compare commits

...

10 Commits

Author SHA1 Message Date
HaHaWTH 63bfc7a5c1 B52 release 2024-07-14 17:48:25 +08:00
HaHaWTH 731c6477a5 PlaceholderAPI hook 2024-07-14 16:24:04 +08:00
HaHaWTH e0bf35284c Update runtime test to 1.21 2024-07-13 04:08:55 +08:00
HaHaWTH 02ebb0b0ab hehe 2024-07-12 23:26:14 +08:00
HaHaWTH 92741daaa8 fix: #178 mail sending lags server 2024-07-11 15:10:40 +08:00
Kobe ⑧ 18ce05d07d Merge pull request #174 from HaHaWTH/dependabot/maven/org.checkerframework-checker-qual-3.45.0
Bump org.checkerframework:checker-qual from 3.40.0 to 3.45.0
2024-07-02 13:38:18 +08:00
dependabot[bot] 37e6e9feb6 Bump org.checkerframework:checker-qual from 3.40.0 to 3.45.0
Bumps [org.checkerframework:checker-qual](https://github.com/typetools/checker-framework) from 3.40.0 to 3.45.0.
- [Release notes](https://github.com/typetools/checker-framework/releases)
- [Changelog](https://github.com/typetools/checker-framework/blob/master/docs/CHANGELOG.md)
- [Commits](https://github.com/typetools/checker-framework/compare/checker-framework-3.40.0...checker-framework-3.45.0)

---
updated-dependencies:
- dependency-name: org.checkerframework:checker-qual
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2024-07-02 05:07:13 +00:00
Kobe ⑧ 655c5ca42c Bump version to 5.7.0-Fork 2024-06-30 12:20:05 +08:00
Kobe ⑧ c99fc5c389 Update plugin.yml 2024-06-30 12:19:19 +08:00
Kobe ⑧ 9b0a4a003e Bump version to 5.7.0-FORK 2024-06-30 12:18:46 +08:00
13 changed files with 147 additions and 21 deletions
+1 -1
View File
@@ -41,7 +41,7 @@ jobs:
javaVersion: '17'
- mcVersion: '1.20.4'
javaVersion: '21'
- mcVersion: '1.20.6'
- mcVersion: '1.21'
javaVersion: '21'
steps:
- uses: HaHaWTH/minecraft-plugin-runtime-test@paper
+16 -2
View File
@@ -6,7 +6,7 @@
<groupId>fr.xephi</groupId>
<artifactId>authme</artifactId>
<version>5.6.1-FORK</version>
<version>5.7.0-FORK</version>
<name>AuthMeReReloaded</name>
<description>Fork of the first authentication plugin for the Bukkit API!</description>
@@ -623,6 +623,12 @@
<url>https://s01.oss.sonatype.org/content/repositories/snapshots/</url>
</repository>
<!-- Placeholder API Repo -->
<repository>
<id>placeholderapi-repo</id>
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
</repository>
<!-- Multiverse Repo -->
<repository>
<id>onarandombox-repo-releases</id>
@@ -1038,6 +1044,14 @@
</exclusions>
</dependency>
<!-- Placeholder API -->
<dependency>
<groupId>me.clip</groupId>
<artifactId>placeholderapi</artifactId>
<version>2.11.6</version>
<scope>provided</scope>
</dependency>
<!-- EssentialsX plugin -->
<dependency>
<groupId>net.essentialsx</groupId>
@@ -1128,7 +1142,7 @@
<dependency>
<groupId>org.checkerframework</groupId>
<artifactId>checker-qual</artifactId>
<version>3.40.0</version>
<version>3.45.0</version>
<scope>test</scope>
</dependency>
+2 -2
View File
@@ -74,9 +74,9 @@ public class AuthMe extends JavaPlugin {
private static final int CLEANUP_INTERVAL = 5 * TICKS_PER_MINUTE;
// Version and build number values
private static String pluginVersion = "5.6.1-Fork";
private static String pluginVersion = "5.7.0-Fork";
private static final String pluginBuild = "b";
private static String pluginBuildNumber = "51";
private static String pluginBuildNumber = "52";
// Private instances
private EmailService emailService;
private CommandHandler commandHandler;
@@ -22,6 +22,8 @@ import java.util.Locale;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import static fr.xephi.authme.AuthMe.getScheduler;
public class VerificationCodeManager implements SettingsDependent, HasCleanup {
private final EmailService emailService;
@@ -133,17 +135,19 @@ public class VerificationCodeManager implements SettingsDependent, HasCleanup {
* @param name the name of the player to generate a code for
*/
private void generateCode(String name) {
DataSourceValue<String> emailResult = dataSource.getEmail(name);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy'年'MM'月'dd'日' HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
if (emailResult.rowExists()) {
final String email = emailResult.getValue();
if (!Utils.isEmailEmpty(email)) {
String code = RandomStringUtils.generateNum(6); // 6 digits code
verificationCodes.put(name.toLowerCase(Locale.ROOT), code);
emailService.sendVerificationMail(name, email, code, dateFormat.format(date));
getScheduler().runTaskAsynchronously(() -> {
DataSourceValue<String> emailResult = dataSource.getEmail(name);
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy'-'MM'-'dd'-' HH:mm:ss");
Date date = new Date(System.currentTimeMillis());
if (emailResult.rowExists()) {
final String email = emailResult.getValue();
if (!Utils.isEmailEmpty(email)) {
String code = RandomStringUtils.generateNum(6); // 6 digits code
verificationCodes.put(name.toLowerCase(Locale.ROOT), code);
emailService.sendVerificationMail(name, email, code, dateFormat.format(date));
}
}
}
});
}
/**
@@ -75,9 +75,7 @@ class ListenerService implements SettingsDependent {
* @param player the player to verify
* @return true if the associated event should be canceled, false otherwise
*/
public boolean shouldCancelEvent(Player player) {
return player != null && !checkAuth(player.getName()) && !PlayerUtils.isNpc(player);
}
@Override
@@ -53,6 +53,9 @@ public class ServerListener implements Listener {
} else if ("ProtocolLib".equalsIgnoreCase(pluginName)) {
protocolLibService.disable();
logger.warning("ProtocolLib has been disabled, unhooking packet adapters!");
} else if ("PlaceholderAPI".equalsIgnoreCase(pluginName)) {
pluginHookService.unhookPlaceholderApi();
logger.info("PlaceholderAPI has been disabled: unhooking placeholders");
}
}
@@ -74,6 +77,8 @@ public class ServerListener implements Listener {
spawnLoader.loadCmiSpawn();
} else if ("ProtocolLib".equalsIgnoreCase(pluginName)) {
protocolLibService.setup();
} else if ("PlaceholderAPI".equalsIgnoreCase(pluginName)) {
pluginHookService.tryHookToPlaceholderApi();
}
}
}
@@ -37,7 +37,7 @@ public class GeoIpService {
private volatile boolean downloading;
@Inject
GeoIpService(@DataFolder File dataFolder){
GeoIpService(@DataFolder File dataFolder) {
this.dataFile = dataFolder.toPath().resolve(DATABASE_FILE);
// Fires download of recent data or the initialization of the look up service
@@ -6,6 +6,8 @@ import com.onarandombox.MultiverseCore.MultiverseCore;
import com.onarandombox.MultiverseCore.api.MVWorldManager;
import fr.xephi.authme.ConsoleLogger;
import fr.xephi.authme.output.ConsoleLoggerFactory;
import fr.xephi.authme.service.hook.papi.AuthMeExpansion;
import me.clip.placeholderapi.PlaceholderAPIPlugin;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;
@@ -26,6 +28,8 @@ public class PluginHookService {
private Essentials essentials;
private Plugin cmi;
private MultiverseCore multiverse;
private PlaceholderAPIPlugin placeholderApi;
private AuthMeExpansion authMeExpansion;
/**
* Constructor.
@@ -38,6 +42,7 @@ public class PluginHookService {
tryHookToEssentials();
tryHookToCmi();
tryHookToMultiverse();
tryHookToPlaceholderApi();
}
/**
@@ -133,6 +138,20 @@ public class PluginHookService {
}
}
/**
* Attempts to create a hook into PlaceholderAPI.
*/
public void tryHookToPlaceholderApi() {
try {
placeholderApi = getPlugin(pluginManager, "PlaceholderAPI", PlaceholderAPIPlugin.class);
authMeExpansion = new AuthMeExpansion();
authMeExpansion.register();
} catch (Exception | NoClassDefFoundError ignored) {
placeholderApi = null;
authMeExpansion = null;
}
}
/**
* Attempts to create a hook into CMI.
*/
@@ -180,6 +199,16 @@ public class PluginHookService {
multiverse = null;
}
/**
* Unhooks from PlaceholderAPI.
*/
public void unhookPlaceholderApi() {
if (placeholderApi != null) {
authMeExpansion.unregister();
placeholderApi = null;
}
}
// ------
// Helpers
// ------
@@ -144,7 +144,7 @@ public class TeleportationService implements Reloadable {
if (settings.getProperty(RestrictionSettings.SAVE_QUIT_LOCATION)) {
Location location = buildLocationFromAuth(player, auth);
Location playerLoc = player.getLocation();
if (location.getX() == playerLoc.getX() && location.getY() == location.getY() && location.getZ() == playerLoc.getZ()
if (location.getX() == playerLoc.getX() && location.getY() == playerLoc.getY() && location.getZ() == playerLoc.getZ()
&& location.getWorld() == playerLoc.getWorld()) return;
logger.debug("Teleporting `{0}` after login, based on the player auth", player.getName());
teleportBackFromSpawn(player, location);
@@ -0,0 +1,71 @@
package fr.xephi.authme.service.hook.papi;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.api.v3.AuthMeApi;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.properties.HooksSettings;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
/**
* AuthMe PlaceholderAPI expansion class.
* @author Kobe 8
*/
public class AuthMeExpansion extends PlaceholderExpansion {
private final Settings settings = AuthMe.settings;
private final AuthMeApi authMeApi = AuthMeApi.getInstance();
@Override
public @NotNull String getIdentifier() {
return "authme";
}
@Override
public @NotNull String getAuthor() {
return "HaHaWTH";
}
@Override
public @NotNull String getVersion() {
return AuthMe.getPluginVersion();
}
@Override
public boolean persist() {
return true;
}
@Override
public String onRequest(OfflinePlayer player, @NotNull String params) {
if (!settings.getProperty(HooksSettings.PLACEHOLDER_API)) return null;
if (params.equalsIgnoreCase("version")) {
return getVersion();
}
if (params.equalsIgnoreCase("is_registered")) {
if (player != null) {
Player onlinePlayer = player.getPlayer();
if (onlinePlayer != null) {
return String.valueOf(authMeApi.isRegistered(onlinePlayer.getName()));
}
}
}
if (params.equalsIgnoreCase("is_authenticated")) {
if (player != null) {
Player onlinePlayer = player.getPlayer();
if (onlinePlayer != null) {
return String.valueOf(authMeApi.isAuthenticated(onlinePlayer));
}
}
}
if (params.equalsIgnoreCase("last_login_time")) {
if (player != null) {
Player onlinePlayer = player.getPlayer();
if (onlinePlayer != null) {
return authMeApi.getLastLoginTime(onlinePlayer.getName()).toString();
}
}
}
return null;
}
}
@@ -15,6 +15,10 @@ public final class HooksSettings implements SettingsHolder {
public static final Property<Boolean> MULTIVERSE =
newProperty("Hooks.multiverse", true);
@Comment("Do we need to hook with PlaceholderAPI for AuthMe placeholders?")
public static final Property<Boolean> PLACEHOLDER_API =
newProperty("Hooks.placeholderapi", true);
@Comment("Do we need to hook with BungeeCord?")
public static final Property<Boolean> BUNGEECORD =
newProperty("Hooks.bungeecord", false);
@@ -21,7 +21,7 @@ public final class PluginSettings implements SettingsHolder {
@Comment({
"Send i18n messages to player based on their client settings, this option will override `settings.messagesLanguage`",
"(Requires Protocollib or Packetevents)",
"(Requires ProtocolLib)",
"This will not affect language of AuthMe help command."
})
public static final Property<Boolean> I18N_MESSAGES =
+2 -1
View File
@@ -7,7 +7,7 @@ description: A fork of AuthMeReloaded that contains bug fixes
# noinspection YAMLSchemaValidation
main: ${pluginDescription.main}
folia-supported: true
version: 5.6.1-FORK-b51
version: 5.7.0-FORK-b52
api-version: 1.13
softdepend:
- Vault
@@ -20,6 +20,7 @@ softdepend:
- EssentialsSpawn
- ProtocolLib
- floodgate
- PlaceholderAPI
commands:
authme:
description: AuthMe op commands