Add TradeSelectEvent

By: Coleman Yantis <diamonddagger590@gmail.com>
This commit is contained in:
CraftBukkit/Spigot
2019-04-28 12:35:28 +10:00
parent bfea9a3269
commit b84b23c451
8 changed files with 109 additions and 56 deletions

View File

@@ -14,8 +14,6 @@ import org.bukkit.inventory.MerchantRecipe;
public class CraftAbstractVillager extends CraftAgeable implements AbstractVillager, InventoryHolder {
private CraftMerchant merchant;
public CraftAbstractVillager(CraftServer server, EntityVillagerAbstract entity) {
super(server, entity);
}
@@ -36,7 +34,7 @@ public class CraftAbstractVillager extends CraftAgeable implements AbstractVilla
}
private CraftMerchant getMerchant() {
return (merchant == null) ? merchant = new CraftMerchant(getHandle()) : merchant;
return getHandle().getCraftMerchant();
}
@Override

View File

@@ -2,6 +2,7 @@ package org.bukkit.craftbukkit.event;
import com.google.common.base.Function;
import com.google.common.base.Functions;
import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.mojang.datafixers.util.Either;
import java.net.InetAddress;
@@ -16,6 +17,7 @@ import net.minecraft.server.BlockPropertyInstrument;
import net.minecraft.server.ChatMessage;
import net.minecraft.server.ChatModifier;
import net.minecraft.server.Container;
import net.minecraft.server.ContainerMerchant;
import net.minecraft.server.DamageSource;
import net.minecraft.server.DimensionManager;
import net.minecraft.server.Entity;
@@ -161,6 +163,7 @@ import org.bukkit.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryOpenEvent;
import org.bukkit.event.inventory.PrepareAnvilEvent;
import org.bukkit.event.inventory.PrepareItemCraftEvent;
import org.bukkit.event.inventory.TradeSelectEvent;
import org.bukkit.event.player.PlayerBedEnterEvent;
import org.bukkit.event.player.PlayerBedEnterEvent.BedEnterResult;
import org.bukkit.event.player.PlayerBucketEmptyEvent;
@@ -179,6 +182,8 @@ import org.bukkit.event.server.ServerListPingEvent;
import org.bukkit.event.vehicle.VehicleCreateEvent;
import org.bukkit.inventory.EquipmentSlot;
import org.bukkit.inventory.InventoryView;
import org.bukkit.inventory.Merchant;
import org.bukkit.inventory.MerchantInventory;
import org.bukkit.inventory.meta.BookMeta;
import org.bukkit.potion.PotionEffect;
@@ -244,6 +249,15 @@ public class CraftEventFactory {
return nmsBedResult;
}
/**
* Trade Index Change Event
*/
public static TradeSelectEvent callTradeSelectEvent(EntityPlayer player, int newIndex, ContainerMerchant merchant) {
TradeSelectEvent tradeSelectEvent = new TradeSelectEvent(merchant.getBukkitView(), newIndex);
Bukkit.getPluginManager().callEvent(tradeSelectEvent);
return tradeSelectEvent;
}
/**
* Block place methods
*/

View File

@@ -1,13 +1,18 @@
package org.bukkit.craftbukkit.inventory;
import net.minecraft.server.IMerchant;
import net.minecraft.server.InventoryMerchant;
import org.bukkit.inventory.Merchant;
import org.bukkit.inventory.MerchantInventory;
import org.bukkit.inventory.MerchantRecipe;
public class CraftInventoryMerchant extends CraftInventory implements MerchantInventory {
public CraftInventoryMerchant(InventoryMerchant merchant) {
super(merchant);
private final IMerchant merchant;
public CraftInventoryMerchant(IMerchant merchant, InventoryMerchant inventory) {
super(inventory);
this.merchant = merchant;
}
@Override
@@ -25,4 +30,9 @@ public class CraftInventoryMerchant extends CraftInventory implements MerchantIn
public InventoryMerchant getInventory() {
return (InventoryMerchant) inventory;
}
@Override
public Merchant getMerchant() {
return merchant.getCraftMerchant();
}
}

View File

@@ -14,6 +14,7 @@ public class CraftMerchantCustom extends CraftMerchant {
public CraftMerchantCustom(String title) {
super(new MinecraftMerchant(title));
getMerchant().craftMerchant = this;
}
@Override
@@ -32,12 +33,18 @@ public class CraftMerchantCustom extends CraftMerchant {
private final MerchantRecipeList trades = new MerchantRecipeList();
private EntityHuman tradingPlayer;
private World tradingWorld;
protected CraftMerchant craftMerchant;
public MinecraftMerchant(String title) {
Validate.notNull(title, "Title cannot be null");
this.title = new ChatComponentText(title);
}
@Override
public CraftMerchant getCraftMerchant() {
return craftMerchant;
}
@Override
public void setTradingPlayer(EntityHuman entityhuman) {
this.tradingPlayer = entityhuman;