mirror of
https://github.com/KAMKEEL/CustomNPC-Plus-API.git
synced 2026-11-14 22:34:44 +00:00
292 lines
6.9 KiB
Java
292 lines
6.9 KiB
Java
package noppes.npcs.api.roles;
|
|
|
|
import noppes.npcs.api.entity.IPlayer;
|
|
import noppes.npcs.api.item.IItemStack;
|
|
|
|
public interface IRoleTrader extends IRole {
|
|
|
|
/**
|
|
* @param slot Slot number 0-17
|
|
* @param currency Currency item
|
|
* @param currency2 Currency item number two
|
|
* @param sold Item to be sold by this npc
|
|
*/
|
|
void setSellOption(int slot, IItemStack currency, IItemStack currency2, IItemStack sold);
|
|
|
|
/**
|
|
* @param slot Slot number 0-17
|
|
* @param currency Currency item
|
|
* @param sold Item to be sold by this npc
|
|
*/
|
|
void setSellOption(int slot, IItemStack currency, IItemStack sold);
|
|
|
|
/**
|
|
* @param slot
|
|
* @return The item being sold in this slot.
|
|
*/
|
|
IItemStack getSellOption(int slot);
|
|
|
|
/**
|
|
* @param slot
|
|
* @return a ScriptItemStack array of size 2 which contains the currency of this trade
|
|
*/
|
|
IItemStack[] getCurrency(int slot);
|
|
|
|
/**
|
|
* @param slot Slot number 0-17
|
|
*/
|
|
void removeSellOption(int slot);
|
|
|
|
/**
|
|
* @param name The trader Linked Market name
|
|
*/
|
|
void setMarket(String name);
|
|
|
|
/**
|
|
* @return Get the currently set Linked Market name
|
|
*/
|
|
String getMarket();
|
|
|
|
/**
|
|
* @param slot
|
|
* @return the number of times an item has been sold on that slot
|
|
*/
|
|
int getPurchaseNum(int slot);
|
|
|
|
/**
|
|
* @param slot
|
|
* @param player
|
|
* @return the number of times this player has purchased from this trader
|
|
*/
|
|
int getPurchaseNum(int slot, IPlayer player);
|
|
|
|
/**
|
|
* Sets the purchase count of all slots to 0
|
|
*/
|
|
void resetPurchaseNum();
|
|
|
|
/**
|
|
* sets the purchase num for that slot to 0
|
|
*
|
|
* @param slot
|
|
*/
|
|
void resetPurchaseNum(int slot);
|
|
|
|
/**
|
|
* sets the purchase num for that slot and player to 0
|
|
*
|
|
* @param slot
|
|
* @param player
|
|
*/
|
|
void resetPurchaseNum(int slot, IPlayer player);
|
|
|
|
/**
|
|
* @param slot
|
|
* @return if this slot is enabled
|
|
*/
|
|
boolean isSlotEnabled(int slot);
|
|
|
|
/**
|
|
* @param slot
|
|
* @param player
|
|
* @return if this slot is enabled for this player
|
|
*/
|
|
boolean isSlotEnabled(int slot, IPlayer player);
|
|
|
|
/**
|
|
* prevent an item from being sold on that slot
|
|
*
|
|
* @param slot
|
|
*/
|
|
void disableSlot(int slot);
|
|
|
|
/**
|
|
* disables the slot for this player
|
|
*
|
|
* @param slot
|
|
* @param player
|
|
*/
|
|
void disableSlot(int slot, IPlayer player);
|
|
|
|
/**
|
|
* allow an item to be sold on that slot
|
|
*
|
|
* @param slot
|
|
*/
|
|
void enableSlot(int slot);
|
|
|
|
/**
|
|
* enables the slot for this player
|
|
*
|
|
* @param slot
|
|
* @param player
|
|
*/
|
|
void enableSlot(int slot, IPlayer player);
|
|
|
|
// ==================== Stock System ====================
|
|
|
|
/**
|
|
* @return Whether stock system is enabled
|
|
*/
|
|
boolean isStockEnabled();
|
|
|
|
/**
|
|
* Enable or disable stock system
|
|
*/
|
|
void setStockEnabled(boolean enabled);
|
|
|
|
/**
|
|
* @return Whether stock is tracked per-player (true) or globally (false)
|
|
*/
|
|
boolean isPerPlayerStock();
|
|
|
|
/**
|
|
* Set whether stock is per-player or global
|
|
*/
|
|
void setPerPlayerStock(boolean perPlayer);
|
|
|
|
/**
|
|
* Get the stock reset type
|
|
*
|
|
* @return 0=NONE, 1=MCDAILY, 2=MCWEEKLY, 3=MCCUSTOM, 4=RLDAILY, 5=RLWEEKLY, 6=RLCUSTOM
|
|
*/
|
|
int getStockResetType();
|
|
|
|
/**
|
|
* Set stock reset type
|
|
*
|
|
* @param type 0=NONE, 1=MCDAILY, 2=MCWEEKLY, 3=MCCUSTOM, 4=RLDAILY, 5=RLWEEKLY, 6=RLCUSTOM
|
|
*/
|
|
void setStockResetType(int type);
|
|
|
|
/**
|
|
* Get custom reset time (only used for MCCUSTOM/RLCUSTOM)
|
|
*
|
|
* @return Custom time in ticks (MC) or milliseconds (RL)
|
|
*/
|
|
long getCustomResetTime();
|
|
|
|
/**
|
|
* Set custom reset time
|
|
*
|
|
* @param time Time in ticks (MC) or milliseconds (RL)
|
|
*/
|
|
void setCustomResetTime(long time);
|
|
|
|
/**
|
|
* Get max stock for a slot
|
|
*
|
|
* @param slot Slot number 0-17
|
|
* @return Max stock, -1 = unlimited
|
|
*/
|
|
int getMaxStock(int slot);
|
|
|
|
/**
|
|
* Set max stock for a slot
|
|
*
|
|
* @param slot Slot number 0-17
|
|
* @param amount Max stock, -1 = unlimited
|
|
*/
|
|
void setMaxStock(int slot, int amount);
|
|
|
|
/**
|
|
* Get available stock for a slot (global mode)
|
|
*
|
|
* @param slot Slot number 0-17
|
|
* @return Available stock, Integer.MAX_VALUE if unlimited
|
|
*/
|
|
int getAvailableStock(int slot);
|
|
|
|
/**
|
|
* Get available stock for a slot for a specific player (per-player mode)
|
|
*
|
|
* @param slot Slot number 0-17
|
|
* @param player The player
|
|
* @return Available stock, Integer.MAX_VALUE if unlimited
|
|
*/
|
|
int getAvailableStock(int slot, IPlayer player);
|
|
|
|
/**
|
|
* Reset all stock to max values
|
|
*/
|
|
void resetStock();
|
|
|
|
/**
|
|
* Reset the cooldown timer without resetting stock values
|
|
* Stock will reset on next trigger after this is called
|
|
*/
|
|
void resetCooldown();
|
|
|
|
/**
|
|
* Get current stock for a slot (global mode)
|
|
*
|
|
* @param slot Slot number 0-17
|
|
* @return Current stock, -1 if not initialized
|
|
*/
|
|
int getCurrentStock(int slot);
|
|
|
|
/**
|
|
* Set current stock for a slot (global mode only)
|
|
*
|
|
* @param slot Slot number 0-17
|
|
* @param amount Current stock amount
|
|
*/
|
|
void setCurrentStock(int slot, int amount);
|
|
|
|
/**
|
|
* Get purchased amount for a player in a slot (per-player mode)
|
|
*
|
|
* @param slot Slot number 0-17
|
|
* @param player The player
|
|
* @return Purchased amount (stock available = maxStock - purchasedAmount)
|
|
*/
|
|
int getPlayerPurchased(int slot, IPlayer player);
|
|
|
|
/**
|
|
* Set purchased amount for a player in a slot (per-player mode)
|
|
*
|
|
* @param slot Slot number 0-17
|
|
* @param player The player
|
|
* @param amount Purchased amount
|
|
*/
|
|
void setPlayerPurchased(int slot, IPlayer player, int amount);
|
|
|
|
/**
|
|
* Get the timestamp of the last stock reset
|
|
*
|
|
* @return Time in ticks (MC) or milliseconds (RL), depending on reset type
|
|
*/
|
|
long getLastResetTime();
|
|
|
|
/**
|
|
* Get time remaining until next stock reset
|
|
*
|
|
* @return Time remaining in ticks (MC) or milliseconds (RL), -1 if no reset scheduled
|
|
*/
|
|
long getTimeUntilReset();
|
|
|
|
// ==================== Currency Cost System ====================
|
|
|
|
/**
|
|
* Get the currency cost for a slot (additive to item costs)
|
|
*
|
|
* @param slot Slot number 0-17
|
|
* @return Currency cost, 0 = no cost
|
|
*/
|
|
long getCurrencyCost(int slot);
|
|
|
|
/**
|
|
* Set the currency cost for a slot (additive to item costs)
|
|
*
|
|
* @param slot Slot number 0-17
|
|
* @param cost Currency cost, 0 = no cost
|
|
*/
|
|
void setCurrencyCost(int slot, long cost);
|
|
|
|
/**
|
|
* @param slot Slot number 0-17
|
|
* @return Whether this slot has a currency cost > 0
|
|
*/
|
|
boolean hasCurrencyCost(int slot);
|
|
}
|