Config'de renk

mrbobaking

Kızıltaş Madencisi
Mesajlar
660
En iyi cevaplar
0
Beğeniler
283
Puanları
1,080
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
 


Centeglassered

Kızıltaş Madencisi
Mesajlar
579
En iyi cevaplar
0
Beğeniler
268
Puanları
900
Ruh hali
msg = msg.replace("§", "\u00A7");
yerine
msg = msg.replace("§", "&");
kullan bir.
 

IRFN

Sonoyuncu.Network
Mesajlar
1,043
En iyi cevaplar
0
Beğeniler
1,314
Puanları
3,230
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
Mesajlar
2,151
En iyi cevaplar
1
Beğeniler
506
Puanları
1,250
Configde "&" işareti için kesinlikle replace etmeyin, şu metodku kullanın:
Kod:
(ChatColor.translateAlternateColorCodes('&', config.getString("configyeri")));
 

mrbobaking

Kızıltaş Madencisi
Mesajlar
660
En iyi cevaplar
0
Beğeniler
283
Puanları
1,080
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.
http://isvecceogrenme.blogspot.com.tr/2013/08/isveccedeki-harfler-isvec-alfabesi.html
en alttaki harf
 

Procon1337

Kömür Madencisi
Mesajlar
122
En iyi cevaplar
0
Beğeniler
27
Puanları
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