Config'de renk

mrbobaking

Kızıltaş Madencisi
En iyi cevaplar
0
Bir eklenti yazıyorum ama config'deki renk kodlarını eklentide renge dönüştüremiyorum. § bunu yazıp chatcolor veya java replace ile değiştirince yazının başında isveç'çe bir işaret çıkıyor:


Kod:
PHP:
package me.mrbobaking;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.HashMap;

import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.scheduler.BukkitScheduler;

public class Main extends JavaPlugin{
   
    Class<?> CPClass;
   
    String serverName  = Bukkit.getServer().getClass().getPackage().getName(),
             serverVersion = serverName.substring(serverName.lastIndexOf(".") + 1, serverName.length());
   
    public void onEnable() {
        int wait = getConfig().getInt("checkforping");
        wait = wait * 20;
        sheduler(wait);
        config();
    }
   
    public void sheduler(int wait){
        BukkitScheduler scheduler = getServer().getScheduler();
        scheduler.scheduleSyncRepeatingTask(this, new Runnable() {
            @Override
            public void run() {
                for(Player p : getServer().getOnlinePlayers()){
                    getServer().broadcastMessage(ChatColor.BLUE + "Checking for all players' ping");
                    HashMap<Player, Integer> pp = new HashMap<Player, Integer>();
                    pp.put(p, getPing(p));
                    if(!(p.hasPermission("ping.safe"))){
                        if(pp.get(p) == getConfig().getInt("maxping") || pp.get(p) > getConfig().getInt("maxping")){
                            String msg = getConfig().getString("kickmessage");
                            msg = msg.replace("§", "\u00A7");
                            p.kickPlayer(msg);
                            getServer().broadcastMessage(ChatColor.BLUE + "The player " + p.getName() + " kicked! Cause: High Ping");
                        }
                    }
                }
            }
        }, 0L, wait); //5 dk = 300 sn | 300 sn = 6000 tick
    }
   
    public void config(){
        this.getConfig().options().copyDefaults(true);
        this.saveDefaultConfig();
    }
   
    public int getPing(Player p) {
        try {
            CPClass = Class.forName("org.bukkit.craftbukkit." + serverVersion + ".entity.CraftPlayer");
            Object CraftPlayer = CPClass.cast(p);
            Method getHandle = CraftPlayer.getClass().getMethod("getHandle", new Class[0]);
            Object EntityPlayer = getHandle.invoke(CraftPlayer, new Object[0]);
            Field ping = EntityPlayer.getClass().getDeclaredField("ping");
            return ping.getInt(EntityPlayer);
        } catch (Exception e) {
                e.printStackTrace();
        }
        return 0;
    }
   
    public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
        if(cmd.getName().equalsIgnoreCase("ping")){
            if(sender instanceof Player){
                Player p = (Player) sender;
                if(p.hasPermission("ping.ping")){
                    String msg = getConfig().getString("pingcommandmessage");
                    msg = ChatColor.translateAlternateColorCodes('§', msg);
                    int ping = getPing(p);
                    msg = msg.replace("%ping%", Integer.toString(ping));
                    msg.replaceAll("Å", " ");
                    p.sendMessage(msg);
                }else{
                    p.sendMessage(ChatColor.DARK_RED + "You don't have permission for this!");
                }
            }else{
                sender.sendMessage(ChatColor.DARK_RED + "This command is only for players!");
            }
        }
        if(cmd.getName().equalsIgnoreCase("checkping")){
            if(sender instanceof Player){
                Player p = (Player) sender;
                if(p.hasPermission("ping.check")){
                    int wait = getConfig().getInt("checkforping");
                    wait = wait * 20;
                    sheduler(wait);
                }else{
                    String noperm = getConfig().getString("nopermission");
                    noperm = noperm.replace("§", "\u00A7");
                    noperm.replaceAll("Å", "");
                    p.sendMessage(noperm);
                }
            }else{
                int wait = getConfig().getInt("checkforping");
                wait = wait * 20;
                sheduler(wait);
                sender.sendMessage(ChatColor.BLUE + "Checked for all players' ping");
            }
        }
        return false;
    }
}

eklenti spigot'ta var. PingProtect

@KRHN @IRFN @Krumb069
 

IRFN

Sonoyuncu.Network
En iyi cevaplar
0
Ben hayatımda böyle sağlıksız kodlama görmedim. Hatayı ekran görüntüsüyle isterdim de plugini istediğin gibi yeniden düzenleyip derlemek çok daha kolay.
Eğer yapamıyorsan akşam bana istediğin Türkçe'leştirilmiş mesajları at, ben plugini ona göre derleyip veririm en kötü ihtimal. Ben halen İsveç'çe derken ne demek istediğini anlamıyorum çünkü. Ayrıca bu pluginde checkping komutunu kullanırsan 2. defa repeatingTask başlatır. Hatta komutu her kullandığında yeni bir task oluşturur, büyük sıkıntı. Plugini kullanıyorsan buna dikkat et.
 

Krumb069

Nether Yerlisi
En iyi cevaplar
1
Configde "&" işareti için kesinlikle replace etmeyin, şu metodku kullanın:
Kod:
(ChatColor.translateAlternateColorCodes('&', config.getString("configyeri")));
 

mrbobaking

Kızıltaş Madencisi
En iyi cevaplar
0
Configde "&" işareti için kesinlikle replace etmeyin, şu metodku kullanın:
Kod:
(ChatColor.translateAlternateColorCodes('&', config.getString("configyeri")));
denedim onu da. bir şey değişmiyor.[DOUBLEPOST=1439463492,1439463345][/DOUBLEPOST]
Ben hayatımda böyle sağlıksız kodlama görmedim. Hatayı ekran görüntüsüyle isterdim de plugini istediğin gibi yeniden düzenleyip derlemek çok daha kolay.
Eğer yapamıyorsan akşam bana istediğin Türkçe'leştirilmiş mesajları at, ben plugini ona göre derleyip veririm en kötü ihtimal. Ben halen İsveç'çe derken ne demek istediğini anlamıyorum çünkü. Ayrıca bu pluginde checkping komutunu kullanırsan 2. defa repeatingTask başlatır. Hatta komutu her kullandığında yeni bir task oluşturur, büyük sıkıntı. Plugini kullanıyorsan buna dikkat et.
Linki görebilmek için üye olmanız gerekiyor. Giriş yap veya üye ol.

en alttaki harf
 

Procon1337

Kömür Madencisi
En iyi cevaplar
0
Hayalimi yaşıyorsun <3
Hem bukkit hem minecraft hem de eclipse aynı anda çalışıyor <3
Ben bir plugin yazdığımda pcdeki her şeyi kapatıyorum :p
 
Üst