开启辅助访问     
收藏本站

站内搜索

搜索

Minecraft(我的世界)苦力怕论坛

 楼主|  发表于 2022-2-24 19:12:01|显示全部楼层 IP:江苏省
开发者-入门



如果你想要把此插件作为前置,请确保你的插件在 BedWars1058之后被载入!
1.        在plugin.yml里面将BedWar1058设置为softdepend(注意大小写!): softdepend: [BedWars1058]
2.        通过以下代码确认 BedWars1058 是否在这个服务器上:
  1. @Override
  2. public void onEnable() {
  3.     //如果没有,就卸载你的插件。
  4.     if (Bukkit.getPluginManager().getPlugin("BedWars1058") == null) {
  5.             getLogger().severe("BedWars1058 was not found. Disabling...");
  6.             Bukkit.getPluginManager().disablePlugin(this);
  7.             return;
  8.     }
  9. }
复制代码

获取API的方法
初始化API:
  1. BedWars bedwarsAPI = Bukkit.getServicesManager().getRegistration(BedWars .class).getProvider();
复制代码

配置文件:
如果你想为你的拓展生成配置文件,请将其生成在plugins/BedWars1058/Addons/AddonName/config.yml



31#2022-2-24 19:12:01回复收起回复
苦力怕论坛,感谢有您~
 楼主|  发表于 2022-2-24 19:14:25|显示全部楼层 IP:江苏省
开发者-maven



导入库
  1. <repositories>
  2.   <repository>
  3.     <id>andrei1058-repo</id>
  4.     <url><a href="http://repo.andrei1058.com/releases/</url>" target="_blank">http://repo.andrei1058.com/releases/</url></a>
  5.   </repository>
  6. </repositories>
复制代码

作为依赖
  1. <!--BedWars1058插件API-->
  2. <dependency>
  3.   <groupId>com.andrei1058.bedwars</groupId>
  4.   <artifactId>bedwars-api</artifactId>
  5.   <version>VERSION-HERE</version>
  6. </dependency>
复制代码


32#2022-2-24 19:14:25回复收起回复
苦力怕论坛,感谢有您~
 楼主|  发表于 2022-2-24 19:16:21|显示全部楼层 IP:江苏省

开发者-Events



事件
BedWars1058提供了众多的事件供开发者监听,更多事件参见:
JavaDocs
  1. @EventHandler
  2. public void onEnemyEnter(EnemyBaseEnterEvent e) {
  3.   //代码
  4. }

  5. @EventHandler
  6. public void onTeamAssign(TeamAssignEvent e) {
  7.   //代码
  8. }

  9. @EventHandler
  10. public void onArenaJoin(PlayerJoinArenaEvent e) {
  11.   //代码
  12. }
复制代码




33#2022-2-24 19:16:21回复收起回复
苦力怕论坛,感谢有您~
 楼主|  发表于 2022-2-24 20:01:27|显示全部楼层 IP:河北省

开发者-注册指令




创建你的命令
如果你想要给你的addon添加插件指令,比如: /bw mycmd ,请继续阅读本章:
1. 新建一个继承了:com.andrei1058.bedwars.command.SubCommand的类:
  1. public class TutorialCommand extends SubCommand {
  2.    
  3.     //提供你的命令的有关信息
  4.     public TutorialCommand(ParentCommand parent, String name) {
  5.         super(parent, name);
  6.     }
  7.    
  8.     @Override
  9.     //执行你的命令:(和Bukkit一样,这也是一个boolean方法)
  10.     public boolean execute(String[] args, CommandSender s) {
  11.         return false;
  12.     }
  13. }
复制代码

