Skip to content
Merged

merge #106

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
25 changes: 13 additions & 12 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -8,15 +8,15 @@

<name>Markets</name>
<description>A new take on traditional player owned shops</description>
<version>2.23.0</version>
<version>2.30.0</version>
<packaging>jar</packaging>

<properties>
<author>Kiran Hart</author>
<jarName>${project.name}</jarName>
<main.class>${project.groupId}.${project.artifactId}.${project.name}</main.class>
<java.version>16</java.version>
<flight.version>3.27.1</flight.version>
<flight.version>3.30.0</flight.version>
<flight.path>ca.tweetzy</flight.path>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
Expand Down Expand Up @@ -236,21 +236,22 @@
</resources>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>com.coderplus.maven.plugins</groupId>
<artifactId>copy-rename-maven-plugin</artifactId>
<version>1.0.1</version>
<executions>
<execution>
<id>copy-files-on-build-2</id>
<id>copy-named-jar</id>
<phase>package</phase>
<goals>
<goal>copy-resources</goal>
<goal>copy</goal>
</goals>
<configuration>
<outputDirectory>D:\Development\Spigot Servers\20.1\plugins</outputDirectory>
<resources>
<resource>
<directory>${project.build.directory}</directory>
<include>${project.name}.jar</include>
<filtering>false</filtering>
</resource>
</resources>
<sourceFile>${project.build.directory}/${project.name}.jar</sourceFile>
<destinationFile>D:\Development\Spigot Plugins\Ready Jars\${project.name}\${project.name} - v${project.version}.jar</destinationFile>
</configuration>
</execution>
</executions>
Expand Down
12 changes: 11 additions & 1 deletion src/main/java/ca/tweetzy/markets/Markets.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import ca.tweetzy.flight.command.CommandManager;
import ca.tweetzy.flight.database.DataMigrationManager;
import ca.tweetzy.flight.database.DatabaseConnector;
import ca.tweetzy.flight.database.MySQLConnector;
import ca.tweetzy.flight.database.SQLiteConnector;
import ca.tweetzy.flight.gui.GuiManager;
import ca.tweetzy.flight.utils.Common;
Expand Down Expand Up @@ -60,7 +61,16 @@ protected void onFlight() {
taskChainFactory = BukkitTaskChainFactory.create(this);

// Set up the database if enabled
this.databaseConnector = new SQLiteConnector(this);
this.databaseConnector = Settings.DATABASE_USE.getBoolean() ? new MySQLConnector(
this,
Settings.DATABASE_HOST.getString(),
Settings.DATABASE_PORT.getInt(),
Settings.DATABASE_NAME.getString(),
Settings.DATABASE_USERNAME.getString(),
Settings.DATABASE_PASSWORD.getString(),
Settings.DATABASE_CUSTOM_PARAMS.getString().equalsIgnoreCase("None") ? "" : Settings.DATABASE_CUSTOM_PARAMS.getString()
) : new SQLiteConnector(this);

this.dataManager = new DataManager(this.databaseConnector, this);

final DataMigrationManager dataMigrationManager = new DataMigrationManager(this.databaseConnector, this.dataManager,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,12 @@

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

@AllArgsConstructor
public abstract class AbstractMarket implements Market {

@Getter
@Setter
protected MarketType marketType;
}
33 changes: 26 additions & 7 deletions src/main/java/ca/tweetzy/markets/api/market/core/Market.java
Original file line number Diff line number Diff line change
@@ -1,23 +1,32 @@
package ca.tweetzy.markets.api.market.core;

import ca.tweetzy.flight.utils.QuickItem;
import ca.tweetzy.markets.api.*;
import ca.tweetzy.markets.api.market.layout.Layout;
import ca.tweetzy.markets.impl.ServerMarket;
import ca.tweetzy.markets.settings.Settings;
import lombok.NonNull;
import org.bukkit.Bukkit;
import org.bukkit.inventory.ItemStack;

import java.util.List;
import java.util.UUID;

public interface Market extends Identifiable, Displayable, Trackable, Synchronize, Storeable<Market> {

@NonNull UUID getOwnerUUID();
@NonNull
UUID getOwnerUUID();

@NonNull String getOwnerName();
@NonNull
String getOwnerName();

void setOwnerName(@NonNull String ownerName);

@NonNull List<Category> getCategories();
@NonNull
List<Category> getCategories();

@NonNull List<Rating> getRatings();
@NonNull
List<Rating> getRatings();

boolean isOpen();

Expand All @@ -33,12 +42,22 @@ public interface Market extends Identifiable, Displayable, Trackable, Synchroniz

void setCloseWhenOutOfStock(final boolean closeWhenOutOfStock);

default ItemStack getDynamicIcon() {
return getOwnerUUID().equals(UUID.fromString(Settings.SERVER_MARKET_UUID.getString())) ? QuickItem.of(Settings.SERVER_MARKET_TEXTURE.getString()).make() : QuickItem.of(Bukkit.getOfflinePlayer(getOwnerUUID())).make();
}

default boolean isServerMarket() {
return this instanceof ServerMarket || getOwnerUUID().equals(UUID.fromString(Settings.SERVER_MARKET_UUID.getString())) ;
}

default boolean isEmpty() {
boolean isEmpty = true;
for (Category category : getCategories()) {
if (!category.getItems().isEmpty()) {
isEmpty = false;
break;
for (MarketItem item : category.getItems()) {
if (item.getStock() > 0) {
isEmpty = false;
break;
}
}
}
return isEmpty;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import ca.tweetzy.markets.api.Storeable;
import ca.tweetzy.markets.api.Synchronize;
import ca.tweetzy.markets.api.market.MarketSortType;
import ca.tweetzy.markets.settings.Settings;
import lombok.NonNull;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.Nullable;
Expand Down Expand Up @@ -41,4 +42,8 @@ public interface MarketUser extends Synchronize, Storeable<MarketUser> {
void setLastSeenAt(final long lastSeenAt);

void setMarketSortType(MarketSortType marketSortType);

default boolean isServerMarket() {
return getUUID().equals(UUID.fromString(Settings.SERVER_MARKET_UUID.getString()));
}
}
2 changes: 2 additions & 0 deletions src/main/java/ca/tweetzy/markets/api/market/offer/Offer.java
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ public interface Offer extends Identifiable, Trackable, Storeable<Offer> {

void setOfferedAmount(final double amount);

void setRequestAmount(final int amount);

void accept(@NonNull final Consumer<TransactionResult> result);

void reject(@NonNull final BiConsumer<TransactionResult, OfferRejectReason> result);
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/ca/tweetzy/markets/commands/CommandAdd.java
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
import ca.tweetzy.markets.api.market.core.MarketItem;
import ca.tweetzy.markets.gui.user.category.MarketCategoryEditGUI;
import ca.tweetzy.markets.impl.CategoryItem;
import ca.tweetzy.markets.model.BlacklistChecker;
import ca.tweetzy.markets.model.FlagExtractor;
import ca.tweetzy.markets.settings.Settings;
import ca.tweetzy.markets.settings.Translations;
Expand Down Expand Up @@ -56,6 +57,9 @@ protected ReturnType execute(CommandSender sender, String... args) {
final ItemStack toSell = PlayerUtil.getHand(player).clone();
final Category category = Markets.getCategoryManager().getByName(market, args[0]);

// check blacklist
if (!BlacklistChecker.passesChecks(player, toSell)) return ReturnType.FAIL;

if (category == null) {
tell(player, TranslationManager.string(player, Translations.INVALID_CATEGORY, "category_id", args[0]));
return ReturnType.FAIL;
Expand Down
33 changes: 30 additions & 3 deletions src/main/java/ca/tweetzy/markets/commands/CommandAdmin.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,12 @@
import ca.tweetzy.flight.command.ReturnType;
import ca.tweetzy.flight.settings.TranslationManager;
import ca.tweetzy.markets.Markets;
import ca.tweetzy.markets.api.market.core.Category;
import ca.tweetzy.markets.api.market.core.Market;
import ca.tweetzy.markets.gui.admin.MarketsAdminGUI;
import ca.tweetzy.markets.gui.shared.MarketsMainGUI;
import ca.tweetzy.markets.gui.shared.view.content.MarketCategoryViewGUI;
import ca.tweetzy.markets.gui.shared.view.content.MarketViewGUI;
import ca.tweetzy.markets.gui.user.BankGUI;
import ca.tweetzy.markets.settings.Settings;
import ca.tweetzy.markets.settings.Translations;
Expand All @@ -26,14 +31,15 @@ public CommandAdmin() {
@Override
protected ReturnType execute(CommandSender sender, String... args) {
if (args.length == 0) {
if (sender instanceof final Player player)
Markets.getGuiManager().showGUI(player, new MarketsAdminGUI(player));
return ReturnType.SUCCESS;
}// 0 1 2


if (args.length == 1) {
if (!(sender instanceof final Player player)) return ReturnType.FAIL;

switch(args[0].toLowerCase()) {
switch (args[0].toLowerCase()) {
case "collecttax":
Markets.getGuiManager().showGUI(player, new BankGUI(null, player, true));
}
Expand All @@ -54,9 +60,30 @@ protected ReturnType execute(CommandSender sender, String... args) {
case "openmain":
Markets.getGuiManager().showGUI(target, new MarketsMainGUI(target));
break;
case "openserver":
final Market market = Markets.getMarketManager().getServerMarket();
if (market == null) {
tell(sender, "&cThe server market is not setup, please create it in /markets admin");
break;
}

if (market.isEmpty() || !market.isOpen()) {
tell(sender, "&cThe server market is closed/has no items - cannot open for player.");
break;
}

final Category locatedCategory = args.length == 3 ? market.getCategories().stream().filter(category -> category.getName().equalsIgnoreCase(args[2])).findFirst().orElse(null) : null;

if (locatedCategory != null) {
Markets.getGuiManager().showGUI(target, new MarketCategoryViewGUI(target, market, locatedCategory, false, true));
return ReturnType.SUCCESS;
}

Markets.getGuiManager().showGUI(target, new MarketViewGUI(null, target, market, false));
break;
}
}

}

return ReturnType.SUCCESS;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public CommandTransactions() {
@Override
protected ReturnType execute(CommandSender sender, String... args) {
if (sender instanceof final Player player) {
Markets.getGuiManager().showGUI(player, new TransactionsGUI(null, player));
Markets.getGuiManager().showGUI(player, new TransactionsGUI(null, player, false));
}
return ReturnType.SUCCESS;
}
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/ca/tweetzy/markets/commands/CommandView.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,11 @@ protected ReturnType execute(CommandSender sender, String... args) {
return ReturnType.FAIL;
}

if (Markets.getMarketManager().isBannedFrom(market, player)) {
Common.tell(player, TranslationManager.string(player, Translations.BANNED_FROM_MARKET, "market_owner", market.getOwnerName()));
return ReturnType.FAIL;
}

if (args.length == 1){
if (market.getOwnerUUID().equals(player.getUniqueId())) {
Markets.getGuiManager().showGUI(player, new MarketOverviewGUI(player, market));
Expand Down
19 changes: 19 additions & 0 deletions src/main/java/ca/tweetzy/markets/database/DataManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -942,6 +942,25 @@ private AbstractMarket extractMarket(@NonNull final ResultSet resultSet) throws
homeLayout = resultSet.getString("home_layout") != null ? MarketLayout.decodeJSON(resultSet.getString("home_layout")) : new HomeLayout();
categoryLayout = resultSet.getString("category_layout") != null ? MarketLayout.decodeJSON(resultSet.getString("category_layout")) : new HomeLayout();

if (Enum.valueOf(MarketType.class, resultSet.getString("type").toUpperCase()) == MarketType.SERVER) {
return new ServerMarket(
UUID.fromString(resultSet.getString("id")),
UUID.fromString(resultSet.getString("owner")),
resultSet.getString("owner_name"),
resultSet.getString("display_name"),
new ArrayList<>(List.of(resultSet.getString("description").split(";;;"))),
new ArrayList<>(),
new ArrayList<>(),
bannedUsers,
resultSet.getBoolean("open"),
resultSet.getBoolean("close_when_out_of_stock"),
homeLayout,
categoryLayout,
resultSet.getLong("created_at"),
resultSet.getLong("updated_at")
);
}

return new PlayerMarket(
UUID.fromString(resultSet.getString("id")),
UUID.fromString(resultSet.getString("owner")),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public _16_InfiniteItemsMigration() {
@Override
public void migrate(Connection connection, String tablePrefix) throws SQLException {
try (Statement statement = connection.createStatement()) {
statement.execute("ALTER TABLE " + tablePrefix + "category_item ADD infinite BOOLEAN NOT NULL default 'false';");
statement.execute("ALTER TABLE " + tablePrefix + "category_item ADD infinite BOOLEAN NOT NULL default 0;");

}
}
Expand Down
Loading
Loading