Add an onSendChatMessage event
This commit is contained in:
parent
28c4636857
commit
a36b223aab
@ -1,6 +1,7 @@
|
||||
package baritone.bot;
|
||||
|
||||
import baritone.bot.event.IGameEventListener;
|
||||
import baritone.bot.event.events.ChatEvent;
|
||||
import net.minecraft.client.settings.KeyBinding;
|
||||
import org.lwjgl.input.Keyboard;
|
||||
|
||||
@ -13,9 +14,7 @@ public final class GameEventHandler implements IGameEventListener {
|
||||
GameEventHandler() {}
|
||||
|
||||
@Override
|
||||
public final void onTick() {
|
||||
baritone.Baritone.onTick();
|
||||
}
|
||||
public final void onTick() {}
|
||||
|
||||
@Override
|
||||
public void onProcessKeyBinds() {
|
||||
@ -33,4 +32,7 @@ public final class GameEventHandler implements IGameEventListener {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onSendChatMessage(ChatEvent event) {}
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
package baritone.bot.event;
|
||||
|
||||
import baritone.bot.event.events.ChatEvent;
|
||||
|
||||
/**
|
||||
* An implementation of {@link IGameEventListener} that has all methods
|
||||
* overriden with empty bodies, allowing inheritors of this class to choose
|
||||
* which events they would like to listen in on.
|
||||
*
|
||||
* Has no implementors at the moment, but will likely be used with the
|
||||
* manager/behavior system is ported over to the new system.
|
||||
*
|
||||
* @see IGameEventListener
|
||||
*
|
||||
* @author Brady
|
||||
* @since 8/1/2018 6:29 PM
|
||||
*/
|
||||
public interface AbstractGameEventListener extends IGameEventListener {
|
||||
|
||||
@Override
|
||||
default void onTick() {}
|
||||
|
||||
@Override
|
||||
default void onProcessKeyBinds() {}
|
||||
|
||||
@Override
|
||||
default void onSendChatMessage(ChatEvent event) {}
|
||||
}
|
@ -1,6 +1,8 @@
|
||||
package baritone.bot.event;
|
||||
|
||||
import baritone.bot.event.events.ChatEvent;
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.entity.EntityPlayerSP;
|
||||
|
||||
/**
|
||||
* @author Brady
|
||||
@ -17,4 +19,9 @@ public interface IGameEventListener {
|
||||
* Run once per game tick from {@link Minecraft#processKeyBinds()}
|
||||
*/
|
||||
void onProcessKeyBinds();
|
||||
|
||||
/**
|
||||
* Runs whenever the client player sends a message to the server {@link EntityPlayerSP#sendChatMessage(String)}
|
||||
*/
|
||||
void onSendChatMessage(ChatEvent event);
|
||||
}
|
||||
|
26
src/main/java/baritone/bot/event/events/ChatEvent.java
Normal file
26
src/main/java/baritone/bot/event/events/ChatEvent.java
Normal file
@ -0,0 +1,26 @@
|
||||
package baritone.bot.event.events;
|
||||
|
||||
import baritone.bot.event.events.type.Cancellable;
|
||||
|
||||
/**
|
||||
* @author Brady
|
||||
* @since 8/1/2018 6:39 PM
|
||||
*/
|
||||
public final class ChatEvent extends Cancellable {
|
||||
|
||||
/**
|
||||
* The message being sent
|
||||
*/
|
||||
private final String message;
|
||||
|
||||
public ChatEvent(String message) {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The message being sent
|
||||
*/
|
||||
public final String getMessage() {
|
||||
return this.message;
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package baritone.bot.event.events.type;
|
||||
|
||||
/**
|
||||
* @author Brady
|
||||
* @since 8/1/2018 6:41 PM
|
||||
*/
|
||||
public class Cancellable {
|
||||
|
||||
/**
|
||||
* Whether or not this event has been cancelled
|
||||
*/
|
||||
private boolean cancelled;
|
||||
|
||||
/**
|
||||
* Cancels this event
|
||||
*/
|
||||
public final void cancel() {
|
||||
this.cancelled = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return Whether or not this event has been cancelled
|
||||
*/
|
||||
public final boolean isCancelled() {
|
||||
return this.cancelled;
|
||||
}
|
||||
}
|
@ -1,14 +1,13 @@
|
||||
package baritone.launch.mixins;
|
||||
|
||||
import baritone.util.ChatCommand;
|
||||
import baritone.bot.Baritone;
|
||||
import baritone.bot.event.events.ChatEvent;
|
||||
import net.minecraft.client.entity.EntityPlayerSP;
|
||||
import org.spongepowered.asm.mixin.Mixin;
|
||||
import org.spongepowered.asm.mixin.injection.At;
|
||||
import org.spongepowered.asm.mixin.injection.Inject;
|
||||
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
/**
|
||||
* @author Brady
|
||||
* @since 8/1/2018 5:06 PM
|
||||
@ -22,11 +21,9 @@ public class MixinEntityPlayerSP {
|
||||
cancellable = true
|
||||
)
|
||||
private void sendChatMessage(String msg, CallbackInfo ci) {
|
||||
try {
|
||||
if (ChatCommand.message(msg))
|
||||
ChatEvent event = new ChatEvent(msg);
|
||||
Baritone.INSTANCE.getGameEventHandler().onSendChatMessage(event);
|
||||
if (event.isCancelled())
|
||||
ci.cancel();
|
||||
} catch (IllegalAccessException | InvocationTargetException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user