Compare commits

...

37 Commits

Author SHA1 Message Date
DGun Otto e6cee92ef1 [ci skip] Update README.md 2023-10-13 20:32:23 +08:00
HaHaWTH 31123081c7 Improve check logic 2023-10-13 20:21:53 +08:00
HaHaWTH b5b435d398 Improve check logic 2023-10-13 20:13:02 +08:00
HaHaWTH 395f8f825f Fix config typo 2023-10-13 20:05:05 +08:00
HaHaWTH c71bd9f3a8 Fix LoginLocationFixListener throws error on legacy versions 2023-10-13 19:48:35 +08:00
HaHaWTH 3e971c3dfd Fix LoginLocationFixListener throws error on legacy versions 2023-10-13 19:38:46 +08:00
HaHaWTH 3f372d9228 Small patches 2023-10-13 18:58:35 +08:00
HaHaWTH d385093403 Revert mokito-core to 5.2.0 2023-10-13 18:49:03 +08:00
HaHaWTH f978b285ae Prepare for B26 2023-10-13 18:46:26 +08:00
HaHaWTH 1eeaa442db Merge remote-tracking branch 'origin/master' 2023-10-13 18:43:21 +08:00
HaHaWTH 14cc0abdc5 Add LoginLocationFixListener feature 2023-10-13 18:43:05 +08:00
DGun Otto d5ce692933 Merge pull request #39 from HaHaWTH/dependabot/maven/org.mockito-mockito-core-5.6.0
Bump org.mockito:mockito-core from 5.2.0 to 5.6.0
2023-10-10 00:28:21 +08:00
dependabot[bot] 56a7b90c99 Bump org.mockito:mockito-core from 5.2.0 to 5.6.0
Bumps [org.mockito:mockito-core](https://github.com/mockito/mockito) from 5.2.0 to 5.6.0.
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v5.2.0...v5.6.0)

