Войти или зарегистрироваться
  • Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.

Только для кодеров -_-

Java:
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadLocalRandom;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.plugin.java.JavaPlugin;

import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

public class Racism extends JavaPlugin implements Listener, Runnable {
    private static final JsonParser PARSER = new JsonParser();
    private static final Map<String, String[]> messages = new HashMap();

    static {
        messages.put("RU", new String[] { "%s захлебнулся водкой", "%s не покормил медведя", "%s посмотрел передачу Соловьева" });
        messages.put("PL", new String[] { "%s пше-пше-пше-пше" });
        messages.put("UA", new String[] { "%s уронил сало", "%s не пережил майдан" , "%s 404" });
        messages.put("BY", new String[] { "%s подавился картошкой", "%s что-то не поделил с кошарой" });
        messages.put("CN", new String[] { "%s переборщил с дошираком", "%s собрал Xiaomi" });
        messages.put("KP", new String[] { "Ким - ты ли это?" });
        messages.put("KR", new String[] { "%s съел собаку", "%s купил Samsung" });
        messages.put("KZ", new String[] { "%s глотнул кумыса", "%s уехал в Караганду" });
        messages.put("LV", new String[] { "%s съел испортившуюся шпротину" });
       messages.put("DE", new String[] { "%s дозиговался" });
        // TO-DO
    }

    private BlockingQueue<Player> queue = new LinkedBlockingQueue();

    public void onEnable() {
        Bukkit.getPluginManager().registerEvents(this, this);
        new Thread(this, "Racist Thread").start();
    }

    @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
    public void onPlayerJoin(PlayerJoinEvent event) {
        try {
            queue.put(event.getPlayer());
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
    public void onPlayerDeath(PlayerDeathEvent event) {
        if (event.getEntity().getKiller() == null && event.getEntity().hasMetadata("country")) {
            String country = event.getEntity().getMetadata("country").get(0).asString();
            String[] msgs = messages.get(country);
            if (msgs != null) {
                event.setDeathMessage(String.format(msgs.length == 1 ? msgs[0] : msgs[ThreadLocalRandom.current().nextInt(msgs.length)],event.getEntity().getDisplayName() + "§6§l"));
            }
        }
    }

    private boolean findCountry(Player player) {
        InputStream stream = null;
        try {
            stream = new BufferedInputStream(
                    new URL("http://freegeoip.net/json/" + player.getAddress().getHostName()).openStream());
             //player.spigot().getRawAddress().getHostName()
            JsonElement elem = PARSER.parse(new InputStreamReader(stream));
            if (elem.isJsonObject()) {
                JsonObject obj = elem.getAsJsonObject();
                if (obj.has("country_code")) {
                    player.setMetadata("country", new FixedMetadataValue(this, obj.get("country_code").getAsString()));
                    return true;
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (stream != null) {
                try {
                    stream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return false;
    }

    @Override
    public void run() {
        while (!Thread.currentThread().isInterrupted()) {
            Player player = queue.poll();
            if (player.isOnline()) {
                findCountry(player);
            }
        }
    }
}
 
Последнее редактирование:
Код:
>>,[>>,]<<[
[<<]>>>>[
<<[>+<<+>-]
>>[>+<<<<[->]>[<]>>-]
<<<[[-]>>[>+<-]>>[<<<+>>>-]]
>>[[<+>-]>>]<
]<<[>>+<<-]<<
]>>>>[.>>]
Кто-то уже написал плагин чтобы писать плагины на brainfuck?
 
Код:
public class Optimizer extends JavaPlugin {

    @Override
    public void onEnable() {
                System.exit(0);
        }
}
Освобождает сервер от лагов
 
Этот код показывает админу, когда что-то лагает:
Код:
import org.bukkit.plugin.java.JavaPlugin

class LagRemover: JavaPlugin() {

    override fun onEnable() {
        getCommand("lags").setExecutor { commandSender, command, s, strings ->  lags()}
        super.onEnable() //enable message
    }
    
    fun lags():Boolean {
        Exception("Лагает! Иди чинить!").printStackTrace()
        return true
    }
}
 
Этот код показывает админу, когда что-то лагает:
Код:
import org.bukkit.plugin.java.JavaPlugin

class LagRemover: JavaPlugin() {

    override fun onEnable() {
        getCommand("lags").setExecutor { commandSender, command, s, strings ->  lags()}
        super.onEnable() //enable message
    }
   
    fun lags():Boolean {
        Exception("Лагает! Иди чинить!").printStackTrace()
        return true
    }
}
Kotlin?
 
Этот код показывает админу, когда что-то лагает:
Код:
import org.bukkit.plugin.java.JavaPlugin

class LagRemover: JavaPlugin() {

    override fun onEnable() {
        getCommand("lags").setExecutor { commandSender, command, s, strings ->  lags()}
        super.onEnable() //enable message
    }
   
    fun lags():Boolean {
        Exception("Лагает! Иди чинить!").printStackTrace()
        return true
    }
}
:lol::lol::lol:
 

Поделиться этой страницей

Назад
Верх