本帖最后由 帅比小樊 于 2017-12-23 14:51 编辑
看到不少插件的粒子圈是这样的

如果使用World的playEffect方法的话
弄出来的就变成这样
如果这张图挂了,就是粒子非常的散,不像上面那个可以密集成一个圈
如果可以只生成一个小火焰粒子那也可以
我的代码是这样
复制代码此代码来自@qzz740827
如此形成的粒子就是上面的样子
无法做到

这样
我反编译这类插件,基本都使用了display这样的方法,类PracticesEffect
上面这个插件地址是:http://www.mcbbs.net/thread-456043-1-1.html
如果能解析这个插件使用的粒子方法的话,感激不尽
或者能否在一个点上生成一个小火焰颗粒?来自群组: PluginsCDTribe
看到不少插件的粒子圈是这样的
如果使用World的playEffect方法的话
弄出来的就变成这样

如果这张图挂了,就是粒子非常的散,不像上面那个可以密集成一个圈
如果可以只生成一个小火焰粒子那也可以
我的代码是这样
- for(double angle = 0; angle < 360D; angle+=(360D/particleAmount)){
- double x = Math.sin(Math.toRadians(angle)) * radii,
- z = Math.cos(Math.toRadians(angle)) * radii;
- loc.getWorld().playEffect(loc.clone().add(x, 0, z), Effect.MOBSPAWNER_FLAMES, 0);
- }
如此形成的粒子就是上面的样子
无法做到
这样
我反编译这类插件,基本都使用了display这样的方法,类PracticesEffect
上面这个插件地址是:http://www.mcbbs.net/thread-456043-1-1.html
如果能解析这个插件使用的粒子方法的话,感激不尽
或者能否在一个点上生成一个小火焰颗粒?来自群组: PluginsCDTribe
本帖最后由 qzz740827 于 2017-12-23 15:27 编辑
粒子分散的原因是因为每一个粒子都有一个“速度”属性
单单使用world.playEffect是无法设定粒子的“速度”属性的
解决办法:
使用world.spigot().playEffect()来生成粒子
参数列表:
- location: org.bukkit.Location 粒子生成位置
- effect: org.bukkit.Effect 粒子类型
- 粒子颜色: int 应传入材质的ID
- 粒子颜色: int 应传入材质的Durability(附加值)
- 粒子生成后向X轴的最大偏移量 float (与下面3个参数共同发挥作用)
- 粒子生成后向Y轴的最大偏移量 float
- 粒子生成后向Z轴的最大偏移量 float
- 粒子生成后随机偏移的速度 float
- 粒子生成总量 int
- 可被玩家看到的半径(只有以 粒子生成位置为中心,该参数为半径的圆内 的玩家才能看到该粒子) int
那么要不分散,试试把速度参数改为0F
复制代码
粒子分散的原因是因为每一个粒子都有一个“速度”属性
单单使用world.playEffect是无法设定粒子的“速度”属性的
解决办法:
使用world.spigot().playEffect()来生成粒子
参数列表:
- location: org.bukkit.Location 粒子生成位置
- effect: org.bukkit.Effect 粒子类型
- 粒子颜色: int 应传入材质的ID
- 粒子颜色: int 应传入材质的Durability(附加值)
- 粒子生成后向X轴的最大偏移量 float (与下面3个参数共同发挥作用)
- 粒子生成后向Y轴的最大偏移量 float
- 粒子生成后向Z轴的最大偏移量 float
- 粒子生成后随机偏移的速度 float
- 粒子生成总量 int
- 可被玩家看到的半径(只有以 粒子生成位置为中心,该参数为半径的圆内 的玩家才能看到该粒子) int
那么要不分散,试试把速度参数改为0F
- for(double angle = 0; angle < 360D; angle+=(360D/particleAmount)){
- double x = Math.sin(Math.toRadians(angle)) * radii,
- z = Math.cos(Math.toRadians(angle)) * radii;
- loc.getWorld().spigot().playEffect(loc.clone().add(x, 0, z), Effect.MOBSPAWNER_FLAMES, 0, 0, 0F, 0F, 0F, 0F, 1, 100);
- }
qzz740827 发表于 2017-12-23 15:24
粒子分散的原因是因为每一个粒子都有一个“速度”属性
单单使用world.playEffect是无法设定粒子的“速度” ...
- Caused by: java.lang.NoSuchMethodError: org.bukkit.World.spigot()Lorg/bukkit/Wor
- ld$Spigot;
报错信息
我来补充一下。。.spigot()是spigot的API,只能在spigot服务器端中使用,不兼容craftbukkit。某些粒子的颜色可以用速度参数控制。
qzz740827 发表于 2017-12-24 15:07
发下核心类型、版本
没这个方法的话你就直接艹nms的PacketPlayOutWorldParticles类 ...
craftbukkit1.7.10
现在还有人用CB?