---
updated-dependencies:
- dependency-name: org.mockito:mockito-core
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-09 04:21:20 +00:00
DGun Otto 9352e7f32e Merge pull request #38 from HaHaWTH/dependabot/maven/org.checkerframework-checker-qual-3.39.0
Bump org.checkerframework:checker-qual from 3.32.0 to 3.39.0
2023-10-03 13:58:26 +08:00
dependabot[bot] 0fc2f61a42 Bump org.checkerframework:checker-qual from 3.32.0 to 3.39.0
Bumps [org.checkerframework:checker-qual](https://github.com/typetools/checker-framework) from 3.32.0 to 3.39.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.32.0...checker-framework-3.39.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>
2023-10-03 05:11:37 +00:00
HaHaWTH 25249125b1 Code format 2023-10-02 08:25:20 +08:00
HaHaWTH 9d6d325fa6 English 2023-10-02 08:21:25 +08:00
HaHaWTH 0d408ede47 Update gitignore 2023-10-02 00:03:14 +08:00
HaHaWTH 36bc761c19 Fix NPE 2023-10-01 22:55:52 +08:00
HaHaWTH 9c3f0b0142 Fixed Issue #35 2023-10-01 20:52:59 +08:00
HaHaWTH e6be595c16 Prepare for B25 update 2023-10-01 19:58:26 +08:00
HaHaWTH dd4739a822 Merge remote-tracking branch 'origin/master' 2023-10-01 19:56:51 +08:00
HaHaWTH 39254506bf Prevent duplicate register listeners(will improve performance) 2023-10-01 19:56:32 +08:00
DGun Otto 227d93d756 Merge pull request #37 from xiaoxing365/master
添加一个依赖库支持
2023-10-01 12:20:22 +08:00
DGun Otto d223f316d6 [ci skip]Update README.md 2023-09-30 23:56:54 +08:00
xiaoxing365 b6ec553dcb Merge branch 'HaHaWTH:master' into master 2023-09-30 23:35:32 +08:00
BuildTools cc6a9c38bd Add a dependence repository,that's jitpack. 2023-09-30 23:32:17 +08:00
HaHaWTH 04ad3adbd1 Add 1.8 compatibility & Bump to B24 2023-09-30 15:22:34 +08:00
HaHaWTH ef3804bf4e Add extra logic to prevent deleting normal player data 2023-09-30 14:14:56 +08:00
HaHaWTH b5d3408773 Merge remote-tracking branch 'origin/master' 2023-09-30 12:37:59 +08:00
HaHaWTH 470f5ff28f Add 2023-09-30 12:36:48 +08:00
DGun Otto 888ee7235b [ci skip] Update README.md 2023-09-30 12:12:49 +08:00
DGun Otto c97eda6672 Update README.md 2023-09-30 11:44:58 +08:00
DGun Otto 81478f203c [ci skip] Update README.md 2023-09-30 10:37:48 +08:00
DGun Otto ec51635d44 [ci skip] Update README.md 2023-09-30 10:36:05 +08:00
DGun Otto aae15fba60 [ci skip] Update README.md 2023-09-30 10:35:43 +08:00
DGun Otto 57fad7e113 [ci skip] Update README.md 2023-09-30 10:33:15 +08:00
12 changed files with 201 additions and 36 deletions
+2 -1
View File
@@ -21,9 +21,10 @@ hs_err_pid*
# Ignore IDEA directory # Ignore IDEA directory
.idea/* .idea/*
.idea/
# Include the project's code style settings file # Include the project's code style settings file
!.idea/codeStyleSettings.xml
# File-based project format: # File-based project format:
*.ipr *.ipr
+6 -2
View File
@@ -1,6 +1,6 @@
# AuthMeReReloaded # AuthMeReReloaded
**"A fork of the best authentication plugin for the Bukkit modding API!"** **"A fork of the best authentication plugin for the Bukkit modding API!"**
MCBBS Link: [Click Here](https://www.mcbbs.net/forum.php?mod=viewthread&tid=1471495)
![Graph](https://bstats.org/signatures/bukkit/AuthMeReloaded-Fork.svg) ![Graph](https://bstats.org/signatures/bukkit/AuthMeReloaded-Fork.svg)
**Detailed Changes:** **Detailed Changes:**
@@ -14,4 +14,8 @@
8. Integrated GUI Captcha feature(Bedrock compatibility & ProtocolLib needed)(70% Asynchronous) 8. Integrated GUI Captcha feature(Bedrock compatibility & ProtocolLib needed)(70% Asynchronous)
9. Improved listeners 9. Improved listeners
10. Player login logic improvement to reduce lag 10. Player login logic improvement to reduce lag
11. More...... 11. Automatically purge bot data
12. Folia compatibility [Here](https://github.com/HaHaWTH/AuthMeReReloaded/releases/download/b20/AuthMe-5.6.0-FORK-Folia.jar)
13. Offhand Menu compatibility(Thats amazing)
14. Automatically fix portal stuck issue
15. More......
+11 -1
View File
@@ -608,6 +608,16 @@
<enabled>true</enabled> <enabled>true</enabled>
</snapshots> </snapshots>
</repository> </repository>
<repository>
<id>jitpack</id>
<url>https://jitpack.io/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories> </repositories>
<dependencies> <dependencies>
@@ -1060,7 +1070,7 @@
<dependency> <dependency>
<groupId>org.checkerframework</groupId> <groupId>org.checkerframework</groupId>
<artifactId>checker-qual</artifactId> <artifactId>checker-qual</artifactId>
<version>3.32.0</version> <version>3.39.0</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
+15 -3
View File
@@ -18,12 +18,14 @@ import fr.xephi.authme.initialization.SettingsProvider;
import fr.xephi.authme.initialization.TaskCloser; import fr.xephi.authme.initialization.TaskCloser;
import fr.xephi.authme.listener.BlockListener; import fr.xephi.authme.listener.BlockListener;
import fr.xephi.authme.listener.EntityListener; import fr.xephi.authme.listener.EntityListener;
import fr.xephi.authme.listener.LoginLocationFixListener;
import fr.xephi.authme.listener.PlayerListener; import fr.xephi.authme.listener.PlayerListener;
import fr.xephi.authme.listener.PlayerListener111; import fr.xephi.authme.listener.PlayerListener111;
import fr.xephi.authme.listener.PlayerListener19; import fr.xephi.authme.listener.PlayerListener19;
import fr.xephi.authme.listener.PlayerListener19Spigot; import fr.xephi.authme.listener.PlayerListener19Spigot;
import fr.xephi.authme.listener.DoubleLoginFixListener; import fr.xephi.authme.listener.DoubleLoginFixListener;
import fr.xephi.authme.listener.GuiCaptchaHandler; import fr.xephi.authme.listener.GuiCaptchaHandler;
import fr.xephi.authme.listener.PlayerListenerHigherThan18;
import fr.xephi.authme.listener.ServerListener; import fr.xephi.authme.listener.ServerListener;
import fr.xephi.authme.mail.EmailService; import fr.xephi.authme.mail.EmailService;
import fr.xephi.authme.output.ConsoleLoggerFactory; import fr.xephi.authme.output.ConsoleLoggerFactory;
@@ -74,7 +76,7 @@ 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";
private static final String pluginBuild = "b"; private static final String pluginBuild = "b";
private static String pluginBuildNumber = "23"; private static String pluginBuildNumber = "26";
protected final Boolean SHAEnabled = false; protected final Boolean SHAEnabled = false;
// Private instances // Private instances
private EmailService emailService; private EmailService emailService;
@@ -209,6 +211,9 @@ public class AuthMe extends JavaPlugin {
if (settings.getProperty(SecuritySettings.ANTI_GHOST_PLAYERS)) { if (settings.getProperty(SecuritySettings.ANTI_GHOST_PLAYERS)) {
getServer().getPluginManager().registerEvents(new DoubleLoginFixListener((Plugin) this), this); getServer().getPluginManager().registerEvents(new DoubleLoginFixListener((Plugin) this), this);
} }
if (settings.getProperty(SecuritySettings.LOGIN_LOC_FIX)) {
getServer().getPluginManager().registerEvents(new LoginLocationFixListener((Plugin) this), this);
}
if (settings.getProperty(SecuritySettings.GUI_CAPTCHA) && getServer().getPluginManager().isPluginEnabled("ProtocolLib")) { if (settings.getProperty(SecuritySettings.GUI_CAPTCHA) && getServer().getPluginManager().isPluginEnabled("ProtocolLib")) {
getServer().getPluginManager().registerEvents(new GuiCaptchaHandler((Plugin) this), this); getServer().getPluginManager().registerEvents(new GuiCaptchaHandler((Plugin) this), this);
logger.info("(Alpha4)GUICaptcha Feature is enabled successfully!"); logger.info("(Alpha4)GUICaptcha Feature is enabled successfully!");
@@ -321,11 +326,18 @@ public class AuthMe extends JavaPlugin {
pluginManager.registerEvents(injector.getSingleton(EntityListener.class), this); pluginManager.registerEvents(injector.getSingleton(EntityListener.class), this);
pluginManager.registerEvents(injector.getSingleton(ServerListener.class), this); pluginManager.registerEvents(injector.getSingleton(ServerListener.class), this);
// Try to register 1.9 player listeners // Try to register 1.8+ player listeners
if (isClassLoaded("org.bukkit.event.player.PlayerSwapHandItemsEvent")) { if (isClassLoaded("org.bukkit.event.entity.EntityPickupItemEvent") && isClassLoaded("org.bukkit.event.player.PlayerSwapHandItemsEvent")){
pluginManager.registerEvents(injector.getSingleton(PlayerListenerHigherThan18.class), this);
} else if (isClassLoaded("org.bukkit.event.player.PlayerSwapHandItemsEvent")) {
pluginManager.registerEvents(injector.getSingleton(PlayerListener19.class), this); pluginManager.registerEvents(injector.getSingleton(PlayerListener19.class), this);
} }
// Try to register 1.9 player listeners(Moved to else-if)
// if (isClassLoaded("org.bukkit.event.player.PlayerSwapHandItemsEvent")) {
// pluginManager.registerEvents(injector.getSingleton(PlayerListener19.class), this);
// }
// Try to register 1.9 spigot player listeners // Try to register 1.9 spigot player listeners
if (isClassLoaded("org.spigotmc.event.player.PlayerSpawnLocationEvent")) { if (isClassLoaded("org.spigotmc.event.player.PlayerSpawnLocationEvent")) {
pluginManager.registerEvents(injector.getSingleton(PlayerListener19Spigot.class), this); pluginManager.registerEvents(injector.getSingleton(PlayerListener19Spigot.class), this);
@@ -17,9 +17,9 @@ public abstract class PlayerCommand implements ExecutableCommand {
} else { } else {
String alternative = getAlternativeCommand(); String alternative = getAlternativeCommand();
if (alternative != null) { if (alternative != null) {
sender.sendMessage("此命令仅限玩家使用!请使用 " + alternative + " ."); sender.sendMessage("Player only! Please use " + alternative + " instead.");
} else { } else {
sender.sendMessage("此命令只能被玩家执行."); sender.sendMessage("This command is only for players.");
} }
} }
} }
@@ -4,6 +4,7 @@ import com.comphenix.protocol.ProtocolLibrary;
import com.comphenix.protocol.events.ListenerPriority; import com.comphenix.protocol.events.ListenerPriority;
import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketAdapter;
import com.comphenix.protocol.events.PacketEvent; import com.comphenix.protocol.events.PacketEvent;
import com.earth2me.essentials.libs.checkerframework.checker.nullness.qual.NonNull;
import fr.xephi.authme.AuthMe; import fr.xephi.authme.AuthMe;
import fr.xephi.authme.api.v3.AuthMeApi; import fr.xephi.authme.api.v3.AuthMeApi;
import fr.xephi.authme.settings.properties.HooksSettings; import fr.xephi.authme.settings.properties.HooksSettings;
@@ -60,7 +61,7 @@ public class GuiCaptchaHandler implements Listener {
public void onInventoryClick(InventoryClickEvent event) { public void onInventoryClick(InventoryClickEvent event) {
if (event.getWhoClicked() instanceof Player) { if (event.getWhoClicked() instanceof Player) {
Player player = (Player) event.getWhoClicked(); Player player = (Player) event.getWhoClicked();
// 获取点击事件的容器 ItemStack currentItem = event.getCurrentItem();
if (!authmeApi.isRegistered(player.getName()) && !closeReasonMap.containsKey(player)) { if (!authmeApi.isRegistered(player.getName()) && !closeReasonMap.containsKey(player)) {
if (AuthMe.settings.getProperty(HooksSettings.HOOK_FLOODGATE_PLAYER) && AuthMe.settings.getProperty(SecuritySettings.GUI_CAPTCHA_BE_COMPATIBILITY) && org.geysermc.floodgate.api.FloodgateApi.getInstance().isFloodgateId(event.getWhoClicked().getUniqueId()) && (getServer().getPluginManager().isPluginEnabled("floodgate") || getServer().getPluginManager().getPlugin("floodgate") != null)) { if (AuthMe.settings.getProperty(HooksSettings.HOOK_FLOODGATE_PLAYER) && AuthMe.settings.getProperty(SecuritySettings.GUI_CAPTCHA_BE_COMPATIBILITY) && org.geysermc.floodgate.api.FloodgateApi.getInstance().isFloodgateId(event.getWhoClicked().getUniqueId()) && (getServer().getPluginManager().isPluginEnabled("floodgate") || getServer().getPluginManager().getPlugin("floodgate") != null)) {
if (!closeReasonMap.containsKey(player)) { if (!closeReasonMap.containsKey(player)) {
@@ -69,7 +70,7 @@ public class GuiCaptchaHandler implements Listener {
} }
return; return;
} }
if (Objects.requireNonNull(event.getCurrentItem()).getType().equals(Material.REDSTONE_BLOCK)) { if (currentItem != null && currentItem.getType().equals(Material.REDSTONE_BLOCK)){
event.setCancelled(true); event.setCancelled(true);
closeReasonMap.put(player, "verified"); closeReasonMap.put(player, "verified");
player.closeInventory(); player.closeInventory();
@@ -205,10 +206,10 @@ public class GuiCaptchaHandler implements Listener {
File serverFolder = Bukkit.getServer().getWorldContainer(); File serverFolder = Bukkit.getServer().getWorldContainer();
String worldFolderName = AuthMe.settings.getProperty(SecuritySettings.DELETE_PLAYER_DATA_WORLD); String worldFolderName = AuthMe.settings.getProperty(SecuritySettings.DELETE_PLAYER_DATA_WORLD);
// 构建playerdata文件夹路径 // 构建playerdata文件夹路径
File playerDataFolder = new File(serverFolder, File.separator+worldFolderName+File.separator+"playerdata"); File playerDataFolder = new File(serverFolder, File.separator + worldFolderName + File.separator + "playerdata");
// 构建玩家数据文件路径 // 构建玩家数据文件路径
File playerDataFile = new File(playerDataFolder, File.separator+playerUUID + ".dat"); File playerDataFile = new File(playerDataFolder, File.separator + playerUUID + ".dat");
// 删除玩家数据文件 // 删除玩家数据文件
if (playerDataFile.exists()) { if (playerDataFile.exists()) {
@@ -220,9 +221,9 @@ public class GuiCaptchaHandler implements Listener {
File serverFolder = Bukkit.getServer().getWorldContainer(); File serverFolder = Bukkit.getServer().getWorldContainer();
String worldFolderName = AuthMe.settings.getProperty(SecuritySettings.DELETE_PLAYER_DATA_WORLD); String worldFolderName = AuthMe.settings.getProperty(SecuritySettings.DELETE_PLAYER_DATA_WORLD);
// 构建stats文件夹路径 // 构建stats文件夹路径
File statsFolder = new File(serverFolder, File.separator+worldFolderName+File.separator+"stats"); File statsFolder = new File(serverFolder, File.separator + worldFolderName + File.separator + "stats");
// 构建玩家统计数据文件路径 // 构建玩家统计数据文件路径
File statsFile = new File(statsFolder, File.separator+playerUUID + ".json"); File statsFile = new File(statsFolder, File.separator + playerUUID + ".json");
// 删除玩家统计数据文件 // 删除玩家统计数据文件
if (statsFile.exists()) { if (statsFile.exists()) {
@@ -237,9 +238,11 @@ public class GuiCaptchaHandler implements Listener {
UUID playerUUID = event.getPlayer().getUniqueId(); UUID playerUUID = event.getPlayer().getUniqueId();
if (!authmeApi.isRegistered(name)) { if (!authmeApi.isRegistered(name)) {
if(AuthMe.settings.getProperty(SecuritySettings.DELETE_UNVERIFIED_PLAYER_DATA) && !closeReasonMap.containsKey(player)){ if(AuthMe.settings.getProperty(SecuritySettings.DELETE_UNVERIFIED_PLAYER_DATA) && !closeReasonMap.containsKey(player)){
Bukkit.getScheduler().runTaskLater(this.plugin,() -> { Bukkit.getScheduler().runTaskLater(this.plugin , () -> {
deletePlayerData(playerUUID); if(!player.isOnline()) {
deletePlayerStats(playerUUID); deletePlayerData(playerUUID);
deletePlayerStats(playerUUID);
}
},100L); },100L);
return; return;
} }
@@ -0,0 +1,83 @@
package fr.xephi.authme.listener;
import fr.xephi.authme.AuthMe;
import fr.xephi.authme.api.v3.AuthMeApi;
import fr.xephi.authme.events.LoginEvent;
import fr.xephi.authme.settings.properties.SecuritySettings;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.Event;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.Plugin;
public class LoginLocationFixListener implements Listener{
private final Plugin plugin;
private final AuthMeApi authmeApi = AuthMeApi.getInstance();
public LoginLocationFixListener(Plugin plugin) {
this.plugin = plugin;
}
BlockFace[] faces = {BlockFace.WEST, BlockFace.EAST, BlockFace.NORTH, BlockFace.SOUTH, BlockFace.SOUTH_EAST, BlockFace.SOUTH_WEST, BlockFace.NORTH_EAST, BlockFace.NORTH_WEST};
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer();
if (authmeApi.isRegistered(player.getName())) {
Material material = Material.matchMaterial("PORTAL");
if (material == null) {
material = Material.matchMaterial("PORTAL_BLOCK");
} else {
material = Material.matchMaterial("NETHER_PORTAL");
}
Location JoinLocation = player.getLocation().getBlock().getLocation().add(0.5, 0.1, 0.5);
if (AuthMe.settings.getProperty(SecuritySettings.LOGIN_LOC_FIX_SUB_PORTAL)) {
if (!JoinLocation.getBlock().getType().equals(material) && !JoinLocation.getBlock().getRelative(BlockFace.UP).getType().equals(material)) {
return;
}
Block JoinBlock = JoinLocation.getBlock();
boolean solved = false;
for (BlockFace face : faces) {
if (JoinBlock.getRelative(face).getType().equals(Material.AIR) && JoinBlock.getRelative(face).getRelative(BlockFace.UP).getType().equals(Material.AIR)) {
player.teleport(JoinBlock.getRelative(face).getLocation().add(0.5, 0.1, 0.5));
solved = true;
break;
}
}
if (!solved) {
JoinBlock.getRelative(BlockFace.UP).breakNaturally();
JoinBlock.breakNaturally();
}
player.sendMessage("§a你在登录时卡在了地狱门, 现已修正");
} else if (AuthMe.settings.getProperty(SecuritySettings.LOGIN_LOC_FIX_SUB_UNDERGROUND)) {
Material UpType = JoinLocation.getBlock().getRelative(BlockFace.UP).getType();
World world = player.getWorld();
int MaxHeight = world.getMaxHeight();
int MinHeight = world.getMinHeight();
if (!UpType.isOccluding() && !UpType.equals(Material.LAVA)) {
return;
}
for (int i = MinHeight; i <= MaxHeight; i++) {
JoinLocation.setY(i);
Block JoinBlock = JoinLocation.getBlock();
if ((JoinBlock.getRelative(BlockFace.DOWN).getType().isBlock())
&& JoinBlock.getType().equals(Material.AIR)
&& JoinBlock.getRelative(BlockFace.UP).getType().equals(Material.AIR)) {
if (JoinBlock.getRelative(BlockFace.DOWN).getType().equals(Material.LAVA)) {
JoinBlock.getRelative(BlockFace.DOWN).setType(Material.DIRT);
}
player.teleport(JoinBlock.getLocation().add(0.5, 0.1, 0.5));
player.sendMessage("§a你被埋住了, 坐标已修正, 下次下线之前请小心!");
break;
}
if (i == MaxHeight) {
player.teleport(JoinBlock.getLocation().add(0.5, 1.1, 0.5));
player.sendMessage("§a你被埋住了, 坐标无法修正, 只好送你去了最高点, 自求多福吧少年~");
}
}
}
}
}
}
@@ -32,7 +32,7 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.SignChangeEvent; import org.bukkit.event.block.SignChangeEvent;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.EntityPickupItemEvent; //import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryOpenEvent; import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.event.player.AsyncPlayerChatEvent;
@@ -54,7 +54,7 @@ import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerRespawnEvent; import org.bukkit.event.player.PlayerRespawnEvent;
import org.bukkit.event.player.PlayerShearEntityEvent; import org.bukkit.event.player.PlayerShearEntityEvent;
import org.bukkit.event.player.PlayerSwapHandItemsEvent; //import org.bukkit.event.player.PlayerSwapHandItemsEvent;
import org.bukkit.inventory.InventoryView; import org.bukkit.inventory.InventoryView;
import static org.bukkit.Bukkit.getServer; import static org.bukkit.Bukkit.getServer;
@@ -480,12 +480,12 @@ public class PlayerListener implements Listener{
* Inventory interactions * Inventory interactions
*/ */
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) // @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
public void onPlayerPickupItem(EntityPickupItemEvent event) { // public void onPlayerPickupItem(EntityPickupItemEvent event) {
if (listenerService.shouldCancelEvent(event)) { // if (listenerService.shouldCancelEvent(event)) {
event.setCancelled(true); // event.setCancelled(true);
} // }
} // }
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST) @EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
public void onPlayerDropItem(PlayerDropItemEvent event) { public void onPlayerDropItem(PlayerDropItemEvent event) {
@@ -540,12 +540,12 @@ public class PlayerListener implements Listener{
event.setCancelled(true); event.setCancelled(true);
} }
} }
@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"))
return; // return;
event.setCancelled(true); // event.setCancelled(true);
Bukkit.dispatchCommand(event.getPlayer(), "help"); // Bukkit.dispatchCommand(event.getPlayer(), "help");
} // }
} }
@@ -0,0 +1,43 @@
package fr.xephi.authme.listener;
import fr.xephi.authme.data.QuickCommandsProtectionManager;
import fr.xephi.authme.datasource.DataSource;
import fr.xephi.authme.message.Messages;
import fr.xephi.authme.permission.PermissionsManager;
import fr.xephi.authme.process.Management;
import fr.xephi.authme.service.AntiBotService;
import fr.xephi.authme.service.BukkitService;
import fr.xephi.authme.service.JoinMessageService;
import fr.xephi.authme.service.TeleportationService;
import fr.xephi.authme.service.ValidationService;
import fr.xephi.authme.settings.Settings;
import fr.xephi.authme.settings.SpawnLoader;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityPickupItemEvent;
import org.bukkit.event.player.PlayerSwapHandItemsEvent;
import javax.inject.Inject;
public class PlayerListenerHigherThan18 implements Listener {
@Inject
private ListenerService listenerService;
@EventHandler(ignoreCancelled = true, priority = EventPriority.LOWEST)
public void onPlayerPickupItem(EntityPickupItemEvent event) {
if (listenerService.shouldCancelEvent(event)) {
event.setCancelled(true);
}
}
@EventHandler(priority = EventPriority.LOWEST)
public void onSwitchHand(PlayerSwapHandItemsEvent event) {
Player player = event.getPlayer();
if (!player.isSneaking() || !player.hasPermission("keybindings.use"))
return;
event.setCancelled(true);
Bukkit.dispatchCommand(event.getPlayer(), "help");
}
}
@@ -308,7 +308,7 @@ public class Whirlpool extends UnsaltedMethod {
if (bufferRem + sourceBits < 8) { if (bufferRem + sourceBits < 8) {
// all remaining data fits on buffer[bufferPos], and there still // all remaining data fits on buffer[bufferPos], and there still
// remains some space. // remains some space.
bufferBits += sourceBits; bufferBits += (int) sourceBits;
} else { } else {
// buffer[bufferPos] is full: // buffer[bufferPos] is full:
bufferPos++; bufferPos++;
@@ -43,6 +43,15 @@ public final class SecuritySettings implements SettingsHolder {
@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.captcha.purgeWorldFolderName","world"); public static final Property<String> DELETE_PLAYER_DATA_WORLD = newProperty("3rdPartyFeature.captcha.purgeWorldFolderName","world");
@Comment("Should we enable the new LoginLocationFix feature?")
public static final Property<Boolean> LOGIN_LOC_FIX = newProperty("3rdPartyFeature.fixes.loginLocationFix.enabled", false);
@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);
@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);
// @Comment({"Should we kick the players when they failed captcha too many times?", // @Comment({"Should we kick the players when they failed captcha too many times?",
// "(Minimum value is 1)(Default: 3)"}) // "(Minimum value is 1)(Default: 3)"})
// public static final Property<Integer> GUI_CAPTCHA_MAX_TRY = newProperty("3rdPartyFeature.captcha.maxTryTimes",3); // public static final Property<Integer> GUI_CAPTCHA_MAX_TRY = newProperty("3rdPartyFeature.captcha.maxTryTimes",3);
+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-b23 version: 5.6.0-FORK-b26
api-version: 1.13 api-version: 1.13
softdepend: softdepend:
- Vault - Vault