@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"); } } }
/** * 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); }
public final ShopType<?> selectNext(Player player) { return ShopkeepersPlugin.getInstance().getShopTypeRegistry().selectNext(player); }