9
0
mirror of https://gitlab.com/SamB440/rpgregions-2.git synced 2025-12-27 10:49:08 +00:00

Add information for main-thread blocking classes

This commit is contained in:
SamB440
2021-07-09 21:42:40 +01:00
parent 13e40a7b6c
commit 522cfc8acd
7 changed files with 67 additions and 4 deletions

View File

@@ -49,7 +49,7 @@ dependencies {
testImplementation 'org.reflections:reflections:0.9.12'
implementation 'net.wesjd:anvilgui:1.5.1-SNAPSHOT' // anvilgui
implementation 'com.github.stefvanschie.inventoryframework:IF:0.9.9' // inventory framework
implementation 'com.github.stefvanschie.inventoryframework:IF:0.10.0' // inventory framework
implementation 'com.gitlab.samb440:languagy:2.0.3-RELEASE' // languagy
implementation 'co.aikar:acf-paper:0.5.0-SNAPSHOT' // commands
implementation 'co.aikar:idb-core:1.0.0-SNAPSHOT' // database

View File

@@ -3,12 +3,13 @@ package net.islandearth.rpgregions.api.integrations.hooks;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import net.islandearth.rpgregions.RPGRegions;
import net.islandearth.rpgregions.managers.data.account.RPGRegionsAccount;
import net.islandearth.rpgregions.thread.Blocking;
import net.islandearth.rpgregions.translation.Translations;
import org.bukkit.entity.Player;
import java.util.concurrent.ExecutionException;
public class PlaceholderRegionHook extends PlaceholderExpansion {
public class PlaceholderRegionHook extends PlaceholderExpansion implements Blocking {
private final RPGRegions plugin;

View File

@@ -8,7 +8,11 @@ import co.aikar.commands.annotation.Subcommand;
import co.aikar.idb.DB;
import co.aikar.idb.Database;
import net.islandearth.rpgregions.RPGRegions;
import net.islandearth.rpgregions.effects.RegionEffect;
import net.islandearth.rpgregions.managers.data.IStorageManager;
import net.islandearth.rpgregions.requirements.RegionRequirement;
import net.islandearth.rpgregions.rewards.DiscoveryReward;
import net.islandearth.rpgregions.thread.Blocking;
import org.apache.commons.lang.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
@@ -43,6 +47,24 @@ public class RPGRegionsDebugCommand extends BaseCommand {
sender.sendMessage(ChatColor.GRAY + "Driver: " + connection.getMetaData().getDriverName());
sender.sendMessage(ChatColor.GRAY + "Version: " + connection.getMetaData().getDriverVersion());
}
plugin.getManagers().getRegionsCache().getConfiguredRegions().forEach((name, configuredRegion) -> {
for (DiscoveryReward reward : configuredRegion.getRewards()) {
if (reward instanceof Blocking) {
sender.sendMessage(ChatColor.RED + "Region " + name + " has blocking class " + reward + ".");
}
}
for (RegionRequirement requirement : configuredRegion.getRequirements()) {
if (requirement instanceof Blocking) {
sender.sendMessage(ChatColor.RED + "Region " + name + " has blocking class " + requirement + ".");
}
}
for (RegionEffect effect : configuredRegion.getEffects()) {
if (effect instanceof Blocking) {
sender.sendMessage(ChatColor.RED + "Region " + name + " has blocking class " + effect + ".");
}
}
});
}
@Subcommand("cache")

View File

@@ -27,6 +27,7 @@ import net.islandearth.rpgregions.managers.registry.IRPGRegionsRegistry;
import net.islandearth.rpgregions.managers.registry.RPGRegionsRegistry;
import net.islandearth.rpgregions.regenerate.Regenerate;
import net.islandearth.rpgregions.regenerate.entity.RegeneratingEntity;
import net.islandearth.rpgregions.requirements.RegionRequirement;
import net.islandearth.rpgregions.requirements.RegionRequirementRegistry;
import net.islandearth.rpgregions.rewards.ConsoleCommandReward;
import net.islandearth.rpgregions.rewards.DiscoveryReward;
@@ -35,6 +36,7 @@ import net.islandearth.rpgregions.rewards.ItemReward;
import net.islandearth.rpgregions.rewards.MessageReward;
import net.islandearth.rpgregions.rewards.PlayerCommandReward;
import net.islandearth.rpgregions.rewards.RegionRewardRegistry;
import net.islandearth.rpgregions.thread.Blocking;
import net.islandearth.rpgregions.utils.ItemStackBuilder;
import net.islandearth.rpgregions.utils.XSound;
import org.bukkit.Bukkit;
@@ -137,6 +139,7 @@ public class RPGRegionsManagers implements IRPGRegionsManagers {
try (Reader reader = new FileReader(file)) {
ConfiguredRegion region = plugin.getGson().fromJson(reader, ConfiguredRegion.class);
if (!region.getId().equals("exampleconfig")) regionsCache.addConfiguredRegion(region);
warnBlocking(plugin, region);
} catch (Exception e) {
plugin.getLogger().log(Level.SEVERE, "Error loading region config " + file.getName() + ".", e);
}
@@ -163,6 +166,28 @@ public class RPGRegionsManagers implements IRPGRegionsManagers {
guiFieldElementRegistry.register(new CompareTypeGuiFieldElement());
}
private void warnBlocking(RPGRegions plugin, ConfiguredRegion region) {
List<Blocking> blocking = new ArrayList<>();
for (DiscoveryReward reward : region.getRewards()) {
if (reward instanceof Blocking) {
blocking.add((Blocking) reward);
}
}
for (RegionRequirement requirement : region.getRequirements()) {
if (requirement instanceof Blocking) {
blocking.add((Blocking) requirement);
}
}
for (RegionEffect effect : region.getEffects()) {
if (effect instanceof Blocking) {
blocking.add((Blocking) effect);
}
}
for (Blocking blockingClass : blocking) {
blockingClass.log(plugin);
}
}
@Override
public IStorageManager getStorageManager() {
return storageManager;

View File

@@ -5,12 +5,13 @@ import me.blackvein.quests.Quester;
import me.blackvein.quests.Quests;
import net.islandearth.rpgregions.api.IRPGRegionsAPI;
import net.islandearth.rpgregions.gui.GuiEditable;
import net.islandearth.rpgregions.thread.Blocking;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.concurrent.ExecutionException;
public class QuestRequirement extends RegionRequirement {
public class QuestRequirement extends RegionRequirement implements Blocking {
@GuiEditable("Quest id")
private final String questId;

View File

@@ -5,12 +5,13 @@ import me.blackvein.quests.Quester;
import me.blackvein.quests.Quests;
import net.islandearth.rpgregions.api.IRPGRegionsAPI;
import net.islandearth.rpgregions.gui.GuiEditable;
import net.islandearth.rpgregions.thread.Blocking;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.concurrent.ExecutionException;
public class QuestReward extends DiscoveryReward {
public class QuestReward extends DiscoveryReward implements Blocking {
@GuiEditable("Quest id")
private final String questId;

View File

@@ -0,0 +1,13 @@
package net.islandearth.rpgregions.thread;
import net.islandearth.rpgregions.RPGRegions;
/**
* Used to indicate a class has main-thread blocking code.
*/
public interface Blocking {
default void log(RPGRegions plugin) {
plugin.getLogger().warning("This class (" + this.getClass().getSimpleName() + ") has main-thread blocking code.");
}
}