mirror of
https://github.com/Multiverse/Multiverse-Core.git
synced 2024-11-29 14:06:30 +01:00
Less duplicate code ... I think.
This commit is contained in:
parent
d0ea4168bc
commit
4ecb28b3bb
@ -0,0 +1,35 @@
|
|||||||
|
package com.onarandombox.MultiverseCore.listeners;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A wrapper for the {@link AsyncPlayerChatEvent}.
|
||||||
|
*/
|
||||||
|
public class AsyncChatEvent implements ChatEvent {
|
||||||
|
private final AsyncPlayerChatEvent event;
|
||||||
|
|
||||||
|
public AsyncChatEvent(AsyncPlayerChatEvent event) {
|
||||||
|
this.event = event;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return event.isCancelled();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getFormat() {
|
||||||
|
return event.getFormat();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setFormat(String s) {
|
||||||
|
event.setFormat(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Player getPlayer() {
|
||||||
|
return event.getPlayer();
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.onarandombox.MultiverseCore.listeners;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A wrapper for the two chat-events in Bukkit.
|
||||||
|
*/
|
||||||
|
public interface ChatEvent {
|
||||||
|
/**
|
||||||
|
* @return Whether this event is cancelled.
|
||||||
|
*/
|
||||||
|
boolean isCancelled();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The format.
|
||||||
|
*/
|
||||||
|
String getFormat();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the format.
|
||||||
|
* @param s The new format.
|
||||||
|
*/
|
||||||
|
void setFormat(String s);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The player.
|
||||||
|
*/
|
||||||
|
Player getPlayer();
|
||||||
|
}
|
@ -7,70 +7,28 @@
|
|||||||
|
|
||||||
package com.onarandombox.MultiverseCore.listeners;
|
package com.onarandombox.MultiverseCore.listeners;
|
||||||
|
|
||||||
import com.onarandombox.MultiverseCore.MultiverseCore;
|
import java.util.logging.Level;
|
||||||
import com.onarandombox.MultiverseCore.api.MVWorldManager;
|
|
||||||
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
|
||||||
import java.util.logging.Level;
|
import com.onarandombox.MultiverseCore.MultiverseCore;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Multiverse's {@link org.bukkit.event.Listener} for players.
|
* Multiverse's {@link org.bukkit.event.Listener} for players.
|
||||||
*/
|
*/
|
||||||
public class MVAsyncPlayerChatListener implements MVChatListener<AsyncPlayerChatEvent> {
|
public class MVAsyncPlayerChatListener extends MVChatListener {
|
||||||
|
|
||||||
private final MultiverseCore plugin;
|
|
||||||
private final MVWorldManager worldManager;
|
|
||||||
private final MVPlayerListener playerListener;
|
|
||||||
|
|
||||||
public MVAsyncPlayerChatListener(MultiverseCore plugin, MVPlayerListener playerListener) {
|
public MVAsyncPlayerChatListener(MultiverseCore plugin, MVPlayerListener playerListener) {
|
||||||
this.plugin = plugin;
|
super(plugin, playerListener);
|
||||||
this.worldManager = plugin.getMVWorldManager();
|
plugin.log(Level.FINE, "Created AsyncPlayerChatEvent listener.");
|
||||||
this.playerListener = playerListener;
|
|
||||||
plugin.log(Level.FINE, "Registered AsyncPlayerChatEvent listener.");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* {@inheritDoc}
|
* This method is called when a player wants to chat.
|
||||||
|
* @param event The Event that was fired.
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void playerChat(AsyncPlayerChatEvent event) {
|
public void playerChat(AsyncPlayerChatEvent event) {
|
||||||
if (event.isCancelled()) {
|
this.playerChat(new AsyncChatEvent(event));
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Check whether the Server is set to prefix the chat with the World name.
|
|
||||||
// If not we do nothing, if so we need to check if the World has an Alias.
|
|
||||||
if (plugin.getMVConfig().getPrefixChat()) {
|
|
||||||
String world;
|
|
||||||
Thread thread = Thread.currentThread();
|
|
||||||
if (playerListener.getWorldsLock().isLocked()) {
|
|
||||||
plugin.log(Level.FINEST, "worldsLock is locked when attempting to handle player chat on thread: " + thread);
|
|
||||||
}
|
|
||||||
playerListener.getWorldsLock().lock();
|
|
||||||
try {
|
|
||||||
plugin.log(Level.FINEST, "Handling player chat on thread: " + thread);
|
|
||||||
world = playerListener.getPlayerWorld().get(event.getPlayer().getName());
|
|
||||||
if (world == null) {
|
|
||||||
world = event.getPlayer().getWorld().getName();
|
|
||||||
playerListener.getPlayerWorld().put(event.getPlayer().getName(), world);
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
playerListener.getWorldsLock().unlock();
|
|
||||||
}
|
|
||||||
String prefix = "";
|
|
||||||
// If we're not a MV world, don't do anything
|
|
||||||
if (!this.worldManager.isMVWorld(world)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
MultiverseWorld mvworld = this.worldManager.getMVWorld(world);
|
|
||||||
if (mvworld.isHidden()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
prefix = mvworld.getColoredWorldString();
|
|
||||||
String format = event.getFormat();
|
|
||||||
event.setFormat("[" + prefix + "]" + format);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,18 +1,66 @@
|
|||||||
package com.onarandombox.MultiverseCore.listeners;
|
package com.onarandombox.MultiverseCore.listeners;
|
||||||
|
|
||||||
import org.bukkit.event.Event;
|
import java.util.logging.Level;
|
||||||
import org.bukkit.event.EventHandler;
|
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
|
||||||
|
import com.onarandombox.MultiverseCore.MultiverseCore;
|
||||||
|
import com.onarandombox.MultiverseCore.api.MVWorldManager;
|
||||||
|
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This interface is implemented by {@link MVPlayerChatListener} and {@link MVAsyncPlayerChatListener}.
|
* Multiverse's {@link org.bukkit.event.Listener} for players.
|
||||||
* @param <E> The chat event-type.
|
|
||||||
*/
|
*/
|
||||||
public interface MVChatListener<E extends Event> extends Listener {
|
public abstract class MVChatListener implements Listener {
|
||||||
/**
|
private final MultiverseCore plugin;
|
||||||
* This method is called when a player wants to chat.
|
private final MVWorldManager worldManager;
|
||||||
* @param event The Event that was fired.
|
private final MVPlayerListener playerListener;
|
||||||
*/
|
|
||||||
@EventHandler
|
public MVChatListener(MultiverseCore plugin, MVPlayerListener playerListener) {
|
||||||
void playerChat(E event);
|
this.plugin = plugin;
|
||||||
|
this.worldManager = plugin.getMVWorldManager();
|
||||||
|
this.playerListener = playerListener;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This handles a {@link ChatEvent}.
|
||||||
|
* @param event The {@link ChatEvent}.
|
||||||
|
*/
|
||||||
|
public void playerChat(ChatEvent event) {
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
// Check whether the Server is set to prefix the chat with the World name.
|
||||||
|
// If not we do nothing, if so we need to check if the World has an Alias.
|
||||||
|
if (plugin.getMVConfig().getPrefixChat()) {
|
||||||
|
String world;
|
||||||
|
Thread thread = Thread.currentThread();
|
||||||
|
if (playerListener.getWorldsLock().isLocked()) {
|
||||||
|
plugin.log(Level.FINEST, "worldsLock is locked when attempting to handle player chat on thread: " + thread);
|
||||||
|
}
|
||||||
|
playerListener.getWorldsLock().lock();
|
||||||
|
try {
|
||||||
|
plugin.log(Level.FINEST, "Handling player chat on thread: " + thread);
|
||||||
|
world = playerListener.getPlayerWorld().get(event.getPlayer().getName());
|
||||||
|
if (world == null) {
|
||||||
|
world = event.getPlayer().getWorld().getName();
|
||||||
|
playerListener.getPlayerWorld().put(event.getPlayer().getName(), world);
|
||||||
|
}
|
||||||
|
} finally {
|
||||||
|
playerListener.getWorldsLock().unlock();
|
||||||
|
}
|
||||||
|
String prefix = "";
|
||||||
|
// If we're not a MV world, don't do anything
|
||||||
|
if (!this.worldManager.isMVWorld(world)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
MultiverseWorld mvworld = this.worldManager.getMVWorld(world);
|
||||||
|
if (mvworld.isHidden()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
prefix = mvworld.getColoredWorldString();
|
||||||
|
String format = event.getFormat();
|
||||||
|
event.setFormat("[" + prefix + "]" + format);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,27 +7,20 @@
|
|||||||
|
|
||||||
package com.onarandombox.MultiverseCore.listeners;
|
package com.onarandombox.MultiverseCore.listeners;
|
||||||
|
|
||||||
import com.onarandombox.MultiverseCore.MultiverseCore;
|
import java.util.logging.Level;
|
||||||
import com.onarandombox.MultiverseCore.api.MVWorldManager;
|
|
||||||
import com.onarandombox.MultiverseCore.api.MultiverseWorld;
|
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.player.PlayerChatEvent;
|
import org.bukkit.event.player.PlayerChatEvent;
|
||||||
|
|
||||||
import java.util.logging.Level;
|
import com.onarandombox.MultiverseCore.MultiverseCore;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Multiverse's {@link org.bukkit.event.Listener} for players.
|
* Multiverse's {@link org.bukkit.event.Listener} for players.
|
||||||
*/
|
*/
|
||||||
public class MVPlayerChatListener implements MVChatListener<PlayerChatEvent> {
|
@SuppressWarnings("deprecation") // this exists only for downwards compatibility
|
||||||
|
public class MVPlayerChatListener extends MVChatListener {
|
||||||
private final MultiverseCore plugin;
|
|
||||||
private final MVWorldManager worldManager;
|
|
||||||
private final MVPlayerListener playerListener;
|
|
||||||
|
|
||||||
public MVPlayerChatListener(MultiverseCore plugin, MVPlayerListener playerListener) {
|
public MVPlayerChatListener(MultiverseCore plugin, MVPlayerListener playerListener) {
|
||||||
this.plugin = plugin;
|
super(plugin, playerListener);
|
||||||
this.worldManager = plugin.getMVWorldManager();
|
|
||||||
this.playerListener = playerListener;
|
|
||||||
plugin.log(Level.FINE, "Registered PlayerChatEvent listener.");
|
plugin.log(Level.FINE, "Registered PlayerChatEvent listener.");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,43 +28,8 @@ public class MVPlayerChatListener implements MVChatListener<PlayerChatEvent> {
|
|||||||
* This method is called when a player wants to chat.
|
* This method is called when a player wants to chat.
|
||||||
* @param event The Event that was fired.
|
* @param event The Event that was fired.
|
||||||
*/
|
*/
|
||||||
@Override
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void playerChat(PlayerChatEvent event) {
|
public void playerChat(PlayerChatEvent event) {
|
||||||
if (event.isCancelled()) {
|
this.playerChat(new NormalChatEvent(event));
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Check whether the Server is set to prefix the chat with the World name.
|
|
||||||
// If not we do nothing, if so we need to check if the World has an Alias.
|
|
||||||
if (plugin.getMVConfig().getPrefixChat()) {
|
|
||||||
String world;
|
|
||||||
Thread thread = Thread.currentThread();
|
|
||||||
if (playerListener.getWorldsLock().isLocked()) {
|
|
||||||
plugin.log(Level.FINEST, "worldsLock is locked when attempting to handle player chat on thread: " + thread);
|
|
||||||
}
|
|
||||||
playerListener.getWorldsLock().lock();
|
|
||||||
try {
|
|
||||||
plugin.log(Level.FINEST, "Handling player chat on thread: " + thread);
|
|
||||||
world = playerListener.getPlayerWorld().get(event.getPlayer().getName());
|
|
||||||
if (world == null) {
|
|
||||||
world = event.getPlayer().getWorld().getName();
|
|
||||||
playerListener.getPlayerWorld().put(event.getPlayer().getName(), world);
|
|
||||||
}
|
|
||||||
} finally {
|
|
||||||
playerListener.getWorldsLock().unlock();
|
|
||||||
}
|
|
||||||
String prefix = "";
|
|
||||||
// If we're not a MV world, don't do anything
|
|
||||||
if (!this.worldManager.isMVWorld(world)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
MultiverseWorld mvworld = this.worldManager.getMVWorld(world);
|
|
||||||
if (mvworld.isHidden()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
prefix = mvworld.getColoredWorldString();
|
|
||||||
String format = event.getFormat();
|
|
||||||
event.setFormat("[" + prefix + "]" + format);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,37 @@
|
|||||||
|
package com.onarandombox.MultiverseCore.listeners;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.player.PlayerChatEvent;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A wrapper for the {@link PlayerChatEvent}.
|
||||||
|
* @deprecated This is deprecated like the {@link PlayerChatEvent}.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public class NormalChatEvent implements ChatEvent {
|
||||||
|
private final PlayerChatEvent event;
|
||||||
|
|
||||||
|
public NormalChatEvent(PlayerChatEvent event) {
|
||||||
|
this.event = event;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return event.isCancelled();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getFormat() {
|
||||||
|
return event.getFormat();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setFormat(String s) {
|
||||||
|
event.setFormat(s);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Player getPlayer() {
|
||||||
|
return event.getPlayer();
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user