Deserialization of ItemStack fails when renamed using anvil.

    • Type: New Feature
    • Resolution: Fixed
    • Priority: Minor
    • None
    • Affects Version/s: None
    • Environment:

      Linux Ubuntu 14.04LTS

      When calling ItemStack.deserialize, a casting exception occurs which breaks deserialization.

      Unable to find source-code formatter for language: text. Available languages are: actionscript, ada, applescript, bash, c, c#, c++, cpp, css, erlang, go, groovy, haskell, html, java, javascript, js, json, lua, none, nyan, objc, perl, php, python, r, rainbow, ruby, scala, sh, sql, swift, visualbasic, xml, yaml
      05.12 22:57:34 [Server] INFO [22:57:34 WARN]: 	at java.lang.Thread.run(Thread.java:745)
      05.12 22:57:34 [Server] INFO [22:57:34 WARN]: 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      05.12 22:57:34 [Server] INFO [22:57:34 WARN]: 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      05.12 22:57:34 [Server] INFO [22:57:34 WARN]: 	at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:53)
      05.12 22:57:34 [Server] INFO [22:57:34 WARN]: 	at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71)
      05.12 22:57:34 [Server] INFO [22:57:34 WARN]: 	at com.lumengaming.giftwrap.service.DataService$$Lambda$16/912274127.run(Unknown Source)
      05.12 22:57:34 [Server] INFO [22:57:34 WARN]: 	at com.lumengaming.giftwrap.service.DataService.lambda$getPackageById$6(DataService.java:37)
      05.12 22:57:34 [Server] INFO [22:57:34 WARN]: 	at com.lumengaming.giftwrap.repository.MySqlDataRepository.getPackageById(MySqlDataRepository.java:131)
      05.12 22:57:34 [Server] INFO [22:57:34 WARN]: 	at com.lumengaming.giftwrap.repository.MySqlDataRepository.readPackages(MySqlDataRepository.java:158)
      05.12 22:57:34 [Server] INFO [22:57:34 WARN]: 	at com.lumengaming.giftwrap.SerializerUtility.fromJson(SerializerUtility.java:88)
      05.12 22:57:34 [Server] INFO [22:57:34 WARN]: 	at com.lumengaming.giftwrap.SerializerUtility.deserialize(SerializerUtility.java:139)
      05.12 22:57:34 [Server] INFO [22:57:34 WARN]: 	at org.bukkit.inventory.ItemStack.deserialize(ItemStack.java:533)
      05.12 22:57:34 [Server] INFO [22:57:34 WARN]: java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.Integer
      05.12 22:57:12 [22:57:12 INFO]: Pangamma ran command Message of the Day
      05.12 22:57:12 [Connect] User [22:57:12 INFO]: Pangamma, IP 127.0.0.1
      05.12 22:57:12 [Server] INFO [22:57:12 INFO]: UUID of player Pangamma is f77b713b-7aa0-3854-8208-1b3550c188ca
      05.12 22:53:28 [Se
      

      The fix is to make sure the amount is being cast to Number, then the .intValue() method is used to get the int value of the amount.

      if (args.containsKey("amount")) {
                  amount = ((Number) args.get("amount")).intValue();
      }
      

            Assignee:
            Unassigned
            Reporter:
            Taylor
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: