diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionEntityAttack.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionEntityAttack.java new file mode 100644 index 000000000..ec8123da2 --- /dev/null +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/events/ActionEntityAttack.java @@ -0,0 +1,38 @@ +package net.swofty.type.bedwarsgame.events; + +import net.minestom.server.entity.Entity; +import net.swofty.pvp.events.PrepareAttackEvent; +import net.swofty.type.bedwarsgame.game.Game; +import net.swofty.type.bedwarsgame.game.GameStatus; +import net.swofty.type.bedwarsgame.user.BedWarsPlayer; +import net.swofty.type.generic.entity.npc.HypixelNPC; +import net.swofty.type.generic.event.EventNodes; +import net.swofty.type.generic.event.HypixelEvent; +import net.swofty.type.generic.event.HypixelEventClass; + +public class ActionEntityAttack implements HypixelEventClass { + + @HypixelEvent(node = EventNodes.ALL, requireDataLoaded = false) + public void run(PrepareAttackEvent event) { + if (event.getEntity() instanceof BedWarsPlayer player) { + Game game = player.getGame(); + if (game == null) { + event.setCancelled(true); + return; + } + + if (game.getGameStatus() != GameStatus.IN_PROGRESS) { + event.setCancelled(true); + return; + } + + for (Entity entity : HypixelNPC.getPerPlayerNPCs().get(player.getUuid()).getEntityImpls().values()) { + if (event.getTarget() == entity) { + event.setCancelled(true); + return; + } + } + } + } + +} diff --git a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/game/Game.java b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/game/Game.java index 078d9f169..5fb68bff2 100644 --- a/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/game/Game.java +++ b/type.bedwarsgame/src/main/java/net/swofty/type/bedwarsgame/game/Game.java @@ -108,10 +108,10 @@ public void join(BedWarsPlayer player) { String randomLetters = UUID.randomUUID().toString().replaceAll("-", "") .substring(0, new Random().nextInt(10) + 4); for (BedWarsPlayer p : players) { - String name = p == player ? player.getUsername() : randomLetters; - p.sendMessage("§k" + name + " §ehas joined (§b" + players.size() + "§e/§b" + maxPlayers + "§e)"); + String name = p.getUuid().compareTo(player.getUuid()) == 0 ? player.getUsername() : "§k" + randomLetters; + p.sendMessage(name + " §ehas joined (§b" + players.size() + "§e/§b" + maxPlayers + "§e)"); } - player.setDisplayName(Component.text(randomLetters)); + player.setDisplayName(Component.text(randomLetters, NamedTextColor.WHITE, TextDecoration.OBFUSCATED)); if (hasMinimumPlayersForStart() && !countdown.isActive()) { countdown.startCountdown(); diff --git a/type.generic/src/main/java/net/swofty/type/generic/entity/npc/HypixelNPC.java b/type.generic/src/main/java/net/swofty/type/generic/entity/npc/HypixelNPC.java index 39616180a..5f3cf5ee9 100644 --- a/type.generic/src/main/java/net/swofty/type/generic/entity/npc/HypixelNPC.java +++ b/type.generic/src/main/java/net/swofty/type/generic/entity/npc/HypixelNPC.java @@ -153,6 +153,7 @@ public static void updateForPlayer(HypixelPlayer player) { if (needsUpdate && !needsFullUpdate) { entity.setView(npcPosition.yaw(), npcPosition.pitch()); entity.setInstance(config.instance(), npcPosition); + return; } if (needsFullUpdate) { entity.remove(); diff --git a/type.lobby/src/main/java/net/swofty/type/lobby/events/LobbyPlayerMove.java b/type.lobby/src/main/java/net/swofty/type/lobby/events/LobbyPlayerMove.java new file mode 100644 index 000000000..495f1f5bd --- /dev/null +++ b/type.lobby/src/main/java/net/swofty/type/lobby/events/LobbyPlayerMove.java @@ -0,0 +1,24 @@ +package net.swofty.type.lobby.events; + +import net.minestom.server.entity.Player; +import net.minestom.server.event.player.PlayerMoveEvent; +import net.swofty.type.generic.event.EventNodes; +import net.swofty.type.generic.event.HypixelEvent; +import net.swofty.type.generic.event.HypixelEventClass; + +public class LobbyPlayerMove implements HypixelEventClass { + + @HypixelEvent(node = EventNodes.PLAYER, requireDataLoaded = false) + public void onPlayerMove(PlayerMoveEvent event) { + Player player = event.getPlayer(); + if (player.getPosition().y() < -60) { + teleportToSpawn(player); + } + } + + private void teleportToSpawn(Player player) { + player.respawn(); + player.sendMessage("§cYou are not allowed to leave this area!"); + } + +} diff --git a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/user/statistics/PlayerStatistics.java b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/user/statistics/PlayerStatistics.java index f44f02628..e14def812 100644 --- a/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/user/statistics/PlayerStatistics.java +++ b/type.skyblockgeneric/src/main/java/net/swofty/type/skyblockgeneric/user/statistics/PlayerStatistics.java @@ -476,7 +476,7 @@ public static void experiencedStatisticsLoop() { player.sendMessage(" "); player.sendMessage(Component.text("§e§lCLICK HERE §r§eto learn more on the Official SkyBlock Wiki!") .hoverEvent(Component.text("§eClick to view the " + statistic.getDisplayName() + " §eWiki page!")) - .clickEvent(ClickEvent.clickEvent(ClickEvent.Action.OPEN_URL, "https://wiki.hypixel.net/" + description.getWikiName())) + .clickEvent(ClickEvent.openUrl("https://wiki.hypixel.net/" + description.getWikiName())) ); player.sendMessage("§a§l▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬"); }