Fix all Scala errors!
This commit is contained in:
parent
a0a7f756c4
commit
a84cd4e8e3
9 changed files with 69 additions and 60 deletions
|
@ -24,7 +24,7 @@ object DiscordPlayerSender {
|
|||
}).useConstructor(user, channel, player, module))
|
||||
}
|
||||
|
||||
abstract class DiscordPlayerSender(val user: User, val channel: MessageChannel, var player: Player, val module: Nothing) extends DiscordSenderBase(user, channel) with IMCPlayer[DiscordPlayerSender] {
|
||||
abstract class DiscordPlayerSender(user: User, channel: MessageChannel, var player: Player, val module: Nothing) extends DiscordSenderBase(user, channel) with IMCPlayer[DiscordPlayerSender] {
|
||||
val vanillaCmdListener = new VCMDWrapper(VCMDWrapper.createListener(this, player, module))
|
||||
|
||||
override def getVanillaCmdListener: VCMDWrapper = this.vanillaCmdListener
|
||||
|
|
|
@ -72,7 +72,7 @@ object PlayerListWatcher {
|
|||
else lookupConstructor = null
|
||||
mock = Mockito.mock(dplc, Mockito.withSettings.defaultAnswer(new Answer[AnyRef]() { // Cannot call super constructor
|
||||
@throws[Throwable]
|
||||
override def answer(invocation: InvocationOnMock): Any = {
|
||||
override def answer(invocation: InvocationOnMock): AnyRef = {
|
||||
val method = invocation.getMethod
|
||||
if (!(method.getName == "sendMessage")) {
|
||||
if (method.getName == "sendAll") {
|
||||
|
|
|
@ -107,7 +107,7 @@ class FunModule extends Component[DiscordPlugin] with Listener {
|
|||
* Answers for a recognized question. Selected randomly.
|
||||
*/
|
||||
final private val serverReadyAnswers: ConfigData[util.ArrayList[String]] =
|
||||
getConfig.getData("serverReadyAnswers", () => Lists.newArrayList(FunModule.serverReadyStrings): _*)
|
||||
getConfig.getData("serverReadyAnswers", () => Lists.newArrayList(FunModule.serverReadyStrings: _*))
|
||||
|
||||
private def createUsableServerReadyStrings(): Unit =
|
||||
IntStream.range(0, serverReadyAnswers.get.size).forEach((i: Int) => FunModule.usableServerReadyStrings.add(i.toShort))
|
||||
|
|
|
@ -44,12 +44,14 @@ object MCChatCustom {
|
|||
MCChatUtils.lastmsgfromd.remove(channel.asLong)
|
||||
val count = lastmsgCustom.size
|
||||
lastmsgCustom.filterInPlace(lmd => {
|
||||
if (lmd.channel.getId.asLong != channel.asLong) return true
|
||||
lmd.mcchannel match {
|
||||
case room: ChatRoom => room.leaveRoom(lmd.dcp)
|
||||
case _ =>
|
||||
if (lmd.channel.getId.asLong != channel.asLong) true
|
||||
else {
|
||||
lmd.mcchannel match {
|
||||
case room: ChatRoom => room.leaveRoom(lmd.dcp)
|
||||
case _ =>
|
||||
}
|
||||
false
|
||||
}
|
||||
false
|
||||
})
|
||||
lastmsgCustom.size < count
|
||||
}
|
||||
|
|
|
@ -148,13 +148,14 @@ class MCChatListener(val module: MinecraftChatModule) extends Listener {
|
|||
&& e.getGroupID() == lmd.groupID) { //Check if this is the group we want to test - #58
|
||||
if (e.shouldSendTo(lmd.dcp)) { //Check original user's permissions
|
||||
doit(lmd)
|
||||
true
|
||||
}
|
||||
else {
|
||||
lmd.channel.createMessage("The user no longer has permission to view the channel, connection removed.").subscribe
|
||||
return false //If the user no longer has permission, remove the connection
|
||||
false //If the user no longer has permission, remove the connection
|
||||
}
|
||||
}
|
||||
true
|
||||
else true
|
||||
})
|
||||
}
|
||||
} catch {
|
||||
|
@ -382,7 +383,7 @@ class MCChatListener(val module: MinecraftChatModule) extends Listener {
|
|||
false
|
||||
}
|
||||
else {
|
||||
val cmb = ChatMessage.builder(dsender, user, dmessage + getAttachmentText()).fromCommand(false)
|
||||
val cmb = ChatMessage.builder(dsender, user, dmessage + getAttachmentText).fromCommand(false)
|
||||
if (clmd != null)
|
||||
TBMCChatAPI.SendChatMessage(cmb.permCheck(clmd.dcp).build, clmd.mcchannel)
|
||||
else
|
||||
|
@ -415,7 +416,7 @@ class MCChatListener(val module: MinecraftChatModule) extends Listener {
|
|||
val cmd = dmessage.substring(1)
|
||||
val cmdlowercased = cmd.toLowerCase
|
||||
if (dsender.isInstanceOf[DiscordSender] && notWhitelisted(cmdlowercased)) { // Command not whitelisted
|
||||
dsender.sendMessage("Sorry, you can only access these commands from here:\n" + whitelistedCommands() +
|
||||
dsender.sendMessage("Sorry, you can only access these commands from here:\n" + whitelistedCommands +
|
||||
(if (user.getConnectedID(classOf[TBMCPlayer]) == null)
|
||||
"\nTo access your commands, first please connect your accounts, using /connect in " + DPUtils.botmention
|
||||
+ "\nThen y" else "\nY") + "ou can access all of your regular commands (even offline) in private chat: DM me `mcchat`!")
|
||||
|
|
|
@ -22,7 +22,7 @@ import reactor.core.scala.publisher.SMono
|
|||
|
||||
import java.net.InetAddress
|
||||
import java.util
|
||||
import java.util._
|
||||
import java.util.UUID
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.atomic.AtomicInteger
|
||||
import java.util.logging.Level
|
||||
|
@ -137,12 +137,11 @@ object MCChatUtils {
|
|||
*/
|
||||
def forCustomAndAllMCChat(action: SMono[MessageChannel] => SMono[_], @Nullable toggle: ChannelconBroadcast, hookmsg: Boolean): SMono[_] = {
|
||||
if (notEnabled) return SMono.empty
|
||||
val list =
|
||||
List(if (!GeneralEventBroadcasterModule.isHooked || !hookmsg)
|
||||
forPublicPrivateChat(action) else SMono.empty) ++
|
||||
(if (toggle == null) MCChatCustom.lastmsgCustom
|
||||
else MCChatCustom.lastmsgCustom.filter(cc => (cc.toggles & (1 << toggle.id)) != 0))
|
||||
.map(_.channel).map(SMono.just).map(action)
|
||||
val list = List(if (!GeneralEventBroadcasterModule.isHooked || !hookmsg)
|
||||
forPublicPrivateChat(action) else SMono.empty) ++
|
||||
(if (toggle == null) MCChatCustom.lastmsgCustom
|
||||
else MCChatCustom.lastmsgCustom.filter(cc => (cc.toggles & (1 << toggle.id)) != 0))
|
||||
.map(_.channel).map(SMono.just).map(action)
|
||||
SMono.whenDelayError(list)
|
||||
}
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package buttondevteam.discordplugin.mcchat
|
||||
|
||||
import buttondevteam.discordplugin.DPUtils.FluxExtensions
|
||||
import buttondevteam.discordplugin.DPUtils.{FluxExtensions, MonoExtensions}
|
||||
import buttondevteam.discordplugin._
|
||||
import buttondevteam.lib.TBMCSystemChatEvent
|
||||
import buttondevteam.lib.player.{TBMCPlayer, TBMCPlayerBase, TBMCYEEHAWEvent}
|
||||
|
@ -15,8 +15,7 @@ import org.bukkit.event.player.PlayerLoginEvent.Result
|
|||
import org.bukkit.event.player._
|
||||
import org.bukkit.event.server.{BroadcastMessageEvent, TabCompleteEvent}
|
||||
import org.bukkit.event.{EventHandler, EventPriority, Listener}
|
||||
import reactor.core.publisher.Flux
|
||||
import reactor.core.scala.publisher.SMono
|
||||
import reactor.core.scala.publisher.{SFlux, SMono}
|
||||
|
||||
class MCListener(val module: MinecraftChatModule) extends Listener {
|
||||
final private val muteRole = DPUtils.roleData(module.getConfig, "muteRole", "Muted")
|
||||
|
@ -35,8 +34,8 @@ class MCListener(val module: MinecraftChatModule) extends Listener {
|
|||
val p = e.getPlayer
|
||||
val dp = TBMCPlayerBase.getPlayer(p.getUniqueId, classOf[TBMCPlayer]).getAs(classOf[DiscordPlayer])
|
||||
if (dp != null)
|
||||
DiscordPlugin.dc.getUserById(Snowflake.of(dp.getDiscordID)).flatMap(user =>
|
||||
user.getPrivateChannel.flatMap(chan => module.chatChannelMono.flatMap(cc => {
|
||||
DiscordPlugin.dc.getUserById(Snowflake.of(dp.getDiscordID)).^^().flatMap(user =>
|
||||
user.getPrivateChannel.^^().flatMap(chan => module.chatChannelMono.flatMap(cc => {
|
||||
MCChatUtils.addSender(MCChatUtils.OnlineSenders, dp.getDiscordID, DiscordPlayerSender.create(user, chan, p, module))
|
||||
MCChatUtils.addSender(MCChatUtils.OnlineSenders, dp.getDiscordID, DiscordPlayerSender.create(user, cc, p, module)) //Stored per-channel
|
||||
SMono.empty
|
||||
|
@ -130,8 +129,8 @@ class MCListener(val module: MinecraftChatModule) extends Listener {
|
|||
val t = event.getBuffer.substring(i + 1) //0 if not found
|
||||
if (!t.startsWith("@")) return
|
||||
val token = t.substring(1)
|
||||
val x = DiscordPlugin.mainServer.getMembers.flatMap((m) => Flux.just(m.getUsername, m.getNickname.orElse("")))
|
||||
.filter((s) => s.startsWith(token)).map((s) => "@" + s).doOnNext(event.getCompletions.add(_)).blockLast
|
||||
val x = DiscordPlugin.mainServer.getMembers.^^().flatMap(m => SFlux.just(m.getUsername, m.getNickname.orElse("")))
|
||||
.filter(_.startsWith(token)).map("@" + _).doOnNext(event.getCompletions.add(_)).blockLast()
|
||||
}
|
||||
|
||||
@EventHandler def onCommandSend(event: PlayerCommandSendEvent): Boolean = event.getCommands.add("g")
|
||||
|
|
|
@ -129,6 +129,7 @@ class MinecraftChatModule extends Component[DiscordPlugin] {
|
|||
UUID.fromString(chcon.getString("mcuid")), chcon.getString("mcname"), this)
|
||||
MCChatCustom.addCustomChat(ch.asInstanceOf[MessageChannel], groupid, mcch.get, user, dcp, toggles,
|
||||
brtoggles.asScala.map(TBMCSystemChatEvent.BroadcastTarget.get).filter(Objects.nonNull).toSet)
|
||||
()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package buttondevteam.discordplugin.role
|
||||
|
||||
import buttondevteam.core.ComponentManager
|
||||
import buttondevteam.discordplugin.DPUtils.{FluxExtensions, MonoExtensions}
|
||||
import buttondevteam.discordplugin.{DPUtils, DiscordPlugin}
|
||||
import buttondevteam.lib.architecture.{Component, ComponentMetadata}
|
||||
import discord4j.core.`object`.entity.Role
|
||||
|
@ -8,10 +9,10 @@ import discord4j.core.`object`.entity.channel.MessageChannel
|
|||
import discord4j.core.event.domain.role.{RoleCreateEvent, RoleDeleteEvent, RoleEvent, RoleUpdateEvent}
|
||||
import discord4j.rest.util.Color
|
||||
import org.bukkit.Bukkit
|
||||
import reactor.core.publisher.Mono
|
||||
import reactor.core.scala.publisher.SMono
|
||||
|
||||
import java.util.Collections
|
||||
import java.util.stream.Collectors
|
||||
import scala.jdk.CollectionConverters.SeqHasAsJava
|
||||
|
||||
/**
|
||||
* Automatically collects roles with a certain color.
|
||||
|
@ -23,31 +24,31 @@ import java.util.stream.Collectors
|
|||
if (grm == null) return
|
||||
val GameRoles = grm.GameRoles
|
||||
val logChannel = grm.logChannel.get
|
||||
val notMainServer = (r: Role) => r.getGuildId.asLong != DiscordPlugin.mainServer.getId.asLong
|
||||
val notMainServer = (_: Role).getGuildId.asLong != DiscordPlugin.mainServer.getId.asLong
|
||||
roleEvent match {
|
||||
case roleCreateEvent: RoleCreateEvent => Bukkit.getScheduler.runTaskLaterAsynchronously(DiscordPlugin.plugin, () => {
|
||||
def foo(): Unit = {
|
||||
val role = roleCreateEvent.getRole
|
||||
if (notMainServer(role)) return
|
||||
grm.isGameRole(role).flatMap((b: Boolean) => {
|
||||
def foo(b: Boolean): Mono[_] = {
|
||||
if (!b) return Mono.empty //Deleted or not a game role
|
||||
val role = roleCreateEvent.getRole
|
||||
if (!notMainServer(role)) {
|
||||
grm.isGameRole(role).flatMap(b => {
|
||||
if (!b) SMono.empty //Deleted or not a game role
|
||||
else {
|
||||
GameRoles.add(role.getName)
|
||||
if (logChannel != null) return logChannel.flatMap((ch: MessageChannel) => ch.createMessage("Added " + role.getName + " as game role. If you don't want this, change the role's color from the game role color."))
|
||||
Mono.empty
|
||||
if (logChannel != null)
|
||||
logChannel.flatMap(_.createMessage("Added " + role.getName + " as game role." +
|
||||
" If you don't want this, change the role's color from the game role color.").^^())
|
||||
else
|
||||
SMono.empty
|
||||
}
|
||||
|
||||
foo(b)
|
||||
}).subscribe
|
||||
()
|
||||
}
|
||||
|
||||
foo()
|
||||
}, 100)
|
||||
case roleDeleteEvent: RoleDeleteEvent =>
|
||||
val role = roleDeleteEvent.getRole.orElse(null)
|
||||
if (role == null) return
|
||||
if (notMainServer(role)) return
|
||||
if (GameRoles.remove(role.getName) && logChannel != null) logChannel.flatMap((ch: MessageChannel) => ch.createMessage("Removed " + role.getName + " as a game role.")).subscribe
|
||||
if (GameRoles.remove(role.getName) && logChannel != null)
|
||||
logChannel.flatMap(_.createMessage("Removed " + role.getName + " as a game role.").^^()).subscribe
|
||||
case roleUpdateEvent: RoleUpdateEvent =>
|
||||
if (!roleUpdateEvent.getOld.isPresent) {
|
||||
grm.logWarn("Old role not stored, cannot update game role!")
|
||||
|
@ -56,20 +57,25 @@ import java.util.stream.Collectors
|
|||
val or = roleUpdateEvent.getOld.get
|
||||
if (notMainServer(or)) return
|
||||
val cr = roleUpdateEvent.getCurrent
|
||||
grm.isGameRole(cr).flatMap((b: Boolean) => {
|
||||
def foo(b: Boolean): Mono[_] = {
|
||||
if (!b) if (GameRoles.remove(or.getName) && logChannel != null) return logChannel.flatMap((ch: MessageChannel) => ch.createMessage("Removed " + or.getName + " as a game role because its color changed."))
|
||||
else {
|
||||
if (GameRoles.contains(or.getName) && or.getName == cr.getName) return Mono.empty
|
||||
val removed = GameRoles.remove(or.getName) //Regardless of whether it was a game role
|
||||
GameRoles.add(cr.getName) //Add it because it has no color
|
||||
if (logChannel != null) if (removed) return logChannel.flatMap((ch: MessageChannel) => ch.createMessage("Changed game role from " + or.getName + " to " + cr.getName + "."))
|
||||
else return logChannel.flatMap((ch: MessageChannel) => ch.createMessage("Added " + cr.getName + " as game role because it has the color of one."))
|
||||
}
|
||||
Mono.empty
|
||||
grm.isGameRole(cr).flatMap(isGameRole => {
|
||||
if (!isGameRole)
|
||||
if (GameRoles.remove(or.getName) && logChannel != null)
|
||||
logChannel.flatMap(_.createMessage("Removed " + or.getName + " as a game role because its color changed.").^^())
|
||||
else
|
||||
SMono.empty
|
||||
else if (GameRoles.contains(or.getName) && or.getName == cr.getName)
|
||||
SMono.empty
|
||||
else {
|
||||
val removed = GameRoles.remove(or.getName) //Regardless of whether it was a game role
|
||||
GameRoles.add(cr.getName) //Add it because it has no color
|
||||
if (logChannel != null)
|
||||
if (removed)
|
||||
logChannel.flatMap((ch: MessageChannel) => ch.createMessage("Changed game role from " + or.getName + " to " + cr.getName + ".").^^())
|
||||
else
|
||||
logChannel.flatMap((ch: MessageChannel) => ch.createMessage("Added " + cr.getName + " as game role because it has the color of one.").^^())
|
||||
else
|
||||
SMono.empty
|
||||
}
|
||||
|
||||
foo(b)
|
||||
}).subscribe
|
||||
case _ =>
|
||||
}
|
||||
|
@ -82,7 +88,7 @@ import java.util.stream.Collectors
|
|||
|
||||
override protected def enable(): Unit = {
|
||||
getPlugin.manager.registerCommand(command)
|
||||
GameRoles = DiscordPlugin.mainServer.getRoles.filterWhen(this.isGameRole _).map(_.getName).collect(Collectors.toList).block
|
||||
GameRoles = DiscordPlugin.mainServer.getRoles.^^().filterWhen(this.isGameRole).map(_.getName).collectSeq().block().asJava
|
||||
}
|
||||
|
||||
override protected def disable(): Unit = getPlugin.manager.unregisterCommand(command)
|
||||
|
@ -97,11 +103,12 @@ import java.util.stream.Collectors
|
|||
*/
|
||||
final private val roleColor = getConfig.getConfig[Color]("roleColor").`def`(Color.of(149, 165, 166)).getter((rgb: Any) => Color.of(Integer.parseInt(rgb.asInstanceOf[String].substring(1), 16))).setter((color: Color) => String.format("#%08x", color.getRGB)).buildReadOnly
|
||||
|
||||
private def isGameRole(r: Role): Mono[Boolean] = {
|
||||
if (r.getGuildId.asLong != DiscordPlugin.mainServer.getId.asLong) return Mono.just(false) //Only allow on the main server
|
||||
private def isGameRole(r: Role): SMono[Boolean] = {
|
||||
if (r.getGuildId.asLong != DiscordPlugin.mainServer.getId.asLong) return SMono.just(false) //Only allow on the main server
|
||||
val rc = roleColor.get
|
||||
if (r.getColor equals rc)
|
||||
DiscordPlugin.dc.getSelf.flatMap((u) => u.asMember(DiscordPlugin.mainServer.getId)).flatMap((m) => m.hasHigherRoles(Collections.singleton(r.getId))).defaultIfEmpty(false) //Below one of our roles
|
||||
else Mono.just(false)
|
||||
DiscordPlugin.dc.getSelf.flatMap(u => u.asMember(DiscordPlugin.mainServer.getId)).^^()
|
||||
.flatMap(_.hasHigherRoles(Collections.singleton(r.getId)).^^().asInstanceOf).defaultIfEmpty(false) //Below one of our roles
|
||||
else SMono.just(false)
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue