Removed Useless API layer and hook handler.

This commit is contained in:
Brianna 2019-06-08 16:24:44 -04:00
parent fc132d7c97
commit 6ac0814358
44 changed files with 42 additions and 771 deletions

View File

@ -1,16 +0,0 @@
package com.songoda.epicanchors.api;
import com.songoda.epicanchors.api.anchor.AnchorManager;
import com.songoda.epicanchors.api.utils.ProtectionPluginHook;
import org.bukkit.inventory.ItemStack;
public interface EpicAnchors {
void registerProtectionHook(ProtectionPluginHook hook);
int getTicksFromItem(ItemStack item);
ItemStack makeAnchorItem(int ticks);
AnchorManager getAnchorManager();
}

View File

@ -1,46 +0,0 @@
package com.songoda.epicanchors.api;
/**
* The access point of the EpicAnchorsAPI, a class acting as a bridge between API
* and plugin implementation. It is from here where developers should access the
* important and core methods in the API. All static methods in this class will
* call directly upon the implementation at hand (in most cases this will be the
* EpicAnchors plugin itself), therefore a call to {@link #getImplementation()} is
* not required and redundant in most situations. Method calls from this class are
* preferred the majority of time, though an instance of {@link EpicAnchors} may
* be passed if absolutely necessary.
*
* @see EpicAnchors
* @since 3.0.0
*/
public class EpicAnchorsAPI {
private static EpicAnchors implementation;
/**
* Set the EpicAnchors implementation. Once called for the first time, this
* method will throw an exception on any subsequent invocations. The implementation
* may only be set a single time, presumably by the EpicAnchors plugin
*
* @param implementation the implementation to set
*/
public static void setImplementation(EpicAnchors implementation) {
if (EpicAnchorsAPI.implementation != null) {
throw new IllegalArgumentException("Cannot set API implementation twice");
}
EpicAnchorsAPI.implementation = implementation;
}
/**
* Get the EpicAnchors implementation. This method may be redundant in most
* situations as all methods present in {@link EpicAnchors} will be mirrored
* with static modifiers in the {@link EpicAnchorsAPI} class
*
* @return the EpicAnchors implementation
*/
public static EpicAnchors getImplementation() {
return implementation;
}
}

View File

@ -1,12 +0,0 @@
package com.songoda.epicanchors.api.anchor;
import org.bukkit.Location;
public interface Anchor {
Location getLocation();
int getTicksLeft();
void setTicksLeft(int ticksLeft);
}

View File

@ -1,17 +0,0 @@
package com.songoda.epicanchors.api.anchor;
import org.bukkit.Location;
import java.util.Map;
public interface AnchorManager {
Anchor addAnchor(Location location, Anchor anchor);
void removeAnchor(Location location);
Anchor getAnchor(Location location);
boolean isAnchor(Location location);
Map<Location, Anchor> getAnchors();
}

View File

@ -1,39 +0,0 @@
package com.songoda.epicanchors.api.utils;
import org.bukkit.Location;
/**
* A more specific implementation of {@link ProtectionPluginHook} used internally by
* EpicSpawners to retain more information about default hooks. Often times this
* interface is not recommended over the ProtectionPluginHook interface as its methods
* will not often be used by implementation, though they are available if more information
* is desired. It is, however, recommended to use the former
*
* @author Parker Hawke - 2008Choco
*/
public interface ClaimableProtectionPluginHook extends ProtectionPluginHook {
/**
* Check whether the provided location is in the claim with the given String ID
*
* @param location the location to check
* @param id the ID of the claim to check
*
* @return true if the location is within the claim, false otherwise or if the
* claim ID does not exist
*/
boolean isInClaim(Location location, String id);
/**
* Get the ID of the claim with the given name. Often times this is unnecessary
* as unique IDs are not provided by a claim implementation, though for plugins
* such as factions, the passed parameter is the name of the faction and the
* returned String is its unique ID
*
* @param name the name of the claim to check
*
* @return the unique String ID. null if no claim exists
*/
String getClaimID(String name);
}

View File

@ -1,48 +0,0 @@
package com.songoda.epicanchors.api.utils;
import com.songoda.epicanchors.api.EpicAnchors;
import org.bukkit.Location;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
/**
* Represents a hook for a protection plugin. This is used by EpicSpawners to determine
* whether a block break should be successful or not according to the current state of
* another plugin. For plugins providing claims with unique String IDs, see the
* {@link ClaimableProtectionPluginHook} for a more detailed implementation. To register
* a protection hook implementation, see
* {@link EpicAnchors#registerProtectionHook(ProtectionPluginHook)}
*/
public interface ProtectionPluginHook {
/**
* The plugin to which this plugin hook belongs. Must not be null
*
* @return the hooking plugin
*/
JavaPlugin getPlugin();
/**
* Check whether the provided player may build at the specified location
*
* @param player the player to check
* @param location the location to check
*
* @return true if player is permitted to build, false otherwise
*/
boolean canBuild(Player player, Location location);
/**
* Check whether the provided player may build at the specified block
*
* @param player the player to check
* @param block the block to check
*
* @return true if player is permitted to build, false otherwise
*/
default boolean canBuild(Player player, Block block) {
return block != null && canBuild(player, block.getLocation());
}
}

