Inactive [MECH] FishPeople v1.7.1 - Gold Helmet = Infinite Air While Swimming [1.2.3-R0.2]

Discussion in 'Inactive/Unsupported Plugins' started by Richard Robertson, Mar 4, 2011.

  1. FishPeople - Infinite air underwater:
    Version: v1.7.1

    This plugin is for servers that focus more on creative rather than survival. It makes building underwater infinitely safer because you no longer drown. The only downside is that people who are underwater can no longer speak. Instead there is a comical [glub glub glub] accompanying any underwater chat messages.

    Features:
    • Infinite air while wearing gold helmet (or configured item)
    • Garbled underwater chat (if configured)
    • Permissions support!
    • Now swim in lava! (if configured)
    • Supports item names as well as ID numbers
    Download http://dl.dropbox.com/u/22618541/Bukkit/FishPeople.jar
    Also available here http://dev.bukkit.org/server-mods/fishpeople/files/3-v1-7-1/

    Configuration:
    File located at /plugins/FishPeople/config.yml
    This file will be created if it does not exist and will contain these default settings.
    These default settings will also be used if a value is not set.

    Permissions
    • fishpeople.infiniteair
      Gives the player infinite air while wearing the helmet (overrides extended air)
    • fishpeople.extendedair
      Gives the player more air while wearing the helmet
    • fishpeople.cantalkunderwater
      Lets the player talk underwater and bypass the filter
    • fishpeople.invinciblehelmet
      Prevents the player's helmet from taking damage if damage is configured
    • fishpeople.lavasafe
      Allows the player to swim in lava (no burning damage)
    • fishpeople.config
      Allows the player to call /fishpeople
    • fishpeople.*
      Emulates having infinite air, invincible helmet, lava safe, config, and chat filter bypass

    Commands:
    • /fishpeople help
      Lists all commands available
    • /fishpeople help <command>
      Gives help on the command given
    • /fishpeople reload
      Reloads the configuration from the hard disk
    • /fishpeople enable
      Enables the infinite air and chat filter
    • /fishpeople disable
      Disables the infinite air and chat filter
    • /fishpeople helmet-type <id>
      Sets the item id for the head item that gives infinite air
    • /fishpeople chat-filter true
      Replaces chat messages when players are underwater
    • /fishpeople chat-filter false
      Allows users to talk normally underwater
    • /fishpeople underwater-chat <message>
      Sets the message that appears when someone talks underwater
    • /fishpeople air-multiplier <number>
      Extends the amount of air players have
      "/fishpeople air-multiplier 2.5" would mean they have two and a half times as much air
    • /fishpeople helmet-damage <amount>
      Every second a player is underwater and wearing the special helmet it will take the damage specified
    • /fishpeople helmet-replacement <id>
      Sets the item id for the head item that will be set when a helmet is destroyed
    • /fishpeople low-air-warning <seconds>
      When a player has only <seconds> left of air, they get a warning
      Set negative to not give a warning
    • /fishpeople low-air-message <message>
      Sets the message to be displayed when a person hits the low-air-warning mark

    Changelog:
    Version 1.7.1
    • Fixed null pointer exception occurring on Minecraft 1.2 and higher
    Version 1.7
    • Removed defunct Permissions 3 support
    • Fixed helmet damage
    • Updated to match Bukkit's new event handling system.
    Version 1.6
    • Compiled for Permissions 3 support
    Version 1.5
    • Bug fixes: falling damage while in lava, and race condition when loading Permissions plugin
    Version 1.4
    • Bug fix: replaced player.getLocation() with player.getEyeLocation() so effects only happen when the player's head is underwater
    Version 1.3
    • Changed event registration to match Craftbukkit 600+
    Version 1.2
    • Permissions support
    • Can have extended air instead of only infinite air
    • Can configure a message to appear warning those with extended air that they will drown soon (since the client bubbles are wrong)
    • Can configure helmet to take damage while being worn
    • Can replace the helmet when something else when it is "destroyed" from being used. You could use this to say, turn your gold helmet to a leather helmet when the magic runs out
    • Added the ability to swim in lava
    • Fixed problem where some servers would not restore air
    Version 1.1
    • Helmet type configurable
    • Underwater chat message configurable
    • Underwater chat message disable-able
    • Can limit to ops only
    • Can adjust all options at runtime
    Version 1.0
    • Initial release

    Known issues:
    • Client side remaining air bubbles still disappear; I cannot do anything about this.
    [​IMG]
     
  2. Updated to Craftbukkit 602.
     
  3. Offline

    ioScream

    I understand what you are saying. However, I believe that allowing the fishpeople.infiniteair/extendedair should only give those groups ACCESS to the features.. not turn them on.. just give them ability to benefit from the features if they happen to be on in the config or toggled in-game. You understand what I'm getting at?
     
  4. Offline

    mechaaries

    just thought id let you know that it works flawlessly in bukkit 612/minecraft 1.4.
     
  5. Yeah. I know what you mean.
     
  6. Offline

    sdeddy

    Awesome Plugin!!

    just found this plugin and I haven't read many previous posts.. so I'm not sure if this has already been suggested:
    can you make it so that swimming in lava takes something more? like a full suit of diamond?[Armor+Helmet+Boots+Pants]
    it would make it so that swimming in lava is available, but more costly than breathing underwater.

    Keep up the good work!!!
     
  7. Offline

    Raspberry

    broken in 621...
    Code:
    23:20:18 [INFO] [FishPeople]  version 1.2 is enabled!
    23:20:18 [SEVERE] ENTITY_DAMAGED loading FishPeople v1.2 (Is it up to date?)
    java.lang.NoSuchFieldError: ENTITY_DAMAGED
            at net.rarobertson.fishpeople.FishPeople.onEnable(FishPeople.java:529)
            at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:127)
            at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:514)
            at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:216)
            at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:115)
            at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:93)
            at org.bukkit.craftbukkit.CraftServer.reload(CraftServer.java:285)
            at org.bukkit.command.SimpleCommandMap$ReloadCommand.execute(SimpleCommandMap.java:196)
            at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:80)
            at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:246)
            at net.minecraft.server.MinecraftServer.b(MinecraftServer.java:391)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:377)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:283)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:375)
    
     
  8. Offline

    ioScream

    Any chance of having this behavior change?
     
  9. Offline

    khamseen_air

    @Richard Robertson
    Just to let you know this is tried and tested on 617 and working with no glitches. :)
     
  10. Not only is that not a recommended build, but you're using an old version of this. Redownload FishPeople and that error will go away.

    To both, how can you do that without increasing the complexity of the config file significantly? If either of you come up with a decent way to allow both the current operation and the new suggested operation, I'll look more in to it.

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

    ioScream

    I'm probably asking a lot, but here's my suggestion.

    Currently the plugin uses the configuration only for which helmet to use, duration, etc.. though it ignores if infinte-air is toggled or not if the user has access to that specific node (fishpeople.infiniteair). If you changed that behavior so that configuration controls the plugin, and then based on if the user has access to fishpeople.infiniteair then that user can toggle it on or off, but it would be set to whatever the configuration file says first. Also, if the configuration file has infinite-air on, then all users with access to a more global node, like fishpeople.base, will be able to use all features of the plugin as it is set in the configuration files, but not able to change anything.

    A working example with configuration file:
    Code:
    enabled: true
    op-only: false
    helmet-type: "gold_helmet"
    chat-filter: true
    underwater-chat: "[glub glub glub]"
    infinite-air: false
    air-multiplier: 2
    helmet-damage: 1
    helmet-replacement: "air"
    lava-safe: false
    low-air-warning: 1
    low-air-message: "You are about to drown"
    The plugin would set the helmet to gold, no infinite-air, so the air-multiplier is used (2 in this case), and damage is 1 (per second? or per second after air is out?). Any users with fishpeople.base follow those rules. If infinite air was set to true then users with fishpeople.base would also be allowed infinite air. However, users with access to fishpeople.infinite air wouldn't have infinite air UNLESS they toggled it on with something like /fishpeople infair (which would only apply to that user) or whatever doesn't conflict with the commands you have for fishpeople.config.

    Ya dig? :)
     
  12. To clarify, the helmet-damage is applied every second the helmet's effect takes place. So basically the entire time you are underwater while wearing the special helmet.

    I don't like the idea of adding another command. Having the config file be the base for everything kinda makes sense. So if infinite-air were false, then absolutely no one has infinite air. Would changing the check order suffice?
     
  13. Offline

    ioScream

    Sure, that would probably take care of it on one hand. Wouldn't that make fishpeople.infiniteair obsolete? The same problem will exist with invincible-helmet.

    EDIT: I think I'm going to learn how to create plugins so I can better explain or give code examples.. probably would make this easier, because I'm having to make assumptions on how all of this works.
     
  14. Well the problem is that you're not using the Permissions plugin correctly. Micromanagement may be complex, but it's the best way to manage security in any situation (whether it's a game server or a web server). You only ever want to assign the minimum permissions to every user that allow them to do their job.

    But no, it wouldn't make the permission nodes obsolete. It would check the config file first, then if infinite-air is true in the config file, those with fishpeople.infiniteair get infinite air.
     
  15. Offline

    ioScream

    You are correct, though I run the server completely, and there a few plugins that have an outrageous amount of nodes, so I see no point in defining each and every node when I can simply set myself to have "*" access. I define the appropriate nodes to the users based on what they need.

    If you didn't rely on permissions to toggle your plugin's functions and allowed the configuration file to handle that aspect, like so many other plugins, it wouldn't be a problem. For example, I have MagicCarpet, only admins have access, but just because I give myself access to the magiccarpet node it doesn't mean that I walk around with the magiccarpet under my feet. I have access to the node, so I can toggle it's functionality on or off, and the default state comes from the configuration. Essentials, I have access to essentials.god, but I don't walk around in God mode, however, I can toggle it on or off, and if I wanted I could set the state in my configuration file.

    So many plugins operate in this way, and I'm submitting that you should consider adopting this behavior rather than just relying permissions to toggle it on or off.

    I also feel that you have TOO many nodes. You could probably get away with 2. One as a base, stating that users can use the plugins advantages, and one for allowing certain users to be able to configure the plugin.
     
  16. I see where you're coming from, but you're comparing my plugin which is meant to run in the background all the time to plugins with on-demand activation mechanisms.

    I have no idea what you mean by too many permission nodes. Please explain how I could eliminate any nodes without removing the ability to distinguish between user groups. The whole idea is that some users are required to follow some rules while others are not. Like admins with invincible helmets but everyone else's takes damage. Or that certain users get extended air while others get infinite air and some get no bonus.

    Honestly, this is part of why I didn't start out with permissions support. Someone is going to complain.

    I don't even like the configuration file as it stands. I'm only using YML because someone decided that's what Bukkit should use. Originally this plugin just provided infinite air to those wearing gold helmets and that was it. I tried catering to users requests but I can't please everyone because you are asking for conflicting features. If someone wants to configure it, then I'll provide the configuration. I'm not going to start removing anything.
     
    HiddenIsme likes this.
  17. Offline

    HiddenIsme

    This sounds awesome lol I have went through and read every post in this thread, Ive heard compliments and I heard complaints and I heard Richard state many times that once he starts adding stuff people would get up set but for one I like the way he is running the show you cant please everyone :D I am dling now :) Keep up the good work
     
  18. The "air-multiplier" does that just take the bubble bar and times it by the number you put in the config file?
     
  19. Yes. except for the fact that the bubble bar doesn't actually read the server for how much air you have. If you put 1.43, the default time (about 15 seconds) is multiplied by 1.43 giving you about 21.45 seconds of air.
     
  20. Offline

    DaanSterk

    Seems Bukkit 670 broke the plugin, am I right?
     
  21. It's very possible. I haven't had time to check the new code base. Tomorrow is my first free time this week.
     
  22. Offline

    DontMakeWaves

    with craftbukkit 670 I can breath under water, but the chat filter doesn't work; I can talk when I am under water.
     
  23. Offline

    khamseen_air

    Confirmed. Other than that it appears to be working as intended on CB670.
     
  24. Offline

    Jessicadawn

    It doesnt work for me on 670
     
  25. Thank you for the reports guys. I have not been able to check any of the issues yet though.
     
  26. Ok, bump with request for information. Those of you who can breathe underwater but have no chat filter, post your configuration and permissions.

    To those who say it doesn't work, please list what is happening versus what you expect to happen, and post your configuration and permissions.
     
  27. Offline

    khamseen_air

    We can breathe underwater but chat filter doesn't work, here are the permissions and config file.

    Permissions (open)

    Code:
    Trusted:
            default: false
            info:
                prefix: ''
                suffix: ''
                build: true
            inheritance: null
            permissions:
            - foo.bar
            - myhome.home.basic.*
            - myhome.home.soc.*
            - mywarp.warp.basic.*
            - mywarp.warp.sign.*
            - mywarp.warp.soc.*
            - fishpeople.infiniteair
            - fishpeople.cantalkunderwater
            - fishpeople.invinciblehelmet
            - backtobody.btb
            - glassdrop
            - lockette.create.*
            - falsebook.blocks.gate
            - admincmd.time.set
            - admincmd.tp.to
            - falsebook.anyic
    


    Config (open)

    Code:
    enabled: true
    op-only: false
    helmet-type: "gold_helmet"
    chat-filter: true
    underwater-chat: "[glub glub glub]"
    infinite-air: true
    air-multiplier: 1
    helmet-damage: 0
    helmet-replacement: "air"
    lava-safe: true
    low-air-warning: 1
    low-air-message: "You are about to drown"
    


    I realise our permissions show that users have the permission to speak under water, but in the older version even with that in, chat filter had to be disabled in config to actually let them. If this has changed then there is a chance it's working as you now intend it to?
     
  28. The old version didn't have permissions. Permissions overrides config file. Does that address all of your problems?
     
  29. Offline

    khamseen_air

    Ahhhh of course it didn't I even remember having to add the permission tag when we updated, sorry about that. Totally my lack of memory at fault there haha.
     
  30. Everyone has off days.
     
  31. Offline

    Juze

    Please update to latest RB for releases.
     

Share This Page