Prevent server from half-crashing

This commit is contained in:
mathiascode 2020-04-21 16:44:24 +03:00
parent 92d9e4ad64
commit 6fe4e56a7f
3 changed files with 50 additions and 48 deletions

View file

@ -40,7 +40,7 @@ public final class BlockPhysics implements Listener {
}
}
}
} catch (Exception e) {
} catch (Exception | StackOverflowError e) {
event.setCancelled(true);
}
}
@ -52,44 +52,52 @@ public final class BlockPhysics implements Listener {
event.getBlock().setType(Material.AIR, false);
event.setCancelled(true);
}
} catch (Exception e) {
} catch (Exception | StackOverflowError e) {
event.setCancelled(true);
}
}
@EventHandler
void onBlockForm(final BlockFormEvent event) {
if (event.getBlock().getType() == Material.LAVA
|| event.getBlock().getType() == Material.WATER) {
for (BlockFace face : getBlockFaces()) {
if (event.getBlock().getRelative(face).getType() != Material.LAVA
&& event.getBlock().getRelative(face).getType() != Material.WATER) {
return;
try {
if (event.getBlock().getType() == Material.LAVA
|| event.getBlock().getType() == Material.WATER) {
for (BlockFace face : getBlockFaces()) {
if (event.getBlock().getRelative(face).getType() != Material.LAVA
&& event.getBlock().getRelative(face).getType() != Material.WATER) {
return;
}
event.setCancelled(true);
}
event.setCancelled(true);
}
} catch (Exception | StackOverflowError e) {
event.setCancelled(true);
}
}
@EventHandler
void onBlockFromTo(final BlockFromToEvent event) {
if (event.getBlock().getType() == Material.LAVA
|| event.getBlock().getType() == Material.WATER) {
boolean lavaFound = false;
boolean waterFound = false;
try {
if (event.getBlock().getType() == Material.LAVA
|| event.getBlock().getType() == Material.WATER) {
boolean lavaFound = false;
boolean waterFound = false;
for (BlockFace face : getBlockFaces()) {
if (event.getBlock().getRelative(face).getType() == Material.LAVA && !lavaFound) {
lavaFound = true;
} else if (event.getBlock().getRelative(face).getType() == Material.WATER && !waterFound) {
waterFound = true;
}
for (BlockFace face : getBlockFaces()) {
if (event.getBlock().getRelative(face).getType() == Material.LAVA && !lavaFound) {
lavaFound = true;
} else if (event.getBlock().getRelative(face).getType() == Material.WATER && !waterFound) {
waterFound = true;
}
if (lavaFound && waterFound) {
event.setCancelled(true);
return;
if (lavaFound && waterFound) {
event.setCancelled(true);
return;
}
}
}
} catch (Exception | StackOverflowError e) {
event.setCancelled(true);
}
}
@ -121,7 +129,7 @@ public final class BlockPhysics implements Listener {
default:
break;
}
} catch (Exception e) {
} catch (Exception | StackOverflowError e) {
event.setCancelled(true);
}
}

View file

@ -27,27 +27,21 @@ import pw.kaboom.extras.Main;
public final class PlayerConnection implements Listener {
@EventHandler
void onAsyncPlayerPreLogin(final AsyncPlayerPreLoginEvent event) {
if (event.getName().length() > 16) {
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "Your username can't be longer than 16 characters");
} else {
for (Player player : Bukkit.getOnlinePlayers()) {
if (event.getName().equals(player.getName())) {
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "A player with that username is already logged in");
}
}
/*try {
final PlayerProfile profile = event.getPlayerProfile();
UUID offlineUUID = UUID.nameUUIDFromBytes(("OfflinePlayer:" + event.getName()).getBytes(Charsets.UTF_8));
profile.setId(offlineUUID);
SkinDownloader skinDownloader = new SkinDownloader();
skinDownloader.fillJoinProfile(profile, event.getName(), event.getUniqueId());
} catch (Exception ignored) {
}*/
if (Bukkit.getPlayer(event.getName()) != null) {
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "A player with that username is already logged in");
}
/*try {
final PlayerProfile profile = event.getPlayerProfile();
UUID offlineUUID = UUID.nameUUIDFromBytes(("OfflinePlayer:" + event.getName()).getBytes(Charsets.UTF_8));
profile.setId(offlineUUID);
SkinDownloader skinDownloader = new SkinDownloader();
skinDownloader.fillJoinProfile(profile, event.getName(), event.getUniqueId());
} catch (Exception ignored) {
}*/
}
@EventHandler

View file

@ -1,7 +1,8 @@
package pw.kaboom.extras.modules.player;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.block.Sign;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@ -48,11 +49,10 @@ public final class PlayerInteract implements Listener {
}
if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
final Block clickedBlock = event.getClickedBlock();
final BlockState clickedBlock = event.getClickedBlock().getState();
if (clickedBlock.getType() == Material.SIGN
|| clickedBlock.getType() == Material.WALL_SIGN) {
clickedBlock.getState().update();
if (clickedBlock instanceof Sign) {
clickedBlock.update();
}
}
}