Skip to content

Latest commit

 

History

History
423 lines (295 loc) · 12.6 KB

4.6.x_changelogs.md

File metadata and controls

423 lines (295 loc) · 12.6 KB

4.6.5

  • Basic support for 1.14
  • Backported lots of bug fixes from 4.7

4.6.0 - 4.6.4

General

  • Added config option RandomSpawning.DisableVanillaSpawns
  • Skills can now be called with a new shorthand syntax skill:name
Skills:
- skill:someskill ~onAttack

Major Features

Better Saving

Mobs with Despawn: false will now save their information far more reliably, and now remember everything about themselves between restarts such as their owner, stance, etc.

Variables System

MythicMobs now includes many new mechanics and conditions for dealing with variables, with options for temporary, non-saving, or permanent variables that can be placed on mobs or players. See the variables page for more information.

Placeholders

The Placeholders (formerly called variables for some reason) system has been totally redone and is now much faster, in addition to having an assortment of new placeholders.

This refers to the system of having <> placeholders in any configured strings such as <caster.name>

This system now integrates with PlaceholderAPI, and you can use %placeholderapi% placeholders anywhere that you can use MM placeholders

Placeholders should now usable in any mechanics and conditions that allow strings.

Some of the new Placeholders include:

  • <caster.var.X> - gets the value of the variable X on the current caster
  • <target.var.X> - gets the value of the variable X on the current target
  • <trigger.var.X> - gets the value of the variable X on the current trigger
  • <skill.var.X> - gets the value of the variable X on the current skill tree
  • <random.#to#> - a random number between # and #

Variable placeholders can have a |default appended in-case the variable you're looking for isn't set.

<target.var.something|default>

In-Line Conditions

You can now use basic conditions within mechanics using the new ? "if" operator. These conditions only run as regular conditions (targeting the caster), can not have condition actions, and they always check if the condition is true.

For example:

Skills:
- message{m="hey i'm on a gold block!"} @trigger ?onBlock{t=GOLD_BLOCK} ~onInteract

Your mechanic lines can have as many of these as you want in it, multiples do work.

Mobs

  • Added Options.PreventSunburn: true for burnable mobs

Mechanics

NEW: BreakBlock

Breaks the block at the targeted location

Skills:
- breakblock @targetlocation

NEW: onAttack

A special Aura mechanic that adds a temporary onAttack skill to the target. Can also be used to modify damage done by the attack.

Skills:
- onAttack{auraName=fiery_strikes;onHit=FireStrike;duration=200;charges=5;multiplier=2} @self

In this example, the caster's next 5 physical hits within 10 seconds would trigger the FireStrike skill targeting whatever was hit and also deal 200% damage. However, if FireStrike's conditions failed, it would deal regular damage as the multiplier would not trigger either.

onAttack has the following options:

  • All options available to Auras
  • onHit=[skill] - A skill to execute while the aura is active
  • cancelEvent=true - Whether to cancel the event and do no base damage
  • multiplier=# - An optional multiplier on the original hit's damage
  • add=# - An optional static increase to the original hit's damage

NEW: onDamaged

A special Aura mechanic that adds a temporary onDamaged skill to the target. Can also be used to modify damage done by the attack.

Skills:
- onDamaged{auraName=fire_shield;onHit=FireShield;duration=200;charges=5;multiplier=0.5} @self

In this example, the caster's next 5 hits taken in 10 seconds would trigger the FireShield skill targeting whatever hit them and also deal 50% damage. However, if FireShield's conditions failed, it would deal regular damage as the multiplier would not trigger either.

onDamaged has the following options:

  • All options available to Auras
  • onHit=[skill] - A skill to execute while the aura is active
  • cancelEvent=true - Whether to cancel the event and damage taken
  • multiplier=# - An optional multiplier on the original hit's damage
  • sub=# - An optional static decrease (or increase if negative) to the original hit's damage

NEW: RemoveOwner

Removes the target mob's owner.

NEW: SendResourcePack

Forces the target player to download a resource pack. Player must have resource packs enabled on the server.'

Skills:
- sendResourcePack{url=www.website.com/resourcepack.zip} @target

NEW: SetFaction

Sets or changes the target mob's faction

Skills:
- setFaction{faction=X}

NEW: SetGameMode

Sets the game mode of the targeted player

Skills:
- setGameMode{mode=ADVENTURE} @trigger ~onInteract

NEW: Shield

Shields the target with absorption hearts for a set amount.

Skills:
- shield{amount=10;maxShield=20} @target

NEW: ShieldPercent

Shields the target with absorption hearts for a percentage of their maximum health.

Skills:
- shield{multiplier=0.5;maxShield=2} @target

MaxShield also acts as a multiplier, so the example shield would stack up to 2x the target's max health.

NEW: VariableSet

Sets a variable on the specified scope.

  setVariable{
      variable=[scope].[name];
      value=[the value];
      type=[variable_typpe];
      save=[true/false];
      duration=[optional_duration_in_ticks]
    }

Skills:
- setvariable{var=skill.testVar;value="hello";type=STRING} ~onInteract
- setvariable{var=caster.something;value=1;type=INTEGER;save=true} @self ~onInteract
- setvariable{var=target.temporaryVar;value="im temporary";type=STRING;duration=200} @target ~onAttack

Scope can be set by prefixing scope.name to the variable, or by using the scope=[scope] option.

NEW: VariableAdd

Adds an amount to a variable on the specified scope. Only works with numeric variable types.

Skills:
- variableadd{var=skill.testVar;amount=1} ~onInteract

NEW: VariableSubtract

Subtracts an amount to a variable on the specified scope. Only works with numeric variable types.

