Skip to content

Commit 5a79b74

Browse files
committed
Updated to support acting as a library and minor other improvements.
1 parent ca0a9a7 commit 5a79b74

File tree

3 files changed

+83
-90
lines changed

3 files changed

+83
-90
lines changed

DiscordRelay.iml

Lines changed: 3 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -1,61 +1,13 @@
11
<?xml version="1.0" encoding="UTF-8"?>
2-
<module external.linked.project.id="DiscordRelay" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="org.nyxcode.wurm" external.system.module.version="0.2" version="4">
3-
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_5">
4-
<output url="file://$MODULE_DIR$/out/production/classes" />
5-
<output-test url="file://$MODULE_DIR$/out/test/classes" />
2+
<module external.linked.project.id="DiscordRelay" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="org.nyxcode.wurm" external.system.module.version="0.2" type="JAVA_MODULE" version="4">
3+
<component name="NewModuleRootManager" inherit-compiler-output="true">
4+
<exclude-output />
65
<content url="file://$MODULE_DIR$">
7-
<sourceFolder url="file://$MODULE_DIR$/src/main/java" isTestSource="false" />
8-
<sourceFolder url="file://$MODULE_DIR$/src/test/java" isTestSource="true" />
9-
<sourceFolder url="file://$MODULE_DIR$/src/main/resources" type="java-resource" />
10-
<sourceFolder url="file://$MODULE_DIR$/src/test/resources" type="java-test-resource" />
116
<excludeFolder url="file://$MODULE_DIR$/.gradle" />
127
<excludeFolder url="file://$MODULE_DIR$/build" />
138
<excludeFolder url="file://$MODULE_DIR$/out" />
14-
<excludeFolder url="file://$MODULE_DIR$/target" />
159
</content>
1610
<orderEntry type="inheritedJdk" />
1711
<orderEntry type="sourceFolder" forTests="false" />
18-
<orderEntry type="library" scope="PROVIDED" name="Gradle: net.dv8tion:JDA:3.3.1_289" level="project" />
19-
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.gotti.wurmunlimited:server-modlauncher:0.29.2" level="project" />
20-
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.google.code.findbugs:jsr305:3.0.2" level="project" />
21-
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.slf4j:slf4j-api:1.7.25" level="project" />
22-
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.apache.commons:commons-collections4:4.1" level="project" />
23-
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.json:json:20160810" level="project" />
24-
<orderEntry type="library" scope="PROVIDED" name="Gradle: net.sf.trove4j:trove4j:3.0.3" level="project" />
25-
<orderEntry type="library" scope="PROVIDED" name="Gradle: net.java.dev.jna:jna:4.4.0" level="project" />
26-
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.neovisionaries:nv-websocket-client:2.2" level="project" />
27-
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.squareup.okhttp3:okhttp:3.8.1" level="project" />
28-
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.gotti.wurmunlimited:common:2182584" level="project" />
29-
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.gotti.wurmunlimited:server:2182584" level="project" />
30-
<orderEntry type="library" scope="PROVIDED" name="Gradle: org.javassist:javassist:3.20.0-GA" level="project" />
31-
<orderEntry type="library" scope="PROVIDED" name="Gradle: com.squareup.okio:okio:1.13.0" level="project" />
32-
<orderEntry type="library" scope="RUNTIME" name="Gradle: net.dv8tion:JDA:3.3.1_289" level="project" />
33-
<orderEntry type="library" scope="RUNTIME" name="Gradle: org.gotti.wurmunlimited:server-modlauncher:0.29.2" level="project" />
34-
<orderEntry type="library" scope="RUNTIME" name="Gradle: com.google.code.findbugs:jsr305:3.0.2" level="project" />
35-
<orderEntry type="library" scope="RUNTIME" name="Gradle: org.slf4j:slf4j-api:1.7.25" level="project" />
36-
<orderEntry type="library" scope="RUNTIME" name="Gradle: org.apache.commons:commons-collections4:4.1" level="project" />
37-
<orderEntry type="library" scope="RUNTIME" name="Gradle: org.json:json:20160810" level="project" />
38-
<orderEntry type="library" scope="RUNTIME" name="Gradle: net.sf.trove4j:trove4j:3.0.3" level="project" />
39-
<orderEntry type="library" scope="RUNTIME" name="Gradle: net.java.dev.jna:jna:4.4.0" level="project" />
40-
<orderEntry type="library" scope="RUNTIME" name="Gradle: com.neovisionaries:nv-websocket-client:2.2" level="project" />
41-
<orderEntry type="library" scope="RUNTIME" name="Gradle: com.squareup.okhttp3:okhttp:3.8.1" level="project" />
42-
<orderEntry type="library" scope="RUNTIME" name="Gradle: org.gotti.wurmunlimited:common:2182584" level="project" />
43-
<orderEntry type="library" scope="RUNTIME" name="Gradle: org.gotti.wurmunlimited:server:2182584" level="project" />
44-
<orderEntry type="library" scope="RUNTIME" name="Gradle: org.javassist:javassist:3.20.0-GA" level="project" />
45-
<orderEntry type="library" scope="RUNTIME" name="Gradle: com.squareup.okio:okio:1.13.0" level="project" />
46-
<orderEntry type="library" scope="TEST" name="Gradle: net.dv8tion:JDA:3.3.1_289" level="project" />
47-
<orderEntry type="library" scope="TEST" name="Gradle: org.gotti.wurmunlimited:server-modlauncher:0.29.2" level="project" />
48-
<orderEntry type="library" scope="TEST" name="Gradle: com.google.code.findbugs:jsr305:3.0.2" level="project" />
49-
<orderEntry type="library" scope="TEST" name="Gradle: org.slf4j:slf4j-api:1.7.25" level="project" />
50-
<orderEntry type="library" scope="TEST" name="Gradle: org.apache.commons:commons-collections4:4.1" level="project" />
51-
<orderEntry type="library" scope="TEST" name="Gradle: org.json:json:20160810" level="project" />
52-
<orderEntry type="library" scope="TEST" name="Gradle: net.sf.trove4j:trove4j:3.0.3" level="project" />
53-
<orderEntry type="library" scope="TEST" name="Gradle: net.java.dev.jna:jna:4.4.0" level="project" />
54-
<orderEntry type="library" scope="TEST" name="Gradle: com.neovisionaries:nv-websocket-client:2.2" level="project" />
55-
<orderEntry type="library" scope="TEST" name="Gradle: com.squareup.okhttp3:okhttp:3.8.1" level="project" />
56-
<orderEntry type="library" scope="TEST" name="Gradle: org.gotti.wurmunlimited:common:2182584" level="project" />
57-
<orderEntry type="library" scope="TEST" name="Gradle: org.gotti.wurmunlimited:server:2182584" level="project" />
58-
<orderEntry type="library" scope="TEST" name="Gradle: org.javassist:javassist:3.20.0-GA" level="project" />
59-
<orderEntry type="library" scope="TEST" name="Gradle: com.squareup.okio:okio:1.13.0" level="project" />
6012
</component>
6113
</module>

