Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e28d881976 | |||
| 1bdb324fc4 | |||
| 5c90ac3b1f | |||
| 653d7268cf | |||
| efa5e6d110 | |||
| ceb354f11e | |||
| d97af356fd | |||
| 6fd7174ca5 | |||
| 784ea2d65a |
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"useWorkspaces": true,
|
||||
"npmClient": "yarn",
|
||||
"packages": [
|
||||
|
||||
@@ -20,6 +20,6 @@
|
||||
"packages/*"
|
||||
],
|
||||
"devDependencies": {
|
||||
"lerna": "^3.22.1"
|
||||
"lerna": "^4.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/amqp",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript amqp package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -19,17 +19,17 @@
|
||||
"test": "echo \"Error: run tests from root\" && exit 1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ccms/api": "^0.13.0",
|
||||
"@ccms/common": "^0.13.0",
|
||||
"@ccms/container": "^0.13.0"
|
||||
"@ccms/api": "^0.14.1",
|
||||
"@ccms/common": "^0.14.1",
|
||||
"@ccms/container": "^0.14.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ccms/nashorn": "^0.13.0",
|
||||
"@ccms/nashorn": "^0.14.0",
|
||||
"@javatypes/amqp-client": "^0.0.3",
|
||||
"@javatypes/spring-amqp": "^0.0.3",
|
||||
"@javatypes/spring-rabbit": "^0.0.3",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/api",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript api package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -19,9 +19,9 @@
|
||||
"test": "echo \"Error: run tests from root\" && exit 1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ccms/common": "^0.13.0",
|
||||
"@ccms/container": "^0.13.0",
|
||||
"@ccms/ployfill": "^0.13.0",
|
||||
"@ccms/common": "^0.14.1",
|
||||
"@ccms/container": "^0.14.0",
|
||||
"@ccms/polyfill": "^0.14.1",
|
||||
"base64-js": "^1.5.1",
|
||||
"source-map-builder": "^0.0.7"
|
||||
},
|
||||
@@ -29,6 +29,6 @@
|
||||
"@types/base64-js": "^1.3.0",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@ enum LogLevel {
|
||||
|
||||
export class MiaoScriptConsole implements Console {
|
||||
Console: NodeJS.ConsoleConstructor
|
||||
memory: any
|
||||
|
||||
private static sourceMaps: { [key: string]: SourceMapBuilder } = {}
|
||||
private static sourceFileMaps: { [key: string]: string } = {}
|
||||
@@ -195,6 +196,9 @@ export class MiaoScriptConsole implements Console {
|
||||
dirxml(...data: any[]): void {
|
||||
throw new Error("Method not implemented.")
|
||||
}
|
||||
exception(message?: string, ...optionalParams: any[]): void {
|
||||
throw new Error('Method not implemented.')
|
||||
}
|
||||
group(...label: any[]): void {
|
||||
throw new Error("Method not implemented.")
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/bukkit",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript bukkit package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -22,11 +22,11 @@
|
||||
"@javatypes/spigot-api": "^0.0.3",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ccms/api": "^0.13.0",
|
||||
"@ccms/common": "^0.13.0",
|
||||
"@ccms/container": "^0.13.0"
|
||||
"@ccms/api": "^0.14.1",
|
||||
"@ccms/common": "^0.14.1",
|
||||
"@ccms/container": "^0.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/bungee",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript bungee package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -22,11 +22,11 @@
|
||||
"@javatypes/bungee-api": "^0.0.3",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ccms/api": "^0.13.0",
|
||||
"@ccms/common": "^0.13.0",
|
||||
"@ccms/container": "^0.13.0"
|
||||
"@ccms/api": "^0.14.1",
|
||||
"@ccms/common": "^0.14.1",
|
||||
"@ccms/container": "^0.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"private": true,
|
||||
"name": "@ccms/client",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript client package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -22,10 +22,11 @@
|
||||
"test": "echo \"Error: run tests from root\" && exit 1"
|
||||
},
|
||||
"dependencies": {
|
||||
"minecraft-protocol": "^1.19.0"
|
||||
"minecraft-protocol": "^1.24.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^14.14.37",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,12 @@ import { createClient } from 'minecraft-protocol'
|
||||
import { attachForge } from './forge'
|
||||
import { attachEvents } from './event'
|
||||
|
||||
let username = process.argv[2] || 'Mr_jtb'
|
||||
let password = process.argv[3] || ''
|
||||
let version = process.argv[4] || '1.12.2'
|
||||
let readAddress = process.argv[5] || '192.168.2.5:25577'
|
||||
let readUserInfo = process.argv[2] || 'Mr_jtb'
|
||||
let realUserInfo = readUserInfo.split(":")
|
||||
let username = realUserInfo[0]
|
||||
let password = realUserInfo[1] || ''
|
||||
let version = process.argv[3] || '1.12.2'
|
||||
let readAddress = process.argv[4] || '192.168.2.25:25565'
|
||||
let realAddress = readAddress.split(":")
|
||||
let address = realAddress[0]
|
||||
let port = parseInt(realAddress[1] || "25565")
|
||||
@@ -18,17 +20,23 @@ function commandLineCreateClient() {
|
||||
}
|
||||
|
||||
function createConnection(host: string, port: number, username: string, password: string) {
|
||||
let client = createClient({
|
||||
let clientOptions: any = {
|
||||
version,
|
||||
host,
|
||||
port,
|
||||
username,
|
||||
password,
|
||||
clientToken: 'd02c7f39-2376-45da-a5a5-50e24fa8b185',
|
||||
// clientToken: 'd02c7f39-2376-45da-a5a5-50e24fa8b185',
|
||||
//@ts-ignore
|
||||
authServer: 'https://mcsso.yumc.pw/api/yggdrasil/authserver',
|
||||
sessionServer: 'https://mcsso.yumc.pw/api/yggdrasil/sessionserver'
|
||||
})
|
||||
// authServer: 'https://skin.yumc.pw/api/yggdrasil/authserver',
|
||||
// sessionServer: 'https://skin.yumc.pw/api/yggdrasil/sessionserver'
|
||||
}
|
||||
if (clientOptions.password) {
|
||||
clientOptions.clientToken = 'd02c7f39-2376-45da-a5a5-50e24fa8b185'
|
||||
clientOptions.authServer = 'https://skin.yumc.pw/api/yggdrasil/authserver'
|
||||
clientOptions.sessionServer = 'https://skin.yumc.pw/api/yggdrasil/sessionserver'
|
||||
}
|
||||
let client = createClient(clientOptions)
|
||||
|
||||
attachCommon(client)
|
||||
attachForge(client)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/common",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript api package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -19,11 +19,11 @@
|
||||
"test": "echo \"Error: run tests from root\" && exit 1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ccms/nashorn": "^0.13.0",
|
||||
"@ccms/nashorn": "^0.14.0",
|
||||
"@javatypes/jdk": "^0.0.3",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"gitHead": "562e2d00175c9d3a99c8b672aa07e6d92706a027"
|
||||
}
|
||||
|
||||
@@ -23,7 +23,7 @@ interface RequestConfig {
|
||||
}
|
||||
|
||||
function request(config: RequestConfig) {
|
||||
// @ts-ignore
|
||||
// @ts-ignore XMLHttpRequest class only exist nashorn polyfill
|
||||
let xhr = new XMLHttpRequest()
|
||||
xhr.open(config.method, config.url, false)
|
||||
for (const header in config.headers) {
|
||||
@@ -44,6 +44,7 @@ function request(config: RequestConfig) {
|
||||
if (xhr.getResponseHeader("Content-Type").indexOf('application/json') != -1) {
|
||||
xhr.responseType = "json"
|
||||
}
|
||||
// @ts-ignore get only exist nashorn polyfill
|
||||
return xhr.get()
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/compile",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.0",
|
||||
"description": "MiaoScript compile package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -21,6 +21,6 @@
|
||||
"devDependencies": {
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/container",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.0",
|
||||
"description": "MiaoScript container package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -19,13 +19,13 @@
|
||||
"test": "echo \"Error: run tests from root\" && exit 1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ccms/nashorn": "^0.13.0",
|
||||
"@ccms/nashorn": "^0.14.0",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"inversify": "^5.0.1",
|
||||
"inversify": "^5.0.5",
|
||||
"inversify-binding-decorators": "^4.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/core",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript api package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -21,11 +21,11 @@
|
||||
"devDependencies": {
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ccms/api": "^0.13.0",
|
||||
"@ccms/container": "^0.13.0"
|
||||
"@ccms/api": "^0.14.1",
|
||||
"@ccms/container": "^0.14.0"
|
||||
},
|
||||
"gitHead": "781524f83e52cad26d7c480513e3c525df867121"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/database",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript database package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -22,10 +22,10 @@
|
||||
"@javatypes/spring-jdbc": "^0.0.3",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ccms/api": "^0.13.0",
|
||||
"@ccms/container": "^0.13.0"
|
||||
"@ccms/api": "^0.14.1",
|
||||
"@ccms/container": "^0.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
ms.i18n.completed: "Internationalization component initialization completed. Current Language: English"
|
||||
ms.ployfill.initialize: "Initialization Java Nashorn ployfill. Please wait..."
|
||||
ms.ployfill.completed: "Java Nashorn ployfill loading completed... Cost ({time}s)!"
|
||||
ms.polyfill.initialize: "Initialization Java Nashorn polyfill. Please wait..."
|
||||
ms.polyfill.completed: "Java Nashorn polyfill loading completed... Cost ({time}s)!"
|
||||
|
||||
ms.core.ioc.initialize: "Initialization MiaoScript IOC Container {scope}/container. Please wait..."
|
||||
ms.core.ioc.completed: "MiaoScript IOC Container {scope}/container loading completed({time}s)!"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
ms.i18n.completed: "国际化组件 初始化完成 当前语言: 简体中文"
|
||||
ms.ployfill.initialize: "加载 Java Nashorn 补丁. 请稍候..."
|
||||
ms.ployfill.completed: "Java Nashorn 补丁 加载完成... 耗时 ({time}s)!"
|
||||
ms.polyfill.initialize: "加载 Java Nashorn 补丁. 请稍候..."
|
||||
ms.polyfill.completed: "Java Nashorn 补丁 加载完成... 耗时 ({time}s)!"
|
||||
|
||||
ms.core.ioc.initialize: "初始化 MiaoScript IOC 容器 {scope}/container. 请稍候..."
|
||||
ms.core.ioc.completed: "MiaoScript IOC 容器 {scope}/container 加载完成 耗时({time}s)"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/i18n",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript i18n package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -19,14 +19,14 @@
|
||||
"test": "echo \"Error: run tests from root\" && exit 1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ccms/nashorn": "^0.13.0",
|
||||
"@types/js-yaml": "^3.12.5",
|
||||
"@ccms/nashorn": "^0.14.0",
|
||||
"@types/js-yaml": "^4.0.0",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"js-yaml": "^3.14.0"
|
||||
"js-yaml": "^4.0.0"
|
||||
},
|
||||
"gitHead": "781524f83e52cad26d7c480513e3c525df867121"
|
||||
}
|
||||
|
||||
@@ -50,7 +50,7 @@ export class Translate {
|
||||
|
||||
readYamlFile(dir: string, name: string) {
|
||||
let langFile = this.concat(dir, 'languages', name + '.yml')
|
||||
return this.exists(langFile) && yaml.safeLoad(base.read(langFile))
|
||||
return this.exists(langFile) && yaml.load(base.read(langFile))
|
||||
}
|
||||
|
||||
concat(...args: string[]) {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/keyvalue",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript keyvalue package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -19,18 +19,18 @@
|
||||
"test": "echo \"Error: run tests from root\" && exit 1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ccms/api": "^0.13.0",
|
||||
"@ccms/common": "^0.13.0",
|
||||
"@ccms/container": "^0.13.0"
|
||||
"@ccms/api": "^0.14.1",
|
||||
"@ccms/common": "^0.14.1",
|
||||
"@ccms/container": "^0.14.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ccms/nashorn": "^0.13.0",
|
||||
"@ccms/nashorn": "^0.14.0",
|
||||
"@javatypes/amqp-client": "^0.0.3",
|
||||
"@javatypes/spring-amqp": "^0.0.3",
|
||||
"@javatypes/spring-rabbit": "^0.0.3",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"gitHead": "2589633069d24f646ac09261b1b2304c21d4ea75"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/nashorn",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.0",
|
||||
"description": "MiaoScript api package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -22,6 +22,6 @@
|
||||
"devDependencies": {
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/nodejs",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.0",
|
||||
"description": "MiaoScript nodejs package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -19,10 +19,10 @@
|
||||
"test": "echo \"Error: run tests from root\" && exit 1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ccms/nashorn": "^0.13.0",
|
||||
"@ccms/nashorn": "^0.14.0",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"gitHead": "781524f83e52cad26d7c480513e3c525df867121"
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/nukkit",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript nukkit package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -22,11 +22,11 @@
|
||||
"@javatypes/nukkit-api": "^0.0.3",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ccms/api": "^0.13.0",
|
||||
"@ccms/common": "^0.13.0",
|
||||
"@ccms/container": "^0.13.0"
|
||||
"@ccms/api": "^0.14.1",
|
||||
"@ccms/common": "^0.14.1",
|
||||
"@ccms/container": "^0.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,141 +0,0 @@
|
||||
(function nashornEventLoopMain(context) {
|
||||
'use strict';
|
||||
|
||||
var Thread = Java.type('java.lang.Thread');
|
||||
var Phaser = Java.type('java.util.concurrent.Phaser');
|
||||
var ArrayDeque = Java.type('java.util.ArrayDeque');
|
||||
var HashMap = Java.type('java.util.HashMap');
|
||||
var TimeUnit = Java.type("java.util.concurrent.TimeUnit");
|
||||
var Runnable = Java.type('java.lang.Runnable');
|
||||
|
||||
var globalTimerId;
|
||||
var timerMap;
|
||||
var eventLoop;
|
||||
var phaser = new Phaser();
|
||||
|
||||
// __NASHORN_POLYFILL_TIMER__ type is ScheduledExecutorService
|
||||
var scheduler = context.__NASHORN_POLYFILL_TIMER__;
|
||||
|
||||
resetEventLoop();
|
||||
|
||||
// console.log('main javasript thread ' + Thread.currentThread().getName());
|
||||
|
||||
function resetEventLoop() {
|
||||
globalTimerId = 1;
|
||||
if (timerMap) {
|
||||
timerMap.forEach(function(key, value) {
|
||||
value.cancel(true);
|
||||
})
|
||||
}
|
||||
timerMap = new HashMap();
|
||||
eventLoop = new ArrayDeque();
|
||||
}
|
||||
|
||||
function waitForMessages() {
|
||||
phaser.register();
|
||||
var wait = !(eventLoop.size() === 0);
|
||||
phaser.arriveAndDeregister();
|
||||
return wait;
|
||||
}
|
||||
|
||||
function processNextMessages() {
|
||||
var remaining = 1;
|
||||
while (remaining) {
|
||||
phaser.register();
|
||||
var message = eventLoop.removeFirst();
|
||||
remaining = eventLoop.size();
|
||||
phaser.arriveAndDeregister();
|
||||
|
||||
var fn = message.fn;
|
||||
var args = message.args;
|
||||
|
||||
try {
|
||||
fn.apply(context, args);
|
||||
} catch (e) {
|
||||
console.trace(e);
|
||||
console.trace(fn);
|
||||
console.trace(args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
context.nashornEventLoop = {
|
||||
process: function() {
|
||||
while (waitForMessages()) {
|
||||
processNextMessages()
|
||||
}
|
||||
},
|
||||
reset: resetEventLoop
|
||||
};
|
||||
|
||||
|
||||
function createRunnable(fn, timerId, args, repeated) {
|
||||
return new Runnable({
|
||||
run: function() {
|
||||
try {
|
||||
var phase = phaser.register();
|
||||
eventLoop.addLast({
|
||||
fn: fn,
|
||||
args: args
|
||||
});
|
||||
} catch (e) {
|
||||
console.trace(e);
|
||||
} finally {
|
||||
if (!repeated) timerMap.remove(timerId);
|
||||
phaser.arriveAndDeregister();
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
var setTimeout = function(fn, millis /* [, args...] */) {
|
||||
var args = [].slice.call(arguments, 2, arguments.length);
|
||||
|
||||
var timerId = globalTimerId++;
|
||||
var runnable = createRunnable(fn, timerId, args, false);
|
||||
|
||||
var task = scheduler.schedule(runnable, millis, TimeUnit.MILLISECONDS);
|
||||
timerMap.put(timerId, task);
|
||||
|
||||
return timerId;
|
||||
};
|
||||
|
||||
var setImmediate = function(fn /* [, args...] */) {
|
||||
var args = [].slice.call(arguments, 1, arguments.length);
|
||||
// @ts-ignore
|
||||
return setTimeout(fn, 0, args);
|
||||
}
|
||||
|
||||
var clearImmediate = function(timerId) {
|
||||
clearTimeout(timerId);
|
||||
}
|
||||
|
||||
var clearTimeout = function(timerId) {
|
||||
var task = timerMap.get(timerId);
|
||||
if (task) {
|
||||
task.cancel(true);
|
||||
timerMap.remove(timerId);
|
||||
}
|
||||
};
|
||||
|
||||
var setInterval = function(fn, delay /* [, args...] */) {
|
||||
var args = [].slice.call(arguments, 2, arguments.length);
|
||||
var timerId = globalTimerId++;
|
||||
var runnable = createRunnable(fn, timerId, args, true);
|
||||
var task = scheduler.scheduleWithFixedDelay(runnable, delay, delay, TimeUnit.MILLISECONDS);
|
||||
timerMap.put(timerId, task);
|
||||
return timerId;
|
||||
};
|
||||
|
||||
var clearInterval = function(timerId) {
|
||||
clearTimeout(timerId);
|
||||
};
|
||||
|
||||
context.setTimeout = setTimeout;
|
||||
context.clearTimeout = clearTimeout;
|
||||
context.setImmediate = setImmediate;
|
||||
context.clearImmediate = clearImmediate;
|
||||
context.setInterval = setInterval;
|
||||
context.clearInterval = clearInterval;
|
||||
// @ts-ignore
|
||||
})(typeof global !== "undefined" && global || typeof self !== "undefined" && self || this);
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/plugin",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript api package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -19,16 +19,16 @@
|
||||
"test": "echo \"Error: run tests from root\" && exit 1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/js-yaml": "^3.12.5",
|
||||
"@types/js-yaml": "^4.0.0",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ccms/api": "^0.13.0",
|
||||
"@ccms/common": "^0.13.0",
|
||||
"@ccms/container": "^0.13.0",
|
||||
"@ccms/i18n": "^0.13.0",
|
||||
"js-yaml": "^3.14.0"
|
||||
"@ccms/api": "^0.14.1",
|
||||
"@ccms/common": "^0.14.1",
|
||||
"@ccms/container": "^0.14.0",
|
||||
"@ccms/i18n": "^0.14.1",
|
||||
"js-yaml": "^4.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,10 @@ export interface PluginConfigLoader {
|
||||
|
||||
export class YamlPluginConfig implements PluginConfigLoader {
|
||||
load(content: string) {
|
||||
return yaml.safeLoad(content)
|
||||
return yaml.load(content)
|
||||
}
|
||||
dump(variable: any): string {
|
||||
return yaml.safeDump(variable, { skipInvalid: true, lineWidth: 120 })
|
||||
return yaml.dump(variable, { skipInvalid: true, lineWidth: 120 })
|
||||
}
|
||||
}
|
||||
|
||||
@@ -95,7 +95,7 @@ export class PluginConfigManager {
|
||||
if (metadata.default) {
|
||||
let needSave = false
|
||||
for (const key of Object.keys(metadata.default)) {
|
||||
if (!value[key]) {
|
||||
if (value[key] == undefined) {
|
||||
value[key] = metadata.default[key]
|
||||
needSave = true
|
||||
}
|
||||
|
||||
33
packages/plugins/docs/MiaoMail.md
Normal file
33
packages/plugins/docs/MiaoMail.md
Normal file
@@ -0,0 +1,33 @@
|
||||
private static void injectInventoryAddItemMethod() {
|
||||
System.out.println("Injectoring Mail...");
|
||||
try {
|
||||
ClassPool pool = ClassPool.getDefault();
|
||||
String inventoryClassName = Bukkit.getServer().getClass().getPackage().getName() + ".inventory.CraftInventory";
|
||||
File classFile = new File(URLDecoder.decode(InventoryDragEvent.class.getProtectionDomain().getCodeSource().getLocation().getPath().split("!")[0], "UTF-8"));
|
||||
pool.appendClassPath(classFile.getPath());
|
||||
classFile = new File(URLDecoder.decode(MailPlugin.class.getProtectionDomain().getCodeSource().getLocation().getPath().split("!")[0], "UTF-8"));
|
||||
pool.appendClassPath(classFile.getPath());
|
||||
CtClass inventoryClass = pool.get(inventoryClassName);
|
||||
CtMethod addItemMethod = inventoryClass.getDeclaredMethod("addItem");
|
||||
|
||||
addItemMethod.insertAfter(
|
||||
"if(this instanceof org.bukkit.inventory.PlayerInventory){"
|
||||
+ " final org.bukkit.inventory.PlayerInventory playerInventory = (org.bukkit.inventory.PlayerInventory)this;"
|
||||
+ " final org.bukkit.entity.Player player = (org.bukkit.entity.Player)playerInventory.getHolder();"
|
||||
+ " if(!$_.values().isEmpty()){"
|
||||
+ " org.bukkit.event.inventory.InventoryDragEvent event = new org.bukkit.event.inventory.InventoryDragEvent(player.getOpenInventory(), new org.bukkit.inventory.ItemStack(org.bukkit.Material.AIR), new org.bukkit.inventory.ItemStack(org.bukkit.Material.AIR), true, $_);"
|
||||
+ " event.setCancelled(true);"
|
||||
+ " event.setResult(org.bukkit.event.Event.Result.DENY);"
|
||||
+ " org.bukkit.Bukkit.getPluginManager().callEvent(event);"
|
||||
+ " }"
|
||||
+ "}");
|
||||
try {
|
||||
inventoryClass.toClass();
|
||||
System.out.println("Injected");
|
||||
} catch (Exception e) {
|
||||
System.out.println("Inject fail, Please restart server");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
14
packages/plugins/docs/MiaoPay.md
Normal file
14
packages/plugins/docs/MiaoPay.md
Normal file
@@ -0,0 +1,14 @@
|
||||
# MiaoPay
|
||||
|
||||
## 安装方式
|
||||
先按照帖子
|
||||
|
||||
### 网关
|
||||
- https://pay.yumc.pw/api
|
||||
|
||||
### 相关接口
|
||||
|
||||
#### 创建订单
|
||||
- METHOD: /create
|
||||
- PARAM:
|
||||
-
|
||||
112
packages/plugins/docs/MiaoReport.md
Normal file
112
packages/plugins/docs/MiaoReport.md
Normal file
@@ -0,0 +1,112 @@
|
||||
# MiaoReport(喵式报告)
|
||||
|
||||
## 插件简介
|
||||
|
||||
- 本插件只有一个功能 就是上报当前服务器信息和运行日志到 Ubuntu Paste
|
||||
- 适用于哪些 有问题 但是不知道怎么提供报错的用户
|
||||
|
||||
## 插件命令
|
||||
|
||||
- 只有一个 `/mbrp`
|
||||
- 并且只有 OP 权限用户才可以执行
|
||||
|
||||
## 功能预览
|
||||
|
||||
- 报告地址 https://paste.ubuntu.com/p/mVjJtb6Xcg/
|
||||
- 报告详情(已删除无用信息 并不是完整报告)
|
||||
|
||||
```
|
||||
当前报告由 MiaoBugReport(0.0.1) 生成 作者 MiaoWoo 官网 https://w.yumc.pw
|
||||
生成时间: 2021-02-13 21:52:54
|
||||
============================== 以下为本次报告内容 ==============================
|
||||
服务器版本: git-Spigot-dcd1643-e60fc34 (MC: 1.12.2)
|
||||
Bukkit版本: 1.12.2-R0.1-SNAPSHOT
|
||||
============================== 运行数据 ==============================
|
||||
运行时间: 1 小时 25 分 48 秒
|
||||
CPU 核心: 16
|
||||
最大内存: 7282 MB
|
||||
分配内存: 626 MB
|
||||
空闲内存: 307 MB
|
||||
============================== 数据统计 ==============================
|
||||
世界列表:
|
||||
- world(NORMAL)
|
||||
- 已加载区块: 272
|
||||
- 实体数量: 146
|
||||
- Tile数量: 10
|
||||
- 玩家数量: 0
|
||||
- world_nether(NETHER)
|
||||
- 已加载区块: 0
|
||||
- 实体数量: 0
|
||||
- Tile数量: 0
|
||||
- 玩家数量: 0
|
||||
- world_the_end(THE_END)
|
||||
- 已加载区块: 0
|
||||
- 实体数量: 0
|
||||
- Tile数量: 0
|
||||
- 玩家数量: 0
|
||||
在线玩家: Mr_jtb
|
||||
插件列表: MiaoBugReport(0.0.1)
|
||||
============================== 服务器线程堆栈 ==============================
|
||||
"Spigot Metrics Thread" daemon prio=5 id=32
|
||||
java.lang.Thread.State: TIMED_WAITING
|
||||
at java.lang.Object.wait(Native Method)
|
||||
at java.util.TimerThread.mainLoop(Unknown Source)
|
||||
at java.util.TimerThread.run(Unknown Source)
|
||||
|
||||
"Spigot Watchdog Thread" prio=5 id=31
|
||||
java.lang.Thread.State: TIMED_WAITING
|
||||
at java.lang.Thread.sleep(Native Method)
|
||||
at org.spigotmc.WatchdogThread.run(WatchdogThread.java:92)
|
||||
|
||||
"Server thread" prio=5 id=26
|
||||
java.lang.Thread.State: TIMED_WAITING
|
||||
at java.lang.Thread.sleep(Native Method)
|
||||
at net.minecraft.server.v1_12_R1.MinecraftServer.run(MinecraftServer.java:560)
|
||||
at java.lang.Thread.run(Unknown Source)
|
||||
|
||||
"Server console handler" daemon prio=5 id=29
|
||||
java.lang.Thread.State: RUNNABLE
|
||||
at org.fusesource.jansi.internal.Kernel32.ReadConsoleInputW(Native Method)
|
||||
at org.fusesource.jansi.internal.Kernel32.readConsoleInputHelper(Kernel32.java:761)
|
||||
at org.fusesource.jansi.internal.Kernel32.readConsoleKeyInput(Kernel32.java:794)
|
||||
at org.fusesource.jansi.internal.WindowsSupport.readConsoleInput(WindowsSupport.java:97)
|
||||
at org.bukkit.craftbukkit.libs.jline.WindowsTerminal.readConsoleInput(WindowsTerminal.java:215)
|
||||
at org.bukkit.craftbukkit.libs.jline.WindowsTerminal.access$000(WindowsTerminal.java:55)
|
||||
at org.bukkit.craftbukkit.libs.jline.WindowsTerminal$1.read(WindowsTerminal.java:157)
|
||||
at org.bukkit.craftbukkit.libs.jline.internal.NonBlockingInputStream.read(NonBlockingInputStream.java:169)
|
||||
at org.bukkit.craftbukkit.libs.jline.internal.NonBlockingInputStream.read(NonBlockingInputStream.java:137)
|
||||
at org.bukkit.craftbukkit.libs.jline.internal.NonBlockingInputStream.read(NonBlockingInputStream.java:246)
|
||||
at org.bukkit.craftbukkit.libs.jline.internal.InputStreamReader.read(InputStreamReader.java:261)
|
||||
at org.bukkit.craftbukkit.libs.jline.internal.InputStreamReader.read(InputStreamReader.java:198)
|
||||
at org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readCharacter(ConsoleReader.java:2145)
|
||||
at org.bukkit.craftbukkit.libs.jline.console.ConsoleReader.readLine(ConsoleReader.java:2349)
|
||||
at net.minecraft.server.v1_12_R1.DedicatedServer$2.run(DedicatedServer.java:85)
|
||||
|
||||
"Netty Server IO #0" daemon prio=5 id=34
|
||||
java.lang.Thread.State: RUNNABLE
|
||||
at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll0(Native Method)
|
||||
at sun.nio.ch.WindowsSelectorImpl$SubSelector.poll(Unknown Source)
|
||||
at sun.nio.ch.WindowsSelectorImpl$SubSelector.access$400(Unknown Source)
|
||||
at sun.nio.ch.WindowsSelectorImpl.doSelect(Unknown Source)
|
||||
at sun.nio.ch.SelectorImpl.lockAndDoSelect(Unknown Source)
|
||||
at sun.nio.ch.SelectorImpl.select(Unknown Source)
|
||||
at io.netty.channel.nio.SelectedSelectionKeySetSelector.select(SelectedSelectionKeySetSelector.java:62)
|
||||
at io.netty.channel.nio.NioEventLoop.select(NioEventLoop.java:753)
|
||||
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:409)
|
||||
at io.netty.util.concurrent.SingleThreadEventExecutor$5.run(SingleThreadEventExecutor.java:884)
|
||||
at java.lang.Thread.run(Unknown Source)
|
||||
...忽略其他线程信息
|
||||
============================== 本次运行日志 ==============================
|
||||
[20:27:18] [Server thread/INFO]: Starting minecraft server version 1.12.2
|
||||
...忽略启动日志
|
||||
[20:27:27] [Server thread/INFO]: [MiaoBugReport] Enabling MiaoBugReport v0.0.1
|
||||
[20:27:28] [Server thread/INFO]: Server permissions file permissions.yml is empty, ignoring it
|
||||
[20:27:28] [Server thread/INFO]: Done (8.205s)! For help, type "help" or "?"
|
||||
[20:27:53] [Craft Scheduler Thread - 0/INFO]: [0;33;22m[[0;36;1mMiaoBugReport[0;33;22m][m [0;32;1m正在生成日志数据...[m
|
||||
[20:27:55] [Craft Scheduler Thread - 0/INFO]: [0;33;22m[[0;36;1mMiaoBugReport[0;33;22m][m [0;32;1m正在上报数据至UbuntuPaste...[m
|
||||
[20:27:55] [Craft Scheduler Thread - 0/INFO]: [0;33;22m[[0;36;1mMiaoBugReport[0;33;22m][m [0;32;1m数据上报完成 您可以分享地址给他人[m
|
||||
============================== 报告结束 ==============================
|
||||
```
|
||||
|
||||
## 下载地址
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"private": true,
|
||||
"name": "@ccms/plugins",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript plugins package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -29,13 +29,13 @@
|
||||
"@types/crypto-js": "^4.0.1",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@babel/standalone": "^7.12.9",
|
||||
"@ccms/api": "^0.13.0",
|
||||
"@ccms/container": "^0.13.0",
|
||||
"@ccms/plugin": "^0.13.0",
|
||||
"@babel/standalone": "^7.13.12",
|
||||
"@ccms/api": "^0.14.1",
|
||||
"@ccms/container": "^0.14.0",
|
||||
"@ccms/plugin": "^0.14.1",
|
||||
"crypto-js": "^4.0.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ let help = [
|
||||
'§6/mconsole §areload §6- §3重载插件',
|
||||
]
|
||||
|
||||
@plugin({ prefix: 'Console', version: '1.1.0', author: 'MiaoWoo', servers: ['!nukkit'], source: __filename })
|
||||
@plugin({ prefix: 'Console', version: '1.1.1', author: 'MiaoWoo', servers: ['!nukkit'], source: __filename })
|
||||
export class MiaoConsole extends interfaces.Plugin {
|
||||
@Autowired(ContainerInstance)
|
||||
private container: Container
|
||||
@@ -43,6 +43,7 @@ export class MiaoConsole extends interfaces.Plugin {
|
||||
private appender: any
|
||||
private handler: any
|
||||
private babel: any
|
||||
private downgrade = true
|
||||
|
||||
private logCache: string[] = []
|
||||
|
||||
@@ -59,17 +60,23 @@ export class MiaoConsole extends interfaces.Plugin {
|
||||
}
|
||||
process.on('message', (msg) => {
|
||||
this.logCache.push(msg)
|
||||
if (this.logCache.length > 30) {
|
||||
this.logCache = this.logCache.slice(this.logCache.length - 30, this.logCache.length)
|
||||
if (this.logCache.length > 100) {
|
||||
this.logCache = this.logCache.slice(this.logCache.length - 100, this.logCache.length)
|
||||
}
|
||||
})
|
||||
this.task.create(() => {
|
||||
if (!this.babel) {
|
||||
this.logger.console('§3脚本 Babel 引擎初始化中 请稍候...')
|
||||
let startTime = Date.now()
|
||||
this.babel = require('@babel/standalone')
|
||||
this.compileCode(`() => console.log("Babel ready!")`)
|
||||
this.logger.console(`§3脚本 Babel 引擎初始化完毕 耗时 §a${Date.now() - startTime}ms...`)
|
||||
try {
|
||||
this.logger.console('§3脚本 Babel 引擎初始化中 请稍候...')
|
||||
let startTime = Date.now()
|
||||
this.babel = require('@babel/standalone')
|
||||
this.compileCode(`() => console.log("Babel ready!")`)
|
||||
this.logger.console(`§3脚本 Babel 引擎初始化完毕 耗时 §a${Date.now() - startTime}ms...`)
|
||||
this.downgrade = false
|
||||
} catch (error) {
|
||||
this.logger.console(`§c脚本 Babel 引擎初始化失败 将无法使用ES5以上语法!`)
|
||||
console.ex(error)
|
||||
}
|
||||
}
|
||||
}).async().submit()
|
||||
}
|
||||
@@ -332,6 +339,17 @@ export class MiaoConsole extends interfaces.Plugin {
|
||||
}
|
||||
|
||||
private compileCode(code: string) {
|
||||
if (!this.downgrade && this.babel?.transform) {
|
||||
code = this.babel.transform(code, {
|
||||
filename: 'miaoconsole-temp.ts',
|
||||
presets: ['typescript', 'es2015'],
|
||||
plugins: [
|
||||
['proposal-decorators', { legacy: true }],
|
||||
'transform-runtime'
|
||||
],
|
||||
sourceMaps: "inline"
|
||||
}).code
|
||||
}
|
||||
return `var api = require('@ccms/api');
|
||||
if (this.serverType == "spring") {
|
||||
var dbm = container.get(api.database.DataBaseManager)
|
||||
@@ -339,15 +357,7 @@ if (this.serverType == "spring") {
|
||||
var bf = base.getInstance().getAutowireCapableBeanFactory()
|
||||
}
|
||||
var startTime = Date.now()
|
||||
var result = eval(${JSON.stringify(this.babel.transform(code, {
|
||||
filename: 'miaoconsole-temp.ts',
|
||||
presets: ['typescript', 'es2015'],
|
||||
plugins: [
|
||||
['proposal-decorators', { legacy: true }],
|
||||
'transform-runtime'
|
||||
],
|
||||
sourceMaps: "inline"
|
||||
}).code)});
|
||||
var result = eval(${JSON.stringify(code)});
|
||||
return '§3代码执行完成 耗时 §e' + (Date.now() - startTime) + 'ms §a返回结果: §r'+ result`
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,12 +4,14 @@
|
||||
|
||||
import { plugin, server, task } from '@ccms/api'
|
||||
import { Autowired, JSClass } from '@ccms/container'
|
||||
import { Cmd, Config, interfaces, JSPlugin, PluginConfig, Tab } from '@ccms/plugin'
|
||||
import { Cmd, Config, interfaces, JSPlugin, Listener, PluginConfig, Tab } from '@ccms/plugin'
|
||||
|
||||
import type { MiaoReward } from './MiaoReward'
|
||||
import http from '@ccms/common/dist/http'
|
||||
import * as CryptoJS from "crypto-js"
|
||||
|
||||
const Thread = java.lang.Thread
|
||||
|
||||
interface PlayerPointsAPI {
|
||||
look(name: string)
|
||||
give(name: string, amount: number)
|
||||
@@ -18,14 +20,15 @@ interface PlayerPointsAPI {
|
||||
|
||||
interface Order {
|
||||
order_id: string
|
||||
amount: string
|
||||
url: string
|
||||
amount: number
|
||||
url?: string
|
||||
}
|
||||
interface Sync {
|
||||
scaned: boolean
|
||||
start?: number
|
||||
left?: number
|
||||
cancelled?: boolean
|
||||
paying?: boolean
|
||||
}
|
||||
|
||||
interface PlaceholderAPI {
|
||||
@@ -36,15 +39,41 @@ interface PlaceholderAPI {
|
||||
|
||||
const defaultConfig = {
|
||||
prefix: '§6[§b喵式支付§6]',
|
||||
name: '',
|
||||
id: '',
|
||||
secret: '',
|
||||
command: 'p give %player_name% %amount%',
|
||||
command: 'points give %player_name% %amount%',
|
||||
check: '%playerpoints_points%',
|
||||
ratio: 100,
|
||||
coinName: '点券'
|
||||
coinName: '点券',
|
||||
reward: {
|
||||
'*': [
|
||||
'msg %player_name% 充值 %amount% 点券成功...'
|
||||
],
|
||||
10: [
|
||||
"points give %player_name% 1",
|
||||
'msg %player_name% 充值 10 点券 奖励 1 点券...'
|
||||
],
|
||||
300: [
|
||||
"points give %player_name% 15",
|
||||
'msg %player_name% 充值 300 点券 奖励 15 点券...'
|
||||
],
|
||||
500: [
|
||||
"points give %player_name% 25",
|
||||
'msg %player_name% 充值 500 点券 奖励 25 点券...'
|
||||
],
|
||||
680: [
|
||||
"points give %player_name% 35",
|
||||
'msg %player_name% 充值 680 点券 奖励 35 点券...'
|
||||
],
|
||||
1280: [
|
||||
"points give %player_name% 70",
|
||||
'msg %player_name% 充值 1280 点券 奖励 70 点券...'
|
||||
],
|
||||
}
|
||||
}
|
||||
|
||||
@JSPlugin({ version: '1.2.0', author: 'MiaoWoo', source: __filename, depends: ['MiaoReward'], nativeDepends: ['PlaceholderAPI'] })
|
||||
@JSPlugin({ version: '1.3.5', author: 'MiaoWoo', source: __filename, depends: ['MiaoReward'], nativeDepends: ['PlaceholderAPI'] })
|
||||
export class MiaoPay extends interfaces.Plugin {
|
||||
@Autowired()
|
||||
private server: server.Server
|
||||
@@ -56,6 +85,7 @@ export class MiaoPay extends interfaces.Plugin {
|
||||
@JSClass('me.clip.placeholderapi.PlaceholderAPI')
|
||||
private PlaceholderAPI: PlaceholderAPI
|
||||
|
||||
private apiGateWay = "https://pay.yumc.pw"
|
||||
private MiaoReward: MiaoReward
|
||||
|
||||
private cacheMap = new Map<string, Order>();
|
||||
@@ -75,14 +105,6 @@ export class MiaoPay extends interfaces.Plugin {
|
||||
needSave && this.config.save()
|
||||
}
|
||||
|
||||
cmdtest(sender: org.bukkit.entity.Player) {
|
||||
try {
|
||||
this.logger.sender(sender, this.getPlayerAmount(sender))
|
||||
} catch (error) {
|
||||
return this.logger.sender(sender, error.message)
|
||||
}
|
||||
}
|
||||
|
||||
enable() {
|
||||
this.MiaoReward = this.pluginManager.getPlugin('MiaoReward') as MiaoReward
|
||||
if (!this.MiaoReward) { return this.logger.error('当前脚本插件需要 MiaoReward 作为前置脚本插件!') }
|
||||
@@ -99,7 +121,7 @@ export class MiaoPay extends interfaces.Plugin {
|
||||
@Cmd({ autoMain: true })
|
||||
mpay() { }
|
||||
|
||||
cmdpay(sender: org.bukkit.entity.Player, amount: number) {
|
||||
cmdpay(sender: org.bukkit.entity.Player, amount: number = 0) {
|
||||
if (!sender.getItemInHand) { return this.logger.sender(sender, '§4控制台无法执行此命令!') }
|
||||
if (!this.MiaoReward.serverInfo) { return this.logger.sender(sender, '§4当前服务器尚未配置 请联系管理员先配置MiaoReward!') }
|
||||
if (!this.config.id || !this.config.secret) { return this.logger.sender(sender, '§c当前服务器尚未配置 请联系管理员配置支付密钥!') }
|
||||
@@ -107,24 +129,28 @@ export class MiaoPay extends interfaces.Plugin {
|
||||
this.logger.sender(sender, '§c您有一笔订单尚未完成 请完成支付或等待订单超时!')
|
||||
let sync = this.cacheSyncMap.get(sender.getName())
|
||||
if (!sync.cancelled) { return }
|
||||
sync.left = 55 - (Math.round(Date.now() / 1000) - sync.start)
|
||||
sync.scaned = false
|
||||
sync.left = (sync.paying ? 100 : 55) - (Math.round(Date.now() / 1000) - sync.start)
|
||||
let order = this.cacheMap.get(sender.getName())
|
||||
this.MiaoReward.setItemAndTp(sender, order.url, sync, `充值 ${order.amount} ${this.config.coinName}`, `支付宝/微信/QQ 扫码支付`)
|
||||
this.MiaoReward.setItemAndTp(sender, order.url, sync, `充值 ${this.config.ratio * order.amount} ${this.config.coinName}`, `支付宝/微信/QQ 扫码支付`)
|
||||
return
|
||||
}
|
||||
if (amount < 1) { return this.logger.sender(sender, `§c充值异常 §4充值金额不得小于 1 ${this.config.coinName}!`) }
|
||||
if (amount / this.config.ratio > 1000) { return this.logger.sender(sender, `§c充值异常 §4充值金额不得大于 ${this.config.ratio * 1000} ${this.config.coinName}!`) }
|
||||
if (amount != Math.round(amount)) { return this.logger.sender(sender, `§c充值异常 §4充值金额必须为整数!`) }
|
||||
try {
|
||||
this.getPlayerAmount(sender)
|
||||
} catch (error) {
|
||||
return this.logger.sender(sender, error.message)
|
||||
return this.logger.sender(sender, error.message || error)
|
||||
}
|
||||
this.MiaoReward.sendTitle(sender, `§6充值 §a${amount} §6${this.config.coinName}`, '§c正在请求充值二维码 请稍候...')
|
||||
let sync = { scaned: false, start: Math.round(Date.now() / 1000) }
|
||||
let sync: any = { scaned: false, start: Math.round(Date.now() / 1000) }
|
||||
let order = this.createOrder(sender, amount)
|
||||
this.cacheMap.set(sender.getName(), order)
|
||||
this.cacheSyncMap.set(sender.getName(), sync)
|
||||
let order_id = order.order_id
|
||||
this.MiaoReward.setItemAndTp(sender, order.url, sync, `充值 ${amount} ${this.config.coinName}`, `支付宝/微信/QQ 扫码支付`)
|
||||
this.logger.sender(sender, [`§3请使用 §b支付宝§3/§a微信§3/§5QQ §3扫描二维码支付!`, `§c如未显示二维码 请打开下列网址完成充值!`, `§6地址: §3${order.url}`])
|
||||
this.taskManager.create(() => {
|
||||
try {
|
||||
let status = this.queryStatus(order_id, 0, 55)
|
||||
@@ -132,15 +158,15 @@ export class MiaoPay extends interfaces.Plugin {
|
||||
this.MiaoReward.sendTitle(sender, '§a已扫码', `§3订单已创建 请及时支付!`)
|
||||
this.MiaoReward.sendActionBar(sender, '§6订单号: §3' + order_id)
|
||||
sync.scaned = true
|
||||
status = this.queryStatus(order_id, 1, 120)
|
||||
sync.start = Math.round(Date.now() / 1000)
|
||||
sync.paying = true
|
||||
status = this.queryStatus(order_id, 1, 100)
|
||||
if (status.code != 200) { throw new Error('§c支付超时 请重新充值!') }
|
||||
if (status.data == 2) {
|
||||
this.MiaoReward.sendTitle(sender, '§a已支付', `§3订单已支付 请等待充值到账...`)
|
||||
this.MiaoReward.sendActionBar(sender, '§6订单号: §3' + order_id)
|
||||
this.logger.sender(sender, `§6订单号: §3${order_id} §a支付成功!`)
|
||||
this.recharge(sender, order_id, order.amount)
|
||||
} else {
|
||||
this.logger.sender(sender, `§c充值系统异常 §4订单状态异常${status.data} §c点券可能未到账 请联系管理员!`)
|
||||
this.recharge(sender, order)
|
||||
}
|
||||
} catch (error) {
|
||||
let cacheOrder = this.cacheMap.get(sender.getName())
|
||||
@@ -172,46 +198,120 @@ export class MiaoPay extends interfaces.Plugin {
|
||||
])
|
||||
if (order.status > 1 && order.status < 4) {
|
||||
this.logger.sender(sender, `§3当前订单已支付 尚未完成充值 开始补单操作...`)
|
||||
this.recharge(sender, id, order.amount)
|
||||
this.recharge(sender, order)
|
||||
}
|
||||
}).async().submit()
|
||||
}
|
||||
|
||||
cmdcheck(sender: org.bukkit.entity.Player, force = 1) {
|
||||
this.logger.sender(sender, `§3正在检查需要补单充值的订单 请稍候...`)
|
||||
this.taskManager.create(() => {
|
||||
let result = this.queryUnconverted(sender.getName(), force)
|
||||
if (result.code != 200) { return this.logger.sender(sender, `§c订单查询失败: ${result.msg}`) }
|
||||
let unconverteds = result.data
|
||||
if (!unconverteds.length) { return this.logger.sender(sender, `§c未发现需要进行补单充值的订单!`) }
|
||||
this.logger.sender(sender, `§3发现 §a${unconverteds.length}笔 §3未充值订单 §c正在充值 请稍候...`)
|
||||
for (const unconverted of unconverteds) {
|
||||
this.logger.sender(sender, `§3正在处理订单 §a${unconverted.order_id} §3请稍候...`)
|
||||
this.recharge(sender, unconverted)
|
||||
Thread.sleep(300)
|
||||
}
|
||||
}).async().submit()
|
||||
}
|
||||
|
||||
/**
|
||||
* 请在异步线程执行此方法
|
||||
* @param amount 订单金额(非点券金额)
|
||||
*/
|
||||
recharge(sender: org.bukkit.entity.Player, order_id: string, amount: number) {
|
||||
let point = amount * this.config.ratio
|
||||
this.taskManager.create(() => {
|
||||
let finish = this.preFinishOrder(order_id)
|
||||
if (finish.code != 200) {
|
||||
return this.logger.console(`§c充值系统异常 订单 §3${order_id} 预标记异常! §4${this.config.coinName}已停止充值 §c请手动补单!`)
|
||||
recharge(sender: org.bukkit.entity.Player, order: Order) {
|
||||
let order_id = order.order_id
|
||||
let amount = order.amount
|
||||
let point = this.safeMultiply(amount, this.config.ratio)
|
||||
let finish = this.preFinishOrder(order_id)
|
||||
if (finish.code != 200) {
|
||||
this.sendError(sender, order_id, amount, '§4充值预标记异常!')
|
||||
return this.logger.console(`§c充值系统异常 订单 §3${order_id} 预标记异常! §4${this.config.coinName}已停止充值 §c请手动补单!`)
|
||||
}
|
||||
this.taskManager.callSyncMethod(() => {
|
||||
let prePoint = this.getPlayerAmount(sender)
|
||||
let command = this.config.command.replace('%player_name%', sender.getName()).replace('%amount%', `${point}`).replace('%remark%', `${order_id}`)
|
||||
if (!this.server.dispatchConsoleCommand(command)) {
|
||||
return this.sendError(sender, order_id, amount, '§4充值命令执行异常!')
|
||||
}
|
||||
this.checkRecharge(sender, order_id, amount, prePoint, point)
|
||||
})
|
||||
}
|
||||
|
||||
@Listener()
|
||||
private PlayerJoinEvent(event: org.bukkit.event.player.PlayerJoinEvent) {
|
||||
const player = event.getPlayer()
|
||||
this.cmdcheck(player, 0)
|
||||
}
|
||||
|
||||
private checkRecharge(sender: org.bukkit.entity.Player, order_id: string, amount: number, prePoint: number, point: number) {
|
||||
this.taskManager.create(() => {
|
||||
let nowPoint = this.checkNowPoint(sender, point, prePoint)
|
||||
if (nowPoint === false) {
|
||||
return this.sendError(sender, order_id, amount, '§4充值结果检测异常!')
|
||||
}
|
||||
this.logger.sender(sender, [
|
||||
`§6充值 §a${point} §6${this.config.coinName} §a成功 §6当前账户余额: §3${nowPoint} §6${this.config.coinName}`,
|
||||
`§c如出现未到账的情况 请联系管理员!`
|
||||
])
|
||||
this.rewardOrder(sender, order_id, point)
|
||||
let finish = this.finishOrder(order_id)
|
||||
if (finish.code != 200) {
|
||||
return this.logger.console(`§c充值系统异常 订单 §3${order_id} 完成标记异常! §4${this.config.coinName}可能重复到账!`)
|
||||
}
|
||||
this.taskManager.callSyncMethod(() => {
|
||||
let prePoint = this.getPlayerAmount(sender)
|
||||
let command = this.config.command.replace('%player_name%', sender.getName()).replace('%amount%', `${point}`).replace('%remark%', `${order_id}`)
|
||||
if (!this.server.dispatchConsoleCommand(command)) {
|
||||
return this.sendError(sender, order_id, amount, '§4充值命令执行异常!')
|
||||
}
|
||||
let nowPoint = this.getPlayerAmount(sender)
|
||||
if (nowPoint != prePoint + point) {
|
||||
return this.sendError(sender, order_id, amount, '§4充值结果检测异常!')
|
||||
} else {
|
||||
this.taskManager.create(() => {
|
||||
this.logger.sender(sender, [
|
||||
`§6充值 §a${point} §6${this.config.coinName} §a成功 §6当前账户余额: §3${nowPoint} §6${this.config.coinName}`,
|
||||
`§c如出现未到账的情况 请联系管理员!`
|
||||
])
|
||||
let finish = this.finishOrder(order_id)
|
||||
if (finish.code != 200) {
|
||||
return this.logger.console(`§c充值系统异常 订单 §3${order_id} 完成标记异常! §4${this.config.coinName}可能重复到账!`)
|
||||
}
|
||||
}).async().submit()
|
||||
}
|
||||
})
|
||||
}).async().submit()
|
||||
}
|
||||
|
||||
private checkNowPoint(sender: org.bukkit.entity.Player, point: number, prePoint: number) {
|
||||
let nowPoint = this.getPlayerAmount(sender)
|
||||
if (nowPoint == prePoint + point) {
|
||||
return nowPoint
|
||||
}
|
||||
Thread.sleep(100)
|
||||
nowPoint = this.getPlayerAmount(sender)
|
||||
if (nowPoint == prePoint + point) {
|
||||
return nowPoint
|
||||
}
|
||||
Thread.sleep(200)
|
||||
nowPoint = this.getPlayerAmount(sender)
|
||||
if (nowPoint == prePoint + point) {
|
||||
return nowPoint
|
||||
}
|
||||
Thread.sleep(300)
|
||||
nowPoint = this.getPlayerAmount(sender)
|
||||
return false
|
||||
}
|
||||
|
||||
private rewardOrder(sender, order_id, point) {
|
||||
this.taskManager.callSyncMethod(() => {
|
||||
try {
|
||||
if (this.config.reward['*']) {
|
||||
let rewardCommands: string[] = this.config.reward['*']
|
||||
for (const command of rewardCommands) {
|
||||
this.dispatchConsoleCommand(sender, command, point, order_id)
|
||||
}
|
||||
}
|
||||
let rewardCommands: string[] = this.config.reward[point]
|
||||
if (rewardCommands && rewardCommands.length) {
|
||||
for (const command of rewardCommands) {
|
||||
this.dispatchConsoleCommand(sender, command, point, order_id)
|
||||
}
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('§4充值奖励命令执行错误: §c' + error)
|
||||
console.ex(error)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private dispatchConsoleCommand(sender, command, point, order_id) {
|
||||
return this.server.dispatchConsoleCommand(command.replace('%player_name%', sender.getName()).replace('%amount%', `${point}`).replace('%remark%', `${order_id}`))
|
||||
}
|
||||
|
||||
sendError(sender: org.bukkit.entity.Player, order_id: string, amount: number, error: string) {
|
||||
return this.logger.sender(sender, [
|
||||
`§c========== ${this.config.prefix}§4充值异常 §c==========`,
|
||||
@@ -220,7 +320,7 @@ export class MiaoPay extends interfaces.Plugin {
|
||||
`§6异常原因: §4${error}`,
|
||||
`§6异常账号: §b${sender.getName()}`,
|
||||
`§6异常时间: §a${new Date().toLocaleDateString()} ${new Date().toLocaleTimeString()}`,
|
||||
`§c如果已付款但${this.config.coinName}未到账 请截图发往QQ群!`,
|
||||
`§c如果已付款但${this.config.coinName}未到账 请截图发给腐竹!`,
|
||||
`§c========== ${this.config.prefix}§4充值异常 §c==========`,
|
||||
])
|
||||
}
|
||||
@@ -228,11 +328,16 @@ export class MiaoPay extends interfaces.Plugin {
|
||||
@Tab()
|
||||
tabmpay() { }
|
||||
|
||||
private safeMultiply(a: number, b: number) {
|
||||
return parseFloat((a * b).toFixed(0))
|
||||
}
|
||||
|
||||
private getPlayerAmount(sender: any): number {
|
||||
let result = this.PlaceholderAPI.setPlaceholders(sender, this.config.check)
|
||||
let amount = parseFloat(result)
|
||||
if (isNaN(amount)) {
|
||||
throw new Error(`§c读取玩家 §3${this.config.coinName} §c异常 §6请检查 §3check §6配置是否正确!\n§6数据解析链路: §3${this.config.check} §6=> §3${result} §6=> §3${amount}`)
|
||||
throw new Error(`§c读取玩家 §3${this.config.coinName} §c异常 §6请检查 §3check §6配置是否正确!
|
||||
§6数据解析链路: §3${this.config.check} §6=> §3${result} §6=> §3${amount}`)
|
||||
}
|
||||
return amount
|
||||
}
|
||||
@@ -249,12 +354,14 @@ export class MiaoPay extends interfaces.Plugin {
|
||||
return this.httpPost('/finish', { id })
|
||||
}
|
||||
|
||||
private createOrder(sender: org.bukkit.entity.Player, amount: number) {
|
||||
private createOrder(sender: org.bukkit.entity.Player, amount: number): Order {
|
||||
let serverName = this.MiaoReward.serverInfo.name
|
||||
if (this.config.name) { serverName = `${serverName}(${this.config.name})` }
|
||||
let result = this.httpPost('/create', {
|
||||
subject: `${this.MiaoReward.serverInfo.name} 充值 ${amount} ${this.config.coinName}`,
|
||||
totalAmount: amount / this.config.ratio,
|
||||
subject: `${serverName} 充值 ${amount} ${this.config.coinName}`,
|
||||
amount: amount / this.config.ratio,
|
||||
username: sender.getName(),
|
||||
union_id: sender.getUniqueId().toString()
|
||||
unionId: sender.getUniqueId().toString()
|
||||
})
|
||||
if (result.code != 200) {
|
||||
throw new Error(`订单创建失败: ${result.msg}`)
|
||||
@@ -266,12 +373,16 @@ export class MiaoPay extends interfaces.Plugin {
|
||||
return this.httpPost('/query', { id, username, uuid })
|
||||
}
|
||||
|
||||
private queryUnconverted(username: string, force: number) {
|
||||
return this.httpPost('/unconverted', { username, force })
|
||||
}
|
||||
|
||||
private httpPost(method: string, data: any) {
|
||||
let startTime = Date.now()
|
||||
data.appid = this.config.id
|
||||
data.timestamp = Math.round(Date.now() / 1000)
|
||||
data.sign = this.sign(data)
|
||||
let url = `https://pay.yumc.pw/api${method}`
|
||||
let url = `${this.apiGateWay}/api${method}`
|
||||
let result = http.post(url, data)
|
||||
console.debug(`
|
||||
====== HTTP POST ======
|
||||
|
||||
@@ -12,10 +12,19 @@ const Bytes = Java.type('byte[]')
|
||||
|
||||
interface PlaceholderAPI {
|
||||
registerPlaceholderHook: (key: string, onPlaceholderRequest: (player, s) => string) => void
|
||||
registerExpansion: (expansion: PlaceholderExpansion) => void
|
||||
unregisterPlaceholderHook: (key: string) => void
|
||||
setPlaceholders: (player: any, str: string) => string
|
||||
}
|
||||
|
||||
interface PlaceholderExpansion {
|
||||
getIdentifier: () => string
|
||||
getAuthor: () => string
|
||||
getVersion: () => string
|
||||
persist: () => string
|
||||
onPlaceholderRequest: (player, s) => string
|
||||
}
|
||||
|
||||
interface UserInfo {
|
||||
balance: number
|
||||
sign: string
|
||||
@@ -54,14 +63,15 @@ const defaultConfig = {
|
||||
prefix: '§6[§b广告系统§6]§r',
|
||||
serverId: '',
|
||||
serverToken: '',
|
||||
drawCommand: 'p give %player_name% %amount%',
|
||||
drawCommand: 'points give %player_name% %amount%',
|
||||
coinName: '点券',
|
||||
joinTip: true
|
||||
}
|
||||
|
||||
@JSPlugin({ prefix: 'MRD', version: '1.5.1', author: 'MiaoWoo', servers: [constants.ServerType.Bukkit], nativeDepends: ['ProtocolLib', 'PlaceholderAPI'], source: __filename })
|
||||
@JSPlugin({ prefix: 'MRD', version: '1.5.9', author: 'MiaoWoo', servers: [constants.ServerType.Bukkit], nativeDepends: ['ProtocolLib', 'PlaceholderAPI'], source: __filename })
|
||||
export class MiaoReward extends interfaces.Plugin {
|
||||
public serverInfo: ServerInfo
|
||||
private notifyError = true
|
||||
private cacheBindUuid = ''
|
||||
private zeroMapView = undefined
|
||||
private playerImageCache = new Map<string, any>()
|
||||
@@ -91,6 +101,9 @@ export class MiaoReward extends interfaces.Plugin {
|
||||
private PlaceholderAPI: PlaceholderAPI
|
||||
@JSClass('me.clip.placeholderapi.PlaceholderHook')
|
||||
private PlaceholderHook: any
|
||||
@JSClass('me.clip.placeholderapi.expansion.PlaceholderExpansion')
|
||||
private PlaceholderExpansion: any
|
||||
private expansion: any
|
||||
|
||||
@JSClass('com.comphenix.protocol.ProtocolLibrary')
|
||||
private ProtocolLibrary: any
|
||||
@@ -108,11 +121,11 @@ export class MiaoReward extends interfaces.Plugin {
|
||||
load() {
|
||||
this.config.prefix = this.config.prefix || '§6[§b广告系统§6]§r'
|
||||
this.config.drawCommand = this.config.drawCommand || 'p give %player_name% %amount%'
|
||||
if (!this.config.coinName) {
|
||||
if (this.config.coinName == undefined) {
|
||||
this.config.coinName = '点券'
|
||||
this.config.save()
|
||||
}
|
||||
if (!this.config.joinTip) {
|
||||
if (this.config.joinTip == undefined) {
|
||||
this.config.joinTip = true
|
||||
this.config.save()
|
||||
}
|
||||
@@ -191,21 +204,28 @@ export class MiaoReward extends interfaces.Plugin {
|
||||
if (!this.PlaceholderAPI) {
|
||||
console.console("§cCan't found me.clip.placeholderapi.PlaceholderAPI variable will not be replaced!")
|
||||
} else {
|
||||
this.PlaceholderAPI.registerPlaceholderHook("mrd", new this.PlaceholderHook({
|
||||
onPlaceholderRequest: (player: any, s: string) => {
|
||||
if (!this.playerInfoCache.has(player.getName())) { return '数据加载中' }
|
||||
let data = this.playerInfoCache.get(player.getName())
|
||||
if (!data) { return '用户未绑定' }
|
||||
switch (s.toLowerCase()) {
|
||||
case "balance": return data.balance
|
||||
case "sign": return data.sign
|
||||
case "video": return data.video
|
||||
case "box": return data.box
|
||||
case "block": return data.block
|
||||
default: return "未知的参数: " + s
|
||||
}
|
||||
}
|
||||
}))
|
||||
this.expansion = new this.PlaceholderExpansion({
|
||||
getIdentifier: () => 'mrd',
|
||||
persist: () => true,
|
||||
getAuthor: () => 'MiaoWoo',
|
||||
getVersion: () => '1.0.0',
|
||||
onPlaceholderRequest: this.onPlaceholderRequest.bind(this)
|
||||
})
|
||||
this.taskManager.create(() => this.expansion.register()).submit()
|
||||
}
|
||||
}
|
||||
|
||||
private onPlaceholderRequest(player: any, s: string) {
|
||||
if (!this.playerInfoCache.has(player.getName())) { return '数据加载中' }
|
||||
let data = this.playerInfoCache.get(player.getName())
|
||||
if (!data) { return '用户未绑定' }
|
||||
switch (s.toLowerCase()) {
|
||||
case "balance": return data.balance
|
||||
case "sign": return data.sign
|
||||
case "video": return data.video
|
||||
case "box": return data.box
|
||||
case "block": return data.block
|
||||
default: return "未知的参数: " + s
|
||||
}
|
||||
}
|
||||
|
||||
@@ -261,10 +281,19 @@ export class MiaoReward extends interfaces.Plugin {
|
||||
java.util.Arrays.fill(arritemStack, new org.bukkit.inventory.ItemStack(org.bukkit.Material.AIR))
|
||||
arritemStack[36 + player.getInventory().getHeldItemSlot()] = mapItem
|
||||
var packetContainer = protocolManager.createPacket(this.PacketType.Play.Server.WINDOW_ITEMS)
|
||||
if (packetContainer.getItemArrayModifier().size() > 0) {
|
||||
try {
|
||||
packetContainer.getItemArrayModifier().write(0, arritemStack)
|
||||
} else {
|
||||
packetContainer.getItemListModifier().write(0, java.util.Arrays.asList(arritemStack))
|
||||
} catch (error) {
|
||||
try {
|
||||
packetContainer.getItemListModifier().write(0, java.util.Arrays.asList(arritemStack))
|
||||
} catch (error) {
|
||||
if (this.notifyError) {
|
||||
console.console('§4发送虚拟物品包失败 可能是ProtocolLib版本不兼容!')
|
||||
console.ex(error)
|
||||
this.notifyError = false
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
protocolManager.sendServerPacket(player, packetContainer)
|
||||
} catch (ex) {
|
||||
@@ -273,8 +302,7 @@ export class MiaoReward extends interfaces.Plugin {
|
||||
}
|
||||
|
||||
disable() {
|
||||
if (!this.ProtocolLibrary) return
|
||||
this.PlaceholderAPI?.unregisterPlaceholderHook("mrd")
|
||||
try { this.expansion?.unregister() } catch (error) { }
|
||||
this.adapter && this.ProtocolLibrary.getProtocolManager().removePacketListener(this.adapter)
|
||||
Java.from(this.server.getOnlinePlayers()).forEach(p => this.checkAndClear(p))
|
||||
this.channelOff?.off()
|
||||
@@ -420,6 +448,7 @@ export class MiaoReward extends interfaces.Plugin {
|
||||
this.logger.sender(sender, draw.msg.split('\n').map(s => s.replace('点券', this.config.coinName)))
|
||||
this.sendBroadcast(sender, `${this.config.prefix}§6玩家 §b${sender.getName()} §6成功将 §a${amount}喵币 §6兑换成 §c${draw.data}${this.config.coinName}!`)
|
||||
this.sendBroadcast(sender, `${this.config.prefix}§c/mrd help §b查看广告系统帮助 §6快来一起看广告赚${this.config.coinName}吧!`)
|
||||
this.queryUser(sender)
|
||||
}).submit()
|
||||
}
|
||||
|
||||
@@ -626,20 +655,7 @@ export class MiaoReward extends interfaces.Plugin {
|
||||
}
|
||||
}, this).async().later(20).timer(20).submit()
|
||||
this.playerTaskCache.set(sender.getName(), task)
|
||||
if (this.downgrade) {
|
||||
this.logger.sender(sender, '§c低版本客户端 二维码渲染中 请等待 3 秒 稍候扫码!')
|
||||
let waitTask = this.taskManager.create(() => {
|
||||
let temp = sender.getLocation()
|
||||
temp.setPitch(-90)
|
||||
sender.teleport(temp)
|
||||
}, this).later(0).timer(20).submit()
|
||||
this.taskManager.create(() => {
|
||||
waitTask.cancel()
|
||||
let temp = sender.getLocation()
|
||||
temp.setPitch(90)
|
||||
sender.teleport(temp)
|
||||
}).later(80).submit()
|
||||
}
|
||||
if (this.downgrade) { this.downgradeTask(sender) }
|
||||
this.playerImageCache.set(sender.getName(), org.bukkit.map.MapPalette.imageToBytes(this.createQrcode(content)))
|
||||
if (!this.downgrade) {
|
||||
let temp = sender.getLocation()
|
||||
@@ -648,9 +664,25 @@ export class MiaoReward extends interfaces.Plugin {
|
||||
}
|
||||
this.sendWindowItems(sender, this.createQrCodeMapItem(name))
|
||||
sender.sendMap(this.zeroMapView)
|
||||
this.taskManager.create(() => this.sendWindowItems(sender, this.createQrCodeMapItem(name))).later(20).async().submit()
|
||||
}).submit()
|
||||
}
|
||||
|
||||
private downgradeTask(sender) {
|
||||
this.logger.sender(sender, '§c低版本客户端 二维码渲染中 请等待 3 秒 稍候扫码!')
|
||||
let waitTask = this.taskManager.create(() => {
|
||||
let temp = sender.getLocation()
|
||||
temp.setPitch(-90)
|
||||
sender.teleport(temp)
|
||||
}, this).later(0).timer(20).submit()
|
||||
this.taskManager.create(() => {
|
||||
waitTask.cancel()
|
||||
let temp = sender.getLocation()
|
||||
temp.setPitch(90)
|
||||
sender.teleport(temp)
|
||||
}).later(80).submit()
|
||||
}
|
||||
|
||||
private queryUser(sender: org.bukkit.entity.Player, sync = false) {
|
||||
if (!this.serverInfo) { return this.logger.sender(sender, '§4当前服务器尚未配置绑定ID 请联系腐竹进行配置!') }
|
||||
let result = this.httpPost(`https://reward.yumc.pw/server/queryUser`, {
|
||||
|
||||
@@ -32,10 +32,6 @@ export class MiaoRobot extends interfaces.Plugin {
|
||||
}
|
||||
|
||||
enable() {
|
||||
if (!this.config.address || !this.config.token) {
|
||||
return this.logger
|
||||
}
|
||||
this.cmdconnect(this.server.getConsoleSender(), this.config.address, this.config.token)
|
||||
}
|
||||
|
||||
disable() {
|
||||
@@ -46,13 +42,10 @@ export class MiaoRobot extends interfaces.Plugin {
|
||||
mbot() { }
|
||||
|
||||
cmdconnect(sender: org.bukkit.entity.Player, address: string = this.config.address, token: string = this.config.token) {
|
||||
if (this.client && this.client.readyState == WebSocket.OPEN) {
|
||||
this.client.close()
|
||||
this.client = undefined
|
||||
}
|
||||
if (!address || !token) {
|
||||
return this.logger.sender(sender, '§4错误 请配置服务器地址和Token!')
|
||||
}
|
||||
this.cmdclose(sender)
|
||||
try {
|
||||
this.client = new WebSocket(address, '', { Authorization: `Bearer ${token}` })
|
||||
this.initRobot(this.client)
|
||||
@@ -83,7 +76,7 @@ export class MiaoRobot extends interfaces.Plugin {
|
||||
}
|
||||
|
||||
cmdclose(sender: org.bukkit.entity.Player) {
|
||||
if (this.client) {
|
||||
if (this.client && this.client.readyState != WebSocket.CLOSED) {
|
||||
this.client.close(0, 'plugin close socket')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,8 +11,9 @@ let help = [
|
||||
'§6========= §6[§aMiaoScriptPackageManager§6] 帮助 §aBy §bMiaoWoo §6=========',
|
||||
'§6/mspm §ainstall §e<插件名称> §6- §3安装仓库插件',
|
||||
'§6/mspm §aload §e<插件名称> §6- §3安装本地插件',
|
||||
'§6/mspm §aunload §e<插件名称> §6- §3卸载已安装插件',
|
||||
'§6/mspm §cunload §e<插件名称> §6- §3卸载已安装插件',
|
||||
'§6/mspm §areload §e<插件名称> §6- §3重载已安装插件(无名称则重载自身)',
|
||||
'§6/mspm §cdelete §e<插件名称> §6- §3删除已安装插件',
|
||||
'§6/mspm §alist [i] §6- §3列出仓库插件[已安装的插件]',
|
||||
'§6/mspm §aupdate §e[插件名称] §6- §3更新插件(无名称则更新源)',
|
||||
'§6/mspm §aupgrade §e[插件名称|system] §6- §3升级插件/§4框架(§csystem§3)',
|
||||
@@ -44,7 +45,7 @@ let langMap = {
|
||||
'plugin.name.empty': '§c请输入插件名称!',
|
||||
'cloud.update.finish': '§6成功从 §aMiaoScriptPackageCenter §6获取到 §a{length} §6个插件!',
|
||||
'cloud.not.exists': '§6当前 §aMiaoScriptPackageCenter §c不存在 §a{name} §c插件!',
|
||||
'cloud.update.exists': '§6插件 §b{name} §a发现新版本 §3{new_version} §6当前版本 §3{old_version}!',
|
||||
'cloud.update.exists': '§6插件 §b{name} §6版本 §3{old_version} §a发现更新 §3{new_version} §r{changelog}§6!',
|
||||
'download.start': '§6开始下载插件: §b{name} §6版本 §3{version}',
|
||||
'download.url': '§6插件下载地址: §b{url}',
|
||||
'download.finish': '§6插件 §b{name} §6版本 §3{version} §a下载完毕 开始加载 ...',
|
||||
@@ -106,7 +107,7 @@ class SpongeFakeSender extends FakeSender {
|
||||
}
|
||||
}
|
||||
|
||||
@JSPlugin({ prefix: 'PM', version: '1.3.1', author: 'MiaoWoo', source: __filename })
|
||||
@JSPlugin({ prefix: 'PM', version: '1.4.0', author: 'MiaoWoo', source: __filename })
|
||||
export class MiaoScriptPackageManager extends interfaces.Plugin {
|
||||
@Autowired()
|
||||
private pluginManager: pluginApi.PluginManager
|
||||
@@ -332,6 +333,8 @@ export class MiaoScriptPackageManager extends interfaces.Plugin {
|
||||
try {
|
||||
this.i18n(sender, 'upgrade.start')
|
||||
base.delete(enginePath)
|
||||
// @ts-ignore
|
||||
require.setUpgradeMode?.(true)
|
||||
this.cmdrestart(sender)
|
||||
} catch (ex) {
|
||||
if (global.debug) {
|
||||
@@ -359,6 +362,15 @@ export class MiaoScriptPackageManager extends interfaces.Plugin {
|
||||
}
|
||||
}
|
||||
|
||||
cmddelete(sender: any, name: string) {
|
||||
if (this.checkPlugin(sender, name)) {
|
||||
let plugin = this.pluginManager.getPlugins().get(name)
|
||||
this.i18n(sender, 'plugin.delete.start', { name, version: plugin.description.version })
|
||||
base.delete(plugin.description.source)
|
||||
this.i18n(sender, 'plugin.delete.finish', { name, version: plugin.description.version })
|
||||
}
|
||||
}
|
||||
|
||||
cmdreload(sender: any, name: string) {
|
||||
name = name || this.description.name
|
||||
this.reload(sender, name)
|
||||
@@ -395,6 +407,9 @@ export class MiaoScriptPackageManager extends interfaces.Plugin {
|
||||
this.logger.sender(sender, '§6Reloading §3MiaoScript Engine...')
|
||||
ScriptEngineContextHolder.disableEngine()
|
||||
Packages.java.lang.System.gc()
|
||||
if (ScriptEngineContextHolder.loadEngine) {
|
||||
ScriptEngineContextHolder.loadEngine()
|
||||
}
|
||||
ScriptEngineContextHolder.enableEngine()
|
||||
this.logger.sender(sender, '§3MiaoScript Engine §6Reload §aSuccessful...')
|
||||
} catch (ex) {
|
||||
@@ -517,7 +532,12 @@ return eval(${JSON.stringify(code)});`)
|
||||
let cloudPlugin = this.packageCache[p.description.name]
|
||||
//§6插件名称: §b{name}\n§6版本: §a{version}\n§6作者: §3{author}\§6更新时间: §9{updated_at}
|
||||
if (cloudPlugin && cloudPlugin.version != p.description.version) {
|
||||
this.i18n(sender, 'cloud.update.exists', { name: p.description.name, new_version: cloudPlugin.version, old_version: p.description.version })
|
||||
this.i18n(sender, 'cloud.update.exists', {
|
||||
name: p.description.name,
|
||||
new_version: cloudPlugin.version,
|
||||
old_version: p.description.version,
|
||||
changelog: cloudPlugin.changelog || ''
|
||||
})
|
||||
}
|
||||
})
|
||||
}).async().submit()
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@ccms/ployfill",
|
||||
"version": "0.13.0",
|
||||
"description": "MiaoScript ployfill package",
|
||||
"name": "@ccms/polyfill",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript polyfill package",
|
||||
"author": "MiaoWoo <admin@yumc.pw>",
|
||||
"homepage": "https://github.com/circlecloud/ms.git",
|
||||
"license": "ISC",
|
||||
@@ -14,14 +14,14 @@
|
||||
"test": "echo \"Error: run tests from root\" && exit 1"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ccms/i18n": "^0.13.0",
|
||||
"@ccms/nodejs": "^0.13.0",
|
||||
"core-js": "^3.7.0"
|
||||
"@ccms/i18n": "^0.14.1",
|
||||
"@ccms/nodejs": "^0.14.0",
|
||||
"core-js": "^3.9.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ccms/nashorn": "^0.13.0",
|
||||
"@ccms/nashorn": "^0.14.0",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
}
|
||||
}
|
||||
@@ -1,9 +1,9 @@
|
||||
/// <reference types="@ccms/nashorn" />
|
||||
import '@ccms/nodejs'
|
||||
import i18n from '@ccms/i18n'
|
||||
let ployfillStartTime = new Date().getTime()
|
||||
let polyfillStartTime = new Date().getTime()
|
||||
i18n.initialize()
|
||||
console.i18n("ms.ployfill.initialize")
|
||||
console.i18n("ms.polyfill.initialize")
|
||||
import './es5-ext'
|
||||
import './node-shim'
|
||||
import 'core-js'
|
||||
@@ -12,4 +12,4 @@ process.on('exit', () => require.disable())
|
||||
global.setGlobal('Proxy', require('./proxy').Proxy)
|
||||
global.setGlobal('XMLHttpRequest', require('./xml-http-request').XMLHttpRequest)
|
||||
global.setGlobal('Blob', require('blob-polyfill').Blob)
|
||||
console.i18n("ms.ployfill.completed", { time: (new Date().getTime() - ployfillStartTime) / 1000 })
|
||||
console.i18n("ms.polyfill.completed", { time: (new Date().getTime() - polyfillStartTime) / 1000 })
|
||||
@@ -2,7 +2,6 @@ import { EventEmitter } from 'events'
|
||||
|
||||
const System = Java.type('java.lang.System')
|
||||
const Thread = Java.type('java.lang.Thread')
|
||||
const Runnable = Java.type('java.lang.Runnable')
|
||||
const InterruptedException = Java.type('java.lang.InterruptedException')
|
||||
const ThreadGroup = Java.type("java.lang.ThreadGroup")
|
||||
const AtomicInteger = Java.type("java.util.concurrent.atomic.AtomicInteger")
|
||||
@@ -56,6 +55,10 @@ class Process extends EventEmitter {
|
||||
console.log(`process exit by code ${code}!`)
|
||||
this.emit('exit', code)
|
||||
}
|
||||
|
||||
toString() {
|
||||
return "[object process]"
|
||||
}
|
||||
}
|
||||
|
||||
class EventLoop {
|
||||
@@ -191,8 +194,9 @@ class EventLoop {
|
||||
}
|
||||
}
|
||||
global.setGlobal('process', new Process(), {})
|
||||
Object.defineProperty(process, require('core-js/es/symbol/to-string-tag'), { value: '[object process]' })
|
||||
const eventLoop = new EventLoop()
|
||||
global.setGlobal('eventLoop', eventLoop, {})
|
||||
Object.defineProperty(process, 'eventLoop', { value: eventLoop })
|
||||
eventLoop.startEventLoop()
|
||||
global.setGlobal('queueMicrotask', (func: any) => microTaskPool.execute(func), {})
|
||||
global.setGlobal('setTimeout', eventLoop.setTimeout.bind(eventLoop), {})
|
||||
@@ -1,4 +1,4 @@
|
||||
import { ProxyHandle } from '@ccms/nashorn'
|
||||
import type { ProxyHandle } from '@ccms/nashorn'
|
||||
|
||||
// Nashorn JSAdapter See https://wiki.openjdk.java.net/display/Nashorn/Nashorn+extensions#Nashornextensions-JSAdapterconstructor
|
||||
let createProxy = eval(`
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/protocol",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.0",
|
||||
"description": "MiaoScript protocol package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -22,6 +22,6 @@
|
||||
"devDependencies": {
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/sponge",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript api package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -22,11 +22,11 @@
|
||||
"@javatypes/sponge-api": "^0.0.3",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ccms/api": "^0.13.0",
|
||||
"@ccms/common": "^0.13.0",
|
||||
"@ccms/container": "^0.13.0"
|
||||
"@ccms/api": "^0.14.1",
|
||||
"@ccms/common": "^0.14.1",
|
||||
"@ccms/container": "^0.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/spring",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript spring package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -21,12 +21,12 @@
|
||||
"devDependencies": {
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ccms/api": "^0.13.0",
|
||||
"@ccms/common": "^0.13.0",
|
||||
"@ccms/container": "^0.13.0",
|
||||
"@ccms/database": "^0.13.0"
|
||||
"@ccms/api": "^0.14.1",
|
||||
"@ccms/common": "^0.14.1",
|
||||
"@ccms/container": "^0.14.0",
|
||||
"@ccms/database": "^0.14.1"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/web",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.1",
|
||||
"description": "MiaoScript web package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -26,10 +26,10 @@
|
||||
"@javatypes/tomcat": "^0.0.3",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ccms/api": "^0.13.0",
|
||||
"@ccms/container": "^0.13.0"
|
||||
"@ccms/api": "^0.14.1",
|
||||
"@ccms/container": "^0.14.0"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@ccms/websocket",
|
||||
"version": "0.13.0",
|
||||
"version": "0.14.0",
|
||||
"description": "MiaoScript websocket package",
|
||||
"keywords": [
|
||||
"miaoscript",
|
||||
@@ -19,10 +19,10 @@
|
||||
"test": "echo \"Error: run tests from root\" && exit 1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@ccms/nashorn": "^0.13.0",
|
||||
"@ccms/nashorn": "^0.14.0",
|
||||
"@javatypes/tomcat-websocket-api": "^0.0.3",
|
||||
"reflect-metadata": "^0.1.13",
|
||||
"rimraf": "^3.0.2",
|
||||
"typescript": "^4.0.5"
|
||||
"typescript": "^4.2.3"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -46,6 +46,5 @@ io.Instance = Symbol("@ccms/websocket")
|
||||
export default io
|
||||
export * from './socket-io'
|
||||
export * from './client'
|
||||
export * from './netty'
|
||||
export * from './tomcat'
|
||||
export * from './server'
|
||||
export * from './transport'
|
||||
|
||||
@@ -3,18 +3,19 @@ const SimpleChannelInboundHandler = Java.type('io.netty.channel.SimpleChannelInb
|
||||
const FullHttpRequestMatcher = TypeParameterMatcher.get(base.getClass('io.netty.handler.codec.http.FullHttpRequest'))
|
||||
|
||||
export abstract class HttpRequestHandlerAdapter {
|
||||
private _Handler;
|
||||
private _Handler
|
||||
constructor() {
|
||||
let HttpRequestHandlerAdapterImpl = Java.extend(SimpleChannelInboundHandler, {
|
||||
isSharable: () => true,
|
||||
acceptInboundMessage: (msg: any) => {
|
||||
return FullHttpRequestMatcher.match(msg)
|
||||
},
|
||||
channelRead0: this.channelRead0.bind(this)
|
||||
})
|
||||
this._Handler = new HttpRequestHandlerAdapterImpl();
|
||||
this._Handler = new HttpRequestHandlerAdapterImpl()
|
||||
}
|
||||
abstract channelRead0(ctx: any, request: any);
|
||||
abstract channelRead0(ctx: any, request: any)
|
||||
getHandler() {
|
||||
return this._Handler;
|
||||
return this._Handler
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,7 @@ export abstract class TextWebSocketFrameHandlerAdapter {
|
||||
private _Handler
|
||||
constructor() {
|
||||
let TextWebSocketFrameHandlerAdapterImpl = Java.extend(SimpleChannelInboundHandler, {
|
||||
isSharable: () => true,
|
||||
userEventTriggered: this.userEventTriggered.bind(this),
|
||||
acceptInboundMessage: (msg: any) => {
|
||||
return TextWebSocketFrameMatcher.match(msg)
|
||||
|
||||
@@ -4,6 +4,7 @@ export abstract class WebSocketHandlerAdapter {
|
||||
private _Handler
|
||||
constructor() {
|
||||
let ChannelInboundHandlerAdapterImpl = Java.extend(ChannelInboundHandlerAdapter, {
|
||||
isSharable: () => true,
|
||||
channelRead: this.channelRead.bind(this),
|
||||
channelInactive: this.channelInactive.bind(this),
|
||||
channelUnregistered: this.exceptionCaught.bind(this),
|
||||
|
||||
52
packages/websocket/src/server/index.ts
Normal file
52
packages/websocket/src/server/index.ts
Normal file
@@ -0,0 +1,52 @@
|
||||
import { EventEmitter } from 'events'
|
||||
|
||||
import { Transport } from '../transport'
|
||||
|
||||
interface ServerOptions {
|
||||
event?: EventEmitter
|
||||
root?: string
|
||||
/**
|
||||
* name of the path to capture
|
||||
* @default "/socket.io"
|
||||
*/
|
||||
path: string
|
||||
}
|
||||
|
||||
interface WebSocketServerImpl extends EventEmitter {
|
||||
close(): void
|
||||
}
|
||||
|
||||
export class WebSocketServer extends EventEmitter {
|
||||
options: Partial<ServerOptions>
|
||||
private websocketServer: WebSocketServerImpl
|
||||
|
||||
constructor(instance: any, options: Partial<ServerOptions>) {
|
||||
super()
|
||||
if (!instance) { throw new Error('instance can\'t be undefiend!') }
|
||||
this.options = Object.assign({
|
||||
event: new EventEmitter(),
|
||||
path: '/ws',
|
||||
root: root + '/wwwroot',
|
||||
}, options)
|
||||
this.selectServerImpl(instance)
|
||||
}
|
||||
|
||||
on(event: "connect", cb: (transport: Transport) => void): this
|
||||
on(event: "message", cb: (transport: Transport, text: string) => void): this
|
||||
on(event: "disconnect", cb: (transport: Transport, reason: string) => void): this
|
||||
on(event: "error", cb: (transport: Transport, cause: Error) => void): this
|
||||
on(event: string, cb: (transport: Transport, extra?: any) => void): this {
|
||||
this.websocketServer.on(event, cb)
|
||||
return this
|
||||
}
|
||||
|
||||
private selectServerImpl(instance: any) {
|
||||
let WebSocketServerImpl = undefined
|
||||
if (instance.class.name.startsWith('io.netty.channel')) {
|
||||
WebSocketServerImpl = require("../netty").NettyWebSocketServer
|
||||
} else {
|
||||
WebSocketServerImpl = require("../tomcat").TomcatWebSocketServer
|
||||
}
|
||||
this.websocketServer = new WebSocketServerImpl(instance, this.options)
|
||||
}
|
||||
}
|
||||
@@ -4,8 +4,6 @@ import { ServerEvent } from './constants'
|
||||
import { Namespace } from './namespace'
|
||||
import { Client } from './client'
|
||||
import { Parser } from './parser'
|
||||
import { PacketTypes, SubPacketTypes } from './types'
|
||||
import { Packet } from './packet'
|
||||
import { Socket } from './socket'
|
||||
import { Adapter } from './adapter'
|
||||
import { Transport } from '../transport'
|
||||
|
||||
@@ -5,6 +5,7 @@
|
||||
"outDir": "dist",
|
||||
"target": "es5",
|
||||
"module": "commonjs",
|
||||
"moduleResolution": "node",
|
||||
"strict": true,
|
||||
"strictNullChecks": false,
|
||||
"importHelpers": true,
|
||||
@@ -18,4 +19,4 @@
|
||||
"experimentalDecorators": true,
|
||||
"lib": []
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user