diff --git a/src/main/java/ca/tweetzy/auctionhouse/ahv3/impl/auction/BinAuctionItem.java b/src/main/java/ca/tweetzy/auctionhouse/ahv3/impl/auction/BinAuctionItem.java new file mode 100644 index 0000000..7f90339 --- /dev/null +++ b/src/main/java/ca/tweetzy/auctionhouse/ahv3/impl/auction/BinAuctionItem.java @@ -0,0 +1,145 @@ +/* + * Auction House + * Copyright 2022 Kiran Hart + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +package ca.tweetzy.auctionhouse.ahv3.impl.auction; + +import ca.tweetzy.auctionhouse.ahv3.api.ListingType; +import lombok.NonNull; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import java.math.BigDecimal; +import java.util.UUID; +import java.util.function.Consumer; + +public final class BinAuctionItem extends AuctionItem { + + private final UUID uuid; + private final UUID ownerUUID; + private final String ownerName; + + private BigDecimal binPrice; + + private final String listedWorld; + private final String listedServer; + + private final long listedAt; + private long expiresAt; + + public BinAuctionItem( + @NonNull final UUID uuid, + @NonNull final UUID ownerUUID, + @NonNull final String ownerName, + @NonNull final ItemStack item, + @NonNull final BigDecimal price, + @NonNull final String listedWorld, + @NonNull final String listedServer, + final long listedAt, + final long expiresAt + ) { + super(item, ListingType.BIN); + this.uuid = uuid; + this.ownerUUID = ownerUUID; + this.ownerName = ownerName; + this.binPrice = price; + this.listedWorld = listedWorld; + this.listedServer = listedServer; + this.listedAt = listedAt; + this.expiresAt = expiresAt; + } + + public BinAuctionItem(@NonNull final Player player, @NonNull final ItemStack item, @NonNull final BigDecimal price) { + this(UUID.randomUUID(), player.getUniqueId(), player.getName(), item, price, player.getWorld().getName(), player.getServer().getName(), System.currentTimeMillis(), System.currentTimeMillis() + 1000 * 60 * 60); + } + + @NonNull + @Override + public UUID getId() { + return this.uuid; + } + + @Override + public UUID getOwner() { + return this.ownerUUID; + } + + @Override + public String getOwnerName() { + return this.ownerName; + } + + @Override + public ItemStack getItem() { + return this.item; + } + + @Override + public ListingType getType() { + return this.listingType; + } + + @Override + public BigDecimal getBinPrice() { + return this.binPrice; + } + + @Override + public String getListedWorld() { + return this.listedWorld; + } + + @Override + public String getListedServer() { + return this.listedServer; + } + + @Override + public long getListedAt() { + return this.listedAt; + } + + @Override + public long getExpirationTime() { + return this.expiresAt; + } + + @Override + public void setExpirationTime(long expirationTime) { + this.expiresAt = expirationTime; + } + + @Override + public void setBinPrice(BigDecimal binPrice) { + this.binPrice = binPrice; + } + + @Override + public long getTimeCreated() { + return this.listedAt; + } + + @Override + public long getLastUpdated() { + return 0; + } + + @Override + public void sync(Consumer wasSuccess) { + + } +}