Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
worlds:
no-chat:
- world_nether
player-name-mask: '&6%player>%&e'
package me.fromgate.silentworlds;
import java.util.ArrayList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;
import org.bukkit.plugin.java.JavaPlugin;
public class SilentWorlds extends JavaPlugin implements Listener{
String playerMask;
List<String> worldsWithoutChat = new ArrayList<String>();
@Override
public void onEnable(){
loadCfg();
saveCfg();
}
private void loadCfg(){
playerMask = getConfig().getString("player-name-mask","&6%player>%&e");
worldsWithoutChat = getConfig().getStringList("worlds.no-chat");
}
private void saveCfg(){
getConfig().set("player-name-mask",playerMask);
getServer().getPluginManager().registerEvents(this, this);
getConfig().set("worlds.no-chat", worldsWithoutChat);
saveConfig();
}
private void sendMessageInWorld (Player sender, String msg){
if (worldsWithoutChat.contains(sender.getWorld().getName())||(!sender.hasPermission("silentworlds.chat"))) return;
for (Player player : Bukkit.getOnlinePlayers()){
if (worldsWithoutChat.contains(player.getWorld().getName())||(!sender.hasPermission("silentworlds.chat"))) continue;
player.sendMessage(ChatColor.translateAlternateColorCodes('&', playerMask.replace("%player%", sender.getDisplayName()))+" "+msg);
}
}
@EventHandler(priority=EventPriority.HIGHEST, ignoreCancelled = true)
public void onChat(AsyncPlayerChatEvent event){
sendMessageInWorld(event.getPlayer(),event.getMessage());
event.setCancelled(true);
}
}
Ну спасибоКак-то так: https://www.dropbox.com/s/2fn64mg925cn3u8/SilentWorlds.jar
Пример конфига.
Код:worlds: no-chat: - world_nether player-name-mask: '&6%player>%&e'
Пара моментов.
- Полностью отключить сообщения в чате нельзя. Буду сообщения от плагинов и т.п.
- Игроки с пермишеном "silentworlds.chat" могут писать где угодно. И их сообщения видны везде
- Поскольку, рассылка происходит "нестандартным" способом, то для вывода имени игрока используется предопределенная маска. Поскольку никогда до этого не писал плагины для чата, то не знаю будет ли Player.getDisplayName возвращать всякие уникальные префиксы в имени, цвета и т.п.
Код:package me.fromgate.silentworlds; import java.util.ArrayList; import java.util.List; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.AsyncPlayerChatEvent; import org.bukkit.plugin.java.JavaPlugin; public class SilentWorlds extends JavaPlugin implements Listener{ String playerMask; List<String> worldsWithoutChat = new ArrayList<String>(); @Override public void onEnable(){ loadCfg(); saveCfg(); } private void loadCfg(){ playerMask = getConfig().getString("player-name-mask","&6%player>%&e"); worldsWithoutChat = getConfig().getStringList("worlds.no-chat"); } private void saveCfg(){ getConfig().set("player-name-mask",playerMask); getServer().getPluginManager().registerEvents(this, this); getConfig().set("worlds.no-chat", worldsWithoutChat); saveConfig(); } private void sendMessageInWorld (Player sender, String msg){ if (worldsWithoutChat.contains(sender.getWorld().getName())||(!sender.hasPermission("silentworlds.chat"))) return; for (Player player : Bukkit.getOnlinePlayers()){ if (worldsWithoutChat.contains(player.getWorld().getName())||(!sender.hasPermission("silentworlds.chat"))) continue; player.sendMessage(ChatColor.translateAlternateColorCodes('&', playerMask.replace("%player%", sender.getDisplayName()))+" "+msg); } } @EventHandler(priority=EventPriority.HIGHEST, ignoreCancelled = true) public void onChat(AsyncPlayerChatEvent event){ sendMessageInWorld(event.getPlayer(),event.getMessage()); event.setCancelled(true); } }

Значит окJustBlender, если плагин знает о существовании метода Player.setDisplayName, то всё должно быть ок![]()
