Wizards Domination/KoTH Minigame 3.9.8.2 [提交至百度][查看百度是否已收录此帖]

5273 0
2023-2-12 15:49:54
显示全部楼层
生活圈制作
Wizards  Domination/KoTH Minigame 3.9.8.2

Wizards ❱ Domination/KoTH 迷你游戏 3.9.8.2

下载地址
提取码:iyki
20
您未购买

人民币


Wizards 是一款统治游戏。

选择您的向导类别并捕获地图目标以得分。


  • 多竞​​技场和 BungeeCord 支持。
  • 成就。
  • SQLite 和 MySQL 支持。
  • 极其可配置。
    • 标志、记分牌、消息、选项等。
  • 保存和恢复玩家库存、等级等。
  • 带有游戏事件的 API。
  • 自定义项。
  • 升级/排名系统。
  • 游戏顶级杀戮。
  • 全息排行榜。
    • 顶级伤害、治疗、杀戮和胜利。
  • 奖励系统。
  • 类脚本系统。
  • 工具包或类。
  • 杀戮辅助系统。
  • 避免不断抽签。
  • 非常容易设置。
  • 坐骑。
  • 新:通电!
  • 新:旁观者系统!


错误
如果您有任何问题,请通过讨论或私人消息报告。不要使用评级区域报告错误或请求功能。请去讨论。

默认游戏系统
如果你不想拥有技能并希望启用套件系统,这是 100% 可能的,该系统将很快提供更多游戏模式。

依赖项
Wizards 可以自己运行所有系统,但是,您可以安装Holographic Displays以使 Leaderboards 和 Vault 与全球经济一起工作。

您还可以安装ItemBridge以与 QualityArmory 挂钩。您应该可以在没有 ItemBridge 的情况下使用 CrackShot。

PlaceholderAPI 支持
以下占位符 是 可用 的 ,它们 是 不 言 自明


: %wizards_arena_max_players_{arena}% %wizards_arena_min_xplayers_{arena}% %wizards_arena_status_{arena}% %wizards_points-to-win_{arena}% 使用示例(DeluxeMenus):



















一个额外的占位符是%wizards_team_color%,如果在游戏中,它返回玩家的团队颜色。这是在您需要使用第三方名称标签插件的情况下添加的。






竞技场设置
所需权限:wizards.setup
首先使用/wizards setgspawn设置全局生成
  • 创建你的竞技场 - /wizards create <name>。
  • 添加 spawn - /wizards setLocation <name> <location>
    • 地点:BLUE_SPAWN , RED_SPAWN , LOBBY
  • 添加竞技场目标 - /wizards setObjective <name> <objective>
    • 目标:A、B、C。
    • 目标是一个 3x3 区域,目标中心有 e 信标(通过此命令设置中心)
  • 设置最小玩家 - /wizards setMinPlayers <name> <amount>
  • 设置最大玩家数 - /wizards setMaxPlayers <name> <amount>
  • (可选)设置竞技场边界/wizards setBounds <arena>
    • 使用工具/wizards 魔杖选择竞技场角落。
    • 它将阻止玩家在游戏中离开竞技场。
  • 完成设置并创建游戏 - /wizards finish <name>
目标是一个 3x3 区域,中心有电子信标。

签名格式:
  • [巫师]
  • 加入
  • 竞技场名称
视频:


排行榜

您需要 HolographicDisplays 才能使用排行榜,只需使用占位符:
  • {wizards_wins_number}
    • 例如:{wizards_wins_1} 将返回获胜次数最多的玩家。
    • {wizards_wins_2} 等
  • {wizards_kills_number}
    • 例如:{wizards_kills_1} 将返回拥有最多检查点的玩家
    • {wizards_kills_2} 等

占位符:
  • {wizards_kills_NUMBER}
    • %kills% 来自玩家。
  • {wizards_wins_NUMBER}
    • %wins% 来自玩家。
  • {wizards_damage_NUMBER}
    • 来自玩家的 %damage%。
  • {wizards_healing_NUMBER}
    • 来自玩家的 %healing%。






