8 Commits

Author SHA1 Message Date
YouHaveTrouble 3833c5ce43 link to modrinth 2024-06-05 20:22:49 +02:00
YouHaveTrouble fec112511c Merge remote-tracking branch 'origin/master' 2024-06-05 20:19:39 +02:00
YouHaveTrouble c65e68dcfc bump version 2024-06-05 20:12:47 +02:00
YouHaveTrouble b7587970c0 command to display which plugins have hooks registered 2024-06-05 20:12:24 +02:00
YouHaveTrouble 48f5c337d7 no need for remapping :) 2024-06-05 20:11:02 +02:00
YouHaveTrouble 6017feccec Update readme.md 2024-04-18 10:28:29 +02:00
granny 31fa7b02b9 add logs when registering services (#2)
* add logs when registering services

* Update YardWatch.java
2024-04-18 10:27:34 +02:00
YouHaveTrouble eb9ebb1fb3 add LWC to softdepends 2024-04-16 21:59:40 +02:00
5 changed files with 117 additions and 3 deletions
+10 -1
View File
@@ -6,7 +6,7 @@
<groupId>me.youhavetrouble</groupId> <groupId>me.youhavetrouble</groupId>
<artifactId>YardWatch</artifactId> <artifactId>YardWatch</artifactId>
<version>1.1.0</version> <version>1.2.0</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>YardWatch</name> <name>YardWatch</name>
@@ -39,6 +39,15 @@
<goals> <goals>
<goal>shade</goal> <goal>shade</goal>
</goals> </goals>
<configuration>
<transformers>
<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<manifestEntries>
<paperweight-mappings-namespace>mojang</paperweight-mappings-namespace>
</manifestEntries>
</transformer>
</transformers>
</configuration>
</execution> </execution>
</executions> </executions>
</plugin> </plugin>
+4 -2
View File
@@ -3,10 +3,12 @@ Implementation of [YardWatchAPI](https://github.com/YouHaveTrouble/YardWatchAPI)
of supported plugins implements the API itself, then this plugin will stop providing its implementation to allow the of supported plugins implements the API itself, then this plugin will stop providing its implementation to allow the
plugin to take over. plugin to take over.
If you're a developer looking for information how to implement YardWatchAPI in your plugin, see If you're a developer looking for information how to implement YardWatchAPI in your plugin, see
[YardWatchAPI](https://github.com/YouHaveTrouble/YardWatchAPI) [YardWatchAPI](https://github.com/YouHaveTrouble/YardWatchAPI)
## Downloads
You can download YardWatch plugin on [Modrinth](https://modrinth.com/plugin/yardwatch).
## Requirements ## Requirements
- Java 17 - Java 17
- Minecraft 1.16+ - Minecraft 1.16+
@@ -14,7 +16,7 @@ If you're a developer looking for information how to implement YardWatchAPI in y
## Implementations for: ## Implementations for:
- [GriefPrevention (v16+)](https://www.spigotmc.org/resources/griefprevention.1884/) - [GriefPrevention (v16+)](https://www.spigotmc.org/resources/griefprevention.1884/)
- [WorldGuard (7.0.0+)](https://enginehub.org/worldguard#downloads) - [WorldGuard (7.0.0+)](https://enginehub.org/worldguard#downloads)
- LWCX - [LWCX](https://www.spigotmc.org/resources/lwc-extended.69551/)
- [FactionsUUID](https://www.spigotmc.org/resources/factionsuuid.1035/) - [FactionsUUID](https://www.spigotmc.org/resources/factionsuuid.1035/)
- [SuperiorSkyBlock](https://bg-software.com/superiorskyblock/) - [SuperiorSkyBlock](https://bg-software.com/superiorskyblock/)
- [Towny](https://github.com/TownyAdvanced/Towny) - [Towny](https://github.com/TownyAdvanced/Towny)
@@ -1,11 +1,13 @@
package me.youhavetrouble.yardwatch; package me.youhavetrouble.yardwatch;
import me.youhavetrouble.yardwatch.commands.YardWatchCommand;
import me.youhavetrouble.yardwatch.hooks.FactionsUUIDProtection; import me.youhavetrouble.yardwatch.hooks.FactionsUUIDProtection;
import me.youhavetrouble.yardwatch.hooks.GriefPreventionProtection; import me.youhavetrouble.yardwatch.hooks.GriefPreventionProtection;
import me.youhavetrouble.yardwatch.hooks.LWCXProtection; import me.youhavetrouble.yardwatch.hooks.LWCXProtection;
import me.youhavetrouble.yardwatch.hooks.SuperiorSkyBlockProtection; import me.youhavetrouble.yardwatch.hooks.SuperiorSkyBlockProtection;
import me.youhavetrouble.yardwatch.hooks.TownyProtection; import me.youhavetrouble.yardwatch.hooks.TownyProtection;
import me.youhavetrouble.yardwatch.hooks.WorldGuardProtection; import me.youhavetrouble.yardwatch.hooks.WorldGuardProtection;
import org.bukkit.command.PluginCommand;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.RegisteredServiceProvider; import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.plugin.ServicePriority; import org.bukkit.plugin.ServicePriority;
@@ -17,42 +19,60 @@ public final class YardWatch extends JavaPlugin {
@Override @Override
public void onEnable() { public void onEnable() {
PluginCommand command = getCommand("yardwatch");
if (command != null) {
command.setExecutor(new YardWatchCommand(this));
}
if (shouldRegisterService("WorldGuard")) { if (shouldRegisterService("WorldGuard")) {
getLogger().info("Registering WorldGuard service.");
getServer().getServicesManager().register( getServer().getServicesManager().register(
Protection.class, new WorldGuardProtection(this), this, ServicePriority.Normal Protection.class, new WorldGuardProtection(this), this, ServicePriority.Normal
); );
} }
if (shouldRegisterService("GriefPrevention")) { if (shouldRegisterService("GriefPrevention")) {
getLogger().info("Registering GriefPrevention service.");
getServer().getServicesManager().register( getServer().getServicesManager().register(
Protection.class, new GriefPreventionProtection(this), this, ServicePriority.Normal Protection.class, new GriefPreventionProtection(this), this, ServicePriority.Normal
); );
} }
if (shouldRegisterService("LWC")) { if (shouldRegisterService("LWC")) {
getLogger().info("Registering LWC service.");
getServer().getServicesManager().register( getServer().getServicesManager().register(
Protection.class, new LWCXProtection(this), this, ServicePriority.Normal Protection.class, new LWCXProtection(this), this, ServicePriority.Normal
); );
} }
if (shouldRegisterService("Factions")) { if (shouldRegisterService("Factions")) {
getLogger().info("Registering Factions service.");
getServer().getServicesManager().register( getServer().getServicesManager().register(
Protection.class, new FactionsUUIDProtection(this), this, ServicePriority.Normal Protection.class, new FactionsUUIDProtection(this), this, ServicePriority.Normal
); );
} }
if (shouldRegisterService("SuperiorSkyblock2")) { if (shouldRegisterService("SuperiorSkyblock2")) {
getLogger().info("Registering SuperiorSkyblock2 service.");
getServer().getServicesManager().register( getServer().getServicesManager().register(
Protection.class, new SuperiorSkyBlockProtection(this), this, ServicePriority.Normal Protection.class, new SuperiorSkyBlockProtection(this), this, ServicePriority.Normal
); );
} }
if (shouldRegisterService("Towny")) { if (shouldRegisterService("Towny")) {
getLogger().info("Registering Towny service.");
getServer().getServicesManager().register( getServer().getServicesManager().register(
Protection.class, new TownyProtection(this), this, ServicePriority.Normal Protection.class, new TownyProtection(this), this, ServicePriority.Normal
); );
} }
List<RegisteredServiceProvider<?>> registrations = getServer().getServicesManager().getRegistrations(this);
if (registrations.isEmpty()) {
getLogger().info("Registered 0 services. This plugin can be safely removed.");
} else {
getLogger().info("Successfully registered " + registrations.size() + " services.");
}
} }
/** /**
@@ -0,0 +1,75 @@
package me.youhavetrouble.yardwatch.commands;
import me.youhavetrouble.yardwatch.Protection;
import me.youhavetrouble.yardwatch.YardWatch;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
import org.bukkit.plugin.RegisteredServiceProvider;
import org.bukkit.util.StringUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.*;
public class YardWatchCommand implements TabExecutor {
private final YardWatch plugin;
private final String version;
public YardWatchCommand(YardWatch plugin) {
this.plugin = plugin;
this.version = plugin.getDescription().getVersion();
}
@Override
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String[] args) {
if (args.length == 0) {
sendDefault(sender);
return true;
}
if (args[0].equalsIgnoreCase("hooks")) {
sendHooks(sender);
return true;
}
return false;
}
@Override
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
List<String> completions = new ArrayList<>();
if (args.length == 1) {
completions.add("hooks");
return StringUtil.copyPartialMatches(args[0], completions, new ArrayList<>());
}
return completions;
}
private void sendDefault(CommandSender sender) {
sender.sendMessage("YardWatch " + version);
}
private void sendHooks(CommandSender sender) {
Map<String, Integer> hooks = new HashMap<>();
Collection<RegisteredServiceProvider<Protection>> protections = plugin.getServer().getServicesManager().getRegistrations(Protection.class);
for (RegisteredServiceProvider<Protection> protection : protections) {
hooks.merge(protection.getPlugin().getName(), 1, Integer::sum);
}
if (hooks.isEmpty()) {
sender.sendMessage("No hooks registered.");
return;
}
sender.sendMessage("Hooks:");
for (Map.Entry<String, Integer> entry : hooks.entrySet()) {
String hook = entry.getValue() == 1 ? "hook" : "hooks";
sender.sendMessage(String.format("%s -> %s %s registered", entry.getKey(), entry.getValue(), hook));
}
}
}
+8
View File
@@ -13,3 +13,11 @@ softdepend:
- "Towny" - "Towny"
- "Factions" - "Factions"
- "SuperiorSkyblock2" - "SuperiorSkyblock2"
- "LWC"
commands:
yardwatch:
description: "YardWatch command"
usage: "/yardwatch <arg>"
permission: "yardwatch.command"
aliases:
- "yw"