Add EntityPlayerSP field to relevant events

This commit is contained in:
Brady 2018-10-11 12:32:42 -05:00
parent 8fd921c60e
commit 7dfe6ac3ca
No known key found for this signature in database
GPG Key ID: 73A788379A197567
12 changed files with 144 additions and 35 deletions

View File

@ -20,6 +20,8 @@ package baritone.api.event.events;
import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.BlockPos;
/** /**
* Called when the local player interacts with a block, can be either {@link Type#BREAK} or {@link Type#USE}.
*
* @author Brady * @author Brady
* @since 8/22/2018 * @since 8/22/2018
*/ */

View File

@ -17,20 +17,22 @@
package baritone.api.event.events; package baritone.api.event.events;
import baritone.api.event.events.type.Cancellable; import baritone.api.event.events.type.ManagedPlayerEvent;
import net.minecraft.client.entity.EntityPlayerSP;
/** /**
* @author Brady * @author Brady
* @since 8/1/2018 6:39 PM * @since 8/1/2018 6:39 PM
*/ */
public final class ChatEvent extends Cancellable { public final class ChatEvent extends ManagedPlayerEvent.Cancellable {
/** /**
* The message being sent * The message being sent
*/ */
private final String message; private final String message;
public ChatEvent(String message) { public ChatEvent(EntityPlayerSP player, String message) {
super(player);
this.message = message; this.message = message;
} }

View File

@ -18,6 +18,7 @@
package baritone.api.event.events; package baritone.api.event.events;
import baritone.api.event.events.type.EventState; import baritone.api.event.events.type.EventState;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet; import net.minecraft.network.Packet;
/** /**
@ -26,15 +27,22 @@ import net.minecraft.network.Packet;
*/ */
public final class PacketEvent { public final class PacketEvent {
private NetworkManager networkManager;
private final EventState state; private final EventState state;
private final Packet<?> packet; private final Packet<?> packet;
public PacketEvent(EventState state, Packet<?> packet) { public PacketEvent(NetworkManager networkManager, EventState state, Packet<?> packet) {
this.networkManager = networkManager;
this.state = state; this.state = state;
this.packet = packet; this.packet = packet;
} }
public final NetworkManager getNetworkManager() {
return this.networkManager;
}
public final EventState getState() { public final EventState getState() {
return this.state; return this.state;
} }

View File

@ -18,19 +18,22 @@
package baritone.api.event.events; package baritone.api.event.events;
import baritone.api.event.events.type.EventState; import baritone.api.event.events.type.EventState;
import baritone.api.event.events.type.ManagedPlayerEvent;
import net.minecraft.client.entity.EntityPlayerSP;
/** /**
* @author Brady * @author Brady
* @since 8/21/2018 * @since 8/21/2018
*/ */
public final class PlayerUpdateEvent { public final class PlayerUpdateEvent extends ManagedPlayerEvent {
/** /**
* The state of the event * The state of the event
*/ */
private final EventState state; private final EventState state;
public PlayerUpdateEvent(EventState state) { public PlayerUpdateEvent(EntityPlayerSP player, EventState state) {
super(player);
this.state = state; this.state = state;
} }

View File

@ -18,6 +18,8 @@
package baritone.api.event.events; package baritone.api.event.events;
import baritone.api.event.events.type.EventState; import baritone.api.event.events.type.EventState;
import baritone.api.event.events.type.ManagedPlayerEvent;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
@ -25,7 +27,7 @@ import net.minecraft.entity.EntityLivingBase;
* @author Brady * @author Brady
* @since 8/21/2018 * @since 8/21/2018
*/ */
public final class RotationMoveEvent { public final class RotationMoveEvent extends ManagedPlayerEvent {
/** /**
* The type of event * The type of event
@ -37,7 +39,8 @@ public final class RotationMoveEvent {
*/ */
private final EventState state; private final EventState state;
public RotationMoveEvent(EventState state, Type type) { public RotationMoveEvent(EntityPlayerSP player, EventState state, Type type) {
super(player);
this.state = state; this.state = state;
this.type = type; this.type = type;
} }

View File

@ -21,23 +21,19 @@ package baritone.api.event.events.type;
* @author Brady * @author Brady
* @since 8/1/2018 6:41 PM * @since 8/1/2018 6:41 PM
*/ */
public class Cancellable { public class Cancellable implements ICancellable {
/** /**
* Whether or not this event has been cancelled * Whether or not this event has been cancelled
*/ */
private boolean cancelled; private boolean cancelled;
/** @Override
* Cancels this event
*/
public final void cancel() { public final void cancel() {
this.cancelled = true; this.cancelled = true;
} }
/** @Override
* @return Whether or not this event has been cancelled
*/
public final boolean isCancelled() { public final boolean isCancelled() {
return this.cancelled; return this.cancelled;
} }

View File

@ -0,0 +1,35 @@
/*
* This file is part of Baritone.
*
* Baritone is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Baritone is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
*/
package baritone.api.event.events.type;
/**
* @author Brady
* @since 10/11/2018
*/
public interface ICancellable {
/**
* Cancels this event
*/
void cancel();
/**
* @return Whether or not this event has been cancelled
*/
boolean isCancelled();
}

View File

@ -0,0 +1,61 @@
/*
* This file is part of Baritone.
*
* Baritone is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Baritone is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Baritone. If not, see <https://www.gnu.org/licenses/>.
*/
package baritone.api.event.events.type;
import net.minecraft.client.entity.EntityPlayerSP;
/**
* An event that has a reference to a locally managed player.
*
* @author Brady
* @since 10/11/2018
*/
public class ManagedPlayerEvent {
protected final EntityPlayerSP player;
public ManagedPlayerEvent(EntityPlayerSP player) {
this.player = player;
}
public final EntityPlayerSP getPlayer() {
return this.player;
}
public static class Cancellable extends ManagedPlayerEvent implements ICancellable {
/**
* Whether or not this event has been cancelled
*/
private boolean cancelled;
public Cancellable(EntityPlayerSP player) {
super(player);
}
@Override
public final void cancel() {
this.cancelled = true;
}
@Override
public final boolean isCancelled() {
return this.cancelled;
}
}
}

View File

@ -20,7 +20,7 @@ package baritone.launch.mixins;
import baritone.Baritone; import baritone.Baritone;
import baritone.api.event.events.RotationMoveEvent; import baritone.api.event.events.RotationMoveEvent;
import baritone.api.event.events.type.EventState; import baritone.api.event.events.type.EventState;
import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.entity.Entity; import net.minecraft.entity.Entity;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
@ -40,8 +40,8 @@ public class MixinEntity {
) )
private void preMoveRelative(float strafe, float up, float forward, float friction, CallbackInfo ci) { private void preMoveRelative(float strafe, float up, float forward, float friction, CallbackInfo ci) {
Entity _this = (Entity) (Object) this; Entity _this = (Entity) (Object) this;
if (_this == Minecraft.getMinecraft().player) if (_this instanceof EntityPlayerSP)
Baritone.INSTANCE.getGameEventHandler().onPlayerRotationMove(new RotationMoveEvent(EventState.PRE, RotationMoveEvent.Type.MOTION_UPDATE)); Baritone.INSTANCE.getGameEventHandler().onPlayerRotationMove(new RotationMoveEvent((EntityPlayerSP) _this, EventState.PRE, RotationMoveEvent.Type.MOTION_UPDATE));
} }
@Inject( @Inject(
@ -50,7 +50,7 @@ public class MixinEntity {
) )
private void postMoveRelative(float strafe, float up, float forward, float friction, CallbackInfo ci) { private void postMoveRelative(float strafe, float up, float forward, float friction, CallbackInfo ci) {
Entity _this = (Entity) (Object) this; Entity _this = (Entity) (Object) this;
if (_this == Minecraft.getMinecraft().player) if (_this instanceof EntityPlayerSP)
Baritone.INSTANCE.getGameEventHandler().onPlayerRotationMove(new RotationMoveEvent(EventState.POST, RotationMoveEvent.Type.MOTION_UPDATE)); Baritone.INSTANCE.getGameEventHandler().onPlayerRotationMove(new RotationMoveEvent((EntityPlayerSP) _this, EventState.POST, RotationMoveEvent.Type.MOTION_UPDATE));
} }
} }

View File

@ -20,8 +20,7 @@ package baritone.launch.mixins;
import baritone.Baritone; import baritone.Baritone;
import baritone.api.event.events.RotationMoveEvent; import baritone.api.event.events.RotationMoveEvent;
import baritone.api.event.events.type.EventState; import baritone.api.event.events.type.EventState;
import net.minecraft.client.Minecraft; import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
@ -40,9 +39,9 @@ public class MixinEntityLivingBase {
at = @At("HEAD") at = @At("HEAD")
) )
private void preJump(CallbackInfo ci) { private void preJump(CallbackInfo ci) {
Entity _this = (Entity) (Object) this; EntityLivingBase _this = (EntityLivingBase) (Object) this;
if (_this == Minecraft.getMinecraft().player) if (_this instanceof EntityPlayerSP)
Baritone.INSTANCE.getGameEventHandler().onPlayerRotationMove(new RotationMoveEvent(EventState.PRE, RotationMoveEvent.Type.JUMP)); Baritone.INSTANCE.getGameEventHandler().onPlayerRotationMove(new RotationMoveEvent((EntityPlayerSP) _this, EventState.PRE, RotationMoveEvent.Type.JUMP));
} }
@Inject( @Inject(
@ -50,8 +49,8 @@ public class MixinEntityLivingBase {
at = @At("RETURN") at = @At("RETURN")
) )
private void postJump(CallbackInfo ci) { private void postJump(CallbackInfo ci) {
Entity _this = (Entity) (Object) this; EntityLivingBase _this = (EntityLivingBase) (Object) this;
if (_this == Minecraft.getMinecraft().player) if (_this instanceof EntityPlayerSP)
Baritone.INSTANCE.getGameEventHandler().onPlayerRotationMove(new RotationMoveEvent(EventState.POST, RotationMoveEvent.Type.JUMP)); Baritone.INSTANCE.getGameEventHandler().onPlayerRotationMove(new RotationMoveEvent((EntityPlayerSP) _this, EventState.POST, RotationMoveEvent.Type.JUMP));
} }
} }

View File

@ -40,7 +40,7 @@ public class MixinEntityPlayerSP {
cancellable = true cancellable = true
) )
private void sendChatMessage(String msg, CallbackInfo ci) { private void sendChatMessage(String msg, CallbackInfo ci) {
ChatEvent event = new ChatEvent(msg); ChatEvent event = new ChatEvent((EntityPlayerSP) (Object) this, msg);
Baritone.INSTANCE.getGameEventHandler().onSendChatMessage(event); Baritone.INSTANCE.getGameEventHandler().onSendChatMessage(event);
if (event.isCancelled()) { if (event.isCancelled()) {
ci.cancel(); ci.cancel();
@ -57,7 +57,7 @@ public class MixinEntityPlayerSP {
) )
) )
private void onPreUpdate(CallbackInfo ci) { private void onPreUpdate(CallbackInfo ci) {
Baritone.INSTANCE.getGameEventHandler().onPlayerUpdate(new PlayerUpdateEvent(EventState.PRE)); Baritone.INSTANCE.getGameEventHandler().onPlayerUpdate(new PlayerUpdateEvent((EntityPlayerSP) (Object) this, EventState.PRE));
} }
@Inject( @Inject(
@ -70,6 +70,6 @@ public class MixinEntityPlayerSP {
) )
) )
private void onPostUpdate(CallbackInfo ci) { private void onPostUpdate(CallbackInfo ci) {
Baritone.INSTANCE.getGameEventHandler().onPlayerUpdate(new PlayerUpdateEvent(EventState.POST)); Baritone.INSTANCE.getGameEventHandler().onPlayerUpdate(new PlayerUpdateEvent((EntityPlayerSP) (Object) this, EventState.POST));
} }
} }

View File

@ -54,7 +54,7 @@ public class MixinNetworkManager {
) )
private void preDispatchPacket(Packet<?> inPacket, final GenericFutureListener<? extends Future<? super Void>>[] futureListeners, CallbackInfo ci) { private void preDispatchPacket(Packet<?> inPacket, final GenericFutureListener<? extends Future<? super Void>>[] futureListeners, CallbackInfo ci) {
if (this.direction == EnumPacketDirection.CLIENTBOUND) { if (this.direction == EnumPacketDirection.CLIENTBOUND) {
Baritone.INSTANCE.getGameEventHandler().onSendPacket(new PacketEvent(EventState.PRE, inPacket)); Baritone.INSTANCE.getGameEventHandler().onSendPacket(new PacketEvent((NetworkManager) (Object) this, EventState.PRE, inPacket));
} }
} }
@ -64,7 +64,7 @@ public class MixinNetworkManager {
) )
private void postDispatchPacket(Packet<?> inPacket, final GenericFutureListener<? extends Future<? super Void>>[] futureListeners, CallbackInfo ci) { private void postDispatchPacket(Packet<?> inPacket, final GenericFutureListener<? extends Future<? super Void>>[] futureListeners, CallbackInfo ci) {
if (this.direction == EnumPacketDirection.CLIENTBOUND) { if (this.direction == EnumPacketDirection.CLIENTBOUND) {
Baritone.INSTANCE.getGameEventHandler().onSendPacket(new PacketEvent(EventState.POST, inPacket)); Baritone.INSTANCE.getGameEventHandler().onSendPacket(new PacketEvent((NetworkManager) (Object) this, EventState.POST, inPacket));
} }
} }
@ -77,7 +77,7 @@ public class MixinNetworkManager {
) )
private void preProcessPacket(ChannelHandlerContext context, Packet<?> packet, CallbackInfo ci) { private void preProcessPacket(ChannelHandlerContext context, Packet<?> packet, CallbackInfo ci) {
if (this.direction == EnumPacketDirection.CLIENTBOUND) { if (this.direction == EnumPacketDirection.CLIENTBOUND) {
Baritone.INSTANCE.getGameEventHandler().onReceivePacket(new PacketEvent(EventState.PRE, packet));} Baritone.INSTANCE.getGameEventHandler().onReceivePacket(new PacketEvent((NetworkManager) (Object) this, EventState.PRE, packet));}
} }
@Inject( @Inject(
@ -86,7 +86,7 @@ public class MixinNetworkManager {
) )
private void postProcessPacket(ChannelHandlerContext context, Packet<?> packet, CallbackInfo ci) { private void postProcessPacket(ChannelHandlerContext context, Packet<?> packet, CallbackInfo ci) {
if (this.channel.isOpen() && this.direction == EnumPacketDirection.CLIENTBOUND) { if (this.channel.isOpen() && this.direction == EnumPacketDirection.CLIENTBOUND) {
Baritone.INSTANCE.getGameEventHandler().onReceivePacket(new PacketEvent(EventState.POST, packet)); Baritone.INSTANCE.getGameEventHandler().onReceivePacket(new PacketEvent((NetworkManager) (Object) this, EventState.POST, packet));
} }
} }
} }