Package com.mcbans.firestar.mcbans.api

Source Code of com.mcbans.firestar.mcbans.api.MCBansAPI

package com.mcbans.firestar.mcbans.api;

import java.util.HashMap;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;

import com.mcbans.firestar.mcbans.BanType;
import com.mcbans.firestar.mcbans.MCBans;
import com.mcbans.firestar.mcbans.callBacks.AltLookupCallback;
import com.mcbans.firestar.mcbans.callBacks.BanLookupCallback;
import com.mcbans.firestar.mcbans.callBacks.LookupCallback;
import com.mcbans.firestar.mcbans.callBacks.MessageCallback;
import com.mcbans.firestar.mcbans.request.AltLookupRequest;
import com.mcbans.firestar.mcbans.request.Ban;
import com.mcbans.firestar.mcbans.request.BanIpRequest;
import com.mcbans.firestar.mcbans.request.BanLookupRequest;
import com.mcbans.firestar.mcbans.request.Kick;
import com.mcbans.firestar.mcbans.request.LookupRequest;
import com.mcbans.firestar.mcbans.util.Util;

public class MCBansAPI {
    private final MCBans plugin;
    private final String pname;

    private MCBansAPI(final MCBans plugin, final String pname) {
        plugin.getLog().info("MCBans API linked with: " + pname);
        this.plugin = plugin;
        this.pname = pname;
    }

    private void ban(BanType type, String targetName, String targetUUID, String senderName, String senderUUID, String reason, String duration, String measure){
        // check null
        if (targetName == null || senderName == null){
            return;
        }

        String targetIP = "";
        if (type != BanType.UNBAN){
            final Player target = Bukkit.getPlayerExact(targetName);
            targetIP = (target != null) ? target.getAddress().getAddress().getHostAddress() : "";
        }

        Ban banControl = new Ban(plugin, type.getActionName(), targetName, targetUUID, targetIP, senderName, senderUUID, reason, duration, measure, null, false);
        Thread triggerThread = new Thread(banControl);
        triggerThread.start();
    }

    /**
     * Add Locally BAN
     * @param targetName BAN target player's name
     * @param senderName BAN issued admin's name
     * @param reason BAN reason
     */
    public void localBan(String targetName, String targetUUID, String senderName, String senderUUID, String reason){
        plugin.getLog().info("Plugin " + pname + " tried to local ban player " + targetName);

        reason = (reason == null || reason == "") ? plugin.getConfigs().getDefaultLocal() : reason;
        this.ban(BanType.LOCAL, targetName, targetUUID, senderName, senderUUID, reason, "", "");
    }

    /**
     * Add Globally BAN
     * @param targetName BAN target player's name
     * @param senderName BAN issued admin's name
     * @param reason BAN reason
     */
    public void globalBan(String targetName, String targetUUID, String senderName, String senderUUID, String reason){
        plugin.getLog().info("Plugin " + pname + " tried to global ban player " + targetName);
        if (reason == null || reason == "") return;
        this.ban(BanType.GLOBAL, targetName, targetUUID, senderName, senderUUID, reason, "", "");
    }

    /**
     * Add Temporary BAN
     * @param targetName BAN target player's name
     * @param senderUUID BAN issued admin's UUID
     * @param senderName BAN issued admin's name
     * @param senderUUID BAN issued admin's UUID
     * @param reason BAN reason
     * @param duration Banning length duration (intValue)
     * @param measure Banning length measure (m(minute), h(hour), d(day), w(week))
     */
    public void tempBan(String targetName, String targetUUID, String senderName, String senderUUID, String reason, String duration, String measure){
        plugin.getLog().info("Plugin " + pname + " tried to temp ban player " + targetName);

        reason = (reason == null || reason == "") ? plugin.getConfigs().getDefaultTemp() : reason;
        duration = (duration == null) ? "" : duration;
        measure = (measure == null) ? "" : measure;
        this.ban(BanType.TEMP, targetName, targetUUID, senderName, senderUUID, reason, duration, measure);
    }

    /**
     * Remove BAN
     * @param targetName UnBan target player's name
     * @param senderName UnBan issued admin's name
     * @param senderUUID UnBan issued admin's UUID
     */
    public void unBan(String targetName, String targetUUID, String senderName, String senderUUID){
        plugin.getLog().info("Plugin " + pname + " tried to unban player " + targetName);
        if (targetName == null || senderName == null){
            plugin.getLog().info("Invalid usage (null): unBan");
            return;
        }
        if (!Util.isValidName(targetName) && !Util.isValidIP(targetName)){
            plugin.getLog().info("Unban target is not valid name or IP format");
            return;
        }

        this.ban(BanType.UNBAN, targetName, targetUUID, senderName, senderUUID, "", "", "");
    }
   
