@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
 public void onBlockBreak(BlockBreakEvent event) {
   if (event.getBlock().getType() == Material.CHEST) {
     List<PlayerShopkeeper> shopkeepers = plugin.getShopkeeperOwnersOfChest(event.getBlock());
     if (shopkeepers.size() > 0) {
       for (PlayerShopkeeper shopkeeper : shopkeepers) {
         plugin.closeTradingForShopkeeper(shopkeeper.getId());
         plugin.activeShopkeepers.remove(shopkeeper.getId());
         plugin.allShopkeepersByChunk.get(shopkeeper.getChunk()).remove(shopkeeper);
         shopkeeper.remove();
       }
       plugin.save();
     }
   }
 }
  @EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
  void onEntityInteract(PlayerInteractEntityEvent event) {
    if (!(event.getRightClicked() instanceof Villager)) return;
    Villager villager = (Villager) event.getRightClicked();

    if (plugin.isShopkeeper(villager)) return; // shopkeeper interaction is handled elsewhere
    Log.debug("Interaction with Non-shopkeeper villager ..");

    if (villager.hasMetadata("NPC")) {
      // ignore any interaction with citizens2 NPCs
      Log.debug("  ignoring (probably citizens2) NPC");
      return;
    }

    Player player = event.getPlayer();
    if (Settings.disableOtherVillagers) {
      // don't allow trading with other villagers
      event.setCancelled(true);
      if (Settings.hireOtherVillagers) {
        // allow hiring of other villagers
        Log.debug("  trade prevented, but possible hire ..");
        if (this.handleHireOtherVillager(player, villager)) {
          // hiring was successful -> prevent normal trading
          Log.debug("    ..success");
        } else {

        }
      } else {
        Log.debug("  trade prevented");
      }
    } else if (Settings.hireOtherVillagers) {
      // allow hiring of other villagers
      Log.debug("  possible hire ..");
      if (this.handleHireOtherVillager(player, villager)) {
        // hiring was successful -> prevent normal trading
        Log.debug("    ..success (normal trading prevented)");
        event.setCancelled(true);
      } else {
        // hiring was not successful -> no preventing of normal villager trading
        Log.debug("    ..failed");
      }
    }
  }
Example #3
0
 /**
  * This needs to be called right after the creation of a new shopkeeper.
  *
  * @param shopkeeper the freshly created shopkeeper
  */
 protected void registerShopkeeper(T shopkeeper) {
   shopkeeper.shopObject.onInit();
   ShopkeepersPlugin.getInstance().registerShopkeeper(shopkeeper);
 }
Example #4
0
 public final ShopType<?> selectNext(Player player) {
   return ShopkeepersPlugin.getInstance().getShopTypeRegistry().selectNext(player);
 }