Skip to content

Commit bfb3f7c

Browse files
authored
Merge pull request #838 from Ghost-chu/hikari
4.2.0.0
2 parents dbfcdbd + 1ceb9fc commit bfb3f7c

File tree

158 files changed

+3159
-495
lines changed

Some content is hidden

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

158 files changed

+3159
-495
lines changed

.github/workflows/mc-publish.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ jobs:
3535
hXiIvTyT | recommends | *
3636
nfGCP9fk | recommends | *
3737
UmLGoGij | recommends | *
38+
swbUV1cr | recommends | *
39+
fRQREgAc | recommends | *
3840

3941
github-discussion: Announcements
4042
github-token: ${{ secrets.GITHUB_TOKEN }}

addon/bluemap/pom.xml

Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
3+
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4+
xmlns="http://maven.apache.org/POM/4.0.0"
5+
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
6+
<modelVersion>4.0.0</modelVersion>
7+
<parent>
8+
<groupId>com.ghostchu</groupId>
9+
<artifactId>quickshop-hikari</artifactId>
10+
<version>4.2.0.0</version>
11+
<relativePath>../../pom.xml</relativePath>
12+
</parent>
13+
<groupId>com.ghostchu.quickshop.addon</groupId>
14+
<artifactId>bluemap</artifactId>
15+
<packaging>jar</packaging>
16+
17+
<name>Addon-BlueMap</name>
18+
19+
<description>Displaying the quickshops on your BlueMap instance</description>
20+
<properties>
21+
<java.version>16</java.version>
22+
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
23+
</properties>
24+
25+
<repositories>
26+
<repository>
27+
<id>jitpack.io</id>
28+
<url>https://jitpack.io</url>
29+
</repository>
30+
</repositories>
31+
32+
<build>
33+
<plugins>
34+
<plugin>
35+
<groupId>org.apache.maven.plugins</groupId>
36+
<artifactId>maven-compiler-plugin</artifactId>
37+
</plugin>
38+
39+
<plugin>
40+
<groupId>org.apache.maven.plugins</groupId>
41+
<artifactId>maven-shade-plugin</artifactId>
42+
</plugin>
43+
</plugins>
44+
<resources>
45+
<resource>
46+
<directory>src/main/resources</directory>
47+
<filtering>true</filtering>
48+
</resource>
49+
</resources>
50+
</build>
51+
52+
53+
<dependencies>
54+
<dependency>
55+
<groupId>org.spigotmc</groupId>
56+
<artifactId>spigot-api</artifactId>
57+
</dependency>
58+
<dependency>
59+
<groupId>com.ghostchu</groupId>
60+
<artifactId>quickshop-bukkit</artifactId>
61+
<version>${parent.version}</version>
62+
<scope>provided</scope>
63+
</dependency>
64+
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-lang3 -->
65+
<dependency>
66+
<groupId>org.apache.commons</groupId>
67+
<artifactId>commons-lang3</artifactId>
68+
<version>3.12.0</version>
69+
<scope>provided</scope>
70+
</dependency>
71+
<dependency>
72+
<groupId>com.github.BlueMap-Minecraft</groupId>
73+
<artifactId>BlueMapAPI</artifactId>
74+
<version>v2.4.0</version>
75+
<scope>provided</scope>
76+
</dependency>
77+
</dependencies>
78+
</project>
Lines changed: 172 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,172 @@
1+
package com.ghostchu.quickshop.addon.bluemap;
2+
3+
import com.ghostchu.quickshop.QuickShop;
4+
import com.ghostchu.quickshop.api.event.*;
5+
import com.ghostchu.quickshop.api.localization.text.TextManager;
6+
import com.ghostchu.quickshop.api.shop.Shop;
7+
import com.ghostchu.quickshop.api.shop.ShopType;
8+
import com.ghostchu.quickshop.util.Util;
9+
import de.bluecolored.bluemap.api.BlueMapAPI;
10+
import de.bluecolored.bluemap.api.BlueMapMap;
11+
import de.bluecolored.bluemap.api.BlueMapWorld;
12+
import de.bluecolored.bluemap.api.markers.MarkerSet;
13+
import de.bluecolored.bluemap.api.markers.POIMarker;
14+
import net.kyori.adventure.text.Component;
15+
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
16+
import org.bukkit.Bukkit;
17+
import org.bukkit.event.EventHandler;
18+
import org.bukkit.event.HandlerList;
19+
import org.bukkit.event.Listener;
20+
import org.bukkit.event.world.WorldLoadEvent;
21+
import org.bukkit.event.world.WorldUnloadEvent;
22+
import org.bukkit.plugin.Plugin;
23+
import org.bukkit.plugin.java.JavaPlugin;
24+
import org.jetbrains.annotations.NotNull;
25+
26+
import java.util.Optional;
27+
28+
public final class Main extends JavaPlugin implements Listener {
29+
static Main instance;
30+
private QuickShop plugin;
31+
private BlueMapAPI blueMapAPI;
32+
@Override
33+
public void onLoad() {
34+
instance = this;
35+
}
36+
37+
@Override
38+
public void onDisable() {
39+
HandlerList.unregisterAll((Plugin) this);
40+
}
41+
42+
@Override
43+
public void onEnable() {
44+
saveDefaultConfig();
45+
plugin = QuickShop.getInstance();
46+
getLogger().info("Registering the per shop permissions...");
47+
Bukkit.getScheduler().runTaskAsynchronously(this,()->{
48+
while(BlueMapAPI.getInstance().isEmpty()){
49+
try {
50+
Thread.sleep(1000);
51+
} catch (InterruptedException e) {
52+
throw new RuntimeException(e);
53+
}
54+
}
55+
getLogger().info("Found Pl3xMap loaded! Hooking!");
56+
blueMapAPI = BlueMapAPI.getInstance().orElseThrow();
57+
Bukkit.getPluginManager().registerEvents(this, this);
58+
Bukkit.getScheduler().runTaskLater(this, this::updateAllMarkers, 80);
59+
});
60+
}
61+
62+
@EventHandler(ignoreCancelled = true)
63+
public void onEvent(WorldLoadEvent event){
64+
Util.mainThreadRun(this::updateAllMarkers);
65+
}
66+
@EventHandler(ignoreCancelled = true)
67+
public void onEvent(WorldUnloadEvent event){
68+
Util.mainThreadRun(this::updateAllMarkers);
69+
}
70+
@EventHandler(ignoreCancelled = true)
71+
public void onEvent(QSConfigurationReloadEvent event){
72+
Util.mainThreadRun(this::updateAllMarkers);
73+
}
74+
@EventHandler(ignoreCancelled = true)
75+
public void onEvent(ShopCreateSuccessEvent event){
76+
updateShopMarker(event.getShop());
77+
}
78+
@EventHandler(ignoreCancelled = true)
79+
public void onEvent(ShopDeleteEvent event){
80+
Util.mainThreadRun(()->updateShopMarker(event.getShop()));
81+
}
82+
@EventHandler(ignoreCancelled = true)
83+
public void onEvent(ShopPriceChangeEvent event){
84+
Util.mainThreadRun(()->updateShopMarker(event.getShop()));
85+
}
86+
@EventHandler(ignoreCancelled = true)
87+
public void onEvent(ShopItemChangeEvent event){
88+
Util.mainThreadRun(()->updateShopMarker(event.getShop()));
89+
}
90+
@EventHandler(ignoreCancelled = true)
91+
public void onEvent(ShopOwnershipTransferEvent event){
92+
Util.mainThreadRun(()->updateShopMarker(event.getShop()));
93+
}
94+
@EventHandler(ignoreCancelled = true)
95+
public void onEvent(ShopSuccessPurchaseEvent event){
96+
Util.mainThreadRun(()->updateShopMarker(event.getShop()));
97+
}
98+
@EventHandler(ignoreCancelled = true)
99+
public void onEvent(ShopTypeChangeEvent event){
100+
Util.mainThreadRun(()->updateShopMarker(event.getShop()));
101+
}
102+
@EventHandler(ignoreCancelled = true)
103+
public void onEvent(ShopNamingEvent event){
104+
Util.mainThreadRun(()->updateShopMarker(event.getShop()));
105+
}
106+
@NotNull
107+
public String plain(@NotNull Component component) {
108+
return PlainTextComponentSerializer.plainText().serialize(component);
109+
}
110+
111+
@NotNull
112+
public TextManager text() {
113+
return plugin.getTextManager();
114+
}
115+
116+
public MarkerSet createMarkerSet(){
117+
return MarkerSet.builder()
118+
.defaultHidden(true)
119+
.label(plain(text().of("addon.bluemap.markerset-title").forLocale()))
120+
.defaultHidden(getConfig().getBoolean("display-by-default"))
121+
.toggleable(true)
122+
.build();
123+
}
124+
private void updateAllMarkers() {
125+
blueMapAPI.getWorlds().forEach(bWorld-> bWorld.getMaps().forEach(bMap-> bMap.getMarkerSets().remove("quickshop-hikari-shops")));
126+
plugin.getShopManager().getAllShops().forEach(this::updateShopMarker);
127+
}
128+
129+
public void updateShopMarker(Shop shop) {
130+
Optional<BlueMapWorld> bWorld = blueMapAPI.getWorld(shop.getLocation().getWorld());
131+
if(bWorld.isEmpty()) return;
132+
String shopName = shop.getShopName();
133+
String posStr = String.format("%s %s, %s, %s", shop.getLocation().getWorld().getName(), shop.getLocation().getBlockX(), shop.getLocation().getBlockY(), shop.getLocation().getBlockZ());
134+
if (shopName == null) {
135+
shopName = posStr;
136+
}
137+
for (BlueMapMap map : bWorld.get().getMaps()) {
138+
MarkerSet markerSet = map.getMarkerSets().computeIfAbsent("quickshop-hikari-shops",(key)-> createMarkerSet());
139+
String markerName = plain(text().of("addon.bluemap.marker-name",
140+
shopName,
141+
plain(shop.ownerName()),
142+
plain(Util.getItemStackName(shop.getItem())),
143+
plugin.getShopManager().format(shop.getPrice(), shop),
144+
shop.getShopStackingAmount(),
145+
shop.getShopType() == ShopType.SELLING ? plain(text().of("shop-type.selling").forLocale()) : plain(text().of("shop-type.buying").forLocale()),
146+
shop.isUnlimited(),
147+
posStr
148+
).forLocale());
149+
String desc = plain(text().of("addon.bluemap.marker-description",
150+
shopName,
151+
plain(shop.ownerName()),
152+
plain(Util.getItemStackName(shop.getItem())),
153+
plugin.getShopManager().format(shop.getPrice(), shop),
154+
shop.getShopStackingAmount(),
155+
shop.getShopType() == ShopType.SELLING ? plain(text().of("shop-type.selling").forLocale()) : plain(text().of("shop-type.buying").forLocale()),
156+
shop.isUnlimited(),
157+
posStr
158+
).forLocale());
159+
POIMarker marker = POIMarker.builder()
160+
.label(markerName)
161+
.position(shop.getLocation().getX(),
162+
shop.getLocation().getY(),
163+
shop.getLocation().getZ())
164+
.maxDistance(1000)
165+
.detail(desc)
166+
.styleClasses()
167+
.build();
168+
markerSet.getMarkers().put("quickshop-hikari-shop"+shop.getShopId(), marker);
169+
}
170+
}
171+
172+
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
config-version: 1
2+
display-by-default: true
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
name: qsaddon-${project.artifactId}
2+
version: '${project.version}'
3+
main: com.ghostchu.quickshop.addon.${project.artifactId}.Main
4+
api-version: 1.18
5+
depend:
6+
- BlueMap
7+
authors: [ Ghost_chu ]

addon/discordsrv/pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>com.ghostchu</groupId>
99
<artifactId>quickshop-hikari</artifactId>
10-
<version>4.1.1.0</version>
10+
<version>4.2.0.0</version>
1111
<relativePath>../../pom.xml</relativePath>
1212
</parent>
1313
<groupId>com.ghostchu.quickshop.addon</groupId>
@@ -69,7 +69,7 @@
6969
<dependency>
7070
<groupId>com.discordsrv</groupId>
7171
<artifactId>discordsrv</artifactId>
72-
<version>1.26.1</version>
72+
<version>1.26.2</version>
7373
<scope>system</scope>
7474
<systemPath>${project.basedir}/lib/DiscordSRV-Build-1.26.1.jar</systemPath>
7575
</dependency>

addon/discordsrv/src/main/java/com/ghostchu/quickshop/addon/discordsrv/command/SubCommand_Discord.java

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.ghostchu.quickshop.addon.discordsrv.Main;
55
import com.ghostchu.quickshop.addon.discordsrv.bean.NotificationFeature;
66
import com.ghostchu.quickshop.api.command.CommandHandler;
7+
import com.ghostchu.quickshop.api.command.CommandParser;
78
import com.ghostchu.quickshop.util.Util;
89
import com.ghostchu.quickshop.util.logger.Log;
910
import net.kyori.adventure.text.Component;
@@ -27,17 +28,17 @@ public SubCommand_Discord(QuickShop qs, Main plugin) {
2728
}
2829

2930
@Override
30-
public void onCommand(Player sender, @NotNull String commandLabel, @NotNull String[] cmdArg) {
31-
if (cmdArg.length < 2) {
31+
public void onCommand(Player sender, @NotNull String commandLabel, @NotNull CommandParser parser) {
32+
if (parser.getArgs().size() < 2) {
3233
qs.text().of(sender, "command-incorrect", "/qs discord <features> <enable/disable>").send();
3334
return;
3435
}
35-
NotificationFeature feature = getFeatureByName(cmdArg[0]);
36+
NotificationFeature feature = getFeatureByName(parser.getArgs().get(0));
3637
if (feature == null) {
3738
qs.text().of(sender, "command-incorrect", "/qs discord <features> <enable/disable>").send();
3839
return;
3940
}
40-
boolean ops = cmdArg[1].equalsIgnoreCase("enable");
41+
boolean ops = parser.getArgs().get(1).equalsIgnoreCase("enable");
4142
Util.asyncThreadRun(() -> {
4243
try {
4344
Integer i = plugin.getDatabaseHelper().setNotifactionFeatureEnabled(sender.getUniqueId(), feature, ops);
@@ -69,14 +70,14 @@ else if (value.getDatabaseNode().equalsIgnoreCase(name))
6970
}
7071

7172
@Override
72-
public @Nullable List<String> onTabComplete(@NotNull Player sender, @NotNull String commandLabel, @NotNull String[] cmdArg) {
73-
if (cmdArg.length == 1) {
73+
public @Nullable List<String> onTabComplete(@NotNull Player sender, @NotNull String commandLabel, @NotNull CommandParser parser) {
74+
if (parser.getArgs().size() == 1) {
7475
return Arrays.stream(NotificationFeature.values())
7576
.filter(NotificationFeature::isPlayerToggleable)
7677
.map(NotificationFeature::getConfigNode)
7778
.toList();
7879
}
79-
if (cmdArg.length == 2) {
80+
if (parser.getArgs().size() == 2) {
8081
return List.of("enable", "disable");
8182
}
8283
return Collections.emptyList();

addon/discount/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
<parent>
88
<groupId>com.ghostchu</groupId>
99
<artifactId>quickshop-hikari</artifactId>
10-
<version>4.1.1.0</version>
10+
<version>4.2.0.0</version>
1111
<relativePath>../../pom.xml</relativePath>
1212
</parent>
1313
<groupId>com.ghostchu.quickshop.addon</groupId>

addon/discount/src/main/java/com/ghostchu/quickshop/addon/discount/command/DiscountCommand.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import com.ghostchu.quickshop.addon.discount.type.CodeCreationResponse;
88
import com.ghostchu.quickshop.addon.discount.type.CodeType;
99
import com.ghostchu.quickshop.api.command.CommandHandler;
10+
import com.ghostchu.quickshop.api.command.CommandParser;
1011
import com.ghostchu.quickshop.api.shop.Shop;
1112
import com.ghostchu.quickshop.common.util.CommonUtil;
1213
import com.ghostchu.quickshop.util.ChatSheetPrinter;
@@ -31,14 +32,14 @@ public DiscountCommand(Main main, QuickShop quickshop) {
3132
}
3233

3334
@Override
34-
public void onCommand(CommandSender sender, @NotNull String commandLabel, @NotNull String[] cmdArg) {
35-
if (cmdArg.length < 1) {
35+
public void onCommand(CommandSender sender, @NotNull String commandLabel, @NotNull CommandParser parser) {
36+
if (parser.getArgs().size() < 1) {
3637
quickshop.text().of(sender, "command-incorrect", "/qs discount <install/uninstall/create/remove/list/config/query>").send();
3738
return;
3839
}
39-
String[] passThroughArgs = new String[cmdArg.length - 1];
40-
System.arraycopy(cmdArg, 1, passThroughArgs, 0, passThroughArgs.length);
41-
switch (cmdArg[0]) {
40+
String[] passThroughArgs = new String[parser.getArgs().size() - 1];
41+
System.arraycopy(parser.getArgs().toArray(new String[0]), 1, passThroughArgs, 0, passThroughArgs.length);
42+
switch (parser.getArgs().get(0)) {
4243
case "install" -> install(sender, passThroughArgs);
4344
case "uninstall" -> uninstall(sender, passThroughArgs);
4445
case "create" -> create(sender, passThroughArgs);

0 commit comments

Comments
 (0)