Fixed Double Prefix call.
This commit is contained in:
commit
372de93043
4
.gitignore
vendored
Normal file
4
.gitignore
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
/run/
|
||||
/build/
|
||||
/.gradle/
|
||||
/.idea/
|
2
README.md
Normal file
2
README.md
Normal file
@ -0,0 +1,2 @@
|
||||
# UnEssentials
|
||||
It's basically **EssentialsX** but with only the essential features.
|
64
build.gradle
Normal file
64
build.gradle
Normal file
@ -0,0 +1,64 @@
|
||||
plugins {
|
||||
id 'java'
|
||||
id("com.github.johnrengelman.shadow") version "8.1.1"
|
||||
id("xyz.jpenilla.run-paper") version "2.1.0"
|
||||
}
|
||||
|
||||
group = 'com.the5gi'
|
||||
version = '1.0.0'
|
||||
|
||||
repositories {
|
||||
mavenCentral()
|
||||
maven {
|
||||
name = "spigotmc-repo"
|
||||
url = "https://hub.spigotmc.org/nexus/content/repositories/snapshots/"
|
||||
}
|
||||
maven {
|
||||
name = "sonatype"
|
||||
url = "https://oss.sonatype.org/content/groups/public/"
|
||||
}
|
||||
maven { url 'https://jitpack.io' }
|
||||
maven {
|
||||
url = 'https://repo.extendedclip.com/content/repositories/placeholderapi/'
|
||||
}
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly "org.spigotmc:spigot-api:1.20.6-R0.1-SNAPSHOT"
|
||||
implementation 'com.github.Carleslc.Simple-YAML:Simple-Yaml:1.8.4'
|
||||
compileOnly 'me.clip:placeholderapi:2.11.4'
|
||||
}
|
||||
|
||||
def targetJavaVersion = 17
|
||||
java {
|
||||
def javaVersion = JavaVersion.toVersion(targetJavaVersion)
|
||||
sourceCompatibility = javaVersion
|
||||
targetCompatibility = javaVersion
|
||||
if (JavaVersion.current() < javaVersion) {
|
||||
toolchain.languageVersion = JavaLanguageVersion.of(targetJavaVersion)
|
||||
}
|
||||
}
|
||||
|
||||
tasks.withType(JavaCompile).configureEach {
|
||||
if (targetJavaVersion >= 10 || JavaVersion.current().isJava10Compatible()) {
|
||||
options.release = targetJavaVersion
|
||||
}
|
||||
}
|
||||
|
||||
processResources {
|
||||
def props = [version: version]
|
||||
inputs.properties props
|
||||
filteringCharset 'UTF-8'
|
||||
filesMatching('plugin.yml') {
|
||||
expand props
|
||||
}
|
||||
}
|
||||
|
||||
tasks {
|
||||
runServer {
|
||||
// Configure the Minecraft version for our task.
|
||||
// This is the only required configuration besides applying the plugin.
|
||||
// Your plugin's jar (or shadowJar if present) will be used automatically.
|
||||
minecraftVersion("1.20.2")
|
||||
}
|
||||
}
|
0
gradle.properties
Normal file
0
gradle.properties
Normal file
1
gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
1
gradle/wrapper/gradle-wrapper.properties
vendored
Normal file
@ -0,0 +1 @@
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-bin.zip
|
1
settings.gradle
Normal file
1
settings.gradle
Normal file
@ -0,0 +1 @@
|
||||
rootProject.name = 'UnEssentials'
|
@ -0,0 +1,30 @@
|
||||
package com.the5gi.unessentials.Chat.Listeners;
|
||||
|
||||
import com.the5gi.unessentials.UnEssentials;
|
||||
import com.the5gi.unessentials.Util.Config;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
|
||||
public class ChatReformatting implements Listener {
|
||||
@EventHandler(priority = EventPriority.HIGHEST)
|
||||
public static void onMessage(AsyncPlayerChatEvent event) {
|
||||
if (Config.getFieldBool(Config.Chat.CHAT_FORMAT_ENABLED)) {
|
||||
event.setCancelled(true);
|
||||
String messagePre = UnEssentials.color(
|
||||
Config.getFieldString(Config.Chat.CHAT_FORMAT).replace(
|
||||
"%MESSAGE%", event.getMessage()).replace("%NAME%", event.getPlayer().getName()));
|
||||
if (UnEssentials.PAPI) {
|
||||
messagePre = UnEssentials.color(
|
||||
PlaceholderAPI.setPlaceholders(event
|
||||
.getPlayer(),
|
||||
Config.getFieldString(Config.Chat.CHAT_FORMAT).replace("%MESSAGE%", event.getMessage()).replace("%NAME%", event.getPlayer().getName())));
|
||||
|
||||
}
|
||||
|
||||
UnEssentials.plugin.getServer().broadcastMessage(messagePre);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,44 @@
|
||||
package com.the5gi.unessentials.Commands;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import com.the5gi.unessentials.UnEssentials;
|
||||
import com.the5gi.unessentials.Util.Config;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
|
||||
public class BaseCommands {
|
||||
public static final CommandExecutor unessentials;
|
||||
|
||||
public static final TabCompleter unessentialsTabCompleter;
|
||||
|
||||
static {
|
||||
unessentials = ((sender, command, label, args) -> {
|
||||
if (args.length == 0) {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cRunning &oUnEssentials &r&c&lv" + UnEssentials.plugin.getDescription().getVersion()));
|
||||
} else if (args.length == 1) {
|
||||
if (args[0].equalsIgnoreCase("reload") && sender.hasPermission("unessentials.reload")) {
|
||||
long before = System.currentTimeMillis();
|
||||
Config.reload();
|
||||
long after = System.currentTimeMillis();
|
||||
long time = after - before;
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cReloaded in " + time + "ms"));
|
||||
UnEssentials.plugin.getLogger().info("&cReloaded in " + time + "ms");
|
||||
} else {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cUnknown Argument"));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
unessentialsTabCompleter = ((sender, command, label, args) -> {
|
||||
List<String> l = new ArrayList<>();
|
||||
if (args.length == 1) {
|
||||
l.add("reload");
|
||||
} else if (args.length >= 2) {
|
||||
l.add("any_arguments_after_and_including_this_will_not_do_anything");
|
||||
}
|
||||
return l;
|
||||
});
|
||||
}
|
||||
}
|
261
src/main/java/com/the5gi/unessentials/Commands/CoolCommands.java
Normal file
261
src/main/java/com/the5gi/unessentials/Commands/CoolCommands.java
Normal file
@ -0,0 +1,261 @@
|
||||
package com.the5gi.unessentials.Commands;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import com.the5gi.unessentials.UnEssentials;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.EntityType;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
public class CoolCommands {
|
||||
public static HashMap<Player, Location> deathLocation = new HashMap<>();
|
||||
|
||||
public static final CommandExecutor top;
|
||||
|
||||
public static final CommandExecutor essenchant;
|
||||
|
||||
public static TabCompleter essenchantTabCompleter;
|
||||
|
||||
public static final CommandExecutor hat;
|
||||
|
||||
public static final CommandExecutor fly;
|
||||
|
||||
public static final CommandExecutor chicken;
|
||||
|
||||
public static final CommandExecutor butcher;
|
||||
|
||||
static {
|
||||
top = ((sender, command, label, args) -> {
|
||||
if (!sender.hasPermission("unessentials.top")) {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou do not have permission to execute this command!"));
|
||||
} else if (sender instanceof Player player) {
|
||||
World world = player.getWorld();
|
||||
Block block = world.getHighestBlockAt(player.getLocation());
|
||||
if (player.getLocation().getY() == block.getY() + 1) {
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou are already on the top!"));
|
||||
return false;
|
||||
} else {
|
||||
player.teleport(new Location(world, block.getX() + 0.5D, block.getY() + 1.5D, block.getZ() + 0.5D, player.getLocation().getYaw(), player.getLocation().getPitch()));
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&aTeleported you to the top!"));
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cConsole cannot execute this command."));
|
||||
}
|
||||
return false;
|
||||
});
|
||||
essenchant = ((sender, command, label, args) -> {
|
||||
if (!sender.hasPermission("unessentials.enchant")) {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou do not have permission to execute this command!"));
|
||||
return true;
|
||||
}
|
||||
List<Enchantment> enchantments = List.of(Enchantment.values());
|
||||
HashMap<String, Enchantment> enchantmentNames = new HashMap<>();
|
||||
for (Enchantment enchantment : enchantments)
|
||||
enchantmentNames.put(enchantment.getKey().getKey(), enchantment);
|
||||
if (sender instanceof Player player) {
|
||||
if (player.getInventory().getItemInMainHand() == null || player.getInventory().getItemInMainHand().getType().equals(Material.AIR)) {
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou are not holding an item."));
|
||||
return true;
|
||||
}
|
||||
if (args.length >= 2) {
|
||||
int enchantLevel;
|
||||
String enchantName = args[0];
|
||||
String enchantLevelS = args[1];
|
||||
if (!enchantmentNames.containsKey(enchantName)) {
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cThe enchantment \"" + UnEssentials.PREFIX + "\" does not exist."));
|
||||
return false;
|
||||
}
|
||||
Enchantment enchantment = enchantmentNames.get(enchantName);
|
||||
try {
|
||||
enchantLevel = Integer.parseInt(enchantLevelS);
|
||||
} catch (NumberFormatException ignore) {
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cPlease enter a real number."));
|
||||
return false;
|
||||
}
|
||||
ItemMeta meta = player.getInventory().getItemInMainHand().getItemMeta();
|
||||
assert meta != null;
|
||||
meta.addEnchant(enchantment, enchantLevel, true);
|
||||
player.getInventory().getItemInMainHand().setItemMeta(meta);
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&aEnchantment Applied!"));
|
||||
return false;
|
||||
}
|
||||
if (args.length == 1)
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cNot enough Arguments!. Expected 2"));
|
||||
} else {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cConsole cannot execute this command."));
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
essenchantTabCompleter = ((sender, command, label, args) -> {
|
||||
List<String> l = new ArrayList<>();
|
||||
if (args.length == 1) {
|
||||
List<Enchantment> enchantments = List.of(Enchantment.values());
|
||||
for (Enchantment enchantment : enchantments)
|
||||
l.add(enchantment.getKey().getKey());
|
||||
} else if (args.length >= 3) {
|
||||
l.add("any_arguments_after_and_including_this_will_not_do_anything");
|
||||
}
|
||||
return l;
|
||||
});
|
||||
hat = ((sender, command, label, args) -> {
|
||||
if (sender instanceof Player player) {
|
||||
if (player.hasPermission("unessentials.hat")) {
|
||||
if (!player.getInventory().getItemInMainHand().getType().equals(Material.AIR)) {
|
||||
ItemStack prevHat = player.getInventory().getHelmet();
|
||||
player.getInventory().setHelmet(player.getInventory().getItemInMainHand());
|
||||
player.getInventory().getItemInMainHand().setAmount(0);
|
||||
player.getInventory().setItemInMainHand(prevHat);
|
||||
player.playSound(player, Sound.ITEM_ARMOR_EQUIP_LEATHER, 1.0F, 1.0F);
|
||||
return false;
|
||||
}
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou have nothing in your hand!"));
|
||||
return true;
|
||||
}
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou do not have permission to execute this command!"));
|
||||
return true;
|
||||
}
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cConsole cannot execute this command."));
|
||||
return false;
|
||||
});
|
||||
fly = ((sender, command, label, args) -> {
|
||||
if (sender.hasPermission("unessentials.fly")) {
|
||||
if (sender instanceof Player player) {
|
||||
player.setAllowFlight(!player.getAllowFlight());
|
||||
if (player.getAllowFlight()) {
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou can now fly!"));
|
||||
} else {
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou can no longer fly."));
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cConsole cannot execute this command."));
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou do not have permission to execute this command!"));
|
||||
}
|
||||
return false;
|
||||
});
|
||||
chicken = ((sender, command, label, args) -> {
|
||||
if (sender instanceof Player player) {
|
||||
if (player.hasPermission("unessentials.chicken"))
|
||||
player.getWorld().spawnEntity(player.getLocation(), EntityType.CHICKEN, true);
|
||||
}
|
||||
return false;
|
||||
});
|
||||
butcher = ((sender, command, label, args) -> {
|
||||
if (sender.hasPermission("unessentials.butcher")) {
|
||||
if (sender instanceof Player player) {
|
||||
if (args.length == 1) {
|
||||
int radius;
|
||||
try {
|
||||
radius = Integer.parseInt(args[0]);
|
||||
} catch (NumberFormatException ignore) {
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&aPlease enter a valid number!"));
|
||||
return false;
|
||||
}
|
||||
List<Entity> nearbyEntities = player.getNearbyEntities(radius, radius, radius);
|
||||
int entityCount = 0;
|
||||
for (Entity entity : nearbyEntities) {
|
||||
if (entity instanceof LivingEntity livingEntity) {
|
||||
if (!(entity instanceof Player)) livingEntity.remove();
|
||||
entityCount++;
|
||||
}
|
||||
}
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&c&lKilled&r&c&o " + entityCount + "&r&c entities."));
|
||||
} else {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cNot enough Arguments!. Expected 1"));
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cConsole cannot execute this command."));
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou do not have permission to execute this command!"));
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
public static Listener deathListener = new Listener() {
|
||||
public int hashCode() {
|
||||
return super.hashCode();
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onDeath(PlayerDeathEvent event) {
|
||||
CoolCommands.deathLocation.put(event.getEntity(), event.getEntity().getLocation());
|
||||
}
|
||||
};
|
||||
|
||||
public static final CommandExecutor back;
|
||||
|
||||
public static final CommandExecutor name;
|
||||
|
||||
static {
|
||||
back = ((sender, command, label, args) -> {
|
||||
if (sender.hasPermission("unessentials.back")) {
|
||||
if (sender instanceof Player player) {
|
||||
if (deathLocation.containsKey(player)) {
|
||||
player.teleport(deathLocation.get(player));
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou have been teleported to your last death location."));
|
||||
deathLocation.remove(player);
|
||||
} else {
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou have not died yet."));
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou do not have permission to execute this command!"));
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou do not have permission to execute this command!"));
|
||||
}
|
||||
return false;
|
||||
});
|
||||
name = ((sender, command, label, args) -> {
|
||||
if (sender.hasPermission("unessentials.name")) {
|
||||
if (args.length < 1) {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cNot enough Arguments!. Expected at least 1"));
|
||||
return false;
|
||||
}
|
||||
if (sender instanceof Player player) {
|
||||
if (!player.getInventory().getItemInMainHand().getType().equals(Material.AIR)) {
|
||||
ItemStack itemStack = player.getInventory().getItemInMainHand();
|
||||
ItemMeta meta = itemStack.getItemMeta();
|
||||
StringBuilder builder = new StringBuilder();
|
||||
for (int i = 0; i < args.length; i++) {
|
||||
builder.append(args[i]);
|
||||
if (i != args.length - 1)
|
||||
builder.append(" ");
|
||||
}
|
||||
assert meta != null;
|
||||
meta.setDisplayName(UnEssentials.color(builder.toString()));
|
||||
itemStack.setItemMeta(meta);
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cSet."));
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou do not have permission to execute this command!"));
|
||||
}
|
||||
} else {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou do not have permission to execute this command!"));
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
}
|
@ -0,0 +1,153 @@
|
||||
package com.the5gi.unessentials.Commands;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
import com.the5gi.unessentials.UnEssentials;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.attribute.Attribute;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabCompleter;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class GameModesCommands implements TabCompleter {
|
||||
public static final CommandExecutor GMS;
|
||||
|
||||
public static final CommandExecutor GMC;
|
||||
|
||||
public static final CommandExecutor GMSP;
|
||||
|
||||
public static final CommandExecutor GMA;
|
||||
|
||||
static {
|
||||
GMS = ((sender, command, label, args) -> {
|
||||
if (!sender.hasPermission("unessentials.gms")) {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou do not have permission to execute this command!"));
|
||||
return true;
|
||||
}
|
||||
if (args.length == 0) {
|
||||
if (sender instanceof Player player) {
|
||||
player.setGameMode(GameMode.SURVIVAL);
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYour gamemode was updated to SURVIVAL."));
|
||||
return false;
|
||||
}
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cConsole Cannot execute this command!"));
|
||||
return false;
|
||||
}
|
||||
if (args.length >= 1 && isPlayerOnline(args[0])) {
|
||||
Player player = UnEssentials.plugin.getServer().getPlayer(args[0]);
|
||||
assert player != null;
|
||||
player.setGameMode(GameMode.SURVIVAL);
|
||||
String apostropheCheck = player.getName().endsWith("s") ? "'" : "'s";
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + player.getName() + apostropheCheck + " gamemode was set to SURVIVAL."));
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYour gamemode was updated to SURVIVAL."));
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
GMC = ((sender, command, label, args) -> {
|
||||
if (!sender.hasPermission("unessentials.gmc")) {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou do not have permission to execute this command!"));
|
||||
return true;
|
||||
}
|
||||
if (args.length == 0) {
|
||||
if (sender instanceof Player player) {
|
||||
player.setGameMode(GameMode.CREATIVE);
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYour gamemode was updated to CREATIVE."));
|
||||
return false;
|
||||
}
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cConsole Cannot execute this command!"));
|
||||
return false;
|
||||
}
|
||||
if (args.length >= 1 && isPlayerOnline(args[0])) {
|
||||
Player player = UnEssentials.plugin.getServer().getPlayer(args[0]);
|
||||
assert player != null;
|
||||
player.setGameMode(GameMode.CREATIVE);
|
||||
String apostropheCheck = player.getName().endsWith("s") ? "'" : "'s";
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + player.getName() + apostropheCheck + " gamemode was set to CREATIVE."));
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYour gamemode was updated to CREATIVE."));
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
GMSP = ((sender, command, label, args) -> {
|
||||
if (!sender.hasPermission("unessentials.gmsp")) {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou do not have permission to execute this command!"));
|
||||
return true;
|
||||
}
|
||||
if (args.length == 0) {
|
||||
if (sender instanceof Player player) {
|
||||
player.setGameMode(GameMode.SPECTATOR);
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYour gamemode was updated to SPECTATOR."));
|
||||
return false;
|
||||
}
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cConsole Cannot execute this command!"));
|
||||
return false;
|
||||
}
|
||||
if (args.length >= 1 && isPlayerOnline(args[0])) {
|
||||
Player player = UnEssentials.plugin.getServer().getPlayer(args[0]);
|
||||
assert player != null;
|
||||
player.setGameMode(GameMode.SPECTATOR);
|
||||
String apostropheCheck = player.getName().endsWith("s") ? "'" : "'s";
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + player.getName() + apostropheCheck + " gamemode was set to SPECTATOR."));
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYour gamemode was updated to SPECTATOR."));
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
GMA = ((sender, command, label, args) -> {
|
||||
if (!sender.hasPermission("unessentials.gms")) {
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYou do not have permission to execute this command!"));
|
||||
return true;
|
||||
}
|
||||
if (args.length == 0) {
|
||||
if (sender instanceof Player player) {
|
||||
player.setGameMode(GameMode.ADVENTURE);
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYour gamemode was updated to ADVENTURE."));
|
||||
return false;
|
||||
}
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cConsole Cannot execute this command!"));
|
||||
return false;
|
||||
}
|
||||
if (args.length >= 1 && isPlayerOnline(args[0])) {
|
||||
Player player = UnEssentials.plugin.getServer().getPlayer(args[0]);
|
||||
assert player != null;
|
||||
player.setGameMode(GameMode.ADVENTURE);
|
||||
String apostropheCheck = player.getName().endsWith("s") ? "'" : "'s";
|
||||
sender.sendMessage(UnEssentials.color(UnEssentials.PREFIX + player.getName() + apostropheCheck + " gamemode was set to ADVENTURE."));
|
||||
player.sendMessage(UnEssentials.color(UnEssentials.PREFIX + "&cYour gamemode was updated to ADVENTURE."));
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
private static boolean isPlayerOnline(String name) {
|
||||
for (Player player : UnEssentials.plugin.getServer().getOnlinePlayers()) {
|
||||
if (player.getName().equals(name))
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, String[] args) {
|
||||
List<String> l = new ArrayList<>();
|
||||
if (args.length == 2) {
|
||||
l.add("any_arguments_after_and_including_this_will_not_do_anything");
|
||||
} else if (args.length == 1) {
|
||||
l.addAll(getNames());
|
||||
}
|
||||
return l;
|
||||
}
|
||||
|
||||
private Collection<String> getNames() {
|
||||
Collection<String> s = new ArrayList<>();
|
||||
for (Player player : UnEssentials.plugin.getServer().getOnlinePlayers())
|
||||
s.add(player.getName());
|
||||
return s;
|
||||
}
|
||||
}
|
75
src/main/java/com/the5gi/unessentials/UnEssentials.java
Normal file
75
src/main/java/com/the5gi/unessentials/UnEssentials.java
Normal file
@ -0,0 +1,75 @@
|
||||
package com.the5gi.unessentials;
|
||||
|
||||
import com.the5gi.unessentials.Chat.Listeners.ChatReformatting;
|
||||
import com.the5gi.unessentials.Commands.BaseCommands;
|
||||
import com.the5gi.unessentials.Commands.CoolCommands;
|
||||
import com.the5gi.unessentials.Commands.GameModesCommands;
|
||||
import com.the5gi.unessentials.Util.Config;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
public class UnEssentials extends JavaPlugin {
|
||||
public static boolean PAPI = false;
|
||||
|
||||
public static boolean LUCKPERMS = false;
|
||||
|
||||
public static String PREFIX = ChatColor.translateAlternateColorCodes('&', "&c&l[UnEssentials]&r ");
|
||||
|
||||
public static Plugin plugin;
|
||||
|
||||
public void onEnable() {
|
||||
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null)
|
||||
PAPI = true;
|
||||
if (Bukkit.getPluginManager().getPlugin("LuckPerms") != null)
|
||||
LUCKPERMS = true;
|
||||
plugin = this;
|
||||
Config.onStart();
|
||||
PREFIX = color(Config.getFieldString(Config.BaseLevel.PLUGIN_PREFIX));
|
||||
getServer().getScheduler().scheduleSyncRepeatingTask(this, UnEssentials::tickCycle, 20L, 0L);
|
||||
getServer().getPluginManager().registerEvents(new ChatReformatting(), this);
|
||||
getServer().getPluginManager().registerEvents(CoolCommands.deathListener, this);
|
||||
Objects.requireNonNull(getCommand("gms")).setExecutor(GameModesCommands.GMS);
|
||||
Objects.requireNonNull(getCommand("gmc")).setExecutor(GameModesCommands.GMC);
|
||||
Objects.requireNonNull(getCommand("gma")).setExecutor(GameModesCommands.GMA);
|
||||
Objects.requireNonNull(getCommand("gmsp")).setExecutor(GameModesCommands.GMSP);
|
||||
Objects.requireNonNull(getCommand("gms")).setTabCompleter(new GameModesCommands());
|
||||
Objects.requireNonNull(getCommand("gmc")).setTabCompleter(new GameModesCommands());
|
||||
Objects.requireNonNull(getCommand("gma")).setTabCompleter(new GameModesCommands());
|
||||
Objects.requireNonNull(getCommand("gmsp")).setTabCompleter(new GameModesCommands());
|
||||
Objects.requireNonNull(getCommand("essenchant")).setExecutor(CoolCommands.essenchant);
|
||||
Objects.requireNonNull(getCommand("essenchant")).setTabCompleter(CoolCommands.essenchantTabCompleter);
|
||||
Objects.requireNonNull(getCommand("chicken")).setExecutor(CoolCommands.chicken);
|
||||
Objects.requireNonNull(getCommand("hat")).setExecutor(CoolCommands.hat);
|
||||
Objects.requireNonNull(getCommand("fly")).setExecutor(CoolCommands.fly);
|
||||
Objects.requireNonNull(getCommand("unessentials")).setExecutor(BaseCommands.unessentials);
|
||||
Objects.requireNonNull(getCommand("unessentials")).setTabCompleter(BaseCommands.unessentialsTabCompleter);
|
||||
Objects.requireNonNull(getCommand("unessentials")).setAliases(List.of("uness"));
|
||||
Objects.requireNonNull(getCommand("top")).setExecutor(CoolCommands.top);
|
||||
Objects.requireNonNull(getCommand("butcher")).setExecutor(CoolCommands.butcher);
|
||||
Objects.requireNonNull(getCommand("back")).setExecutor(CoolCommands.back);
|
||||
Objects.requireNonNull(getCommand("name")).setExecutor(CoolCommands.name);
|
||||
}
|
||||
|
||||
public static String color(String s) {
|
||||
return ChatColor.translateAlternateColorCodes('&', s);
|
||||
}
|
||||
|
||||
public static void tickCycle() {
|
||||
for (Player player : plugin.getServer().getOnlinePlayers()) {
|
||||
String preName = player.getName();;
|
||||
if (Config.getFieldBool(Config.Tab.TAB_FORMAT_ENABLED)) {
|
||||
preName = color(Config.getFieldString(Config.Tab.TAB_FORMAT).replace("%NAME%", player.getName()));
|
||||
if (UnEssentials.PAPI) preName = color(PlaceholderAPI.setPlaceholders(player, Config.getFieldString(Config.Tab.TAB_FORMAT).replace("%NAME%", player.getName())));
|
||||
}
|
||||
//old system: ignored if PAPI wasn't installed : if (UnEssentials.PAPI && Config.getFieldBool(Config.Tab.TAB_FORMAT_ENABLED)) preName = color(PlaceholderAPI.setPlaceholders(player, Config.getFieldString(Config.Tab.TAB_FORMAT).replace("%NAME%", player.getName())));
|
||||
player.setPlayerListName(preName);
|
||||
}
|
||||
}
|
||||
}
|
155
src/main/java/com/the5gi/unessentials/Util/Config.java
Normal file
155
src/main/java/com/the5gi/unessentials/Util/Config.java
Normal file
@ -0,0 +1,155 @@
|
||||
package com.the5gi.unessentials.Util;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
import com.the5gi.unessentials.UnEssentials;
|
||||
import org.simpleyaml.configuration.file.YamlFile;
|
||||
|
||||
public class Config {
|
||||
private static final YamlFile config = new YamlFile(UnEssentials.plugin.getDataFolder().getPath() + "/config.yml");
|
||||
|
||||
public static void onStart() {
|
||||
try {
|
||||
if (!config.exists()) {
|
||||
UnEssentials.plugin.getLogger().info("Creating Config...");
|
||||
UnEssentials.plugin.getDataFolder().mkdir();
|
||||
config.createNewFile();
|
||||
UnEssentials.plugin.getLogger().info("Config Created!");
|
||||
}
|
||||
load();
|
||||
UnEssentials.plugin.getLogger().info("Loaded Config");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
config.setComment(BaseLevel.PLUGIN_PREFIX.getField(), """
|
||||
Prefix of Plugin Commands ex: "[UnEssentials] Your gamemode has been changed!"
|
||||
You can use the & sign to use colors. https://htmlcolorcodes.com/minecraft-color-codes/""");
|
||||
config.addDefault(BaseLevel.PLUGIN_PREFIX.getField(), "&c&l[UnEssentials]&r ");
|
||||
|
||||
config.setBlankLine("chat");
|
||||
config.setComment(Chat.CHAT_FORMAT_ENABLED.getField(), "If enabled, Reformats chat messages using the format field below.");
|
||||
config.addDefault(Chat.CHAT_FORMAT_ENABLED.getField(), Boolean.TRUE);
|
||||
|
||||
config.setComment(Chat.CHAT_FORMAT.getField(), """
|
||||
The format of chat messages.
|
||||
There are built in placeholders, but otherwise external placeholders require PlaceHolderAPI.
|
||||
%NAME% gives the player's username. %MESSAGE% gives the player's message.
|
||||
You can use colors with the & sign. https://htmlcolorcodes.com/minecraft-color-codes/""");
|
||||
if (UnEssentials.PAPI && UnEssentials.LUCKPERMS) {
|
||||
config.addDefault(Chat.CHAT_FORMAT.getField(), "%luckperms_prefix% %NAME% %luckperms_suffix%:&r %MESSAGE%");
|
||||
} else {
|
||||
config.addDefault(Chat.CHAT_FORMAT.getField(), "<%NAME%> %MESSAGE%");
|
||||
}
|
||||
config.setBlankLine(Chat.CHAT_FORMAT.getField());
|
||||
|
||||
config.setComment(Tab.TAB_FORMAT_ENABLED.getField(), "If enabled, Reformats tab usernames using the format field below.");
|
||||
config.addDefault(Tab.TAB_FORMAT_ENABLED.getField(), Boolean.TRUE);
|
||||
|
||||
config.setComment(Tab.TAB_FORMAT.getField(), """
|
||||
The format of usernames in tab.
|
||||
There are built in placeholders, but otherwise external placeholders require PlaceHolderAPI.
|
||||
%NAME% gives the player's username.
|
||||
You can use colors with the & sign. https://htmlcolorcodes.com/minecraft-color-codes/""");
|
||||
if (UnEssentials.PAPI && UnEssentials.LUCKPERMS) {
|
||||
config.addDefault(Tab.TAB_FORMAT.getField(), "%luckperms_prefix% %NAME% %luckperms_suffix%");
|
||||
} else {
|
||||
config.addDefault(Tab.TAB_FORMAT.getField(), "%NAME%");
|
||||
}
|
||||
config.setBlankLine(Tab.TAB_FORMAT.getField());
|
||||
save();
|
||||
reload();
|
||||
}
|
||||
|
||||
public static void load() {
|
||||
try {
|
||||
config.load();
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void reload() {
|
||||
try {
|
||||
config.load();
|
||||
UnEssentials.PREFIX = UnEssentials.color(getFieldString(BaseLevel.PLUGIN_PREFIX));
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public static void save() {
|
||||
try {
|
||||
config.save();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
public static String getFieldString(Chat chat) {
|
||||
return config.getString(chat.getField());
|
||||
}
|
||||
|
||||
public static String getFieldString(Tab tab) {
|
||||
return config.getString(tab.getField());
|
||||
}
|
||||
|
||||
public static boolean getFieldBool(Chat chat) {
|
||||
return config.getBoolean(chat.getField());
|
||||
}
|
||||
|
||||
public static boolean getFieldBool(Tab tab) {
|
||||
return config.getBoolean(tab.getField());
|
||||
}
|
||||
|
||||
public static String getFieldString(BaseLevel bl) {
|
||||
return config.getString(bl.getField());
|
||||
}
|
||||
|
||||
public static boolean getFieldBool(BaseLevel bl) {
|
||||
return config.getBoolean(bl.getField());
|
||||
}
|
||||
|
||||
public enum Chat {
|
||||
CHAT_FORMAT_ENABLED("chat.formatting_enabled"),
|
||||
CHAT_FORMAT("chat.format");
|
||||
|
||||
private final String field;
|
||||
|
||||
Chat(String field) {
|
||||
this.field = field;
|
||||
}
|
||||
|
||||
public String getField() {
|
||||
return this.field;
|
||||
}
|
||||
}
|
||||
|
||||
public enum Tab {
|
||||
TAB_FORMAT_ENABLED("tab.formatting_enabled"),
|
||||
TAB_FORMAT("tab.format");
|
||||
|
||||
private final String field;
|
||||
|
||||
Tab(String field) {
|
||||
this.field = field;
|
||||
}
|
||||
|
||||
public String getField() {
|
||||
return this.field;
|
||||
}
|
||||
}
|
||||
|
||||
public enum BaseLevel {
|
||||
PLUGIN_PREFIX("prefix");
|
||||
|
||||
private final String field;
|
||||
|
||||
BaseLevel(String field) {
|
||||
this.field = field;
|
||||
}
|
||||
|
||||
public String getField() {
|
||||
return this.field;
|
||||
}
|
||||
}
|
||||
}
|
50
src/main/resources/plugin.yml
Normal file
50
src/main/resources/plugin.yml
Normal file
@ -0,0 +1,50 @@
|
||||
name: UnEssentials
|
||||
version: '1.0.0'
|
||||
main: com.the5gi.unessentials.UnEssentials
|
||||
api-version: 1.20
|
||||
authors: [s5gi]
|
||||
description: essentials but not gay asf
|
||||
website: 5gi.dev
|
||||
commands:
|
||||
unessentials:
|
||||
aliases:
|
||||
- "uness"
|
||||
permission: "unessentials.unessentials"
|
||||
permission-message: "&cYou do not have permission to execute this command!"
|
||||
gms:
|
||||
permission: "unessentials.gms"
|
||||
permission-message: "&cYou do not have permission to execute this command!"
|
||||
gmc:
|
||||
permission: "unessentials.gmc"
|
||||
permission-message: "&cYou do not have permission to execute this command!"
|
||||
gmsp:
|
||||
permission: "unessentials.gmsp"
|
||||
permission-message: "&cYou do not have permission to execute this command!"
|
||||
gma:
|
||||
permission: "unessentials.gma"
|
||||
permission-message: "&cYou do not have permission to execute this command!"
|
||||
essenchant:
|
||||
permission: "unessentials.essenchant"
|
||||
permission-message: "&cYou do not have permission to execute this command!"
|
||||
chicken:
|
||||
permission: "unessentials.chicken"
|
||||
permission-message: "&cYou do not have permission to execute this command!"
|
||||
description: "ignore me i just spawn a chicken because buh-cock"
|
||||
hat:
|
||||
permission: "unessentials.hat"
|
||||
permission-message: "&cYou do not have permission to execute this command!"
|
||||
fly:
|
||||
permission: "unessentials.fly"
|
||||
permission-message: "&cYou do not have permission to execute this command!"
|
||||
top:
|
||||
permission: "unessentials.top"
|
||||
permission-message: "&cYou do not have permission to execute this command!"
|
||||
butcher:
|
||||
permission: "unessentials.butcher"
|
||||
permission-message: "&cYou do not have permission to execute this command!"
|
||||
back:
|
||||
permission: "unessentials.back"
|
||||
permission-message: "&cYou do not have permission to execute this command!"
|
||||
name:
|
||||
permission: "unessentials.name"
|
||||
permission-message: "&cYou do not have permission to execute this command!"
|
Loading…
x
Reference in New Issue
Block a user