2. 接下来你就需要提供一些你的指令的信息:
  1. public TutorialCommand(ParentCommand parent, String name) {
  2.         super(parent, name);

  3.         // 如果你的指令是提供给op使用的,下面项请开启:
  4.         setOpCommand(true); //否则所有玩家都能使用

  5.         //你想让它在/bw列表里面被看见吗?
  6.         //只有op可以看见指令列表
  7.         //因为玩家收到的是从信息文件里面获取的一段静态的
  8.         //如果你把这个设置成true,你需要同时填写:setDisplayInfo()
  9.         showInList(true);

  10.         //这是在指令 /bw里面的介绍
  11.         //它需要你提供一个文本的元件(其实就是hovertext),如果你不知道怎么使用
  12.         //你可以用这个方法: com.andrei1058.bedwars.arena.Misc.msgHoverClick()
  13.         setDisplayInfo(Misc.msgHoverClick("description", "hover description","run this on click", ClickEvent.Action.RUN_COMMAND));

  14.         //这个值决定了指令在 /bw列表里面的顺序
  15.         //最高为20
  16.         //越小,则在列表的越上面,反之亦然
  17.         setPriority(14);
  18.         
  19.         //如果这个指令是用于地图生成的,保持开启
  20.         setArenaSetupCommand(false);
  21.     }
复制代码

3. 在你处理你的代码之前加上:
  1.     @Override
  2.     public boolean execute(String[] args, CommandSender s) {

  3.         //this will send "cmd not found" msg to the console
  4.         if (!(s instanceof Player)) return false;
  5.         
  6.         Player p = (Player) s;
  7.         
  8.         if (args[0].equalsIgnoreCase("apple")){
  9.             p.getInventory().addItem(new ItemStack(Material.APPLE));
  10.         }
  11.         
  12.         //如果这个指令成功执行了,return值应为true(和Bukkit一样!)
  13.         //重申一遍,如果return为false,将会返回一个“未知命令”的标识
  14.         return true;
  15.     }
复制代码

4. 注册你的指令!
你只需要初始化这个类
  1.     @Override
  2.     public void onEnable() {
  3.         //如果插件(BedWar1058)不存在,就卸载你的插件
  4.         if (Bukkit.getPluginManager().isPluginEnabled("BedWars1058")) {
  5.             getLogger().severe("BedWars1058 was not found. Disabling...");//其实这个你也可以改成别的= =
  6.             setEnabled(false);
  7.             return;
  8.         }
  9.         
  10.         //你的指令是: /bw tutorial apple
  11.         //com.andrei1058.bedwars.commands.main.MainCommand
  12.         BedWars bedwarsAPI = Bukkit.getServicesManager().getRegistration(BedWars.class).getProvider();
  13.         new TutorialCommand(bedwarsAPI.getBedWarsCommand(), "tutorial");
  14.     }
复制代码



34#2022-2-24 20:01:27回复收起回复
苦力怕论坛,感谢有您~
 楼主|  发表于 2022-2-24 20:02:47|显示全部楼层 IP:河北省
开发者-自定义等级



定义等级:
开发者可以通过实现com.andrei1058.bedwars.api.levels.Level 接口来创建他们自己的“玩家等级管理器”。这些方法是插件用来在比如计分板等地方显示玩家等级的。
如何创建:
  1. public class CustomLevelsManager implements Level {
  2. @Override
  3.     public String getLevel(Player p) {
  4.         return PlayerLevel.getLevelByPlayer(p.getUniqueId()).getLevelName();
  5.     }

  6.     @Override
  7.     public int getPlayerLevel(Player p) {
  8.         return PlayerLevel.getLevelByPlayer(p.getUniqueId()).getPlayerLevel();
  9.     }

  10.     @Override
  11.     public String getRequiredXpFormatted(Player p) {
  12.         return PlayerLevel.getLevelByPlayer(p.getUniqueId()).getFormattedRequiredXp();
  13.     }

  14.     @Override
  15.     public String getProgressBar(Player p) {
  16.         return PlayerLevel.getLevelByPlayer(p.getUniqueId()).getProgress();
  17.     }

  18.     @Override
  19.     public int getCurrentXp(Player p) {
  20.         return PlayerLevel.getLevelByPlayer(p.getUniqueId()).getCurrentXp();
  21.     }

  22.     @Override
  23.     public String getCurrentXpFormatted(Player p) {
  24.         return PlayerLevel.getLevelByPlayer(p.getUniqueId()).getFormattedCurrentXp();
  25.     }

  26.     @Override
  27.     public int getRequiredXp(Player p) {
  28.         return PlayerLevel.getLevelByPlayer(p.getUniqueId()).getNextLevelCost();
  29.     }
  30. }
