• 游客, 欢迎您来到九域资源社区,如果您是新人,请前往 论坛公告 板块查看新人引导教程 或者 点我打开
    如果您发现没有下载许可, 请先验证邮箱再进行下载;金锭可通过每日登陆或资源出售获取,目前没有其他渠道可获取。

卦登写插件~

能不能写个精灵带上个道具形态不变但是特定的招式会形态变化是打出招式的时候
1702804528426.png
这样写就完事了,让玩家回收回来的时候形态不变,不过对战的需要另外写(比这个简单)
然后技能换了形态后也是一样的,反正收回来的时候就是获取收回来之前的形态,设置后
丢出去的话形态是不会变回来的,所以这段抄就好了

不要问我为什么不写,你下次告诉我要用什么可靠的方式来判断要哪些精灵实现效果吧,道具的话不太可能的毕竟玩家也需要用到实质性的道具不是?
 
浏览附件7554
这样写就完事了,让玩家回收回来的时候形态不变,不过对战的需要另外写(比这个简单)
然后技能换了形态后也是一样的,反正收回来的时候就是获取收回来之前的形态,设置后
丢出去的话形态是不会变回来的,所以这段抄就好了

不要问我为什么不写,你下次告诉我要用什么可靠的方式来判断要哪些精灵实现效果吧,道具的话不太可能的毕竟玩家也需要用到实质性的道具不是?
事实上EntityPixelmon的获取也得延时获取,因为在丢出宝可梦到宝可梦出现的过程中,宝可梦还不算出现实体,这种获取必定是空指针的,因此这段代码总是会return
 
事实上EntityPixelmon的获取也得延时获取,因为在丢出宝可梦到宝可梦出现的过程中,宝可梦还不算出现实体,这种获取必定是空指针的,因此这段代码总是会return
不会,事件触发时因为客户端发送了数据包过来后才触发的,触发快于服务器删除宝可梦的处理
事件触发后它的HanderList内的任务都执行完了才执行后面的删除宝可梦,所以不会出现你说的那种情况

还有就是我测试后才发出来。。。
 
咱就是说,别那么安静好不好,给我来点插件嘛
 
大佬你好!
不知能否帮忙写个在神兽生成失败时自动补神的插件?
MC版本1.16.5
麻烦了!
 
大佬你好!
不知能否帮忙写个在神兽生成失败时自动补神的插件?
MC版本1.16.5
麻烦了!
神兽刷空,后要怎么补
我个人想法:原版补的话就是强制生成,这样走的mod的逻辑,事件也会触发,类似执行了dospawnlegend,我写个脚本处理刷空的时候执行指令,执行的就是上面我说的这个指令,因为这个指令也会触发生成,就会在再一次走脚本代码逻辑,依次循环,直到成功才会停下
 
神兽刷空,后要怎么补
我个人想法:原版补的话就是强制生成,这样走的mod的逻辑,事件也会触发,类似执行了dospawnlegend,我写个脚本处理刷空的时候执行指令,执行的就是上面我说的这个指令,因为这个指令也会触发生成,就会在再一次走脚本代码逻辑,依次循环,直到成功才会停下
能否加个次数限制?不然玩家一直处在不能刷神的环境的话,这就变成一个卡服机了。
 
能否加个次数限制?不然玩家一直处在不能刷神的环境的话,这就变成一个卡服机了。
可以,限制方式连续生成超过5(自定义)次执行定时任务,每过设置的事件,就尝试生存一次,成功就结束任务
也可以不要连续生成的限制,直接开始定时任务
 
可以,限制方式连续生成超过5(自定义)次执行定时任务,每过设置的事件,就尝试生存一次,成功就结束任务
也可以不要连续生成的限制,直接开始定时任务
好麻烦了QAQ!
 
能否加个次数限制?不然玩家一直处在不能刷神的环境的话,这就变成一个卡服机了。
写成脚本了
使用方法:
1.安装FICore,FIScript
2.运行一次服务器,打开FIScript的配置文件夹内创建一个文件名字,编码格式:GBK,文件名字格式:xxxxx.groovy
3.复制脚本内容到 xxxxx.groovy 内
JavaScript:
import com.pixelmonmod.pixelmon.api.events.spawning.LegendarySpawnEvent
import com.pixelmonmod.pixelmon.api.spawning.SpawnerCoordinator
import com.pixelmonmod.pixelmon.spawning.LegendarySpawner
import me.fullidle.ficore.ficore.common.api.event.ForgeEvent
import me.fullidle.fiscript.fiscript.Main
import org.bukkit.Bukkit
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.scheduler.BukkitRunnable

class LegendarySpawnEmptyAdd implements Listener {
    /*多少秒检测一次是否刷成功,修改时间后直接重载FIScript插件*/
    static def time = 5
    /*尝试生成次数,次数到了后就直接结束掉(比如是5那么连续五次都空后就放弃生成了)*/
    static def numberOfAttempts = 5

    /*以下你不用动我全自动*/

    static def i = 0
    static def alreadyProduced = false;

