diff --git a/.jenkins/Jenkinsfile.deploy b/.jenkins/Jenkinsfile.deploy index 371b3e6..342fda3 100644 --- a/.jenkins/Jenkinsfile.deploy +++ b/.jenkins/Jenkinsfile.deploy @@ -9,7 +9,7 @@ pipeline { stage("Notify Discord") { steps { discordSend webhookURL: env.FDD_WH_ADMIN, - title: "Deploy Started: CraterLib 1.19.2 Deploy #${BUILD_NUMBER}", + title: "Deploy Started: CraterLib 1.18.2 Deploy #${BUILD_NUMBER}", link: env.BUILD_URL, result: 'SUCCESS', description: "Build: [${BUILD_NUMBER}](${env.BUILD_URL})" @@ -38,7 +38,7 @@ pipeline { deleteDir() discordSend webhookURL: env.FDD_WH_ADMIN, - title: "CraterLib 1.19.2 Deploy #${BUILD_NUMBER}", + title: "CraterLib 1.18.2 Deploy #${BUILD_NUMBER}", link: env.BUILD_URL, result: currentBuild.currentResult, description: "Build: [${BUILD_NUMBER}](${env.BUILD_URL})\nStatus: ${currentBuild.currentResult}" diff --git a/.jenkins/Jenkinsfile.snapshot b/.jenkins/Jenkinsfile.snapshot index 9ec6f95..d996ec6 100644 --- a/.jenkins/Jenkinsfile.snapshot +++ b/.jenkins/Jenkinsfile.snapshot @@ -13,7 +13,7 @@ pipeline { stage("Notify Discord") { steps { discordSend webhookURL: env.SSS_WEBHOOK, - title: "Deploy Started: ${projectName} 1.19.2 Deploy #${BUILD_NUMBER}", + title: "Deploy Started: ${projectName} 1.18.2 Deploy #${BUILD_NUMBER}", link: env.BUILD_URL, result: 'SUCCESS', description: "Build: [${BUILD_NUMBER}](${env.BUILD_URL})" @@ -51,10 +51,10 @@ pipeline { projectSlug: "craterlib", projectName: "${projectName}", projectIcon: "${projectIcon}", - versionName: "Snapshot 1.0.${BUILD_NUMBER}", - version: "1.0.${BUILD_NUMBER}", + versionName: "Snapshot 1.1.${BUILD_NUMBER}", + version: "1.1.${BUILD_NUMBER}", modLoaders: "forge|fabric|quilt", - minecraftVersions: "1.19.2", + minecraftVersions: "1.18.2", failWebhook: env.SSS_WEBHOOK, publishWebhooks: "${env.SSS_WEBHOOK}|${env.FDD_WH}" diff --git a/Common/build.gradle b/Common/build.gradle index a7d22c5..3c0d23a 100644 --- a/Common/build.gradle +++ b/Common/build.gradle @@ -2,7 +2,7 @@ archivesBaseName = "${mod_name.replace(" ", "")}-Common-${minecraft_version}" dependencies { implementation "com.hypherionmc:rpcsdk:1.0" - implementation("me.hypherionmc.sdlink:mcdiscordformatter-1.19.1:2.0.0") + implementation("me.hypherionmc.sdlink:mcdiscordformatter-1.18.1:2.0.0") } shadowJar { @@ -10,7 +10,7 @@ shadowJar { dependencies { include(dependency("me.hypherionmc.moon-config:core:${moon_config}")) include(dependency("me.hypherionmc.moon-config:toml:${moon_config}")) - include(dependency("me.hypherionmc.sdlink:mcdiscordformatter-1.19.1:2.0.0")) + include(dependency("me.hypherionmc.sdlink:mcdiscordformatter-1.18.1:2.0.0")) relocate 'me.hypherionmc.moonconfig', 'shadow.hypherionmc.moonconfig' relocate 'me.hypherionmc.mcdiscordformatter', 'shadow.hypherionmc.mcdiscordformatter' diff --git a/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/MessageBroadcastEvent.java b/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/MessageBroadcastEvent.java index b0ff353..ac3a71d 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/MessageBroadcastEvent.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/api/event/server/MessageBroadcastEvent.java @@ -1,20 +1,20 @@ package com.hypherionmc.craterlib.api.event.server; import com.hypherionmc.craterlib.core.event.CraterEvent; +import net.minecraft.network.chat.ChatType; import net.minecraft.network.chat.Component; -import net.minecraft.server.level.ServerPlayer; -import java.util.function.Function; +import java.util.UUID; public class MessageBroadcastEvent extends CraterEvent { private final Component component; - private final Function function; - private final boolean bl; + private final UUID uuid; + private final ChatType bl; - public MessageBroadcastEvent(Component component, Function function, boolean bl) { + public MessageBroadcastEvent(Component component, UUID uuid, ChatType bl) { this.component = component; - this.function = function; + this.uuid = uuid; this.bl = bl; } @@ -22,12 +22,12 @@ public class MessageBroadcastEvent extends CraterEvent { return component; } - public boolean isBl() { - return bl; + public ChatType getChatType() { + return this.bl; } - public Function getFunction() { - return function; + public UUID getUuid() { + return uuid; } @Override diff --git a/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/CraterConfigScreen.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/CraterConfigScreen.java index b1c9dd6..9b2bf8f 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/CraterConfigScreen.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/CraterConfigScreen.java @@ -2,6 +2,7 @@ package com.hypherionmc.craterlib.client.gui.config; import com.hypherionmc.craterlib.CraterConstants; import com.hypherionmc.craterlib.client.gui.config.widgets.*; +import com.hypherionmc.craterlib.core.abstraction.text.AbstractComponent; import com.hypherionmc.craterlib.core.config.ModuleConfig; import com.hypherionmc.craterlib.core.config.annotations.HideFromScreen; import com.hypherionmc.craterlib.core.config.annotations.SubConfig; @@ -48,7 +49,7 @@ public class CraterConfigScreen extends Screen { private boolean dragging; public CraterConfigScreen(ModuleConfig config, Screen parent, Object subConfig) { - super(Component.translatable("cl." + config.getClass().getSimpleName().toLowerCase() + ".title")); + super(AbstractComponent.translatable("cl." + config.getClass().getSimpleName().toLowerCase() + ".title")); this.parent = parent; this.config = config; if (subConfig != null) { @@ -63,11 +64,11 @@ public class CraterConfigScreen extends Screen { } private static Component toText(Enum val) { - return Component.translatable(val.toString()); + return AbstractComponent.translatable(val.toString()); } private static Component toText(Boolean bool) { - return Component.translatable(bool.toString()); + return AbstractComponent.translatable(bool.toString()); } private void setupScreenFromConfig(Object object, Class clazz) { @@ -93,7 +94,7 @@ public class CraterConfigScreen extends Screen { tooltipLang = field.getAnnotation(Tooltip.class).value(); } - add(Component.translatable(baseLangKey), + add(AbstractComponent.translatable(baseLangKey), val, () -> val, (ret) -> { @@ -171,8 +172,8 @@ public class CraterConfigScreen extends Screen { ((List) children()).addAll(options); int buttonWidths = Math.min(200, (width - 50 - 12) / 3); - addRenderableWidget(new InternalConfigButton(this, width / 2 - buttonWidths - 3, height - 22, buttonWidths, 20, Component.empty(), true)); - addRenderableWidget(new InternalConfigButton(this, width / 2 + 3, height - 22, buttonWidths, 20, Component.empty(), false)); + addRenderableWidget(new InternalConfigButton(this, width / 2 - buttonWidths - 3, height - 22, buttonWidths, 20, AbstractComponent.empty(), true)); + addRenderableWidget(new InternalConfigButton(this, width / 2 + 3, height - 22, buttonWidths, 20, AbstractComponent.empty(), false)); } @Override @@ -324,10 +325,10 @@ public class CraterConfigScreen extends Screen { @Override public void onClose() { if (isEdited()) { - minecraft.setScreen(new ConfirmScreen(this::acceptConfirm, Component.translatable("t.clc.quit_config"), - Component.translatable("t.clc.quit_config_sure"), - Component.translatable("t.clc.quit_discard"), - Component.translatable("gui.cancel"))); + minecraft.setScreen(new ConfirmScreen(this::acceptConfirm, AbstractComponent.translatable("t.clc.quit_config"), + AbstractComponent.translatable("t.clc.quit_config_sure"), + AbstractComponent.translatable("t.clc.quit_discard"), + AbstractComponent.translatable("gui.cancel"))); } else { minecraft.setScreen(parent); } @@ -382,9 +383,9 @@ public class CraterConfigScreen extends Screen { if (mouseX > startX && mouseX < startX + sizeX) { if (mouseY > startY && mouseY < startY + sizeY) { List list = new ArrayList<>(); - list.add(Component.translatable(ChatFormatting.BOLD + "" + ChatFormatting.YELLOW + title)); + list.add(AbstractComponent.translatable(ChatFormatting.BOLD + "" + ChatFormatting.YELLOW + title)); for (String desc : description) { - list.add(Component.translatable(desc)); + list.add(AbstractComponent.translatable(desc)); } renderComponentTooltip(stack, list, mouseX, mouseY); } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/BaseWidget.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/BaseWidget.java index 07cf984..980b431 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/BaseWidget.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/BaseWidget.java @@ -1,11 +1,11 @@ package com.hypherionmc.craterlib.client.gui.config.widgets; +import com.hypherionmc.craterlib.core.abstraction.text.AbstractComponent; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.ChatFormatting; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.Button; -import net.minecraft.network.chat.Component; import net.minecraft.network.chat.MutableComponent; import net.minecraft.network.chat.TextColor; @@ -16,7 +16,7 @@ import net.minecraft.network.chat.TextColor; public class BaseWidget extends Option { public static final int resetButtonOffset = 48; - private final Button resetButton = addChild(new Button(0, 0, 46, 20, Component.literal("Reset"), this::onResetPressed)); + private final Button resetButton = addChild(new Button(0, 0, 46, 20, AbstractComponent.literal("Reset"), this::onResetPressed)); private boolean hideReset = false; private boolean isSubConfig = false; @@ -40,7 +40,7 @@ public class BaseWidget extends Option { @Override public void render(Minecraft minecraft, Font font, int x, int y, int width, int height, PoseStack matrices, int mouseX, int mouseY, float delta) { - MutableComponent text = Component.literal(this.text.getString()); + MutableComponent text = AbstractComponent.literal(this.text.getString()); boolean edited = isEdited() || hasErrors; if (edited) { text.withStyle(ChatFormatting.ITALIC); diff --git a/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/InternalConfigButton.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/InternalConfigButton.java index 8d12e23..b2f8e20 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/InternalConfigButton.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/InternalConfigButton.java @@ -1,6 +1,7 @@ package com.hypherionmc.craterlib.client.gui.config.widgets; import com.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; +import com.hypherionmc.craterlib.core.abstraction.text.AbstractComponent; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.gui.components.AbstractButton; import net.minecraft.client.gui.narration.NarratedElementType; @@ -25,11 +26,11 @@ public class InternalConfigButton extends AbstractButton { @Override public void render(@NotNull PoseStack poseStack, int i, int j, float f) { if (cancel) { - setMessage(Component.translatable(screen.isEdited() ? "t.clc.cancel_discard" : "gui.cancel")); + setMessage(AbstractComponent.translatable(screen.isEdited() ? "t.clc.cancel_discard" : "gui.cancel")); } else { boolean hasErrors = screen.hasErrors(); active = screen.isEdited() && !hasErrors; - setMessage(Component.translatable(hasErrors ? "t.clc.error" : "t.clc.save")); + setMessage(AbstractComponent.translatable(hasErrors ? "t.clc.error" : "t.clc.save")); } super.render(poseStack, i, j, f); } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/SubConfigWidget.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/SubConfigWidget.java index a4d229d..4bc45eb 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/SubConfigWidget.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/SubConfigWidget.java @@ -1,13 +1,13 @@ package com.hypherionmc.craterlib.client.gui.config.widgets; import com.hypherionmc.craterlib.client.gui.config.CraterConfigScreen; +import com.hypherionmc.craterlib.core.abstraction.text.AbstractComponent; import com.hypherionmc.craterlib.core.config.ModuleConfig; import com.mojang.blaze3d.vertex.PoseStack; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.components.Button; import net.minecraft.client.gui.screens.Screen; -import net.minecraft.network.chat.Component; /** * @author HypherionSA @@ -23,12 +23,12 @@ public class SubConfigWidget extends AbstractConfigWidget { this.subConfig = subConfig; this.screen = screen; - this.widget = addChild(new Button(0, 0, 200, buttonHeight, Component.translatable("t.clc.opensubconfig"), this::openSubConfig)); + this.widget = addChild(new Button(0, 0, 200, buttonHeight, AbstractComponent.translatable("t.clc.opensubconfig"), this::openSubConfig)); } @Override public void render(Minecraft minecraft, Font font, int x, int y, int width, int height, PoseStack matrices, int mouseX, int mouseY, float delta) { - this.text = Component.literal(subConfig.getClass().getSimpleName().toLowerCase()); + this.text = AbstractComponent.literal(subConfig.getClass().getSimpleName().toLowerCase()); this.hideReset(); super.render(minecraft, font, x, y, width, height, matrices, mouseX, mouseY, delta); } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/ToggleButton.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/ToggleButton.java index f7c1bdd..b8f4839 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/ToggleButton.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/config/widgets/ToggleButton.java @@ -1,5 +1,6 @@ package com.hypherionmc.craterlib.client.gui.config.widgets; +import com.hypherionmc.craterlib.core.abstraction.text.AbstractComponent; import net.minecraft.client.gui.components.Button; import net.minecraft.network.chat.Component; @@ -18,7 +19,7 @@ public class ToggleButton extends AbstractConfigWidget { public ToggleButton(List options, Function toComponent) { this.options = options; this.toComponent = toComponent; - this.widget = addChild(new Button(0, 0, buttonWidth, buttonHeight, Component.empty(), this::switchNext)); + this.widget = addChild(new Button(0, 0, buttonWidth, buttonHeight, AbstractComponent.empty(), this::switchNext)); } @Override diff --git a/Common/src/main/java/com/hypherionmc/craterlib/client/gui/widgets/TimeSliderWidget.java b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/widgets/TimeSliderWidget.java index 7d5c60d..4d67738 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/client/gui/widgets/TimeSliderWidget.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/client/gui/widgets/TimeSliderWidget.java @@ -1,5 +1,6 @@ package com.hypherionmc.craterlib.client.gui.widgets; +import com.hypherionmc.craterlib.core.abstraction.text.AbstractComponent; import net.minecraft.client.gui.components.AbstractSliderButton; import net.minecraft.network.chat.Component; @@ -35,9 +36,9 @@ public class TimeSliderWidget extends AbstractSliderButton { if (this.value * this.maxValue >= 1200) { String appendString = (minutes == 1) ? "Minute" : "Minutes"; String doSeconds = ((seconds - (minutes * 60)) > 0) ? ", " + (seconds - (minutes * 60)) + " Seconds" : ""; - return Component.literal(minutes + " " + appendString + doSeconds); + return AbstractComponent.literal(minutes + " " + appendString + doSeconds); } else { - return Component.literal(seconds + " Seconds"); + return AbstractComponent.literal(seconds + " Seconds"); } } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/abstraction/server/AbstractServer.java b/Common/src/main/java/com/hypherionmc/craterlib/core/abstraction/server/AbstractServer.java index dc6d200..a85d7cb 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/abstraction/server/AbstractServer.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/abstraction/server/AbstractServer.java @@ -1,12 +1,14 @@ package com.hypherionmc.craterlib.core.abstraction.server; +import net.minecraft.Util; +import net.minecraft.network.chat.ChatType; import net.minecraft.network.chat.MutableComponent; import net.minecraft.server.MinecraftServer; public class AbstractServer { public static void broadcastMessage(MinecraftServer server, MutableComponent message) { - server.getPlayerList().broadcastSystemMessage(message, false); + server.getPlayerList().broadcastMessage(message, ChatType.CHAT, Util.NIL_UUID); } } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/core/abstraction/text/AbstractComponent.java b/Common/src/main/java/com/hypherionmc/craterlib/core/abstraction/text/AbstractComponent.java index 568b4d8..16d23bc 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/core/abstraction/text/AbstractComponent.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/core/abstraction/text/AbstractComponent.java @@ -1,23 +1,29 @@ package com.hypherionmc.craterlib.core.abstraction.text; -import net.minecraft.network.chat.Component; -import net.minecraft.network.chat.MutableComponent; -import net.minecraft.network.chat.Style; +import net.minecraft.network.chat.*; public class AbstractComponent { public static MutableComponent literal(String component) { - return Component.literal(component); + return new TextComponent(component); } public static MutableComponent translatable(String component) { - return Component.translatable(component); + return new TranslatableComponent(component); + } + + public static MutableComponent translatable(String component, Object... objects) { + return new TranslatableComponent(component, objects); } public static Component safeCopy(Component inComponent) { String value = inComponent.getString(); Style style = inComponent.getStyle(); - return Component.literal(value).withStyle(style); + return new TextComponent(value).withStyle(style); + } + + public static Component empty() { + return new TextComponent(""); } } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/CommandMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/CommandMixin.java index 7342352..4761ed6 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/CommandMixin.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/CommandMixin.java @@ -3,10 +3,14 @@ package com.hypherionmc.craterlib.mixin.events; import com.google.common.base.Throwables; import com.hypherionmc.craterlib.api.event.server.CraterCommandEvent; import com.hypherionmc.craterlib.core.event.CraterEventBus; +import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.ParseResults; +import com.mojang.brigadier.StringReader; import net.minecraft.commands.CommandSourceStack; import net.minecraft.commands.Commands; +import org.spongepowered.asm.mixin.Final; import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @@ -14,24 +18,38 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; @Mixin(Commands.class) public class CommandMixin { - @Inject(method = "performCommand", - at = @At(value = "INVOKE", - target = "Lcom/mojang/brigadier/CommandDispatcher;execute(Lcom/mojang/brigadier/ParseResults;)I", - shift = At.Shift.BEFORE - ), cancellable = true + @Shadow @Final private CommandDispatcher dispatcher; + + @Inject( + method = "performCommand", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/util/profiling/ProfilerFiller;push(Ljava/lang/String;)V", + shift = At.Shift.AFTER + ), + cancellable = true ) - private void injectCommandEvent(ParseResults stackParseResults, String command, CallbackInfoReturnable cir) { - CraterCommandEvent commandEvent = new CraterCommandEvent(stackParseResults, command); - CraterEventBus.INSTANCE.postEvent(commandEvent); - if (commandEvent.wasCancelled()) { - cir.setReturnValue(1); - return; + private void injectCommandEvent(CommandSourceStack stack, String command, CallbackInfoReturnable cir) { + StringReader stringreader = new StringReader(command); + if (stringreader.canRead() && stringreader.peek() == '/') { + stringreader.skip(); } - if (commandEvent.getException() != null) { - Throwables.throwIfUnchecked(commandEvent.getException()); - cir.setReturnValue(1); - } + try { + ParseResults parse = dispatcher.parse(stringreader, stack); + + CraterCommandEvent commandEvent = new CraterCommandEvent(parse, command); + CraterEventBus.INSTANCE.postEvent(commandEvent); + if (commandEvent.wasCancelled()) { + cir.setReturnValue(1); + return; + } + + if (commandEvent.getException() != null) { + Throwables.throwIfUnchecked(commandEvent.getException()); + cir.setReturnValue(1); + } + } catch (Exception ignored) {} } -} +} \ No newline at end of file diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerListMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerListMixin.java index 793a2fc..e98d039 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerListMixin.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerListMixin.java @@ -6,6 +6,7 @@ import com.hypherionmc.craterlib.api.event.server.PlayerPreLoginEvent; import com.hypherionmc.craterlib.core.event.CraterEventBus; import com.mojang.authlib.GameProfile; import net.minecraft.network.Connection; +import net.minecraft.network.chat.ChatType; import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.players.PlayerList; @@ -16,14 +17,14 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; import java.net.SocketAddress; -import java.util.function.Function; +import java.util.UUID; @Mixin(PlayerList.class) public class PlayerListMixin { - @Inject(method = "broadcastSystemMessage(Lnet/minecraft/network/chat/Component;Ljava/util/function/Function;Z)V", at = @At("HEAD")) - private void injectBroadcastEvent(Component component, Function function, boolean bl, CallbackInfo ci) { - MessageBroadcastEvent event = new MessageBroadcastEvent(component, function, bl); + @Inject(method = "broadcastMessage(Lnet/minecraft/network/chat/Component;Lnet/minecraft/network/chat/ChatType;Ljava/util/UUID;)V", at = @At("HEAD")) + private void injectBroadcast(Component component, ChatType chatType, UUID uUID, CallbackInfo ci) { + MessageBroadcastEvent event = new MessageBroadcastEvent(component, uUID, chatType); CraterEventBus.INSTANCE.postEvent(event); } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerMixin.java index 2e1fd0b..d327d9e 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerMixin.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/PlayerMixin.java @@ -14,7 +14,7 @@ public class PlayerMixin { @Inject(method = "die", at = @At("HEAD"), cancellable = true) private void injectPlayerDeathEvent(DamageSource damageSource, CallbackInfo ci) { - CraterLivingDeathEvent event = new CraterLivingDeathEvent(((Player) (Object) this), damageSource); + CraterLivingDeathEvent event = new CraterLivingDeathEvent(((Player)(Object) this), damageSource); CraterEventBus.INSTANCE.postEvent(event); if (event.wasCancelled()) ci.cancel(); diff --git a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerGamePacketListenerImplMixin.java b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerGamePacketListenerImplMixin.java index 27760be..61326fa 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerGamePacketListenerImplMixin.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/mixin/events/ServerGamePacketListenerImplMixin.java @@ -2,9 +2,11 @@ package com.hypherionmc.craterlib.mixin.events; import com.hypherionmc.craterlib.api.event.server.CraterServerChatEvent; import com.hypherionmc.craterlib.core.event.CraterEventBus; -import net.minecraft.network.chat.PlayerChatMessage; +import net.minecraft.network.chat.Component; +import net.minecraft.network.chat.TextComponent; import net.minecraft.server.level.ServerPlayer; import net.minecraft.server.network.ServerGamePacketListenerImpl; +import net.minecraft.server.network.TextFilter; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Shadow; import org.spongepowered.asm.mixin.injection.At; @@ -14,12 +16,15 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ServerGamePacketListenerImpl.class) public class ServerGamePacketListenerImplMixin { - @Shadow - public ServerPlayer player; + @Shadow public ServerPlayer player; - @Inject(method = "broadcastChatMessage", at = @At("HEAD"), cancellable = true) - private void injectChatEvent(PlayerChatMessage chatMessage, CallbackInfo ci) { - CraterServerChatEvent event = new CraterServerChatEvent(this.player, chatMessage.serverContent().getString(), chatMessage.serverContent()); + @Inject(method = "handleChat(Lnet/minecraft/server/network/TextFilter$FilteredText;)V", at = @At("HEAD"), cancellable = true) + private void injectChatEvent(TextFilter.FilteredText filteredText, CallbackInfo ci) { + Component message = new TextComponent(filteredText.getRaw()); + if (message.getString().startsWith("/")) + return; + + CraterServerChatEvent event = new CraterServerChatEvent(this.player, message.getString(), message); CraterEventBus.INSTANCE.postEvent(event); if (event.wasCancelled()) ci.cancel(); diff --git a/Common/src/main/java/com/hypherionmc/craterlib/util/LangUtils.java b/Common/src/main/java/com/hypherionmc/craterlib/util/LangUtils.java index fbba2ec..e2e0413 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/util/LangUtils.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/util/LangUtils.java @@ -1,5 +1,6 @@ package com.hypherionmc.craterlib.util; +import com.hypherionmc.craterlib.core.abstraction.text.AbstractComponent; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; @@ -10,19 +11,19 @@ import net.minecraft.network.chat.Component; public class LangUtils { public static Component getTooltipTitle(String key) { - return Component.literal(ChatFormatting.YELLOW + Component.translatable(key).getString()); + return AbstractComponent.literal(ChatFormatting.YELLOW + AbstractComponent.translatable(key).getString()); } public static String resolveTranslation(String key) { - return Component.translatable(key).getString(); + return AbstractComponent.translatable(key).getString(); } public static Component getTranslation(String key) { - return Component.translatable(key); + return AbstractComponent.translatable(key); } public static Component makeComponent(String text) { - return Component.translatable(text); + return AbstractComponent.translatable(text); } } diff --git a/Common/src/main/java/com/hypherionmc/craterlib/util/RenderUtils.java b/Common/src/main/java/com/hypherionmc/craterlib/util/RenderUtils.java index ba22ad9..e9f85c2 100644 --- a/Common/src/main/java/com/hypherionmc/craterlib/util/RenderUtils.java +++ b/Common/src/main/java/com/hypherionmc/craterlib/util/RenderUtils.java @@ -1,5 +1,6 @@ package com.hypherionmc.craterlib.util; +import com.hypherionmc.craterlib.core.abstraction.text.AbstractComponent; import com.mojang.math.Vector4f; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; @@ -26,7 +27,7 @@ public class RenderUtils { amount = amount / 81; capacity = capacity / 81; String text = String.valueOf((int) (((float) amount / capacity) * 100)); - return amount > 0 ? Component.literal(ChatFormatting.AQUA + text + "%") : Component.literal(text + "%"); + return amount > 0 ? AbstractComponent.literal(ChatFormatting.AQUA + text + "%") : AbstractComponent.literal(text + "%"); } public static Component getTimeDisplayString(double value) { @@ -35,21 +36,12 @@ public class RenderUtils { if (seconds >= 60) { String appendString = (minutes == 1) ? "Minute" : "Minutes"; String doSeconds = ((seconds - (minutes * 60)) > 0) ? ", " + (seconds - (minutes * 60)) + " Seconds" : ""; - return Component.literal(minutes + " " + appendString + doSeconds); + return AbstractComponent.literal(minutes + " " + appendString + doSeconds); } else { - return Component.literal(seconds + " Seconds"); + return AbstractComponent.literal(seconds + " Seconds"); } } - public static int renderColorFromDye(DyeColor color) { - return color.getMaterialColor().col | 0xFF000000; - } - - public static int alphaColorFromDye(DyeColor color, float alpha) { - float[] colors = color.getTextureDiffuseColors(); - return new Color(colors[0], colors[1], colors[2], alpha).getRGB(); - } - public static class ARGB32 { public static int alpha(int pPackedColor) { return pPackedColor >>> 24; @@ -67,4 +59,13 @@ public class RenderUtils { return pPackedColor & 255; } } + + public static int renderColorFromDye(DyeColor color) { + return color.getMaterialColor().col | 0xFF000000; + } + + public static int alphaColorFromDye(DyeColor color, float alpha) { + float[] colors = color.getTextureDiffuseColors(); + return new Color(colors[0], colors[1], colors[2], alpha).getRGB(); + } } diff --git a/Common/src/main/resources/pack.mcmeta b/Common/src/main/resources/pack.mcmeta index 263d366..41b63a1 100644 --- a/Common/src/main/resources/pack.mcmeta +++ b/Common/src/main/resources/pack.mcmeta @@ -1,6 +1,6 @@ { "pack": { "description": "${mod_name}", - "pack_format": 18 + "pack_format": 8 } } diff --git a/Fabric/build.gradle b/Fabric/build.gradle index cb56388..2a418c2 100644 --- a/Fabric/build.gradle +++ b/Fabric/build.gradle @@ -7,7 +7,7 @@ dependencies { shade "me.hypherionmc.moon-config:core:${moon_config}" shade "me.hypherionmc.moon-config:toml:${moon_config}" shade "com.hypherionmc:rpcsdk:1.0" - shade ("me.hypherionmc.sdlink:mcdiscordformatter-1.19.1:2.0.0") + shade ("me.hypherionmc.sdlink:mcdiscordformatter-1.18.1:2.0.0") modImplementation("com.terraformersmc:modmenu:${mod_menu_version}") { exclude(group: "net.fabricmc.fabric-api") @@ -116,8 +116,8 @@ publisher { versionType = "release" changelog = "https://raw.githubusercontent.com/hypherionmc/changelogs/main/craterlib/changelog-fabric.md" version = "${minecraft_version}-${project.version}" - displayName = "[FABRIC/QUILT 1.19.2] CraterLib - ${project.version}" - gameVersions = ["1.19.2"] + displayName = "[FABRIC/QUILT 1.18.2] CraterLib - ${project.version}" + gameVersions = ["1.18.2"] loaders = ["fabric", "quilt"] artifact = remapJar diff --git a/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java b/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java index eda7fe0..5e897bb 100644 --- a/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java +++ b/Fabric/src/main/java/com/hypherionmc/craterlib/CraterLibInitializer.java @@ -5,7 +5,7 @@ import com.hypherionmc.craterlib.api.event.server.CraterServerLifecycleEvent; import com.hypherionmc.craterlib.common.FabricCommonPlatform; import com.hypherionmc.craterlib.core.event.CraterEventBus; import net.fabricmc.api.ModInitializer; -import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback; +import net.fabricmc.fabric.api.command.v1.CommandRegistrationCallback; import net.fabricmc.fabric.api.event.lifecycle.v1.ServerLifecycleEvents; public class CraterLibInitializer implements ModInitializer { @@ -13,7 +13,7 @@ public class CraterLibInitializer implements ModInitializer { @Override public void onInitialize() { CommandRegistrationCallback.EVENT.register( - (dispatcher, registryAccess, environment) -> CraterEventBus.INSTANCE.postEvent(new CraterRegisterCommandEvent(dispatcher))); + (dispatcher, registryAccess) -> CraterEventBus.INSTANCE.postEvent(new CraterRegisterCommandEvent(dispatcher))); ServerLifecycleEvents.SERVER_STARTING.register(server -> { diff --git a/Fabric/src/main/resources/fabric.mod.json b/Fabric/src/main/resources/fabric.mod.json index 9bf71b9..bee67e6 100644 --- a/Fabric/src/main/resources/fabric.mod.json +++ b/Fabric/src/main/resources/fabric.mod.json @@ -33,7 +33,7 @@ "depends": { "fabricloader": ">=0.14.21", "fabric-api": "*", - "minecraft": "1.19.2", + "minecraft": "1.18.2", "java": ">=17" } } diff --git a/Forge/build.gradle b/Forge/build.gradle index 37100f9..7233161 100644 --- a/Forge/build.gradle +++ b/Forge/build.gradle @@ -5,7 +5,7 @@ dependencies { shade "me.hypherionmc.moon-config:core:${moon_config}" shade "me.hypherionmc.moon-config:toml:${moon_config}" shade "com.hypherionmc:rpcsdk:1.0" - shade ("me.hypherionmc.sdlink:mcdiscordformatter-1.19.1:2.0.0") + shade ("me.hypherionmc.sdlink:mcdiscordformatter-1.18.1:2.0.0") // Do not edit or remove implementation project(":Common") @@ -111,8 +111,8 @@ publisher { versionType = "release" changelog = "https://raw.githubusercontent.com/hypherionmc/changelogs/main/craterlib/changelog-forge.md" version = "${minecraft_version}-${project.version}" - displayName = "[FORGE 1.20.1/2] CraterLib - ${project.version}" - gameVersions = ["1.20", "1.20.1"] + displayName = "[FORGE 1.18.2] CraterLib - ${project.version}" + gameVersions = ["1.18.2"] loaders = ["forge"] artifact = remapJar } \ No newline at end of file diff --git a/Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientEvents.java b/Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientEvents.java index e5a6369..6baac4d 100644 --- a/Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientEvents.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/client/ForgeClientEvents.java @@ -13,7 +13,7 @@ import net.minecraftforge.fml.common.Mod; public class ForgeClientEvents { @SubscribeEvent - public static void clientTick(TickEvent.LevelTickEvent event) { + public static void clientTick(TickEvent.WorldTickEvent event) { CraterClientTickEvent craterClientTickEvent = new CraterClientTickEvent(Minecraft.getInstance().level); CraterEventBus.INSTANCE.postEvent(craterClientTickEvent); } diff --git a/Forge/src/main/java/com/hypherionmc/craterlib/mixin/ConfigScreenHandlerMixin.java b/Forge/src/main/java/com/hypherionmc/craterlib/mixin/ConfigScreenHandlerMixin.java index 24b342e..947b423 100644 --- a/Forge/src/main/java/com/hypherionmc/craterlib/mixin/ConfigScreenHandlerMixin.java +++ b/Forge/src/main/java/com/hypherionmc/craterlib/mixin/ConfigScreenHandlerMixin.java @@ -6,7 +6,7 @@ import com.hypherionmc.craterlib.core.config.ModuleConfig; import com.hypherionmc.craterlib.core.config.annotations.NoConfigScreen; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.screens.Screen; -import net.minecraftforge.client.ConfigScreenHandler; +import net.minecraftforge.client.ConfigGuiHandler; import net.minecraftforge.forgespi.language.IModInfo; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; @@ -19,7 +19,7 @@ import java.util.function.BiFunction; /** * @author HypherionSA */ -@Mixin(ConfigScreenHandler.class) +@Mixin(ConfigGuiHandler.class) public class ConfigScreenHandlerMixin { /** @@ -28,7 +28,7 @@ public class ConfigScreenHandlerMixin { * @param selectedMod * @param cir */ - @Inject(at = @At("RETURN"), method = "getScreenFactoryFor", cancellable = true, remap = false) + @Inject(at = @At("RETURN"), method = "getGuiFactoryFor", cancellable = true, remap = false) private static void injectConfigScreen(IModInfo selectedMod, CallbackInfoReturnable>> cir) { ConfigController.getMonitoredConfigs().forEach((conf, watcher) -> { if (!conf.getClass().isAnnotationPresent(NoConfigScreen.class)) { diff --git a/Forge/src/main/resources/META-INF/mods.toml b/Forge/src/main/resources/META-INF/mods.toml index 9d0f9ef..d6e1c40 100644 --- a/Forge/src/main/resources/META-INF/mods.toml +++ b/Forge/src/main/resources/META-INF/mods.toml @@ -1,5 +1,5 @@ modLoader = "javafml" -loaderVersion = "[43,)" +loaderVersion = "[40,)" license = "MIT" issueTrackerURL = "https://github.com/firstdarkdev/craterLib/issues" @@ -19,13 +19,13 @@ displayTest = "MATCH_VERSION" [[dependencies.${mod_id}]] modId = "forge" mandatory = true -versionRange = "[43,)" +versionRange = "[40,)" ordering = "NONE" side = "BOTH" [[dependencies.${mod_id}]] modId = "minecraft" mandatory = true -versionRange = "[1.19.2,1.19.3)" +versionRange = "[1.18.2,1.19)" ordering = "NONE" side = "BOTH" diff --git a/gradle.properties b/gradle.properties index 70cdcf3..603431a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,17 +10,17 @@ mod_id=craterlib mod_name=CraterLib # Shared -minecraft_version=1.19.2 +minecraft_version=1.18.2 # Fabric -fabric_api=0.76.0+1.19.2 +fabric_api=0.76.0+1.18.2 fabric_loader=0.14.21 # Forge -forge_version=43.2.0 +forge_version=40.2.0 # Dependencies -mod_menu_version=4.2.0-beta.2 +mod_menu_version=3.2.5 moon_config=1.0.9 # Publishing