复制代码

如何注册:
这个方法将会安全地移除BedWar1058本身的等级系统并替换成你的
  1. BedWars bedwarsAPI = Bukkit.getServicesManager().getRegistration(BedWars .class).getProvider();
  2. bedwarsAPI.setLevelAdapter(new CustomLevelsManager());
复制代码


35#2022-2-24 20:02:47回复收起回复
苦力怕论坛,感谢有您~
 发表于 2022-2-24 20:43:41|显示全部楼层 IP:广东省
天铄厉害qwq

(摸鱼去了

评分

参与人数 1贡献 +1收起理由
 小*** + 1苦力怕论坛感谢有你~

查看全部评分

36#2022-2-24 20:43:41回复收起回复
苦力怕论坛,感谢有您~
 楼主|  发表于 2022-2-24 20:53:46|显示全部楼层 IP:河北省
开发者-创建新资源/资源点

  1. 共计: 623 个字数 3851 个字符
  2. 包含: 613 个汉字 31 个标点(全角) 2553 个字母 10 个数字
复制代码


创建一个资源刷新点
如何创建一个自定义的资源刷新点
  1. public class ExampleGenerator implements IGenerator {

  2.     @Override
  3.     public void setHologram(@Nullable Hologram hologram) {
  4.         // 在你的资源刷新点上方增加一个全息字符
  5.     }

  6.     @Override
  7.     public @Nullable Hologram getHologram() {
  8.         //获取你资源刷新点上方的全息字符
  9.         return hologram;
  10.     }

  11.     @Override
  12.     public void disable() {
  13.         // 移除你的资源刷新点
  14.         // 这将会在一局游戏结束,下一局开始之前被启用
  15.     }

  16.     @Override
  17.     public void upgrade() {
  18.         // this is called when the arena decides to upgrade a generator based on Arena#updateNextEvent()
  19.         //但如果你想把它作为一个规律性任务的话
  20.         // 把它当作一个地图组注册: arena.getOreGenerators().add(myCustomGenerator)
  21.         // 如果你的刷新点有upgrade,请加上这个:
  22.         // Bukkit.getPluginManager().callEvent(new GeneratorUpgradeEvent(this));
  23.     }

  24.     @Override
  25.     public void spawnTry() {
  26.         // 这个将会设定每秒掉落的物品
  27.         // 需要的方法: #getSpawnDelay, #getSpawnAtOnce
  28.         // 决定你的生成逻辑和生成表现后,使用: #dropItem(loc)
  29.         // 这需要你的刷新点是一个队伍的刷新点或者一个地图内的刷新点
  30.         // 否则你需要自己处理它
  31.         // 示范代码: <a href="https://pastebin.com/VAsVH6MM" target="_blank">https://pastebin.com/VAsVH6MM</a>
  32.     }

  33.     @Override
  34.     public void dropItem(Location location) {
  35.         // 请对以下内容保持关注:getGeneratorsCfg().getBoolean(ConfigPath.GENERATOR_STACK_ITEMS)
  36.         // 所以如果你给刷新物取名为诸如:
  37.         // myItem.setCustomName("custom" + id); 的自定义id,以至于同一物品的刷新物因为名称不同无法堆叠
  38.         // 如果上面那个参数是开启的话,你的自定义物品id会在玩家捡起的一瞬间,被自动清除
  39.         // 如果它是以“custom”为开头的话
  40.         //示例代码: <a href="https://pastebin.com/64vKUiCr" target="_blank">https://pastebin.com/64vKUiCr</a>
  41.     }

  42.     @Override
  43.     public void setSpawnOre(ItemStack spawnOre) {
  44.         //设置刷新物品
  45.     }

  46.     @Override
  47.     public IArena getArena() {
  48.         // 获取刷新点所在地图
  49.         return arena;
  50.     }

  51.     @Override
  52.     public void rotate() {
  53.         // rotate the generator preview-item if it is the case
  54.         // 这需要你的刷新点是一个队伍的刷新点或者一个地图内的刷新点
  55.         // 否则你需要自己处理它
  56.     }

  57.     @Override
  58.     public void setSpawnDelay(int spawnDelay) {
  59.         // 改变刷新的间隔
  60.     }

  61.     @Override
  62.     public void setSpawnAtOnce(int spawnAtOnce) {
  63.         // 设置每次刷新的数量
  64.     }

  65.     @Override
  66.     public void enableRotation() {
  67.         // 当一局游戏启动的时候被调用,这需要你的刷新点已经被注册过
  68.     }

  69.     @Override
  70.     public void setSpawnLimit(int value) {
  71.         // 设置在刷新物被领取走之前,最多刷新多少个
  72.     }

  73.     @Override
  74.     public ITeam getOwnerTeam() {
  75.         //如果这是一个队伍的刷新点,返回他所属的队伍
  76.         // 如果它不属于队伍,返回null
  77.         return team;
  78.     }

  79.     @Override
  80.     public ArmorStand getHologramHolder() {
  81.         return null;
  82.     }

  83.     @Override
  84.     public void setNextSpawn(int nextSpawn) {
  85.         // 设置 #dropItems
  86.     }

  87.     @Override
  88.     public void setStackDroppedItems(boolean stackDroppedItems) {
  89.         //改变刷新点(是否继续刷新)
  90.     }

  91.     @Override
  92.     public void setType(GeneratorType type) {
  93.         // 改变刷新点种类
  94.     }

  95.     @Override
  96.     public void destroyData() {
  97.         // 清除所有残留的刷新点数据(当新的一局游戏开始时)
  98.     }

  99.     @Override
  100.     public void setTier(int tier) {
  101.         // 改变刷新点的级别
  102.     }
  103. }
复制代码

如何注册:
如果你把刷新点的种类设置成EMERALD或者DIAMOND,并且不属于任何队伍,同时你还想要设置成一个规律性刷新的emerald/ diamond刷新点,把它添加到这个列表: IArena#getOreGenerators().或者说如果你想做一个队伍刷新点,并且由BedWar1058进行刷新(使用#spawnTry),请把它加入者了列表: ITeam#getGenerators(). 如果是其他种类的,你需要自己处理


评分

参与人数 1铁粒 +1收起理由
 饭*** + 1倒数第二行应该是‘这个’不是‘者了’.

查看全部评分

37#2022-2-24 20:53:46回复收起回复
苦力怕论坛,感谢有您~
 发表于 2022-9-27 21:08:18|显示全部楼层 IP:四川省
支持支持支持支持支持支持支持
38#2022-9-27 21:08:18回复收起回复
苦力怕论坛,感谢有您~
 发表于 2022-11-28 18:28:50 来自手机|显示全部楼层 IP:江苏省
x谢谢
只能我空调骄傲回来
39#2022-11-28 18:28:50回复收起回复
苦力怕论坛,感谢有您~
头像被屏蔽
 发表于 2022-12-20 09:18:32|显示全部楼层 IP:山东省
Nice! I just got a Minecraft gift code for FREE! :D https://freeminecraft***
40#2022-12-20 09:18:32回复收起回复
苦力怕论坛,感谢有您~

本版积分规则

本站
关于我们
联系我们
坛史纲要
官方
哔哩哔哩
技术博客
下载
网易版
安卓版
JAVA
反馈
意见建议
教程中心
更多
捐助本站
QQ群
QQ群

QQ群

访问手机版

访问手机版

手机版|小黑屋|系统状态|klpbbs.com

粤公网安备 44200002445329号 | 由 木韩网络 提供支持 | GMT+8, 2024-11-22 07:01

声明:本站与Mojang以及微软公司没有从属关系

Powered by Discuz! X3.4 粤ICP备2023071842号-3