    static void main(String[] args) {
        Bukkit.getServer().getPluginManager().registerEvents(new LegendarySpawnEmptyAdd(),Main.plugin);
    }
    @EventHandler
    def onTest(ForgeEvent event){
        if (event.getForgeEvent() instanceof LegendarySpawnEvent.ChoosePlayer){
            def e = event.getForgeEvent() as  LegendarySpawnEvent.ChoosePlayer
            def spawner = e.spawner as LegendarySpawner
            Bukkit.getScheduler().runTask(Main.plugin,()->{
                SpawnerCoordinator.PROCESSOR.execute {
                    def spawns = spawner.possibleSpawns
                    if (spawns == null) {
                        Bukkit.getServer().broadcastMessage("§7[§bLegendarySpawn§3EmptyAdd§7]:§c本次神兽生成,刷空咯!(5s后补发)")
                        i = 0
                        alreadyProduced = false;
                        def runnable = new BukkitRunnable(){
                            @Override
                            void run() {
                                if (Bukkit.getOnlinePlayers().size() < 1){cancel()}
                                if (alreadyProduced) {cancel()}
                                Bukkit.getServer().broadcastMessage('§7[§bLegendarySpawn§3EmptyAdd§7]:§a由于刷空尝试再次生成(如果没有生成这条消息不久后再见!)')
                                Bukkit.dispatchCommand(Bukkit.getConsoleSender(),"dolegendaryspawn")
                                i = i+1
                                if (i >= numberOfAttempts){
                                    Bukkit.getServer().broadcastMessage("§7[§bLegendarySpawn§3EmptyAdd§7]:§c重复刷空${numberOfAttempts}次,我放弃了~")
                                    cancel()
                                }
                            }
                        }
                        runnable.runTaskTimer(Main.plugin,0,time * 20)
                    }
                }
            })
        }
        if (event.getForgeEvent() instanceof LegendarySpawnEvent.DoSpawn){
            alreadyProduced = true
        }
    }
}
4.配置FIScript的config.yml,将xxxxx.groovy的文件名字填到config.yml内的enable列表下(注意格式是list)
5.重启服务器/直接热重载FIScript插件
1706355254258.png
 
最后编辑:
  • Like
反馈: XKZC
写成脚本了
使用方法:
1.安装FICore,FIScript
2.运行一次服务器,打开FIScript的配置文件夹内创建一个文件名字,编码格式:GBK,文件名字格式:xxxxx.groovy
3.复制脚本内容到 xxxxx.groovy 内
JavaScript:
import com.pixelmonmod.pixelmon.api.events.spawning.LegendarySpawnEvent
import com.pixelmonmod.pixelmon.api.spawning.SpawnerCoordinator
import com.pixelmonmod.pixelmon.spawning.LegendarySpawner
import me.fullidle.ficore.ficore.common.api.event.ForgeEvent
import me.fullidle.fiscript.fiscript.Main
import org.bukkit.Bukkit
import org.bukkit.event.EventHandler
import org.bukkit.event.Listener
import org.bukkit.scheduler.BukkitRunnable

class LegendarySpawnEmptyAdd implements Listener {
    /*多少秒检测一次是否刷成功,修改时间后直接重载FIScript插件*/
    static def time = 5
    /*尝试生成次数,次数到了后就直接结束掉(比如是5那么连续五次都空后就放弃生成了)*/
    static def numberOfAttempts = 5

    /*以下你不用动我全自动*/

    static def i = 0
    static def alreadyProduced = false;

    static void main(String[] args) {
        Bukkit.getServer().getPluginManager().registerEvents(new LegendarySpawnEmptyAdd(),Main.plugin);
    }
    @EventHandler
    def onTest(ForgeEvent event){
        if (event.getForgeEvent() instanceof LegendarySpawnEvent.ChoosePlayer){
            def e = event.getForgeEvent() as  LegendarySpawnEvent.ChoosePlayer
            def spawner = e.spawner as LegendarySpawner
            Bukkit.getScheduler().runTask(Main.plugin,()->{
                SpawnerCoordinator.PROCESSOR.execute {
                    def spawns = spawner.possibleSpawns
                    if (spawns == null) {
                        Bukkit.getServer().broadcastMessage("§7[§bLegendarySpawn§3EmptyAdd§7]:§c本次神兽生成,刷空咯!(5s后补发)")
                        i = 0
                        alreadyProduced = false;
                        def runnable = new BukkitRunnable(){
                            @Override
                            void run() {
                                if (Bukkit.getOnlinePlayers().size() < 1){cancel()}
                                if (alreadyProduced) {cancel()}
                                Bukkit.getServer().broadcastMessage('§7[§bLegendarySpawn§3EmptyAdd§7]:§a由于刷空尝试再次生成(如果没有生成这条消息不久后再见!)')
                                Bukkit.dispatchCommand(Bukkit.getConsoleSender(),"dolegendaryspawn")
                                i = i+1
                                if (i >= numberOfAttempts){
                                    Bukkit.getServer().broadcastMessage("§7[§bLegendarySpawn§3EmptyAdd§7]:§c重复刷空${numberOfAttempts}次,我放弃了~")
                                    cancel()
                                }
                            }
                        }
                        runnable.runTaskTimer(Main.plugin,0,time * 20)
                    }
                }
            })
        }
        if (event.getForgeEvent() instanceof LegendarySpawnEvent.DoSpawn){
            alreadyProduced = true
        }
    }
}
4.配置FIScript的config.yml,将xxxxx.groovy的文件名字填到config.yml内的enable列表下(注意格式是list)
5.重启服务器/直接热重载FIScript插件
浏览附件7847
感谢大佬!我有空去试试。
 
你好啊 可以写一个支持laotou幸运方块mod的插件吗 关于开出任何精灵都会有全服提示的那种[这里指左下角聊天发出的] 变量:%player%玩家 开出的精灵%pokemon% 依赖mod: pokelucky-1.2.0 版本1.12.2
 
最后编辑:
你好啊 可以写一个支持laotou幸运方块mod的插件吗 关于开出任何精灵都会有全服提示的那种[这里指左下角聊天发出的] 变量:%player%玩家 开出的精灵%pokemon% 依赖mod: pokelucky-1.2.0 版本1.12.2
laotou的那个应该是改的神奇宝贝宝可梦,帖子内也写了重制版,理论上找一个对 神奇宝贝幸运方块mod 能进行提示的插件就行了

神奇宝贝幸运方块就是那个自带手机的那个mod~

如果找不到平替,你在回复我来写