Skocz do zawartości
  • 0

Problem z zarządzaniem chatem.


sztywan
 Udostępnij

Pytanie

Cześć, mam takie klasy w moim pluginie od zarządzania chatem.

Klasa Main (AddonsPlugin)

package pl.tasrv.craftlands.addons;

import org.bukkit.plugin.java.JavaPlugin;

import pl.tasrv.craftlands.addons.commands.ChatCommands;
import pl.tasrv.craftlands.addons.listeners.ChatListeners;

public class AddonsPlugin extends JavaPlugin {

	public static AddonsPlugin addonsPlugin;

	public static boolean chatStatus = false;

	public void onEnable() {
		addonsPlugin = this;

		/* REJSTRACJA KOMEND */
		getCommand("chat").setExecutor(new ChatCommands(this));

		/* REJSTRACJA EVENTOW */
		getServer().getPluginManager()
				.registerEvents(new ChatListeners(), this);

		getServer().getLogger().info(
				"[CraftLands - Addons] Plugin zostal wlaczony!");
	}

	public static AddonsPlugin getAddonsPlugin() {
		return addonsPlugin;
	}

	public boolean getChatStatus() {
		return chatStatus;
	}
}

Klasa od zarządzania komendami.

Spoiler
package pl.tasrv.craftlands.addons.commands;

import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;

import pl.tasrv.craftlands.addons.AddonsPlugin;
import pl.tasrv.craftlands.addons.utils.Utils;

public class ChatCommands implements CommandExecutor {

	AddonsPlugin addonsPlugin;

	public ChatCommands(AddonsPlugin addonsPlugin) {
		this.addonsPlugin = addonsPlugin;
	}

	@Override
	public boolean onCommand(CommandSender sender, Command command,
			String label, String[] args) {
		if (!(sender instanceof Player)) {
			if (args.length <= 0) {
				sender.sendMessage(Utils
						.fixColor("&cPoprawne uzycie: &7/chat on/off/clear"));
				return true;
			}

			if (args[0].equalsIgnoreCase("clear")) {
				for (int i = 0; i <= 100; i++) {
					Bukkit.broadcastMessage(" ");
				}

				Bukkit.broadcastMessage(Utils
						.fixColor("&cChat zostal wyczyszczony przez &4Console&c!"));
				return true;
			}

			if (args[0].equalsIgnoreCase("on")) {
				if (AddonsPlugin.chatStatus == false) {
					sender.sendMessage(Utils
							.fixColor("&cChat aktulanie jest juz wlaczony!"));
					return true;
				}
				AddonsPlugin.chatStatus = false;
				Bukkit.broadcastMessage(Utils
						.fixColor("&cChat zostal wlaczony przez &4Console &c!"));
				return true;
			}

			if (args[0].equalsIgnoreCase("off")) {
				if (AddonsPlugin.chatStatus == true) {
					sender.sendMessage(Utils
							.fixColor("&cChat aktualnie jest juz wylaczony!"));
					return true;
				}

				AddonsPlugin.chatStatus = true;
				Bukkit.broadcastMessage(Utils
						.fixColor("&cChat zostal wylaczony przez &4Console &c!"));
				return true;
			}
		}

		Player player = (Player) sender;

		if (player.hasPermission("craftlands.addons.commands.chat")) {
			if (args.length <= 0) {
				player.sendMessage(Utils
						.fixColor("&cPoprawne uzycie: &7/chat on/off/clear"));
				return true;
			}

			if (args[0].equalsIgnoreCase("clear")) {
				for (int i = 0; i <= 100; i++) {
					Bukkit.broadcastMessage(" ");
				}

				Bukkit.broadcastMessage(Utils
						.fixColor("&cChat zostal wyczyszczony przez administratora &4"
								+ player.getName() + "&c!"));
				return true;
			}

			if (args[0].equalsIgnoreCase("on")) {
				if (AddonsPlugin.chatStatus == false) {
					player.sendMessage(Utils
							.fixColor("&cChat aktulanie jest juz wlaczony!"));
					return true;
				}
				AddonsPlugin.chatStatus = false;
				Bukkit.broadcastMessage(Utils
						.fixColor("&cChat zostal wlaczony przez administratora &4"
								+ player.getName() + "&c!"));
				return true;
			}

			if (args[0].equalsIgnoreCase("off")) {
				if (AddonsPlugin.chatStatus == true) {
					player.sendMessage(Utils
							.fixColor("&cChat aktualnie jest juz wylaczony!"));
					return true;
				}

				AddonsPlugin.chatStatus = true;
				Bukkit.broadcastMessage(Utils
						.fixColor("&cChat zostal wylaczony przez administratora &4"
								+ player.getName() + "&c!"));
				return true;
			}
		} else {
			player.sendMessage(Utils
					.fixColor("&cNie masz uprawnien, aby uzyc tej komendy!"));
			return true;
		}
		return false;
	}
}

 

Oraz klasa dotycząca Listenerów:

Spoiler
package pl.tasrv.craftlands.addons.listeners;

import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.event.player.AsyncPlayerChatEvent;

import pl.tasrv.craftlands.addons.AddonsPlugin;
import pl.tasrv.craftlands.addons.utils.Utils;

public class ChatListeners implements Listener {

	public void onPlayerChat(AsyncPlayerChatEvent event) {
		Player player = event.getPlayer();

		if (AddonsPlugin.getAddonsPlugin().getChatStatus() == true) {
			event.setCancelled(true);
			player.sendMessage(Utils
					.fixColor("&cChat aktulanie jest wylaczony przez administratora!"));
		}
	}
}

 

Komendy działają, ale gdy wyłącze chat nie działa w ogóle (w sensie takim że gracze mogą ciągle pisać).

Odnośnik do komentarza
Udostępnij na innych stronach

2 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0

Po co tak porównujesz booleany 

if (AddonsPlugin.chatStatus == false) 

wystarczy: 

if (!AddonsPlugin.chatStatus) 

tak samo dla == true bez negacji czyli wykrzyknika.

 

A tak to w listenerze nie masz adnotacji @EventHandler nad metodą

Odnośnik do komentarza
Udostępnij na innych stronach

  • 0
25 minut temu, GotoFinal napisał:

Po co tak porównujesz booleany 

if (AddonsPlugin.chatStatus == false) 

wystarczy: 

if (!AddonsPlugin.chatStatus) 

tak samo dla == true bez negacji czyli wykrzyknika.

 

A tak to w listenerze nie masz adnotacji @EventHandler nad metodą

Taka prosta rzecz, ale dawno już tego nie robiłem. Dzięki za pomoc i można zamknąć.

Odnośnik do komentarza
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
 Udostępnij

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...