Skip to content

Commit 369077c

Browse files
authored
feature(detection): Add possibility to track flying machines (#179)
1 parent 2154cf0 commit 369077c

File tree

56 files changed

+1116
-923
lines changed

Some content is hidden

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

56 files changed

+1116
-923
lines changed

SERVICE_ARCHITECTURE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ The plugin automatically selects the appropriate implementation:
117117
```java
118118
// In AntiRedstoneClockRemastered.java
119119
private void enableRedstoneClockService() {
120-
this.redstoneClockService = RedstoneClockServiceFactory.createService(this);
120+
this.decisionService = RedstoneClockServiceFactory.createService(this);
121121
}
122122
```
123123

build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@ dependencies {
6767
implementation(libs.adventure.text.feature.pagination)
6868
implementation(libs.adventure.text.discord)
6969
implementation(libs.jda.webhook)
70+
implementation(libs.customblockdata)
7071
implementation(libs.guice)
7172
implementation(libs.jakarta.inject)
7273
annotationProcessor(libs.cloud.command.annotations)
@@ -132,6 +133,7 @@ tasks {
132133
shadowJar {
133134
archiveClassifier.set("")
134135
relocate("org.bstats", "net.onelitefeather.antiredstoneclockremastered.org.bstats")
136+
relocate("com.jeff_media.customblockdata", "net.onelitefeather.antiredstoneclockremastered.com.jeff_media.customblockdata")
135137
dependsOn(jar)
136138
}
137139
this.modrinth {

settings.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ dependencyResolutionManagement {
2525

2626
version("paper", "1.21.8-R0.1-SNAPSHOT")
2727
version("bstats", "3.1.0")
28+
version("customblockdata", "2.2.4")
2829

2930
version("cloudcommand", "2.0.0")
3031
version("cloudcommandPaper", "2.0.0-SNAPSHOT")
@@ -72,6 +73,7 @@ dependencyResolutionManagement {
7273
library("adventure.text.discord", "dev.vankka", "mcdiscordreserializer").versionRef("adventure-text-discord-serializer")
7374
library("jda-webhook", "club.minnced", "discord-webhooks").versionRef("jda-webhook")
7475
library("bstats", "org.bstats", "bstats-bukkit").versionRef("bstats")
76+
library("customblockdata", "com.jeff-media", "custom-block-data").versionRef("customblockdata")
7577

7678
library("cloud.command.paper", "org.incendo", "cloud-paper").versionRef("cloudcommandPaper")
7779
library("cloud.command.annotations", "org.incendo", "cloud-annotations").versionRef("cloudcommandAnnotations")

src/main/java/net/onelitefeather/antiredstoneclockremastered/AntiRedstoneClockRemastered.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.google.inject.Guice;
44
import com.google.inject.Injector;
55
import com.google.inject.Stage;
6+
import com.jeff_media.customblockdata.CustomBlockData;
67
import net.kyori.adventure.text.Component;
78
import net.kyori.adventure.text.minimessage.MiniMessage;
89
import net.onelitefeather.antiredstoneclockremastered.api.PlotsquaredSupport;
@@ -15,7 +16,9 @@
1516
import net.onelitefeather.antiredstoneclockremastered.injection.ServiceModule;
1617
import net.onelitefeather.antiredstoneclockremastered.injection.TranslationModule;
1718
import net.onelitefeather.antiredstoneclockremastered.service.UpdateService;
19+
import net.onelitefeather.antiredstoneclockremastered.service.tracking.ConfigMode;
1820
import net.onelitefeather.antiredstoneclockremastered.utils.CheckTPS;
21+
import org.bukkit.configuration.serialization.ConfigurationSerialization;
1922
import org.bukkit.plugin.java.JavaPlugin;
2023

2124
import java.util.Arrays;
@@ -46,7 +49,10 @@ public void onLoad() {
4649

4750
@Override
4851
public void onEnable() {
52+
CustomBlockData.registerListener(this);
4953
injector.getInstance(TranslationModule.class);
54+
var mode = ConfigMode.getEnum(getConfig(), "check.mode", ConfigMode.STATIC);
55+
getComponentLogger().info(mode.getEnableMessage());
5056
injector.getInstance(CheckTPS.class).startCheck();
5157
Optional.ofNullable(injector.getInstance(PlotsquaredSupport.class)).ifPresent(PlotsquaredSupport::init);
5258
donationInformation();
Lines changed: 8 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
package net.onelitefeather.antiredstoneclockremastered.commands;
22

33
import jakarta.inject.Inject;
4+
import jakarta.inject.Named;
45
import net.kyori.adventure.text.Component;
5-
import net.kyori.adventure.text.TranslationArgument;
6-
import net.kyori.adventure.text.event.ClickEvent;
76
import net.kyori.adventure.text.feature.pagination.Pagination;
87
import net.onelitefeather.antiredstoneclockremastered.AntiRedstoneClockRemastered;
98
import net.onelitefeather.antiredstoneclockremastered.model.RedstoneClock;
10-
import net.onelitefeather.antiredstoneclockremastered.service.api.RedstoneClockService;
9+
import net.onelitefeather.antiredstoneclockremastered.service.api.RedstoneTrackingService;
1110
import org.bukkit.command.CommandSender;
12-
import org.bukkit.entity.Player;
1311
import org.incendo.cloud.annotation.specifier.Greedy;
1412
import org.incendo.cloud.annotations.Argument;
1513
import org.incendo.cloud.annotations.Command;
@@ -30,13 +28,13 @@
3028
*/
3129
public final class DisplayActiveClocksCommand implements Pagination.Renderer.RowRenderer<RedstoneClock> {
3230

33-
private final RedstoneClockService redstoneClockService;
31+
private final RedstoneTrackingService trackingService;
3432

3533
private final Pagination.Builder pagination = Pagination.builder().resultsPerPage(4);
3634

3735
@Inject
38-
public DisplayActiveClocksCommand(RedstoneClockService redstoneClockService) {
39-
this.redstoneClockService = redstoneClockService;
36+
public DisplayActiveClocksCommand(RedstoneTrackingService trackingService) {
37+
this.trackingService = trackingService;
4038
}
4139

4240
@Command("arcm display [page]")
@@ -50,7 +48,7 @@ public void displayClocks(CommandSender commandSender, @Greedy @Argument("page")
5048
if (page == null) {
5149
page = 0;
5250
}
53-
build.render(this.redstoneClockService.getRedstoneClocks(), Math.max(1, page))
51+
build.render(this.trackingService.getRedstoneClocks(), Math.max(1, page))
5452
.forEach(commandSender::sendMessage);
5553

5654
}
@@ -59,25 +57,9 @@ private String mapToCommand(int i) {
5957
return "/arcm display " + i;
6058
}
6159

62-
private Component mapClockToMessage(RedstoneClock redstoneClock) {
63-
var location = redstoneClock.getLocation();
64-
return Component.empty().hoverEvent(Component.translatable("antiredstoneclockremastered.command.display.clock.hover").asHoverEvent())
65-
.append(Component.translatable("antiredstoneclockremastered.command.display.clock.text").arguments(
66-
TranslationArgument.numeric(redstoneClock.getTriggerCount()),
67-
TranslationArgument.numeric(location.getBlockX()),
68-
TranslationArgument.numeric(location.getBlockY()),
69-
TranslationArgument.numeric(location.getBlockZ()),
70-
Component.empty() // TODO: Temporary fix for display issue
71-
).clickEvent(ClickEvent.callback(audience -> {
72-
if (audience instanceof final Player executor) {
73-
executor.teleport(location);
74-
}
75-
}))
76-
);
77-
}
78-
7960
@Override
8061
public @NotNull Collection<Component> renderRow(@Nullable RedstoneClock redstoneClock, int index) {
81-
return List.of(mapClockToMessage(redstoneClock));
62+
if (redstoneClock == null) return List.of();
63+
return List.of(redstoneClock.render());
8264
}
8365
}

src/main/java/net/onelitefeather/antiredstoneclockremastered/commands/FeatureCommand.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import net.kyori.adventure.text.Component;
55
import net.kyori.adventure.text.TranslationArgument;
66
import net.onelitefeather.antiredstoneclockremastered.AntiRedstoneClockRemastered;
7-
import net.onelitefeather.antiredstoneclockremastered.service.api.RedstoneClockService;
7+
import net.onelitefeather.antiredstoneclockremastered.service.api.DecisionService;
88
import org.bukkit.World;
99
import org.bukkit.command.CommandSender;
1010
import org.incendo.cloud.annotations.Argument;
@@ -25,12 +25,12 @@
2525
public final class FeatureCommand {
2626

2727
private final AntiRedstoneClockRemastered plugin;
28-
private final RedstoneClockService redstoneClockService;
28+
private final DecisionService decisionService;
2929

3030
@Inject
31-
public FeatureCommand(AntiRedstoneClockRemastered plugin, RedstoneClockService redstoneClockService) {
31+
public FeatureCommand(AntiRedstoneClockRemastered plugin, DecisionService decisionService) {
3232
this.plugin = plugin;
33-
this.redstoneClockService = redstoneClockService;
33+
this.decisionService = decisionService;
3434
}
3535

3636
@Command("check observer")
@@ -39,7 +39,7 @@ public FeatureCommand(AntiRedstoneClockRemastered plugin, RedstoneClockService r
3939
public void toggleObserver(CommandSender sender) {
4040
plugin.getConfig().set("check.observer", !plugin.getConfig().getBoolean("check.observer"));
4141
plugin.saveConfig();
42-
redstoneClockService.reload();
42+
decisionService.reload();
4343
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("check.observer"));
4444
}
4545

@@ -49,7 +49,7 @@ public void toggleObserver(CommandSender sender) {
4949
public void togglePiston(CommandSender sender) {
5050
plugin.getConfig().set("check.piston", !plugin.getConfig().getBoolean("check.piston"));
5151
plugin.saveConfig();
52-
redstoneClockService.reload();
52+
decisionService.reload();
5353
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("check.piston"));
5454
}
5555

@@ -59,7 +59,7 @@ public void togglePiston(CommandSender sender) {
5959
public void toggleComparator(CommandSender sender) {
6060
plugin.getConfig().set("check.comparator", !plugin.getConfig().getBoolean("check.comparator"));
6161
plugin.saveConfig();
62-
redstoneClockService.reload();
62+
decisionService.reload();
6363
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("check.comparator"));
6464
}
6565

@@ -69,7 +69,7 @@ public void toggleComparator(CommandSender sender) {
6969
public void toggleSculk(CommandSender sender) {
7070
plugin.getConfig().set("check.sculk", !plugin.getConfig().getBoolean("check.sculk"));
7171
plugin.saveConfig();
72-
redstoneClockService.reload();
72+
decisionService.reload();
7373
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("check.sculk"));
7474
}
7575

@@ -79,7 +79,7 @@ public void toggleSculk(CommandSender sender) {
7979
public void toggleRedstoneAndRepeater(CommandSender sender) {
8080
plugin.getConfig().set("check.redstoneAndRepeater", !plugin.getConfig().getBoolean("check.redstoneAndRepeater"));
8181
plugin.saveConfig();
82-
redstoneClockService.reload();
82+
decisionService.reload();
8383
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("check.redstoneAndRepeater"));
8484
}
8585

@@ -99,7 +99,7 @@ public void addIgnoredWorld(CommandSender sender, @Argument("world") World world
9999
worlds.add(world.getName());
100100
plugin.getConfig().set("check.ignoredWorlds", worlds);
101101
plugin.saveConfig();
102-
redstoneClockService.reload();
102+
decisionService.reload();
103103
sender.sendMessage(Component.translatable("antiredstoneclockremastered.command.feature.check.world.add").arguments(AntiRedstoneClockRemastered.PREFIX, Component.text(world.getName())));
104104
}
105105

@@ -111,7 +111,7 @@ public void removeIgnoredWorld(CommandSender sender, @Argument("world") World wo
111111
worlds.remove(world.getName());
112112
plugin.getConfig().set("check.ignoredWorlds", worlds);
113113
plugin.saveConfig();
114-
redstoneClockService.reload();
114+
decisionService.reload();
115115
sender.sendMessage(Component.translatable("antiredstoneclockremastered.command.feature.check.world.remove").arguments(AntiRedstoneClockRemastered.PREFIX, Component.text(world.getName())));
116116
}
117117

@@ -123,7 +123,7 @@ public void addIgnoredRegion(CommandSender sender, @Argument("region") String re
123123
regions.add(region);
124124
plugin.getConfig().set("check.ignoredRegions", regions);
125125
plugin.saveConfig();
126-
redstoneClockService.reload();
126+
decisionService.reload();
127127
sender.sendMessage(Component.translatable("antiredstoneclockremastered.command.feature.check.region.add").arguments(AntiRedstoneClockRemastered.PREFIX, Component.text(region)));
128128
}
129129

@@ -135,7 +135,7 @@ public void removeIgnoredRegion(CommandSender sender, @Argument("region") String
135135
regions.remove(region);
136136
plugin.getConfig().set("check.ignoredRegions", regions);
137137
plugin.saveConfig();
138-
redstoneClockService.reload();
138+
decisionService.reload();
139139
sender.sendMessage(Component.translatable("antiredstoneclockremastered.command.feature.check.region.remove").arguments(AntiRedstoneClockRemastered.PREFIX, Component.text(region)));
140140
}
141141

@@ -145,7 +145,7 @@ public void removeIgnoredRegion(CommandSender sender, @Argument("region") String
145145
public void toggleAutoBreak(CommandSender sender) {
146146
plugin.getConfig().set("clock.autoBreak", !plugin.getConfig().getBoolean("clock.autoBreak"));
147147
plugin.saveConfig();
148-
redstoneClockService.reload();
148+
decisionService.reload();
149149
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("clock.autoBreak"));
150150
}
151151

@@ -155,7 +155,7 @@ public void toggleAutoBreak(CommandSender sender) {
155155
public void toggleNotifyAdmins(CommandSender sender) {
156156
plugin.getConfig().set("clock.notifyAdmins", !plugin.getConfig().getBoolean("clock.notifyAdmins"));
157157
plugin.saveConfig();
158-
redstoneClockService.reload();
158+
decisionService.reload();
159159
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("clock.notifyAdmins"));
160160
}
161161

@@ -165,7 +165,7 @@ public void toggleNotifyAdmins(CommandSender sender) {
165165
public void toggleNotifyConsole(CommandSender sender) {
166166
plugin.getConfig().set("clock.notifyConsole", !plugin.getConfig().getBoolean("clock.notifyConsole"));
167167
plugin.saveConfig();
168-
redstoneClockService.reload();
168+
decisionService.reload();
169169
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("clock.notifyConsole"));
170170
}
171171

@@ -175,7 +175,7 @@ public void toggleNotifyConsole(CommandSender sender) {
175175
public void toggleDrop(CommandSender sender) {
176176
plugin.getConfig().set("clock.drop", !plugin.getConfig().getBoolean("clock.drop"));
177177
plugin.saveConfig();
178-
redstoneClockService.reload();
178+
decisionService.reload();
179179
sendMessageToggleMessage(sender, plugin.getConfig().getBoolean("clock.drop"));
180180
}
181181

@@ -185,7 +185,7 @@ public void toggleDrop(CommandSender sender) {
185185
public void setEndDelay(CommandSender sender,@Argument("delay") Integer endDeplay) {
186186
plugin.getConfig().set("clock.endDelay", endDeplay);
187187
plugin.saveConfig();
188-
redstoneClockService.reload();
188+
decisionService.reload();
189189
sendMessageSetMessage(sender, plugin.getConfig().getInt("clock.endDelay"));
190190
}
191191

@@ -195,7 +195,7 @@ public void setEndDelay(CommandSender sender,@Argument("delay") Integer endDepla
195195
public void setMaxCount(CommandSender sender,@Argument("count") Integer count) {
196196
plugin.getConfig().set("clock.maxCount", count);
197197
plugin.saveConfig();
198-
redstoneClockService.reload();
198+
decisionService.reload();
199199
sendMessageSetMessage(sender, plugin.getConfig().getInt("clock.maxCount"));
200200
}
201201

src/main/java/net/onelitefeather/antiredstoneclockremastered/commands/ReloadCommand.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import jakarta.inject.Inject;
44
import net.kyori.adventure.text.Component;
55
import net.onelitefeather.antiredstoneclockremastered.AntiRedstoneClockRemastered;
6-
import net.onelitefeather.antiredstoneclockremastered.service.api.RedstoneClockService;
6+
import net.onelitefeather.antiredstoneclockremastered.service.api.DecisionService;
77
import org.bukkit.command.CommandSender;
88
import org.incendo.cloud.annotations.Command;
99
import org.incendo.cloud.annotations.CommandDescription;
@@ -18,18 +18,18 @@
1818
*/
1919
public final class ReloadCommand {
2020

21-
private final RedstoneClockService redstoneClockService;
21+
private final DecisionService decisionService;
2222

2323
@Inject
24-
public ReloadCommand(RedstoneClockService redstoneClockService) {
25-
this.redstoneClockService = redstoneClockService;
24+
public ReloadCommand(DecisionService decisionService) {
25+
this.decisionService = decisionService;
2626
}
2727

2828
@Command("arcm reload")
2929
@CommandDescription("antiredstoneclockremastered.command.reload.description")
3030
@Permission("antiredstoneclockremastered.command.reload")
3131
public void reloadConfig(CommandSender commandSender) {
32-
this.redstoneClockService.reload();
32+
this.decisionService.reload();
3333
commandSender.sendMessage(Component.translatable("antiredstoneclockremastered.command.reload.success").arguments(AntiRedstoneClockRemastered.PREFIX));
3434
}
3535
}

0 commit comments

Comments
 (0)