build.gradle

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,17 +20,15 @@ description = "A mod that acts as a discord relay between Wurm kingdom chat and
2020
sourceCompatibility = 1.8
2121
targetCompatibility = 1.8
2222

23-
24-
2523
repositories {
26-
27-
maven { url "http://jcenter.bintray.com" }
28-
maven { url "http://gotti.no-ip.org/maven/repository" }
29-
maven { url "http://repo.maven.apache.org/maven2" }
24+
mavenCentral()
25+
maven { url "http://jcenter.bintray.com" }
26+
maven { url "http://gotti.no-ip.org/maven/repository" }
27+
maven { url "http://repo.maven.apache.org/maven2" }
3028
}
3129
dependencies {
3230
compile 'net.dv8tion:JDA:3.3.1_289'
33-
compile 'org.gotti.wurmunlimited:server-modlauncher:0.29.2'
31+
compile 'org.gotti.wurmunlimited:server-modlauncher:0.33-beta1'
3432
}
3533

3634
shadowJar {
@@ -40,3 +38,14 @@ shadowJar {
4038
exclude(dependency('org.gotti.wurmunlimited:server:2182584'))
4139
}
4240
}
41+
42+
task dist(type: Zip) {
43+
into("mods", {
44+
into(project.name, {
45+
from jar
46+
})
47+
from fileTree(dir: 'mods', include: '*')
48+
})
49+
50+
archiveName "${project.name}-${project.version}.zip"
51+
}
Lines changed: 64 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package org.nyxcode.wurm.discordrelay;
22