命令:wizards
别名:wzds、wrz。
  • /wizards join <arena> -没有权限。
  • /wizards leave -没有许可。
  • /wizards stats -没有权限。
经理命令

  • /wizards setgspawn - wizards.admin
  • /wizards start <arena> - wizads.moderator / sr.admin
  • /wizards stop <竞技场> - wizads.moderator/sr.admin
  • /wizards reload - wizards.admin
    • 保存所有配置文件。

其他的:
  • /wizards coins set/add/remve <玩家> <数量>
    • 权限:wizards.admin
    • 更新玩家平衡,命令将无法在启用 Vault 支持的情况下使用。
  • /wizards update <玩家>
    • 权限:wizards.admin
    • 向数据库发送更新。
  • /wizards 更新排行榜
    • 权限:wizards.admin
    • 更新排行榜。
  • /向导门户
    • 权限:wizards.admin
    • 管理竞技场门户(见下文)
  • /wizards reloadClasses
    • 权限:wizards.admin
    • 将重新加载所有类文件,您现在可以修改一个值,然后使用此命令应用更改。
      • 此命令会重新加载所有事件,因此如果有游戏正在运行则无法使用。

  • /向导工具包
    • 权限:wizards.manager.kits
    • /wizards kits create <name> (price) (needsPerm) (perm) (display-item)
      • () 用于可选参数,它具有默认值:1000,false,kits.{name},带有套件名称的随机项目。
      • 我建议您在 kits 文件中手动修改您的套件,然后使用 kits reload 命令。
    • /wizards kits delete <名称>
      • 从 kits.yml 中删除一个套件。
    • /向导工具包重新加载
      • 重新加载所有套件。






班级
所有班级的主要目标都是相同的 - 发射法术或射弹造成伤害,你将决定班级的其他一切。




v3.8.6 上有 11 个类,欢迎提供类的建议。
  • 炎术师
    • 发射火焰咒语,您可以在pyromancer.yml修改其他所有内容。
  • 海王
    • 发射一道水咒,您可以在aquamancer.yml中修改其他所有内容。
    • 可以治疗盟友,可以设置治疗量和范围。
  • 海洛因
    • 发射一个粒子法术,该法术会打击并增加伤害,您可以在herobrine.yml中修改其他所有内容。
  • 枯萎
    • 发射凋灵头骨,您可以在wither.yml中修改其他所有内容。
  • 末影人
    • 发射一个末影咒语并具有召回能力。
  • 法师
    • 发射一个会跟随玩家的法术,直到发生碰撞或直到达到行程限制。


  • 战斗机
    • 装载单目标超级拳。


  • 十字军
    • 为你和附近的队友创造一个临时护盾。

  • 萨满
    • 创建龙卷风推动玩家并缓慢应用。
  • 奥术师
    • 发射瞬发法术,如果击中敌人会造成范围伤害。
  • 苦力怕
    • 制造爆炸,造成击退和伤害。
  • 冷冻术士
    • 发射一道冰咒,施加缓慢。您可以在 cryomancer.yml 中修改其他所有内容。

您可以修改所有类别的所有内容、损坏、爆炸区域等。

代码(文本):

显示名称:'Aquamancer'
描述:
- '&9Aquamancer'
- ' '
- '&7Shots a spell of Aqua'
- '&7 causing damage to enimies and'
- '&7healing teammates.'
价格:500
每次使用法力成本:25
每次击中法力:2
最大距离:80
伤害:2.5
伤害区域:4.0
爆炸半径:2.5
显示项目:'IRON_AXE: 1'
武器:'IRON_AXE : 1 : name:&bHealing'
头盔:'IRON_HELMET : 1'
胸甲:'IRON_CHESTPLATE : 1'
紧身裤:'IRON_LEGGINGS :


target-scripts: []

可选:课程权限
通过将Options.Use-Class-Permission-As-Owned设置为 true,拥有课程权限的玩家将能够选择课程而无需购买。

如果Options.Use-Class-Permission-As-Owned设置为 false,玩家将需要购买课程的权限。


为此,请确保在类文件中添加“权限”行,例如:



