Infinite dispensers?

Discussion in 'Archived: Plugin Requests' started by iPodHacks142, Dec 22, 2012.

  1. Offline

    iPodHacks142

    I need a plugin that makes a dispenser infinite so i can put fireworks in them for new years. Can someone do this?
     
  2. Offline

    aciid

    I'll take a look
     
  3. Offline

    gomeow

  4. Offline

    DJSanderrr

    But is that compatible 1.4.6 and/or Firework?
     
  5. Offline

    gomeow

    It said on the page that the 1.3.x version was compatible with 1.4.x. It should work with any item, why don't you try it out?
     
  6. Offline

    DJSanderrr

    i just try'd it out and it wasn't working, and the strange part is that it was not working at all,
    Also not with normal stuff, maybe if i update my craftbukkit(Currently i have 1.4.6-Dev)
    Soo. yeah, hope it fix

    Ps. Sorry for my bad english, i am dutch ;p
     
  7. Offline

    gomeow

    Oh, it may not work with the new dev version as a lot of things were changed. You might try contacting him to update it
     
  8. Offline

    DJSanderrr

    okay i update to the newest dev or the Beta?
     
  9. Offline

    gomeow

    the RB. 1.4.5-1.0
     
  10. Offline

    DJSanderrr

  11. Offline

    aciid

    http://dev.bukkit.org/server-mods/dispenserrefill/files/4-dispenser-refill-1-1-0-snapshot-alpha-1/

    Also I just whipeed up a quick plugin that fills the dispenser if you left click it whilst holding fireworks, you might find it useful ;)
    Sneak + left click + easyfill.unlimited permission = infinite stack

    Link: http://ballzofsteel.com/EasyFill.jar
    Permission: easyfill.fill

    Source:
    Code:
    package com.ballzofsteel.EasyFill;
     
    import org.bukkit.GameMode;
    import org.bukkit.Material;
    import org.bukkit.block.Dispenser;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class EasyFill extends JavaPlugin implements Listener {
        public void onEnable() {
            this.getServer().getPluginManager().registerEvents(this, this);
        }
     
        @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
        public void onDispenserClick(PlayerInteractEvent event) {
            Player player = event.getPlayer();
            if (event.getAction().equals(Action.LEFT_CLICK_BLOCK)
                    && event.getClickedBlock().getType().equals(Material.DISPENSER)
                    && event.getItem().getType().equals(Material.FIREWORK)
                    && player.hasPermission("easyfill.fill")) {
                ItemStack fireworks = event.getItem();
                fireworks.setAmount(64);
                Inventory inventory = ((Dispenser)event.getClickedBlock().getState()).getInventory();
                inventory.clear();
                for (ItemStack item : inventory) {
                    inventory.addItem(fireworks);;
                }
                if (player.getGameMode().equals(GameMode.CREATIVE)) {
                    event.setCancelled(true);
                }
                player.sendMessage("§2Filled dispenser with fireworks in hand!");
            }
        }
     
    }
     
    
    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 30, 2016
  12. Offline

    zeustehalmighty

    I get an error when I left click the dispenser with my hand or another item :)
     
  13. Offline

    gomeow

    Post the error?
     
    AndyMcB1 likes this.
  14. Offline

    zeustehalmighty

    Here ya go :p

    Code:
    2012-12-22 23:28:45 [SEVERE] Could not pass event PlayerInteractEvent to EasyFill v0.1
    org.bukkit.event.EventException
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:477)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:462)
        at org.bukkit.craftbukkit.v1_4_6.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:178)
        at net.minecraft.server.v1_4_6.PlayerInteractManager.dig(PlayerInteractManager.java:114)
        at net.minecraft.server.v1_4_6.PlayerConnection.a(PlayerConnection.java:564)
        at net.minecraft.server.v1_4_6.Packet14BlockDig.handle(SourceFile:46)
        at net.minecraft.server.v1_4_6.NetworkManager.b(NetworkManager.java:290)
        at net.minecraft.server.v1_4_6.PlayerConnection.d(PlayerConnection.java:112)
        at net.minecraft.server.v1_4_6.ServerConnection.b(SourceFile:39)
        at net.minecraft.server.v1_4_6.DedicatedServerConnection.b(SourceFile:30)
        at net.minecraft.server.v1_4_6.MinecraftServer.r(MinecraftServer.java:598)
        at net.minecraft.server.v1_4_6.DedicatedServer.r(DedicatedServer.java:224)
        at net.minecraft.server.v1_4_6.MinecraftServer.q(MinecraftServer.java:494)
        at net.minecraft.server.v1_4_6.MinecraftServer.run(MinecraftServer.java:427)
        at net.minecraft.server.v1_4_6.ThreadServerApplication.run(SourceFile:849)
    Caused by: java.lang.NullPointerException
        at com.ballzofsteel.EasyFill.EasyFill.onDispenserClick(EasyFill.java:30)
        at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
        ... 16 more
     
  15. Offline

    aciid

    The plugin is for 1.4.6 m8
     
  16. Offline

    zeustehalmighty

    I know. I'm using 1.4.6 #2547 :confused: Don't you see the .v1_4_6.?
     
  17. Offline

    aciid

    Redownload: http://ballzofsteel.com/EasyFill.jar

    Source:
    Code:
    package com.ballzofsteel.EasyFill;
    
    import org.bukkit.GameMode;
    import org.bukkit.Material;
    import org.bukkit.block.Dispenser;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.java.JavaPlugin;
    
    public class EasyFill extends JavaPlugin implements Listener {
        public void onEnable() {
            this.getServer().getPluginManager().registerEvents(this, this);
        }
    
        @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
        public void onDispenserClick(PlayerInteractEvent event) {
            Player player = event.getPlayer();
            if (event.getAction().equals(Action.LEFT_CLICK_BLOCK) 
                    && event.getClickedBlock().getType().equals(Material.DISPENSER) 
                    && event.getItem().getType().equals(Material.FIREWORK) 
                    && player.hasPermission("easyfill.fill")) {
                ItemStack fireworks = event.getItem();
                fireworks.setAmount(64);
                Inventory inventory;
                if ((inventory = ((Dispenser)event.getClickedBlock().getState()).getInventory()) != null) {
                    inventory.clear();
                    for (ItemStack item : inventory) {
                        inventory.addItem(fireworks);
                    }
                    if (player.getGameMode().equals(GameMode.CREATIVE)) {
                        event.setCancelled(true);
                    }
                    player.sendMessage("§2Filled dispenser with fireworks in hand!");
                }
            }
        }
    
    }
    
    
     
  18. Offline

    MikeA

    aciid your latest one works well :)
     
  19. Thank you so much! Currently this is the only way of duplicating fireworks that I know of :)
    Could you make a more advanced plugin on fireworks, the same way of filling for chests and the same thing for firework stars, that would be awsome!
     
  20. Offline

    DJSanderrr

    Thanks ! I will test it out, but i you in creative and left click...
    What will happend then?!
     
  21. Offline

    aciid

    nothing..
    Code:
                    if (player.getGameMode().equals(GameMode.CREATIVE)) {
                        event.setCancelled(true);
                    }
    
     
  22. That's funny, because for me it actually works in gm as well. The dispenser disappears for a split second and then reappears with the usual plugin messsage.

    In term of features, I forgot to mention my most important thought, you could make dispensers infinite.

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 30, 2016
  23. Offline

    DJSanderrr

    How about:
    fireworks.setAmount(64);

    Would that work?

    IT WORKS FOR ME!!!
    Infinite:

    Code:
    package me.DJsZ.AutoFirework;
     
    import org.bukkit.GameMode;
    import org.bukkit.Material;
    import org.bukkit.block.Dispenser;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class AutoFirework extends JavaPlugin implements Listener {
        public void onEnable() {
            this.getServer().getPluginManager().registerEvents(this, this);
        }
     
        @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
        public void onDispenserClick(PlayerInteractEvent event) {
            Player player = event.getPlayer();
            if (event.getAction().equals(Action.LEFT_CLICK_BLOCK)
                    && event.getClickedBlock().getType().equals(Material.DISPENSER)
                    && event.getItem().getType().equals(Material.FIREWORK)
                    && player.hasPermission("easyfill.fill")) {
                ItemStack fireworks = event.getItem();
                fireworks.setAmount(-1);
                Inventory inventory;
                if ((inventory = ((Dispenser)event.getClickedBlock().getState()).getInventory()) != null) {
                    inventory.clear();
                    for (ItemStack item : inventory) {
                        inventory.addItem(fireworks);
                    }
                    if (player.getGameMode().equals(GameMode.CREATIVE)) {
                        event.setCancelled(true);
                    }
                    player.sendMessage("§2Filled dispenser with fireworks in hand!");
                }
            }
        }
     
    }
    If someone RePost this on a forum, give CREDITS to : @accid

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 30, 2016
  24. Offline

    aciid

    Nice idea, updated, redownload: http://ballzofsteel.com/EasyFill.jar

    Sneaking whilst clicking will create infinite stacks if player has easyfill.infinite permission
    Code:
    package com.ballzofsteel.EasyFill;
     
    import org.bukkit.GameMode;
    import org.bukkit.Material;
    import org.bukkit.block.Dispenser;
    import org.bukkit.entity.Player;
    import org.bukkit.event.EventHandler;
    import org.bukkit.event.EventPriority;
    import org.bukkit.event.Listener;
    import org.bukkit.event.block.Action;
    import org.bukkit.event.player.PlayerInteractEvent;
    import org.bukkit.inventory.Inventory;
    import org.bukkit.inventory.ItemStack;
    import org.bukkit.plugin.java.JavaPlugin;
     
    public class EasyFill extends JavaPlugin implements Listener {
        public void onEnable() {
            this.getServer().getPluginManager().registerEvents(this, this);
        }
     
        @EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = false)
        public void onDispenserClick(PlayerInteractEvent event) {
            Player player = event.getPlayer();
            if (event.getAction().equals(Action.LEFT_CLICK_BLOCK)
                    && event.getClickedBlock().getType().equals(Material.DISPENSER)
                    && event.getItem().getType().equals(Material.FIREWORK)
                    && player.hasPermission("easyfill.fill")) {
                ItemStack fireworks = event.getItem();
                if (player.isSneaking() && player.hasPermission("easyfill.infinite")) {
                    fireworks.setAmount(-1);
                } else {
                    fireworks.setAmount(64);
                }
                Inventory inventory;
                if ((inventory = ((Dispenser)event.getClickedBlock().getState()).getInventory()) != null) {
                    inventory.clear();
                    for (ItemStack item : inventory) {
                        inventory.addItem(fireworks);
                    }
                    if (player.getGameMode().equals(GameMode.CREATIVE)) {
                        event.setCancelled(true);
                    }
                    player.sendMessage("§2Filled dispenser with fireworks in hand!");
                }
            }
        }
     
    }
    
     

Share This Page