Inactive [MECH] SignLift v1.22 - Elevators with signs [1.2.5 R1.0] (Permissions)

Discussion in 'Inactive/Unsupported Plugins' started by freman, Jan 30, 2011.

  1. Offline

    freman

    SignLift - Elevators with signs:
    Version: v1.22

    Based on CraftBook's elevator system, SignLift works very much the same way - with two small improvements:
    1. Before transporting you it checks to make sure that you won't warp into a wall
    2. Prevents accidental block placement on transport
    Create signs on top of each other with [Lift up]/[Lift down]/[Lift] on the second line to use.

    Create signs on top of each other with {Lift up}/{Lift down}/{Lift} on the second line to create a private lift

    Example:
    Create a sign on ground level with the second line set to [Lift Down]
    Dig down under that sign (place a block in the top of the hole)
    Create a sign with the second line set to [Lift Up]

    Right click the sign to use



    Features:
    • Customizable strings
    • Safety checks to prevent into wall "lifting"
    • Brick placement prevention
    • First line can be the floor name
    • Hide signs on the back of blocks and use buttons!
    • Private lifts
    • Permissions
    Download SignLift


    Configuration (config.yml)
    Show Spoiler

    Code:
    string:
        lift: LIFT
            - String users will use when placing lifts that go neither up nore down
     
        down:
            lift: LIFT DOWN
            - String users will use when placing lifts that go down
     
            default: Going Down
            - What is messaged to the user when going down
     
            format: Going to %s
            - Message format for going down to a named floor (%s gets replaced with name)
     
        normal:
            open: '['
            - Open for normal lifts
            close: ']'
            - Close for normal lifts
        private:
            open: '{'
            - Open for private lifts
            close: '}'
            - Close for private lifts
        up:
            lift: LIFT UP
            - String users will use when placing lifts that go up
     
            default: Going Up
            - What is messaged to the user when going up
     
            format: Going to %s
            - Message format for going up to a named floor (%s gets replaced with name)
     
        message:
            destroy:
                denied: You don't have permission to destroy that sign lift
                - Message to display when someone attempts to destroy a lift they don't have permission to
            lift:
                denied: You don't have permission to use this lift
                - Message to display when someone attempts to use a lift they don't have permission to
            create:
                denied: You don't have permission to create that sign lift
                - Message to display when someone attempts to create a lift they don't have permission to
     
    check:
        destination:
            paranoid: true
            - true: Uses original algorithm, gaurenteed not transport you into a block
            - false: Uses new one, may end up being partially in a block (never wholely)
    


    Permissions (PermissionsBukkit)
    Show Spoiler

    Code:
    signlift.*:
    - Gives access to all SignLift privileges
    signlift.create.*:
    - Gives access to all SignLift create privileges
    signlift.create.normal:
    - Permits the creation of a normal sign lifts for anyone to use
    signlift.create.private.own:
    - Permits the creation of private sign lifts with the PRIVATE tag
    signlift.create.private.others:
    - Permits the creation of private sign lifts for other users
    signlift.use.normal:
    - Permits the use of any normal sign lift
    signlift.use.private.own:
    - Permits the use of any private sign lift made for this user
    signlift.use.private.others:
    - Permits the use of other users private lifts
    
    If no permissions manager is installed then the default's are that every player can do everything with exception to signlift.use.private.others which only ops can use.


    Changelog:
    Version 1.22
    • Changed the whitespace checks
    • Fixed the parameters error.
    Version 1.21
    • Added more whitespace checks to pervent crashing on empty signs
    Show Spoiler


    Version 1.2
    • Updated for 1.2.3 R0.2
    • Added a whitespace check to pervent crashing on empty signs
    Version 1.1
    • Fixed block placing bug introduced in 1.0
    Version 1.0
    • Private signs are now done by encapsulating the "LIFT UP", "LIFT DOWN" and "LIFT" in {} instead of []
    • Saves owner to disk
    • Delete your configuration file
    Version 0.9
    • Permissions
    • Basic block protection
    • Might be a good idea to delete your config, it won't break but you'll have old unused values
    Version 0.8
    • Introduction of private lifts
    • Updated deprecated code
    Version 0.7
    • Updated build for latest bukkit - Will not work on older builds.
    • Re-factored the entire codebase, buttons will now respond to left clicks as well as right clicks.
    Version 0.6

    • Updated build for latest bukkit - might work on older builds but not too old...
    • Changed the sign seek code on the button will only look for wall signs on the opposite side of the block directly behind the button.
    Version 0.5

    • Made it so you can hide signs on the back of blocks and use buttons
    Version 0.4

    • Add configuration file
    • Make strings used customizable
    • Make it possible to switch to a less paranoid block detection algorithm
    • Cleaned up accidental block place prevention code.
    Version 0.3

    • Added ladders to the list of safe things
    • Fixed rounding issues
    Version 0.2

    • Bug fixes...
    Version 0.1

    • Releasing my awesome plugin




    Support:
    Alcohol makes coding in Java more fun, Caffeine makes it possible to do after a day of coding in other languages at work - both of these habits are expensive - Want to help me feed my addictions and make more, better plugins faster? Consider hitting the button below.
    [​IMG]
     
  2. Offline

    jungalist81

    thats what happens when your server depends on certain plugins. I have around 40 plugins

    Come join my server and check it out, Superzilla. 184.95.41.234
     
  3. Offline

    Superzilla

    Thanks for the help, its working, I think it was just a rare bug.
     
  4. Offline

    freman

    This is one of the reasons I'm sticking to creating tiny plugins with minimal feature sets - it's easier to do without one small plugin than it is to do without a plugin you use 20-30 functions from.

    Edit: Might add, missing craftbook/falsebook when bukkit first came out was exactly the reason I made this plugin :D
     
  5. Offline

    Superzilla

    Suggestion - Can you make the plugin so that if you have a block in your hand and you click the sign, that it removes the block that is placed and returns it to your inventory?
     
  6. Offline

    freman

    It used to do that, something in the most recent bukkit updates changed that... so yes I have to look into it
     
  7. Offline

    Superzilla

    Thanks!
     
  8. Offline

    Darkfyre

    I am having issues with this plugin. I am using the latest version of PEX, and Bukkit 1185. When I place a sign with [LIFT UP] in the second line, the sign pops off and I get the "You do not have permission to place this sign" message. I am an op with full permissions. Any ideas?
     
  9. Offline

    Superzilla

    The problem is that PEX is not supported with this plugin.
     
  10. Offline

    EruIluvatar

    Does the signlift does not work if its too far appart?
     
  11. Offline

    freman

    Signlift should work over any distance, check your x & z co-ordinates make sure they're on top of each other and you have sufficient room
     
  12. Offline

    serdious

    15:50:09 [INFO] This server is running Craftbukkit version git-Bukkit-0.0.0-1067-g6301507-b1185jnks (MC: 1.8.1)
    15:50:09 [GRAVE] Could not load 'plugins/SignLift.jar' in folder 'plugins':
    while parsing a block mapping
    in "<reader>", line 6, column 9:
    lift: LIFT DOWN
    ^
    expected <block end>, but found BlockEntry
    in "<reader>", line 7, column 9:
    - String users will use when pla ...
    ^

    at org.yaml.snakeyaml.parser.ParserImpl$ParseBlockMappingKey.produce(ParserImpl.java:576)
    at org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:163)
    at org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:148)
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:228)
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230)
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
    at org.yaml.snakeyaml.composer.Composer.composeMappingNode(Composer.java:230)
    at org.yaml.snakeyaml.composer.Composer.composeNode(Composer.java:160)
    at org.yaml.snakeyaml.composer.Composer.composeDocument(Composer.java:122)
    at org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:105)
    at org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:124)
    at org.yaml.snakeyaml.Yaml.load(Yaml.java:264)
    at org.bukkit.util.config.Configuration.load(Configuration.java:82)
    at org.bukkit.plugin.java.JavaPlugin.initialize(JavaPlugin.java:157)
    at org.bukkit.plugin.java.JavaPluginLoader.loadPlugin(JavaPluginLoader.java:175)
    at org.bukkit.plugin.SimplePluginManager.loadPlugin(SimplePluginManager.java:213)
    at org.bukkit.plugin.SimplePluginManager.loadPlugins(SimplePluginManager.java:136)
    at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:138)
    at org.bukkit.craftbukkit.CraftServer.<init>(CraftServer.java:103)
    at net.minecraft.server.ServerConfigurationManager.<init>(ServerConfigurationManager.java:52)
    at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:136)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:348)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    15:50:09 [INFO] Preparing level "New World"
    15:50:09 [INFO] Default game type: 0
    15:50:09 [INFO] Preparing start region for level 0 (Seed: -6632439189521706674)
    15:50:10 [INFO] Preparing start region for level 1 (Seed: 7938929433647422799)
    15:50:10 [INFO] Preparing spawn area: 81%
    15:50:10 [AVISO] Server permissions file permissions.yml is not valid YAML.
    java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Map
    at org.bukkit.craftbukkit.CraftServer.loadCustomPermissions(CraftServer.java:430)
    at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:162)
    at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:297)
    at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:284)
    at net.minecraft.server.MinecraftServer.init(MinecraftServer.java:152)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:348)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    what it is?
     
  13. Offline

    animalkid5679

    Hi, i type on the sign:
    [Lift Up]
    [Lift]
    and i also type for the the other sign:
    [Lift Down]
    [Lift]
    but nothing happens
    what do i do?
     
  14. Offline

    freman

    Looks like you have an issue in your configuration, please run it through a yaml validator

    Doesn't sound like you're doing it right, please see the tutorial video

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

    animalkid5679

    It's working now, thanks.
    Awesome Plugin by the way
     
  16. Offline

    Spadow

    can you add a new feature like
    there are lift1 lift2 lift3 for some etages on a hotel.
    if u go lift2 u are in etage 2. lift 1 = etage 1.
    so i can sell apartments to people and give them individuell lifts.
     
  17. Offline

    Buckethead

    heres my perms. my admins and mods cant use others private. even with .*

    Code:
    groups:
        Guest:
            default: true
            permissions:
            - essentials.rules
            - essentials.help
            - essentials.helpop
            - essentials.spawn
            - essentials.list
            - essentials.mail
            - essentials.mail.send
            - essentials.mail.clear
            - heroicrebuke.list
            - essentials.helpop.recieve
            - essentials.ban.notify
            - essentials.kick.notify
            - lytreehelper.db.blockaccess
            - IPGet.self
            - modifyworld.chat
            - modifyworld.sneak
            - modifyworld.sprint
            - chaircraft.sit
            options: null
            prefix: '&5Guest&f>'
        Citizen:
            default: false
            inheritance:
            - Guest
            permissions:
            - nocheat.admin.chatlog
            - deadbolt.broadcast.*
            - deadbolt.command.*
            - essentials.portal
            - essentials.tell
            - essentials.help
            - essentials.helpop
            - essentials.spawn
            - essentials.afk
            - essentials.back
            - essentials.back.ondeath
            - essentials.clearinventory
            - essentials.compass
            - essentials.depth
            - essentials.getpos
            - essentials.geoip.show
            - essentials.sethome
            - essentials.home
            - essentials.info
            - essentials.kit
            - essentials.kit.list
            - essentials.kit.Building_starter
            - essentials.kit.Armor_starter
            - essentials.list
            - essentials.mail
            - essentials.mail.send
            - essentials.mail.clear
            - essentials.me
            - essentials.motd
            - essentials.msg
            - essentials.protect
            - essentials.protect.alerts
            - essentials.protect.damage.drowning
            - essentials.protect.damage.creeper
            - essentials.protect.damage.fall
            - essentials.protect.damage.lightning
            - essentials.protect.damage.projectiles
            - essentials.protect.damage.suffocation
            - essentials.protect.damage.fire
            - essentials.protect.damage.fireball
            - essentials.protect.entitytarget.bypass
            - essentials.protect.ownerinfo
            - essentials.r
            - essentials.setxmpp
            - essentials.signs.create.protection
            - essentials.signs.create.trade
            - essentials.signs.break.protection
            - essentials.signs.break.trade
            - essentials.signs.use.balance
            - essentials.signs.use.buy
            - essentials.signs.use.disposal
            - essentials.signs.use.free
            - essentials.signs.use.heal
            - essentials.signs.use.mail
            - essentials.signs.use.protection
            - essentials.signs.use.time
            - essentials.signs.use.trade
            - essentials.signs.use.weather
            - essentials.signs.use.warp
            - essentials.suicide
            - essentials.tpa
            - essentials.tpaccept
            - essentials.tpahere
            - essentials.tpdeny
            - essentials.warp
            - essentials.warp.list
            - essentials.warp.*
            - essentials.xmpp
            - essentials.helpop.recieve
            - essentials.ban.notify
            - essentials.kick.notify
            - essentials.portal
            - essentials.time
            - BedHeal.Advanced.Use
            - mobarena.use.spectate
            - mobarena.use.*
            - mobarena.classes.*
            - mobarena.arenas.*
            - heroicrebuke.list
            - lytreehelper.destroyall
            - lytreehelper.db.forestlist
            - signlift.use.normal
            - signlift.use.private.own
            - signlift.create.private.own
            - dreamland.goto
            - dreamland.fly
            - NightClub.go
            - nomovedtooquicklykick.exempt
            - nSpleef.member.creategame
            - nSpleef.member.deletegame
            - nSpleef.member.join
            - nSpleef.member.leave
            - nSpleef.member.list
            - deadbolt.user.*
            - deadbolt.user.create.*
            - modifyworld.usebeds
            - modifyworld.chat.private
            - modifyworld.bucket.empty.*
            - modifyworld.bucket.fill.*
            - modifyworld.blocks.destroy.*
            - modifyworld.blocks.place.*
            - modifyworld.blocks.interact.*
            - modifyworld.items.pickup.*
            - modifyworld.items.drop.*
            - modifyworld.items.have.*
            - modifyworld.damage.deal.*
            - modifyworld.damage.take.*
            - modifyworld.mobtarget.*
            - modifyworld.interact.*
            - modifyworld.tame.animal.wolf
            - modifyworld.tame.wolf
            - modifyworld.vehicle.destroy
            - modifyworld.vehicle.enter
            - modifyworld.vehicle.collide
            - spouttrade.trade
            - ashtheking.tent.create
            - cm.init
            - cm.upload.mp3
            - cm.upload.midi
            - cm.radio.list.player
            - cm.song.list.player
            - cm.box.list.player
            - cm.song.play.global
            - cm.song.stop.global
            - bog.*
            - boi.*
            - bof.*
            - bol.*
            - arg.user
            - arg.claim
            - mcvote.vote
            options: null
            prefix: '&cCitizen&f>'
        Developer:
            default: false
            inheritance:
            - Citizen
            permissions:
            - essentials.gc
            options: null
            prefix: '&cDeveloper&f>'
        Architect:
            default: false
            inheritance:
            - Citizen
            permissions:
            - essentials.heal
            - essentials.item
            - essentials.itemspawn.item-all
            - superpickaxe.use
            - essentials.repair
            options: null
            prefix: '&cArchitect&f>'
        Engineer:
            default: false
            inheritance:
            - Architect
            permissions:
            - worldedit.*
            - essentials.god
            - essentials.tp
            - essentials.tphere
            - lazyroad.build
            - arg.saveload
            - essentials.warp.otherplayers
            options: null
            prefix: '&cEngineer&f>'
        Moderator:
            default: false
            inheritance:
            - Engineer
            permissions:
            - essentials.tp
            - essentials.god.others
            - heroicrebuke.add
            - heroicrebuke.clear
            - heroicrebuke.active
            - heroicrebuke.info
            - heroicrebuke.list
            - heroicrebuke.list.others
            - SimpleJail.jail
            - SimpleJail.unjail
            - SimpleJail.jailtime
            - essentials.home.other
            - essentials.kick
            - essentials.ban
            - essentials.banip
            - essentials.broadcast
            - essentials.burn
            - essentials.ext
            - essentials.ext.others
            - essentials.invsee
            - essentials.heal.others
            - essentials.clearinventory.others
            - essentials.socialspy
            - essentials.unban
            - essentials.unbanip
            - essentials.weather
            - essentials.time.set
            - essentials.powertool
            - essentials.lightning
            - srpex.setrank.citizen
            - signlift.use.private.others
            - signlift.create.private.others
            - signlift.create.normal
            - superpickaxe.breakBedrock
            - IPGet.other
            - icegeoip.geoip
            - deadbolt.admin.snoop
            - deadbolt.admin.signs
            - deadbolt.admin.bypass
            - deadbolt.admin.break
            - deadbolt.admin.create
            - adminscanfly.allow
            - spoutninja.use
            - nocheat.checks.moving.flying
            - nocheat.checks.moving.runfly
            - nocheat.checks.moving.swimming
            - nocheat.checks.moving.sneaking
            - nocheat.checks.moving.nofall
            - ashtheking.tent.size
            - cm.area.delete.player
            - cm.box.delete.player
            - cm.radio.delete.player
            - cm.upload.webradio
            - cm.area.define
            - cm.area.set
            - cm.area.set.overlap
            - cm.area.list.player
            - cm.box.set
            - cm.box.set.overlap
            - cm.box.list.player
            - arg.bypass
            - arg.player
            - permissions.manage.reload
            options: null
            prefix: '&cModerator&f>'
        Admin:
            default: false
            inheritance:
            - Moderator
            permissions:
            - SimpleJail.setjail
            - heroicrebuke.*
            - essentials.*
            - backup.canbackup
            - mobarena.admin.*
            - mobarena.setup.*
            - LockIP.admin
            - srpex.setrank.devloper
            - srpex.setrank.architect
            - srpex.setrank.moderator
            - srpex.setrank.engineer
            - srpex.reload
            - lytreehelper.generate.trees
            - lytreehelper.generate.forests
            - lytreehelper.generate.nursery
            - lytreehelper.db.registerforest
            - lytreehelper.db.deleteforest
            - lytreehelper.db.regenerateforest
            - signlift.*
            - craftbukkituptodate.broadcast
            - craftbukkituptodate.changelog
            - NightClub.build
            - superpickaxe.*
            - nSpleef.admin.define
            - nSpleef.admin.deleteanygame
            - nSpleef.admin.deletearena
            - nSpleef.admin.forceready
            - nSpleef.admin.forcejoin
            - nSpleef.admin.forceleave
            - geoiptools.geoupdate
            - deadbolt.command.reload
            - nocheat.admin.*
            - lazyroad.build
            - mcvote.cast
            options: null
            prefix: '&cAdmin&f>'
        Owner:
            default: false
            inheritance:
            - Admin
            permissions:
            - srpex.*
            - craftbukkituptodate.download
            - craftbukkituptodate.plugin
            - craftbukkituptodate.update
            - citizens.*
            options: null
            prefix: '&cOwner&f>'
        Jailed:
            default: false
            permissions:
            - essentials.rules
            - essentials.help
            - essentials.helpop
            - BedHeal.Advanced.Use
            - heroicrebuke.list
            - essentials.list
            - essentials.mail
            - essentials.mail.send
            - essentials.mail.clear
            - IPGet.self
            - modifyworld.chat
            - modifyworld.sneak
            - modifyworld.sprint
            - chaircraft.sit
            - modifyworld.usebeds
            - modifyworld.items.have.*
            options: null
            prefix: '&4Jailed&f>'
     
  18. Offline

    Yoogoo

    This plugins are very useful:)
    Good JOB!
     
  19. Offline

    Zathras

    Any idea why I get these "out of range" errors from SignLift?

    Code:
    01:19:40 [INFO] This server is running Craftbukkit version git-Bukkit-0.0.0-1131-g86b7fa8-b1337jnks (MC: 1.8.1)
    ...
    01:19:42 [INFO] Spout 510 has been initialized
    ...
    01:19:47 [INFO] [SignLift] Version 1.0 - Copyright 2011 - Shannon Wynter (http://fremnet.net) is enabled
    ...
    02:16:37 [SEVERE] Could not pass event PLAYER_INTERACT to SignLift
    java.lang.StringIndexOutOfBoundsException: String index out of range: -2
        at java.lang.String.substring(String.java:1937)
        at au.net.fremnet.bukkit.SignLift.LiftSign.findSign(LiftSign.java:338)
        at au.net.fremnet.bukkit.SignLift.LiftSign.activate(LiftSign.java:234)
        at au.net.fremnet.bukkit.SignLift.SignLiftPlayerListener.onPlayerInteract(SignLiftPlayerListener.java:65)
        at org.bukkit.plugin.java.JavaPluginLoader$11.execute(JavaPluginLoader.java:330)
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:58)
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:339)
        at org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:171)
        at net.minecraft.server.ItemInWorldManager.interact(ItemInWorldManager.java:265)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:592)
        at net.minecraft.server.Packet15Place.a(SourceFile:57)
        at net.minecraft.server.NetworkManager.b(NetworkManager.java:226)
        at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:92)
        at org.getspout.spout.SpoutNetServerHandler.a(SpoutNetServerHandler.java:501)
        at net.minecraft.server.NetworkListenThread.a(SourceFile:108)
        at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:471)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)
    
     
  20. Offline

    bjoen

    Love your work!
     
  21. Offline

    dockozel

    Hi there, awesome plugin. I'm using CB 1550, superperms, running a server from MCmyAdmin. Seems that only ops can create lifts, even though default group has 'signlift.create.normal' and 'signlift.use.normal' Are there any known issues regarding this plugin not working with dev builds? Or why normal players can't create the signs?
     
  22. Offline

    Kaosvf

    wow, nice
     
  23. Offline

    LOLXDDUDE

    The Lift is very non sensitive and I have to click the sign in certain places and for several times, Is this a bug?
     
  24. Offline

    rareshutzu

    Please update to 1.0. I mean fix update :D
     
  25. Offline

    Kylefraser

    Does this plugin work for 1.0.0?
     
  26. Offline

    Bevilacqua

    when i click on it with a block the block stays but i have been on other servers where that didnt happen... how to fix?
     
  27. Offline

    freman

    It's actually very sensitive to what's around the destination sign, you can turn off paranoid mode and it'll be more likely to teleport you but you risk being damaged or suck in walls

    I suggest you simply make the area around your sign lifts 3x3 so there's plenty of room to safely warp to

    Use this version - http://dl.dropbox.com/u/46756/Bukkit/SignLift/SignLift.jar - I just updated it to fix a bug
     
  28. Offline

    Semanari2

    This plugin is one small insignificant extract from Craftbook.
     
  29. I know im a noob...can somebody use pastebin with the correct format config file plz...jar file is not auto making one..thanks
     
  30. Offline

    freman

    Actually it pre-dates all the features of Craftbook on bukket - there was no craftbook or falsebook on bukket when I wrote it but if you carefully read the OP you can see where I admit that it is based on Craftbook (for hmod) only this plugin is lighter than installing the entirety of craftbook for one feature, this is the ONE feature I wanted from craftbook.

    Given that this plugin has garnered donations from it's users I'd suggest that your opinion may not be shared.

    I don't write plugins *you* find useful, I write the plugins I want to use and then I release them to the community for so that they may use them if they wish - if you don't wish there's a whole forum of plugins that aren't mine to go play with.

    I will satisfy myself with the knowledge that you are a small insignificant extract of a troll.

    That's strange, it should be generating one in the SignLift directory

    This should work for you - http://pastebin.com/EMUuRUW8
     
  31. Thank sir:)
     

Share This Page