首页 > 其他分享 >IntellIJ开发简单Minecraft插件(利用paper API)

IntellIJ开发简单Minecraft插件(利用paper API)

时间:2022-12-28 15:56:16浏览次数:40  
标签:插件 IntellIJ 玩家 API prompter location public 坐标

有的时候想实现服务器里的一些简单的功能,但是网上又找不到,这个时候可以尝试写一个出来。

例如,在游戏里想要实现这样一个功能,玩家噶了之后在聊天栏处显示死亡坐标,这样可以方便玩家去那个坐标处把死亡时掉落的物品捡回来,差不多就是这样

试着搞一下吧:

首先在IntellIJ上安装Minecraft Development插件(File->setting->plugin,intellij怎么安插件的教程网上不少)

新建项目:直接选择Minecraft,项目SDK保持最开始勾选的那个(跟游戏同一个SDK)就行了,选择paper plugin(这里打算搞一个paper核心上能用的插件),点击下一步

接下来:groupid输入com.xx.xx的样式,

这里希望插件能提醒玩家信息,干脆叫prompter好了,groupid取成com.mc.newprompter,artifactid取成prompter

其他的先别动(包括那个Maven,以后需要更多复杂操作的时候再来研究maven和gradle有啥区别吧),点下一步

Plugin name还是输入Prompter得了,Main Class Name不用动,右侧那个Minecraft Version按游戏版本选,例如1.19.3

(Minecraft Version加载有点慢,可能显示不出来,这个时候需要等一会,挂个梯子似乎加载更快点,同理后边要是出现连接不上网络之类的,都试试挂一下梯子吧,包括前边下载插件的时候)

Optional Settings下边的这堆玩意先不填了,点下一步

项目名称继续填prompter,项目位置自选,点创建

接下来就是整个工程界面了

OnEnable

    @Override
    public void onEnable(){
        //你的代码
    }

表示当插件被启用时,执行“你的代码”中的内容

OnDisable

    @Override
    public void onDisable(){
        //你的代码
    }

表示当插件被禁用时,执行“你的代码”中的内容。

接下来开始写代码:

新建一个java class,取名为DeathCoordinates,这个类就是用来显示死亡坐标的:

DeathCoordinates.java

package com.mc.newprompter.prompter;
import org.bukkit.Location;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.PlayerDeathEvent;

public class DeathCoordinates implements Listener {
    @EventHandler
    public void onPlayerDeath(PlayerDeathEvent event) {
        // 获取玩家死亡的位置
        Location location = event.getEntity().getLocation();
        // 在游戏聊天框内输出坐标
        event.getEntity().sendMessage("你死亡的坐标是: " + location.getX() + ", " + location.getY() + ", " + location.getZ());

    }
}

当然以上代码也可以加点别的东西,例如

getEntity().getPlayer()  //用getplayer可以获取被击杀的玩家

getEntity().getKiller()  //用getkiller可以获取击杀者

在主类中注册监听器,只需要在OnEnable里边加上一行就可以了:

Prompter.java

package com.mc.newprompter.prompter;

import org.bukkit.plugin.java.JavaPlugin;

public final class Prompter extends JavaPlugin {

    @Override
    public void onEnable() {
        // Plugin startup logic
        //注册监听器
        getServer().getPluginManager().registerEvents(new DeathCoordinates(), this);
    }

    @Override
    public void onDisable() {
        // Plugin shutdown logic
    }
}

因为我们要实现的功能很简单,所以代码也很简单,以上代码用到了两个相关内容PlayerDeathEvent 和Player.sendMessage

1.如果你想在玩家死亡后系统提示死亡地点的坐标,你可以使用 PlayerDeathEvent 事件来实现。PlayerDeathEvent 事件会在玩家死亡时触发,你可以在这个事件的处理函数中实现你的代码。

2.你已经通过PlayerDeathEvent事件获取到玩家在哪死亡的信息了,但是还得把这个信息输出到聊天栏,如果你想在玩家死亡时在游戏聊天框内输出死亡地点的坐标,可以使用 Bukkit API 中的 Player.sendMessage() 方法。

