Compare commits

...

35 Commits

Author SHA1 Message Date
HaHaWTH 68ab92dd7a Merge remote-tracking branch 'origin/master' 2024-01-10 23:28:32 +08:00
HaHaWTH d9495ff839 B40 release 2024-01-10 23:28:08 +08:00
DGun Otto 0e01d8145f [ci skip] Update README.md 2024-01-08 21:55:31 +08:00
HaHaWTH ed9e379500 Merge remote-tracking branch 'origin/master' 2024-01-07 22:07:36 +08:00
HaHaWTH a9cb2d2490 Fix 2024-01-07 22:06:47 +08:00
DGun Otto 900937c033 Update updateChecker 2024-01-03 23:37:54 +08:00
DGun Otto 9585fc1bdb [ci skip] Update README.md 2024-01-02 21:17:55 +08:00
HaHaWTH d8d3e8544c Remove useless bannerColor 2023-12-31 21:25:42 +08:00
HaHaWTH a50e5fa802 Remove useless bannerColor 2023-12-31 17:40:43 +08:00
HaHaWTH c9363ca6e8 false 2023-12-31 17:34:57 +08:00
HaHaWTH 222bd879d1 Add warn 2023-12-31 17:34:42 +08:00
HaHaWTH 01f4a8f205 Revert config value to false 2023-12-31 17:20:43 +08:00
HaHaWTH be976b6738 Add AdvancedShulkerFix and optimize LoginLocationFix 2023-12-31 17:19:30 +08:00
HaHaWTH c89a818696 improve getMinHeight() 2023-12-31 14:10:28 +08:00
HaHaWTH 1c63eca0f7 improve getMinHeight() 2023-12-31 14:07:44 +08:00
HaHaWTH 69989fb99e B39 release 2023-12-30 14:06:36 +08:00
HaHaWTH 8cf794e303 Remove debug 2023-12-30 13:51:47 +08:00
HaHaWTH de9e74d616 Fix compatibility with Minecraft 1.16.x and lower 2023-12-30 13:13:58 +08:00
HaHaWTH e147a25076 Fix compatibility with Minecraft 1.16.x and lower 2023-12-30 11:08:27 +08:00
HaHaWTH b25d874122 Thread-safety 2023-12-30 09:20:16 +08:00
DGun Otto b322032757 Merge pull request #86 from HaHaWTH/dependabot/maven/org.apache.commons-commons-email-1.6.0
Bump org.apache.commons:commons-email from 1.6-SNAPSHOT to 1.6.0
2023-12-26 23:25:13 +08:00
DGun Otto d505601d33 Merge pull request #87 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-compiler-plugin-3.12.1
Bump org.apache.maven.plugins:maven-compiler-plugin from 3.12.0 to 3.12.1
2023-12-26 00:20:23 +08:00
dependabot[bot] 8580d57a12 Bump org.apache.maven.plugins:maven-compiler-plugin
Bumps [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.12.0 to 3.12.1.
- [Release notes](https://github.com/apache/maven-compiler-plugin/releases)
- [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.12.0...maven-compiler-plugin-3.12.1)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-compiler-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-25 04:21:45 +00:00
dependabot[bot] b051f4feef Bump org.apache.commons:commons-email from 1.6-SNAPSHOT to 1.6.0
Bumps org.apache.commons:commons-email from 1.6-SNAPSHOT to 1.6.0.

---
updated-dependencies:
- dependency-name: org.apache.commons:commons-email
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-25 04:21:10 +00:00
HaHaWTH 96c886b93d Merge remote-tracking branch 'origin/master' 2023-12-20 21:00:52 +08:00
HaHaWTH f1d6df9a17 Fix LoginLocationFixListener 2023-12-20 21:00:31 +08:00
DGun Otto 6681075031 Merge pull request #84 from HaHaWTH/dependabot/maven/org.apache.maven.plugins-maven-compiler-plugin-3.12.0
Bump org.apache.maven.plugins:maven-compiler-plugin from 3.11.0 to 3.12.0
2023-12-19 13:16:58 +08:00
dependabot[bot] 1aae25f510 Bump org.apache.maven.plugins:maven-compiler-plugin
Bumps [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) from 3.11.0 to 3.12.0.
- [Release notes](https://github.com/apache/maven-compiler-plugin/releases)
- [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.11.0...maven-compiler-plugin-3.12.0)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-compiler-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-12-19 04:46:16 +00:00
HaHaWTH 8a5dfc8e6a B38 release 2023-12-18 16:39:41 +08:00
HaHaWTH 9daf44d512 Fixed #81 2023-12-15 21:36:32 +08:00
HaHaWTH 2485514111 Cleanup 2023-12-15 21:30:32 +08:00
HaHaWTH 528b61c5d9 Revert default config 2023-12-15 21:28:52 +08:00
HaHaWTH 829f7180da Dev revert 2023-12-14 00:08:35 +08:00
HaHaWTH 18203574d0 Dev update 2023-12-13 23:47:31 +08:00
HaHaWTH b2678d3165 Bump to B37 and fixes #76 2023-12-13 21:36:17 +08:00
13 changed files with 162 additions and 80 deletions
+5 -1
View File
@@ -5,6 +5,7 @@ MCBBS Link: [Click Here](https://www.mcbbs.net/forum.php?mod=viewthread&tid=1471
<p align="center"> <p align="center">
<img src="https://img.shields.io/github/languages/code-size/HaHaWTH/AuthMeReReloaded.svg" alt="Code size"/> <img src="https://img.shields.io/github/languages/code-size/HaHaWTH/AuthMeReReloaded.svg" alt="Code size"/>
<img src="https://img.shields.io/github/repo-size/HaHaWTH/AuthMeReReloaded.svg" alt="GitHub repo size"/> <img src="https://img.shields.io/github/repo-size/HaHaWTH/AuthMeReReloaded.svg" alt="GitHub repo size"/>
<img src="https://www.codefactor.io/repository/github/hahawth/authmerereloaded/badge" alt="CodeFactor" />
</p> </p>
**Detailed Changes:** **Detailed Changes:**
@@ -24,10 +25,13 @@ MCBBS Link: [Click Here](https://www.mcbbs.net/forum.php?mod=viewthread&tid=1471
13. Offhand Menu compatibility(Thats amazing) 13. Offhand Menu compatibility(Thats amazing)
14. Automatically fix portal stuck issue 14. Automatically fix portal stuck issue
15. Automatically login for Bedrock players(configurable) 15. Automatically login for Bedrock players(configurable)
16. More...... 16. Fix shulker box crash bug on legacy versions(MC 1.13-)
17. More......
**Download links:** **Download links:**
[Releases](https://github.com/HaHaWTH/AuthMeReReloaded/releases/latest) [Releases](https://github.com/HaHaWTH/AuthMeReReloaded/releases/latest)
[Actions(Dev builds, use at your own risk!)](https://github.com/HaHaWTH/AuthMeReReloaded/actions/workflows/maven.yml) [Actions(Dev builds, use at your own risk!)](https://github.com/HaHaWTH/AuthMeReReloaded/actions/workflows/maven.yml)
TODO: Implement HAProxy ip forward(Useful for Frp)
**Pull Requests and suggestions are welcome!** **Pull Requests and suggestions are welcome!**
+37 -6
View File
@@ -206,7 +206,7 @@
<plugin> <plugin>
<groupId>org.apache.maven.plugins</groupId> <groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId> <artifactId>maven-compiler-plugin</artifactId>
<version>3.11.0</version> <version>3.12.1</version>
<configuration> <configuration>
<source>${java.source}</source> <source>${java.source}</source>
<target>${java.target}</target> <target>${java.target}</target>
@@ -346,6 +346,10 @@
<pattern>com.google.gson</pattern> <pattern>com.google.gson</pattern>
<shadedPattern>fr.xephi.authme.libs.com.google.gson</shadedPattern> <shadedPattern>fr.xephi.authme.libs.com.google.gson</shadedPattern>
</relocation> </relocation>
<!-- <relocation>-->
<!-- <pattern>com.cryptomorin.xseries</pattern>-->
<!-- <shadedPattern>fr.xephi.authme.libs.com.cryptomorin.xseries</shadedPattern>-->
<!-- </relocation>-->
</relocations> </relocations>
</configuration> </configuration>
</execution> </execution>
@@ -440,6 +444,14 @@
<pattern>com.google.protobuf</pattern> <pattern>com.google.protobuf</pattern>
<shadedPattern>fr.xephi.authme.libs.com.google.protobuf</shadedPattern> <shadedPattern>fr.xephi.authme.libs.com.google.protobuf</shadedPattern>
</relocation> </relocation>
<relocation>
<pattern>io.netty</pattern>
<shadedPattern>fr.xephi.authme.libs.io.netty</shadedPattern>
</relocation>
<relocation>
<pattern>org.apache.commons.validator</pattern>
<shadedPattern>fr.xephi.authme.libs.org.apache.commons.validator</shadedPattern>
</relocation>
</relocations> </relocations>
<filters> <filters>
@@ -507,6 +519,15 @@
</build> </build>
<repositories> <repositories>
<repository>
<id>opencollab-snapshot-main</id>
<url>https://repo.opencollab.dev/main/</url>
</repository>
<repository>
<id>opencollab-maven-snapshots</id>
<url>https://repo.opencollab.dev/maven-snapshots/</url>
</repository>
<!-- Apache snapshots repo --> <!-- Apache snapshots repo -->
<repository> <repository>
<id>apache-snapshots</id> <id>apache-snapshots</id>
@@ -625,10 +646,6 @@
<enabled>false</enabled> <enabled>false</enabled>
</snapshots> </snapshots>
</repository> </repository>
<repository>
<id>opencollab-snapshot-main</id>
<url>https://repo.opencollab.dev/main/</url>
</repository>
</repositories> </repositories>
<dependencies> <dependencies>
@@ -682,7 +699,7 @@
<dependency> <dependency>
<groupId>org.apache.commons</groupId> <groupId>org.apache.commons</groupId>
<artifactId>commons-email</artifactId> <artifactId>commons-email</artifactId>
<version>1.6-SNAPSHOT</version> <version>1.6.0</version>
<optional>true</optional> <optional>true</optional>
</dependency> </dependency>
@@ -865,6 +882,20 @@
</exclusions> </exclusions>
</dependency> </dependency>
<!-- dependencies used by HAProxy feature -->
<!-- <dependency>-->
<!-- <groupId>io.netty</groupId>-->
<!-- <artifactId>netty-codec-haproxy</artifactId>-->
<!-- <version>4.1.104.Final</version>-->
<!-- <scope>compile</scope>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>commons-validator</groupId>-->
<!-- <artifactId>commons-validator</artifactId>-->
<!-- <version>1.8.0</version>-->
<!-- <scope>provided</scope>-->
<!-- </dependency>-->
<!-- zPermissions plugin --> <!-- zPermissions plugin -->
<dependency> <dependency>
<groupId>org.tyrannyofheaven.bukkit</groupId> <groupId>org.tyrannyofheaven.bukkit</groupId>
+25 -19
View File
@@ -11,6 +11,7 @@ import fr.xephi.authme.initialization.OnShutdownPlayerSaver;
import fr.xephi.authme.initialization.OnStartupTasks; import fr.xephi.authme.initialization.OnStartupTasks;
import fr.xephi.authme.initialization.SettingsProvider; import fr.xephi.authme.initialization.SettingsProvider;
import fr.xephi.authme.initialization.TaskCloser; import fr.xephi.authme.initialization.TaskCloser;
import fr.xephi.authme.listener.AdvancedShulkerFixListener;
import fr.xephi.authme.listener.BedrockAutoLoginListener; import fr.xephi.authme.listener.BedrockAutoLoginListener;
import fr.xephi.authme.listener.BlockListener; import fr.xephi.authme.listener.BlockListener;
import fr.xephi.authme.listener.DoubleLoginFixListener; import fr.xephi.authme.listener.DoubleLoginFixListener;
@@ -73,8 +74,8 @@ public class AuthMe extends JavaPlugin {
// Version and build number values // Version and build number values
private static String pluginVersion = "5.6.0-Fork"; private static String pluginVersion = "5.6.0-Fork";
public static final String pluginBuild = "b"; private static final String pluginBuild = "b";
private static String pluginBuildNumber = "36"; private static String pluginBuildNumber = "40";
// Private instances // Private instances
private EmailService emailService; private EmailService emailService;
private CommandHandler commandHandler; private CommandHandler commandHandler;
@@ -85,12 +86,22 @@ public class AuthMe extends JavaPlugin {
private Injector injector; private Injector injector;
private BackupService backupService; private BackupService backupService;
public static ConsoleLogger logger; public static ConsoleLogger logger;
/** /**
* Constructor. * Constructor.
*/ */
public AuthMe() { public AuthMe() {
} }
/**
* Get the plugin's build
*
* @return The plugin's build
*/
public static String getPluginBuild() {
return pluginBuild;
}
/** /**
* Get the plugin's name. * Get the plugin's name.
@@ -179,22 +190,12 @@ public class AuthMe extends JavaPlugin {
// Set up Metrics // Set up Metrics
OnStartupTasks.sendMetrics(this, settings); OnStartupTasks.sendMetrics(this, settings);
if (settings.getProperty(SecuritySettings.SHOW_STARTUP_BANNER)) { if (settings.getProperty(SecuritySettings.SHOW_STARTUP_BANNER)) {
String loadColorConfig = settings.getProperty(SecuritySettings.STARTUP_BANNER_COLOR); logger.info("\n" + " ___ __ __ __ ___ \n" +
if (loadColorConfig.startsWith("§") && !loadColorConfig.endsWith("§") && (loadColorConfig.length() % 2 == 0)) { " / | __ __/ /_/ /_ / |/ /__ \n" +
logger.info("\n" + loadColorConfig + " ___ __ __ __ ___ \n" + " / /| |/ / / / __/ __ \\/ /|_/ / _ \\\n" +
loadColorConfig + " / | __ __/ /_/ /_ / |/ /__ \n" + " / ___ / /_/ / /_/ / / / / / / __/\n" +
loadColorConfig + " / /| |/ / / / __/ __ \\/ /|_/ / _ \\\n" + "/_/ |_\\__,_/\\__/_/ /_/_/ /_/\\___/ \n" +
loadColorConfig + " / ___ / /_/ / /_/ / / / / / / __/\n" + " ");
loadColorConfig + "/_/ |_\\__,_/\\__/_/ /_/_/ /_/\\___/ \n" +
loadColorConfig + " ");
} else {
logger.info("\n" + " ___ __ __ __ ___ \n" +
" / | __ __/ /_/ /_ / |/ /__ \n" +
" / /| |/ / / / __/ __ \\/ /|_/ / _ \\\n" +
" / ___ / /_/ / /_/ / / / / / / __/\n" +
"/_/ |_\\__,_/\\__/_/ /_/_/ /_/\\___/ \n" +
" ");
}
} }
// Successful message // Successful message
//detect server brand with classloader //detect server brand with classloader
@@ -349,6 +350,11 @@ public class AuthMe extends JavaPlugin {
if (settings.getProperty(SecuritySettings.ANTI_GHOST_PLAYERS)) { if (settings.getProperty(SecuritySettings.ANTI_GHOST_PLAYERS)) {
pluginManager.registerEvents(injector.getSingleton(DoubleLoginFixListener.class), this); pluginManager.registerEvents(injector.getSingleton(DoubleLoginFixListener.class), this);
} }
if (settings.getProperty(SecuritySettings.ADVANCED_SHULKER_FIX) && !isClassLoaded("org.bukkit.event.player.PlayerCommandSendEvent")) {
pluginManager.registerEvents(injector.getSingleton(AdvancedShulkerFixListener.class), this);
} else if (settings.getProperty(SecuritySettings.ADVANCED_SHULKER_FIX) && isClassLoaded("org.bukkit.event.player.PlayerCommandSendEvent")) {
logger.warning("You are running an 1.13+ minecraft server, advancedShulkerFix won't enable.");
}
} }
/** /**
@@ -416,7 +422,7 @@ public class AuthMe extends JavaPlugin {
if (isUpdateAvailable(latestVersion)) { if (isUpdateAvailable(latestVersion)) {
String message = "New version available! Latest:" + latestVersion + " Current:" + pluginBuild + pluginBuildNumber; String message = "New version available! Latest:" + latestVersion + " Current:" + pluginBuild + pluginBuildNumber;
getLogger().log(Level.WARNING, message); getLogger().log(Level.WARNING, message);
getLogger().log(Level.WARNING, "Download from here: github.com/HaHaWTH/AuthMeReReloaded/releases/latest"); getLogger().log(Level.WARNING, "Download from here: https://github.com/HaHaWTH/AuthMeReReloaded/releases/latest");
} else { } else {
getLogger().log(Level.INFO, "You are running the latest version."); getLogger().log(Level.INFO, "You are running the latest version.");
} }
@@ -0,0 +1,26 @@
package fr.xephi.authme.listener;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockDispenseEvent;
//This fix is only for Minecraft 1.13-
public class AdvancedShulkerFixListener implements Listener {
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
public void onDispenserActivate(BlockDispenseEvent event) {
Block block = event.getBlock();
if (block.getRelative(BlockFace.DOWN).getType().equals(Material.AIR) && block.getY() == 0) {
event.setCancelled(true);
return;
}
if (block.getRelative(BlockFace.UP).getType().equals(Material.AIR) && block.getY() == block.getWorld().getMaxHeight() - 1) {
event.setCancelled(true);
}
}
}
@@ -32,10 +32,10 @@ import org.bukkit.inventory.meta.ItemMeta;
import javax.inject.Inject; import javax.inject.Inject;
import java.io.File; import java.io.File;
import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicInteger;
import java.util.logging.Level; import java.util.logging.Level;
@@ -70,12 +70,14 @@ public class GuiCaptchaHandler implements Listener {
private int timesLeft = 3; private int timesLeft = 3;
//Use ConcurrentHashMap to store player and their close reason //Use ConcurrentHashMap to store player and their close reason
/* We used many async tasks so there is concurrent**/ /* We used many async tasks so there is concurrent**/
public static HashMap<Player, String> closeReasonMap = new HashMap<>(); public static ConcurrentHashMap<Player, String> closeReasonMap = new ConcurrentHashMap<>();
//define randomStringSet //define randomStringSet
String randomSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz!@#%&*()_+"; String randomSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890abcdefghijklmnopqrstuvwxyz!@#%&*()_+";
String randomString = ""; String randomString = "";
Random randomItemSet = new Random(); Random randomItemSet = new Random();
Random howManyRandom = new Random(); Random howManyRandom = new Random();
private boolean isPacketListenersActive = false; private boolean isPacketListenersActive = false;
public GuiCaptchaHandler() { public GuiCaptchaHandler() {
@@ -162,6 +164,7 @@ public class GuiCaptchaHandler implements Listener {
messages.send(playerunreg, MessageKey.GUI_CAPTCHA_VERIFIED_AUTO_BEDROCK); messages.send(playerunreg, MessageKey.GUI_CAPTCHA_VERIFIED_AUTO_BEDROCK);
return; return;
} }
bukkitService.runTaskAsynchronously(() -> { bukkitService.runTaskAsynchronously(() -> {
bukkitService.runTask(() -> { bukkitService.runTask(() -> {
randomString = sb.toString(); randomString = sb.toString();
@@ -233,14 +236,12 @@ public class GuiCaptchaHandler implements Listener {
timeOut = settings.getProperty(RestrictionSettings.TIMEOUT); timeOut = settings.getProperty(RestrictionSettings.TIMEOUT);
} }
long finalTimeOut = timeOut; long finalTimeOut = timeOut;
bukkitService.runTask(() -> { bukkitService.runTaskLater(() -> {
bukkitService.runTaskLater(() -> { if (!closeReasonMap.containsKey(playerunreg) && !authmeApi.isRegistered(playerunreg.getName())) {
if (!closeReasonMap.containsKey(playerunreg) && !authmeApi.isRegistered(playerunreg.getName())) { playerunreg.kickPlayer(service.retrieveSingleMessage(playerunreg, MessageKey.GUI_CAPTCHA_KICK_TIMEOUT));
playerunreg.kickPlayer(service.retrieveSingleMessage(playerunreg, MessageKey.GUI_CAPTCHA_KICK_TIMEOUT)); timesLeft = 3; // Reset the attempt counter
timesLeft = 3; // Reset the attempt counter }
} }, finalTimeOut * 20L);
}, finalTimeOut * 20L);
});
} }
}); });
}); });
@@ -18,6 +18,7 @@ import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.event.player.PlayerJoinEvent;
import javax.inject.Inject; import javax.inject.Inject;
import java.lang.reflect.Method;
public class LoginLocationFixListener implements Listener { public class LoginLocationFixListener implements Listener {
@@ -33,6 +34,8 @@ public class LoginLocationFixListener implements Listener {
} }
private static Material materialPortal = Material.matchMaterial("PORTAL"); private static Material materialPortal = Material.matchMaterial("PORTAL");
private static boolean isAvailable; // false: unchecked/method not available true: method is available
private final boolean isSmartAsyncTeleport = AuthMe.settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT); private final boolean isSmartAsyncTeleport = AuthMe.settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT);
private final boolean isFixPortalStuck = AuthMe.settings.getProperty(SecuritySettings.LOGIN_LOC_FIX_SUB_PORTAL); private final boolean isFixPortalStuck = AuthMe.settings.getProperty(SecuritySettings.LOGIN_LOC_FIX_SUB_PORTAL);
private final boolean isFixGroundStuck = AuthMe.settings.getProperty(SecuritySettings.LOGIN_LOC_FIX_SUB_UNDERGROUND); private final boolean isFixGroundStuck = AuthMe.settings.getProperty(SecuritySettings.LOGIN_LOC_FIX_SUB_UNDERGROUND);
@@ -45,12 +48,28 @@ public class LoginLocationFixListener implements Listener {
materialPortal = Material.matchMaterial("NETHER_PORTAL"); materialPortal = Material.matchMaterial("NETHER_PORTAL");
} }
} }
try {
Method getMinHeightMethod = World.class.getMethod("getMinHeight");
isAvailable = true;
} catch (NoSuchMethodException e) {
isAvailable = false;
}
} }
private int getMinHeight(World world) {
//This keeps compatibility of 1.16.x and lower
if (isAvailable) {
return world.getMinHeight();
} else {
return 0;
}
}
@EventHandler @EventHandler
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
Location JoinLocation = player.getLocation().getBlock().getLocation().add(0.5, 0.1, 0.5); Location JoinLocation = player.getLocation();
if (isFixPortalStuck) { if (isFixPortalStuck) {
if (!JoinLocation.getBlock().getType().equals(materialPortal) && !JoinLocation.getBlock().getRelative(BlockFace.UP).getType().equals(materialPortal)) { if (!JoinLocation.getBlock().getType().equals(materialPortal) && !JoinLocation.getBlock().getRelative(BlockFace.UP).getType().equals(materialPortal)) {
return; return;
@@ -73,11 +92,12 @@ public class LoginLocationFixListener implements Listener {
JoinBlock.breakNaturally(); JoinBlock.breakNaturally();
} }
messages.send(player, MessageKey.LOCATION_FIX_PORTAL); messages.send(player, MessageKey.LOCATION_FIX_PORTAL);
} else if (isFixGroundStuck) { }
if (isFixGroundStuck) {
Material UpType = JoinLocation.getBlock().getRelative(BlockFace.UP).getType(); Material UpType = JoinLocation.getBlock().getRelative(BlockFace.UP).getType();
World world = player.getWorld(); World world = player.getWorld();
int MaxHeight = world.getMaxHeight(); int MaxHeight = world.getMaxHeight();
int MinHeight = world.getMinHeight(); int MinHeight = getMinHeight(world);
if (!UpType.isOccluding() && !UpType.equals(Material.LAVA)) { if (!UpType.isOccluding() && !UpType.equals(Material.LAVA)) {
return; return;
} }
@@ -108,5 +128,6 @@ public class LoginLocationFixListener implements Listener {
} }
} }
} }
} }
} }
@@ -29,12 +29,8 @@ public class PlayerListenerHigherThan18 implements Listener {
@EventHandler(priority = EventPriority.LOWEST) @EventHandler(priority = EventPriority.LOWEST)
public void onSwitchHand(PlayerSwapHandItemsEvent event) { public void onSwitchHand(PlayerSwapHandItemsEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
if ((!player.isSneaking() || !player.hasPermission("keybindings.use")) && if (player.isSneaking() && player.hasPermission("keybindings.use") && settings.getProperty(PluginSettings.MENU_UNREGISTER_COMPATIBILITY)) {
settings.getProperty(PluginSettings.MENU_UNREGISTER_COMPATIBILITY)) { event.setCancelled(true);
return;
}
event.setCancelled(true);
if (settings.getProperty(PluginSettings.MENU_UNREGISTER_COMPATIBILITY)) {
Bukkit.dispatchCommand(event.getPlayer(), "help"); Bukkit.dispatchCommand(event.getPlayer(), "help");
} }
} }
@@ -14,7 +14,7 @@ public final class PluginSettings implements SettingsHolder {
"If you are using TrMenu, don't enable this because TrMenu already implemented this." "If you are using TrMenu, don't enable this because TrMenu already implemented this."
}) })
public static final Property<Boolean> MENU_UNREGISTER_COMPATIBILITY = public static final Property<Boolean> MENU_UNREGISTER_COMPATIBILITY =
newProperty("3rdPartyFeature.compatibility.menuPlugins", true); newProperty("3rdPartyFeature.compatibility.menuPlugins", false);
@Comment({ @Comment({
"Do you want to enable the session feature?", "Do you want to enable the session feature?",
@@ -39,7 +39,7 @@ public final class PluginSettings implements SettingsHolder {
"https://github.com/AuthMe/AuthMeReloaded/blob/master/docs/translations.md" "https://github.com/AuthMe/AuthMeReloaded/blob/master/docs/translations.md"
}) })
public static final Property<String> MESSAGES_LANGUAGE = public static final Property<String> MESSAGES_LANGUAGE =
newProperty("settings.messagesLanguage", "zhcn"); newProperty("settings.messagesLanguage", "en");
@Comment({ @Comment({
"Enables switching a player to defined permission groups before they log in.", "Enables switching a player to defined permission groups before they log in.",
@@ -14,11 +14,11 @@ public final class ProtectionSettings implements SettingsHolder {
@Comment("Enable some servers protection (country based login, antibot)") @Comment("Enable some servers protection (country based login, antibot)")
public static final Property<Boolean> ENABLE_PROTECTION = public static final Property<Boolean> ENABLE_PROTECTION =
newProperty("Protection.enableProtection", true); newProperty("Protection.enableProtection", false);
@Comment("Apply the protection also to registered usernames") @Comment("Apply the protection also to registered usernames")
public static final Property<Boolean> ENABLE_PROTECTION_REGISTERED = public static final Property<Boolean> ENABLE_PROTECTION_REGISTERED =
newProperty("Protection.enableProtectionRegistered", true); newProperty("Protection.enableProtectionRegistered", false);
@Comment({ @Comment({
"Countries allowed to join the server and register. For country codes, see", "Countries allowed to join the server and register. For country codes, see",
@@ -26,7 +26,7 @@ public final class ProtectionSettings implements SettingsHolder {
"Use \"LOCALHOST\" for local addresses.", "Use \"LOCALHOST\" for local addresses.",
"PLEASE USE QUOTES!"}) "PLEASE USE QUOTES!"})
public static final Property<List<String>> COUNTRIES_WHITELIST = public static final Property<List<String>> COUNTRIES_WHITELIST =
newListProperty("Protection.countries", "CN", "LOCALHOST"); newListProperty("Protection.countries", "LOCALHOST");
@Comment({ @Comment({
"Countries not allowed to join the server and register", "Countries not allowed to join the server and register",
@@ -28,52 +28,52 @@ public final class SecuritySettings implements SettingsHolder {
@Comment({"Should we let Bedrock players login automatically?", @Comment({"Should we let Bedrock players login automatically?",
"(Requires hookFloodgate to be true & floodgate loaded)"}) "(Requires hookFloodgate to be true & floodgate loaded)"})
public static final Property<Boolean> FORCE_LOGIN_BEDROCK = newProperty("3rdPartyFeature.features.bedrockAutoLogin", false); public static final Property<Boolean> FORCE_LOGIN_BEDROCK =
newProperty("3rdPartyFeature.features.bedrockAutoLogin", false);
@Comment("Enable the new feature to prevent ghost players?") @Comment("Enable the new feature to prevent ghost players?")
public static final Property<Boolean> ANTI_GHOST_PLAYERS = newProperty("3rdPartyFeature.fixes.antiGhostPlayer", false); public static final Property<Boolean> ANTI_GHOST_PLAYERS =
newProperty("3rdPartyFeature.fixes.antiGhostPlayer", false);
@Comment({"(MC1.13- only)",
"Should we fix the shulker crash bug with advanced method?"})
public static final Property<Boolean> ADVANCED_SHULKER_FIX =
newProperty("3rdPartyFeature.fixes.advancedShulkerFix", false);
@Comment({"Choose the best teleport method by server brand?", @Comment({"Choose the best teleport method by server brand?",
"(Enable this if you are using Paper)"}) "(Enable this if you are using Paper)"})
public static final Property<Boolean> SMART_ASYNC_TELEPORT = newProperty("3rdPartyFeature.optimizes.smartAsyncTeleport", false); public static final Property<Boolean> SMART_ASYNC_TELEPORT =
newProperty("3rdPartyFeature.optimizes.smartAsyncTeleport", false);
@Comment("Send a GUI captcha to unregistered players?(Requires ProtocolLib)") @Comment("Send a GUI captcha to unregistered players?(Requires ProtocolLib)")
public static final Property<Boolean> GUI_CAPTCHA = newProperty("3rdPartyFeature.features.captcha.guiCaptcha", false); public static final Property<Boolean> GUI_CAPTCHA =
newProperty("3rdPartyFeature.features.captcha.guiCaptcha", false);
@Comment({"Should we kick the players when they don't finish the GUI captcha in seconds?", @Comment({"Should we kick the players when they don't finish the GUI captcha in seconds?",
"(less than or equals 0 is disabled)"}) "(less than or equals 0 is disabled)"})
public static final Property<Integer> GUI_CAPTCHA_TIMEOUT = newProperty("3rdPartyFeature.features.captcha.timeOut", 0); public static final Property<Integer> GUI_CAPTCHA_TIMEOUT =
newProperty("3rdPartyFeature.features.captcha.timeOut", 0);
@Comment({"Should we ignore floodgate players when sending GUI captcha?", @Comment({"Should we ignore floodgate players when sending GUI captcha?",
"(Requires floodgate and hookFloodgate: true)"}) "(Requires floodgate and hookFloodgate: true)"})
public static final Property<Boolean> GUI_CAPTCHA_BE_COMPATIBILITY = newProperty("3rdPartyFeature.features.captcha.ignoreBedrock", false); public static final Property<Boolean> GUI_CAPTCHA_BE_COMPATIBILITY =
newProperty("3rdPartyFeature.features.captcha.ignoreBedrock", false);
@Comment("Should we delete player data and stats when they didn't finish the captcha?") @Comment("Should we delete player data and stats when they didn't finish the captcha?")
public static final Property<Boolean> DELETE_UNVERIFIED_PLAYER_DATA = newProperty("3rdPartyFeature.features.captcha.purgePlayerData", false); public static final Property<Boolean> DELETE_UNVERIFIED_PLAYER_DATA =
newProperty("3rdPartyFeature.features.captcha.purgePlayerData", false);
@Comment("Which world's player data should be deleted?(Enter the world *FOLDER* name where your players first logged in)") @Comment("Which world's player data should be deleted?(Enter the world *FOLDER* name where your players first logged in)")
public static final Property<String> DELETE_PLAYER_DATA_WORLD = newProperty("3rdPartyFeature.features.captcha.purgeWorldFolderName", "world"); public static final Property<String> DELETE_PLAYER_DATA_WORLD =
newProperty("3rdPartyFeature.features.captcha.purgeWorldFolderName", "world");
@Comment("Should we fix the location when players logged in the portal?") @Comment("Should we fix the location when players logged in the portal?")
public static final Property<Boolean> LOGIN_LOC_FIX_SUB_PORTAL = newProperty("3rdPartyFeature.fixes.loginLocationFix.fixPortalStuck", false); public static final Property<Boolean> LOGIN_LOC_FIX_SUB_PORTAL =
newProperty("3rdPartyFeature.fixes.loginLocationFix.fixPortalStuck", false);
@Comment("Should we fix the location when players logged underground?") @Comment("Should we fix the location when players logged underground?")
public static final Property<Boolean> LOGIN_LOC_FIX_SUB_UNDERGROUND = newProperty("3rdPartyFeature.fixes.loginLocationFix.fixGroundStuck", false); public static final Property<Boolean> LOGIN_LOC_FIX_SUB_UNDERGROUND =
newProperty("3rdPartyFeature.fixes.loginLocationFix.fixGroundStuck", false);
// @Comment({"Should we kick the players when they failed captcha too many times?",
// "(Minimum value is 1)(Default: 3)"})
// public static final Property<Integer> GUI_CAPTCHA_MAX_TRY = newProperty("3rdPartyFeature.captcha.maxTryTimes",3);
//@Comment({"Using which API to get hash data?",
//"Available options: github, gitee, ghproxy (if your server is in China, please use gitee or ghproxy.)"})
//public static final Property<String> SHA_CHECK_METHOD = newProperty("Plugin.hashing.hashApi","github");
//@Comment("Should we use the local cache sometimes instead of requesting API?")
//public static final Property<Boolean> USE_LOCAL_CACHE = newProperty("Plugin.hashing.useLocalCache",false);
//@Comment("DON'T TOUCH!!!")
//public static final Property<String> SHA_CHECK_CACHE = newProperty("Plugin.hashing.hashCached","");
@Comment("Copy AuthMe log output in a separate file as well?") @Comment("Copy AuthMe log output in a separate file as well?")
public static final Property<Boolean> USE_LOGGING = public static final Property<Boolean> USE_LOGGING =
@@ -100,10 +100,6 @@ public final class SecuritySettings implements SettingsHolder {
public static final Property<Boolean> SHOW_STARTUP_BANNER = public static final Property<Boolean> SHOW_STARTUP_BANNER =
newProperty("Plugin.banners.showBanners", true); newProperty("Plugin.banners.showBanners", true);
@Comment("Change the banner colors here (Default: §r)")
public static final Property<String> STARTUP_BANNER_COLOR =
newProperty("Plugin.banners.bannerColor", "§r");
@Comment("Max allowed tries before a captcha is required") @Comment("Max allowed tries before a captcha is required")
public static final Property<Integer> MAX_LOGIN_TRIES_BEFORE_CAPTCHA = public static final Property<Integer> MAX_LOGIN_TRIES_BEFORE_CAPTCHA =
newProperty("Security.captcha.maxLoginTry", 8); newProperty("Security.captcha.maxLoginTry", 8);
Binary file not shown.
@@ -11,6 +11,7 @@ registration:
command_usage: '&c正确用法:“/reg <密码> <重复密码>”' command_usage: '&c正确用法:“/reg <密码> <重复密码>”'
reg_only: '&c只允许注册过的玩家进服!' reg_only: '&c只允许注册过的玩家进服!'
success: '&a*** 已成功注册 ***' success: '&a*** 已成功注册 ***'
kicked_admin_registered: '&a*** 管理员刚刚注册了您; 请重新登录 ***'
# Password errors on registration # Password errors on registration
password: password:
+1 -1
View File
@@ -3,7 +3,7 @@ authors: [${pluginDescription.authors}]
website: http://github.com/HaHaWTH/AuthMeReReloaded/ website: http://github.com/HaHaWTH/AuthMeReReloaded/
description: A fork of AuthMeReloaded that contains bug fixes description: A fork of AuthMeReloaded that contains bug fixes
main: ${pluginDescription.main} main: ${pluginDescription.main}
version: 5.6.0-FORK-b36 version: 5.6.0-FORK-b40
api-version: 1.13 api-version: 1.13
softdepend: softdepend:
- Vault - Vault