FishyShield

From MinecraftOnline
Jump to navigation Jump to search

This plugin protects the world from environmental damage. It also controls item pickup and dropping and can modify damage dealt to players by mobs. It was written by getplayerhead.sh?nosefish&16.png nosefish to replace the ageing WorldGuard plugin.

The plugin consists of 5 main modules:

  • Fire protection (property prefix "ignite")
  • Explosion protection (property prefix "explosion")
  • Liquid damage protection (property prefix "liquid")
  • Entity related modifications (property prefix "entity")
  • Item permission (property prefix "item")

If you find any bugs, or have any feature requests, please post them in the issue tracker. Please contact getplayerhead.sh?nosefish&16.png nosefish if you have any questions about this plugin.


Fire Protection

  • Enables or disables fire by cause: natural fire spread, lava, fireball, lightning, player
  • Protects blocks and HangingEntities (paintings, item frames) from being destroyed by fire. Fire on blocks is extinguished when they would normally be destroyed, to avoid ever-burning trees.
  • Players need permission to start fires
  • Can set certain blocks as fireproof. These cannot be set on fire at all except by players who have permission. Can be used to block portal creation without disabling fire completely.

Fire Protection Properties

Note: These are examples and do not represent the actual server configuration.

ignite.protection-enable=true
enables/disables fire protections

ignite.fire-destroys-blocks=false
if true, fire can destroy blocks

ignite.fire-spread=false
if true, fire will spread

ignite.fireproof-blocks=49,47
list of fireproof blocks (obsidian and TNT in this case)

ignite.fireproof-message=You do not have permission to set this block on fire.
message sent to a player who tires to set a fireproof block on fire without having permission

ignite.fireproof-override-permissions=/lighter
permission to override fireproof protection. Can be set per block type.

ignite.flint-and-steel=false
If true, allows all players to use flint&steel. If flint and steel is disallowed here, it will not stop players from using the item, it only denies setting blocks on fire (which is effectively the same thing, since setting blocks on fire is all flint&steel does)

ignite.flint-and-steel-message=You do not have permission to use flint&steel.
Message sent to players trying to use flint&steel without permission

ignite.flint-and-steel-override-permission=/lighter
permission to override flint&steel protection

ignite.firecharge-rightclick=false
If true, allows all players to use fire charges. Works like flint&steel

ignite.firecharge-message=You do not have permission to use firecharges.
Message sent to players trying to use firecharges without permission

ignite.firecharge-override-permission=/lighter
permission to override firecharge protection

ignite.lava=false
if true, lava can set nearby blocks on fire

ignite.lightning=false
if true, lightning strikes can cause fire

ignite.fireball=false
if true, fireballs (blaze, fire charge from dispenser, ghast) can set block on fire.

Explosion Protection

  • Enables/disables blocks and HangingEntities being destroyed by explosions (TNT, Ghast, Creeper, and Wither)
  • Enables/disables cascading TNT explosions when block damage is disabled
  • Only affects blocks, keeps original effect on entities
  • Ghats fireballs still cause fire even if protection is enabled. Can be controlled through fire protection configuration.
  • No configuration by cause.

Explosion Protection Properties

Note: These are examples and do not represent the actual server configuration.

explosion.protection-enable=true
enables/disables explosion protections

explosion.cascade-tnt=true
if true, allows tnt to set off other tnt blocks in its blast radius. Makes TNT cannons work :).

explosion.damage-blocks=false
if true, allows explosions to damage blocks

explosion.damage-entities=true
not implemented yet. Explosions always damage entities.


Liquid Damage Protection

  • Enables/disables a configurable set of blocks being destroyed by liquids (used for rails on MinecraftOnline)
  • No configuration by cause (lava/water).

Liquid Damage Protection Properties

liquid.protection-enable=true
enables/disables liquid protections

liquid.protected-blocks=27,28,66,157
List of blocks that will not be destroyed by liquids (rails in this example)

Entity Modifications

  • Enforces fire/explosion protections for HangingEntities
  • Enables/disables HangingEntities from being destroyed by mobs
  • Configurable multipliers for damage dealt to players by mobs and fire
  • Configurable additional explosion power for ghast fireballs, because their default explosions are so pathetic. These additional explosions never damage blocks, only entities.

Entity Modification Properties

Note: These are examples and do not represent the actual server configuration.

