Skip to content
This repository was archived by the owner on Jul 22, 2021. It is now read-only.

Commit 96bd611

Browse files
authored
Merge pull request #1 from zeroBzeroT/patch
Patch
2 parents c7fd2cc + e0f39bb commit 96bd611

File tree

8 files changed

+149
-33
lines changed

8 files changed

+149
-33
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,6 @@ target/
99
# IntelliJ
1010
.idea
1111
*.iml
12+
13+
# Dev Server
14+
server/

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>me.darki</groupId> <artifactId>SimpleCommandCooldown</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>SimpleCommandCooldown</name> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <defaultGoal>clean package</defaultGoal> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.7.0</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build> <repositories> <repository> <id>spigotmc-repo</id> <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url> </repository> </repositories> <dependencies> <dependency> <groupId>org.spigotmc</groupId> <artifactId>spigot-api</artifactId> <version>1.15.2-R0.1-SNAPSHOT</version> <scope>provided</scope> </dependency> </dependencies></project>
1+
<?xml version="1.0" encoding="UTF-8"?><project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>me.darki</groupId> <artifactId>SimpleCommandCooldown</artifactId> <version>1.1</version> <packaging>jar</packaging> <name>SimpleCommandCooldown</name> <properties> <java.version>1.8</java.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties> <build> <defaultGoal>clean package</defaultGoal> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>3.8.1</version> <configuration> <source>${java.version}</source> <target>${java.version}</target> </configuration> </plugin> </plugins> <resources> <resource> <directory>src/main/resources</directory> <filtering>true</filtering> </resource> </resources> </build> <repositories> <repository> <id>spigotmc-repo</id> <url>https://hub.spigotmc.org/nexus/content/repositories/snapshots/</url> </repository> </repositories> <dependencies> <dependency> <groupId>org.spigotmc</groupId> <artifactId>spigot-api</artifactId> <version>1.15.2-R0.1-SNAPSHOT</version> <scope>provided</scope> </dependency> </dependencies></project>
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
echo "downloading paper 1.12.2 (1618)"
6+
7+
mkdir -p ../server
8+
cd ../server
9+
10+
curl https://papermc.io/api/v1/paper/1.12.2/1618/download -o paper.jar
11+
12+
if md5sum -c <<< "4c81838696da39b1b06987e81ca8b0af paper.jar" | grep -q "paper.jar: OK"; then
13+
echo "paper download successful"
14+
else
15+
echo "paper download failed"
16+
exit 1
17+
fi
18+
19+
{
20+
echo "eula=true"
21+
} > ../server/eula.txt
22+
23+
mkdir -p ../server/plugins/bStats
24+
25+
{
26+
echo "motd=bastelware testing server"
27+
echo "online-mode=false"
28+
echo "spawn-protection=0"
29+
echo "enable-command-block=true"
30+
} > ../server/server.properties
31+
32+
{
33+
echo "enabled: false"
34+
echo "serverUuid: 00000000-0000-0000-0000-000000000000"
35+
echo "logFailedRequests: false"
36+
} > ../server/plugins/bStats/config.yml
37+
38+
echo "paper installation complete"
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
echo "downloading paper 1.15.2 (378)"
6+
7+
mkdir -p ../server
8+
cd ../server
9+
10+
curl https://papermc.io/api/v1/paper/1.15.2/378/download -o paper.jar
11+
12+
if md5sum -c <<< "8a18e5fb6a2734821c6ba00a39688472 paper.jar" | grep -q "paper.jar: OK"; then
13+
echo "paper download successful"
14+
else
15+
echo "paper download failed"
16+
exit 1
17+
fi
18+
19+
{
20+
echo "eula=true"
21+
} > ../server/eula.txt
22+
23+
mkdir -p ../server/plugins/bStats
24+
25+
{
26+
echo "motd=bastelware testing server"
27+
echo "online-mode=false"
28+
echo "spawn-protection=0"
29+
echo "enable-command-block=true"
30+
} > ../server/server.properties
31+
32+
{
33+
echo "enabled: false"
34+
echo "serverUuid: 00000000-0000-0000-0000-000000000000"
35+
echo "logFailedRequests: false"
36+
} > ../server/plugins/bStats/config.yml
37+
38+
echo "paper installation complete"

scripts/install-plugin.sh

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
#!/usr/bin/env bash
2+
3+
set -e
4+
5+
rm -f ../server/plugins/SimpleCommandCooldown-*.jar
6+
cp ../target/SimpleCommandCooldown-*.jar ../server/plugins
Lines changed: 50 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package me.darki.simplecommandcooldown;
22

3-
import javafx.util.Pair;
43
import org.bukkit.ChatColor;
54
import org.bukkit.entity.Player;
65
import org.bukkit.event.EventHandler;
@@ -9,50 +8,74 @@
98
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
109
import org.bukkit.event.player.PlayerQuitEvent;
1110

12-
import java.util.Map;
11+
import java.util.UUID;
1312
import java.util.concurrent.ConcurrentHashMap;
14-
import java.util.concurrent.locks.ReentrantLock;
1513

1614
public class CommandListener implements Listener {
17-
final private ConcurrentHashMap<Pair<Player, String>, Long> cooldownMap;
18-
final private ReentrantLock mutex = new ReentrantLock();
15+
16+
final private ConcurrentHashMap<Data, Long> cooldownMap;
1917

2018
public CommandListener() {
2119
cooldownMap = new ConcurrentHashMap<>();
2220
}
2321

24-
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
22+
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
2523
public void onCommand(PlayerCommandPreprocessEvent event) {
24+
2625
Player player = event.getPlayer();
2726
String commandName = event.getMessage().split(" ")[0];
27+
Data data = new Data(player.getUniqueId(), commandName);
2828

29-
Pair<Player, String> pair = new Pair<>(player, commandName);
30-
31-
try {
32-
this.mutex.lock();
33-
34-
if (this.cooldownMap.containsKey(pair)) {
35-
if (System.currentTimeMillis() - this.cooldownMap.get(pair) > SimpleCommandCooldown.cooldown) {
36-
this.cooldownMap.remove(pair);
37-
} else {
38-
player.sendMessage(ChatColor.RED + "Please wait a bit before using this command again!");
39-
event.setCancelled(true);
40-
}
41-
} else {
42-
this.cooldownMap.put(pair, System.currentTimeMillis());
43-
}
44-
} finally {
45-
this.mutex.unlock();
29+
if (!cooldownMap.containsKey(data) || System.currentTimeMillis() - cooldownMap.get(data) > SimpleCommandCooldown.cooldown) {
30+
// off cooldown
31+
cooldownMap.put(data, System.currentTimeMillis());
32+
} else {
33+
// on cooldown
34+
event.setCancelled(true);
35+
player.sendMessage(ChatColor.RED + SimpleCommandCooldown.message);
4636
}
37+
4738
}
4839

4940
@EventHandler(ignoreCancelled = true)
5041
public void onPlayerQuit(PlayerQuitEvent event) {
51-
Player player = event.getPlayer();
42+
cooldownMap.forEach((data, timeout) -> {
43+
if (data.getUuid().equals(event.getPlayer().getUniqueId())) {
44+
cooldownMap.remove(data);
45+
}
46+
});
47+
}
48+
49+
public static class Data {
5250

53-
for (Map.Entry<Pair<Player, String>, Long> entry : this.cooldownMap.entrySet()) {
54-
if (entry.getKey().getKey() == player)
55-
this.cooldownMap.remove(entry.getKey());
51+
private final UUID uuid;
52+
private final String command;
53+
54+
public Data(UUID uuid, String command) {
55+
this.uuid = uuid;
56+
this.command = command;
57+
}
58+
59+
public UUID getUuid() {
60+
return uuid;
61+
}
62+
63+
@Override
64+
public boolean equals(Object o) {
65+
if (this == o) return true;
66+
if (o == null || getClass() != o.getClass()) return false;
67+
Data data = (Data) o;
68+
if (!uuid.equals(data.uuid)) return false;
69+
return command.equals(data.command);
5670
}
71+
72+
@Override
73+
public int hashCode() {
74+
int result = uuid.hashCode();
75+
result = 31 * result + command.hashCode();
76+
return result;
77+
}
78+
5779
}
80+
5881
}

src/main/java/me/darki/simplecommandcooldown/SimpleCommandCooldown.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,22 @@
44
import org.bukkit.plugin.java.JavaPlugin;
55

66
public final class SimpleCommandCooldown extends JavaPlugin {
7+
78
public static long cooldown = 0L;
9+
public static String message = "";
810

911
public void onEnable() {
12+
initConfig();
13+
Bukkit.getServer().getPluginManager().registerEvents(new CommandListener(), this);
14+
}
15+
16+
private void initConfig() {
1017
getConfig().addDefault("cooldown", 3000);
18+
getConfig().addDefault("message", "Please wait a bit before using this command again!");
1119
getConfig().options().copyDefaults(true);
1220
saveConfig();
13-
14-
Bukkit.getServer().getPluginManager().registerEvents(new CommandListener(), this);
1521
cooldown = getConfig().getLong("cooldown");
22+
message = getConfig().getString("message");
1623
}
24+
1725
}

src/main/resources/plugin.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: SimpleCommandCooldown
2-
version: 1.0
2+
version: 1.1
33
main: me.darki.simplecommandcooldown.SimpleCommandCooldown
4-
api-version: 1.13
5-
authors: [Darki, bierdosenhalter]
4+
api-version: 1.15
5+
authors: [Darki, bierdosenhalter, blockparole]

0 commit comments

Comments
 (0)