Super Plugin

Discussion in 'Plugin Development' started by MajorSkillage, Sep 29, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    MajorSkillage

    Hello! I get an error plugin already initialised when I run this plugin I am making, a super plugin this is obviously my first super plugin :p
    Main:
    Code:
    package me.rockinroll99.bchub;
     
    import me.rockinroll99.bchub.Commands.Message;
     
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.event.Listener;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class Main extends JavaPlugin implements Listener{
        Message msg = new Message();
        DsPvP pvp = new DsPvP();
        private Main plugin;
        public void loadConfiguration(){
            plugin.saveConfig();
            plugin.saveDefaultConfig();
        }
       
        public void onEnable(){
            loadConfiguration();
            getServer().getPluginManager().registerEvents(this, this);
        }
       
        public void onDisable(){
            plugin.saveConfig();
        }
       
        public boolean onCommand(CommandSender Sender, Command cmd, String commandLabel, String[] args){
            Player p = (Player)Sender;
            if(commandLabel.equalsIgnoreCase("hub reload")){
                plugin.reloadConfig();
                p.sendMessage(ChatColor.DARK_RED + "Plugin reloaded!");
            }
            return false;
        }
     
    }
    
    DsPvP (listener plugin)
    Code:
    package me.rockinroll99.bchub;
     
    import org.bukkit.ChatColor;
    import org.bukkit.GameMode;
    import org.bukkit.Material;
    import org.bukkit.OfflinePlayer;
    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.inventory.InventoryClickEvent;
    import org.bukkit.event.player.PlayerDropItemEvent;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.event.player.PlayerJoinEvent;
    import org.bukkit.inventory.ItemStack;
     
    public class DsPvP extends Main implements Listener{
        DsPvP plugin;
          Player p;
          boolean isHolding;
     
          @EventHandler
          public void onDrop(PlayerDropItemEvent e) { Player p = e.getPlayer();
            if ((!p.hasPermission("hub.override")) || (!p.isOp()))
            {
              e.getPlayer().sendMessage(ChatColor.RED + "You can't drop stuff in the hub! :O");
              e.setCancelled(true);
            } }
     
          @EventHandler
          public void join(PlayerJoinEvent e) {
            if (!e.getPlayer().getInventory().contains(Material.DIAMOND_SWORD) && getConfig().getString("sword on join") == "true");
            {
              ItemStack dsword = new ItemStack(Material.DIAMOND_SWORD);
              e.getPlayer().getInventory().addItem(dsword);
            }
          }
          @EventHandler
          public void onInvclick(InventoryClickEvent e) {
            Player p = ((OfflinePlayer)e).getPlayer();
            if ((!p.isOp()) || (!p.hasPermission("hub.override")))
            {
              e.setCancelled(true);
            }
          }
          @EventHandler
          public void onSwordInteract(PlayerInteractEvent e) {
            this.p = e.getPlayer();
            int item = this.p.getItemInHand().getTypeId();
            if (item == 276) {
              ItemStack dhelmet = new ItemStack(Material.DIAMOND_HELMET);
              ItemStack dchest = new ItemStack(Material.DIAMOND_CHESTPLATE);
              ItemStack dlegs = new ItemStack(Material.DIAMOND_LEGGINGS);
              ItemStack dboots = new ItemStack(Material.DIAMOND_BOOTS);
              this.p.setGameMode(GameMode.SURVIVAL);
              this.p.getInventory().setHelmet(dhelmet);
              this.p.getInventory().setChestplate(dchest);
              this.p.getInventory().setLeggings(dlegs);
              this.p.getInventory().setBoots(dboots);
              isHolding = true;
            } else if (item != 276) {
              ItemStack air = new ItemStack(Material.AIR);
              this.p.getInventory().setHelmet(air);
              this.p.getInventory().setChestplate(air);
              this.p.getInventory().setLeggings(air);
              this.p.getInventory().setBoots(air);
              isHolding = false;
            }
          }
          @EventHandler
          public void stopPvP(EntityDamageByEntityEvent e) {
            Player dmger = (Player)e.getDamager();
            Player player = (Player)e.getEntity();
            if (isHolding == false || dmger.getItemInHand().getTypeId() != 276 || player.getItemInHand().getTypeId() != 276) {
              if ((dmger.getItemInHand().getTypeId() != 276) && (player.getItemInHand().getTypeId() == 276)) {
                dmger.sendMessage(ChatColor.GOLD + "[" + ChatColor.RED + "PVP" + ChatColor.GOLD + "]" + ChatColor.RED + " " + player.getName() + " does not have a diamond sword in their hand!");
                e.setCancelled(true);
              }
              dmger.sendMessage(ChatColor.GOLD + "[" + ChatColor.RED + "PVP" + ChatColor.GOLD + "]" + ChatColor.RED + " You must be holding your diamond sword to pvp!");
              e.setCancelled(true);
            }
          }
     
    }
    
    Msg (in commands folder and not too sure on this one, this is the first command ive needed more then 1 arguments on)
    Code:
    package me.rockinroll99.bchub.Commands;
     
    import org.bukkit.Bukkit;
    import org.bukkit.ChatColor;
    import org.bukkit.command.Command;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
     
    import me.rockinroll99.bchub.Main;
     
    public class Message extends Main{
        String prefix = ChatColor.GOLD + "[" + ChatColor.RED + "Biome" + ChatColor.BLUE + "Craft" + ChatColor.GOLD + "]" + " ";
     
        public boolean onCommand(CommandSender Sender, Command cmd, String commandLabel, String[] args){
            Player p = (Player)Sender;
            Player targetPlayer = Bukkit.getPlayer(args[0]);
            if(commandLabel.equalsIgnoreCase("msg") && args.length > 1){
                targetPlayer.sendMessage(args[3]);
            } else if(args.length == 0){
                p.sendMessage(prefix + ChatColor.RED + "Correct usage: /msg (player) (message)");
            }
            return false;
        }
    }
    
     
  2. Offline

    Skionz

    Code:
    extends Main
     
  3. Offline

    justin_393

    Don't have your classes extend Main.
     
  4. Offline

    MajorSkillage

    why not? Isn't the point of a super plugin to be able to save ram by using less imports? Oh and also about the main class what am i ment to do with that? Just do what i was doing like main: the main class path
    then in the plugins
    DsPvP pvp = new DsPvP();?

    Ok i changed it to extend JavaPlugin but now what happend was it said that it wasn't updated and just incase you ask here is my plugin.yml
    Code:
    name: BCHub
    author: rockinroll99
    version: 1.0
    main: me.rockinroll99.bchub.Main
    commands:
        msg:
            description: Allows you to message a player
    permissions:
      hub.*:
        description: Gives access to all commands
        children:
          hub.override: true
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 14, 2016
  5. Offline

    SmooshCakez

    Only 1 class should extend JavaPlugin.
     
  6. Offline

    fireblast709

  7. Offline

    MajorSkillage

    fireblast709 honestly i didn't watch youtube video's, i took a guess :p
     
Thread Status:
Not open for further replies.

Share This Page