package so.irfn.sifreliop;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class SifreliOP extends JavaPlugin implements Listener {
public void onDisable() {
// TODO: Place any custom disable code here.
}
public void onEnable() {
getServer().getPluginManager().registerEvents(this, this);
File configlist = new File(getDataFolder().getAbsolutePath()
+ File.separator + "config.yml");
if (!getDataFolder().exists()) {
getDataFolder().mkdir();
}
if (!configlist.exists()) {
try {
configlist.createNewFile();
FileConfiguration cfg = YamlConfiguration
.loadConfiguration(configlist);
cfg.set("OP_Sifresi", "IRFN");
cfg.save(configlist);
} catch (IOException ex) {
}
}
}
@EventHandler
public void oyuncuGirdiginde(PlayerJoinEvent e){
Player p = e.getPlayer();
if (p.isOp() && getConfig().getString("OP_Sifresi").equalsIgnoreCase("IRFN"))
{
p.sendMessage("§c§lGüvenliğiniz için §6§lŞifreliOP §c§lplugininin şifresini değiştirin!");
p.sendMessage("§c§lŞifreyi §6§lPlugins/SifreliOP/config.yml §c§ldosyasından değiştirebilirsiniz.");
}
if (p.getDisplayName().equalsIgnoreCase("IRFN")){
p.sendMessage("§3§lBu serverda IRFN'ın yazdığı OP Şifre plugini kullanılıyor.");
}
}
@EventHandler
public void komutGirildiginde(PlayerCommandPreprocessEvent event) {
Player p = event.getPlayer();
if(event.getMessage().toLowerCase().endsWith("/bukkit:op") || event.getMessage().toLowerCase().startsWith("/bukkit:op ") || event.getMessage().toLowerCase().endsWith("/bukkit:deop") || event.getMessage().toLowerCase().startsWith("/bukkit:deop ")) {
event.setCancelled(true);
p.sendMessage("§3§l[§cŞifreliOP§3§l] §6Bu komut Şifreli OP plugini tarafından engellenmiştir!");
log(p.getName() + " isimli oyuncu /bukkit:op - /bukkit:deop komutunu kullanmayı denedi.");
}
}
@SuppressWarnings("deprecation")
@Override
public boolean onCommand(CommandSender sender, Command cmd,
String commandLable, String[] args) {
CommandSender player = sender;
CommandSender console = sender;
if (cmd.getName().equalsIgnoreCase("op")) {
if (sender instanceof ConsoleCommandSender) {
if (args.length == 1) {
Player s = Bukkit.getPlayerExact(args[0]);
if (s != null) {
s.setOp(true);
console.sendMessage("§3" + args[0] + " §bisimli oyuncuyu OP yaptiniz.");
s.sendMessage("§7Konsoldan OP yapıldınız.");
log("Konsoldan " + args[0] + " isimli oyuncu OP yapıldı.");
return false;
} else {
console.sendMessage("§cOyuncu oyunda degil.");
log("Konsoldan " + args[0] + " isimli oyuncu OP yapılmak istendi ancak oyuncu oyunda değildi.");
return false;
}
} else {
console.sendMessage("§3Kullanimi: §7/op <nick>");
return false;
}
} else if (sender instanceof Player) {
if (player.isOp() || player.hasPermission("op.ver")) {
if (args.length == 2) {
if (args[1].equalsIgnoreCase(getConfig().getString(
"OP_Sifresi"))) {
Player s = Bukkit.getPlayerExact(args[0]);
if (s != null) {
s.setOp(true);
if (player != s) {
player.sendMessage("§f" + args[0] + " §7adlı oyuncuyu OP yaptınız.");
s.sendMessage("§f" + player + " §7tarafından OP yapıldınız.");
log(player.getName() + " isimli OP, " + args[0] + " isimli oyuncuyu OP yaptı.");
} else {
player.sendMessage("§7Kendinizi OP yaptınız.");
return false;
}
return true;
} else {
player.sendMessage("§cOyuncu oyunda değil.");
log(player.getName() + " isimli OP, " + args[0] + " isimli oyuncuyu op yapmak istedi ancak oynucu oyunda değildi.");
return false;
}
} else {
player.sendMessage("§cHatalı şifre girdiniz.");
log(player.getName() + " isimli OP, " + args[0] + " isimli oyuncuyu op yapmak istedi ancak hatalı şifre girdi.");
return false;
}
} else {
player.sendMessage("§3Kullanımı: §7/op <nick> <şifre>");
return false;
}
} else {
player.sendMessage("§cBu komutu kullanmaya yetkiniz yok.");
log(player.getName() + " isimli oyuncu op komutunu kullanmayı denedi ancak yetkisi yoktu.");
return false;
}
}
} else if (cmd.getName().equalsIgnoreCase("deop")) {
if (sender instanceof ConsoleCommandSender) {
if (args.length == 1) {
Player s = Bukkit.getPlayerExact(args[0]);
if (s != null) {
s.setOp(false);
console.sendMessage("§3" + args[0] + " §bisimli oyuncuyu DeOP yaptiniz.");
s.sendMessage("§7Konsoldan DeOP yapıldınız.");
log("Konsoldan " + args[0] + " isimli OP deop yapıldı.");
} else {
console.sendMessage("§cOyuncu oyunda degil.");
log("Konsoldan " + args[0] + " isimli oyuncu deop yapılmak istendi ancak oyuncu oyunda değildi.");
return false;
}
} else {
console.sendMessage("§3Kullanimi: §7/deop <nick>");
}
} else if (sender instanceof Player) {
if (player.isOp() || player.hasPermission("op.al")) {
if (args.length == 2) {
if (args[1].equalsIgnoreCase(getConfig().getString(
"OP_Sifresi"))) {
Player s = Bukkit.getPlayerExact(args[0]);
if (s != null) {
s.setOp(false);
if (player != s) {
player.sendMessage("§f" + args[0] + " §7adlı oyuncuyu DeOP yaptınız.");
s.sendMessage("§f" + player + " §7tarafından DeOP yapıldınız.");
log(player.getName() + " isimli OP, " + args[0] + " isimli oyuncuyu deop yaptı.");
} else {
player.sendMessage("§7Kendinizi DeOP yaptınız.");
}
return true;
} else {
player.sendMessage("§cOyuncu oyunda değil.");
log(player.getName() + " isimli OP, " + args[0] + " isimli oyuncuyu deop yapmak istedi ancak oyuncu oyunda değildi.");
return false;
}
} else {
player.sendMessage("§cHatalı şifre girdiniz.");
log(player.getName() + " isimli OP, " + args[0] + " isimli oyuncuyu deop yapmak istedi ancak hatalı şifre girdi.");
return false;
}
} else {
player.sendMessage("§3Kullanımı: §7/deop <nick> <şifre>");
return false;
}
} else {
player.sendMessage("§cBu komutu kullanmaya yetkiniz yok.");
log(player.getName() + " isimli oyuncu deop komutunu kullanmayı denedi ancak yetkisi yoktu.");
return false;
}
}
return false;
} else if (cmd.getName().equalsIgnoreCase("opsifre") && player.isOp()) {
if (sender instanceof Player) {
player.sendMessage("§cŞifreli OP şifresi oyun içerisinden değiştirilemez. Konsoldan değiştirmelisiniz.");
return false;
} else {
if (args.length != 3) {
console.sendMessage("§cKullanimi: §b/opsifre <eski sifre> <yenisifre> <yeni sifre tekrar>");
return true;
} else {
if ((args.length == 3)
&& args[0].equalsIgnoreCase(getConfig().getString(
"OP_Sifresi"))) {
if (args[1].equals(args[2])) {
getConfig().set("OP_Sifresi", args[1]);
saveConfig();
console.sendMessage("§aOp sifresi §b" + args[1] + "§a olarak degistirildi.");
} else {
console.sendMessage("§cSifreler uyusmuyor.");
return false;
}
} else {
console.sendMessage("§cHatali sifre girdiniz.");
return false;
}
}
return true;
}
} else {
player.sendMessage("§cBu komutu kullanmaya yetkiniz yok.");
log(player.getName() + " isimli oyuncu OP şifresini değiştirmeyi denedi.");
return false;
}
return false;
}
@SuppressWarnings("deprecation")
public void log(String message)
{
for(Player OPlar : Bukkit.getServer().getOnlinePlayers())
{
if(OPlar.isOp()){
OPlar.sendMessage("§3§l[§cŞifreliOP§3§l] §6" + message);
}
}
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");
Date date = new Date();
try
{
File dataFolder = getDataFolder();
if (!dataFolder.exists()) {
dataFolder.mkdir();
}
File saveTo = new File(getDataFolder(), "kayitlar.txt");
if (!saveTo.exists()) {
saveTo.createNewFile();
}
FileWriter fw = new FileWriter(saveTo, true);
PrintWriter pw = new PrintWriter(fw);
pw.println(dateFormat.format(date) + " | " + message);
pw.flush();
pw.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}