View File

@ -1,60 +0,0 @@
package com.songoda.epicanchors.hooks;
import com.songoda.epicanchors.api.utils.ClaimableProtectionPluginHook;
import com.wasteofplastic.askyblock.ASkyBlock;
import com.wasteofplastic.askyblock.ASkyBlockAPI;
import com.wasteofplastic.askyblock.Island;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.List;
import java.util.Set;
import java.util.UUID;
public class HookASkyBlock implements ClaimableProtectionPluginHook {
private final ASkyBlockAPI skyblock;
public HookASkyBlock() {
this.skyblock = ASkyBlockAPI.getInstance();
}
@Override
public JavaPlugin getPlugin() {
return ASkyBlock.getPlugin();
}
@Override
public boolean canBuild(Player player, Location location) {
Island island = skyblock.getIslandAt(location);
if (island == null) return true;
UUID owner = island.getOwner();
UUID playerUUID = player.getUniqueId();
if (owner == null || owner.equals(playerUUID)) return true;
List<UUID> teamMembers = skyblock.getTeamMembers(owner);
if (teamMembers.contains(playerUUID)) return true;
Set<Location> coopIslands = skyblock.getCoopIslands(player);
for (Location islandLocation : coopIslands) {
if (skyblock.getIslandAt(islandLocation).getOwner().equals(playerUUID)) {
return true;
}
}
return false;
}
@Override
public boolean isInClaim(Location location, String id) {
return skyblock.getOwner(location).toString().equals(id);
}
@Override
public String getClaimID(String name) {
return null;
}
}

View File

@ -1,45 +0,0 @@
package com.songoda.epicanchors.hooks;
import com.songoda.epicanchors.api.utils.ClaimableProtectionPluginHook;
import me.markeh.factionsframework.FactionsFramework;
import me.markeh.factionsframework.entities.FPlayer;
import me.markeh.factionsframework.entities.FPlayers;
import me.markeh.factionsframework.entities.Faction;
import me.markeh.factionsframework.entities.Factions;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class HookFactions implements ClaimableProtectionPluginHook {
private final FactionsFramework factions;
public HookFactions() {
this.factions = FactionsFramework.get();
}
@Override
public JavaPlugin getPlugin() {
return factions;
}
@Override
public boolean canBuild(Player player, Location location) {
FPlayer fPlayer = FPlayers.getBySender(player);
Faction faction = Factions.getFactionAt(location);
return faction.isNone() || fPlayer.getFaction().equals(faction);
}
@Override
public boolean isInClaim(Location location, String id) {
return Factions.getFactionAt(location).getId().equals(id);
}
@Override
public String getClaimID(String name) {
Faction faction = Factions.getByName(name, "");
return (faction != null) ? faction.getId() : null;
}
}

View File

@ -1,30 +0,0 @@
package com.songoda.epicanchors.hooks;
import com.songoda.epicanchors.api.utils.ProtectionPluginHook;
import me.ryanhamshire.GriefPrevention.Claim;
import me.ryanhamshire.GriefPrevention.GriefPrevention;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class HookGriefPrevention implements ProtectionPluginHook {
private final GriefPrevention griefPrevention;
public HookGriefPrevention() {
this.griefPrevention = GriefPrevention.instance;
}
@Override
public JavaPlugin getPlugin() {
return griefPrevention;
}
@Override
public boolean canBuild(Player player, Location location) {
Claim claim = griefPrevention.dataStore.getClaimAt(location, false, null);
return claim != null && claim.allowBuild(player, Material.STONE) == null;
}
}

View File

