Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 68ab92dd7a | |||
| d9495ff839 | |||
| 0e01d8145f | |||
| ed9e379500 | |||
| a9cb2d2490 | |||
| 900937c033 | |||
| 9585fc1bdb | |||
| d8d3e8544c | |||
| a50e5fa802 | |||
| c9363ca6e8 | |||
| 222bd879d1 | |||
| 01f4a8f205 | |||
| be976b6738 | |||
| c89a818696 | |||
| 1c63eca0f7 | |||
| 69989fb99e | |||
| 8cf794e303 | |||
| de9e74d616 | |||
| e147a25076 | |||
| b25d874122 | |||
| b322032757 | |||
| d505601d33 | |||
| 8580d57a12 | |||
| b051f4feef | |||
| 96c886b93d | |||
| f1d6df9a17 | |||
| 6681075031 | |||
| 1aae25f510 |
@@ -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!**
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
@@ -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 = "38";
|
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?",
|
||||||
|
|||||||
@@ -35,6 +35,11 @@ public final class SecuritySettings implements SettingsHolder {
|
|||||||
public static final Property<Boolean> ANTI_GHOST_PLAYERS =
|
public static final Property<Boolean> ANTI_GHOST_PLAYERS =
|
||||||
newProperty("3rdPartyFeature.fixes.antiGhostPlayer", false);
|
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 =
|
public static final Property<Boolean> SMART_ASYNC_TELEPORT =
|
||||||
@@ -95,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.
@@ -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-b38
|
version: 5.6.0-FORK-b40
|
||||||
api-version: 1.13
|
api-version: 1.13
|
||||||
softdepend:
|
softdepend:
|
||||||
- Vault
|
- Vault
|
||||||
|
|||||||
Reference in New Issue
Block a user