Improve check logic

This commit is contained in:
HaHaWTH 2023-10-13 20:13:02 +08:00
parent 395f8f825f
commit b5b435d398

View File

@ -23,57 +23,55 @@ public class LoginLocationFixListener implements Listener{
@EventHandler @EventHandler
public void onPlayerJoin(PlayerJoinEvent event) { public void onPlayerJoin(PlayerJoinEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
if (!authmeApi.isRegistered(player.getName()) || !authmeApi.isAuthenticated(player)) { Material material = Material.matchMaterial("PORTAL");
Material material = Material.matchMaterial("PORTAL"); if(material == null){
if(material == null){ material = Material.matchMaterial("PORTAL_BLOCK");
material = Material.matchMaterial("PORTAL_BLOCK"); } else {
} else { material = Material.matchMaterial("NETHER_PORTAL");
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;
} }
Location JoinLocation = player.getLocation().getBlock().getLocation().add(0.5, 0.1, 0.5); Block JoinBlock = JoinLocation.getBlock();
if (AuthMe.settings.getProperty(SecuritySettings.LOGIN_LOC_FIX_SUB_PORTAL)) { boolean solved = false;
if (!JoinLocation.getBlock().getType().equals(material) && !JoinLocation.getBlock().getRelative(BlockFace.UP).getType().equals(material)) { for (BlockFace face : faces) {
return; 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(); Block JoinBlock = JoinLocation.getBlock();
boolean solved = false; if ((JoinBlock.getRelative(BlockFace.DOWN).getType().isBlock())
for (BlockFace face : faces) { && JoinBlock.getType().equals(Material.AIR)
if (JoinBlock.getRelative(face).getType().equals(Material.AIR) && JoinBlock.getRelative(face).getRelative(BlockFace.UP).getType().equals(Material.AIR)) { && JoinBlock.getRelative(BlockFace.UP).getType().equals(Material.AIR)) {
player.teleport(JoinBlock.getRelative(face).getLocation().add(0.5, 0.1, 0.5)); if (JoinBlock.getRelative(BlockFace.DOWN).getType().equals(Material.LAVA)) {
solved = true; JoinBlock.getRelative(BlockFace.DOWN).setType(Material.DIRT);
break;
} }
player.teleport(JoinBlock.getLocation().add(0.5, 0.1, 0.5));
player.sendMessage("§a你被埋住了, 坐标已修正, 下次下线之前请小心!");
break;
} }
if (!solved) { if (i == MaxHeight) {
JoinBlock.getRelative(BlockFace.UP).breakNaturally(); player.teleport(JoinBlock.getLocation().add(0.5, 1.1, 0.5));
JoinBlock.breakNaturally(); player.sendMessage("§a你被埋住了, 坐标无法修正, 只好送你去了最高点, 自求多福吧少年~");
}
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你被埋住了, 坐标无法修正, 只好送你去了最高点, 自求多福吧少年~");
}
} }
} }
} }