3.0 及更高
版本 在 3.0 或更高版本中,您可以向使用职业的玩家提供物品。

代码(文本):
显示名称:'Herobrine'
描述:
- '&9Herobrine'
- ' '
- '&7Shots a spell of Lightning'
- '&7causing with &c3.0&#10084; &7of damage.'
价格:1000
每次使用法力消耗:35
每次击中法力:1
最大距离:80
伤害:6.0
伤害区域:5.0
爆炸半径:4.5
武器:'GOLDEN_AXE : 1 : name:&bStrike'
头盔: 'IRON_HELMET:1'
胸甲:'IRON_CHESTPLATE:1'
紧身裤:'IRON_LEGGINGS:1'
靴子:'IRON_BOOTS:1'



- 'ARROW : 64'
所以只需添加
代码(文本):
items:
- 'ITEM : AMOUNT'可以在类文件夹中的pyromancer.yml
中找到有关项目的完整教程。(API) 创建你自己的类 关于这一点的快速说明,在使用 API 注入新类时不能使用类重新加载命令,它不会注册通过 API 注入的类。创建您自己的重新加载命令并访问 API 以手动重新加载并再次注册您的类。 要创建您自己的类,只需创建一个扩展 WizardClass 的新类并使用代码(文本) 在您的 onEnable 上注册: WizardClasses.injectClass(Class<? extends WizardClass> clazz, String name, String fileName);








在哪里上课<? extends WizardClass> 将是您的类,将类的(原始)名称命名为 fileName 将生成的文件名。


之后,您需要手动将您的类添加到 shop.yml 中。

示例:

代码(文本):
import com.floodeer.wizards.Wizards;
导入 com.floodeer.wizards.game.GamePlayer;
导入 com.floodeer.wizards.game.classes.WizardClass;
导入 com.floodeer.wizards.particles.ParticleEffect;
导入 com.floodeer.wizards.script.ScriptManager;
导入 com.floodeer.wizards.util.ItemFactory;
导入 com.floodeer.wizards.util.LocationUtils;
导入 com.floodeer.wizards.util.Util;
导入 org.bukkit.Location;
导入 org.bukkit.entity.Player;

导入java.io.文件;

public class Reaper extends WizardClass {

public Reaper(String name, File configFile) {
超级(名称,配置文件);
}

@Override
public void give(Player player) {
player.getInventory().addItem(ItemFactory.unbreakable(getWeapon()));
player.getInventory().setHelmet(ItemFactory.unbreakable(getHelmet()));

player.getInventory().setChestplate(ItemFactory.unbreakable(getChesplate()));

player.getInventory().setLeggings(ItemFactory.unbreakable(getLeggings()));
player.getInventory().setBoots(ItemFactory.unbreakable(getBoots()));
}

@Override
public void onInteract(Player player) {
GamePlayer gp = GamePlayer.get(player.getUniqueId());
if (gp.getMana() < getManaCost()) { //法力管理器
if(!Wizards.get().getMessages().enoughMana.isEmpty())
gp.getP().sendMessage(Util.colorString(Wizards. get().getMessages().enoughMana.replaceAll("%prefix%", Wizards.get().getMessages().prefix)));
if(!Wizards.get().getOptions().enoughMana.isEmpty())
Util.playSound(gp.getP(), Wizards.get().getOptions().enoughMana);
} else {
ScriptManager.run(gp, getScript()); //脚本系统,如果启用

gp.setMana(gp.getMana() - getManaCost()); //移除玩家法力

//技能开始
Location location = player.getLocation();

//技能粒子效果
LocationUtils.getCircle(location.clone().add(0.0D, 1.0D, 0.0D), 5.0D, 40).forEach(l -> {
ParticleEffect.CRIT_MAGIC.display(0.0F, 0.0F , 0.0F, 0.1F, 3, l, 126);
ParticleEffect.CLOUD.display(0.0F, 0.0F, 0.0F, 0.01F, 1, l, 126);
});

//应用技能伤害和效果
Util.filterAreaDamage(player, getDamage(), location, getAreaDamage(), false, Wizards.get().getMessages().magic).forEach(target -> { ScriptManager.run(gp
, GamePlayer.get(target), getTargetScript());
GamePlayer targetgp = GamePlayer.get(target);
targetgp.setMana(0);
target.sendMessage(Util.colorString("&c你的法力已经被&4吞噬了" + player.getName() + "&c!"));
});

//Skill end
}
}
}
要告诉 Wizards 你有一个类要添加,请将以下代码添加到 onEnable

