Skip to content

Commit

Permalink
Auto add default commands and improve all systems
Browse files Browse the repository at this point in the history
  • Loading branch information
TonimatasDEV committed Jun 15, 2024
1 parent a45e547 commit 9870c76
Show file tree
Hide file tree
Showing 15 changed files with 115 additions and 199 deletions.
4 changes: 3 additions & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
@file:Suppress("VulnerableLibrariesLocal")

plugins {
id("java")
}

val pluginVersion: String by extra
val minecraftVersion: String by extra

group = "net.tonimatasdev"
group = "dev.tonimatas"
version = pluginVersion

base {
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
pluginVersion=1.5.3
pluginVersion=1.5.4

minecraftVersion=1.20.1
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
package net.tonimatasdev.perworldplugins;

import net.tonimatasdev.perworldplugins.command.PrimaryCommand;
import net.tonimatasdev.perworldplugins.config.GroupsYML;
import net.tonimatasdev.perworldplugins.listener.Listeners;
import net.tonimatasdev.perworldplugins.manager.CommandManager;
import net.tonimatasdev.perworldplugins.manager.ListenerManager;
import net.tonimatasdev.perworldplugins.metrics.Metrics;
import net.tonimatasdev.perworldplugins.util.UpdateChecker;
package dev.tonimatas.perworldplugins;

import dev.tonimatas.perworldplugins.command.PrimaryCommand;
import dev.tonimatas.perworldplugins.config.GroupsYML;
import dev.tonimatas.perworldplugins.listener.Listeners;
import dev.tonimatas.perworldplugins.manager.CommandManager;
import dev.tonimatas.perworldplugins.manager.ListenerManager;
import dev.tonimatas.perworldplugins.metrics.Metrics;
import dev.tonimatas.perworldplugins.util.UpdateChecker;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.plugin.java.JavaPlugin;
Expand All @@ -20,51 +20,40 @@ public static PerWorldPlugins getInstance() {

@Override
public void onLoad() {
// Enable PerWorldPlugins.
this.getPluginLoader().enablePlugin(this);
}

@Override
public void onEnable() {
instance = this;

// Register config files.
saveDefaultConfig();
GroupsYML.register();

// Register events.
getServer().getPluginManager().registerEvents(new Listeners(), this);

// Register command and tab completer.
CommandManager.getCommandMap().register("perworldplugins", new PrimaryCommand());

CommandManager.addDefaultCommands();

// Register metrics.
if (getConfig().getBoolean("metrics")) new Metrics(this, 15794);

// Check updates.
if (getConfig().getBoolean("updateChecker")) UpdateChecker.check();


// Send enabled messages.
Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_GREEN + "<---------------------------------------->");
Bukkit.getConsoleSender().sendMessage(getDescription().getName() + " " + getDescription().getVersion() + " has been enabled.");
Bukkit.getConsoleSender().sendMessage(ChatColor.DARK_GREEN + "<---------------------------------------->");

// Create task for convert RegisteredListeners to PerWorldRegisteredListeners.
getServer().getScheduler().scheduleSyncDelayedTask(this, () -> {
// Convert listeners and set worlds to commands.
ListenerManager.convert();

// Send a message on finish all Events/Commands.
Bukkit.getConsoleSender().sendMessage("[PerWorldPlugins] " + ChatColor.GREEN + "Converted all Listeners correctly.");
});
}

@Override
public void onDisable() {
// Reload the config.
this.reloadConfig();
// Save the config.
this.saveConfig();
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package net.tonimatasdev.perworldplugins.api;
package dev.tonimatas.perworldplugins.api;

import net.tonimatasdev.perworldplugins.util.PerWorldUtils;
import dev.tonimatas.perworldplugins.util.PerWorldUtils;
import org.bukkit.Bukkit;
import org.bukkit.event.Event;
import org.bukkit.event.EventPriority;
Expand All @@ -18,24 +18,20 @@ public class PerWorldRegisteredListener extends RegisteredListener {

public PerWorldRegisteredListener(Listener listener, EventExecutor executor, EventPriority priority, Plugin plugin, boolean ignoreCancelled) {
super(listener, executor, priority, plugin, ignoreCancelled);
this.disabledWorlds = new ArrayList<>(); // Set empty list.
this.disabledWorlds = new ArrayList<>();
}

@SuppressWarnings("NullableProblems")
public void callEvent(Event event) {
// If X-Events get player and detect if blocked so that it is not run.
if (PerWorldUtils.checkEvent(event, this.disabledWorlds)) return;

try {
// Execute the event if it is not blocked.
super.callEvent(event);
} catch (Throwable ex) {
// Send error message.
Bukkit.getServer().getLogger().log(Level.SEVERE, "Could not pass event " + event.getEventName() + " to " + getPlugin().getName() + " v" + getPlugin().getDescription().getVersion(), ex);
}
}

// Method to set all disabled worlds.
public void setDisabledWorlds() {
this.disabledWorlds = PerWorldUtils.getDisabledWorlds(getPlugin());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package net.tonimatasdev.perworldplugins.api;
package dev.tonimatas.perworldplugins.api;

import net.tonimatasdev.perworldplugins.util.PerWorldUtils;
import dev.tonimatas.perworldplugins.util.PerWorldUtils;
import org.bukkit.Bukkit;
import org.bukkit.event.Event;
import org.bukkit.event.EventPriority;
Expand All @@ -18,24 +18,20 @@ public class PerWorldTimedRegisteredListener extends TimedRegisteredListener {

public PerWorldTimedRegisteredListener(Listener listener, EventExecutor executor, EventPriority priority, Plugin plugin, boolean ignoreCancelled) {
super(listener, executor, priority, plugin, ignoreCancelled);
this.disabledWorlds = new ArrayList<>(); // Set empty list.
this.disabledWorlds = new ArrayList<>();
}

@SuppressWarnings("NullableProblems")
public void callEvent(Event event) {
// If X-Events get player and detect if blocked so that it is not run.
if (PerWorldUtils.checkEvent(event, this.disabledWorlds)) return;

try {
// Execute the event if it is not blocked.
super.callEvent(event);
} catch (Throwable ex) {
// Send error message.
Bukkit.getServer().getLogger().log(Level.SEVERE, "Could not pass event " + event.getEventName() + " to " + getPlugin().getName() + " v" + getPlugin().getDescription().getVersion(), ex);
}
}

// Method to set all disabled worlds.
public void setDisabledWorlds() {
this.disabledWorlds = PerWorldUtils.getDisabledWorlds(getPlugin());
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package net.tonimatasdev.perworldplugins.command;
package dev.tonimatas.perworldplugins.command;

import net.tonimatasdev.perworldplugins.PerWorldPlugins;
import net.tonimatasdev.perworldplugins.config.GroupsYML;
import net.tonimatasdev.perworldplugins.manager.ListenerManager;
import dev.tonimatas.perworldplugins.PerWorldPlugins;
import dev.tonimatas.perworldplugins.config.GroupsYML;
import dev.tonimatas.perworldplugins.manager.ListenerManager;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
Expand All @@ -20,22 +20,17 @@ public PrimaryCommand() {

@Override
public boolean execute(CommandSender sender, String commandLabel, String[] args) {
// If the command has 1 argument, it executes.
if (args.length == 1) {
if (args[0].equalsIgnoreCase("version")) { // Detects if the argument is equal to "version".
if (args[0].equalsIgnoreCase("version")) {

// Detects if the sender has the permission "perworldplugins.version".
if (hasPermission(sender, "perworldplugins.version")) {
sender.sendMessage(getPrefix(ChatColor.DARK_GREEN) + "The plugin version is: " + PerWorldPlugins.getInstance().getDescription().getVersion());
}
}

// Detects if the argument is equal to "reload".
if (args[0].equalsIgnoreCase("reload")) {

// Detects if the sender has the permission "perworldplugins.reload".
if (hasPermission(sender, "perworldplugins.reload")) {
// Reload all config files.
PerWorldPlugins.getInstance().reloadConfig();
GroupsYML.reload();
ListenerManager.setWorldsToEvents();
Expand All @@ -49,41 +44,31 @@ public boolean execute(CommandSender sender, String commandLabel, String[] args)
return true;
}

// Method to detect if the player has permissions or not with a message in false case.
private boolean hasPermission(CommandSender sender, String permission) {
// Check if the sender has permissions.
if (sender.hasPermission(permission)) {
return true;
} else {
// Send a message if sender not has permissions.
sender.sendMessage(getPrefix(ChatColor.DARK_RED) + "You don't have permissions for execute this command");
return false;
}
}

// Method to get the prefix with the colors.
private String getPrefix(ChatColor chatColor) {
return ChatColor.WHITE + "[" + chatColor + "+" + ChatColor.WHITE + "] PerWorldPlugins: " + ChatColor.WHITE;
}

// Command tab completer.
@Override
public List<String> tabComplete(CommandSender sender, String alias, String[] args) throws IllegalArgumentException {
// If the command name is "perworldplugins".
if (alias.equalsIgnoreCase("perworldplugins")) {
// Create a list for arguments.
List<String> argList = new ArrayList<>();

// If argument is 1.
if (Objects.requireNonNull(args).length == 1) {
// Add the possible arguments.
argList.add("version");
argList.add("reload");
return argList;
}
}

// Return an empty list if nothing works.
return Collections.emptyList();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package net.tonimatasdev.perworldplugins.config;
package dev.tonimatas.perworldplugins.config;

import net.tonimatasdev.perworldplugins.PerWorldPlugins;
import dev.tonimatas.perworldplugins.PerWorldPlugins;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;

Expand All @@ -11,8 +11,6 @@
import java.nio.charset.StandardCharsets;
import java.util.Objects;

// groups.yml config file.

public class GroupsYML {
private static FileConfiguration list = null;
private static File listFile = null;
Expand All @@ -33,10 +31,8 @@ public static void reload() {
public static void save() {
try {
list.save(listFile);
} catch (IOException var2) {
var2.printStackTrace();
} catch (IOException ignore) {
}

}

public static void register() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package dev.tonimatas.perworldplugins.listener;

import dev.tonimatas.perworldplugins.PerWorldPlugins;
import dev.tonimatas.perworldplugins.manager.CommandManager;
import dev.tonimatas.perworldplugins.util.PerWorldUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.server.PluginEnableEvent;
import org.bukkit.plugin.Plugin;

import java.util.Collections;

public class Listeners implements Listener {
@EventHandler(priority = EventPriority.MONITOR)
public void onPluginEnable(PluginEnableEvent event) {
if (event.getPlugin().equals(PerWorldPlugins.getInstance())) return;

CommandManager.addPluginCommands(event.getPlugin());

if (PerWorldPlugins.getInstance().getConfig().getStringList("plugins." + event.getPlugin().getName()).isEmpty()) {
PerWorldPlugins.getInstance().getConfig().set("plugins." + event.getPlugin().getName(), Collections.singletonList("Example"));
PerWorldPlugins.getInstance().saveConfig();
PerWorldPlugins.getInstance().reloadConfig();
}
}

@SuppressWarnings("DataFlowIssue")
@EventHandler(priority = EventPriority.MONITOR)
public void onCommandPreProcess(PlayerCommandPreprocessEvent event) {
String commandString = event.getMessage().split(" ")[0].replaceFirst("/", "");

Command command = CommandManager.getCommandMap().getCommand(commandString);

if (command == null) return;

Plugin plugin = CommandManager.pluginMap.get(command);

if (plugin != null && PerWorldUtils.getDisabledWorlds(plugin).contains(event.getPlayer().getWorld().getName())) {
event.getPlayer().sendMessage(ChatColor.translateAlternateColorCodes('&',
PerWorldPlugins.getInstance().getConfig().getString("disabledCommandMessage"))
.replaceAll("\\{world}", event.getPlayer().getWorld().getName())
.replaceAll("\\{player}", event.getPlayer().getName()));

event.setCancelled(true);
}
}
}
Loading

0 comments on commit 9870c76

Please sign in to comment.