@EventHandler public void onPlayerClickItemFram(PlayerInteractEntityEvent event) { if (!event.isCancelled() && event.getRightClicked() != null && event.getRightClicked() instanceof ItemFrame) { for (Region region : regions) { if (region.contains(event.getRightClicked().getLocation())) { for (MatchTeam matchTeam : teams) { if (matchTeam.containsPlayer(event.getPlayer())) { FilterResult filterResult = evaluator.evaluate(event.getPlayer()); if (filterResult == FilterResult.DENY) { event.setCancelled(true); event.getPlayer().sendMessage(message); } else if (filterResult == FilterResult.ALLOW) { event.setCancelled(false); } } } } } } }
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onItemFrameDamage(final EntityDamageByEntityEvent e) { // Check world if (!Util.inWorld(e.getEntity()) || !(e.getEntity() instanceof ItemFrame)) { return; } if (e.getDamager() instanceof Projectile) { if (DEBUG) plugin.getLogger().info("DEBUG: Projectile damage to itemframe"); // Find out who fired the arrow Projectile p = (Projectile) e.getDamager(); if (DEBUG) plugin.getLogger().info("DEBUG: Shooter is " + p.getShooter().toString()); if (p.getShooter() instanceof Skeleton || p.getShooter() instanceof Golem) { if (DEBUG) plugin.getLogger().info("DEBUG: Shooter is mob"); if (!Settings.allowMobDamageToItemFrames) { if (DEBUG) plugin.getLogger().info("DEBUG: Damage not allowed, cancelling"); e.setCancelled(true); } } } }
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onItemFrameDamage(final HangingBreakByEntityEvent e) { if (DEBUG) { plugin.getLogger().info("DEBUG: Hanging break by entity event"); plugin.getLogger().info("DEBUG: cause = " + e.getCause()); plugin.getLogger().info("DEBUG: entity = " + e.getEntity()); plugin.getLogger().info("DEBUG: remover = " + e.getRemover()); } // Check world if (!Util.inWorld(e.getEntity()) || !(e.getEntity() instanceof ItemFrame)) { return; } if (e.getRemover() instanceof Skeleton || e.getRemover() instanceof Golem) { if (DEBUG) plugin.getLogger().info("DEBUG: Remover is mob"); if (!Settings.allowMobDamageToItemFrames) { if (DEBUG) plugin.getLogger().info("DEBUG: Damage not allowed, cancelling"); e.setCancelled(true); } } }
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void checkItemFrameRotate(PlayerInteractEntityEvent event) { if(event.getRightClicked() instanceof ItemFrame) { ItemFrame itemFrame = (ItemFrame) event.getRightClicked(); if(itemFrame.getItem() != null) { // If frame contains an item, right-click will rotate it, which is handled as a "use" event this.handleUse(event, getHangingBlockState(itemFrame), this.match.getParticipant(event.getPlayer())); } else if(event.getPlayer().getItemInHand() != null) { // If the frame is empty and it's right clicked with an item, this will place the item in the frame, // which is handled as a "place" event, with the placed item as the block material BlockState blockState = BlockStateUtils.cloneWithMaterial(itemFrame.getLocation().getBlock(), event.getPlayer().getItemInHand().getData()); this.handleHangingPlace(event, blockState, event.getPlayer()); } } }
@EventHandler(priority=EventPriority.HIGHEST) public void onClickFrame(PlayerInteractEntityEvent e){ if(!(e.getRightClicked() instanceof ItemFrame)) return; String uuid = e.getPlayer().getUniqueId().toString(); long curTime = System.currentTimeMillis(); int posInList; if(uuidsClickItem.contains(uuid)){ posInList = uuidsClickItem.indexOf(uuid); if(curTime < (lastClickItem.get(posInList) + 200)){ e.getPlayer().sendMessage(tag + ChatColor.RED + "Please slow down clicking item frames!"); Vector movDirection = e.getPlayer().getEyeLocation().getDirection(); movDirection = movDirection.normalize().multiply(-2); e.getPlayer().setVelocity(movDirection); e.setCancelled(true); } if(curTime < (lastClickItem.get(posInList) + 50)){ e.getPlayer().kickPlayer(tag + ChatColor.RED + "Please do not spam item frames!"); } lastClickItem.set(posInList, curTime); }else{ uuidsClickItem.add(uuid); lastClickItem.add(curTime); } }
@EventHandler public void onplayerinteract(PlayerInteractEntityEvent e) { Player p = e.getPlayer(); if (ConfigGProtection.getConfig().getBoolean("Protection.PlayerInteractEntity-ItemFrame.Enable")) { if (!ConfigGProtection.getConfig().getBoolean("Protection.PlayerInteractEntity-ItemFrame.World.All_World")) { if (WorldUtils.getWPIEIF().contains(p.getWorld().getName())) { if ((e.getRightClicked() instanceof ItemFrame)) { e.setCancelled(true); } } } else { if ((e.getRightClicked() instanceof ItemFrame)) { e.setCancelled(true); } } } }
@EventHandler public void onEntityDamage(EntityDamageByEntityEvent e) { if (ConfigGServerEvent.getConfig().getBoolean("Server.Disable.Damage.Enable")) { if (ConfigGServerEvent.getConfig().getBoolean("Server.Disable.Damage.Options.Entity.Enable")) { if (ConfigGServerEvent.getConfig().getBoolean("Server.Disable.Damage.Options.Entity.EntityDamageByEntity")) { if (!ConfigGServerEvent.getConfig().getBoolean("Server.Disable.Damage.World.All_World")) { if (WorldUtils.getWD().contains(e.getEntity().getWorld().getName())) { e.setCancelled(true); if (e.getEntity() instanceof ItemFrame) { e.setCancelled(true); } } } else { e.setCancelled(true); if (e.getEntity() instanceof ItemFrame) { e.setCancelled(true); } } } } } }
public void clearFrames() { if (this.mapWrappers != null) { for (MapWrapper wrapper : this.mapWrappers) { for (UUID uuid : worldPlayers) { Player player = Bukkit.getPlayer(uuid); if (player != null) { ((MultiMapController) wrapper.getController()).clearFrames(player, this.itemFrameIds); } } wrapper.getController().clearViewers(); } for (int[] iA : this.itemFrameIds) { for (int i : iA) { ItemFrame itemFrame = MapManagerPlugin.getItemFrameById(getWorld(), i); if (itemFrame != null) { itemFrame.removeMetadata("ANIMATED_FRAMES_META", plugin); } } } } }
@Synchronized public AnimatedFrame createFrame(String name, String source, ItemFrame firstFrame, ItemFrame secondFrame) { if (frameMap.containsKey(name)) { throw new IllegalArgumentException("Frame '" + name + "' already exists"); } JsonObject meta = new JsonObject(); AsyncFrameCreationEvent creationEvent = new AsyncFrameCreationEvent(name, source, firstFrame, secondFrame, meta); Bukkit.getPluginManager().callEvent(creationEvent); name = creationEvent.getName(); source = creationEvent.getSource(); AnimatedFrame frame = new AnimatedFrame(firstFrame, new Vector3DDouble(firstFrame.getLocation().toVector()), new Vector3DDouble(secondFrame.getLocation().toVector()), name, source); frameMap.put(frame.getName(), frame); frame.setMeta(meta); return frame; }
/** * @return the {@link MapWrapper} of the clicked frame */ public MapWrapper getMapWrapper() { if (this.mapWrapper != null) { return this.mapWrapper; } ItemFrame itemFrame = getItemFrame(); if (itemFrame != null) { if (itemFrame.hasMetadata("MAP_WRAPPER_REF")) { List<MetadataValue> metadataValues = itemFrame.getMetadata("MAP_WRAPPER_REF"); for (MetadataValue value : metadataValues) { MapWrapper wrapper = (MapWrapper) value.value(); if (wrapper != null) { return this.mapWrapper = wrapper; } } } } return null; }
@Override public void showInFrame(Player player, int entityId, String debugInfo) { if (!isViewing(player)) { return; } //Create the ItemStack with the player's map ID ItemStack itemStack = new ItemStack(Material.MAP, 1, getMapId(player)); if (debugInfo != null) { //Add the debug info to the display ItemMeta itemMeta = itemStack.getItemMeta(); itemMeta.setDisplayName(debugInfo); itemStack.setItemMeta(itemMeta); } ItemFrame itemFrame = MapManagerPlugin.getItemFrameById(player.getWorld(), entityId); if (itemFrame != null) { //Add a reference to this MapWrapper (can be used in MapWrapper#getWrapperForId) itemFrame.removeMetadata("MAP_WRAPPER_REF", MapManagerPlugin.instance); itemFrame.setMetadata("MAP_WRAPPER_REF", new FixedMetadataValue(MapManagerPlugin.instance, DefaultMapWrapper.this)); } sendItemFramePacket(player, entityId, itemStack); }
private void placePoster(List<ItemStack> maps, int width, int height, final Block topLeftBlock, final BlockFace facing) { for (int x = 0; x < width; x++) { for (int y = 0; y < height; y++) { Block block = Util.getRelative(topLeftBlock, facing, -y, x, 0); for (ItemFrame entity : block.getWorld().getEntitiesByClass(ItemFrame.class)) { if (entity.getLocation().getBlock().getRelative(entity.getAttachedFace()).getLocation().equals(block.getLocation())) { entity.teleport(new Location(entity.getWorld(), 0, -1, 0)); //workaround so that respawning an item frame immediately works entity.remove(); break; } } final ItemStack map = maps.get(y * width + x); ItemMeta meta = map.getItemMeta(); meta.setDisplayName(""); map.setItemMeta(meta); Util.attachItemFrame(Util.getRelative(topLeftBlock, facing, -y, x, 0), map, facing); } } propagateMaps(maps, topLeftBlock.getLocation()); }
@EventHandler public void onFrameBrake(HangingBreakByEntityEvent e) { RedProtect.get().logger.debug("Is BlockListener - HangingBreakByEntityEvent event"); if (e.isCancelled()){ return; } Entity remover = e.getRemover(); Entity ent = e.getEntity(); Location l = e.getEntity().getLocation(); if ((ent instanceof ItemFrame || ent instanceof Painting) && remover instanceof Monster) { Region r = RedProtect.get().rm.getTopRegion(l); if (r != null && !r.canMobLoot()){ e.setCancelled(true); } } }
@EventHandler public void onFrameBrake(HangingBreakEvent e) { RedProtect.get().logger.debug("Is BlockListener - HangingBreakEvent event"); if (e.isCancelled()){ return; } Entity ent = e.getEntity(); Location l = e.getEntity().getLocation(); if ((ent instanceof ItemFrame || ent instanceof Painting) && (e.getCause().toString().equals("EXPLOSION"))) { Region r = RedProtect.get().rm.getTopRegion(l); if (r != null && !r.canFire()){ e.setCancelled(true); } } }
public ItemFrameStorage(ItemFrame frame, Location attachedLoc) throws CivException { if (frame != null) { this.frameID = frame.getUniqueId(); this.location = frame.getLocation(); this.attachedBlock = new BlockCoord(attachedLoc); CivGlobal.addProtectedItemFrame(this); } else { throw new CivException("Passed a null item frame to storage constructor."); } // this.frame = frame; // if (this.frame != null) { // CivGlobal.addProtectedItemFrame(this); // } else { // CivLog.error("Passed a null item frame!!!"); // throw new CivException("Passed a null item frame."); // } }
public ItemFrame getItemFrame() { // Gets the item frame by loading in the chunk where it is supposed to reside. // Then searching for it's UUID. if (!this.location.getChunk().isLoaded()) { if (!this.location.getChunk().load()) { CivLog.error("Could not load chunk to get item frame at:"+this.location); return null; } } Entity ent = CivGlobal.getEntityClassFromUUID(this.location.getWorld(), ItemFrame.class, this.frameID); if (ent == null) { CivLog.error("Could not find frame from frame ID:"+this.frameID.toString()); return null; } if (!(ent instanceof ItemFrame)) { CivLog.error("Could not get a frame with ID:"+this.frameID+" ... it was not a frame."); return null; } //TODO try and use a cache and isValid()? return (ItemFrame)ent; }
public void moveframes_cmd() throws CivException { Player player = getPlayer(); Chunk chunk = player.getLocation().getChunk(); // int x = this.getNamedInteger(1); // int y = this.getNamedInteger(2); // int z = this.getNamedInteger(3); // Location loc = new Location(player.getWorld(), x, y, z); for (Entity entity : chunk.getEntities()) { if (entity instanceof ItemFrame) { CivMessage.send(sender, "Teleported..."); entity.teleport(entity.getLocation()); } } }
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onItemFrameDamage(final EntityDamageByEntityEvent e) { // Check world if (!inWorld(e.getEntity()) || !(e.getEntity() instanceof ItemFrame)) { return; } if (e.getDamager() instanceof Projectile) { if (DEBUG) plugin.getLogger().info("DEBUG: Projectile damage to itemframe"); // Find out who fired the arrow Projectile p = (Projectile) e.getDamager(); if (DEBUG) plugin.getLogger().info("DEBUG: Shooter is " + p.getShooter().toString()); if (p.getShooter() instanceof Skeleton || p.getShooter() instanceof Golem) { if (DEBUG) plugin.getLogger().info("DEBUG: Shooter is mob"); if (!Settings.allowMobDamageToItemFrames) { if (DEBUG) plugin.getLogger().info("DEBUG: Damage not allowed, cancelling"); e.setCancelled(true); } } } }
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) public void onItemFrameDamage(final HangingBreakByEntityEvent e) { if (DEBUG) { plugin.getLogger().info("DEBUG: Hanging break by entity event"); plugin.getLogger().info("DEBUG: cause = " + e.getCause()); plugin.getLogger().info("DEBUG: entity = " + e.getEntity()); plugin.getLogger().info("DEBUG: remover = " + e.getRemover()); } // Check world if (!inWorld(e.getEntity()) || !(e.getEntity() instanceof ItemFrame)) { return; } if (e.getRemover() instanceof Skeleton || e.getRemover() instanceof Golem) { if (DEBUG) plugin.getLogger().info("DEBUG: Remover is mob"); if (!Settings.allowMobDamageToItemFrames) { if (DEBUG) plugin.getLogger().info("DEBUG: Damage not allowed, cancelling"); e.setCancelled(true); } } }
/** * On player interact entity. * * @param event * the event */ @EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true) public void onPlayerInteractEntity(PlayerInteractEntityEvent event) { if (!playerConf.get(event.getPlayer()).isAdminMod() && event.getRightClicked() instanceof ItemFrame) { Player player = (Player) event.getPlayer(); IDummyLand land = Factoid.getThisPlugin().iLands().getLandOrOutsideArea( event.getRightClicked().getLocation()); if ((land instanceof ILand && ((ILand) land).isBanned(player)) || !checkPermission(land, player, PermissionList.BUILD.getPermissionType()) || !checkPermission(land, player, PermissionList.BUILD_PLACE.getPermissionType())) { messagePermission(player); event.setCancelled(true); } } }
@EventHandler public void onPlayerRightClick(PlayerInteractEntityEvent event) { User user = um.getUser(event.getPlayer().getName()); if(user != null) { GameState state = user.getGame().getState(); if(event.getRightClicked() instanceof ItemFrame || state == GameState.WAITING || state == GameState.VOTING || state == GameState.COOLDOWN) { event.setCancelled(true); } } else { for(Game game : SurvivalGames.gameManager.getGames()) { for(Arena arena : game.getArenas()) { if(arena.containsBlock(event.getRightClicked().getLocation())) event.setCancelled(true); } } } }
@SuppressWarnings("deprecation") @EventHandler public void onItemFrameClick(PlayerInteractEntityEvent event) { if (event.getPlayer().getGameMode() == GameMode.CREATIVE) { return; } // this prevents the journal from being placed inside of item frame if (event.getRightClicked() instanceof ItemFrame) { ItemStack item = null; try { item = (event.getHand() == EquipmentSlot.HAND) ? event.getPlayer().getInventory().getItemInMainHand() : event.getPlayer().getInventory().getItemInOffHand(); } catch (LinkageError e) { item = event.getPlayer().getItemInHand(); } String playerID = PlayerConverter.getID(event.getPlayer()); if (Journal.isJournal(playerID, item) || Utils.isQuestItem(item)) { event.setCancelled(true); } } }
@EventHandler public void onDamage(EntityDamageByEntityEvent event) { if (!(event.getEntity() instanceof ItemFrame)) { return; } if (!(event.getDamager() instanceof Player)) { return; } BytecraftPlayer player = plugin.getPlayer((Player) event.getDamager()); if (!player.hasBlockPermission(event.getEntity().getLocation(), true)) { event.setCancelled(true); } }
private void handleClick(final Player player, final Craftomat craftomat) { CraftomatListener.debug("handleClick", player.getName() + " is interacting with craftomat " + craftomat.getId() + " (valid: " + craftomat.isValid() + ")"); if (!craftomat.isValid()) { return; } ItemFrame frame = craftomat.getItemFrame().get(); if (frame.getItem() != null && !frame.getItem().getType().equals(Material.AIR)) { // Craftomat contains an item! //CraftoMessenger.sendFailure(player, "Zurzeit können noch keine Items am Craftomaten umgewandelt werden!"); craftomat.startRotation(player); return; } else { Optional<CraftoPlayer> craftoPlayer = CraftoPlayer.getPlayer(player); if (!craftoPlayer.isPresent()) { CraftoMessenger.sendFailure(player, Messages.PLAYER_INSTANCE_NOT_FOUND); return; } Optional<Account> account = this.module.getAccount(craftoPlayer.get()); if (!account.isPresent()) { CraftoMessenger.sendFailure(player, "Du musst dir erst noch ein Bankkonto zulegen!"); return; } this.loginProgress.put(player.getUniqueId(), new StringBuilder(4)); this.loginMenu.show(player); } }
@EventHandler public void onDamage(EntityDamageByEntityEvent event) { if (!(event.getEntity() instanceof ItemFrame)) { return; } if (!(event.getDamager() instanceof Player)) { return; } TregminePlayer player = plugin.getPlayer((Player) event.getDamager()); if (!player.hasBlockPermission(event.getEntity().getLocation(), true)) { event.setCancelled(true); } }
/** * Event handler to watch whenever an itemframe is placed. * This will remove the cache of the hopper it was placed on. * * @param event HangingPlaceEvent containing data about the item being hung. We care about an ItemFrame being placed. */ @EventHandler(ignoreCancelled=true) public void onHangingPlaceEvent(HangingPlaceEvent event) { if (event.getEntity() instanceof ItemFrame) { if (event.getBlock().getType().equals(Material.HOPPER)) { Player player = event.getPlayer(); if (!player.hasPermission("hopperfiltersimplified.build.place.itemframe")) { plugin.sendMessageInfo(player, "You do not have rights to place a hopper filter itemFrame."); event.setCancelled(true); return; } //debug if requested if (plugin.debugLevel_get() > 0) plugin.getLogger().info("ItemFrame placed at (" + event.getBlock().getLocation().toString() + ")"); //Clear the cache from the hopper around the Hopper the itemFrame was placed on. plugin.knownHoppersCache_ClearAroundLocation(event.getBlock().getLocation()); } } }
/** * Event handler to watch whenever an itemframe is broken by something other than a player.. * This will remove the cache of the hoppers around it. * * @param event HangingBreakEvent containing data about the broken hanging item. We care about the ItemFrame being removed. */ @EventHandler(ignoreCancelled=true) public void onHangingBreakEvent(HangingBreakEvent event) { if (event.getEntity() instanceof ItemFrame) { //get the item frame entity ItemFrame itemFrame = (ItemFrame)event.getEntity(); //get the block location that represents the ItemFrame location Location itemFrameLocation = itemFrame.getLocation().getBlock().getLocation(); //debug if requested if (plugin.debugLevel_get() > 0) plugin.getLogger().info("ItemFrame broken by non-player at (" + itemFrameLocation.toString() + ")"); //an itemFrame was broken. Clear the cache from the hoppers around the frame. plugin.knownHoppersCache_ClearAroundLocation(itemFrameLocation); } }
/** * Indicate if the hopper is next to an itemFrame that can be part of its filter * * @param hopperLocation Location of the hopper in question * @return boolean true if there is an itemFrame next to the hopper that can be part of its filter */ protected boolean isHopperNextToItemFrame(final Location hopperLocation) { //Look right next to the hopper and avoid the frames on another hopper double radius = 0.45; //create an entity in the exact center of the block so we can find the surrounding attached entities. Entity entity = hopperLocation.getBlock().getWorld().spawnEntity(hopperLocation.add(0.5,0.5,0.5), EntityType.EXPERIENCE_ORB); //get all other entities in a radius around this entity not looking up or down. List<Entity> entities = entity.getNearbyEntities(radius, 0, radius); //remove the temp entity entity.remove(); //loop through all the adjacent entities next the hopper for (Entity nearbyEntity : entities) { if (nearbyEntity instanceof ItemFrame) { return true; } } return false; }
public ItemStack removeMod(final Player player, final ItemFrame frame) { // Get the mod slot. final ModInfo info = getModFromFrame(frame); if (info == null || !mods.contains(info)) return null; // Get the item. final ItemStack item = frame.getItem(); // If the material is special, do stuff. final PortalModifier modifier = PortalModifier.get(item.getType()); if (modifier != null && !modifier.onRemove(player, this, info, item)) return null; // Clear the item. info.item = null; frame.setItem(null); // Clear the configuration. info.flags.clear(); // And return the item. return item; }
public boolean setMod(final Player player, final ItemFrame frame, final ItemStack item) { // Get the mod slot. final ModInfo info = getModFromFrame(frame); if (info == null || !mods.contains(info)) return false; // If we've already got a modifier, remove it. If we can't, return false. if (info.item != null && removeMod(player, frame) == null) return false; // Get the modifier for this material and try to apply it. final PortalModifier modifier = PortalModifier.get(item.getType()); if (modifier == null || !modifier.hasPermission(player, this, info, item) || !modifier.onApply(player, this, info, item)) return false; // It worked. Set the item and return. info.item = item; frame.setItem(item); return true; }
public ItemFrame setFrame(FrameInfo.Frame type, ItemFrame frame) { // If we've got an existing frame of that type, remove it. FrameInfo info = frames.get(type); if (info != null) { // Remove the existing frame if it's not this frame. ItemFrame old = info.getFrame(true); if (old.equals(frame)) return frame; old.remove(); frames.remove(type); } // Create the new info and store it. info = new FrameInfo(type, frame); frames.put(type, info); frameIDs.put(info.id, info); plugin.getManager().addFrame(this, frame); return frame; }
private void setIDFrames(short value, ItemFrame frame1, ItemFrame frame2) { // Try to avoid null pointer exceptions, shall we? if (frame1 == null || frame2 == null) return; if (value < 0 || value > 288) { ItemStack bedrock = new ItemStack(Material.BEDROCK, 1); frame1.setItem(bedrock); frame2.setItem(bedrock); return; } int f1 = (value / 17) - 1; int f2 = (value % 17) - 1; frame1.setItem((f1 == -1) ? null : new ItemStack(Material.WOOL, 1, (short) f1)); frame2.setItem((f2 == -1) ? null : new ItemStack(Material.WOOL, 1, (short) f2)); }
@EventHandler(priority=EventPriority.NORMAL ) public void onPlayerInteractEntityEvent(PlayerInteractEntityEvent event) { if (event.getRightClicked() instanceof ItemFrame) { System.out.println(" plugin: onPlayer InteractEntity Event "); //get the block location of the ItemFrame Location itemFrameLocation = event.getRightClicked().getLocation(); //cast the right clicked on item into an itemFrame ItemFrame itemFrame = (ItemFrame) event.getRightClicked(); plugin.itemFrame1 = itemFrame; System.out.println(" "+itemFrame.getType()); System.out.println(" "+itemFrame.getItem().getType()); ItemFrame test = (ItemFrame)(event.getRightClicked()); boolean isAir = test.getItem().getType().equals(Material.AIR); } }
public Frame addFrame(String pictureURL, ItemFrame entity) { Frame frame = new Frame(this.getNewFrameID(), pictureURL, entity.getLocation(), entity.getFacing()); frame.setEntity(entity); if (frame.getBufferImage() == null) { return null; } Chunk chunk = entity.getLocation().getChunk(); List<Frame> frameList = this.getFramesInChunk(chunk.getWorld().getName(), chunk.getX(), chunk.getZ()); frameList.add(frame); this.setFramesInChunk(chunk.getWorld().getName(), chunk.getX(), chunk.getZ(), frameList); Utils.setFrameItemWithoutSending(entity, new ItemStack(Material.AIR)); this.sendFrame(frame); this.saveFrames(); return frame; }
@EventHandler public void onItemFrameInteract(PlayerInteractEntityEvent event) { Player p = event.getPlayer(); Entity e = event.getRightClicked(); if (e instanceof ItemFrame && p.getGameMode() != GameMode.CREATIVE) { event.setCancelled(true); } }
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true) public void checkItemFrameItemRemove(EntityDamageByEntityEvent event) { // This event is fired when popping an item out of an item frame, without breaking the frame itself if(event.getEntity() instanceof ItemFrame && ((ItemFrame) event.getEntity()).getItem() != null) { this.handleHangingBreak(event, (Hanging) event.getEntity(), event.getDamager()); } }
private static Material getHangingType(Hanging hanging) { if(hanging instanceof Painting) { return Material.PAINTING; } else if(hanging instanceof ItemFrame) { return Material.ITEM_FRAME; } else if(hanging instanceof LeashHitch) { return Material.LEASH; } else { return null; } }
@EventHandler public void onEntityInteractEntity(PlayerInteractEntityEvent event) { if (event.getRightClicked().getType() == EntityType.ITEM_FRAME) { event.setCancelled(true); ItemFrame frame = (ItemFrame) event.getRightClicked(); frame.setRotation(Rotation.NONE); } }