54 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
	
		
			1.6 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| package net.minecraft.world.item.trading;
 | |
| 
 | |
| import java.util.OptionalInt;
 | |
| import net.minecraft.network.chat.Component;
 | |
| import net.minecraft.sounds.SoundEvent;
 | |
| import net.minecraft.world.SimpleMenuProvider;
 | |
| import net.minecraft.world.entity.player.Player;
 | |
| import net.minecraft.world.inventory.MerchantMenu;
 | |
| import net.minecraft.world.item.ItemStack;
 | |
| import org.jetbrains.annotations.Nullable;
 | |
| 
 | |
| public interface Merchant {
 | |
| 	void setTradingPlayer(@Nullable Player tradingPlayer);
 | |
| 
 | |
| 	@Nullable
 | |
| 	Player getTradingPlayer();
 | |
| 
 | |
| 	MerchantOffers getOffers();
 | |
| 
 | |
| 	void overrideOffers(MerchantOffers offers);
 | |
| 
 | |
| 	void notifyTrade(MerchantOffer offer);
 | |
| 
 | |
| 	/**
 | |
| 	 * Notifies the merchant of a possible merchant recipe being fulfilled or not. Usually, this is just a sound byte being played depending on whether the suggested {@link net.minecraft.world.item.ItemStack} is not empty.
 | |
| 	 */
 | |
| 	void notifyTradeUpdated(ItemStack stack);
 | |
| 
 | |
| 	int getVillagerXp();
 | |
| 
 | |
| 	void overrideXp(int xp);
 | |
| 
 | |
| 	boolean showProgressBar();
 | |
| 
 | |
| 	SoundEvent getNotifyTradeSound();
 | |
| 
 | |
| 	default boolean canRestock() {
 | |
| 		return false;
 | |
| 	}
 | |
| 
 | |
| 	default void openTradingScreen(Player player, Component displayName, int level) {
 | |
| 		OptionalInt optionalInt = player.openMenu(new SimpleMenuProvider((i, inventory, playerx) -> new MerchantMenu(i, inventory, this), displayName));
 | |
| 		if (optionalInt.isPresent()) {
 | |
| 			MerchantOffers merchantOffers = this.getOffers();
 | |
| 			if (!merchantOffers.isEmpty()) {
 | |
| 				player.sendMerchantOffers(optionalInt.getAsInt(), merchantOffers, level, this.getVillagerXp(), this.showProgressBar(), this.canRestock());
 | |
| 			}
 | |
| 		}
 | |
| 	}
 | |
| 
 | |
| 	boolean isClientSide();
 | |
| 
 | |
| 	boolean stillValid(Player player);
 | |
| }
 |