diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..30cf57e --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,10 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Ignored default folder with query files +/queries/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..5486482 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..8a1bdc0 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,7 @@ + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..df950dc --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,40 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..72428fd --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,13 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..ae7aefd --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/CMI-API.iml b/CMI-API.iml new file mode 100644 index 0000000..3cf00db --- /dev/null +++ b/CMI-API.iml @@ -0,0 +1,13 @@ + + + + + + + PAPER + + 1 + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index 85ac35d..155af55 100644 --- a/pom.xml +++ b/pom.xml @@ -85,7 +85,6 @@ - maven-compiler-plugin 3.14.0 diff --git a/resources/plugin.yml b/resources/plugin.yml index 33a91f1..fd17b81 100644 --- a/resources/plugin.yml +++ b/resources/plugin.yml @@ -3,7 +3,7 @@ main: com.Zrips.CMI.CMI version: ${project.version} website: https://www.spigotmc.org/resources/content-management-interface.3742/ author: Zrips -description: Powerfull server management tool +description: Powerful server management tool softdepend: [Essentials, ProtocolLib, LWC, Vault, mcMMO, PlayerVaults, PermissionsEx, bPermissions, GroupManagerX, zPermissions, LuckPerms, PlaceholderAPI, Multiverse-Core] commands: cmi: diff --git a/src/com/Zrips/CMI/Containers/CMIUser.java b/src/com/Zrips/CMI/Containers/CMIUser.java index 9139864..53bf101 100644 --- a/src/com/Zrips/CMI/Containers/CMIUser.java +++ b/src/com/Zrips/CMI/Containers/CMIUser.java @@ -28,33 +28,6 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import com.Zrips.CMI.Modules.Afk.AfkInfo; -import com.Zrips.CMI.Modules.Chat.CMIPlayerMessageColor; -import com.Zrips.CMI.Modules.ChatFormat.CMIChatRoom; -import com.Zrips.CMI.Modules.CmdCooldown.CmdCooldown; -import com.Zrips.CMI.Modules.DeathMessages.damageInformation; -import com.Zrips.CMI.Modules.Economy.CMIEconomyAcount; -import com.Zrips.CMI.Modules.FlightCharge.FlightCharge; -import com.Zrips.CMI.Modules.Homes.CmiHome; -import com.Zrips.CMI.Modules.Jail.CMIJail; -import com.Zrips.CMI.Modules.Jail.CMIJailCell; -import com.Zrips.CMI.Modules.Kits.Kit; -import com.Zrips.CMI.Modules.Permissions.PermissionsManager.CMIPerm; -import com.Zrips.CMI.Modules.PlayTime.CMIPlayTime; -import com.Zrips.CMI.Modules.PlayTimeRewards.PTROneTime; -import com.Zrips.CMI.Modules.PlayerCombat.EntityKillCount; -import com.Zrips.CMI.Modules.PlayerCombat.PlayerKillCount; -import com.Zrips.CMI.Modules.PlayerMeta.PlayerMeta; -import com.Zrips.CMI.Modules.PlayerOptions.PlayerOption; -import com.Zrips.CMI.Modules.Ranks.CMIRank; -import com.Zrips.CMI.Modules.SavedInv.SavedInventories; -import com.Zrips.CMI.Modules.SpawnerCharge.PlayerCharge; -import com.Zrips.CMI.Modules.Statistics.StatsManager.CMIStatistic; -import com.Zrips.CMI.Modules.Teleportations.CMITeleportFeedback; -import com.Zrips.CMI.Modules.Teleportations.CMITeleportType; -import com.Zrips.CMI.Modules.Warnings.CMIPlayerWarning; -import com.Zrips.CMI.Modules.Warnings.CMIWarningCategory; -import com.Zrips.CMI.events.CMIAfkEnterEvent.AfkType; import net.Zrips.CMILib.BossBar.BossBarInfo; import net.Zrips.CMILib.Colors.CMIChatColor; diff --git a/src/com/Zrips/CMI/commands/list/elytrafly.java b/src/com/Zrips/CMI/commands/list/elytrafly.java new file mode 100644 index 0000000..6e58e47 --- /dev/null +++ b/src/com/Zrips/CMI/commands/list/elytrafly.java @@ -0,0 +1,104 @@ +package com.Zrips.CMI.commands.list; + +import com.Zrips.CMI.CMI; +import com.Zrips.CMI.Containers.CMIUser; +import com.Zrips.CMI.Containers.Snd; +import com.Zrips.CMI.Locale.CMILC; +import com.Zrips.CMI.Modules.Permissions.PermissionsManager.CMIPerm; +import com.Zrips.CMI.commands.CAnnotation; +import com.Zrips.CMI.commands.Cmd; +import net.Zrips.CMILib.FileHandler.ConfigReader; +import net.Zrips.CMILib.Items.CMIItemStack; +import net.Zrips.CMILib.Items.CMIMaterial; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +public class elytrafly implements Cmd { + + public elytrafly() { + } + + @Override + public void getExtra(ConfigReader reader) { + reader.get("ElytraRequired", "{gcw}&cYou must wear an elytra to use this command!"); + reader.get("feedback", "{gcp}You have set elytra fly to {gcs}[boolean]{gcp} for {gcs}[playerDisplayName]{gcp}."); + reader.get("targetFeedback", "{gcp}Your elytra fly mode set to {gcs}[boolean]{gcp} by {gcs}[senderDisplayName]{gcp}."); + } + + @Override + @CAnnotation( + info = "Toggle flight mode specifically for Elytra users", + args = "[playerName] (true/false) (-s)", + regVar = {0, 1, 2}, + others = true + ) + public Boolean perform(CMI plugin, CommandSender sender, String[] args) { + boolean silent = false; + String targetName = null; + Boolean state = null; + + for (String arg : args) { + if (arg.equalsIgnoreCase("-s")) { + if (CMIPerm.command_silent.hasPermission(sender)) { + silent = true; + } + continue; + } + if (arg.equalsIgnoreCase("true") || arg.equalsIgnoreCase("on") || arg.equalsIgnoreCase("t")) { + state = true; + continue; + } + if (arg.equalsIgnoreCase("false") || arg.equalsIgnoreCase("off") || arg.equalsIgnoreCase("f")) { + state = false; + continue; + } + targetName = arg; + } + + Player player = plugin.getTarget(sender, targetName, this); + if (player == null) { + return null; + } + + ItemStack chest = player.getInventory().getChestplate(); + CMIItemStack cmiChest = new CMIItemStack(chest); + if (chest == null || cmiChest.getCMIType() != CMIMaterial.ELYTRA) { + CMILC.info(this, sender, "ElytraRequired"); + return false; + } + + if (state == null) { + state = !player.getAllowFlight(); + } + + player.setFallDistance(0.0F); + player.setAllowFlight(state); + if (!state) { + player.setFlying(false); + } + + CMIUser user = plugin.getPlayerManager().getUser(player); + if (user != null) { + user.setTfly(0L); + if (!user.isOnline()) { + user.setHadAllowFlight(state); + user.setWasFlying(state); + user.setFlying(state); + } + } + + plugin.save(player); + + Snd snd = new Snd().setSender(sender).setTarget(player); + if (!silent) { + CMILC.info(this, sender, "feedback", snd, "[boolean]", state); + } + + if (!player.getName().equalsIgnoreCase(sender.getName()) && !silent) { + CMILC.info(this, player, "targetFeedback", "[boolean]", state, snd); + } + + return true; + } +}