Skip to content

Commit 525dc06

Browse files
committed
1.2.0
1 parent 5782279 commit 525dc06

File tree

7 files changed

+126
-28
lines changed

7 files changed

+126
-28
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,5 @@ If you get an error, please post it to https://gist.github.com/ and then post th
3434
##Donate
3535
[Donate with PayPal](https://www.paypal.com/cgi-bin/webscr?return=http%3A%2F%2Fdev.bukkit.org%2Fbukkit-plugins%2Fslack%2F&cn=Add+special+instructions+to+the+addon+author%28s%29&business=circuitsoft%40outlook.com&bn=PP-DonationsBF%3Abtn_donateCC_LG.gif%3ANonHosted&cancel_return=http%3A%2F%2Fdev.bukkit.org%2Fbukkit-plugins%2Fslack%2F&lc=US&item_name=Slack+%28from+Bukkit.org%29&cmd=_donations&rm=1&no_shipping=1&currency_code=USD)
3636

37-
##Source
38-
https://github.com/CircuitSoftGroup/SlackBukkit
37+
##Bukkit Dev
38+
http://dev.bukkit.org/bukkit-plugins/slack/

Slack-1.1.0.jar

-4.83 KB
Binary file not shown.

Slack.jar

6.16 KB
Binary file not shown.

pom.xml

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,20 @@
33
<modelVersion>4.0.0</modelVersion>
44
<groupId>us.CircuitSoft.Slack</groupId>
55
<artifactId>Slack</artifactId>
6-
<version>1.0</version>
6+
<version>1.2.0</version>
77
<packaging>jar</packaging>
88
<properties>
99
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1010
<maven.compiler.source>1.7</maven.compiler.source>
1111
<maven.compiler.target>1.7</maven.compiler.target>
1212
</properties>
13-
<repositories>
14-
<repository>
15-
<id>bukkit-repo</id>
16-
<url>http://repo.bukkit.org/content/groups/public/</url>
17-
</repository>
18-
</repositories>
1913
<dependencies>
2014
<dependency>
2115
<groupId>org.bukkit</groupId>
2216
<artifactId>bukkit</artifactId>
23-
<version>1.7.9-R0.2</version>
17+
<version>1.8-R0.1</version>
2418
<type>jar</type>
2519
<scope>provided</scope>
2620
</dependency>
2721
</dependencies>
28-
</project>
22+
</project>

src/main/java/us/circuitsoft/slack/Slack.java

Lines changed: 84 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import java.net.MalformedURLException;
77
import java.net.URL;
88
import java.util.logging.Level;
9+
import org.bukkit.command.Command;
10+
import org.bukkit.command.CommandSender;
11+
import org.bukkit.entity.Player;
912
import org.bukkit.event.EventHandler;
1013
import org.bukkit.event.Listener;
1114
import org.bukkit.event.player.AsyncPlayerChatEvent;
@@ -17,15 +20,15 @@
1720

1821
public class Slack extends JavaPlugin implements Listener {
1922

20-
private boolean setWebhook;
23+
private boolean n;
2124

2225
@Override
2326
public void onEnable() {
2427
getLogger().info("Slack has been enabled.");
2528
getServer().getPluginManager().registerEvents(this, this);
26-
this.saveDefaultConfig();
27-
setWebhook = !getConfig().getString("webhook").equals("https://hooks.slack.com/services/");
28-
if (!setWebhook) {
29+
updateConfig("1.2.0");
30+
n = getConfig().getString("webhook").equals("https://hooks.slack.com/services/");
31+
if (n) {
2932
getLogger().severe("You have not set your webhook URL in the config!");
3033
}
3134
}
@@ -37,35 +40,70 @@ public void onDisable() {
3740

3841
@EventHandler
3942
public void onChat(AsyncPlayerChatEvent event) {
40-
payload('"' + event.getMessage() + '"', event.getPlayer().getName());
43+
if (permCheck("slack.hide.chat", event.getPlayer())) {
44+
payload('"' + event.getMessage() + '"', event.getPlayer().getName());
45+
}
4146
}
4247

4348
@EventHandler
4449
public void onLogin(PlayerLoginEvent event) {
45-
payload("logged in", event.getPlayer().getName());
50+
if (permCheck("slack.hide.logout", event.getPlayer())) {
51+
payload("logged in", event.getPlayer().getName());
52+
}
4653
}
4754

4855
@EventHandler
4956
public void onQuit(PlayerQuitEvent event) {
50-
payload("logged out", event.getPlayer().getName());
57+
if(permCheck("slack.hide.logout", event.getPlayer())) {
58+
payload("logged out", event.getPlayer().getName());
59+
}
5160
}
5261

5362
@EventHandler
5463
public void onCommand(PlayerCommandPreprocessEvent event) {
55-
payload(event.getMessage(), event.getPlayer().getName());
64+
if (blacklist(event.getMessage()) && permCheck("slack.hide.command", event.getPlayer())) {
65+
payload(event.getMessage(), event.getPlayer().getName());
66+
}
5667
}
5768

58-
public void payload(String m, String p) {
69+
/**
70+
* Send a message to Slack.
71+
* @param m The message sent to Slack.
72+
* @param p The name of the sender of the message sent to Slack.
73+
* @return True if the message was successfully sent to Slack.
74+
*/
75+
public boolean payload(String m, String p) {
5976
JSONObject j = new JSONObject();
60-
j.put("text", m);
77+
j.put("text", p + ": " + m);
6178
j.put("username", p);
62-
j.put("icon_url", "https://minotar.net/avatar/" + p + "/100.png");
79+
j.put("icon_url", "https://cravatar.eu/helmhead/" + p + "/100.png");
6380
String b = "payload=" + j.toJSONString();
64-
post(b);
81+
return post(b);
82+
}
83+
84+
/**
85+
* Send a message to Slack with a custom user icon.
86+
* @param m The message sent to Slack.
87+
* @param p The name of the sender of the message sent to Slack.
88+
* @param i The URL of an image of the sender of the message sent to Slack. (recommended for non player messages).
89+
* @return True if the message was successfully sent to Slack.
90+
*/
91+
public boolean payload(String m, String p, String i) {
92+
if(permCheck("slack.hide.*", getServer().getPlayer(p))) {
93+
JSONObject j = new JSONObject();
94+
j.put("text", p + ": " + m);
95+
j.put("username", p);
96+
j.put("icon_url", i);
97+
String b = "payload=" + j.toJSONString();
98+
return post(b);
99+
} else {
100+
return false;
101+
}
65102
}
66103

67-
public void post(String b) {
68-
if (!setWebhook) {
104+
private boolean post(String b) {
105+
int i = 0;
106+
if (n) {
69107
getLogger().severe("You have not set your webhook URL in the config!");
70108
} else {
71109
try {
@@ -77,7 +115,7 @@ public void post(String b) {
77115
B.write(b.getBytes("utf8"));
78116
B.flush();
79117
}
80-
int i = C.getResponseCode();
118+
i = C.getResponseCode();
81119
String o = Integer.toString(i);
82120
String c = C.getResponseMessage();
83121
getLogger().log(Level.INFO, "{0} {1}", new Object[]{o, c});
@@ -88,5 +126,36 @@ public void post(String b) {
88126
getLogger().log(Level.SEVERE, "IO exception: ", e);
89127
}
90128
}
129+
return i == 200;
130+
}
131+
132+
private boolean blacklist(String m) {
133+
return !getConfig().getStringList("blacklist").contains(m);
134+
}
135+
136+
private void updateConfig(String v) {
137+
this.saveDefaultConfig();
138+
if (getConfig().getString("v") == null ? v != null : !getConfig().getString("v").equals(v)) {
139+
getConfig().options().copyDefaults(true);
140+
getConfig().set("version", v);
141+
}
142+
this.saveConfig();
143+
}
144+
145+
private boolean permCheck(String c, Player p) {
146+
return !p.hasPermission(c);
147+
}
148+
149+
@Override
150+
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
151+
if (cmd.getName().equalsIgnoreCase("slack")) {
152+
this.reloadConfig();
153+
sender.sendMessage("Slack has been reloaded.");
154+
if (sender.getName() == null ? getServer().getConsoleSender().getName() != null : !sender.getName().equals(getServer().getConsoleSender().getName())) {
155+
getServer().getConsoleSender().sendMessage("Slack has been reloaded.");
156+
}
157+
return true;
158+
}
159+
return false;
91160
}
92161
}

src/main/resources/config.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,8 @@
1-
webhook: https://hooks.slack.com/services/
1+
#The version. Do not touch this.
2+
version: 1.2.0
3+
#The incoming webhook URL you got from Slack.
4+
webhook: https://hooks.slack.com/services/
5+
#Commands that will not show up in Slack when they are executed.
6+
blacklist:
7+
- /login
8+
- /register

src/main/resources/plugin.yml

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,31 @@
11
name: Slack
2+
version: 1.2.0
3+
description: Link your server to Slack!
4+
author: CircuitSoft
5+
website: https://circuitsoft.us
6+
27
main: us.circuitsoft.slack.Slack
3-
version: 1.1.0
8+
9+
permissions:
10+
slack.hide.command:
11+
description: Does not post commands you do to Slack.
12+
default: false
13+
slack.reload:
14+
description: Allows you to reload the plugin's config.
15+
slack.hide.login:
16+
description: Does not post to Slack when you login.
17+
default: false
18+
slack.hide.logout:
19+
description: Does not post to Slack when you logout.
20+
default: false
21+
slack.hide.chat:
22+
description: Does not post your chats to Slack.
23+
default: false
24+
slack.hide.*:
25+
description: Does not post API events to Slack.
26+
default: false
27+
commands:
28+
slack:
29+
description: Reloads the plugin's config.
30+
permission: slack.reload
31+
usage: Do /slack to reload the plugin's config.

0 commit comments

Comments
 (0)