3-
import com.wurmonline.server.*;
3+
import com.wurmonline.server.Message;
4+
import com.wurmonline.server.Server;
5+
import com.wurmonline.server.creatures.Communicator;
46
import com.wurmonline.server.kingdom.Kingdom;
57
import com.wurmonline.server.kingdom.Kingdoms;
68
import com.wurmonline.server.villages.PvPAlliance;
79
import com.wurmonline.server.villages.Village;
8-
import com.wurmonline.server.webinterface.WcKingdomChat;
910
import net.dv8tion.jda.core.AccountType;
1011
import net.dv8tion.jda.core.JDA;
1112
import net.dv8tion.jda.core.JDABuilder;
@@ -17,93 +18,111 @@
1718
import org.gotti.wurmunlimited.modloader.interfaces.*;
1819

1920
import javax.security.auth.login.LoginException;
21+
import java.text.DateFormat;
22+
import java.text.SimpleDateFormat;
2023
import java.util.Arrays;
24+
import java.util.Date;
2125
import java.util.List;
2226
import java.util.Properties;
27+
import java.util.logging.Logger;
2328

2429

2530
/**
2631
* Created by whisper2shade on 22.04.2017.
2732
*/
28-
public class DiscordRelay extends ListenerAdapter implements WurmServerMod, PreInitable, Configurable, ChannelMessageListener {
33+
public class DiscordRelay extends ListenerAdapter implements WurmServerMod, PreInitable, Configurable, ChannelMessageListener, PlayerMessageListener {
34+
public static final Logger logger = Logger.getLogger(DiscordRelay.class.getName());
2935

30-
31-
private JDA jda;
32-
private String botToken;
33-
private String serverName;
34-
private String wurmBotName;
36+
private static JDA jda;
37+
private static String botToken;
38+
private static String serverName;
39+
//private String wurmBotName;
3540
private boolean useUnderscore;
3641

37-
42+
@Override
3843
public void preInit() {
39-
initJDA();
40-
}
41-
42-
private void initJDA() {
4344
try {
44-
jda = new JDABuilder(AccountType.BOT).setToken(botToken).addEventListener(this).buildAsync();
45+
jda = new JDABuilder(AccountType.BOT).setToken(botToken).addEventListener(this).buildBlocking();
4546
} catch (LoginException e) {
4647
e.printStackTrace();
48+
} catch (InterruptedException e) {
49+
e.printStackTrace();
4750
} catch (RateLimitedException e) {
4851
e.printStackTrace();
4952
}
5053
}
5154

55+
@Override
5256
public void configure(Properties properties) {
5357
botToken = properties.getProperty("botToken");
5458
serverName = properties.getProperty("discordServerName");
55-
wurmBotName = properties.getProperty("wurmBotName");
59+
//wurmBotName = properties.getProperty("wurmBotName");
5660
useUnderscore = Boolean.parseBoolean(properties.getProperty("useUnderscore", "false"));
5761
}
5862

59-
public MessagePolicy onKingdomMessage(Message message) {
60-
byte kingdomId = message.getSender().getKingdomId();
61-
Kingdom kingdom = Kingdoms.getKingdom(kingdomId);
62-
String kingdomName = discordifyName(kingdom.getName());
63+
private static final DateFormat df = new SimpleDateFormat("HH:mm:ss");
64+
public static void sendToDiscord(String channel, String message){
6365
MessageBuilder builder = new MessageBuilder();
66+
message = "[" + df.format(new Date(System.currentTimeMillis())) + "] "+message; // Add timestamp
67+
68+
builder.append(message);
69+
jda.getGuildsByName(serverName, true).get(0).getTextChannelsByName(channel, true).get(0).sendMessage(builder.build()).queue();
70+
}
6471

65-
builder.append(message.getMessage());
66-
jda.getGuildsByName(serverName, true).get(0).getTextChannelsByName(kingdomName, true).get(0).sendMessage(builder.build()).queue();
72+
@Override
73+
public MessagePolicy onKingdomMessage(Message message) {
74+
if(message.getWindow().startsWith("GL-")){
75+
byte kingdomId = message.getSender().getKingdomId();
76+
//Kingdom kingdom = Kingdoms.getKingdom(kingdomId);
77+
String kingdomName = discordifyName("GL-"+Kingdoms.getChatNameFor(kingdomId));
78+
sendToDiscord(kingdomName, message.getMessage());
79+
/*MessageBuilder builder = new MessageBuilder();
80+
81+
builder.append(message.getMessage());
82+
jda.getGuildsByName(serverName, true).get(0).getTextChannelsByName(kingdomName, true).get(0).sendMessage(builder.build()).queue();*/
83+
}
6784

6885
return MessagePolicy.PASS;
6986
}
7087

7188
public void sendToGlobalKingdomChat(final String channel, final String message) {
72-
7389
List<Kingdom> kingdoms = Arrays.asList(Kingdoms.getAllKingdoms());
7490

7591
byte kingdomId = -1;
7692

7793
for (Kingdom kingdom : kingdoms) {
78-
if (discordifyName(kingdom.getName()).equals(channel.toLowerCase())) {
94+
if (discordifyName("GL-"+Kingdoms.getChatNameFor(kingdom.getId())).equals(channel.toLowerCase())) {
7995
kingdomId = kingdom.getId();
8096
}
8197
}
8298
if (kingdomId != -1) {
83-
long wurmId = -10;
99+
//long wurmId = -10;
84100

85-
final Message mess = new Message(null, Message.GLOBKINGDOM, Kingdoms.getChatNameFor(kingdomId), "<" + wurmBotName + "> "
101+
final Message mess = new Message(null, Message.GLOBKINGDOM, "GL-"+Kingdoms.getChatNameFor(kingdomId), "[D] "//"<" + wurmBotName + "> "
86102
+ message);
87103
mess.setSenderKingdom(kingdomId);
88104
if (message.trim().length() > 1) {
89105
Server.getInstance().addMessage(mess);
90-
final WcKingdomChat wc = new WcKingdomChat(WurmId.getNextWCCommandId(),
91-
wurmId, wurmBotName, message, false, kingdomId,
106+
/*final WcKingdomChat wc = new WcKingdomChat(WurmId.getNextWCCommandId(),
107+
wurmId, "[D]", message, false, kingdomId,
92108
-1,
93109
-1,
94-
-1);
95-
if (Servers.localServer.LOGINSERVER)
110+
-1);*/
111+
/*if (Servers.localServer.LOGINSERVER){
96112
wc.sendFromLoginServer();
97-
else
98-
wc.sendToLoginServer();
113+
}*/
114+
//else
115+
//wc.sendToLoginServer();
99116
}
100117
}
101118
}
102119

120+
@Override
103121
public MessagePolicy onVillageMessage(Village village, Message message) {
104122
return MessagePolicy.PASS;
105123
}
106124

125+
@Override
107126
public MessagePolicy onAllianceMessage(PvPAlliance alliance, Message message) {
108127
return MessagePolicy.PASS;
109128
}
@@ -113,7 +132,7 @@ public void onMessageReceived(MessageReceivedEvent event) {
113132
super.onMessageReceived(event);
114133
if (event.isFromType(ChannelType.TEXT) && !event.getAuthor().isBot()) {
115134
String name = event.getTextChannel().getName();
116-
sendToGlobalKingdomChat(name, "<" + event.getAuthor().getName() + "> " + event.getMessage().getContent());
135+
sendToGlobalKingdomChat(name, "<" + event.getMember().getNickname() + "> " + event.getMessage().getContent());
117136
}
118137
}
119138

@@ -125,4 +144,17 @@ private String discordifyName(String name) {
125144
return name.replace(" ", "");
126145
}
127146
}
147+
148+
@Override
149+
public MessagePolicy onPlayerMessage(Communicator communicator, String message, String title){
150+
if(title.equals("Trade")){
151+
152+
}
153+
return MessagePolicy.PASS;
154+
}
155+
156+
@Override
157+
public boolean onPlayerMessage(Communicator var1, String var2) {
158+
return false;
159+
}
128160
}

0 commit comments

Comments
 (0)