Implemented a chat event handler system to allow for manipulating and handeling the various chat/command events.
This commit is contained in:
parent
1a024e5656
commit
f327dd5d7f
|
@ -209,6 +209,70 @@ public class ForgeHooks
|
||||||
}
|
}
|
||||||
static LinkedList<IEntityInteractHandler> entityInteractHandlers = new LinkedList<IEntityInteractHandler>();
|
static LinkedList<IEntityInteractHandler> entityInteractHandlers = new LinkedList<IEntityInteractHandler>();
|
||||||
|
|
||||||
|
public static String onServerChat(EntityPlayer player, String message)
|
||||||
|
{
|
||||||
|
for (IChatHandler handler : chatHandlers)
|
||||||
|
{
|
||||||
|
message = handler.onServerChat(player, message);
|
||||||
|
if (message == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean onChatCommand(EntityPlayer player, boolean isOp, String command)
|
||||||
|
{
|
||||||
|
for (IChatHandler handler : chatHandlers)
|
||||||
|
{
|
||||||
|
if (handler.onChatCommand(player, isOp, command))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean onServerCommand(Object listener, String username, String command)
|
||||||
|
{
|
||||||
|
for (IChatHandler handler : chatHandlers)
|
||||||
|
{
|
||||||
|
if (handler.onServerCommand(listener, username, command))
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String onServerCommandSay(Object listener, String username, String message)
|
||||||
|
{
|
||||||
|
for (IChatHandler handler : chatHandlers)
|
||||||
|
{
|
||||||
|
message = handler.onServerCommandSay(listener, username, message);
|
||||||
|
if (message == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String onClientChatRecv(String message)
|
||||||
|
{
|
||||||
|
for (IChatHandler handler : chatHandlers)
|
||||||
|
{
|
||||||
|
message = handler.onClientChatRecv(message);
|
||||||
|
if (message == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
static LinkedList<IChatHandler> chatHandlers = new LinkedList<IChatHandler>();
|
||||||
|
|
||||||
// Plant Management
|
// Plant Management
|
||||||
// ------------------------------------------------------------
|
// ------------------------------------------------------------
|
||||||
static class ProbableItem
|
static class ProbableItem
|
||||||
|
|
|
@ -0,0 +1,76 @@
|
||||||
|
package net.minecraft.src.forge;
|
||||||
|
|
||||||
|
import net.minecraft.src.EntityPlayer;
|
||||||
|
|
||||||
|
public interface IChatHandler
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Called when a player sends a normal chat message to the server,
|
||||||
|
* you can manipulate the message parameter by returning a modified
|
||||||
|
* version from this function.
|
||||||
|
*
|
||||||
|
* This is only called on the server side.
|
||||||
|
*
|
||||||
|
* @param player The player issuing the message
|
||||||
|
* @param message The message the player is sending
|
||||||
|
* @return The message to be displayed, normal case is the 'message' parameter. Return null to cancel displaying this message.
|
||||||
|
*/
|
||||||
|
public String onServerChat(EntityPlayer player, String message);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when a player sends a normal chat message to the server
|
||||||
|
* that starts with a '/'.
|
||||||
|
*
|
||||||
|
* This is only called on the server side.
|
||||||
|
*
|
||||||
|
* Return true from this function to indicate that you have
|
||||||
|
* handled the command and no further processing is necessary.
|
||||||
|
*
|
||||||
|
* @param player The player trying to issue the command
|
||||||
|
* @param isOp True if the player is on the Op list
|
||||||
|
* @param command The command trying to be issued
|
||||||
|
* @return True if no further processing is necessary, false to continue processing.
|
||||||
|
*/
|
||||||
|
public boolean onChatCommand(EntityPlayer player, boolean isOp, String command);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when either the console or a player issues a / command that is not handled elsewhere.
|
||||||
|
*
|
||||||
|
* This is only called on the server side.
|
||||||
|
*
|
||||||
|
* Return true from this function to indicate that you have
|
||||||
|
* handled the command and no further processing is necessary.
|
||||||
|
*
|
||||||
|
* The listener will always be a instance of ICommandListener, but because the client does
|
||||||
|
* not have this class it is defined as a Object to allow client compilation.
|
||||||
|
*
|
||||||
|
* @param listener The source of the command, will always be a instance of ICommandListener
|
||||||
|
* @param username The username of the person issuing the command, 'CONSOLE' if it's not a player.
|
||||||
|
* @param command The command trying to be issued
|
||||||
|
* @return True if no further processing is necessary, false to continue processing.
|
||||||
|
*/
|
||||||
|
public boolean onServerCommand(Object listener, String username, String command);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Called when either the console or a player issues the /say command
|
||||||
|
*
|
||||||
|
* This is only called on the server side.
|
||||||
|
*
|
||||||
|
* @param listener The source of the command, will always be a instance of ICommandListener
|
||||||
|
* @param username The username of the person issuing the command, 'CONSOLE' if it's not a player.
|
||||||
|
* @param message The message trying to be sent, without the /say
|
||||||
|
* @return The message to be displayed, normal case is the 'message' parameter. Return null to cancel displaying this message.
|
||||||
|
*/
|
||||||
|
public String onServerCommandSay(Object listener, String username, String message);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the client receives a Chat packet.
|
||||||
|
*
|
||||||
|
* This is only called on the client side
|
||||||
|
*
|
||||||
|
* @param message The chat message received
|
||||||
|
* @return The message to be displayed, normal case is the 'message' parameter. Return null to cancel displaying this message.
|
||||||
|
*/
|
||||||
|
public String onClientChatRecv(String message);
|
||||||
|
}
|
|
@ -120,6 +120,15 @@ public class MinecraftForge
|
||||||
ForgeHooks.entityInteractHandlers.add(handler);
|
ForgeHooks.entityInteractHandlers.add(handler);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Registers a new chat handler.
|
||||||
|
* @param handler The Handler to be registered
|
||||||
|
*/
|
||||||
|
public static void registerChatHandler(IChatHandler handler)
|
||||||
|
{
|
||||||
|
ForgeHooks.chatHandlers.add(handler);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is not supposed to be called outside of Minecraft internals.
|
* This is not supposed to be called outside of Minecraft internals.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -50,7 +50,22 @@
|
||||||
ModLoader.serverLogin(this, par1Packet1Login);
|
ModLoader.serverLogin(this, par1Packet1Login);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -675,7 +704,19 @@
|
@@ -587,8 +616,12 @@
|
||||||
|
|
||||||
|
public void handleChat(Packet3Chat par1Packet3Chat)
|
||||||
|
{
|
||||||
|
- this.mc.ingameGUI.addChatMessage(par1Packet3Chat.message);
|
||||||
|
- ModLoader.serverChat(par1Packet3Chat.message);
|
||||||
|
+ par1Packet3Chat.message = ForgeHooks.onClientChatRecv(par1Packet3Chat.message);
|
||||||
|
+ if (par1Packet3Chat.message != null)
|
||||||
|
+ {
|
||||||
|
+ this.mc.ingameGUI.addChatMessage(par1Packet3Chat.message);
|
||||||
|
+ ModLoader.serverChat(par1Packet3Chat.message);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
public void handleAnimation(Packet18Animation par1Packet18Animation)
|
||||||
|
@@ -675,7 +708,19 @@
|
||||||
}
|
}
|
||||||
else if (par1Packet2Handshake.username.equals("-"))
|
else if (par1Packet2Handshake.username.equals("-"))
|
||||||
{
|
{
|
||||||
|
@ -71,7 +86,7 @@
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -688,7 +729,19 @@
|
@@ -688,7 +733,19 @@
|
||||||
|
|
||||||
if (var6.equalsIgnoreCase("ok"))
|
if (var6.equalsIgnoreCase("ok"))
|
||||||
{
|
{
|
||||||
|
@ -92,7 +107,7 @@
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -1156,5 +1209,40 @@
|
@@ -1156,5 +1213,40 @@
|
||||||
public void handleCustomPayload(Packet250CustomPayload var1)
|
public void handleCustomPayload(Packet250CustomPayload var1)
|
||||||
{
|
{
|
||||||
ModLoader.receivePacket(var1);
|
ModLoader.receivePacket(var1);
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
--- ../src_base/minecraft_server/net/minecraft/src/ConsoleCommandHandler.java 0000-00-00 00:00:00.000000000 -0000
|
--- ../src_base/minecraft_server/net/minecraft/src/ConsoleCommandHandler.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
+++ ../src_work/minecraft_server/net/minecraft/src/ConsoleCommandHandler.java 0000-00-00 00:00:00.000000000 -0000
|
+++ ../src_work/minecraft_server/net/minecraft/src/ConsoleCommandHandler.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
@@ -4,6 +4,7 @@
|
@@ -4,6 +4,8 @@
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
+import net.minecraft.src.forge.DimensionManager;
|
+import net.minecraft.src.forge.DimensionManager;
|
||||||
|
+import net.minecraft.src.forge.ForgeHooks;
|
||||||
|
|
||||||
public class ConsoleCommandHandler
|
public class ConsoleCommandHandler
|
||||||
{
|
{
|
||||||
@@ -52,9 +53,9 @@
|
@@ -52,9 +54,9 @@
|
||||||
var5.savePlayerStates();
|
var5.savePlayerStates();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -20,7 +21,7 @@
|
||||||
boolean var8 = var7.levelSaving;
|
boolean var8 = var7.levelSaving;
|
||||||
var7.levelSaving = false;
|
var7.levelSaving = false;
|
||||||
var7.saveWorld(true, (IProgressUpdate)null);
|
var7.saveWorld(true, (IProgressUpdate)null);
|
||||||
@@ -67,20 +68,18 @@
|
@@ -67,20 +69,18 @@
|
||||||
{
|
{
|
||||||
this.sendNoticeToOps(var4, "Disabling level saving..");
|
this.sendNoticeToOps(var4, "Disabling level saving..");
|
||||||
|
|
||||||
|
@ -45,7 +46,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -356,20 +355,18 @@
|
@@ -356,20 +356,18 @@
|
||||||
|
|
||||||
if ("add".equalsIgnoreCase(var20))
|
if ("add".equalsIgnoreCase(var20))
|
||||||
{
|
{
|
||||||
|
@ -70,7 +71,22 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
this.sendNoticeToOps(var4, "Set time to " + var18);
|
this.sendNoticeToOps(var4, "Set time to " + var18);
|
||||||
@@ -414,7 +411,7 @@
|
@@ -387,8 +385,12 @@
|
||||||
|
else if (var2.toLowerCase().startsWith("say "))
|
||||||
|
{
|
||||||
|
var2 = var2.substring(var2.indexOf(" ")).trim();
|
||||||
|
- minecraftLogger.info("[" + var4 + "] " + var2);
|
||||||
|
- var5.sendPacketToAllPlayers(new Packet3Chat("\u00a7d[Server] " + var2));
|
||||||
|
+ var2 = ForgeHooks.onServerCommandSay(var3, var3.getUsername(), var2);
|
||||||
|
+ if (var2 != null)
|
||||||
|
+ {
|
||||||
|
+ minecraftLogger.info("[" + var4 + "] " + var2);
|
||||||
|
+ var5.sendPacketToAllPlayers(new Packet3Chat("\u00a7d[Server] " + var2));
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
else if (var2.toLowerCase().startsWith("tell "))
|
||||||
|
{
|
||||||
|
@@ -414,7 +416,7 @@
|
||||||
}
|
}
|
||||||
else if (var2.toLowerCase().startsWith("toggledownfall"))
|
else if (var2.toLowerCase().startsWith("toggledownfall"))
|
||||||
{
|
{
|
||||||
|
@ -79,3 +95,14 @@
|
||||||
var3.log("Toggling rain and snow, hold on...");
|
var3.log("Toggling rain and snow, hold on...");
|
||||||
}
|
}
|
||||||
else if (var2.toLowerCase().startsWith("banlist"))
|
else if (var2.toLowerCase().startsWith("banlist"))
|
||||||
|
@@ -433,6 +435,10 @@
|
||||||
|
var3.log("Ban list:" + this.func_40648_a(this.minecraftServer.getBannedPlayersList(), ", "));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
+ else if (ForgeHooks.onServerCommand(var3, var3.getUsername(), var2))
|
||||||
|
+ {
|
||||||
|
+ //Nom Nom Nom, Do we need to log anything, Let the command handle it themselves.
|
||||||
|
+ }
|
||||||
|
else
|
||||||
|
{
|
||||||
|
minecraftLogger.info("Unknown console command. Type \"help\" for help.");
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
--- ../src_base/minecraft_server/net/minecraft/src/NetServerHandler.java 0000-00-00 00:00:00.000000000 -0000
|
--- ../src_base/minecraft_server/net/minecraft/src/NetServerHandler.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
+++ ../src_work/minecraft_server/net/minecraft/src/NetServerHandler.java 0000-00-00 00:00:00.000000000 -0000
|
+++ ../src_work/minecraft_server/net/minecraft/src/NetServerHandler.java 0000-00-00 00:00:00.000000000 -0000
|
||||||
@@ -4,6 +4,8 @@
|
@@ -4,6 +4,9 @@
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
import net.minecraft.server.MinecraftServer;
|
import net.minecraft.server.MinecraftServer;
|
||||||
|
+import net.minecraft.src.forge.ForgeHooks;
|
||||||
+import net.minecraft.src.forge.MessageManager;
|
+import net.minecraft.src.forge.MessageManager;
|
||||||
+import java.io.UnsupportedEncodingException;
|
+import java.io.UnsupportedEncodingException;
|
||||||
|
|
||||||
public class NetServerHandler extends NetHandler implements ICommandListener
|
public class NetServerHandler extends NetHandler implements ICommandListener
|
||||||
{
|
{
|
||||||
@@ -372,8 +374,11 @@
|
@@ -372,8 +375,11 @@
|
||||||
double var10 = this.playerEntity.posY - ((double)var6 + 0.5D) + 1.5D;
|
double var10 = this.playerEntity.posY - ((double)var6 + 0.5D) + 1.5D;
|
||||||
double var12 = this.playerEntity.posZ - ((double)var7 + 0.5D);
|
double var12 = this.playerEntity.posZ - ((double)var7 + 0.5D);
|
||||||
double var14 = var8 * var8 + var10 * var10 + var12 * var12;
|
double var14 = var8 * var8 + var10 * var10 + var12 * var12;
|
||||||
|
@ -22,7 +23,7 @@
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -465,8 +470,9 @@
|
@@ -465,8 +471,9 @@
|
||||||
{
|
{
|
||||||
var12 = var11;
|
var12 = var11;
|
||||||
}
|
}
|
||||||
|
@ -34,7 +35,35 @@
|
||||||
{
|
{
|
||||||
this.playerEntity.itemInWorldManager.activeBlockOrUseItem(this.playerEntity, var2, var3, var5, var6, var7, var8);
|
this.playerEntity.itemInWorldManager.activeBlockOrUseItem(this.playerEntity, var2, var3, var5, var6, var7, var8);
|
||||||
}
|
}
|
||||||
@@ -764,9 +770,10 @@
|
@@ -597,9 +604,13 @@
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- var2 = "<" + this.playerEntity.username + "> " + var2;
|
||||||
|
- logger.info(var2);
|
||||||
|
- this.mcServer.configManager.sendPacketToAllPlayers(new Packet3Chat(var2));
|
||||||
|
+ var2 = ForgeHooks.onServerChat(playerEntity, var2);
|
||||||
|
+ if (var2 != null)
|
||||||
|
+ {
|
||||||
|
+ var2 = "<" + this.playerEntity.username + "> " + var2;
|
||||||
|
+ logger.info(var2);
|
||||||
|
+ this.mcServer.configManager.sendPacketToAllPlayers(new Packet3Chat(var2));
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
|
||||||
|
this.field_45001_m += 20;
|
||||||
|
@@ -647,6 +658,10 @@
|
||||||
|
{
|
||||||
|
logger.info("ModLoaderMP : " + this.playerEntity.username + " issued command: " + par1Str.substring(1));
|
||||||
|
}
|
||||||
|
+ else if (ForgeHooks.onChatCommand(this.playerEntity, this.mcServer.configManager.isOp(playerEntity.username), par1Str.substring(1)))
|
||||||
|
+ {
|
||||||
|
+ logger.info("Forge: " + playerEntity.username + " issues command: " + par1Str.substring(1));
|
||||||
|
+ }
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String var3;
|
||||||
|
@@ -764,9 +779,10 @@
|
||||||
*/
|
*/
|
||||||
public void handleRespawn(Packet9Respawn par1Packet9Respawn)
|
public void handleRespawn(Packet9Respawn par1Packet9Respawn)
|
||||||
{
|
{
|
||||||
|
@ -46,7 +75,7 @@
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@@ -775,7 +782,7 @@
|
@@ -775,7 +791,7 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +84,7 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -965,4 +972,49 @@
|
@@ -965,4 +981,49 @@
|
||||||
{
|
{
|
||||||
this.playerEntity.capabilities.isFlying = par1Packet202PlayerAbilities.field_50005_b && this.playerEntity.capabilities.allowFlying;
|
this.playerEntity.capabilities.isFlying = par1Packet202PlayerAbilities.field_50005_b && this.playerEntity.capabilities.allowFlying;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue