MaterialData help.

Discussion in 'Spigot Plugin Development' started by Bluecrafter35, Jul 15, 2018.

  1. So befor i start this, i just wanted to let you know that i am still in the learning phase of java and i never user MaterialData before.

    So now to my Problem (Question):

    I am doing a Jobplugin for my Friends Server and you should save in a MySQL Database which Block has which attributes. For Example:

    Birch Wood (has ID 5:2) so i am saving 5 on BLOCKID and 2 on BLOCKDATA, also i am saving the minimum of amount that you need to deliever, same i do with the maximum, and the same for minimum and maximum money you get paid.

    So the thing is Admin and Devs can create new Jobs for example a fisher, and they only have to say that it is for the fisher, a description of the job and which block, than my plugin gets the maximun and minimum amount of that block and creates a random amount for the job, the same with the money you get paid. After that i save it to a MySQL Database.

    So now here's my Code:
    Code (Java):
    public class CreateJob implements CommandExecutor
    {

        @Override
        public boolean onCommand(CommandSender sender, Command command, String label, String[] args)
        {
            if(command.getName().equalsIgnoreCase("createJob"))
            {
                if(sender instanceof Player)
                {
                    Player p = (Player)sender;
                    if(p.hasPermission("LNSFLR.ADMIN")||p.hasPermission("LNSFLR.DEV"))
                    {
                        if(args.length>4)
                        {
                            //Main.mysql.update("INSERT INTO `flaggingdata`(`ID`, `UUID`, `FLAG`, `FLAGZWEI`) VALUES ('"+rsu+"','"+target.getUniqueId().toString()+"','"+args[1]+"','')");

                            String rsu = RandomStringUtils.randomAlphanumeric(10);
                            String text="";
                            int count=0;
                            for(String part : args)
                            {
                                if(part.equalsIgnoreCase("end"))
                                {
                                    count++;
                                    break;
                                }
                                if(count==0)
                                {
                                    count++;
                                    break;
                                }
                                text+=part+" ";
                                count++;
                            }
                            if(text.length()>250)
                            {
                                p.sendMessage(Main.prefix+"§7 Text zu lange!");
                            }
                            else
                            {
                                String[] parts=null;
                                int min=0;
                                int max=0;
                                int mengemmin=0;
                                int mengemax=0;
                                if(args[count].contains(":"))
                                {
                                    parts = args[count].split(":");
                                    ResultSet rs = Main.mysql.query("SELECT * FROM `jobblockdata` WHERE BLOCKID ='"+parts[0]+"'");
                                    try {
                                        while(rs.next())
                                        {
                                            if(rs.getString("BLOCKDATA").equalsIgnoreCase(parts[1]))
                                            {
                                                min=rs.getInt("PREISMIN");
                                                max=rs.getInt("PREISMAX");
                                                mengemmin=rs.getInt("MENGEMIN");
                                                mengemax=rs.getInt("MENGEMAX");
                                            }
                                        }
                                    } catch (SQLException e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                    }
                                }
                                ResultSet rs = Main.mysql.query("SELECT * FROM `jobblockdata`WHERE BLOCKID='"+args[count]+"'");
                                try {
                                    while( rs.next())
                                    {
                                        min=rs.getInt("PREISMIN");
                                        max = rs.getInt("PREISMAX");
                                        mengemmin=rs.getInt("MENGEMIN");
                                        mengemax = rs.getInt("MENGEMAX");
                                    }
                                } catch (SQLException e) {
                                    // TODO Auto-generated catch block
                                    e.printStackTrace();
                                }
                             
                                Random randy = new Random();
                                int menge = randy.nextInt(mengemax-mengemmin+1)+mengemmin;
                                int preis = randy.nextInt(max-min+1)+min;
                                Main.mysql.update("INSERT INTO `jobdata`(`ID`, `JOBART`, `AUFTRAGSBESCHREIBUNG`, `BLOCKID`, `BLOCKMENGE`, `LOHN`) VALUES ('"+rsu+"','"+args[0]+"','"+text+"','"+args[count]+"','"+menge+"','"+preis+"')");
                            }
    Fill.loadAuftraege();
                        }
                    }
                }
            }
            return false;
        }

    }
     
    So now if you click on a NPC you should get on of these Jobs, and i now want to create an ItemStack so that my Plugin can tell you which type of Item you need.

    I tried this:
    Code (Java):
    @SuppressWarnings("deprecation")
        public void onNPCClick(PlayerInteractEntityEvent e)
        {
            Entity ent = e.getRightClicked();
            Player p = e.getPlayer();
            if(ent instanceof Villager)
            {
                if(ent.getName().equalsIgnoreCase("Holzfäller"))
                {
                    Random randy = new Random();
                    int auftrag = randy.nextInt(holzfaellerauftraege.size()-1 + 0+1)+0;
                    String id = holzfaellerauftraege.get(auftrag).getId()+"";
                    ItemStack item = null;
                    if(id.contains(";"))
                    {
                        String[] parts = id.split(":");
                        item = new ItemStack(Integer.parseInt(parts[0]), holzfaellerauftraege.get(auftrag).getMenge());
                        MaterialData data = new MaterialData(Integer.parseInt(parts[0]), Byte.parseByte(parts[1]));
                        item.setData(data);
                    }
                    else
                    {
                        item = new ItemStack(Integer.parseInt(id),holzfaellerauftraege.get(auftrag).getMenge());
                    }
                    p.sendMessage("§eHolzmichel");
                    p.sendMessage("§7---------------------------------------");
                    p.sendMessage("§7"+holzfaellerauftraege.get(auftrag).getBeschreibung());
                    p.sendMessage("§7---------------------------------------");
                    p.sendMessage("§7Notwendig: "+holzfaellerauftraege.get(auftrag).getMenge()+" an "+item.getType());
    But since our Server currently is down i can't test it can you tell me if i used the BlockData correct? and if it would work so far?
     
    • Optimistic Optimistic x 1
  2. Code (Java):
    public class Fill
    {
        public static void loadAuftraege()
        {
            ResultSet rs = Main.mysql.query("SELECT * FROM `jobdata`");
            Villagerklick.clearHolzfaeller();
            Villagerklick.clearMiner();
            Villagerklick.clearFischer();
            Villagerklick.clearSchmied();
            try {
                while(rs.next())
                {
                    if(rs.getString("JOBART").equalsIgnoreCase("Holzfäller"))
                    {
                        Villagerklick.fillHolzfaeller(new Auftrag(rs.getString("ID"), rs.getString("AUFTRAGSBESCHREIBUNG"), rs.getString("BLOCKID"), Integer.parseInt(rs.getString("BLOCKMENGE")), Double.parseDouble(rs.getString("LOHN"))));
                    }
                    else if(rs.getString("JOBART").equalsIgnoreCase("SCHMIED"))
                    {
                        Villagerklick.fillSchmied(new Auftrag(rs.getString("ID"), rs.getString("AUFTRAGSBESCHREIBUNG"), rs.getString("BLOCKID"), Integer.parseInt(rs.getString("BLOCKMENGE")), Double.parseDouble(rs.getString("LOHN"))));
                    }
                    else if(rs.getString("JOBART").equalsIgnoreCase("MINER"))
                    {
                        Villagerklick.fillMiner(new Auftrag(rs.getString("ID"), rs.getString("AUFTRAGSBESCHREIBUNG"), rs.getString("BLOCKID"), Integer.parseInt(rs.getString("BLOCKMENGE")), Double.parseDouble(rs.getString("LOHN"))));
                    }
                    else if(rs.getString("JOBART").equalsIgnoreCase("FISCHER"))
                    {
                        Villagerklick.fillFischer(new Auftrag(rs.getString("ID"), rs.getString("AUFTRAGSBESCHREIBUNG"), rs.getString("BLOCKID"), Integer.parseInt(rs.getString("BLOCKMENGE")), Double.parseDouble(rs.getString("LOHN"))));
                    }
                    else
                    {
                        System.out.println("Unbekannte JOBART");
                    }
                }
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    }
     
    Oh and here the Fill class
     
    • Optimistic Optimistic x 1
  3. I just started to read your post and I'll tell you one thing: block id's will be remove in 1.13 so you'll have to recode everything if you want to update
     
    • Agree Agree x 1
  4. in the next time we wont update the server to 1.13
     
    • Funny Funny x 2