feat: update config and add XHR

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
MiaoWoo 2019-11-04 20:26:22 +08:00
parent 3cbc101eff
commit 4110ed2c20
4 changed files with 38 additions and 14 deletions

View File

@ -1,4 +1,14 @@
为了方便阅读 我对帖子进行了分页 请点击目录阅读! - 构建状态 [![Build Status](https://ci.yumc.pw/job/Minecraft/job/MiaoScript/badge/icon?style=flat-square)](https://ci.yumc.pw/job/Minecraft/job/MiaoScript/)
- 当前版本 ![Build Status](https://ci.yumc.pw/job/Minecraft/job/MiaoScript/badge/icon?style=flat-square&subject=version&status=0.1.0beta&color=darkturquoise)
- 下载地址 [![Build Status](https://ci.yumc.pw/job/Minecraft/job/MiaoScript/badge/icon?style=flat-square&subject=download&status=MiaoScript&color=darkgreen)](http://w.yumc.pw/free.html#MiaoScript-download)
- 为了方便阅读 我对帖子进行了分页 请点击目录阅读!
### 更新日志
- 2019-09-25
- 完善 `Sponge` 类型自动补全
- 2019-09-24
- 完善 `Bukkit` 类型自动补全
## 插件简介 ## 插件简介
@ -49,6 +59,12 @@
- 核心全部由 JS 编写 - 核心全部由 JS 编写
- 兼容 `CommonJS` 规范 - 兼容 `CommonJS` 规范
- 实时重载 - 实时重载
- 2019年9月14号 emm 咸鱼2年之后
- TypeScript 重构版本横空出世
- 只保留 基础Java启动类 三个环境初始化js
- 完整的服务端Java类自动补全
- 全新的 IOC容器 注入功能
- 注解式 注册命令 注册事件
### 进展 ### 进展
@ -79,6 +95,7 @@
├─nashorn Nashorn 的类型定义 ├─nashorn Nashorn 的类型定义
├─bukkit BukkitAPI内部实现 ├─bukkit BukkitAPI内部实现
├─sponge SpongeAPI内部实现 ├─sponge SpongeAPI内部实现
├─ployfill JS环境的相关环境补全
├─plugin 插件管理器 ├─plugin 插件管理器
└─plugins 这里当然是插件啦 └─plugins 这里当然是插件啦
├─bukkit 只兼容Bukkit的插件 ├─bukkit 只兼容Bukkit的插件
@ -95,7 +112,7 @@ Github: https://github.com/circlecloud/ms
如果只是简单的开发 你可用记事本 (但是没有任何补全和错误提示) 如果只是简单的开发 你可用记事本 (但是没有任何补全和错误提示)
### 开发环境准备(针对高级用户)) ### 开发环境准备(针对高级用户)
- 安装 `NodeJS` 和 `Yarn` - 安装 `NodeJS` 和 `Yarn`
- 拉取代码 - 拉取代码
@ -117,6 +134,9 @@ Github: https://github.com/circlecloud/ms
先来一个 `HelloWorld.ts` 插件示范! 先来一个 `HelloWorld.ts` 插件示范!
```ts ```ts
/// <reference types="@ms/bukkit/dist/typings" />
/// <reference types="@ms/sponge/dist/typings" />
import { plugin, interfaces, cmd, listener, tab } from '@ms/plugin' import { plugin, interfaces, cmd, listener, tab } from '@ms/plugin'
@plugin({ name: 'HelloWorld', version: '1.0.0', author: 'MiaoWoo', source: __filename }) @plugin({ name: 'HelloWorld', version: '1.0.0', author: 'MiaoWoo', source: __filename })
@ -154,7 +174,7 @@ export class HelloWorld extends interfaces.Plugin {
@cmd() @cmd()
hello(sender: any, command: string, args: string[]) { hello(sender: any, command: string, args: string[]) {
this.logger.log(sender, command, args); this.logger.log(sender, command, args);
this.logger.sender(sender, JSON.stringify({ command, args })); sender.sendMessage(JSON.stringify({ command, ...args }))
} }
@tab() @tab()
@ -163,15 +183,16 @@ export class HelloWorld extends interfaces.Plugin {
} }
@listener({ servertype: 'bukkit' }) @listener({ servertype: 'bukkit' })
playerjoin(event: any) { playerjoin(event: org.bukkit.event.player.PlayerJoinEvent) {
this.logger.console(`§aBukkit PlayerJoinEvent: §b${event.player.name}`) let plyaer = event.getPlayer();
setTimeout(() => this.logger.sender(event.player, `§a欢迎来到 §bMiaoScript §a的世界!`), 10); this.logger.console(`§aBukkit PlayerJoinEvent: §b${plyaer.getName()}`)
setTimeout(() => this.logger.sender(plyaer, `§a欢迎来到 §bMiaoScript §a的世界!`), 10);
} }
@listener({ servertype: 'sponge' }) @listener({ servertype: 'sponge' })
clientconnectionevent$join(event: any) { clientconnectionevent$join(event: org.spongepowered.api.event.network.ClientConnectionEvent.Join) {
this.logger.console(`§aSponge ClientConnectionEvent.Join: §b${event.targetEntity.name}`) this.logger.console(`§aSponge ClientConnectionEvent.Join: §b${event.getTargetEntity().getName()}`)
setTimeout(() => this.logger.sender(event.targetEntity, `§a欢迎来到 §bMiaoScript §a的世界!`), 10); setTimeout(() => this.logger.sender(event.getTargetEntity(), `§a欢迎来到 §bMiaoScript §a的世界!`), 10);
} }
} }

View File

@ -8,7 +8,7 @@
"scripts": { "scripts": {
"clean": "npx lerna run clean", "clean": "npx lerna run clean",
"watch": "npx lerna run watch --parallel", "watch": "npx lerna run watch --parallel",
"build": "npx lerna run build", "build": "npx lerna run build --scope='@ms/!(plugins)'",
"build:plugins": "npx lerna run build --scope=@ms/plugins", "build:plugins": "npx lerna run build --scope=@ms/plugins",
"lp": "npx lerna publish" "lp": "npx lerna publish"
}, },

View File

@ -2,6 +2,7 @@ import '@ms/nashorn'
import { plugin, server, task } from '@ms/api' import { plugin, server, task } from '@ms/api'
import { PluginManagerImpl } from '@ms/plugin' import { PluginManagerImpl } from '@ms/plugin'
import { XMLHttpRequest as xhr } from '@ms/ployfill'
import { DefaultContainer as container, injectable, inject, postConstruct } from '@ms/container' import { DefaultContainer as container, injectable, inject, postConstruct } from '@ms/container'
let startTime = new Date().getTime(); let startTime = new Date().getTime();
@ -29,15 +30,16 @@ class MiaoScriptCore {
} }
loadServerConsole() { loadServerConsole() {
//@ts-ignore // @ts-ignore
global.console = new this.Console(); console = new this.Console();
XMLHttpRequest = xhr;
} }
loadTaskFunction() { loadTaskFunction() {
//@ts-ignore //@ts-ignore
global.setTimeout = (func: Function, tick: number) => this.taskManager.create(func).later(tick).run() global.setTimeout = (func: Function, tick: number) => this.taskManager.create(func).later(tick).submit()
//@ts-ignore //@ts-ignore
global.setInterval = (func: Function, tick: number) => this.taskManager.create(func).timer(tick).run() global.setInterval = (func: Function, tick: number) => this.taskManager.create(func).timer(tick).submit()
} }
loadPlugins() { loadPlugins() {

View File

@ -8,6 +8,7 @@
"strictNullChecks": false, "strictNullChecks": false,
"sourceMap": false, "sourceMap": false,
"declaration": true, "declaration": true,
"declarationMap": true,
"noImplicitAny": false, "noImplicitAny": false,
"downlevelIteration": true, "downlevelIteration": true,
"allowUnreachableCode": true, "allowUnreachableCode": true,