@ -1,38 +0,0 @@
package com.songoda.epicanchors.hooks;
import com.songoda.epicanchors.api.utils.ProtectionPluginHook;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.kingdoms.constants.land.Land;
import org.kingdoms.constants.land.SimpleChunkLocation;
import org.kingdoms.constants.player.KingdomPlayer;
import org.kingdoms.main.Kingdoms;
import org.kingdoms.manager.game.GameManagement;
public class HookKingdoms implements ProtectionPluginHook {
private final Kingdoms kingdoms;
public HookKingdoms() {
this.kingdoms = Kingdoms.getInstance();
}
@Override
public JavaPlugin getPlugin() {
return kingdoms;
}
@Override
public boolean canBuild(Player player, Location location) {
KingdomPlayer kPlayer = GameManagement.getPlayerManager().getOfflineKingdomPlayer(player).getKingdomPlayer();
if (kPlayer.getKingdom() == null) return true;
SimpleChunkLocation chunkLocation = new SimpleChunkLocation(location.getChunk());
Land land = GameManagement.getLandManager().getOrLoadLand(chunkLocation);
String owner = land.getOwner();
return owner == null || kPlayer.getKingdom().getKingdomName().equals(owner);
}
}

View File

@ -1,37 +0,0 @@
package com.songoda.epicanchors.hooks;
import com.github.intellectualsites.plotsquared.api.PlotAPI;
import com.github.intellectualsites.plotsquared.bukkit.BukkitMain;
import com.github.intellectualsites.plotsquared.plot.object.Plot;
import com.songoda.epicanchors.api.utils.ProtectionPluginHook;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class HookPlotSquared implements ProtectionPluginHook {
private final PlotAPI plotSquared;
public HookPlotSquared() {
this.plotSquared = new PlotAPI();
}
@Override
public JavaPlugin getPlugin() { // BukkitMain? Really?
return JavaPlugin.getPlugin(BukkitMain.class);
}
@Override
public boolean canBuild(Player player, Location location) {
com.github.intellectualsites.plotsquared.plot.object.Location plotLocation =
new com.github.intellectualsites.plotsquared.plot.object.Location(location.getWorld().getName(),
location.getBlockX(), location.getBlockY(), location.getBlockZ());
Plot plot = plotLocation.getPlot();
return plot != null
&& plot.getOwners().contains(player.getUniqueId())
&& plot.getMembers().contains(player.getUniqueId());
}
}

View File

@ -1,32 +0,0 @@
package com.songoda.epicanchors.hooks;
import br.net.fabiozumbi12.RedProtect.Bukkit.API.RedProtectAPI;
import br.net.fabiozumbi12.RedProtect.Bukkit.RedProtect;
import br.net.fabiozumbi12.RedProtect.Bukkit.Region;
import com.songoda.epicanchors.api.utils.ProtectionPluginHook;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class HookRedProtect implements ProtectionPluginHook {
private final RedProtect redProtect;
public HookRedProtect() {
this.redProtect = RedProtect.get();
}
@Override
public JavaPlugin getPlugin() {
return redProtect;
}
@Override
public boolean canBuild(Player player, Location location) {
RedProtectAPI api = redProtect.getAPI();
Region region = api.getRegion(location);
return region != null && region.canBuild(player);
}
}

View File

@ -1,56 +0,0 @@
package com.songoda.epicanchors.hooks;
import com.palmergames.bukkit.towny.Towny;
import com.palmergames.bukkit.towny.exceptions.NotRegisteredException;
import com.palmergames.bukkit.towny.object.Resident;
import com.palmergames.bukkit.towny.object.TownyUniverse;
import com.songoda.epicanchors.api.utils.ClaimableProtectionPluginHook;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class HookTowny implements ClaimableProtectionPluginHook {
private final Towny towny;
public HookTowny() {
this.towny = Towny.getPlugin();
}
@Override
public JavaPlugin getPlugin() {
return towny;
}
@Override
public boolean canBuild(Player player, Location location) {
if (TownyUniverse.isWilderness(location.getBlock()) || !TownyUniverse.getTownBlock(location).hasTown())
return true;
try {
Resident resident = TownyUniverse.getDataSource().getResident(player.getName());
return resident.hasTown() && TownyUniverse.getTownName(location).equals(resident.getTown().getName());
} catch (NotRegisteredException e) {
return true;
}
}
@Override
public boolean isInClaim(Location location, String id) {
try {
return TownyUniverse.isWilderness(location.getBlock()) && TownyUniverse.getTownBlock(location).getTown().getUID().toString().equals(id);
} catch (NotRegisteredException e) {
return true;
}
}
@Override
public String getClaimID(String name) {
try {
return TownyUniverse.getDataSource().getTown(name).getUID().toString();
} catch (NotRegisteredException e) {
return null;
}
}
}

View File

