Try PlayerInteractEvent.
Don't use constructors with your plugin's main class. Use onEnable() instead.
Is root null? Look at where you instantiate this class. The getDataFolder() method might also be returning null.
for(Item i : <world>.getEntitiesByClass(Item.class)) { Location l = i.getLocation(); double x = l.getX(); double y = l.getY();...
If you want them to stay in that class forever, you will need to save the information to a file or to a database.
Weird, that's the download I'm using. It doesn't have an ASM-objectweb jar, though. I was using the asm-4.0.jar. I tried all the others in the...
If you are using <server>.getPlayer(String) or <server>.getPlayerExact(String), they will return null when the player is offline. You can also...
Hmm, doesn't seem to be working. Where is the jar downloaded from? I think I might have the wrong one.
For some reason it's not there for me. I can only get it from com.avaje.ebean.enhance.asm, and that one gives me errors.
Ahh, beautiful. Where does ClassAdapter come from?
Where does ClassReader and ClassWriter come from? I am currently importing them from com.avaje.ebean.enhance.asm, but I am getting errors on both...
@EventHandler public void playerInteract(PlayerInteractEvent event) { if(event.getAction() == Action.RIGHT_CLICK_BLOCK) { Block b =...
It's hard to do anything without seeing the error, but try int index = <inv>.first(<Material>); if(index >= 0) { ItemStack item =...
When you check the array, do chatZone.contains(new Location(pLoc.getBlockX(), pLoc.getBlockY(), pLoc.getBlockZ()));
Is the method you put the first block of code in being called? What event do you use?
You would have to set up a scheduler that resets the arrow's Y and its downward velocity every couple ticks.
Are the config values that are being used set correctly? And did you set the CommandExecutor of the command to the one yours?
<player>.addPotionEffect(new PotionEffect(PotionEffectType.HARM, <duration>, <amplifier>));
int index = <inv>.first(<Material>)); ItemStack item = <inv>.getItem(index); int amt = item.getAmount(); if(amt <= 1) { <inv>.setItem(index,...
You would have to store that new Runnable() somewhere it can be accessed by that constructor before starting it.
Separate names with a comma.