Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,9 @@
import com.rappytv.betterfriends.ui.hud.UnreadChatCountWidget;
import com.rappytv.betterfriends.ui.tags.FriendNoteNameTag;
import com.rappytv.betterfriends.ui.tags.FriendPinIconTag;
import com.rappytv.betterfriends.utils.FriendshipExpirationHandler;
import com.rappytv.betterfriends.utils.GroupHelper;
import com.rappytv.betterfriends.utils.VoiceChatHelper;
import net.labymod.api.Laby;
import net.labymod.api.addon.LabyAddon;
import net.labymod.api.client.component.Component;
Expand All @@ -36,15 +39,20 @@ public class BetterFriendsAddon extends LabyAddon<BetterFriendsConfig> {

private final LegacyComponentSerializer serializer = LegacyComponentSerializer.legacyAmpersand();
private static BetterFriendsAddon instance;
private final VoiceChatHelper voiceChatHelper = new VoiceChatHelper();
private FriendshipExpirationHandler expirationHandler;

@Override
protected void enable() {
instance = this;
this.registerSettingCategory();
GroupHelper.registerGroupIds();
this.expirationHandler = new FriendshipExpirationHandler(this);

this.registerCommand(new BetterFriendsCommand());

this.registerListener(new ChatReceiveListener(this));
this.registerListener(this.expirationHandler);
this.registerListener(new FriendAddListener(this));
this.registerListener(new FriendRemoveListener(this));
this.registerListener(new FriendRequestReceiveListener(this));
Expand Down Expand Up @@ -101,6 +109,18 @@ public static TextComponent getPrefix() {
.append(Component.space());
}

public static BetterFriendsAddon getInstance() {
return instance;
}

public FriendshipExpirationHandler getExpirationHandler() {
return this.expirationHandler;
}

public VoiceChatHelper getVoiceChatHelper() {
return this.voiceChatHelper;
}

public LegacyComponentSerializer getSerializer() {
return this.serializer;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import java.util.List;
import java.util.UUID;
import com.rappytv.betterfriends.listeners.LabyChatReceiveListener;
import com.rappytv.betterfriends.utils.NameHelper;
import com.rappytv.betterfriends.utils.GroupHelper;
import net.labymod.api.Laby;
import net.labymod.api.client.chat.command.Command;
import net.labymod.api.client.chat.command.SubCommand;
Expand Down Expand Up @@ -99,7 +99,7 @@ public boolean execute(String prefix, String[] arguments) {
.append(Component.translatable(
this.getTranslationKey("success.accept"),
NamedTextColor.GRAY,
NameHelper.getColoredName(request.getName(), request.gameUser())
GroupHelper.getColoredName(request.getName(), request.gameUser())
))
);
return true;
Expand Down Expand Up @@ -160,7 +160,7 @@ public boolean execute(String prefix, String[] arguments) {
.append(Component.translatable(
this.getTranslationKey("success.decline"),
NamedTextColor.GRAY,
NameHelper.getColoredName(request.getName(), request.gameUser())
GroupHelper.getColoredName(request.getName(), request.gameUser())
))
);
return true;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
package com.rappytv.betterfriends.config;

import com.rappytv.betterfriends.config.subconfig.FriendNoteTagConfig;
import com.rappytv.betterfriends.config.subconfig.FriendlistExpiryConfig;
import com.rappytv.betterfriends.config.subconfig.PinIconConfig;
import com.rappytv.betterfriends.ui.activities.config.FriendlistActivity;
import com.rappytv.betterfriends.ui.widgets.FriendlistFriendWidget;
import net.labymod.api.addon.AddonConfig;
import net.labymod.api.client.gui.screen.activity.Activity;
import net.labymod.api.client.gui.screen.widget.widgets.activity.settings.ActivitySettingWidget.ActivitySetting;
import net.labymod.api.client.gui.screen.widget.widgets.input.SwitchWidget.SwitchSetting;
import net.labymod.api.client.gui.screen.widget.widgets.input.TextFieldWidget.TextFieldSetting;
import net.labymod.api.client.gui.screen.widget.widgets.input.color.ColorPickerWidget.ColorPickerSetting;
Expand All @@ -13,6 +18,7 @@
import net.labymod.api.configuration.settings.annotation.SettingRequires;
import net.labymod.api.configuration.settings.annotation.SettingSection;
import net.labymod.api.util.Color;
import net.labymod.api.util.MethodOrder;

@SpriteTexture("settings.png")
public class BetterFriendsConfig extends AddonConfig {
Expand All @@ -24,6 +30,15 @@ public class BetterFriendsConfig extends AddonConfig {
@SpriteSlot(x = 1)
@ColorPickerSetting
private final ConfigProperty<Color> prefixColor = new ConfigProperty<>(Color.ofRGB(255, 102, 0));

@MethodOrder(after = "prefixColor")
@ActivitySetting
public Activity advancedFriendlist() {
return new FriendlistActivity<>(FriendlistFriendWidget::new);
}

private final FriendlistExpiryConfig expiryConfig = new FriendlistExpiryConfig();

@SpriteSlot(size = 8, x = 4)
private final PinIconConfig pinIconConfig = new PinIconConfig();
@SpriteSlot(x = 3)
Expand Down Expand Up @@ -81,6 +96,9 @@ public ConfigProperty<Boolean> enabled() {
public ConfigProperty<Color> prefixColor() {
return this.prefixColor;
}
public FriendlistExpiryConfig expiryConfig() {
return this.expiryConfig;
}
public PinIconConfig pinIconConfig() {
return this.pinIconConfig;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
package com.rappytv.betterfriends.config.subconfig;

import net.labymod.api.client.gui.screen.activity.Activity;
import net.labymod.api.client.gui.screen.widget.widgets.activity.settings.ActivitySettingWidget.ActivitySetting;
import net.labymod.api.client.gui.screen.widget.widgets.input.SwitchWidget.SwitchSetting;
import net.labymod.api.configuration.loader.Config;
import net.labymod.api.configuration.loader.annotation.Exclude;
import net.labymod.api.configuration.loader.property.ConfigProperty;
import net.labymod.api.util.MethodOrder;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;

public class FriendlistExpiryConfig extends Config {

@Exclude
private final Map<UUID, Long> expirations = new HashMap<>();

@SwitchSetting
private final ConfigProperty<Boolean> sendNotifications = new ConfigProperty<>(true);

@SwitchSetting
private final ConfigProperty<Boolean> notifyOnExpiration = new ConfigProperty<>(true);

@MethodOrder(after = "notifyOnExpiration")
@ActivitySetting
public Activity manageExpirationDates() {
return null;
}

public void addExpiration(UUID uuid, long expiration) {
this.expirations.put(uuid, expiration);
}

public void removeExpiration(UUID uuid) {
this.expirations.remove(uuid);
}

public Map<UUID, Long> getExpirations() {
return this.expirations;
}

public ConfigProperty<Boolean> sendNotifications() {
return this.sendNotifications;
}
public ConfigProperty<Boolean> notifyOnExpiration() {
return this.notifyOnExpiration;
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package com.rappytv.betterfriends.listeners;

import com.rappytv.betterfriends.BetterFriendsAddon;
import net.labymod.addons.voicechat.api.audio.stream.AudioStreamState;
import net.labymod.addons.voicechat.api.client.VoiceConnector;
import net.labymod.addons.voicechat.core.VoiceChatAddon;
import com.rappytv.betterfriends.ui.activities.FriendlistExpirationActivity;
import net.labymod.api.Laby;
import net.labymod.api.client.component.Component;
import net.labymod.api.client.gui.icon.Icon;
import net.labymod.api.event.Subscribe;
import net.labymod.api.event.labymod.labyconnect.session.friend.LabyConnectFriendAddEvent;
import net.labymod.api.notification.Notification;
import net.labymod.api.notification.Notification.NotificationButton;

public class FriendAddListener {

Expand All @@ -18,28 +20,28 @@ public FriendAddListener(BetterFriendsAddon addon) {

@Subscribe
public void onFriendAdd(LabyConnectFriendAddEvent event) {
if (!this.addon.configuration().restartWhenMuted().get()) {
return;
if(this.addon.configuration().expiryConfig().sendNotifications().get()) {
Notification.builder()
.title(Component.translatable("betterfriends.notifications.friendshipExpiration.set.title"))
.text(Component.translatable("betterfriends.notifications.friendshipExpiration.set.description"))
.icon(Icon.head(event.friend().getUniqueId(), true))
.addButton(NotificationButton.of(
Component.translatable("betterfriends.notifications.friendshipExpiration.set.button"),
() -> Laby.labyAPI().minecraft().minecraftWindow().displayScreen(
new FriendlistExpirationActivity(event.friend())
)
))
.duration(20000)
.buildAndPush();
}

if (!Laby.labyAPI().addonService().isEnabled("voicechat")) {
if (!this.addon.configuration().restartWhenMuted().get()) {
return;
}

VoiceConnector client = VoiceChatAddon.INSTANCE.client();
if (!client.isAuthenticated() || !this.isSelfMuted()) {
if (!this.addon.getVoiceChatHelper().isEnabled()) {
return;
}

client.disconnect();
client.connect();
this.addon.getVoiceChatHelper().reconnect();
}

private boolean isSelfMuted() {
return VoiceChatAddon.INSTANCE
.referenceStorage()
.audioStreamRegistry()
.getState(Laby.labyAPI().getUniqueId(), false) == AudioStreamState.INPUT_GLOBAL_MUTED;
}

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.rappytv.betterfriends.listeners;

import com.rappytv.betterfriends.BetterFriendsAddon;
import com.rappytv.betterfriends.utils.NameHelper;
import com.rappytv.betterfriends.utils.GroupHelper;
import net.labymod.api.client.component.Component;
import net.labymod.api.client.gui.icon.Icon;
import net.labymod.api.event.Subscribe;
Expand All @@ -25,7 +25,7 @@ public void onFriendRemove(LabyConnectFriendRemoveEvent event) {
.title(Component.translatable("betterfriends.notifications.friendRemoval.title"))
.text(Component.translatable(
"betterfriends.notifications.friendRemoval.description",
NameHelper.getColoredName(event.friend())
GroupHelper.getColoredName(event.friend())
))
.icon(Icon.head(event.friend().getUniqueId(), true))
.duration(15000)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.rappytv.betterfriends.listeners;

import com.rappytv.betterfriends.BetterFriendsAddon;
import com.rappytv.betterfriends.utils.NameHelper;
import com.rappytv.betterfriends.utils.GroupHelper;
import net.labymod.api.Laby;
import net.labymod.api.client.component.Component;
import net.labymod.api.client.component.event.ClickEvent;
Expand All @@ -25,7 +25,7 @@ public void onFriendRequestReceive(LabyConnectIncomingFriendRequestAddEvent even
return;
}
IncomingFriendRequest request = event.request();
Component sender = NameHelper.getColoredName(request.getName(), request.gameUser())
Component sender = GroupHelper.getColoredName(request.getName(), request.gameUser())
.hoverEvent(HoverEvent.showText(Component.translatable(
"betterfriends.general.labynet",
NamedTextColor.DARK_PURPLE
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.rappytv.betterfriends.listeners;

import com.rappytv.betterfriends.BetterFriendsAddon;
import com.rappytv.betterfriends.utils.NameHelper;
import com.rappytv.betterfriends.utils.GroupHelper;
import net.labymod.api.client.component.Component;
import net.labymod.api.client.gui.icon.Icon;
import net.labymod.api.event.Subscribe;
Expand Down Expand Up @@ -34,7 +34,7 @@ public void onFriendRequestRemove(LabyConnectOutgoingFriendRequestRemoveEvent ev
.title(Component.translatable("betterfriends.notifications.friendRequestRemoval.title"))
.text(Component.translatable(
"betterfriends.notifications.friendRequestRemoval.description",
NameHelper.getColoredName(event.request().getName(), event.request().gameUser())
GroupHelper.getColoredName(event.request().getName(), event.request().gameUser())
))
.icon(Icon.head(event.request().getUniqueId(), true))
.duration(15000)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.rappytv.betterfriends.listeners;

import com.rappytv.betterfriends.BetterFriendsAddon;
import com.rappytv.betterfriends.utils.NameHelper;
import com.rappytv.betterfriends.utils.GroupHelper;
import net.labymod.api.client.component.Component;
import net.labymod.api.client.component.event.ClickEvent;
import net.labymod.api.client.component.event.HoverEvent;
Expand Down Expand Up @@ -68,7 +68,7 @@ public void onServerUpdate(LabyConnectFriendServerEvent event) {
this.addon.displayMessage(
Component.empty()
.append(BetterFriendsAddon.getPrefix())
.append(NameHelper.getColoredName(friend))
.append(GroupHelper.getColoredName(friend))
.append(Component.space())
.append(text)
.color(NamedTextColor.GRAY)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.rappytv.betterfriends.listeners;

import com.rappytv.betterfriends.BetterFriendsAddon;
import com.rappytv.betterfriends.utils.NameHelper;
import com.rappytv.betterfriends.utils.GroupHelper;
import net.labymod.api.client.component.Component;
import net.labymod.api.client.component.format.NamedTextColor;
import net.labymod.api.event.Subscribe;
Expand Down Expand Up @@ -39,7 +39,7 @@ public void onStatusUpdate(LabyConnectFriendStatusEvent event) {
.append(BetterFriendsAddon.getPrefix())
.append(Component.translatable(
"betterfriends.notifications.statusUpdate.message",
NameHelper.getColoredName(event.friend()),
GroupHelper.getColoredName(event.friend()),
stateComponent
))
.color(NamedTextColor.GRAY)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.rappytv.betterfriends.listeners;

import com.rappytv.betterfriends.BetterFriendsAddon;
import com.rappytv.betterfriends.utils.NameHelper;
import com.rappytv.betterfriends.utils.GroupHelper;
import net.labymod.api.Laby;
import net.labymod.api.client.component.Component;
import net.labymod.api.client.component.event.ClickEvent;
Expand Down Expand Up @@ -51,9 +51,9 @@ public void onChatReceive(LabyConnectChatMessageEvent event) {

Component component = Component.empty()
.append(BetterFriendsAddon.getPrefix())
.append(NameHelper.getColoredName(sender.getName(), sender.gameUser()))
.append(GroupHelper.getColoredName(sender.getName(), sender.gameUser()))
.append(Component.text(" → ", NamedTextColor.DARK_GRAY))
.append(NameHelper.getColoredName(receiver.getName(), receiver.gameUser()))
.append(GroupHelper.getColoredName(receiver.getName(), receiver.gameUser()))
.append(Component.text(" » ", NamedTextColor.DARK_GRAY))
.append(Component.text(message.getMessage(), NamedTextColor.WHITE));

Expand Down
Loading