@ -1,38 +0,0 @@
package com.songoda.epicanchors.hooks;
import com.songoda.epicanchors.api.utils.ClaimableProtectionPluginHook;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import us.talabrek.ultimateskyblock.api.uSkyBlockAPI;
public class HookUSkyBlock implements ClaimableProtectionPluginHook {
private final uSkyBlockAPI uSkyblock;
public HookUSkyBlock() {
this.uSkyblock = (uSkyBlockAPI) Bukkit.getPluginManager().getPlugin("USkyBlock");
}
@Override
public JavaPlugin getPlugin() { // uSkyBlockAPI is also an instance of JavaPlugin
return (JavaPlugin) uSkyblock;
}
@Override
public boolean canBuild(Player player, Location location) {
return uSkyblock.getIslandInfo(location).getOnlineMembers().contains(player) || uSkyblock.getIslandInfo(location).isLeader(player);
}
@Override
public boolean isInClaim(Location location, String id) {
return uSkyblock.getIslandInfo(location).getLeader().equals(id);
}
@Override
public String getClaimID(String name) {
return null;
}
}

View File

@ -1,56 +0,0 @@
package com.songoda.epicanchors.hooks;
import com.songoda.epicanchors.api.utils.ProtectionPluginHook;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import java.lang.reflect.Method;
public class HookWorldGuard implements ProtectionPluginHook {
private Method wg6canBuild;
private Object wg6inst;
private boolean isWorldGuard7;
public HookWorldGuard() {
try {
Class.forName("com.sk89q.worldguard.WorldGuard");
this.isWorldGuard7 = true;
} catch (ClassNotFoundException ex) {
this.isWorldGuard7 = false;
try {
this.wg6inst = Class.forName("com.sk89q.worldguard.bukkit.WorldGuardPlugin").getMethod("inst").invoke(null);
this.wg6canBuild = this.wg6inst.getClass().getMethod("canBuild", Player.class, Location.class);
} catch (Exception ignored) {
}
}
}
@Override
public JavaPlugin getPlugin() {
try {
if (this.isWorldGuard7)
return com.sk89q.worldguard.bukkit.WorldGuardPlugin.inst();
return (JavaPlugin) Class.forName("com.sk89q.worldguard.bukkit.WorldGuardPlugin").getMethod("inst").invoke(null);
} catch (Exception ex) {
return null;
}
}
@Override
public boolean canBuild(Player player, Location location) {
if (this.isWorldGuard7) {
com.sk89q.worldguard.protection.regions.RegionQuery q = com.sk89q.worldguard.WorldGuard.getInstance().getPlatform().getRegionContainer().createQuery();
com.sk89q.worldguard.protection.ApplicableRegionSet ars = q.getApplicableRegions(com.sk89q.worldedit.bukkit.BukkitAdapter.adapt(player.getLocation()));
return ars.testState(com.sk89q.worldguard.bukkit.WorldGuardPlugin.inst().wrapPlayer(player), com.sk89q.worldguard.protection.flags.Flags.BUILD);
} else {
try {
return (boolean) this.wg6canBuild.invoke(this.wg6inst, player, location);
} catch (Exception ex) {
return true;
}
}
}
}

89
pom.xml
View File

@ -4,31 +4,13 @@
<modelVersion>4.0.0</modelVersion>
<version>maven-version-number</version>
<build>
<defaultGoal>clean package</defaultGoal>
<defaultGoal>clean install</defaultGoal>
<finalName>EpicAnchors-${project.version}</finalName>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.7</version>
<executions>
<execution>
<id>add-source</id>
<phase>generate-sources</phase>
<goals>
<goal>add-source</goal>
</goals>
<configuration>
<sources>
<source>EpicAnchors-API/src/main/java</source>
</sources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<version>3.6.1</version>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
@ -68,13 +50,6 @@
</executions>
</plugin>
</plugins>
<resources>
<resource>
<directory>EpicAnchors-Plugin/src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<sourceDirectory>EpicAnchors-Plugin/src/main/java</sourceDirectory>
</build>
<repositories>
<repository>
@ -86,72 +61,18 @@
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot</artifactId>
<version>1.14</version>
<version>1.14.1</version>
</dependency>
<dependency>
<groupId>com.songoda</groupId>
<artifactId>songodaupdater</artifactId>
<version>1</version>
</dependency>
<dependency>
<groupId>org</groupId>
<artifactId>kingdoms</artifactId>
<version>13.0.9</version>
</dependency>
<dependency>
<groupId>net.milkbowl</groupId>
<artifactId>vault</artifactId>
<version>1.7.1</version>
</dependency>
<dependency>
<groupId>me.ryanhamshire</groupId>
<artifactId>GriefPrevention</artifactId>
<version>16.6</version>
</dependency>
<dependency>
<groupId>com.sk89q</groupId>
<artifactId>worldedit</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>com.sk89q</groupId>
<artifactId>worldguard</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>com</groupId>
<artifactId>plotsquared</artifactId>
<version>BREAKING</version>
</dependency>
<dependency>
<groupId>com.palmergames.bukkit</groupId>
<artifactId>towny</artifactId>
<version>0.93.0.0</version>
</dependency>
<dependency>
<groupId>com.wasteofplastic</groupId>
<artifactId>askyblock</artifactId>
<version>3.0.6.8</version>
</dependency>
<dependency>
<groupId>us.talabrek</groupId>
<artifactId>ultimateskyblock</artifactId>
<version>2.7.2</version>
</dependency>
<dependency>
<groupId>me.markeh</groupId>
<artifactId>factionsframework</artifactId>
<version>1.2.0</version>
</dependency>
<dependency>
<groupId>br.net.fabiozumbi12</groupId>
<artifactId>RedProtect</artifactId>
<version>7.3.0</version>
</dependency>
<dependency>
<groupId>com.songoda</groupId>
<artifactId>epicspawners</artifactId>
<version>6-pre4</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>

