001/* 002 * Trident - A Multithreaded Server Alternative 003 * Copyright 2014 The TridentSDK Team 004 * 005 * Licensed under the Apache License, Version 2.0 (the "License"); 006 * you may not use this file except in compliance with the License. 007 * You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018package net.tridentsdk.inventory.trade; 019 020import net.tridentsdk.inventory.Item; 021 022/** 023 * Represents a Trade offered by an {@link net.tridentsdk.entity.traits.Tradeable} 024 * 025 * @author TridentSDK Team 026 */ 027public interface Trade { 028 /** 029 * Whether or not this trade rewards xp 030 * 031 * @return Whether or not this trade should reward xp 032 */ 033 boolean rewardExp(); 034 035 /** 036 * How many times this trade can be fulfilled 037 * 038 * @return the number of times this trade can be fulfilled 039 */ 040 int maxUses(); 041 042 /** 043 * How many times this trade has been fulfilled 044 * 045 * @return how many times this trade has been fulfilled 046 */ 047 int uses(); 048 049 /** 050 * The itemstack given as a result of this trade 051 * 052 * @return the itemstack that is given as a result of fulfilling this trade 053 */ 054 Item offer(); 055 056 /** 057 * The itemstacks required to be input in order to fulfilled this trade This accepts both implementations of 058 * ItemPair, including a null second offer 059 * 060 * @return the input that will fulfill this trade 061 */ 062 ItemPair input(); 063}