5 Commits

7 changed files with 28 additions and 14 deletions

View File

@@ -51,8 +51,8 @@ pipeline {
projectSlug: "craterlib", projectSlug: "craterlib",
projectName: "${projectName}", projectName: "${projectName}",
projectIcon: "${projectIcon}", projectIcon: "${projectIcon}",
versionName: "Snapshot 1.0.${BUILD_NUMBER}", versionName: "Snapshot 1.1.${BUILD_NUMBER}",
version: "1.0.${BUILD_NUMBER}", version: "1.1.${BUILD_NUMBER}",
modLoaders: "forge|fabric|quilt", modLoaders: "forge|fabric|quilt",
minecraftVersions: "1.19.2", minecraftVersions: "1.19.2",
failWebhook: env.SSS_WEBHOOK, failWebhook: env.SSS_WEBHOOK,

View File

@@ -11,11 +11,13 @@ public class MessageBroadcastEvent extends CraterEvent {
private final Component component; private final Component component;
private final Function<ServerPlayer, Component> function; private final Function<ServerPlayer, Component> function;
private final boolean bl; private final boolean bl;
private final String threadName;
public MessageBroadcastEvent(Component component, Function<ServerPlayer, Component> function, boolean bl) { public MessageBroadcastEvent(Component component, Function<ServerPlayer, Component> function, boolean bl, String threadName) {
this.component = component; this.component = component;
this.function = function; this.function = function;
this.bl = bl; this.bl = bl;
this.threadName = threadName;
} }
public Component getComponent() { public Component getComponent() {
@@ -30,6 +32,10 @@ public class MessageBroadcastEvent extends CraterEvent {
return function; return function;
} }
public String getThreadName() {
return threadName;
}
@Override @Override
public boolean canCancel() { public boolean canCancel() {
return false; return false;

View File

@@ -18,10 +18,8 @@ public class PlayerAdvancementsMixin {
@Inject(method = "award", at = @At(value = "INVOKE", target = "Lnet/minecraft/advancements/AdvancementRewards;grant(Lnet/minecraft/server/level/ServerPlayer;)V", shift = At.Shift.AFTER)) @Inject(method = "award", at = @At(value = "INVOKE", target = "Lnet/minecraft/advancements/AdvancementRewards;grant(Lnet/minecraft/server/level/ServerPlayer;)V", shift = At.Shift.AFTER))
private void injectAdvancementEvent(Advancement advancement, String $$1, CallbackInfoReturnable<Boolean> cir) { private void injectAdvancementEvent(Advancement advancement, String $$1, CallbackInfoReturnable<Boolean> cir) {
CraterAdvancementEvent event = new CraterAdvancementEvent(this.player, advancement);
if (advancement.getDisplay() != null && advancement.getDisplay().shouldAnnounceChat()) { if (advancement.getDisplay() != null && advancement.getDisplay().shouldAnnounceChat()) {
CraterEventBus.INSTANCE.postEvent(event); CraterEventBus.INSTANCE.postEvent(new CraterAdvancementEvent(this.player, advancement));
} }
} }
} }

View File

@@ -23,7 +23,8 @@ public class PlayerListMixin {
@Inject(method = "broadcastSystemMessage(Lnet/minecraft/network/chat/Component;Ljava/util/function/Function;Z)V", at = @At("HEAD")) @Inject(method = "broadcastSystemMessage(Lnet/minecraft/network/chat/Component;Ljava/util/function/Function;Z)V", at = @At("HEAD"))
private void injectBroadcastEvent(Component component, Function<ServerPlayer, Component> function, boolean bl, CallbackInfo ci) { private void injectBroadcastEvent(Component component, Function<ServerPlayer, Component> function, boolean bl, CallbackInfo ci) {
MessageBroadcastEvent event = new MessageBroadcastEvent(component, function, bl); String thread = Thread.currentThread().getStackTrace()[3].getClassName();
MessageBroadcastEvent event = new MessageBroadcastEvent(component, function, bl, thread);
CraterEventBus.INSTANCE.postEvent(event); CraterEventBus.INSTANCE.postEvent(event);
} }

View File

@@ -2,24 +2,33 @@ package com.hypherionmc.craterlib.mixin.events;
import com.hypherionmc.craterlib.api.event.server.CraterServerChatEvent; import com.hypherionmc.craterlib.api.event.server.CraterServerChatEvent;
import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.hypherionmc.craterlib.core.event.CraterEventBus;
import net.minecraft.network.chat.Component;
import net.minecraft.network.chat.PlayerChatMessage; import net.minecraft.network.chat.PlayerChatMessage;
import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.level.ServerPlayer;
import net.minecraft.server.network.FilteredText;
import net.minecraft.server.network.ServerGamePacketListenerImpl; import net.minecraft.server.network.ServerGamePacketListenerImpl;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
@Mixin(ServerGamePacketListenerImpl.class) import java.util.concurrent.CompletableFuture;
@Mixin(value = ServerGamePacketListenerImpl.class, priority = Integer.MIN_VALUE)
public class ServerGamePacketListenerImplMixin { public class ServerGamePacketListenerImplMixin {
@Shadow @Shadow
public ServerPlayer player; public ServerPlayer player;
@Inject(method = "broadcastChatMessage", at = @At("HEAD"), cancellable = true) @Inject(
private void injectChatEvent(PlayerChatMessage chatMessage, CallbackInfo ci) { method = "lambda$handleChat$9",
CraterServerChatEvent event = new CraterServerChatEvent(this.player, chatMessage.serverContent().getString(), chatMessage.serverContent()); at = @At("HEAD"),
cancellable = true
)
private void injectChatEvent(PlayerChatMessage arg, CallbackInfoReturnable<CompletableFuture> ci) {
CraterServerChatEvent event = new CraterServerChatEvent(this.player, arg.serverContent().getString(), arg.serverContent());
CraterEventBus.INSTANCE.postEvent(event); CraterEventBus.INSTANCE.postEvent(event);
if (event.wasCancelled()) if (event.wasCancelled())
ci.cancel(); ci.cancel();

View File

@@ -111,8 +111,8 @@ publisher {
versionType = "release" versionType = "release"
changelog = "https://raw.githubusercontent.com/hypherionmc/changelogs/main/craterlib/changelog-forge.md" changelog = "https://raw.githubusercontent.com/hypherionmc/changelogs/main/craterlib/changelog-forge.md"
version = "${minecraft_version}-${project.version}" version = "${minecraft_version}-${project.version}"
displayName = "[FORGE 1.20.1/2] CraterLib - ${project.version}" displayName = "[FORGE 1.19.2] CraterLib - ${project.version}"
gameVersions = ["1.20", "1.20.1"] gameVersions = ["1.19.2"]
loaders = ["forge"] loaders = ["forge"]
artifact = remapJar artifact = remapJar
} }

View File

@@ -1,7 +1,7 @@
#Project #Project
version_major=1 version_major=1
version_minor=1 version_minor=1
version_patch=0 version_patch=2
project_group=com.hypherionmc.craterlib project_group=com.hypherionmc.craterlib
#Mod #Mod