代码(文本)中:
WizardClasses.injectClass(Reaper.class, "Reaper", "reaper.yml");
其中 Reaper 是扩展 WizardClass 的类,Reaper 是原始名称,reaper.yml 是将生成的类文件名,因此您可以随意更改它。

创建类后,需要手动添加到shop.yml中;
代码(文本):
reaper:
item: 'DIAMOND_SWORD : 1'
name: '&6Reaper Class'


- '&7 附近的玩家。
插槽:23
WizardClass 代码(文本)中需要的所有内容在哪里



public String getOriginalName();

公共字符串 getDisplayName();

公共列表<String> getDescription();

public int getPrice();

公共 int getMaxDistance();

public int getManaCost();

公共 ItemStack getHelmet();

公共 ItemStack getChesplate();

公共 ItemStack getLeggings();

公共 ItemStack getBoots();

公共 ItemStack getWeapon();

公共双 getDamage();

公共双 getAreaDamage();

public double getExplosionRadius();

公共列表<String> getScript();

公共列表<String> getTargetScript();

public int getManaPerHit();

公共集合<PotionEffect> getEffects();

公共列表<ItemStack> getItems();

这里的所有内容都取自您的 class.yml,当然,您可以忽略所有这些并根据需要创建类,而无需与类文件进行交互。

就是这样!没有计划让您通过 API 添加类,但既然可以让它工作……为什么不呢。

类别:爆炸
您可以禁用或限制特殊能力的爆炸。

要关闭爆炸,请转到 settings.yml 并将Explosions设置为false

您还可以限制爆炸,例如,您可以禁用 Y 坐标以下方块的爆炸:

Min-Y-Explosions的地图配置选项
  • 此选项将限制 Y 坐标的方块爆炸,例如,如果将其设置为 32,则 Y=32 以下的所有方块都不会爆炸。
  • 这可以通过在服务器启动之前编辑地图文件或使用/wizards setExplosionLevel <arena> <Y level>来完成
    • 使用此命令保存并应用更改后,您必须完成竞技场。


套件
您可以使用套件而不是类。在options.yml

中 启用Use-Kits-Instead-Of-Classes将禁用由类引起的所有游戏效果
  • 没有更多的速度和跳跃。
  • 不再有自定义 PvP 伤害。
  • 没有更多的课程商店,只有工具包。
  • 没有更多的自定义治疗药水。
  • 没有更多的双跳。
将创建一个 kit.yml 文件,您将能够添加您的套件。
剧透:kits.yml

Wizards Gamemodes
一些用户将 Wizards 用作TDM Gamemode 和/或玩 Guns,这完全有可能!您可以禁用所有游戏目标并设置每次击杀点数。

对于默认的统治游戏模式,您可以在下面查看这些选项。



例子
  • 捕获率:默认 > 1
    • 减少以增加捕获时间。
  • Capture-Max:默认 > 24
    • 增加以增加捕获时间。
  • 坚不可摧的盔甲
  • 启用或禁用爆炸。
  • 修改每次击杀点数、每秒点数、改变游戏事件的游戏刻度、手部伤害、武器伤害等。
  • 多很多!检查下面的 options.yml。

Scripts
Wizards 可以运行一个“脚本”系统,当玩家使用技能并且目标受到技能伤害时调用。

您需要在options.yml中将“JS-Engine”设置为 true才能运行脚本。

示例 1 -向使用该技能的玩家发送消息。
代码(文本):
脚本:
-“player.sendMessage(\“你使用了你的技能。\”);”