View File

@ -1,67 +1,38 @@
package com.songoda.epicanchors;
import com.google.common.base.Preconditions;
import com.songoda.epicanchors.anchor.EAnchor;
import com.songoda.epicanchors.anchor.EAnchorManager;
import com.songoda.epicanchors.api.EpicAnchors;
import com.songoda.epicanchors.api.anchor.Anchor;
import com.songoda.epicanchors.api.anchor.AnchorManager;
import com.songoda.epicanchors.api.utils.ClaimableProtectionPluginHook;
import com.songoda.epicanchors.api.utils.ProtectionPluginHook;
import com.songoda.epicanchors.anchor.Anchor;
import com.songoda.epicanchors.anchor.AnchorManager;
import com.songoda.epicanchors.command.CommandManager;
import com.songoda.epicanchors.handlers.AnchorHandler;
import com.songoda.epicanchors.hooks.HookASkyBlock;
import com.songoda.epicanchors.hooks.HookFactions;
import com.songoda.epicanchors.hooks.HookGriefPrevention;
import com.songoda.epicanchors.hooks.HookKingdoms;
import com.songoda.epicanchors.hooks.HookPlotSquared;
import com.songoda.epicanchors.hooks.HookRedProtect;
import com.songoda.epicanchors.hooks.HookTowny;
import com.songoda.epicanchors.hooks.HookUSkyBlock;
import com.songoda.epicanchors.hooks.HookWorldGuard;
import com.songoda.epicanchors.listeners.BlockListeners;
import com.songoda.epicanchors.listeners.InteractListeners;
import com.songoda.epicanchors.utils.ConfigWrapper;
import com.songoda.epicanchors.utils.Methods;
import com.songoda.epicanchors.utils.ServerVersion;
import com.songoda.epicanchors.utils.SettingsManager;
import com.songoda.epicanchors.utils.*;
import com.songoda.epicanchors.utils.updateModules.LocaleModule;
import com.songoda.epicspawners.utils.Metrics;
import com.songoda.update.Plugin;
import com.songoda.update.SongodaUpdate;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.math.NumberUtils;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Particle;
import org.bukkit.Sound;
import org.bukkit.*;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
import java.util.ArrayList;
import java.util.List;
import java.util.function.Supplier;
public class EpicAnchorsPlugin extends JavaPlugin implements EpicAnchors {
public class EpicAnchors extends JavaPlugin {
public ConfigWrapper dataFile = new ConfigWrapper(this, "", "data.yml");
private List<ProtectionPluginHook> protectionHooks = new ArrayList<>();
private ClaimableProtectionPluginHook factionsHook, townyHook, aSkyblockHook, uSkyblockHook;
private ConfigWrapper hooksFile = new ConfigWrapper(this, "", "hooks.yml");
private ServerVersion serverVersion = ServerVersion.fromPackageName(Bukkit.getServer().getClass().getPackage().getName());
private static EpicAnchorsPlugin INSTANCE;
private static EpicAnchors INSTANCE;
private SettingsManager settingsManager;
private EAnchorManager anchorManager;
private AnchorManager anchorManager;
private CommandManager commandManager;
@ -69,7 +40,7 @@ public class EpicAnchorsPlugin extends JavaPlugin implements EpicAnchors {
private Locale locale;
public static EpicAnchorsPlugin getInstance() {
public static EpicAnchors getInstance() {
return INSTANCE;
}
@ -99,7 +70,7 @@ public class EpicAnchorsPlugin extends JavaPlugin implements EpicAnchors {
dataFile.createNewFile("Loading Data File", "EpicAnchors Data File");
this.references = new References();
this.anchorManager = new EAnchorManager();
this.anchorManager = new AnchorManager();
this.commandManager = new CommandManager(this);
loadAnchorsFromFile();
@ -115,17 +86,6 @@ public class EpicAnchorsPlugin extends JavaPlugin implements EpicAnchors {
pluginManager.registerEvents(new BlockListeners(this), this);
pluginManager.registerEvents(new InteractListeners(this), this);
// Register default hooks
if (pluginManager.isPluginEnabled("ASkyBlock")) this.register(HookASkyBlock::new);
if (pluginManager.isPluginEnabled("FactionsFramework")) this.register(HookFactions::new);
if (pluginManager.isPluginEnabled("GriefPrevention")) this.register(HookGriefPrevention::new);
if (pluginManager.isPluginEnabled("Kingdoms")) this.register(HookKingdoms::new);
if (pluginManager.isPluginEnabled("PlotSquared")) this.register(HookPlotSquared::new);
if (pluginManager.isPluginEnabled("RedProtect")) this.register(HookRedProtect::new);
if (pluginManager.isPluginEnabled("Towny")) this.register(HookTowny::new);
if (pluginManager.isPluginEnabled("USkyBlock")) this.register(HookUSkyBlock::new);
if (pluginManager.isPluginEnabled("WorldGuard")) this.register(HookWorldGuard::new);
// Start Metrics
new Metrics(this);
@ -155,7 +115,7 @@ public class EpicAnchorsPlugin extends JavaPlugin implements EpicAnchors {
Location location = Methods.unserializeLocation(locationStr);
int ticksLeft = dataFile.getConfig().getInt("Anchors." + locationStr + ".ticksLeft");
EAnchor anchor = new EAnchor(location, ticksLeft);
Anchor anchor = new Anchor(location, ticksLeft);
anchorManager.addAnchor(location, anchor);
}
@ -180,44 +140,6 @@ public class EpicAnchorsPlugin extends JavaPlugin implements EpicAnchors {
this.setupConfig();
}
private void register(Supplier<ProtectionPluginHook> hookSupplier) {
this.registerProtectionHook(hookSupplier.get());
}
@Override
public void registerProtectionHook(ProtectionPluginHook hook) {
Preconditions.checkNotNull(hook, "Cannot register null hook");
Preconditions.checkNotNull(hook.getPlugin(), "Protection plugin hook returns null plugin instance (#getPlugin())");
JavaPlugin hookPlugin = hook.getPlugin();
for (ProtectionPluginHook existingHook : protectionHooks) {
if (existingHook.getPlugin().equals(hookPlugin)) {
throw new IllegalArgumentException("Hook already registered");
}
}
this.hooksFile.getConfig().addDefault("hooks." + hookPlugin.getName(), true);
if (!hooksFile.getConfig().getBoolean("hooks." + hookPlugin.getName(), true)) return;
this.hooksFile.getConfig().options().copyDefaults(true);
this.hooksFile.saveConfig();
this.protectionHooks.add(hook);
this.getLogger().info("Registered protection hook for plugin: " + hook.getPlugin().getName());
}
public boolean canBuild(Player player, Location location) {
if (player.hasPermission(getDescription().getName() + ".bypass")) {
return true;
}
for (ProtectionPluginHook hook : protectionHooks)
if (!hook.canBuild(player, location)) return false;
return true;
}
@Override
public int getTicksFromItem(ItemStack item) {
if (!item.hasItemMeta() || !item.getItemMeta().hasDisplayName()) return 0;
if (item.getItemMeta().getDisplayName().contains(":")) {
@ -226,9 +148,8 @@ public class EpicAnchorsPlugin extends JavaPlugin implements EpicAnchors {
return 0;
}
@Override
public ItemStack makeAnchorItem(int ticks) {
ItemStack item = new ItemStack(Material.valueOf(EpicAnchorsPlugin.getInstance().getConfig().getString("Main.Anchor Block Material")), 1);
ItemStack item = new ItemStack(Material.valueOf(EpicAnchors.getInstance().getConfig().getString("Main.Anchor Block Material")), 1);
ItemMeta meta = item.getItemMeta();
meta.setDisplayName(Methods.formatText(Methods.formatName(ticks, true)));
ArrayList<String> lore = new ArrayList<>();
@ -289,7 +210,6 @@ public class EpicAnchorsPlugin extends JavaPlugin implements EpicAnchors {
return commandManager;
}
@Override
public AnchorManager getAnchorManager() {
return anchorManager;
}

View File

@ -5,7 +5,7 @@ public class References {
private String prefix;
public References() {
prefix = EpicAnchorsPlugin.getInstance().getLocale().getMessage("general.nametag.prefix") + " ";
prefix = EpicAnchors.getInstance().getLocale().getMessage("general.nametag.prefix") + " ";
}
public String getPrefix() {

View File

@ -1,6 +1,6 @@
package com.songoda.epicanchors.anchor;
import com.songoda.epicanchors.EpicAnchorsPlugin;
import com.songoda.epicanchors.EpicAnchors;
import com.songoda.epicanchors.api.anchor.Anchor;
import com.songoda.epicanchors.gui.GUIOverview;
import com.songoda.epicanchors.utils.ServerVersion;
@ -23,11 +23,11 @@ public class EAnchor implements Anchor {
}
public void overview(Player player) {
new GUIOverview(EpicAnchorsPlugin.getInstance(), this, player);
new GUIOverview(EpicAnchors.getInstance(), this, player);
}
public void addTime(String type, Player player) {
EpicAnchorsPlugin instance = EpicAnchorsPlugin.getInstance();
EpicAnchors instance = EpicAnchors.getInstance();
if (type.equals("ECO")) {
if (instance.getServer().getPluginManager().getPlugin("Vault") != null) {
@ -57,10 +57,10 @@ public class EAnchor implements Anchor {
}
ticksLeft = ticksLeft + 20 * 60 * 30;
Sound sound = EpicAnchorsPlugin.getInstance().isServerVersionAtLeast(ServerVersion.V1_9) ? Sound.ENTITY_PLAYER_LEVELUP : Sound.valueOf("LEVEL_UP");
Sound sound = EpicAnchors.getInstance().isServerVersionAtLeast(ServerVersion.V1_9) ? Sound.ENTITY_PLAYER_LEVELUP : Sound.valueOf("LEVEL_UP");
player.playSound(player.getLocation(), sound, 0.6F, 15.0F);
if (EpicAnchorsPlugin.getInstance().isServerVersionAtLeast(ServerVersion.V1_9))
if (EpicAnchors.getInstance().isServerVersionAtLeast(ServerVersion.V1_9))
player.getWorld().spawnParticle(Particle.SPELL_WITCH, getLocation().add(.5, .5, .5), 100, .5, .5, .5);
}

View File

@ -1,6 +1,6 @@
package com.songoda.epicanchors.utils;
import com.songoda.epicanchors.EpicAnchorsPlugin;
import com.songoda.epicanchors.EpicAnchors;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.GameMode;
@ -43,7 +43,7 @@ public class Methods {
String remaining = minutes == 0 ? String.format("%sh", hours) : String.format("%sh %sm", hours, minutes);
String name = EpicAnchorsPlugin.getInstance().getConfig().getString("Main.Name-Tag").replace("{REMAINING}", remaining);
String name = EpicAnchors.getInstance().getConfig().getString("Main.Name-Tag").replace("{REMAINING}", remaining);
String info = "";
if (full) {
@ -54,12 +54,12 @@ public class Methods {
}
public static ItemStack getGlass() {
EpicAnchorsPlugin instance = EpicAnchorsPlugin.getInstance();
EpicAnchors instance = EpicAnchors.getInstance();
return Methods.getGlass(instance.getConfig().getBoolean("Interfaces.Replace Glass Type 1 With Rainbow Glass"), instance.getConfig().getInt("Interfaces.Glass Type 1"));
}
public static ItemStack getBackgroundGlass(boolean type) {
EpicAnchorsPlugin instance = EpicAnchorsPlugin.getInstance();
EpicAnchors instance = EpicAnchors.getInstance();
if (type)
return getGlass(false, instance.getConfig().getInt("Interfaces.Glass Type 2"));
else
@ -70,10 +70,10 @@ public class Methods {
int randomNum = 1 + (int) (Math.random() * 6);
ItemStack glass;
if (rainbow) {
glass = new ItemStack(EpicAnchorsPlugin.getInstance().isServerVersionAtLeast(ServerVersion.V1_13) ?
glass = new ItemStack(EpicAnchors.getInstance().isServerVersionAtLeast(ServerVersion.V1_13) ?
Material.LEGACY_STAINED_GLASS_PANE : Material.valueOf("STAINED_GLASS_PANE"), 1, (short) randomNum);
} else {
glass = new ItemStack(EpicAnchorsPlugin.getInstance().isServerVersionAtLeast(ServerVersion.V1_13) ?
glass = new ItemStack(EpicAnchors.getInstance().isServerVersionAtLeast(ServerVersion.V1_13) ?
Material.LEGACY_STAINED_GLASS_PANE : Material.valueOf("STAINED_GLASS_PANE"), 1, (short) type);
}
ItemMeta glassmeta = glass.getItemMeta();

View File

@ -1,6 +1,6 @@
package com.songoda.epicanchors.utils;
import com.songoda.epicanchors.EpicAnchorsPlugin;
import com.songoda.epicanchors.EpicAnchors;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Material;
@ -27,12 +27,12 @@ import java.util.regex.Pattern;
public class SettingsManager implements Listener {
private static final Pattern SETTINGS_PATTERN = Pattern.compile("(.{1,28}(?:\\s|$))|(.{0,28})", Pattern.DOTALL);
private final EpicAnchorsPlugin instance;
private final EpicAnchors instance;
private String pluginName = "EpicAnchors";
private Map<Player, String> cat = new HashMap<>();
private Map<Player, String> current = new HashMap<>();
public SettingsManager(EpicAnchorsPlugin plugin) {
public SettingsManager(EpicAnchors plugin) {
this.instance = plugin;
Bukkit.getPluginManager().registerEvents(this, plugin);
}
@ -86,7 +86,7 @@ public class SettingsManager implements Listener {
config.set(value, event.getMessage());
}
Bukkit.getScheduler().scheduleSyncDelayedTask(EpicAnchorsPlugin.getInstance(), () ->
Bukkit.getScheduler().scheduleSyncDelayedTask(EpicAnchors.getInstance(), () ->
this.finishEditing(player), 0L);
event.setCancelled(true);
@ -175,14 +175,14 @@ public class SettingsManager implements Listener {
public enum Setting {
o1("Main.Name-Tag", "&eAnchor &8(&7{REMAINING}&8)"),
o2("Main.Anchor-Lore", "&7Place down to keep that chunk|&7loaded until the time runs out."),
o3("Main.Anchor Block Material", EpicAnchorsPlugin.getInstance().isServerVersionAtLeast(ServerVersion.V1_13) ? "END_PORTAL_FRAME" : "ENDER_PORTAL_FRAME"),
o3("Main.Anchor Block Material", EpicAnchors.getInstance().isServerVersionAtLeast(ServerVersion.V1_13) ? "END_PORTAL_FRAME" : "ENDER_PORTAL_FRAME"),
o4("Main.Add Time With Economy", true),
o5("Main.Economy Cost", 5000.0),
o6("Main.Add Time With XP", true),
o7("Main.XP Cost", 10),
o8("Main.Allow Anchor Breaking", false),
o9("Interfaces.Economy Icon", EpicAnchorsPlugin.getInstance().isServerVersionAtLeast(ServerVersion.V1_13) ? "SUNFLOWER" : "GOLD_INGOT"),
o10("Interfaces.XP Icon", EpicAnchorsPlugin.getInstance().isServerVersionAtLeast(ServerVersion.V1_13) ? "EXPERIENCE_BOTTLE" : "EXP_BOTTLE"),
o9("Interfaces.Economy Icon", EpicAnchors.getInstance().isServerVersionAtLeast(ServerVersion.V1_13) ? "SUNFLOWER" : "GOLD_INGOT"),
o10("Interfaces.XP Icon", EpicAnchors.getInstance().isServerVersionAtLeast(ServerVersion.V1_13) ? "EXPERIENCE_BOTTLE" : "EXP_BOTTLE"),
o11("Interfaces.Glass Type 1", 7),
o12("Interfaces.Glass Type 2", 11),
o13("Interfaces.Glass Type 3", 3),
@ -198,23 +198,23 @@ public class SettingsManager implements Listener {
}
public List<String> getStringList() {
return EpicAnchorsPlugin.getInstance().getConfig().getStringList(setting);
return EpicAnchors.getInstance().getConfig().getStringList(setting);
}
public boolean getBoolean() {
return EpicAnchorsPlugin.getInstance().getConfig().getBoolean(setting);
return EpicAnchors.getInstance().getConfig().getBoolean(setting);
}
public int getInt() {
return EpicAnchorsPlugin.getInstance().getConfig().getInt(setting);
return EpicAnchors.getInstance().getConfig().getInt(setting);
}
public String getString() {
return EpicAnchorsPlugin.getInstance().getConfig().getString(setting);
return EpicAnchors.getInstance().getConfig().getString(setting);
}
public char getChar() {
return EpicAnchorsPlugin.getInstance().getConfig().getString(setting).charAt(0);
return EpicAnchors.getInstance().getConfig().getString(setting).charAt(0);
}

View File

@ -1,6 +1,6 @@
package com.songoda.epicanchors.utils.updateModules;
import com.songoda.epicanchors.EpicAnchorsPlugin;
import com.songoda.epicanchors.EpicAnchors;
import com.songoda.update.Module;
import com.songoda.update.Plugin;
import org.json.simple.JSONArray;
@ -22,7 +22,7 @@ public class LocaleModule implements Module {
if (file.get("type").equals("locale")) {
InputStream in = new URL((String) file.get("link")).openStream();
EpicAnchorsPlugin.getInstance().getLocale().saveDefaultLocale(in, (String) file.get("name"));
EpicAnchors.getInstance().getLocale().saveDefaultLocale(in, (String) file.get("name"));
}
}
} catch (IOException e) {