Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 12 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -47,12 +47,18 @@
<artifactId>HikariCP</artifactId>
<version>5.1.0</version>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.4.0</version>
</dependency>
</dependencies>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<version>8.4.0</version>
</dependency>
<dependency>
<groupId>me.clip</groupId>
<artifactId>placeholderapi</artifactId>
<version>2.11.5</version>
<scope>provided</scope>
</dependency>
</dependencies>

<build>
<plugins>
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/com/yourorg/servershop/ServerShopPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,10 @@ public final class ServerShopPlugin extends JavaPlugin {
this.menus = new MenuManager(this);
Bukkit.getPluginManager().registerEvents(menus, this);

if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
new com.yourorg.servershop.papi.ShopPlaceholderExpansion(this).register();
}

int saveEvery = Math.max(1, getConfig().getInt("dynamicPricing.decay.saveEveryMinutes", 5));
Bukkit.getScheduler().runTaskTimerAsynchronously(this, dynamic::tickSaveAll, 20L * 60L * saveEvery, 20L * 60L * saveEvery);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package com.yourorg.servershop.papi;

import com.yourorg.servershop.ServerShopPlugin;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.Material;
import org.bukkit.entity.Player;

/**
* PlaceholderAPI expansion for the shop plugin.
*/
public final class ShopPlaceholderExpansion extends PlaceholderExpansion {
private final ServerShopPlugin plugin;

public ShopPlaceholderExpansion(ServerShopPlugin plugin) {
this.plugin = plugin;
}

@Override public String getIdentifier() { return "shop"; }
@Override public String getAuthor() { return String.join(", ", plugin.getDescription().getAuthors()); }
@Override public String getVersion() { return plugin.getDescription().getVersion(); }
@Override public boolean persist() { return true; }
@Override public boolean canRegister() { return true; }

@Override
public String onPlaceholderRequest(Player player, String params) {
if (params == null) return "";
params = params.toLowerCase();

if (params.startsWith("price_")) {
String matName = params.substring(6).toUpperCase();
Material mat = Material.matchMaterial(matName);
if (mat == null) return "";
double price = plugin.shop().priceBuy(mat);
return price < 0 ? "" : String.format("%.2f", price);
}

if (params.startsWith("sellprice_")) {
String matName = params.substring(10).toUpperCase();
Material mat = Material.matchMaterial(matName);
if (mat == null) return "";
double price = plugin.shop().priceSell(mat);
return price < 0 ? "" : String.format("%.2f", price);
}

if (params.startsWith("category_multiplier_")) {
String cat = params.substring("category_multiplier_".length());
double mult = plugin.categorySettings().multiplier(cat);
return String.format("%.2f", mult);
}

if (params.startsWith("category_enabled_")) {
String cat = params.substring("category_enabled_".length());
return String.valueOf(plugin.categorySettings().isEnabled(cat));
}

return null;
}
}

1 change: 1 addition & 0 deletions src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ main: com.yourorg.servershop.ServerShopPlugin
version: 1.2.0
api-version: '1.20'
depend: [Vault]
softdepend: [PlaceholderAPI]
author: yourorg
description: Dynamic server shop with GUIs, MySQL logging, importer, and per-item dynamic pricing.
commands:
Expand Down
Loading