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 boolean usePermissionShopLimit = false;
|
||||
public static String shopCreationWord = "[SHOP]";
|
||||
private static void shopSettings() {
|
||||
String path = "shop-settings.";
|
||||
shopLimit = config.getInt(path + "player-shop-limit", shopLimit);
|
||||
usePermissionShopLimit = config.getBoolean(path + "use-permission-based-shop-limit", usePermissionShopLimit);
|
||||
shopCreationWord = config.getString(path + "creation-word", shopCreationWord);
|
||||
}
|
||||
|
||||
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.ShopHandler;
|
||||
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.BlockFace;
|
||||
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.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
|
|
@ -13,6 +20,7 @@ import org.bukkit.event.block.SignChangeEvent;
|
|||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.permissions.PermissionAttachmentInfo;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
public class PlayerListener extends EventListener {
|
||||
|
|
@ -65,4 +73,58 @@ public class PlayerListener extends EventListener {
|
|||
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