Add some checks for shop creation
This commit is contained in:
parent
016b24987a
commit
44c9802349
|
|
@ -34,10 +34,12 @@ public class Config extends AbstractConfiguration {
|
||||||
|
|
||||||
public static int shopLimit = 100;
|
public static int shopLimit = 100;
|
||||||
public static boolean usePermissionShopLimit = false;
|
public static boolean usePermissionShopLimit = false;
|
||||||
|
public static String shopCreationWord = "[SHOP]";
|
||||||
private static void shopSettings() {
|
private static void shopSettings() {
|
||||||
String path = "shop-settings.";
|
String path = "shop-settings.";
|
||||||
shopLimit = config.getInt(path + "player-shop-limit", shopLimit);
|
shopLimit = config.getInt(path + "player-shop-limit", shopLimit);
|
||||||
usePermissionShopLimit = config.getBoolean(path + "use-permission-based-shop-limit", usePermissionShopLimit);
|
usePermissionShopLimit = config.getBoolean(path + "use-permission-based-shop-limit", usePermissionShopLimit);
|
||||||
|
shopCreationWord = config.getString(path + "creation-word", shopCreationWord);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String shopLimitPermission = "shop.buildlimit";
|
public static String shopLimitPermission = "shop.buildlimit";
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,15 @@ import com.alttd.playershops.PlayerShops;
|
||||||
import com.alttd.playershops.api.Shop;
|
import com.alttd.playershops.api.Shop;
|
||||||
import com.alttd.playershops.api.ShopHandler;
|
import com.alttd.playershops.api.ShopHandler;
|
||||||
import com.alttd.playershops.config.Config;
|
import com.alttd.playershops.config.Config;
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.block.Sign;
|
import org.bukkit.block.Sign;
|
||||||
|
import org.bukkit.block.data.BlockData;
|
||||||
|
import org.bukkit.block.data.Directional;
|
||||||
|
import org.bukkit.block.data.Rotatable;
|
||||||
|
import org.bukkit.block.data.type.WallSign;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
import org.bukkit.event.EventPriority;
|
||||||
|
|
@ -13,6 +20,7 @@ import org.bukkit.event.block.SignChangeEvent;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
import org.bukkit.permissions.PermissionAttachmentInfo;
|
import org.bukkit.permissions.PermissionAttachmentInfo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class PlayerListener extends EventListener {
|
public class PlayerListener extends EventListener {
|
||||||
|
|
@ -65,4 +73,58 @@ public class PlayerListener extends EventListener {
|
||||||
if(shop.isInitialized()) event.setCancelled(true);
|
if(shop.isInitialized()) event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler(ignoreCancelled = true, priority = EventPriority.HIGHEST)
|
||||||
|
public void onShopCreation(SignChangeEvent event) {
|
||||||
|
Block b = event.getBlock();
|
||||||
|
|
||||||
|
if (!(b.getState() instanceof Sign))
|
||||||
|
return;
|
||||||
|
|
||||||
|
BlockFace facing;
|
||||||
|
BlockData data = b.getState().getBlockData();
|
||||||
|
if (data instanceof WallSign) {
|
||||||
|
facing = ((Directional) data).getFacing();
|
||||||
|
} else {
|
||||||
|
facing = ((Rotatable) data).getRotation();
|
||||||
|
}
|
||||||
|
|
||||||
|
Block bRelative = b.getRelative(facing.getOppositeFace());
|
||||||
|
ShopHandler shopHandler = plugin.getShopHandler();
|
||||||
|
|
||||||
|
if (shopHandler.isShopMaterial(bRelative)) {
|
||||||
|
Sign signBlock = (Sign) b.getState();
|
||||||
|
Component signLine = event.line(0);
|
||||||
|
String signLineString = PlainTextComponentSerializer.plainText().serialize(signLine);
|
||||||
|
if (!signLineString.equalsIgnoreCase(Config.shopCreationWord))
|
||||||
|
return;
|
||||||
|
|
||||||
|
Shop shop = shopHandler.getShop(bRelative.getLocation());
|
||||||
|
if(shop != null) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
// TODO MESSAGE: There is a shop here already.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
UUID playerUUID = player.getUniqueId();
|
||||||
|
if (!player.hasPermission("shop.create")) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
// TODO MESSAGE: You don't have permission to create shops.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
int numberOfShops = shopHandler.getShops(playerUUID).size();
|
||||||
|
int shopLimit = shopHandler.getShopLimit(playerUUID);
|
||||||
|
|
||||||
|
if (numberOfShops >= shopLimit) {
|
||||||
|
event.setCancelled(true);
|
||||||
|
// TODO MESSAGE: You cannot create this shop as you already have reached the limit.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO instance shopCreationManagement
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user