Skip to content

Commit 8a00331

Browse files
authored
Update Trader and Merchant api classes (#2546)
* Update Trader and Merchant api classes * Update more classes
1 parent 3a4be66 commit 8a00331

File tree

7 files changed

+30
-45
lines changed

7 files changed

+30
-45
lines changed

src/main/java/org/spongepowered/api/data/Keys.java

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,6 @@
188188
import org.spongepowered.api.entity.living.player.gamemode.GameMode;
189189
import org.spongepowered.api.entity.living.player.server.ServerPlayer;
190190
import org.spongepowered.api.entity.living.slime.Slime;
191-
import org.spongepowered.api.entity.living.trader.Trader;
192191
import org.spongepowered.api.entity.living.trader.Villager;
193192
import org.spongepowered.api.entity.projectile.DamagingProjectile;
194193
import org.spongepowered.api.entity.projectile.EyeOfEnder;
@@ -225,6 +224,7 @@
225224
import org.spongepowered.api.item.inventory.equipment.EquipmentType;
226225
import org.spongepowered.api.item.inventory.slot.EquipmentSlot;
227226
import org.spongepowered.api.item.inventory.type.GridInventory;
227+
import org.spongepowered.api.item.merchant.Merchant;
228228
import org.spongepowered.api.item.merchant.TradeOffer;
229229
import org.spongepowered.api.item.potion.PotionType;
230230
import org.spongepowered.api.map.MapCanvas;
@@ -811,6 +811,11 @@ public final class Keys {
811811
*/
812812
public static final Key<ListValue<PotionEffect>> CUSTOM_POTION_EFFECTS = Keys.listKey(ResourceKey.sponge("custom_potion_effects"), PotionEffect.class);
813813

814+
/**
815+
* The currently trading customer with this {@link Merchant}.
816+
*/
817+
public static final Key<Value<Player>> CUSTOMER = Keys.key(ResourceKey.sponge("customer"), Player.class);
818+
814819
/**
815820
* The damage absorbed by an armor {@link ItemStack}.
816821
* Readonly
@@ -2020,12 +2025,6 @@ public final class Keys {
20202025
*/
20212026
public static final Key<Value<Boolean>> IS_TAMED = Keys.key(ResourceKey.sponge("is_tamed"), Boolean.class);
20222027

2023-
/**
2024-
* Whether a {@link Trader} is currently trading with a {@link Player}.
2025-
* Readonly
2026-
*/
2027-
public static final Key<Value<Boolean>> IS_TRADING = Keys.key(ResourceKey.sponge("is_trading"), Boolean.class);
2028-
20292028
/**
20302029
* Whether a {@link Turtle} is currently traveling.
20312030
*/
@@ -3206,7 +3205,7 @@ public final class Keys {
32063205
public static final Key<Value<Boolean>> TRACKS_OUTPUT = Keys.key(ResourceKey.sponge("tracks_output"), Boolean.class);
32073206

32083207
/**
3209-
* The {@link TradeOffer}s offered by a {@link Trader} or a {@link org.spongepowered.api.item.inventory.type.ViewableInventory.Custom}
3208+
* The {@link TradeOffer}s offered by a {@link Merchant} or a {@link org.spongepowered.api.item.inventory.type.ViewableInventory.Custom}
32103209
*/
32113210
public static final Key<ListValue<TradeOffer>> TRADE_OFFERS = Keys.listKey(ResourceKey.sponge("trade_offers"), TradeOffer.class);
32123211

src/main/java/org/spongepowered/api/entity/living/trader/Villager.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,11 @@
2929
import org.spongepowered.api.data.type.ProfessionTypes;
3030
import org.spongepowered.api.data.type.VillagerType;
3131
import org.spongepowered.api.data.value.Value;
32-
import org.spongepowered.api.entity.living.Ageable;
3332

3433
/**
3534
* Represents a Villager.
3635
*/
37-
public interface Villager extends Trader, Ageable {
36+
public interface Villager extends VillagerLike {
3837

3938
/**
4039
* {@link Keys#VILLAGER_TYPE}

src/main/java/org/spongepowered/api/entity/living/trader/Trader.java renamed to src/main/java/org/spongepowered/api/entity/living/trader/VillagerLike.java

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -24,19 +24,11 @@
2424
*/
2525
package org.spongepowered.api.entity.living.trader;
2626

27-
import org.spongepowered.api.data.Keys;
28-
import org.spongepowered.api.data.value.Value;
29-
import org.spongepowered.api.entity.living.PathfinderAgent;
27+
import org.spongepowered.api.entity.living.Ageable;
3028
import org.spongepowered.api.item.merchant.Merchant;
3129

32-
public interface Trader extends PathfinderAgent, Merchant {
33-
34-
/**
35-
* {@link Keys#IS_TRADING}
36-
*
37-
* @return Whether this trader is currently trading with a player
38-
*/
39-
default Value<Boolean> trading() {
40-
return this.requireValue(Keys.IS_TRADING);
41-
}
30+
/**
31+
* An abstract representation of a Villager.
32+
*/
33+
public interface VillagerLike extends Ageable, Merchant {
4234
}

src/main/java/org/spongepowered/api/entity/living/trader/WanderingTrader.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,10 @@
2424
*/
2525
package org.spongepowered.api.entity.living.trader;
2626

27+
2728
/**
2829
* Represents a Wandering Trader.
2930
*/
30-
public interface WanderingTrader extends Trader {
31+
public interface WanderingTrader extends VillagerLike {
3132

3233
}

src/main/java/org/spongepowered/api/event/cause/entity/SpawnTypes.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
import org.spongepowered.api.entity.FallingBlock;
3434
import org.spongepowered.api.entity.Item;
3535
import org.spongepowered.api.entity.living.animal.Animal;
36-
import org.spongepowered.api.entity.living.trader.Trader;
3736
import org.spongepowered.api.entity.vehicle.minecart.SpawnerMinecart;
37+
import org.spongepowered.api.item.merchant.Merchant;
3838
import org.spongepowered.api.registry.DefaultedRegistryReference;
3939
import org.spongepowered.api.registry.Registry;
4040
import org.spongepowered.api.registry.RegistryKey;
@@ -93,7 +93,7 @@ public final class SpawnTypes {
9393

9494
/**
9595
* When an {@link ExperienceOrb} is spawned as a result of a "reward" from
96-
* an {@link Entity} granting experience for the kill, or a {@link Trader}
96+
* an {@link Entity} granting experience for the kill, or a {@link Merchant}
9797
* granting experience for a successful trade, or a block being mined.
9898
*/
9999
public static final DefaultedRegistryReference<SpawnType> EXPERIENCE = SpawnTypes.key(ResourceKey.sponge("experience"));

src/main/java/org/spongepowered/api/event/item/inventory/container/ClickContainerEvent.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
import org.spongepowered.api.item.inventory.Container;
3131
import org.spongepowered.api.item.inventory.ItemStackSnapshot;
3232
import org.spongepowered.api.item.inventory.Slot;
33+
import org.spongepowered.api.item.merchant.Merchant;
3334
import org.spongepowered.api.item.merchant.TradeOffer;
3435

3536
import java.util.Optional;
@@ -182,7 +183,7 @@ interface All extends Recipe {}
182183
}
183184

184185
/**
185-
* Fies when the client requests to select a trade from a {@link org.spongepowered.api.entity.living.trader.Trader}
186+
* Fies when the client requests to select a trade from a {@link Merchant}
186187
*/
187188
interface SelectTrade extends ClickContainerEvent {
188189

src/main/java/org/spongepowered/api/item/merchant/Merchant.java

Lines changed: 11 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -24,11 +24,11 @@
2424
*/
2525
package org.spongepowered.api.item.merchant;
2626

27-
import org.checkerframework.checker.nullness.qual.Nullable;
2827
import org.spongepowered.api.data.DataHolder;
2928
import org.spongepowered.api.data.Keys;
3029
import org.spongepowered.api.data.value.ListValue;
31-
import org.spongepowered.api.entity.living.Humanoid;
30+
import org.spongepowered.api.data.value.Value;
31+
import org.spongepowered.api.entity.living.player.Player;
3232
import org.spongepowered.api.item.inventory.Carrier;
3333
import org.spongepowered.api.world.Locatable;
3434

@@ -39,22 +39,6 @@
3939
*/
4040
public interface Merchant extends DataHolder.Mutable, Carrier, Locatable {
4141

42-
/**
43-
* Gets the currently trading customer with this merchant.
44-
*
45-
* @return The currently trading customer if available
46-
*/
47-
Optional<Humanoid> customer();
48-
49-
/**
50-
* Sets the currently trading customer with this merchant.
51-
* <p>If the humanoid is available, a new trading window may open
52-
* with this merchant.</p>
53-
*
54-
* @param humanoid The humanoid to trade with
55-
*/
56-
void setCustomer(@Nullable Humanoid humanoid);
57-
5842
/**
5943
* {@link Keys#TRADE_OFFERS}
6044
*
@@ -64,4 +48,13 @@ default ListValue.Mutable<TradeOffer> tradeOffers() {
6448
return this.requireValue(Keys.TRADE_OFFERS).asMutable();
6549
}
6650

51+
/**
52+
* {@link Keys#CUSTOMER}
53+
*
54+
* @return Whether this trader is currently trading with a player
55+
*/
56+
default Optional<Value.Mutable<Player>> customer() {
57+
return this.getValue(Keys.CUSTOMER).map(Value::asMutable);
58+
}
59+
6760
}

0 commit comments

Comments
 (0)