The problem you are having is you have a Nullpointer Exception, because your plugin variable is null because you do not have constructor. Your executor should look like this at the start: Code: package me.cedi.setsunny; import org.bukkit.ChatColor; import org.bukkit.World; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; public class SunCommandExecutor implements CommandExecutor{ SetSunnyCore plugin; SunCommandExecutor(SetSunnyCore instance){ plugin = instance; } @Override public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) { //onCommand(start)------------------------------------------------- if (sender instanceof ConsoleCommandSender == true){ //If ConsoleCommandSender(start)----------------------------------- //If there are less than 1 arguments after "/sun" if(args.length < 1){ sender.sendMessage("Not enough arguments."); sender.sendMessage("Correct usage is: /sun [world] [duration]"); } Not part of the question, but Code: if (sender instanceof ConsoleCommandSender == true){ Should be Code: if (sender instanceof ConsoleCommandSender){ Then when registering the command in the main class Code: this.sunExecutor = new SunCommandExecutor(this); this.getCommand("sun").setExecutor(sunExecutor);
Look at the source of my snowball plugin, i use config values alot in their. The main thing i see people doing wrong, or missing out is the constructor. But as requested, here is my main class for my snowball plugin: Code: package me.theguynextdoor.snowballnextdoor; import java.util.logging.Logger; import me.theguynextdoor.snowballnextdoor.commands.CritCommand; import me.theguynextdoor.snowballnextdoor.commands.HeadShotCommand; import me.theguynextdoor.snowballnextdoor.commands.IceCommand; import me.theguynextdoor.snowballnextdoor.commands.MissCommand; import me.theguynextdoor.snowballnextdoor.commands.MobDamageValue; import me.theguynextdoor.snowballnextdoor.commands.PlayerDamageValue; import me.theguynextdoor.snowballnextdoor.commands.SnowTilePlaceToggle; import me.theguynextdoor.snowballnextdoor.commands.SnowballDropToggle; import me.theguynextdoor.snowballnextdoor.commands.SnowmanDamage; import me.theguynextdoor.snowballnextdoor.listeners.SnowballBlockListener; import me.theguynextdoor.snowballnextdoor.listeners.SnowballEntityListener; import me.theguynextdoor.snowballnextdoor.listeners.SnowballPlayerListener; import org.bukkit.Bukkit; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.java.JavaPlugin; public class SnowBallNextDoor extends JavaPlugin { private final Logger log = Logger.getLogger("Minecraft"); private final SnowballEntityListener entityListener = new SnowballEntityListener(this); private final SnowballPlayerListener playerListener = new SnowballPlayerListener(this); private final SnowballBlockListener blockListener = new SnowballBlockListener(this); @Override public void onDisable() { log.info(this.getDescription().getName() + " has been disabled"); } @Override public void onEnable() { final FileConfiguration config = this.getConfig(); config.options().header("The Server.PvP node: Set to true if PvP is enabled, and false if PvP is diabled."); config.addDefault("Server.PvP", true); config.addDefault("Toggle.Damage.PlayerDamage", true); config.addDefault("Toggle.Damage.MobDamage", true); config.addDefault("Toggle.Damage.SnowmanDamage", true); config.addDefault("Toggle.Snowball.PlaceOnRightClick", true); config.addDefault("Toggle.Snowball.SnowTileStacking", true); config.addDefault("Toggle.Snowball.PutEntityFiresOut", true); config.addDefault("Toggle.Snowball.WaterToIce", true); config.addDefault("Toggle.Drops.SnowballFromTiles", true); config.addDefault("Value.PlayerDamage", 2); config.addDefault("Value.MobDamage", 2); config.addDefault("Value.SnowmanDamage", 2); config.addDefault("Crit.Chance", true); config.addDefault("Crit.DamageExtra", true); config.addDefault("Crit.Toggle.Message", true); config.addDefault("Miss.Chance", true); config.addDefault("Miss.Toggle.Message", true); config.addDefault("Headshot.Toggle.HeadshotDamage", true); config.addDefault("Headshot.Toggle.HeadshotMessage", false); config.addDefault("Headshot.Value.HeadshotExtraDamageDealt", 1); config.options().copyDefaults(true); saveConfig(); PluginManager pm = Bukkit.getServer().getPluginManager(); pm.registerEvents(playerListener, this); pm.registerEvents(blockListener, this); pm.registerEvents(entityListener, this); getCommand("splayer").setExecutor(new PlayerDamageValue(this)); getCommand("mob").setExecutor(new MobDamageValue(this)); getCommand("snowman").setExecutor(new SnowmanDamage(this)); getCommand("snowtile").setExecutor(new SnowTilePlaceToggle(this)); getCommand("miss").setExecutor(new MissCommand(this)); getCommand("crit").setExecutor(new CritCommand(this)); getCommand("headshot").setExecutor(new HeadShotCommand(this)); getCommand("snowice").setExecutor(new IceCommand(this)); getCommand("snowball").setExecutor(new SnowballDropToggle(this)); log.info(this.getDescription().getName() + " v" + getDescription().getVersion() + " has been enabled"); } } And this is my listener: Code: package me.theguynextdoor.snowballnextdoor.listeners; import me.theguynextdoor.snowballnextdoor.SnowBallNextDoor; import me.theguynextdoor.snowballnextdoor.Util.Util; import org.bukkit.Bukkit; import org.bukkit.GameMode; import org.bukkit.entity.Entity; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; import org.bukkit.entity.Projectile; import org.bukkit.entity.Snowball; import org.bukkit.entity.Snowman; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.permissions.Permissible; public class SnowballEntityListener implements Listener { SnowBallNextDoor plugin; public SnowballEntityListener(SnowBallNextDoor instance) { plugin = instance; } private int damage; @EventHandler public void onEntityDamage(EntityDamageEvent e) { if (e instanceof EntityDamageByEntityEvent) { for (Player player : Bukkit.getServer().getOnlinePlayers()) { if (player.hasPermission("snowball.use") || player.isOp()) { Entity attacker = ((EntityDamageByEntityEvent) e).getDamager(); double crit = Math.random() * 20; double dif = attacker.getLocation().getY() - e.getEntity().getLocation().getY() - 1.5; if (attacker instanceof Snowball) { Entity damaged = e.getEntity(); if (e.isCancelled()) { e.setCancelled(false); } // Null check if (damaged == null || ((Projectile) attacker).getShooter() == null) { return; } // Snowman damage if (((Snowball) attacker).getShooter() instanceof Snowman && plugin.getConfig().getBoolean("Toggle.Damage.SnowmanDamage")) { damage = plugin.getConfig().getInt("Value.SnowmanDamage"); } // Player damage else if (damaged instanceof Player && plugin.getConfig().getBoolean("Toggle.Damage.PlayerDamage")) { damage = plugin.getConfig().getInt("Value.PlayerDamage"); } // Mob damage else if (damaged instanceof LivingEntity && !(damaged instanceof Player) && plugin.getConfig().getBoolean("Toggle.Damage.MobDamage")) { damage = plugin.getConfig().getInt("Value.MobDamage"); } // Headshots if (dif > 0.1 && dif < 0.5 && e.getEntity() instanceof Player && ((Player) damaged).getGameMode() != GameMode.CREATIVE) { if (plugin.getConfig().getBoolean("Headshot.Toggle.HeadshotDamage")) { damage = damage + plugin.getConfig().getInt("Headshot.Value.HeadshotExtraDamageDealt"); if (((Projectile) attacker).getShooter() == null) { return; } // Daze if (((Projectile) attacker).getShooter() instanceof Player) { if (((Permissible) ((Projectile) attacker).getShooter()).hasPermission("snowball.daze")) { if (Math.random() * 1000 >= 500) { Util.dazePlayer((Player) damaged); } } } if (plugin.getConfig().getBoolean("Headshot.Toggle.HeadshotMessage")) { if (damaged instanceof Player) { ((Player) damaged).sendMessage("Headshot from " + ((Player) ((Projectile) attacker).getShooter()).getDisplayName()); } if (((Projectile) attacker).getShooter() instanceof Player) { ((Player) ((Projectile) attacker).getShooter()).sendMessage("Headshot dealt to " + ((Player) damaged).getDisplayName()); } } } } // Crit if (((Snowball) attacker).getShooter() instanceof Player) { if (crit >= 19) { if (plugin.getConfig().getBoolean("Crit.Chance")) { damage = damage + plugin.getConfig().getInt("Crit.DamageExtra"); if (plugin.getConfig().getBoolean("Crit.Toggle.Message")) { ((Player) ((Projectile) attacker).getShooter()).sendMessage("Crit"); } } } // Miss else if (crit <= 1) { if (plugin.getConfig().getBoolean("Miss.Chance")) { damage = 0; if (plugin.getConfig().getBoolean("Miss.Toggle.Message")) { ((Player) ((Projectile) attacker).getShooter()).sendMessage("Miss"); } } } } // Put fires out on entities if (damaged.getFireTicks() > 0) { damaged.setFireTicks(0); } // Setting final damage if (damaged instanceof Player) { if (((Player) damaged).getHealth() > 20 || ((Player) damaged).getHealth() <= 0) { return; } if (plugin.getConfig().getBoolean("Server.PvP")) { e.setDamage(damage); } else { ((Player) damaged).setHealth(((Player) damaged).getHealth() - damage); } } else { e.setDamage(damage); } } } } } } }
presuming you have your constructor set up as showed in this tutorial: http://forums.bukkit.org/threads/config-from-another-class.61899/ Then it is as simple as plugin.getConfig().getBoolean("path");
@theguynextdoor i hava a problem with my config a lot of people tried to help me but this is my tread can you help me please you are the last man please http://forums.bukkit.org/threads/how-can-i-use-config-colors.81993/#post-1174582
I've done everything, as far as I can tell, according to instruction, and this thing still doesn't want to cooperate. Every time I try to get a boolean from the config, my console gets flooded with these messages: Code: 08:05:57 [SEVERE] Could not pass event CreatureSpawnEvent to ServerProtect org.bukkit.event.EventException at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja va:304) at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav a:62) at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.j ava:477) at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j ava:462) at org.bukkit.craftbukkit.event.CraftEventFactory.callCreatureSpawnEvent (CraftEventFactory.java:226) at net.minecraft.server.World.addEntity(World.java:887) at net.minecraft.server.SpawnerCreature.spawnEntities(SpawnerCreature.ja va:180) at net.minecraft.server.World.doTick(World.java:1735) at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:546) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:451) at net.minecraft.server.ThreadServerApplication.run(SourceFile:492) Caused by: java.lang.NullPointerException at com.gmail.thecotlsdragon98.ServerProtect.MobSpawnListener.MobSpawn(Mo bSpawnListener.java:21) at sun.reflect.GeneratedMethodAccessor14.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) at java.lang.reflect.Method.invoke(Unknown Source) at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja va:302) ... 10 more Here is the onEnable() method from my main class: Code: public ServerProtect plugin; @Override public void onEnable() { getLogger().info("ServerProtect v1.1 enabled"); PluginManager manager = this.getServer().getPluginManager(); manager.registerEvents(new TNTListener(), this); manager.registerEvents(new FireBlockListener(), this); manager.registerEvents(new FireChargeListener(), this); manager.registerEvents(new FlintAndSteelListener(), this); manager.registerEvents(new BedrockBreakListener(), this); manager.registerEvents(new BedrockPlaceListener(), this); manager.registerEvents(new RedstoneListener(), this); manager.registerEvents(new LavaListener(), this); manager.registerEvents(new WaterListener(), this); manager.registerEvents(new UglyBlockListener(), this); manager.registerEvents(new BowAndArrowListener(), this); manager.registerEvents(new EggListener(), this); manager.registerEvents(new ExpBottleListener(), this); manager.registerEvents(new MobSpawnerListener(), this); manager.registerEvents(new ItemDropListener(), this); manager.registerEvents(new EnderPearlListener(), this); manager.registerEvents(new SnowballListener(), this); manager.registerEvents(new EnderEyeListener(), this); manager.registerEvents(new DispenserListener(), this); manager.registerEvents(new MobSpawnListener(plugin), this); FileConfiguration config = this.getConfig(); config.addDefault("mob-spawning.disabled", false); config.options().copyDefaults(true); saveConfig(); } And here is the class that is causing the issue: Code: package com.gmail.thecotlsdragon98.ServerProtect; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.CreatureSpawnEvent; import com.gmail.thecotlsdragon98.ServerProtect.ServerProtect; class MobSpawnListener extends ServerProtect implements Listener { ServerProtect plugin; public MobSpawnListener(ServerProtect instance) { plugin = instance; } @EventHandler() public void MobSpawn(CreatureSpawnEvent event) { if(plugin.getConfig().getBoolean("mob-spawning.disabled")) { event.setCancelled(true); } } }
The problem is, in your main class you made a variable called plugin, never initialised it and then put in when you defined your listener. What you need to do is when you register the events for the class MobSpawnListener you want to do it like this. manager.registerEvents(new MobSpawnListener(this), this); or at the very least, at the top of your onEnable put: plugin = this;
Hum. Eclipse told me to do manager.registerEvents(new MobSpawnListener(plugin), this); Maybe I should stop listening to Eclipse. Anyways, that fixed the issue, you're the first to actually help me figure out how to get a config working. You sir, are an awesome individual.