Plugin category: Anti-grief, Role-Playing Suggested name: Private Drop What I want: I need a plugin that the player who can kill the monster only they can pickup an item that drop by the monster. Example Situation : Player A hit zombie but zombie didn't die Then Player B hit zombie and zombie died so only Player B can picup Item that drop by that zombie. Ideas for commands: /prd [on : off] (toggle Private Drop on or off) Ideas for permissions: PrivateDrop.bypass (they can pickup item that other player kill monster) When I'd like it by: As Soon As Possible Version: Minecraft Bukkit 1.6.4
Interesting idea, however, I'm not sure if you can set dropped items to private like that. I know you can get the items dropped by the entity and then just place them into the players inventory. This is at first glance, I'll look deeper into the dropped items.
That would work, I've yet to use metadata so I'll have to look up how it works. This plugin could take a lot of memory on a large server, every time a player kills a hostile entity it needs to store the dropped items until either picked up or de-spawned. I know plugins like LagClear have a habit of keeping items spawned if the player leaves the area or teleports away. I might need to drop items from being player specific after a set amount of time to avoid memory problems :/
HardKillz11 Any plugin is possible, as long as it doesn't modify the client. Including this, which is fairly easy to do, actually.
Hi, This plugin was fairly easy to make so i made it this is the link: <Edit by Moderator: Redacted mediafire url> This is the code: Code:java package biz.boulter.privateDrop; import java.util.ArrayList;import org.bukkit.entity.Item;import org.bukkit.entity.Player;import org.bukkit.event.EventHandler;import org.bukkit.event.Listener;import org.bukkit.event.entity.EntityDamageByEntityEvent;import org.bukkit.event.entity.EntityDeathEvent;import org.bukkit.event.player.PlayerPickupItemEvent;import org.bukkit.inventory.ItemStack;import org.bukkit.inventory.meta.ItemMeta;import org.bukkit.plugin.java.JavaPlugin; public class PrivateDrop extends JavaPlugin implements Listener{ @Override public void onEnable(){ System.out.println( "[PrivateDrop] Created By: "+getDescription().getAuthors() ); getServer().getPluginManager().registerEvents(this, this); } @EventHandler public void onEntityDeath(EntityDeathEvent e){ for(ItemStack item: e.getDrops()){ if(e.getEntity().getLastDamageCause() instanceof EntityDamageByEntityEvent){ EntityDamageByEntityEvent edbee = (EntityDamageByEntityEvent) e.getEntity().getLastDamageCause(); if(edbee.getDamager() instanceof Player){ Player killer = (Player) edbee.getDamager(); ItemMeta im = item.getItemMeta(); ArrayList loreLst = new ArrayList(); loreLst.add(killer.getName()); im.setLore(loreLst); item.setItemMeta(im); } } } } @EventHandler public void onPickup(PlayerPickupItemEvent e){ Item i = e.getItem(); ItemMeta im = i.getItemStack().getItemMeta(); if(im.getLore() != null){ if(im.getLore().contains(e.getPlayer().getName())){ im.setLore(null); i.getItemStack().setItemMeta(im); }else{ e.setCancelled(true); } } }}
Nnnnneeeedddd You could replace this: System.out.println("[PrivateDrop] Created By: "+getDescription().getAuthors()); with this: this.getLogger().info("Created By: "+getDescription().getAuthors());
i know there is a plugin like this with players, when a player kills another player, only the player who killed him/her can loot the body. I seen it on a server.. probably custom
It doesn't, but this.getLogger() is made for that, System.out.println is common for small java applications, not for bukkit plugins
[quote uid=90708464 name="Nnnnneeeedddd" post=2381993]Hi, This plugin was fairly easy to make so i made it this is the link: <Edit by Moderator: Redacted mediafire url> This is the code: Code:java package biz.boulter.privateDrop; import java.util.ArrayList;import org.bukkit.entity.Item;import org.bukkit.entity.Player;import org.bukkit.event.EventHandler;import org.bukkit.event.Listener;import org.bukkit.event.entity.EntityDamageByEntityEvent;import org.bukkit.event.entity.EntityDeathEvent;import org.bukkit.event.player.PlayerPickupItemEvent;import org.bukkit.inventory.ItemStack;import org.bukkit.inventory.meta.ItemMeta;import org.bukkit.plugin.java.JavaPlugin; public class PrivateDrop extends JavaPlugin implements Listener{@Overridepublic void onEnable(){System.out.println("[PrivateDrop] Created By: "+getDescription().getAuthors()); getServer().getPluginManager().registerEvents(this, this);} @EventHandlerpublic void onEntityDeath(EntityDeathEvent e){for(ItemStack item: e.getDrops()){if(e.getEntity().getLastDamageCause() instanceof EntityDamageByEntityEvent){EntityDamageByEntityEvent edbee = (EntityDamageByEntityEvent) e.getEntity().getLastDamageCause(); if(edbee.getDamager() instanceof Player){Player killer = (Player) edbee.getDamager();ItemMeta im = item.getItemMeta();ArrayList loreLst = new ArrayList();loreLst.add(killer.getName());im.setLore(loreLst);item.setItemMeta(im);}}}} @EventHandlerpublic void onPickup(PlayerPickupItemEvent e){Item i = e.getItem();ItemMeta im = i.getItemStack().getItemMeta(); if(im.getLore() != null){if(im.getLore().contains(e.getPlayer().getName())){im.setLore(null);i.getItemStack().setItemMeta(im);}else{e.setCancelled(true);}}}} [/quote] Thank you very much for your time to do this plugin