MCBBS Wiki欢迎您共同参与编辑!在参与编辑之前请先阅读Wiki方针

如果在编辑的过程中遇到了什么问题,可以去讨论板提问。

为了您能够无阻碍地参与编辑 未验证/绑定过邮箱的用户,请尽快绑定/验证

MCBBS Wiki GitHub群组已上线!

您可以在回声洞中发表吐槽!

服务器状态监控。点击进入

本站由MCBBS用户自行搭建,与MCBBS及东银河系漫游指南(北京)科技有限公司没有从属关系。点此了解 MCBBS Wiki 不是什么>>

FancyMenu Wiki/自定义占位符:修订间差异

跳到导航 跳到搜索
(创建页面,内容为“== 关于 == 通过在拓展模组中调用 FancyMenu API,即可创建在文本元素中使用的自定义占位符文本值。 == 准备开发环境 == 请参阅 准备工作区。 == 添加新的占位符 == 每个自定义占位符都需要被封装成一个PlaceholderTextContainer类的对象,并被注册到PlaceholderTextRegistry中。 === 创建Container === 创建自定义占位符仅需 PlaceholderTextContainer…”)
 
每个自定义占位符都需要被封装成一个PlaceholderTextContainer类的对象,并被注册到PlaceholderTextRegistry中。
=== 创建Container ===
创建自定义占位符仅需 <code>PlaceholderTextContainer</code> 一个类。该类提供自定义占位符的实际值和其余所有的重要属性。
 
FancyMenu 每游戏刻都会重新获取容器的值,即你可以随时对容器值进行操作。
 
为你的自定义占位符创建一个新类,给它起一个合适的类名,并继承<code>PlaceholderTextContainer</code>。此实例中自定义占位符的类名为<code>ExamplePlaceholderTextContainer</code>
==== 占位符标识符 ====
每个占位符都需要有一个唯一的标识符,建议使用你的用户名或模组 ID 作为前缀以避免冲突。标识符需要在构造函数中被定义,如下:
<syntaxhighlight lang="java">
public ExamplePlaceholderTextContainer() {
super("example_placeholder_identifier");
}
</syntaxhighlight>
复制代码
==== 占位符本体 ====
 
占位符本体
当占位符在被添加到文本元素中时会被替换成实际值,但 FancyMenu 需要知道在输入框中如何找到这个占位符。
 
每个占位符都应该以%开头和结尾。
<syntaxhighlight lang="java">
@Override
public String getPlaceholder()
return "%example_placeholder%";
}
</syntaxhighlight>
复制代码
==== 分类 ====
 
分类
布局编辑器会将占位符分类,供用户查询所需。
<syntaxhighlight lang="java">
@Override
public String getCategory()
return "Example Category";
}
</syntaxhighlight>
复制代码
 
如在此处返回空,则该占位符会被自动归为"其他"分类中。
==== 显示名 ====
显示名会在布局编辑器中显示,供用户查看。
<syntaxhighlight lang="java">
@Override
public String getDisplayName()
return "Example Placeholder";
}
</syntaxhighlight>
复制代码
==== 描述 ====
 
描述
在布局编辑器中设置文本时,此处定义的描述文本会在光标悬停在添加对应占位符的按钮上时显示。
<syntaxhighlight lang="java">
@Override
public String[] getDescription()
};
}
</syntaxhighlight>
复制代码
 
如不想设置描述,返回空即可。
==== 获取实际值 ====
获取用于替换的实际值的方法是整个占位符中最重要的部分。
 
部分占位符的内容需要被频繁更新,所以 FancyMenu 会在每个渲染刻调用该获取方法。
 
注意,因为该方**法会在布局中的每个文本元素每次被渲染时被调用,所以不要使用过于影响性能的东西。
完整样例
这是PlaceholderTextContainer的==== 完整样例 ====
这是<code>PlaceholderTextContainer</code>的完整样例。
<syntaxhighlight lang="java">
package de.keksuccino.fancymenu.api.placeholder.example;
 
 
}
</syntaxhighlight>
复制代码
 
=== 注册容器 ===
维护员、​界面管理员、​巡查员、​监督员、​小部件编辑者
3,462

个编辑

我们提供服务需要使用Cookie。您使用我们的服务,即表示您同意我们使用Cookie。

导航菜单