mirror of
https://github.com/BentoBoxWorld/BentoBox.git
synced 2024-11-28 13:45:14 +01:00
Removed the current Placeholders API (it is unused)
This commit is contained in:
parent
5740ad7e0c
commit
7b3b1303b4
@ -1,6 +1,5 @@
|
|||||||
package world.bentobox.bentobox;
|
package world.bentobox.bentobox;
|
||||||
|
|
||||||
import org.bstats.bukkit.Metrics;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.plugin.PluginManager;
|
import org.bukkit.plugin.PluginManager;
|
||||||
@ -9,10 +8,8 @@ import org.bukkit.plugin.java.JavaPlugin;
|
|||||||
import world.bentobox.bentobox.api.configuration.Config;
|
import world.bentobox.bentobox.api.configuration.Config;
|
||||||
import world.bentobox.bentobox.api.configuration.WorldSettings;
|
import world.bentobox.bentobox.api.configuration.WorldSettings;
|
||||||
import world.bentobox.bentobox.api.events.BentoBoxReadyEvent;
|
import world.bentobox.bentobox.api.events.BentoBoxReadyEvent;
|
||||||
import world.bentobox.bentobox.api.placeholders.PlaceholderHandler;
|
|
||||||
import world.bentobox.bentobox.api.user.Notifier;
|
import world.bentobox.bentobox.api.user.Notifier;
|
||||||
import world.bentobox.bentobox.commands.BentoBoxCommand;
|
import world.bentobox.bentobox.commands.BentoBoxCommand;
|
||||||
import world.bentobox.bentobox.database.DatabaseSetup;
|
|
||||||
import world.bentobox.bentobox.listeners.BannedVisitorCommands;
|
import world.bentobox.bentobox.listeners.BannedVisitorCommands;
|
||||||
import world.bentobox.bentobox.listeners.BlockEndDragon;
|
import world.bentobox.bentobox.listeners.BlockEndDragon;
|
||||||
import world.bentobox.bentobox.listeners.JoinLeaveListener;
|
import world.bentobox.bentobox.listeners.JoinLeaveListener;
|
||||||
@ -109,7 +106,6 @@ public class BentoBox extends JavaPlugin {
|
|||||||
|
|
||||||
// Locales manager must be loaded before addons
|
// Locales manager must be loaded before addons
|
||||||
localesManager = new LocalesManager(instance);
|
localesManager = new LocalesManager(instance);
|
||||||
PlaceholderHandler.register(instance);
|
|
||||||
|
|
||||||
// Load addons. Addons may load worlds, so they must go before islands are loaded.
|
// Load addons. Addons may load worlds, so they must go before islands are loaded.
|
||||||
addonsManager = new AddonsManager(instance);
|
addonsManager = new AddonsManager(instance);
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
package world.bentobox.bentobox.api.placeholders;
|
|
||||||
|
|
||||||
import world.bentobox.bentobox.api.user.User;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author Poslovitch
|
|
||||||
*/
|
|
||||||
public class Placeholder {
|
|
||||||
|
|
||||||
private String identifier;
|
|
||||||
private PlaceholderRequest request;
|
|
||||||
|
|
||||||
Placeholder(String identifier, PlaceholderRequest request) {
|
|
||||||
this.identifier = identifier;
|
|
||||||
this.request = request;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getIdentifier() {
|
|
||||||
return this.identifier;
|
|
||||||
}
|
|
||||||
|
|
||||||
public PlaceholderRequest getRequest() {
|
|
||||||
return request;
|
|
||||||
}
|
|
||||||
|
|
||||||
public interface PlaceholderRequest {
|
|
||||||
String request(User user);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,39 +0,0 @@
|
|||||||
package world.bentobox.bentobox.api.placeholders;
|
|
||||||
|
|
||||||
import world.bentobox.bentobox.BentoBox;
|
|
||||||
import world.bentobox.bentobox.api.user.User;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Simple interface for every Placeholder API.
|
|
||||||
*
|
|
||||||
* @author Poslovitch
|
|
||||||
*/
|
|
||||||
public interface PlaceholderAPIInterface {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the name of the Placeholder API
|
|
||||||
* @return name of the placeholder plugin
|
|
||||||
*/
|
|
||||||
String getName();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Registers the placeholder API
|
|
||||||
* @param plugin - plugin object
|
|
||||||
* @return true if successfully registered
|
|
||||||
*/
|
|
||||||
boolean register(BentoBox plugin);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unregisters the placeholder API
|
|
||||||
* @param plugin - plugin object
|
|
||||||
*/
|
|
||||||
void unregister(BentoBox plugin);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Replace placeholders in the message according to the receiver
|
|
||||||
* @param receiver - user who will receive the message
|
|
||||||
* @param message - message
|
|
||||||
* @return updated message
|
|
||||||
*/
|
|
||||||
String replacePlaceholders(User receiver, String message);
|
|
||||||
}
|
|
@ -1,26 +0,0 @@
|
|||||||
package world.bentobox.bentobox.api.placeholders;
|
|
||||||
|
|
||||||
public class PlaceholderBuilder {
|
|
||||||
|
|
||||||
private String identifier;
|
|
||||||
private Placeholder.PlaceholderRequest value;
|
|
||||||
|
|
||||||
public PlaceholderBuilder identifier(String identifier) {
|
|
||||||
this.identifier = identifier;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The value this placeholder should take
|
|
||||||
* @param value - placeholder request value
|
|
||||||
* @return PlaceholderBuilder object
|
|
||||||
*/
|
|
||||||
public PlaceholderBuilder value(Placeholder.PlaceholderRequest value) {
|
|
||||||
this.value = value;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Placeholder build() {
|
|
||||||
return new Placeholder(identifier, value);
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,98 +0,0 @@
|
|||||||
package world.bentobox.bentobox.api.placeholders;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import world.bentobox.bentobox.BentoBox;
|
|
||||||
import world.bentobox.bentobox.api.user.User;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Handles hooks with other Placeholder APIs.
|
|
||||||
*
|
|
||||||
* @author Poslovitch, Tastybento
|
|
||||||
*/
|
|
||||||
public class PlaceholderHandler {
|
|
||||||
private static final String PACKAGE = "world.bentobox.bentobox.api.placeholders.hooks.";
|
|
||||||
|
|
||||||
// This class should never be instantiated (all methods are static)
|
|
||||||
private PlaceholderHandler() {}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* List of API classes in the package specified above (except the Internal one)
|
|
||||||
*/
|
|
||||||
private static final String[] HOOKS = {
|
|
||||||
//TODO
|
|
||||||
};
|
|
||||||
|
|
||||||
private static List<PlaceholderAPIInterface> apis = new ArrayList<>();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Register placeholders and hooks
|
|
||||||
* @param plugin - plugin object
|
|
||||||
*/
|
|
||||||
public static void register(BentoBox plugin){
|
|
||||||
|
|
||||||
// Load Internal Placeholder API
|
|
||||||
try{
|
|
||||||
Class<?> clazz = Class.forName(PACKAGE + "InternalPlaceholderImpl");
|
|
||||||
PlaceholderAPIInterface internal = (PlaceholderAPIInterface)clazz.newInstance();
|
|
||||||
apis.add(internal);
|
|
||||||
} catch (Exception e){
|
|
||||||
// Should never happen.
|
|
||||||
plugin.logError("Failed to load default placeholder API");
|
|
||||||
}
|
|
||||||
|
|
||||||
// Load hooks
|
|
||||||
for(String hook : HOOKS){
|
|
||||||
if(plugin.getServer().getPluginManager().isPluginEnabled(hook)){
|
|
||||||
try{
|
|
||||||
Class<?> clazz = Class.forName(PACKAGE + hook + "PlaceholderImpl");
|
|
||||||
PlaceholderAPIInterface api = (PlaceholderAPIInterface)clazz.newInstance();
|
|
||||||
if(api.register(plugin)){
|
|
||||||
plugin.log("Hooked placeholders into " + hook); // since Java 8, we can use Supplier , which will be evaluated lazily
|
|
||||||
apis.add(api);
|
|
||||||
} else {
|
|
||||||
plugin.log("Failed to hook placeholders into " + hook);
|
|
||||||
}
|
|
||||||
} catch (Exception e){
|
|
||||||
plugin.log("Failed to hook placeholders into " + hook);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Unregister placeholder hooks
|
|
||||||
* @param plugin - plugin object
|
|
||||||
*/
|
|
||||||
public static void unregister(BentoBox plugin){
|
|
||||||
Iterator<PlaceholderAPIInterface> it = apis.iterator();
|
|
||||||
while (it.hasNext()) {
|
|
||||||
PlaceholderAPIInterface api = it.next();
|
|
||||||
api.unregister(plugin);
|
|
||||||
it.remove();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Replace placeholders in the message according to the receiver
|
|
||||||
* @param receiver - user to receive the message
|
|
||||||
* @param message - message
|
|
||||||
* @return updated message
|
|
||||||
*/
|
|
||||||
public static String replacePlaceholders(User receiver, String message){
|
|
||||||
for(PlaceholderAPIInterface api : apis){
|
|
||||||
message = api.replacePlaceholders(receiver, message);
|
|
||||||
}
|
|
||||||
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return true if APIs are registered (including Internal), otherwise false
|
|
||||||
*/
|
|
||||||
public static boolean hasHooks(){
|
|
||||||
return apis != null;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,45 +0,0 @@
|
|||||||
package world.bentobox.bentobox.api.placeholders.hooks;
|
|
||||||
|
|
||||||
import world.bentobox.bentobox.BentoBox;
|
|
||||||
import world.bentobox.bentobox.api.placeholders.Placeholder;
|
|
||||||
import world.bentobox.bentobox.api.placeholders.PlaceholderAPIInterface;
|
|
||||||
import world.bentobox.bentobox.api.user.User;
|
|
||||||
import world.bentobox.bentobox.lists.Placeholders;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Built-in placeholder API
|
|
||||||
*
|
|
||||||
* @author Poslovitch
|
|
||||||
*/
|
|
||||||
public class InternalPlaceholderImpl implements PlaceholderAPIInterface {
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return "Internal";
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean register(BentoBox plugin) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void unregister(BentoBox plugin) {
|
|
||||||
// Useless : it would disable the placeholders.
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String replacePlaceholders(User receiver, String message) {
|
|
||||||
if(message == null || message.isEmpty()) {
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
|
|
||||||
for(Placeholder placeholder : Placeholders.values()){
|
|
||||||
String identifier = "%" + placeholder.getIdentifier() + "%";
|
|
||||||
message = message.replaceAll(identifier, placeholder.getRequest().request(receiver));
|
|
||||||
}
|
|
||||||
|
|
||||||
return message;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -18,7 +18,6 @@ import org.bukkit.inventory.PlayerInventory;
|
|||||||
import org.bukkit.permissions.PermissionAttachmentInfo;
|
import org.bukkit.permissions.PermissionAttachmentInfo;
|
||||||
|
|
||||||
import world.bentobox.bentobox.BentoBox;
|
import world.bentobox.bentobox.BentoBox;
|
||||||
import world.bentobox.bentobox.api.placeholders.PlaceholderHandler;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* BSB's user object. Wraps Player.
|
* BSB's user object. Wraps Player.
|
||||||
@ -210,9 +209,6 @@ public class User {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Replace placeholders
|
|
||||||
translation = PlaceholderHandler.replacePlaceholders(this, translation);
|
|
||||||
|
|
||||||
return ChatColor.translateAlternateColorCodes('&', translation);
|
return ChatColor.translateAlternateColorCodes('&', translation);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,33 +0,0 @@
|
|||||||
package world.bentobox.bentobox.lists;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.List;
|
|
||||||
import java.util.stream.Collectors;
|
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
|
|
||||||
import world.bentobox.bentobox.BentoBox;
|
|
||||||
import world.bentobox.bentobox.api.placeholders.Placeholder;
|
|
||||||
import world.bentobox.bentobox.api.placeholders.PlaceholderBuilder;
|
|
||||||
|
|
||||||
public class Placeholders {
|
|
||||||
|
|
||||||
// Utility classes, which are collections of static members, are not meant to be instantiated.
|
|
||||||
private Placeholders() {}
|
|
||||||
|
|
||||||
public static final Placeholder PLUGIN_NAME = new PlaceholderBuilder().identifier("bsb_plugin_name").value(user -> BentoBox.getInstance().getDescription().getName()).build();
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @return List of all the flags in this class
|
|
||||||
*/
|
|
||||||
public static List<Placeholder> values() {
|
|
||||||
return Arrays.stream(Placeholders.class.getFields()).map(field -> {
|
|
||||||
try {
|
|
||||||
return (Placeholder)field.get(null);
|
|
||||||
} catch (IllegalArgumentException | IllegalAccessException e) {
|
|
||||||
Bukkit.getLogger().severe("Could not get Placeholders values " + e.getMessage());
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}).collect(Collectors.toList());
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user