DecalRegistry笔记：
  
  <animation frames="帧数"/>
  <animationSpeed value="整数"/>
  动画控制器, 可以控制你的decal动画播放.
  frames中的帧数对应动画的数字序号, 假设你的动画有60帧, 你的文件命名应当是name00.png一直到name59.png, 而这里面每一帧的序号就分别是0到59. 
  frames书写是每个数字使用英文逗号隔开, 同时可以使用如下符号: 
  m-n, 表示从序号为m的帧播放到序号为n的帧. 
  m*n, 表示将序号为m的帧播放n次. 
  value单位为帧/秒. 
  
  <banner speed="小数" amplitude="小数" sliceSize="整数" sliceSinIncrement="小数" easeDown="true或者false" offset="小数" onlyIfWindy="true或者false"/>
  拟合函数图像 f(x)=amplitude*sin(sliceSinIncrement*speed+offset)
  等价于 f(x)=Asin(wt+p)
  
  <floaty/>
  <smoke offsetX="小数" offsetY="小数" inbg="true或者false"/>
  offsetX和offsetY都是基于装饰的画布中心来计算的
  
  <parallax amount="小数"/>
  这个参数可以让装饰有视差, 和bg一样, amount参数可正可负的, 相当于bg从scroll=1开始计算
  
  <sound event=""/>
  event里面填event名字
  
  <bloom offsetX="小数" offsetY="小数" alpha="小数" radius="小数"/>
  发光
  offset 从画布中心开始计算
  
  <light offsetX="小数" offsetY="小数" color="hex" alpha="小数" startFade="整数" endFade="整数"/>
  光源 >>>alpha<<<  startFade  >>>alpha衰减到0<<<  endFade
  <lightOcclude x="整数" y="整数" width="整数" height="整数" alpha="小数"/>
  
  <overlay/>
  让装饰变成类似于材质贴图的作用
  
  <scale multiplyX="小数" multiplyY="小数"/>
  装饰放缩
  
  <randomizeFrame/>
  装饰会从随机的一帧开始
  
  <coreSwap coldPath="" hotPath=""/>
  装饰可以根据8a的冷热模式来变化
  
  <flagSwap flag="" offPath="" onPath=""/>
  path从Gameplay往后填写
  
  <mirror keepOffsetsClose="true或者false"/>
  给装饰添加一个镜面反射效果, decals/modname/mytexture.png 对应的镜面贴图是 mirrormasks/modname/mytexture.png
  用彩色图像来定义镜面的远近, 红色值=X方向偏移, 绿色值=Y方向偏移
  白色(颜色值为255)表示最近, 黑色(颜色值为0)表示最远
  
  <staticMover x="整数" y="整数" width="整数" height="整数"/>
  装饰连接于实体的判定箱, +Y 方向向下
  
  <scared hideRange="整数" showRange="整数" hideFrames="帧数" showFrames="帧数" idleFrames="帧数" hiddenFrames="帧数" />
  物体 >>> hideFrames <<< hideRange --- showRange >>> showFrames <<< 远处
  
  <solid x="小数" y="小数" width="小数" height="小数" index="整数" blockWaterfalls="true或者false" safe="true或者false"/>
  给装饰加一个可以交互的碰撞箱, 但是不能和container起作用
  x和y从装饰中间开始计算, +Y方向向下
  index是交互的材质音效
  safe用于判定草莓能否被收集
  index: None = 0, Asphalt = 1 ,Car = 2 ,Dirt = 3 ,Snow = 4 ,Wood = 5 ,Bridge = 6 ,Girder = 7 ,Brick = 8 ,Zip Mover = 9 ,Space Jam (Inactive) = 11 ,Space Jam (Active) = 12 ,Resort Wood = 13 ,Resort Roof = 14 ,Resort Platform = 15 ,Resort Basement = 16 ,Resort Laundry = 17 ,Resort Boxes = 18 ,Resort Books = 19 ,Resort Forcefield = 20 ,Resort Clutterswitch = 21 ,Resort Elevator = 22 ,Cliffside Snow = 23 ,Cliffside Grass = 25 ,Cliffside Whiteblock = 27 ,Gondola = 28 ,Glass = 32 ,Grass = 33 ,Cassette Block = 35 ,Core Ice = 36 ,Core Rock = 37 ,Glitch = 40 ,Internet Café = 42 ,Cloud = 43 ,Moon = 44
  
  <depth value="整数"/>
  可以规定装饰的层级
  values: BGTerrain = 10000 ,BGMirrors = 9500 ,BGDecals = 9000 ,BGParticles = 8000 ,SolidsBelow = 5000 ,Below = 2000 ,NPCs = 1000 ,TheoCrystal = 100 ,Player = 0 ,Dust = -50 ,Pickups = -100 ,Seeker = -200 ,Particles = -8000 ,Above = -8500 ,Spinners = -8500 ,Solids = -9000 ,FGTerrain = -10000 ,FGDecals = -10500 ,DreamBlocks = -11000 ,PlayerDreamDashing = -12000 ,Enemy = -12500 ,FakeWalls = -13000 ,FGParticles = -50000 ,Top = -1000000 ,FormationSequences = -2000000

  <adamsaddons.rotate speed="小数" addX="小数" addY="小数" addWind="小数"/>
  rotate允许装饰物围绕其自身中心旋转
  speed控制旋转速度
  addX与addY允许装饰沿轴进行位移运动
  addWind允许装饰按倍率受风的影响被吹动
  
  <adamsaddons.oscillate speed="小数" offset="小数" backPath="decals/路径"/>
  oscillate允许装饰沿Y坐标轴进行转动，像立体旋转一样
  speed定义旋转速度，offset定义位差，
  backPath里面填装饰文件相对于Celeste/Mods/你的Mod文件夹名/Graphics/Atlases/Gameplay/decals的位置
    举例 ：你的装饰文件如果放在Celeste/Mods/yourMap/Graphics/Atlases/Gameplay/decals/yourName/yourMap文件夹内，文件名叫做flower.png
    此处的写法就应该是：yourName/yourMap/flower

  <adamsaddons.aim/>
  <adamsaddons.aim theo="true或者false"/>
  aim会让装饰朝向玩家所在的方向，theo参数控制是否响应theo水晶所在的方向

  <adamsaddons.pendulum speed="小数" offset="小数" angle="整数"/>
  pendulum允许装饰像钟摆一样摆动
  speed定义摆动速度，offset定义起始位差，angle定义摆动角度

  <adamsaddons.shake/>
  <adamsaddons.shake delay="小数" height="整数" width="整数"/>
  shake会使得装饰随机“颤抖”
  width与height控制随机颤抖的区域大小，delay是出现颤抖的间隔

  <adamsaddons.move amount="整数" width="整数" height="整数" locked="true或者false"/>
  move本质是让装饰相对于所在的位置发生偏离，但是结合前文adamsaddons.rotate一起就可以做出类似于风车一样的效果
  由于rotate会使得装饰本身也产生旋转，因此可以在此用locked参数锁定旋转
  width与height就是装饰相对于装饰所在点产生的位移

  <adamsaddons.randomize frame="" flipX="true false" flipY="true false" rotations="整数" colors="" shrink="小数" chance="小数"/>
  randomize可以将你的装饰随机化变换！
  frames应用于你的装饰原本是一个动画序列的情况，它将会取消装饰的动画播放，转而变成随机从这些帧数里面挑一张展示
  flipX与flipY决定随机处理装饰时是否会让他出现上下或者左右翻转
  rotations的整数表示这个装饰将会以几个不同的角度出现，比如rotations="4"，则这个装饰在地图中可能以旋转0，90，180，270度的形态随机出现
  colors中填入的是若干hex颜色代码，如colors="ffffff,ff0000,00ff00,0000ff"，等同于“白，红，绿，蓝”，不同颜色的hex代码用英文逗号隔开
  shrink表示随机处理装饰的时候其最小放缩的倍数，设置完成后在地图中装饰会以 shrink ~ 1倍 大小随机出现在地图中
  chance决定随机处理装饰的概率，比如chance="0.25"，则地图中约有四分之一的装饰可能会被随机化处理

  <adamsaddons.fade alphaFrom="小数"/>
  <adamsaddons.fade alphaFrom="小数" alphaTo="小数" randomize="布尔值" speed="小数" offset="小数"/>
  fade属性可以让装饰以匀速不透明度进行闪烁
  alphaFrom为起始不透明度，alphaTo为终止不透明度，randomize将其随机化
  offset表示起始位差

  <adamsaddons.wobble width="小数" height="小数" speed="小数" offset="小数" randomize="布尔值"/>
  wobble会让装饰产生像原版泡泡一样的鼓动效果
  width和height控制的是在对应方向的挤压变形倍率
  如width="0.25"时，宽度就会在75%-125%之间鼓动，height同理

  <adamsaddons.depthChange depthFrom="-100" depthTo="100"/>
  <adamsaddons.depthChange depthFrom="250" depthTo="500" speed="0.5"/>
  <adamsaddons.depthChange depthFrom="100" depthTo="-100" relativeX="true"/>

  <adamsaddons.playerAttach/>
  <adamsaddons.playerAttach offsetX="5" offsetY="-8" facing="true"/>
  <adamsaddons.playerAttach hairOffset="true" copyScale="true"/>
  <adamsaddons.playerAttach flag="attach_flag" preSpawn="true"/>

  <adamsaddons.cameraAttach/>
  <adamsaddons.cameraAttach offsetX="-8" offsetY="-8"/>
  <adamsaddons.playerAttach flag="attach_flag" preSpawn="true"/>

  <frosthelper.rainbow/>
  让decal进行彩虹变化，可以被能改变彩虹刺颜色的实体改变变化的颜色。

  <jungleHelper_rainbow/>
  让decal进行彩虹变化，可以被能改变彩虹刺颜色的实体改变变化的颜色。

  <XaphanHelper_flagsHide flags="flag1,flag2,..." room="room name" inverted="true"/>
  默认情况下flags中只要存在一个这个decal就会被隐藏

  <koseihelper.kill offsetX="0" offsetY="8" width="16" height="16"/>
  装饰会刺杀玩家

  <koseihelper.moving ySpeed="1"/>
  <koseihelper.moving xSpeed="1" moveWithWind="true"/>
  <koseihelper.moving ySpeed="-1" collideWithSolids="true" width="16" height="16" offsetX="-8" offsetY="-8"/>
  装饰运动

  <koseihelper.trail color="f94a4a"/>
  <koseihelper.trail duration="0.75" spawnInterval="0.15" color="ffffff22"/>
  装饰运动+轨迹