2021-03-07 18:21:13 +00:00
|
|
|
package pm.j4.kerosene.mixin;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.Optional;
|
|
|
|
import net.minecraft.client.network.ClientPlayerEntity;
|
|
|
|
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 pm.j4.kerosene.modules.bindings.ChatCommands;
|
|
|
|
import pm.j4.kerosene.util.data.ChatCommand;
|
2021-03-08 01:10:33 +00:00
|
|
|
import pm.j4.kerosene.util.event.Event;
|
|
|
|
import pm.j4.kerosene.util.event.EventContext;
|
|
|
|
import pm.j4.kerosene.util.event.EventManager;
|
2021-03-07 18:21:13 +00:00
|
|
|
|
|
|
|
@Mixin(ClientPlayerEntity.class)
|
2021-03-08 01:10:33 +00:00
|
|
|
public class ClientPlayerEntityMixin {
|
2021-03-07 18:21:13 +00:00
|
|
|
@Inject(
|
|
|
|
at = @At("HEAD"),
|
|
|
|
method = "sendChatMessage",
|
|
|
|
cancellable = true
|
|
|
|
)
|
|
|
|
public void onChatMessage(String message, CallbackInfo ci) {
|
|
|
|
if(message.startsWith(".")) {
|
|
|
|
String[] args = message.split(" ");
|
|
|
|
String command = args[0].substring(1);
|
|
|
|
Optional<ChatCommand> matchingCommands = ChatCommands.findCommand(command);
|
|
|
|
|
|
|
|
List<String> newArgs = new ArrayList<>();
|
|
|
|
for(int i = 1;i < args.length; i++) {
|
|
|
|
newArgs.add(args[i]);
|
|
|
|
}
|
|
|
|
|
|
|
|
if (matchingCommands.isPresent()) {
|
|
|
|
matchingCommands.get().execute(newArgs);
|
|
|
|
}
|
|
|
|
ci.cancel();
|
|
|
|
}
|
|
|
|
}
|
2021-03-08 01:10:33 +00:00
|
|
|
|
|
|
|
@Inject(at =@At(value = "INVOKE",
|
|
|
|
target = "Lnet/minecraft/client/network/AbstractClientPlayerEntity;tick()V",
|
|
|
|
ordinal = 0),
|
|
|
|
method = "tick()V")
|
|
|
|
private void onTick(CallbackInfo ci) {
|
|
|
|
EventManager.fire(Event.TICK, EventContext.NoEventContext);
|
|
|
|
}
|
2021-03-07 18:21:13 +00:00
|
|
|
}
|