Skills:
- variablesubtract{var=skill.testVar;amount=1} ~onInteract

Auras

Added various options to Auras, and fixed many bugs:

Option Description
maxStacks=5 The maximum stacks of an aura that can exist on a target from a particular caster
mergeAll=false Defaults to false, auras from all casters on the same target will be merged and have their stacks increased
mergeSameCaster=true Defaults to true, auras from the same caster on the same target will be merged and have their stacks increased
refreshDuration=true Defaults to true, refreshes the duration on auras when a new stack is applied

Heal and HealPercent

  • Overhealing now applies absorption hearts instead of increasing maximum health.
  • Added MaxOverhealing option for both skills, working exactly like the similar shield mechanics.

PushButton

  • Fixed on 1.13
  • Now works with location targeters

Summon

  • Added summonerIsParent=false, summonerIsOwner=false options

ToggleLever

  • Fixed on 1.13
  • Now works with location targeters

Conditions

NEW: StringEquals

Returns true if the the two strings match. Both values can use placeholders.

Conditions:
- stringEquals{value1="yes";value2="<mob.var.ready|nope>"}
- stringEquals{value1="yes";value2="%essentials_godmode%"}

NEW: VariableEquals

Returns true if the variable matches the value. The value can contain placeholders/other variables/etc.

Conditions:
- variableEquals{variable=[scope].[variablename];value="[a value]"}
- variableEquals{variable=target.somevariable;value="hello"} true

BearGrowl:
  TargetConditions:
  - variableEquals{var=target.heardbear;value="yes"} cancel
  Skills:
  - message{m="You hear a growling noise"}
  - setvariable{var=target.heardbear;value="yes";duration=6000}

NEW: VariableIsSet

Returns true if the variable is set on the target scope.

  1. variableIsSet{variable=[scope].[variablename]}
  2. variableIsSet{variable=target.somevariable} true

NEW: VariableInRange

Returns true if the variable is within the given range. Only works with numeric variables.

  1. variableInRange{variable=[scope].[variablename];range=[range]}
  2. variableInRange{variable=target.somevariable;range=>10} true

Triggers

NEW: onDespawn

After years of people asking, we've finally figured out how to add a decent ~onDespawn trigger. This should fire whenever the mob stops existing for any reason other than death.

Items

NBT Support

  • You can now specify NBT tags on items in the format:
Item:
  Id: DIAMOND_SWORD
  NBT:
    Base:
      ATag: 20
      SomeOtherTag: something
    GemSlots:
      RedGem: 0
    'Denizen NBT':
      somedenizentag: a_string

This allows cross-over with a lot of other plugins, or just for storing some custom information.

For the more technically-inclined, anything under 'Base' will go under the item's base compound tag, and anything else will go under the corresponding key (or if no sub-items are defined, everything will go under the base tag).

If using with Denizen, all tags you want to use in Denizen must go under 'Denizen NBT' and must be lower-case to work in your Denizen scripts.

Drop Tables

  • Added "nothing" droptype for helping with weighted droptables
  • Finally fixed/implemented BonusLevelItems and BonusLuckItems

BonusLevelItems: [number]/[range]

  • A modifier on the number of items dropped based on the mob's level
  • Can be set as a range, i.e. 0.2to0.5
  • Works like: amount = amount + (mob_level * bonus_level_items)
  • Requires that TotalItems, MinItems, or MaxItems be set on the table to work

BonusLuckItems: [number]/[range]

  • A modifier on the number of items dropped based on the killer's luck stat
  • Can be set as a range, i.e. 0.15to8
  • Works with Luck attribute, Luck-based enchants/curses, and Luck potion effects
  • Works like: amount = amount + (luck * bonus_luck_items)
  • Requires that TotalItems, MinItems, or MaxItems be set on the table to work

RandomSpawns

  • Optimized and improved random spawn point generation
  • Fixed RandomSpawns not obeying MaxMobsPerChunk option

PositionType

  • Added PositionType: [LAND/SEA] option, defaults to LAND
  • Land spawns will only ever spawn on land
  • Sea will only ever spawn in water

Compatibility

PlaceholderAPI

Placeholders from PlaceholderAPI can now be used anywhere MythicMobs placeholders can be used, including in mechanics, conditions, etc.

  1. message{m="<trigger.name> has God-Mode? %essentials_godmode%"} @trigger ~onDamaged

WorldGuard

  • Readded WorldGuard 6 support for Minecraft 1.8-1.12

API

Added MythicMobDespawnEvent, which should trigger whenever mob stops existing for any reason that isn't death.

Bugs/Other

  • Fixed MPets compatibility
  • Fixed bugs with new particle options
  • Fixed potential dupe glitch with consumeHeldItem mechanic and Artifacts
  • Fixed bugs with item durability not applying on 1.13+
  • Fixed various bugs with item generation
  • Fixed SkillAPI and McMMO xp messages showing even when disabled
  • Fixed RandomSpawns not obeying MaxMobsPerChunk option
  • Fixed targeter sort=RANDOM not returning any targets
  • Fixed <trigger.name> not displaying when trigger is a mob
  • Fixed particle projectiles being stopped by half-slabs
  • Fixed console spam from WorldGuard
  • Fixed some spawner issues involving not tracking despawning mobs correctly
  • Fixed imported bukkit items not loading
  • Fixed cast/castinstead condition actions not obeying cooldowns
  • Fixed many legacy items not converting properly in droptables
  • Fixed damaged mobs not dying with ignoreArmor=true
  • Fixed mobs spawning multiple mounts in some scenarios
  • Fixed mob owner and cooldowns not saving between restarts
  • Fixed threat tables not dropping targets that change worlds