Skip to content

Commit ec6614e

Browse files
Merge pull request #266 from Dans-Plugins/fixes-for-1.10
Fixed MF & Mailboxes integration errors.
2 parents bb2dad9 + 7d88c8f commit ec6614e

13 files changed

Lines changed: 212 additions & 76 deletions

File tree

.devcontainer/Dockerfile

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# See here for image contents: https://github.com/microsoft/vscode-dev-containers/tree/v0.234.0/containers/java-8/.devcontainer/base.Dockerfile
2+
3+
# [Choice] Debian OS version (use bullseye on local arm64/Apple Silicon): buster, bullseye
4+
ARG VARIANT="bullseye"
5+
FROM mcr.microsoft.com/vscode/devcontainers/java:0-8-${VARIANT}
6+
7+
# [Option] Install Maven
8+
ARG INSTALL_MAVEN="false"
9+
ARG MAVEN_VERSION=""
10+
# [Option] Install Gradle
11+
ARG INSTALL_GRADLE="false"
12+
ARG GRADLE_VERSION=""
13+
RUN if [ "${INSTALL_MAVEN}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/sdkman/bin/sdkman-init.sh && sdk install maven \"${MAVEN_VERSION}\""; fi \
14+
&& if [ "${INSTALL_GRADLE}" = "true" ]; then su vscode -c "umask 0002 && . /usr/local/sdkman/bin/sdkman-init.sh && sdk install gradle \"${GRADLE_VERSION}\""; fi
15+
16+
# [Choice] Node.js version: none, lts/*, 16, 14, 12, 10
17+
ARG NODE_VERSION="lts/*"
18+
RUN if [ "${NODE_VERSION}" != "none" ]; then su vscode -c "umask 0002 && . /usr/local/share/nvm/nvm.sh && nvm install ${NODE_VERSION} 2>&1"; fi
19+
20+
# [Optional] Uncomment this section to install additional OS packages.
21+
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
22+
# && apt-get -y install --no-install-recommends <your-package-list-here>
23+
24+
# [Optional] Uncomment this line to install global node packages.
25+
# RUN su vscode -c "source /usr/local/share/nvm/nvm.sh && npm install -g <your-package-here>" 2>&1

.devcontainer/devcontainer.json

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
// For format details, see https://aka.ms/devcontainer.json. For config options, see the README at:
2+
// https://github.com/microsoft/vscode-dev-containers/tree/v0.234.0/containers/java-8
3+
{
4+
"name": "Java 8",
5+
"build": {
6+
"dockerfile": "Dockerfile",
7+
"args": {
8+
// Use the VARIANT arg to pick a Debian OS version: buster, bullseye
9+
// Use bullseye when running on local arm64/Apple Silicon.
10+
"VARIANT": "buster",
11+
// Options
12+
"INSTALL_MAVEN": "true",
13+
"INSTALL_GRADLE": "false",
14+
"NODE_VERSION": "none"
15+
}
16+
},
17+
18+
// Set *default* container specific settings.json values on container create.
19+
"settings": {
20+
"java.home": "/docker-java-home",
21+
"java.import.gradle.java.home": "/usr/local/sdkman/candidates/java/current",
22+
"java.configuration.runtimes": [{
23+
"default": true,
24+
"name": "JavaSE-1.8",
25+
"path": "/usr/local/sdkman/candidates/java/current"
26+
}]
27+
},
28+
29+
// Add the IDs of extensions you want installed when the container is created.
30+
"extensions": [
31+
"vscjava.vscode-java-pack"
32+
],
33+
34+
// Use 'forwardPorts' to make a list of ports inside the container available locally.
35+
// "forwardPorts": [],
36+
37+
// Use 'postCreateCommand' to run commands after the container is created.
38+
// "postCreateCommand": "java -version",
39+
40+
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
41+
"remoteUser": "vscode"
42+
}

pom.xml

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>KingdomProgrammers</groupId>
88
<artifactId>Medieval-Roleplay-Engine</artifactId>
9-
<version>v1.10-beta-1</version>
9+
<version>1.10</version>
1010
<packaging>jar</packaging>
1111

1212
<name>Medieval Roleplay Engine</name>
@@ -48,19 +48,18 @@
4848
<scope>test</scope>
4949
</dependency>
5050
<dependency>
51-
<groupId>dansplugins</groupId>
51+
<groupId>com.github.Dans-Plugins</groupId>
5252
<artifactId>Medieval-Factions</artifactId>
53-
<version>v4.3</version>
54-
<scope>system</scope>
55-
<systemPath>${project.basedir}/src/main/resources/Medieval-Factions-v4.3.jar</systemPath>
53+
<version>4.6.4.1</version>
54+
<scope>compile</scope>
5655
</dependency>
5756
<dependency>
58-
<groupId>dansplugins</groupId>
57+
<groupId>com.github.Dans-Plugins</groupId>
5958
<artifactId>Mailboxes</artifactId>
60-
<version>v1.1-alpha-1</version>
61-
<scope>system</scope>
62-
<systemPath>${project.basedir}/src/main/resources/Mailboxes-v1.1-alpha-1.jar</systemPath>
59+
<version>v1.1</version>
60+
<scope>compile</scope>
6361
</dependency>
62+
6463
</dependencies>
6564

6665
<build>
@@ -112,5 +111,9 @@
112111
<id>placeholderapi</id>
113112
<url>https://repo.extendedclip.com/content/repositories/placeholderapi/</url>
114113
</repository>
114+
<repository>
115+
<id>jitpack.io</id>
116+
<url>https://jitpack.io</url>
117+
</repository>
115118
</repositories>
116119
</project>
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package dansplugins.exceptions;
2+
3+
public class MailboxesNotFoundException extends Exception {
4+
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package dansplugins.exceptions;
2+
3+
public class MedievalFactionsNotFoundException extends Exception {
4+
5+
}

src/main/java/dansplugins/rpsystem/MedievalRoleplayEngine.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,7 @@ public class MedievalRoleplayEngine extends JavaPlugin {
1515

1616
private static MedievalRoleplayEngine instance;
1717

18-
// version
19-
private String version = "v1.10-beta-1";
18+
private final String pluginVersion = "v" + getDescription().getVersion();
2019

2120
public static MedievalRoleplayEngine getInstance() {
2221
return instance;
@@ -76,7 +75,7 @@ public boolean onCommand(CommandSender sender, Command cmd, String label, String
7675
}
7776

7877
public String getVersion() {
79-
return version;
78+
return pluginVersion;
8079
}
8180

8281
public boolean isDebugEnabled() {

src/main/java/dansplugins/rpsystem/Messenger.java

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dansplugins.rpsystem;
22

3+
import dansplugins.exceptions.MedievalFactionsNotFoundException;
34
import dansplugins.factionsystem.externalapi.MF_Faction;
45
import dansplugins.rpsystem.data.EphemeralData;
56
import dansplugins.rpsystem.integrators.MedievalFactionsIntegrator;
@@ -113,16 +114,20 @@ public void sendCardInfoToPlayer(CharacterCard card, Player player) {
113114
player.sendMessage(ColorChecker.getInstance().getNeutralAlertColor() + "Age: " + card.getAge());
114115
player.sendMessage(ColorChecker.getInstance().getNeutralAlertColor() + "Gender: " + card.getGender());
115116
player.sendMessage(ColorChecker.getInstance().getNeutralAlertColor() + "Religion: " + card.getReligion());
116-
if (MedievalFactionsIntegrator.getInstance().isMedievalFactionsPresent()) {
117-
MF_Faction faction = MedievalFactionsIntegrator.getInstance().getAPI().getFaction(card.getPlayerUUID());
118-
int power = MedievalFactionsIntegrator.getInstance().getAPI().getPower(card.getPlayerUUID());
119-
if (faction != null) {
120-
player.sendMessage(ColorChecker.getInstance().getNeutralAlertColor() + "Faction: " + faction.getName());
121-
}
122-
else {
123-
player.sendMessage(ColorChecker.getInstance().getNeutralAlertColor() + "Faction: N/A");
117+
try {
118+
if (MedievalFactionsIntegrator.getInstance().isMedievalFactionsPresent()) {
119+
MF_Faction faction = MedievalFactionsIntegrator.getInstance().getAPI().getFaction(card.getPlayerUUID());
120+
double power = MedievalFactionsIntegrator.getInstance().getAPI().getPower(card.getPlayerUUID());
121+
if (faction != null) {
122+
player.sendMessage(ColorChecker.getInstance().getNeutralAlertColor() + "Faction: " + faction.getName());
123+
}
124+
else {
125+
player.sendMessage(ColorChecker.getInstance().getNeutralAlertColor() + "Faction: N/A");
126+
}
127+
player.sendMessage(ColorChecker.getInstance().getNeutralAlertColor() + "Power: " + power);
124128
}
125-
player.sendMessage(ColorChecker.getInstance().getNeutralAlertColor() + "Power: " + power);
129+
} catch (NullPointerException | MedievalFactionsNotFoundException e) {
130+
// fail silently
126131
}
127132
}
128133
}

src/main/java/dansplugins/rpsystem/commands/BirdCommand.java

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dansplugins.rpsystem.commands;
22

3+
import dansplugins.exceptions.MailboxesNotFoundException;
34
import dansplugins.rpsystem.MedievalRoleplayEngine;
45
import dansplugins.rpsystem.Messenger;
56
import dansplugins.rpsystem.data.EphemeralData;
@@ -79,21 +80,26 @@ public void run() {
7980
}
8081

8182
boolean attemptToSendMessageToPlayersMailbox(String targetName, Player sender, String message) {
82-
if (MailboxesIntegrator.getInstance().isMailboxesPresent()) {
83-
UUID targetUUID = UUIDChecker.getInstance().findUUIDBasedOnPlayerName(targetName);
84-
if (targetUUID != null) {
85-
String messageToSend = "While you were offline, a bird dropped off a message for you. It was sent by " + sender.getName() + ". It reads:\n\n'" + message + "'";
86-
87-
boolean success = MailboxesIntegrator.getInstance().getAPI().sendPluginMessageToPlayer(MedievalRoleplayEngine.getInstance().getName(), targetUUID, messageToSend);
88-
if (success) {
89-
sender.sendMessage(ColorChecker.getInstance().getPositiveAlertColor() + "The bird flies off with your message. Since this player is offline, this message will go to their mailbox.");
90-
return true;
91-
}
92-
else {
93-
sender.sendMessage(ColorChecker.getInstance().getNegativeAlertColor() + "Your bird wasn't able to find this player's mailbox.");
94-
return false;
83+
try {
84+
if (MailboxesIntegrator.getInstance().isMailboxesPresent()) {
85+
UUID targetUUID = UUIDChecker.getInstance().findUUIDBasedOnPlayerName(targetName);
86+
if (targetUUID != null) {
87+
String messageToSend = "While you were offline, a bird dropped off a message for you. It was sent by " + sender.getName() + ". It reads:\n\n'" + message + "'";
88+
89+
boolean success = MailboxesIntegrator.getInstance().getAPI().sendPluginMessageToPlayer(MedievalRoleplayEngine.getInstance().getName(), targetUUID, messageToSend);
90+
if (success) {
91+
sender.sendMessage(ColorChecker.getInstance().getPositiveAlertColor() + "The bird flies off with your message. Since this player is offline, this message will go to their mailbox.");
92+
return true;
93+
}
94+
else {
95+
sender.sendMessage(ColorChecker.getInstance().getNegativeAlertColor() + "Your bird wasn't able to find this player's mailbox.");
96+
return false;
97+
}
9598
}
9699
}
100+
} catch (MailboxesNotFoundException e) {
101+
sender.sendMessage(ColorChecker.getInstance().getNegativeAlertColor() + "Your bird wasn't able to find this player's mailbox.");
102+
return false;
97103
}
98104
return false;
99105
}

src/main/java/dansplugins/rpsystem/commands/LocalChatCommand.java

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package dansplugins.rpsystem.commands;
22

33
import dansplugins.rpsystem.integrators.MedievalFactionsIntegrator;
4+
import dansplugins.exceptions.MedievalFactionsNotFoundException;
45
import dansplugins.rpsystem.data.EphemeralData;
56
import dansplugins.rpsystem.utils.ColorChecker;
67
import org.bukkit.command.CommandSender;
@@ -41,18 +42,26 @@ public boolean startChattingInLocalChat(CommandSender sender, String[] args) {
4142
private void addPlayerToLocalChat(Player player) {
4243
if (!EphemeralData.getInstance().getPlayersSpeakingInLocalChat().contains(player.getUniqueId())) {
4344
EphemeralData.getInstance().getPlayersSpeakingInLocalChat().add(player.getUniqueId());
44-
if (MedievalFactionsIntegrator.getInstance().isMedievalFactionsPresent() && MedievalFactionsIntegrator.getInstance().getAPI().isPlayerInFactionChat(player)) {
45-
player.sendMessage(ColorChecker.getInstance().getPositiveAlertColor() + "You are now in local chat, but you won't send messages to local chat until you leave faction chat.");
46-
}
47-
else {
45+
try {
46+
if (MedievalFactionsIntegrator.getInstance().isMedievalFactionsPresent() && MedievalFactionsIntegrator.getInstance().getAPI().isPlayerInFactionChat(player)) {
47+
player.sendMessage(ColorChecker.getInstance().getPositiveAlertColor() + "You are now in local chat, but you won't send messages to local chat until you leave faction chat.");
48+
}
49+
else {
50+
player.sendMessage(ColorChecker.getInstance().getPositiveAlertColor() + "You are now talking in local chat.");
51+
}
52+
} catch (MedievalFactionsNotFoundException e) {
4853
player.sendMessage(ColorChecker.getInstance().getPositiveAlertColor() + "You are now talking in local chat.");
4954
}
5055
}
5156
else {
52-
if (MedievalFactionsIntegrator.getInstance().isMedievalFactionsPresent() && MedievalFactionsIntegrator.getInstance().getAPI().isPlayerInFactionChat(player)) {
53-
player.sendMessage(ColorChecker.getInstance().getPositiveAlertColor() + "You're already now in local chat, but you won't send messages to local chat until you leave faction chat.");
54-
}
55-
else {
57+
try {
58+
if (MedievalFactionsIntegrator.getInstance().isMedievalFactionsPresent() && MedievalFactionsIntegrator.getInstance().getAPI().isPlayerInFactionChat(player)) {
59+
player.sendMessage(ColorChecker.getInstance().getPositiveAlertColor() + "You're already now in local chat, but you won't send messages to local chat until you leave faction chat.");
60+
}
61+
else {
62+
player.sendMessage(ColorChecker.getInstance().getPositiveAlertColor() + "You're already now in local chat.");
63+
}
64+
} catch (MedievalFactionsNotFoundException e) {
5665
player.sendMessage(ColorChecker.getInstance().getPositiveAlertColor() + "You're already now in local chat.");
5766
}
5867
}

src/main/java/dansplugins/rpsystem/eventhandlers/ChatHandler.java

Lines changed: 36 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package dansplugins.rpsystem.eventhandlers;
22

3+
import dansplugins.exceptions.MedievalFactionsNotFoundException;
34
import dansplugins.factionsystem.externalapi.MF_Faction;
45
import dansplugins.rpsystem.integrators.MedievalFactionsIntegrator;
56
import dansplugins.rpsystem.MedievalRoleplayEngine;
@@ -8,6 +9,10 @@
89
import dansplugins.rpsystem.data.PersistentData;
910
import dansplugins.rpsystem.managers.ConfigManager;
1011
import dansplugins.rpsystem.utils.ColorChecker;
12+
import dansplugins.rpsystem.utils.Logger;
13+
14+
import java.util.IllegalFormatException;
15+
1116
import org.bukkit.Bukkit;
1217
import org.bukkit.ChatColor;
1318
import org.bukkit.entity.Player;
@@ -25,10 +30,14 @@ public void handle(AsyncPlayerChatEvent event) {
2530

2631
int localChatRadius = MedievalRoleplayEngine.getInstance().getConfig().getInt("localChatRadius");
2732

28-
if (MedievalFactionsIntegrator.getInstance().isMedievalFactionsPresent()) {
29-
if (MedievalFactionsIntegrator.getInstance().getAPI().isPlayerInFactionChat(event.getPlayer())) {
30-
return;
33+
try {
34+
if (MedievalFactionsIntegrator.getInstance().isMedievalFactionsPresent()) {
35+
if (MedievalFactionsIntegrator.getInstance().getAPI().isPlayerInFactionChat(event.getPlayer())) {
36+
return;
37+
}
3138
}
39+
} catch (MedievalFactionsNotFoundException e) {
40+
// fail silently
3241
}
3342

3443
String localChatColorString = MedievalRoleplayEngine.getInstance().getConfig().getString("localChatColor");
@@ -88,33 +97,43 @@ public void handle(AsyncPlayerChatEvent event) {
8897

8998
// we are good to send the message
9099

91-
if (MedievalFactionsIntegrator.getInstance().isMedievalFactionsPresent()
92-
&& MedievalFactionsIntegrator.getInstance().getAPI().isPrefixesFeatureEnabled()
93-
&& MedievalFactionsIntegrator.getInstance().getAPI().getFaction(event.getPlayer()) != null) {
100+
try {
101+
if (MedievalFactionsIntegrator.getInstance().isMedievalFactionsPresent()
102+
&& MedievalFactionsIntegrator.getInstance().getAPI().isPrefixesFeatureEnabled()
103+
&& MedievalFactionsIntegrator.getInstance().getAPI().getFaction(event.getPlayer()) != null) {
94104

95-
if (MedievalRoleplayEngine.getInstance().isDebugEnabled()) { System.out.println("Preparing message with prefix from Medieval Factions"); }
105+
if (MedievalRoleplayEngine.getInstance().isDebugEnabled()) { System.out.println("Preparing message with prefix from Medieval Factions"); }
96106

97-
MF_Faction playersFaction = MedievalFactionsIntegrator.getInstance().getAPI().getFaction(event.getPlayer());
107+
MF_Faction playersFaction = MedievalFactionsIntegrator.getInstance().getAPI().getFaction(event.getPlayer());
98108

99-
// prefix format
100-
String prefix = playersFaction.getPrefix();
101-
String prefixColor = (String) playersFaction.getFlag("prefixColor");
102-
event.setFormat(ColorChecker.getInstance().getColorByName(prefixColor) + "" + "[" + prefix + "]" + "" + ChatColor.WHITE + "" + " <%s> %s");
109+
// prefix format
110+
String prefix = playersFaction.getPrefix();
111+
String prefixColor = (String) playersFaction.getFlag("prefixColor");
112+
event.setFormat(ColorChecker.getInstance().getColorByName(prefixColor) + "" + "[" + prefix + "]" + "" + ChatColor.WHITE + "" + " <%s> %s");
103113

104-
// send message
105-
onlinePlayer.sendMessage(ColorChecker.getInstance().getColorByName(prefixColor) + "" + "[" + prefix + "] " + ChatColor.WHITE + "<" + event.getPlayer().getName() + "> " + ChatColor.WHITE + event.getMessage());
114+
// send message
115+
onlinePlayer.sendMessage(ColorChecker.getInstance().getColorByName(prefixColor) + "" + "[" + prefix + "] " + ChatColor.WHITE + "<" + event.getPlayer().getName() + "> " + ChatColor.WHITE + event.getMessage());
106116

107-
}
108-
else {
117+
}
118+
else {
119+
120+
if (MedievalRoleplayEngine.getInstance().isDebugEnabled()) { System.out.println("Preparing message with regular format"); }
121+
122+
// regular format
123+
event.setFormat(ChatColor.WHITE + "" + " <%s> %s");
109124

125+
// send message
126+
onlinePlayer.sendMessage(ChatColor.WHITE + "<" + event.getPlayer().getName() + "> " + event.getMessage());
127+
128+
}
129+
} catch (IllegalFormatException | NullPointerException | MedievalFactionsNotFoundException e) {
110130
if (MedievalRoleplayEngine.getInstance().isDebugEnabled()) { System.out.println("Preparing message with regular format"); }
111131

112132
// regular format
113133
event.setFormat(ChatColor.WHITE + "" + " <%s> %s");
114134

115135
// send message
116136
onlinePlayer.sendMessage(ChatColor.WHITE + "<" + event.getPlayer().getName() + "> " + event.getMessage());
117-
118137
}
119138

120139
}

0 commit comments

Comments
 (0)