示例 2 -设置目标(如果有效)着火3 秒。
代码(文本):
目标脚本:
-“target.setFireTicks(60)”
支持的方法
  • 布吉#
  • 球员#
  • 精灵#
    • “wizard.explode(目标);” - 仅针对目标类型,会产生爆炸。
    • “wizard.damage(目标,数量);” - 对于目标和玩家,会造成随机伤害。
    • “wizard.heal(目标,数量);” - 对于目标和玩家,会治愈。
  • 向导 API(见下文)。
支持的参数
  • 播放器、游戏玩家、api、向导、服务器、盟友、allyplayer、目标、targetplayer
  • GamePlayer gameplayer、gametarget、gameally指的是Wizard的玩家类,可以通过该类修改游戏内数据和数据库数据。
您不能使用脚本召唤新对象。

Updates & Timer
Code (Text):

Options:
Game:
Mana-Update-Type: '75'
这意味着更新类型设置为 TICK_2 (1 mana every0,075s)

Update division

Code (Text):
SEC = 1000 (1s )
FAST = 500 (0,5s)
FASTER = 250 (0,25s)
FASTEST = 125 (0,125s)
TICKS_2 = 75 (0,075s)
TICK = 49 (0,049s)
升级系统 (BETA)
默认禁用。在 options.yml 中启用它。


启用后,将生成一个新文件 levels.yml,您可以使用此文件添加您的关卡、奖励等:

代码(文本):

关卡:
Level-1: #不要改变Level-1 section
exp: 0 #Required Exp
display-name: "&6Level 1" #Display name in level up message
prefix: "&6[1]" #Chat prefix, if enabled, hooked to PAPI
commands-to-execute: [] #Commands to execute when reaching the level
level-up-message: [] #Message to display
Level-2: #From now you can change
exp: 10
display-name: "&6Level 2"
前缀:"&6[2]"
要执行的命令:
- 巫师硬币添加 %player% 100
升级消息:
- '&7&m------------&7[&6&lWIZARDS&7 ]&m------------'
- ''
- '&a&l升级 &e&l%level%'
- ''
- '&9下一级:&b%next_level% &7(%until_next_level%/%next_level_exp% EXP)'
- ''
- '&7&m------------------------------------'
Level-3:
exp: 20
显示名称:“&6Level 3”
前缀:“&6[3]”
要执行的命令:
- 巫师硬币添加 %player% 100
升级消息:
- '&7&m---------- ----&7[&6&lWIZARDS&7]&m------------' -
''
- '&a&l升级 &e&l%level%'
- ''
- '&9下一级:&b%next_level% &7( %until_next_level%/%next_level_exp% EXP)'
- ''
- '&7&m-------------------------------- ---'

请不要更改 Level-1,因为它是默认的数据库值,你可以只使用显示名称在游戏中不显示“Level-1”,部分名称只是后端的东西。

请注意,重新加载命令不会应用对 levels.yml ATM 的更改。

如何获得Exp
玩家可以通过对战、击杀/助攻、获胜和夺取点数来获得Exp,查看options.yml,你会看到一个新的Exp部分可以修改。

给老玩家Exp在options.yml中将Options.Update-Levels

设置为true,当玩家在本次更新后加入服务器时,玩家将根据胜利、玩的游戏和击杀/助攻获得exp。 请注意,某些 exp 方法(如捕获的点)不会存储以进行计算。如果我不想使用 Leveling 系统怎么办? 只是不要启用该选项。没有它,一切都会很好。记分牌 您可以完全自定义记分牌。











不在游戏中/在同一游戏中(或没有玩)的玩家将看不到球队的彩色列表。





  • 游戏内占位符列表:
    • %kit% - 球员装备或职业。
    • %formatted_time% - 以 mm:ss 为单位的游戏时间
    • %kills% - 游戏击杀
    • %deaths% - 游戏死亡
    • %red_points% - 红点
    • %blue_points% - 蓝点
    • %red_points_per_second% - 每秒红点数
    • %blue_points_per_second% - 每秒蓝点数
    • %objectives% - 将用您拥有的目标数量替换所有下一行。
  • 大堂占位符列表:
    • %players% - 当前玩家数量
    • %maxplayers% - 最大玩家数量
    • %minplayers% - 最小玩家数量
    • %mapname% - 地图名称
    • %timer% - 启动计时器
    • %state% 和 %capitalize_state% - 游戏状态
    • %wins% - 玩家获胜统计
    • %games_played% - 玩家游戏玩统计
    • %balance% - 玩家余额
    • %kit% - 球员装备或职业。

