Solved getFacing() on dispenser

Discussion in 'Plugin Development' started by reelpersen, Jan 9, 2023.

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

    reelpersen

    Hi, I'm pretty new to java and I would like to understand what is wrong with my code here, because when I try to use it in a server, nothing happens and this error is returned: "org.bukkit.craftbukkit.v1_19_R1.block.impl.CraftDispenser cannot be cast to class org.bukkit.block.Dispenser".

    Yes I know this is not much to go on, but I have isolated it to this code, everything else works seperately.
    I also have
    Code:
    import org.bukkit.block.Dispenser;
    import org.bukkit.material.Directional;
    imported, the reason is that I need to use org.bukkit.block.Dispenser for something else that org.bukkit.material.Dispenser work for.

    The code snippet:
    Code:
                Block b = event.getBlock();
                Dispenser dispenser;
                dispenser = (Dispenser) b.getBlockData();
                Directional dir = (Directional) dispenser;
                BlockFace face = dir.getFacing();
                Block block = b.getRelative(face);
     
  2. Offline

    Jord_Plugins

    T
     
    Last edited: Jan 10, 2023
  3. Online

    timtower Administrator Administrator Moderator

    https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/data/type/Dispenser.html
    Dispenser inherits from BlockData

    @reelpersen Instead of including you can also put the full name down.
    So for Dispenser it could be org.bukkit.block.Dispenser
     
  4. Offline

    reelpersen

    I solved it, debugging showed what classes were returned, and I ended casting them correctly.
    See code. Thanks for putting me on the right path!
    Code:
      Block b = event.getBlock();
      Dispenser dispenser = (Dispenser) b.getState();
      org.bukkit.material.Dispenser dispenserMat = (org.bukkit.material.Dispenser) dispenser.getData();
      Directional dir = (Directional) dispenserMat;
      BlockFace face = dir.getFacing();
      Block block = b.getRelative(face);
     
Thread Status:
Not open for further replies.

Share This Page