Skip to content

Commit 31b0a8a

Browse files
committed
Fishnets and Baubles
1 parent 8f84583 commit 31b0a8a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

50 files changed

+1493
-554
lines changed

build.gradle

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,6 @@ repositories {
2323
}
2424

2525
dependencies {
26-
implementation 'org.projectlombok:lombok:1.18.20'
27-
implementation 'org.postgresql:postgresql:42.2.20'
2826
implementation 'org.apache.commons:commons-lang3:3.12.0'
2927
implementation 'com.github.Milkbowl:VaultAPI:1.7.1'
3028
implementation 'com.google.code.gson:gson:2.8.7'

build/resources/main/config.yml

Whitespace-only changes.

build/resources/main/db.properties

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# The SQL driver to use.
2+
driver=jdbc
3+
# The type of database to use.
4+
databaseType=mysql
5+
# The database host.
6+
host=localhost
7+
# The database port.
8+
port=5432
9+
# The database file name.
10+
databaseFile=database.db
11+
# The database username.
12+
username=admin
13+
# The database password.
14+
password=default

build/resources/main/plugin.yml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
name: Traverse
2+
version: '1.0.0'
3+
main: mc.unraveled.reforged.plugin.Traverse
4+
api-version: 1.19
5+
authors: [ SimplexDevelopment ]
6+
description: "A plugin designed for the Unraveled: Reforged server."
7+
website: https://github.com/SimplexDevelopment/Traverse
8+
depend: [ Vault ]
9+
softdepend: [ EssentialsX, EssentialsXSpawn ]
10+
39.7 KB
Binary file not shown.

build/tmp/shadowJar/MANIFEST.MF

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Manifest-Version: 1.0
2+
Class-Path: reactor-core-3.4.10.jar reactive-streams-1.0.3.jar
3+

src/main/java/mc/unraveled/reforged/api/Locker.java

Lines changed: 0 additions & 9 deletions
This file was deleted.

src/main/java/mc/unraveled/reforged/banning/AbstractBan.java

Lines changed: 34 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
package mc.unraveled.reforged.banning;
22

3-
import lombok.Getter;
43
import mc.unraveled.reforged.api.Serializable;
54
import mc.unraveled.reforged.util.Pair;
65
import mc.unraveled.reforged.util.Utilities;
6+
import org.jetbrains.annotations.NotNull;
77

88
import java.util.List;
99

10-
@Getter
1110
public abstract class AbstractBan implements Serializable<AbstractBan> {
1211
private final String uuid;
1312
private final String ip;
@@ -38,6 +37,38 @@ public AbstractBan(String uuid, String ip, String source, String reason, long pr
3837
);
3938
}
4039

40+
public String getUuid() {
41+
return uuid;
42+
}
43+
44+
public String getIp() {
45+
return ip;
46+
}
47+
48+
public String getSource() {
49+
return source;
50+
}
51+
52+
public String getReason() {
53+
return reason;
54+
}
55+
56+
public long getPropagated() {
57+
return propagated;
58+
}
59+
60+
public long getExpiry() {
61+
return expiry;
62+
}
63+
64+
public List<Pair<String, String>> getContentPairs() {
65+
return contentPairs;
66+
}
67+
68+
public boolean isActive() {
69+
return active;
70+
}
71+
4172
public void setActive(boolean active) {
4273
this.active = active;
4374
}
@@ -48,8 +79,7 @@ public String serialize() {
4879
}
4980

5081
@Override
51-
public AbstractBan deserialize(String formatted) {
52-
char delimiter = ':';
82+
public AbstractBan deserialize(@NotNull String formatted) {
5383
char end = ';';
5484
char uuid = 'u';
5585
char ip = 'i';

src/main/java/mc/unraveled/reforged/banning/BanManager.java

Lines changed: 25 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,44 @@
11
package mc.unraveled.reforged.banning;
22

3-
import lombok.Getter;
4-
import lombok.SneakyThrows;
53
import mc.unraveled.reforged.api.Baker;
6-
import mc.unraveled.reforged.api.Locker;
74
import mc.unraveled.reforged.plugin.Traverse;
85
import mc.unraveled.reforged.storage.DBBan;
9-
import mc.unraveled.reforged.storage.DBUser;
106
import org.bukkit.OfflinePlayer;
117

8+
import java.sql.Date;
9+
import java.time.Instant;
1210
import java.util.HashSet;
1311
import java.util.Set;
1412
import java.util.stream.Collectors;
1513

16-
public final class BanManager implements Locker, Baker {
17-
@Getter
14+
public final class BanManager implements Baker {
1815
private final Traverse plugin;
1916

2017
private Set<AbstractBan> storedBans; // This should only be reassigned by the baker.
21-
@Getter
2218
private boolean baked = false; // This should only be reassigned by the baker.
2319

24-
@SneakyThrows
2520
public BanManager(Traverse plugin) {
2621
this.storedBans = new HashSet<>();
2722
this.plugin = plugin;
2823

29-
synchronized (lock()) {
30-
DBBan banHandler = new DBBan(plugin.getSQLManager().establish());
31-
storedBans.addAll(banHandler.all());
32-
banHandler.close();
33-
34-
lock().wait(1000);
35-
}
24+
DBBan banHandler = new DBBan(plugin.getSQLManager().establish());
25+
storedBans.addAll(banHandler.all());
26+
banHandler.close();
3627

3728
bake();
3829
}
3930

31+
public Traverse getPlugin() {
32+
return plugin;
33+
}
34+
35+
public boolean isBaked() {
36+
return baked;
37+
}
38+
4039
public void insert(AbstractBan ban) {
4140
if (baked) throw new IllegalStateException("Cannot insert into a baked list.");
4241

43-
lock().notify();
4442
storedBans.add(ban);
4543
DBBan db = new DBBan(plugin.getSQLManager().establish());
4644
db.insert(ban);
@@ -50,8 +48,7 @@ public void insert(AbstractBan ban) {
5048
public void eject(AbstractBan ban) {
5149
if (baked) throw new IllegalStateException("Cannot eject from a baked list.");
5250

53-
lock().notify();
54-
51+
storedBans.remove(ban);
5552
DBBan db = new DBBan(plugin.getSQLManager().establish());
5653
db.delete(ban);
5754
db.close();
@@ -66,13 +63,22 @@ public AbstractBan getBan(OfflinePlayer player) {
6663

6764
public boolean isBanned(OfflinePlayer player) {
6865
return storedBans.stream()
66+
.filter(AbstractBan::isActive)
67+
.filter(ban -> {
68+
Date date = new Date(ban.getExpiry());
69+
if (date.before(Date.from(Instant.now()))) {
70+
eject(ban);
71+
return false;
72+
} else {
73+
return true;
74+
}
75+
})
6976
.anyMatch(ban -> ban.getUuid().equalsIgnoreCase(
7077
player.getUniqueId().toString()));
7178
}
7279

7380
public void save() {
7481
if (!baked) throw new IllegalStateException("Cannot save an unbaked list.");
75-
lock().notify();
7682

7783
DBBan banHandler = new DBBan(plugin.getSQLManager().establish());
7884
storedBans.forEach(banHandler::insert);
@@ -83,7 +89,6 @@ public void save() {
8389
public void bake() {
8490
if (baked) return;
8591

86-
lock().notify();
8792
storedBans = storedBans.stream().collect(Collectors.toUnmodifiableSet());
8893

8994
baked = true;
@@ -93,7 +98,6 @@ public void bake() {
9398
public void unbake() {
9499
if (!baked) return;
95100

96-
lock().notify();
97101
storedBans = new HashSet<>(storedBans);
98102

99103
baked = false;
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
package mc.unraveled.reforged.command;
2+
3+
import mc.unraveled.reforged.api.annotations.CommandInfo;
4+
import mc.unraveled.reforged.banning.AbstractBan;
5+
import mc.unraveled.reforged.command.base.AbstractCommandBase;
6+
import mc.unraveled.reforged.plugin.Traverse;
7+
import mc.unraveled.reforged.util.ComponentBuilder;
8+
import mc.unraveled.reforged.util.Utilities;
9+
import net.kyori.adventure.text.Component;
10+
import net.kyori.adventure.text.format.NamedTextColor;
11+
import org.bukkit.OfflinePlayer;
12+
import org.bukkit.command.CommandSender;
13+
import org.jetbrains.annotations.NotNull;
14+
15+
import java.util.List;
16+
17+
@CommandInfo(
18+
name = "baninfo",
19+
description = "Shows information about a ban",
20+
usage = "/baninfo <player>",
21+
aliases = {"bi", "bandata"}
22+
)
23+
public class BanInfoCMD extends AbstractCommandBase {
24+
public BanInfoCMD(@NotNull Traverse plugin) {
25+
super(plugin, "baninfo");
26+
}
27+
28+
@Override
29+
public Component cmd(CommandSender sender, String[] args) {
30+
if (args.length != 1) {
31+
return Component.text("Usage: /baninfo <player>");
32+
}
33+
34+
OfflinePlayer player = getPlugin().getServer().getOfflinePlayer(args[0]);
35+
AbstractBan ban = getPlugin().getBanManager().getBan(player);
36+
37+
if (ban == null) {
38+
return Component.text("That player is not banned.");
39+
}
40+
41+
NamedTextColor GENERAL = NamedTextColor.YELLOW;
42+
NamedTextColor INFO = NamedTextColor.GREEN;
43+
NamedTextColor DETAIL = NamedTextColor.RED;
44+
45+
return ComponentBuilder.begin()
46+
.append("Ban info for ", GENERAL)
47+
.append(player.getName(), DETAIL)
48+
.append(":", GENERAL)
49+
.append("\nUUID: ", INFO)
50+
.append(ban.getUuid(), DETAIL)
51+
.append("\nIP: ", INFO)
52+
.append(ban.getIp(), DETAIL)
53+
.append("\nReason: ", INFO)
54+
.append(ban.getReason(), DETAIL)
55+
.append("\nBanned by: ", INFO)
56+
.append(ban.getSource(), DETAIL)
57+
.append("\nBanned on: ", INFO)
58+
.append(ban.getPropagated(), DETAIL)
59+
.append("\nExpires on: ", INFO)
60+
.append(ban.getExpiry(), DETAIL).build();
61+
}
62+
63+
@Override
64+
public List<String> tab(CommandSender sender, String[] args) {
65+
return Utilities.playerCompletions(args[0]);
66+
}
67+
}

0 commit comments

Comments
 (0)