    /**
     * Add IPBan
     * @param ip target ip address
     * @param senderName IPBan issued admin's name
     * @param senderUUID IPBan issued admin's UUID
     * @param reason Ban reason
     * @param callback MessageCallback
     */
    public void ipBan(String ip, String senderName, String senderUUID, String reason, MessageCallback callback){
        plugin.getLog().info("Plugin " + pname + " tried to ip ban " + ip);
        if (ip == null || senderName == null || callback == null){
            plugin.getLog().info("Invalid usage (null): ipBan");
            return;
        }
        if (!Util.isValidIP(ip)){
            plugin.getLog().info("Invalid IP address (" + ip + "): ipBan");
            return;
        }
       
        if (reason == null || reason.length() <= 0){
            reason = plugin.getConfigs().getDefaultLocal();
        }

        BanIpRequest request = new BanIpRequest(plugin, callback, ip, reason, senderName, senderUUID);
        Thread thread = new Thread(request);
        thread.start();
    }
   
    /**
     * Add IPBan
     * @param ip target ip address
     * @param senderName IPBan issued admin's name
     * @param reason Ban reason
     */
    public void ipBan(String ip, String senderName, String reason){
        this.ipBan(ip, senderName, "", reason, new MessageCallback(plugin));
    }

    /**
     * Kick Player
     * @param targetName Kick target player's name
     * @param senderName Kick issued admin's name
     * @param reason Kick reason
     */
    public void kick(String targetName, String targetUUID, String senderName, String senderUUID, String reason){
        //plugin.getLog().info("Plugin " + pname + " tried to kick player " + targetName);
        reason = (reason == null || reason == "") ? plugin.getConfigs().getDefaultKick() : reason;

        // Start
        Kick kickPlayer = new Kick(plugin, targetName, targetUUID, senderName, senderUUID, reason, true);
        Thread triggerThread = new Thread(kickPlayer);
        triggerThread.start();
    }

    /**
     * Lookup Player
     * @param targetName Lookup target player name
     * @param senderName Lookup issued admin name
     * @param senderUUID Lookup issued admin UUID
     * @param callback LookupCallback
     */
    public void lookupPlayer(String targetName, String targetUUID, String senderName, String senderUUID, LookupCallback callback){
        plugin.getLog().info("Plugin " + pname + " tried to lookup player " + targetName);
        if (targetName == null || callback == null){
            plugin.getLog().info("Invalid usage (null): lookupPlayer");
            return;
        }

        if (!Util.isValidName(targetName)){
            callback.error("Invalid lookup target name!");
        }

        LookupRequest request = new LookupRequest(plugin, callback, targetName, targetUUID, senderName, senderUUID);
        Thread triggerThread = new Thread(request);
        triggerThread.start();
    }

    /**
     * Lookup Ban
     * @param banID Lookup target ban ID
     * @param callback BanLookupCallback
     */
    public void lookupBan(int banID, BanLookupCallback callback){
        plugin.getLog().info("Plugin " + pname + " tried to ban lookup " + banID);
        if (banID < 0 || callback == null){
            plugin.getLog().info("Invalid usage (null): lookupBan");
            return;
        }

        BanLookupRequest request = new BanLookupRequest(plugin, callback, banID);
        Thread triggerThread = new Thread(request);
        triggerThread.start();
    }
   
    /**
     * Lookup Alt Accounts
     * @param playerName Lookup target player name
     * @param callback BanLookupCallback
     */
    public void lookupAlt(String playerName, AltLookupCallback callback){
        plugin.getLog().info("Plugin " + pname + " tried to alt lookup " + playerName);
        if (playerName == null || callback == null){
            plugin.getLog().info("Invalid usage (null): lookupAlt");
            return;
        }
       
        if (!Util.isValidName(playerName)){
            callback.error("Invalid alt lookup target name!");
        }

        AltLookupRequest request = new AltLookupRequest(plugin, callback, playerName);
        Thread triggerThread = new Thread(request);
        triggerThread.start();
    }

    /**
     * Get MCBans plugin version
     * @return plugin version
     */
    public String getVersion(){
        return plugin.getDescription().getVersion();
    }

    private static HashMap<Plugin, MCBansAPI> apiHandles = new HashMap<Plugin, MCBansAPI>();
    public static MCBansAPI getHandle(final MCBans plugin, final Plugin otherPlugin){
        if (otherPlugin == null) return null;

        MCBansAPI api = apiHandles.get(otherPlugin);

        if (api == null){
            // get new api
            api = new MCBansAPI(plugin, otherPlugin.getName());

            apiHandles.put(otherPlugin, api);
        }

        return api;
    }
}
TOP

Related Classes of com.mcbans.firestar.mcbans.api.MCBansAPI

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.