避免绘制系统
为了避免不断绘制,您可以启用避免绘制系统。

如果游戏达到最大时间将以平局结束,但是,如果避免平局,游戏将检查杀戮最多的球队,这支球队将获胜。

如果两支球队的击杀数相同,则比赛将平局 - 加时赛系统已测试但未实施。

团队
有两个团队,所以每个团队的玩家数是每场最大玩家数除以 2,请确保将最大玩家数设置为 2 的倍数。

如果团队规模小于游戏玩家数除以 2,则玩家将无法加入。

传送门
这是与鞘翅一起使用的游戏机制,它会给你速度提升。



有关门户的一些信息:
  • 每个门户可以有不同的粒子、速度等等。
  • 门户保存在 arena文件夹中。
    • 由于动态访问,它们不会保存在 arena 文件中,不应经常访问 arena 文件。
    • 每个门户在竞技场文件中都有不同的名称,因此您可以识别它们。

这是门户文件的示例。
剧透:屏幕

截图
坐骑 如果你的地图太大并且你没有启用跳跃或速度,你可以启用坐骑,坐骑将与套件或类一起使用。

关于挂载系统的一些信息:
  • 游戏开始时你会收到一个物品(你可以编辑这个物品),右键点击它来生成你的马。
  • 马不会受到伤害,但如果乘客受到任何伤害,马就会消失。
  • 当您按下 shift 键时,马会消失。
  • 您可以修改马变种、速度和跳跃。
  • 有使用冷却时间,可以修改。
    • 下马后会触发冷却。


默认情况下禁用此功能,因此您不会收到安装项目。您可以在options.yml文件中启用它。

Guns
Quality Armory

您需要 ItemBridge 才能使用Quality Armory
  • 在 options.yml 中将ItemBridge设置为 true。
  • 将武器/弹药名称设置为与Quality Armory提供的名称相同。
  • 将“武器”标签添加到 kits.yml 中的项目
示例:
代码(文本):
weaponTest:
needs-permission:true
permission:“wizards.kits.weapons”
slot:3
price:200
display-item:'CROSSBOW : 1 : name:ak47'
helmet:'IRON_HELMET : 1'
chestplate : 'IRON_CHESTPLATE : 1'
紧身裤: 'IRON_LEGGINGS : 1'
靴子: 'IRON_BOOTS : 1'
项目:
- 'CROSSBOW : 1 : weapon : name:ak47'
- 'CROSSBOW : 1 : weapon : name:kar98k'
lore:
- ' &7Test weapon kit'
potion-effects: []
WeaponMechanics
要启用它,请转到 settings.yml -> Options。WeaponMechanics并将其设置为true

使用示例(kits.yml):


  • 项目:数量:武器:名称:武器名称
  • 你可以在这里放置任何物品,它将被替换为武器。
  • 我不确定在顶部 (AK47) 的套件名称上使用特殊字符是否会导致任何问题,以防万一。
确保使用武器标签,否则它将不起作用。

Crackshot
应该可以立即使用,您不需要武器标签。


自定义项目标签和模型数据
  • HideItemInfo(自定义标志)
    • 将隐藏属性、牢不可破、附魔、染料和药水效果。
    • 示例:
      代码(文本):
      项目:'GOLDEN_HOE : 1 : HideItemInfo'
  • 物品标志- ItemFlag
    • 示例:
      代码(文本):
      项目:'GOLDEN_AXE : 1 : ItemFlag:HIDE_ATTRIBUTES'
  • (1.14+) CustomModelData - 模型数据:{Value}
    • 示例:
      代码(文本):
      项目:'CARROT_ON_A_STICK : 1 : ModelData:1'