entity.damage-multiplier-blaze=1.0D
entity.damage-multiplier-cavespider=1.0D
entity.damage-multiplier-creeper=1.0D
entity.damage-multiplier-enderman=1.0D
entity.damage-multiplier-ghast=1.0D
entity.damage-multiplier-giantzombie=1.0D
entity.damage-multiplier-irongolem=1.0D
entity.damage-multiplier-magmacube=1.0D
entity.damage-multiplier-pigzombie=1.0D
entity.damage-multiplier-silverfish=1.0D
entity.damage-multiplier-skeleton=1.0D
entity.damage-multiplier-slime=1.0D
entity.damage-multiplier-spider=1.0D
entity.damage-multiplier-wither=1.0D
entity.damage-multiplier-zombie=1.0D
entity.damage-multiplier-fire=1.0D
damage multipliers

entity.stronger-ghast-explosion=0.0D
If set to a value >0.0D, creates a fake TNTMinecart explosion with the configured power where a ghast fireball hits. TNTMinecarts explode with the square of the power (normally their speed), so don't make too large adjustments. 2.0D is a good start. This is completely separate from the damage multiplier.

entity.mobs-break-hanging-entities=false
when set to true, mobs can break paintings and item frames.

Item Permissions

  • Disables players using configurable set of items. Can be overridden for subsets based on permissions. Not used on MinecraftOnline, handled by GriefAlert.
  • Disables players dropping/picking up configurable sets of items. Can be overridden for subsets based on permissions. Useful to prevent admins from leaving unobtainable blocks on the ground by accident, and players from picking them up.

Item Permission Properties

Note: These are examples and do not represent the actual server configuration.

item.protection-enable=true
enables/disables item protections

item.drop-blacklist=0,7,8,9,10
list of items that cannot be dropped (will be destroyed when dropped)

item.drop-message=You do not have permission to drop this item.
message sent to a player trying to drop a blacklisted item

item.drop-override-permissions=
permissions to drop blacklisted items

item.pickup-blacklist=0,7,8,9,10
list of items that cannot be picked up

item.pickup-message=You do not have permission to pick up this item
message sent to players trying to pick up a blacklisted item

item.pickup-override-permissions=/admin
permissions to pick up blacklisted items

item.use-blacklist=0,7,8,9,10,259
list of items that cannot be used by players (right-click)

item.use-message=You do not have permission to use this item.
message sent to players trying to use a blacklisted item

item.use-override-permissions=/admin 7 19,/lighter 259
permissions to use blacklisted items

Commands

  • /worldname [player] (player is optional) - shows the name of the world and dimension the player is in. The purpose is mainly to help with configuration, but it may turn out to have other uses and is usable from the console.
  • /god [on|off] [player] - invulnerability for admins and god donors. Only admins can use the variant with the [player] argument. Was previously handled by WorldGuard.

Configuration

All configuration options can be set globally, per world, or even per world/dimension, each overriding the more general options.

The configuration file for this plugin is fishyshield.properties. There are several types of options:

  • Strings (texts), Booleans (true/false), and numbers work as usual in Canary.
  • IntegerSets (list of numbers): separate numbers with commas, without spaces
  • Permissions: permissions can be general, or specific for certain integers.

Setting Permissions

A general permissions is just a (possibly fake) command. A specific permission is a command followed by a list of integers, separated by spaces (not commas!). Permissions are separated by commas. If a permission property is empty, nobody has permission, not even admins.
The configured commands can be used in groups.txt to add the actual permissions.

Example:
item.drop-blacklist=0,7,8,9,10
item.drop-override-permissions=/dropany,/dropbedrock 7, dropfoo 7 9 10

Explanation:

  • Players in general may not drop items with ids 0,7,8,9,10.
  • If they have the /dropany permission configured in groups.txt, they may drop any item.
  • If they have the /dropbedrock permission, they may drop bedrock, but none of the others (unless they have /dropany, or /dropfoo, too).

Per-World Configuration

To configure per world, add worldname@ in front of the property, e.g.
boringworld@entity.damage-multiplier-ghast=0.0D
to make ghasts do no damage to players in boringworld

To configure per dimension add worldname.dimension@ in front of the property, e.g.
dangerousworld.NETHER@entity.damage-multiplier-ghast=20.0D
to make ghasts twenty times as strong in dangerousworld's Nether. Valid dimensions are NORMAL, NETHER, and END. You can also use /worldname to find these.

Other Properties

debug=false
enable/disable debug output