11package com .ghostchu .quickshop .addon .bluemap ;
22
33import com .ghostchu .quickshop .QuickShop ;
4- import com .ghostchu .quickshop .api .event .*;
54import com .ghostchu .quickshop .api .localization .text .TextManager ;
65import com .ghostchu .quickshop .api .shop .Shop ;
76import com .ghostchu .quickshop .api .shop .ShopType ;
1413import net .kyori .adventure .text .Component ;
1514import net .kyori .adventure .text .serializer .plain .PlainTextComponentSerializer ;
1615import org .bukkit .Bukkit ;
17- import org .bukkit .event . EventHandler ;
16+ import org .bukkit .Location ;
1817import org .bukkit .event .HandlerList ;
1918import org .bukkit .event .Listener ;
20- import org .bukkit .event .world .WorldLoadEvent ;
21- import org .bukkit .event .world .WorldUnloadEvent ;
2219import org .bukkit .plugin .Plugin ;
2320import org .bukkit .plugin .java .JavaPlugin ;
2421import org .jetbrains .annotations .NotNull ;
@@ -44,65 +41,17 @@ public void onEnable() {
4441 saveDefaultConfig ();
4542 plugin = QuickShop .getInstance ();
4643 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- }
44+ BlueMapAPI .onEnable (blueMapAPI -> {
45+ getLogger ().info ("Found BlueMap loaded! Hooking!" );
46+ createMarkerSet ();
47+ Bukkit .getScheduler ().runTaskTimerAsynchronously (this , ()->{
48+ updateAllMarkers ();
49+ }, 1 , getConfig ().getInt ("refresh-per-seconds" ) * 20L );
50+ });
51+
52+ BlueMapAPI .onDisable (api -> Bukkit .getScheduler ().cancelTasks (this ));
53+ }
6154
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- }
10655 @ NotNull
10756 public String plain (@ NotNull Component component ) {
10857 return PlainTextComponentSerializer .plainText ().serialize (component );
@@ -136,37 +85,32 @@ public void updateShopMarker(Shop shop) {
13685 }
13786 for (BlueMapMap map : bWorld .get ().getMaps ()) {
13887 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 ());
88+ String markerName = fillPlaceholders (getConfig ().getString ("marker-label" ), shop );
89+ String desc = fillPlaceholders (getConfig ().getString ("marker-detail" ), shop );
15990 POIMarker marker = POIMarker .builder ()
16091 .label (markerName )
16192 .position (shop .getLocation ().getX (),
16293 shop .getLocation ().getY (),
16394 shop .getLocation ().getZ ())
164- .maxDistance (1000 )
95+ .maxDistance (getConfig (). getDouble ( "max-distance" ) )
16596 .detail (desc )
16697 .styleClasses ()
16798 .build ();
16899 markerSet .getMarkers ().put ("quickshop-hikari-shop" +shop .getShopId (), marker );
169100 }
170101 }
171102
103+ private String fillPlaceholders (String s , Shop shop ){
104+ Location loc = shop .getLocation ();
105+ String x = String .valueOf (loc .getX ());
106+ String y = String .valueOf (loc .getY ());
107+ String z = String .valueOf (loc .getZ ());
108+ s = s .replace ("%owner%" , plain (shop .ownerName ()));
109+ s = s .replace ("%item%" , shop .getItem ().getType ().name ());
110+ s = s .replace ("%price%" , String .valueOf (shop .getPrice ()));
111+ s = s .replace ("%stock%" , String .valueOf (shop .getRemainingStock ()));
112+ s = s .replace ("%type%" , shop .getShopType ().name ());
113+ s = s .replace ("%location%" , x + "," + y + "," + z );
114+ return s ;
115+ }
172116}
0 commit comments