Game Arena
Spawn-Protection-Size & Objective-Protection-Size

在你的 arena.yml 中你会看到 Spawn-Protection-Size 和 Objective-Protection-Size,这将设置技能不能爆炸块的保护区。

旁观者模式(新!)
您可以使用 /wizards spectate <game> 来旁观一场比赛。旁观者的记分牌与普通比赛不同,您可以在语言文件中更改其记分牌。对于 BungeeCord,将Options.Spectate-When-In-Game

设置为true,如果比赛处于 IN GAME 状态,玩家将被添加到旁观者模式。 如果游戏正在开始或结束,它将不起作用,您将在Messages.Cannot-Spectate收到消息。



可以通过命令添加旁观者生成位置
  • /wizards setLocation <竞技场> SPEC_SPAWN



道具(新!)
目前只有 1 种道具类型,但您可以通过 API 添加自己的道具,见下文。

将来会添加更多的 Powerups。

积分通电
  • 它将为拾取它的玩家的团队添加点数,您可以修改点数和重生延迟。
  • 默认延迟:180000 = 180s
  • 默认点数:150
  • 修改配置文件中的所有内容,Options.Game.Powerups.Points 和语言文件中的 Powerups 部分。
要创建您自己的 Powerup,请创建一个 扩展 Powerup 的新类,示例:
代码(文本) : } @Override protected Item respawnPowerup(Location location) { return null; } @Override protected void onPlayerPickup(Player player) { } } 现在,您可以创建 Powerup Item 和 Powerup Action。 标识符是地图配置中的名称,也是您将用于通过命令添加 Powerup 位置的名称。 代码(文本): public class MyPowerup extends Powerup {
























public MyPowerup(Location location, long interval) {
super("MYPOWERUP", location, interval);
}

@Override
protected Item respawnPowerup(Location location) {
Item item = location.getWorld().dropItem(location, new ItemStack(Material.BLAZE_POWDER));
item.setVelocity(new Vector(0, 0, 0));
item.teleport(location.clone().add(.5, 0, .5));
归还物品;
}

@Override
protected void onPlayerPickup(Player player) {
GamePlayer.get(player).setMana(99);
player.sendMessage(ChatColor.RED + "填充你的法力!");
就是
这样

!你现在有了自己的道具。

现在,您需要注册 Powerup Spawn 并将其添加到您的游戏中。您将需要使用为此创建的新事件:GameArenaLoadEvent。

您将需要访问 GameArena 和包含每种 Powerup 类型位置的地图,这使开发人员更容易使用这种方式。

代码(文本):

@EventHandler
public void onArenaLoad(GameArenaLoadEvent e) {
e.getGame().registerPowerupSpawn("MYPOWERUP");
e.getGame().getGameArena().getPowerups().get("MYPOWERUP").forEach(location ->
e.getGame().getPowerups().add(new MyPowerup(location, 15000L)));
生成

由游戏自动处理。

它完成了。

您现在可以使用命令将通电添加到竞技场。

对于开发人员,这里有一个简短的说明,确保你所有的 Powerup 名称都是大写的,这不是一个机制限制,它只是为了在设置竞技场和从配置文件中获取名称时更容易。

对于正在设置 arena 的管理员,它不符合要求,您可以使用大写或小写,无论如何它都会转换为大写。



额外权限

  • wizards.joinfull - 允许您加入完整的游戏。
  • wizards.kits.all - 访问所有课程/工具包。
常见问题
FPS 不稳定

这是 minecraft 方面的问题,我无能为力。

在配置中禁用烟花、爆炸和掉落的方块应该会有所帮助。

(这在 v3.0 中已修复)
代码(文本):
由:java.lang.IllegalArgumentException:没有枚举常量 org.bukkit.Sound.....
如何解决:
如果您使用的是 1.9 或更高版本,则您有将options.yml中的所有声音值更改为 1.9。
不要将/reload与向导一起使用。

声音列表
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html

药水效果类型
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/potion/PotionEffectType.html

材料清单
https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html



手机扫码浏览