(注意:在这个例子中,我们使用了 Player.sendMessage() 方法来输出坐标。如果你想将坐标输出到服务器日志中,你可以使用 Java 的 System.out.println() 函数,例如:System.out.println("玩家死亡的坐标: " + location.getX() + ", " + location.getY() + ", " + location.getZ());

以上,我们已经把代码给整好了,接下来需要让它输出成一个可执行jar包,然后放进服务器里

点击左上角的文件(File),点击项目结构(Project Structure

点击 工件(Artifacts),点击右侧左上的+号,选择jar,选择空(empty)

名称取名为prompter1.0,勾选“包含在项目构建中”,右侧有可用元素的话点击,使左侧显示有'prompter'编译输出就行了,点击确定

此时回到编代码的窗口,点击左上的”构建“(build),选择构建工件(应该是Build Artifacts吧),

如上图,构建后去工程目录下找那个输出的jar包就行了

如我的就输出到了IdeaProjects\prompter\out\artifacts\prompter1_0目录下

这里有一个jar包,直接扔到服务器的plugins文件夹下就行了,服务器重启后生效。

 

标签:插件,IntellIJ,玩家,API,prompter,location,public,坐标
From: https://www.cnblogs.com/soaring27221/p/17010300.html

相关文章

  • 当云原生网关遇上图数据库,NebulaGraph 的 APISIX 最佳实践
    本文介绍了利用开源API网关APISIX加速NebulaGraph多个场景的落地最佳实践:负载均衡、暴露接口结构与TLSTermination。API网关介绍什么是API网关API网关是......
  • IntelliJ IDEA 编译方式介绍及查看内存占用
    编译方式介绍相比较于Eclipse的实时自动编译,IntelliJIDEA的编译更加手动化,虽然IntelliJIDEA也支持通过设置开启实时编译,但是不建议,因为太占资源了。IntelliJIDEA编......
  • 支持API 9的Sample已上新,速来拿走
     今年的华为开发者大会上我们发布了HarmonyOS3.1DeveloperPreview版本,开启对API9的支持。本期我们将为大家带来5个基于API9实现的Sample。开发者可以从中掌握声明式......
  • Waves 14 Complete for Mac(Waves混音效果全套插件) v2022.12.27激活版
    Waves14mac中文版是一款混响功能强大的音频编辑后期混音插件套装!全新版本的Waves14Complete拥有需要新的功能,我们最受欢迎的压缩机增加了混合和微调旋钮在API2500、CLA......
  • Vue3 Composition API 的优势
     1.OptionsAPI存在的问题使用传统OptionsAPI中,新增或者修改一个需求,就需要分别在data,methods,computed里修改。 2.CompositionAPI的优势我们可以更加优雅的组织......
  • Jenkins Role-based用户鉴权插件
    1、安装Role-basedAuthorizationStrategy插件系统管理>插件管理如果没有安装在Availableplugins搜索安装,下面我是已安装好的~2、启用Role-based插件系统管......
  • 基于微服务API级权限的技术架构
    一般而言,企业内部一套成熟的权限系统,都是基于角色(Role)的访问控制方法(RBAC–RoleBasedAccessControl),即权限(Permission)与角色相关联,用户(User)通过成为适当角色的成员而......
  • 使用IntelliJ IDEA的小技巧快乐编程(2)
    前言本篇介绍的技巧为​​IntelliJIDEA​​中自动代码生成相关的技巧,合理的使用这些技巧将大大提高的你的编码效率:)Trick6.使用模板代码idea默认的提供了许多模板代码,......
  • Spring-Security-OAuth2调用微信API
     importorg.springframework.beans.factory.annotation.Autowired;importorg.springframework.context.annotation.Bean;importorg.springframework.context.annotation......
  • Eclipse插件下载地址汇总
    easyexploreimplementors反编译插件EclipseClassDecompiler​​http://marketplace.eclipse.org/content/eclipse-class-decompiler​​ tomcatPropertiesEditor ​​h......