This commit is contained in:
samolego 2020-12-11 08:18:32 +01:00
parent 9e01af9e9f
commit dc9b151b64
4 changed files with 15 additions and 17 deletions

View File

@ -3,11 +3,11 @@ org.gradle.jvmargs=-Xmx1G
# Fabric properties # Fabric properties
minecraft_version=1.16.4 minecraft_version=1.16.4
yarn_mappings=1.16.4+build.1 yarn_mappings=1.16.4+build.7
loader_version=0.10.6+build.214 loader_version=0.10.8
#Fabric api #Fabric api
fabric_version=0.25.1+build.416-1.16 fabric_version=0.28.0+1.16
# Mod Properties # Mod Properties
mod_version = 1.7.3 mod_version = 1.7.3

View File

@ -117,7 +117,7 @@ public class AuthEventHandler {
// Setting the session expire time // Setting the session expire time
if(config.main.sessionTimeoutTime != -1) if(config.main.sessionTimeoutTime != -1)
playerCache.validUntil = System.currentTimeMillis() + config.main.sessionTimeoutTime * 1000; playerCache.validUntil = System.currentTimeMillis() + config.main.sessionTimeoutTime * 1000L;
} }
else if(config.main.spawnOnJoin) { else if(config.main.spawnOnJoin) {
((PlayerAuth) player).hidePosition(false); ((PlayerAuth) player).hidePosition(false);
@ -128,14 +128,13 @@ public class AuthEventHandler {
} }
// Player chatting // Player chatting
public static ActionResult onPlayerChat(PlayerEntity player, ChatMessageC2SPacket chatMessageC2SPacket) { public static ActionResult onPlayerChat(PlayerEntity player, String message) {
// Getting the message to then be able to check it // Getting the message to then be able to check it
String msg = chatMessageC2SPacket.getChatMessage();
if( if(
!((PlayerAuth) player).isAuthenticated() && !((PlayerAuth) player).isAuthenticated() &&
!msg.startsWith("/login") && !message.startsWith("/login") &&
!msg.startsWith("/register") && !message.startsWith("/register") &&
(!config.experimental.allowChat || msg.startsWith("/")) (!config.experimental.allowChat || message.startsWith("/"))
) { ) {
player.sendMessage(((PlayerAuth) player).getAuthMessage(), false); player.sendMessage(((PlayerAuth) player).getAuthMessage(), false);
return ActionResult.FAIL; return ActionResult.FAIL;

View File

@ -7,9 +7,9 @@ import net.minecraft.network.packet.c2s.play.ChatMessageC2SPacket;
import net.minecraft.util.ActionResult; import net.minecraft.util.ActionResult;
public interface ChatCallback { public interface ChatCallback {
Event<ChatCallback> EVENT = EventFactory.createArrayBacked(ChatCallback.class, listeners -> (player, chatMessageC2SPacket) -> { Event<ChatCallback> EVENT = EventFactory.createArrayBacked(ChatCallback.class, listeners -> (player, message) -> {
for (ChatCallback event : listeners) { for (ChatCallback event : listeners) {
ActionResult result = event.onPlayerChat(player, chatMessageC2SPacket); ActionResult result = event.onPlayerChat(player, message);
if (result != ActionResult.PASS) { if (result != ActionResult.PASS) {
return result; return result;
@ -18,5 +18,5 @@ public interface ChatCallback {
return ActionResult.PASS; return ActionResult.PASS;
}); });
ActionResult onPlayerChat(PlayerEntity player, ChatMessageC2SPacket chatMessageC2SPacket); ActionResult onPlayerChat(PlayerEntity player, String message);
} }

View File

@ -24,17 +24,16 @@ public abstract class MixinServerPlayNetworkHandler {
public ServerPlayerEntity player; public ServerPlayerEntity player;
@Inject( @Inject(
method = "onGameMessage(Lnet/minecraft/network/packet/c2s/play/ChatMessageC2SPacket;)V", method = "method_31286(Ljava/lang/String;)V",
at = @At( at = @At(
value = "INVOKE", value = "INVOKE",
// Thanks to Liach for helping me out! target = "Lnet/minecraft/server/network/ServerPlayerEntity;updateLastActionTime()V",
target = "net/minecraft/network/NetworkThreadUtils.forceMainThread(Lnet/minecraft/network/Packet;Lnet/minecraft/network/listener/PacketListener;Lnet/minecraft/server/world/ServerWorld;)V",
shift = At.Shift.AFTER shift = At.Shift.AFTER
), ),
cancellable = true cancellable = true
) )
private void onChatMessage(ChatMessageC2SPacket chatMessageC2SPacket, CallbackInfo ci) { private void onPlayerChat(String message, CallbackInfo ci) {
ActionResult result = ChatCallback.EVENT.invoker().onPlayerChat(this.player, chatMessageC2SPacket); ActionResult result = ChatCallback.EVENT.invoker().onPlayerChat(this.player, message);
if (result == ActionResult.FAIL) { if (result == ActionResult.FAIL) {
ci.cancel(); ci.cancel();
} }