Solved Beacon API not working

Discussion in 'Plugin Development' started by Niv-Mizzet, Oct 14, 2019.

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

    Niv-Mizzet

    Hi! I've got another question.
    Following the instructions here: https://bukkit.org/threads/util-beacon-blockstate-api-sort-of.164451/ by foodlying, but I whenever I try to convert to a BeaconState, the command line says
    Caused by: java.lang.NoClassDefFoundError: Could not initialize class go.SuperCraft.me.BeaconState
    Here is my Main class:
    Code:
    import org.bukkit.command.CommandExecutor;
    import org.bukkit.command.CommandSender;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.ItemMeta;
    import org.bukkit.plugin.PluginManager;
    import org.bukkit.plugin.java.JavaPlugin;
    import org.bukkit.potion.PotionEffectType;
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.block.Beacon;
    import org.bukkit.block.Block;
    import org.bukkit.command.Command;
    import go.SuperCraft.me.ItemSmith;
    
    public class Main extends JavaPlugin {
           @Override
            public void onEnable() {
             
               PluginManager pm=getServer().getPluginManager();
               ListenerOne listener= new ListenerOne(this);
               pm.registerEvents(listener, this);
            }
           @Override
            public void onDisable() {
              
            }
           public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args){
               Player player= (Player) sender;
               if (sender instanceof Player){
                   String lowerCmd= cmd.getName().toLowerCase();
              
               switch(lowerCmd){
               case "givebeacon":
                   if(player.hasPermission("op")){
                       player.sendMessage(ChatColor.translateAlternateColorCodes('&', "OP is working"));
                       player.sendMessage(ChatColor.translateAlternateColorCodes('&', "aToNull is working"));
                       Block b=new ItemSmith().BuildBlock(Material.BEACON, player, player.getLocation().add(1, 0, 0));
                      
                       player.sendMessage(ChatColor.translateAlternateColorCodes('&', "B is working"));
                       BeaconState state=BeaconState.asBeacon(b);
    
                       player.sendMessage(ChatColor.translateAlternateColorCodes('&', "ItemSmith is working"));
                       state.setPrimary(PotionEffectType.BLINDNESS);
                       state.setSecondary(PotionEffectType.UNLUCK);
                   }
                      
              
               }}
                  
               return true;
           }
    }
    Item/Block Creation Class:
    Code:
    import java.util.ArrayList;
    import java.lang.reflect.Method;
    import java.lang.reflect.Field;
    import java.lang.reflect.Constructor;
    
    import org.bukkit.ChatColor;
    import org.bukkit.Location;
    import org.bukkit.Material;
    import org.bukkit.block.Block;
    import org.bukkit.block.data.BlockData;
    import org.bukkit.entity.Player;
    import org.bukkit.inventory.ItemFlag;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.inventory.meta.BlockDataMeta;
    import org.bukkit.inventory.meta.ItemMeta;
    
    public class ItemSmith {
    
    public ItemSmith(){}   
    public ItemStack BuildItem(Material m, String name, String desc, Boolean enchants, Boolean Attributes){
        ItemStack item=new ItemStack(m);
        ItemMeta im= item.getItemMeta();
        im.setDisplayName(name);
        ArrayList<String> lore= new ArrayList<String>();
        lore.add(desc);
        im.setLore(lore);
       
    if(!Attributes){
        im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);}
        if(!enchants){
        im.addItemFlags(ItemFlag.HIDE_ENCHANTS);}
        item.setItemMeta(im);
    
    return item;
    }
    public Block BuildBlock(Material m, Player player, Location loc){
        Block block = loc.getBlock();
        player.sendMessage(ChatColor.translateAlternateColorCodes('&', "dddd is working"));
        block.setType(m);
         player.sendMessage(ChatColor.translateAlternateColorCodes('&', "ooooo is working"));
        /*BlockDataMeta im = null;
        im.setDisplayName(name);
        ArrayList<String> lore= new ArrayList<String>();
        lore.add(desc);
        im.setLore(lore);
       
    if(!Attributes){
        im.addItemFlags(ItemFlag.HIDE_ATTRIBUTES);}
        if(!enchants){
        im.addItemFlags(ItemFlag.HIDE_ENCHANTS);}*/
    
    return block;
    }
    
    }
    
     
  2. Offline

    timtower Administrator Administrator Moderator

    @Niv-Mizzet Are you exporting the beacon api classes as well?
     
  3. Offline

    Niv-Mizzet

    @timtower Yes, I have a java file with the API code inside of my package where I keep my scripts.

    @timtower never mind. I just realized that I can just prevent the player from opening up the GUI. My main goal at first was to negate all effects.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Oct 15, 2019
  4. Offline

    robertlit

    @Niv-Mizzet Never worked with beaconapi, so I don't know. But I just wanted to mention that if you want to check if a player is op, you should do if p.isOp()
     
  5. Offline

    Niv-Mizzet

Thread Status:
Not open for further replies.

Share This Page