bukket插件例子(4)代码分析
2016-12-25 09:13
316 查看
试着分析一下/get命令,命令类似/give,/get x y代表给用户y个x物件
原代码如下
初始化函数
super(plugin, "get", 1, 2);其中最少包含1个参数,最多2个
doPlayerCommand来自BaseCommand的实现
逻辑如下,如果参数长度是2,将倍数times存起来
如果x输入的是名字,那么就把有这个名字的全都加给用户
if (c.toString().toLowerCase().contains(cur.toLowerCase()))例如/get diamond 20就会把所有是砖石的都给用户,包括diamond_boots, diamond_pickaxe
如果x输入的是数字,那么就把符合这个id要求的给用户
例如/get 262 2就会把所有id是262的物件给用户。
代码如下,
public class CmdGetblock extends BaseCommand {
Map<String, ConfigurationSection> allKits;
public CmdGetblock(MainPlugin plugin) {
super(plugin, "get", 1, 2);
}
@Override
@SuppressWarnings("deprecation")
protected boolean doPlayerCommand(Player player, Command cmd, String commandLabel, String[] split) {
Integer times = Integer.valueOf(1);
if (split.length == 2)
{
try
{
times = Integer.valueOf(Integer.parseInt(split[1]));
}
catch (Exception localException) {}
if (times.intValue() < 0) {
times = Integer.valueOf(1);
}
}
if ((split.length == 1) || (split.length == 2))
{
String cur = split[0];
boolean found = false;
Material[] arrayOfMaterial;
int j = (arrayOfMaterial = Material.values()).length;
for (int ai = 0; ai < j; ai++)
{
Material c = arrayOfMaterial[ai];
if (c.toString().toLowerCase().contains(cur.toLowerCase()))
{
found = true;
for (int ki = 0; ki < times.intValue(); ki++) {
player.getInventory().addItem(new ItemStack[] { new ItemStack(c.getId(), 1) });
}
player.sendMessage("Material added maybe: " + c.toString() + " with id " + String.valueOf(c.getId()));
}
}
if (!found) {
try
{
Integer x = Integer.valueOf(Integer.parseInt(split[0]));
Material[] all = Material.values();
int k = all.length;
for (j = 0; j < k; j++)
{
Material c = all[j];
if (c.getId() == x.intValue())
{
found = true;
for (int i = 0; i < times.intValue(); i++) {
player.getInventory().addItem(new ItemStack[] { new ItemStack(c.getId(), 1) });
}
player.sendMessage("Material added maybe: " + c.toString() + " with id " + String.valueOf(c.getId()));
}
}
}
catch (Exception localException1) {}
}
return true;
}
return false;
}
}
原代码如下
初始化函数
super(plugin, "get", 1, 2);其中最少包含1个参数,最多2个
doPlayerCommand来自BaseCommand的实现
逻辑如下,如果参数长度是2,将倍数times存起来
如果x输入的是名字,那么就把有这个名字的全都加给用户
if (c.toString().toLowerCase().contains(cur.toLowerCase()))例如/get diamond 20就会把所有是砖石的都给用户,包括diamond_boots, diamond_pickaxe
如果x输入的是数字,那么就把符合这个id要求的给用户
例如/get 262 2就会把所有id是262的物件给用户。
代码如下,
public class CmdGetblock extends BaseCommand {
Map<String, ConfigurationSection> allKits;
public CmdGetblock(MainPlugin plugin) {
super(plugin, "get", 1, 2);
}
@Override
@SuppressWarnings("deprecation")
protected boolean doPlayerCommand(Player player, Command cmd, String commandLabel, String[] split) {
Integer times = Integer.valueOf(1);
if (split.length == 2)
{
try
{
times = Integer.valueOf(Integer.parseInt(split[1]));
}
catch (Exception localException) {}
if (times.intValue() < 0) {
times = Integer.valueOf(1);
}
}
if ((split.length == 1) || (split.length == 2))
{
String cur = split[0];
boolean found = false;
Material[] arrayOfMaterial;
int j = (arrayOfMaterial = Material.values()).length;
for (int ai = 0; ai < j; ai++)
{
Material c = arrayOfMaterial[ai];
if (c.toString().toLowerCase().contains(cur.toLowerCase()))
{
found = true;
for (int ki = 0; ki < times.intValue(); ki++) {
player.getInventory().addItem(new ItemStack[] { new ItemStack(c.getId(), 1) });
}
player.sendMessage("Material added maybe: " + c.toString() + " with id " + String.valueOf(c.getId()));
}
}
if (!found) {
try
{
Integer x = Integer.valueOf(Integer.parseInt(split[0]));
Material[] all = Material.values();
int k = all.length;
for (j = 0; j < k; j++)
{
Material c = all[j];
if (c.getId() == x.intValue())
{
found = true;
for (int i = 0; i < times.intValue(); i++) {
player.getInventory().addItem(new ItemStack[] { new ItemStack(c.getId(), 1) });
}
player.sendMessage("Material added maybe: " + c.toString() + " with id " + String.valueOf(c.getId()));
}
}
}
catch (Exception localException1) {}
}
return true;
}
return false;
}
}
相关文章推荐
- 使用RTP发送h.264的例子代码分析
- struts简单例子的分析(含代码注释和配置文件说明)
- StatSVN插件使用方法总结-项目代码分析工具 工作量图表生成工具
- JVM执行篇:使用HSDIS插件分析JVM代码执行细节
- Pidgin插件Hello world的代码分析
- Eclipse插件之Java代码分析工具: FindBugs
- Eclipse 5个有用的插件【代码质量分析】
- jQuery创建插件的代码分析
- jQuery创建插件的代码分析
- Android 上层界面到内核代码的完整的流程分析,以alarm为例子
- 基于.NET 2.0的GIS开源项目SharpMap分析手记(十四):ASP.NET2.0实现无刷新客户端回调的Callback机制及例子代码下载
- Eclipse插件之Java代码分析工具: FindBugs
- 在看官方的例子时候由一个grid实例,在每一行之前有个加号,展开可以显示内容,在实际应用中还是非常有用的,照搬例子的代码,发现老是提示对象不存在,查阅资料后发现是没有加载插件,这里和大家分享下Ext.grid.RowExpander插件的使用,
- Android 上层界面到内核代码的完整的流程分析,以alarm为例子
- struts简单例子的分析(含代码注释和配置文件说明)
- ASP.NET客户端生命周期事件的例子代码的分析
- (python)通过一个代码例子来分析对象的生命周期
- 对餐馆例子中的manager联邦成员的代码分析
- OT源代码的分析,OrtHello 迟早攻破你 (十)第5个例子,用代码来创建物体(未完)
- 在 Eclipse 中使用 5 个有用的插件来自动化代码质量分析