Skip to content

Commit

Permalink
Merge pull request #106 from Tweetzy/dev
Browse files Browse the repository at this point in the history
merge
  • Loading branch information
kiranhart authored Feb 9, 2025
2 parents a18e86a + cde1a21 commit 0c4091c
Show file tree
Hide file tree
Showing 34 changed files with 844 additions and 158 deletions.
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

0 comments on commit 0c4091c

Please sign in to comment.