diff --git a/server/src/main/java/dev/plex/Sunburst.java b/server/src/main/java/dev/plex/Sunburst.java index 7bb36e9..cdcdeda 100644 --- a/server/src/main/java/dev/plex/Sunburst.java +++ b/server/src/main/java/dev/plex/Sunburst.java @@ -1,10 +1,8 @@ package dev.plex; -import dev.plex.command.impl.MessageCMD; -import dev.plex.command.impl.NicknameCMD; -import dev.plex.command.impl.ReplyCMD; -import dev.plex.command.impl.SunburstCMD; +import dev.plex.command.impl.*; import dev.plex.listener.impl.player.ChatListener; +import dev.plex.listener.impl.player.GodListener; import dev.plex.listener.impl.player.JoinListener; import dev.plex.permission.PermissionHandlerImpl; import dev.plex.player.ISunburstPlayer; @@ -53,10 +51,13 @@ public final class Sunburst extends SunburstPlugin new JoinListener(); new ChatListener(); + new GodListener(); + new NicknameCMD(); new SunburstCMD(); new MessageCMD(); new ReplyCMD(); + new GodCMD(); Bukkit.getOnlinePlayers().forEach(player -> { diff --git a/server/src/main/java/dev/plex/command/impl/GodCMD.java b/server/src/main/java/dev/plex/command/impl/GodCMD.java new file mode 100644 index 0000000..118dfd8 --- /dev/null +++ b/server/src/main/java/dev/plex/command/impl/GodCMD.java @@ -0,0 +1,40 @@ +package dev.plex.command.impl; + +import dev.plex.command.SunburstCommand; +import dev.plex.command.util.CommandInfo; +import dev.plex.command.util.CommandPerms; +import dev.plex.command.util.RequiredSource; +import dev.plex.messaging.MessageData; +import dev.plex.player.ISunburstPlayer; +import net.kyori.adventure.text.Component; +import org.apache.commons.lang.BooleanUtils; +import org.apache.commons.lang.StringUtils; +import org.bukkit.Bukkit; +import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +import java.util.UUID; + +@CommandInfo(name = "god", description = "Toggles god mode", usage = "/ [player]", aliases = {"godmode"}) +@CommandPerms(permission = "sunburst.command.god") +public class GodCMD extends SunburstCommand +{ + @Override + public Component execute(@NotNull CommandSender sender, @Nullable Player player, String[] args) + { + if (args.length == 0) + { + if (sender instanceof ConsoleCommandSender) + { + return usage(); + } + ISunburstPlayer sunburstPlayer = plugin.getObjectHolder().getStorageSystem().getPlayer(player.getUniqueId()); + sunburstPlayer.godMode(!sunburstPlayer.godMode()); + return confMsg("godModeToggle", BooleanUtils.toStringOnOff(sunburstPlayer.godMode())); + } + return null; + } +} diff --git a/server/src/main/java/dev/plex/listener/impl/player/GodListener.java b/server/src/main/java/dev/plex/listener/impl/player/GodListener.java new file mode 100644 index 0000000..bd7cd10 --- /dev/null +++ b/server/src/main/java/dev/plex/listener/impl/player/GodListener.java @@ -0,0 +1,25 @@ +package dev.plex.listener.impl.player; + +import dev.plex.listener.SunburstListener; +import dev.plex.player.ISunburstPlayer; +import org.bukkit.entity.EntityType; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityDamageEvent; + +public class GodListener extends SunburstListener +{ + @EventHandler + public void onDamage(EntityDamageEvent event) + { + if (event.getEntityType() != EntityType.PLAYER) + { + return; + } + ISunburstPlayer player = plugin.getObjectHolder().getStorageSystem().getPlayer(event.getEntity().getUniqueId()); + if (player.godMode()) + { + event.setDamage(0); + event.setCancelled(true); + } + } +} diff --git a/server/src/main/resources/messages.yml b/server/src/main/resources/messages.yml index eec0292..cae693f 100644 --- a/server/src/main/resources/messages.yml +++ b/server/src/main/resources/messages.yml @@ -42,4 +42,7 @@ messageReceived: "{0} ---> ME: # 1 - The player who received # 2 - The message messageSent: "ME ---> {1}: {2}" -messengerNotFound: "You have not messaged anyone!" \ No newline at end of file +messengerNotFound: "You have not messaged anyone!" + +# 0 - Toggled on/off +godModeToggle: "God mode has been turned {0}" \ No newline at end of file