29
									
								
								packages/sponge/src/console.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										29
									
								
								packages/sponge/src/console.ts
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,29 @@
 | 
				
			|||||||
 | 
					import '@ms/nashorn'
 | 
				
			||||||
 | 
					import { MiaoScriptConsole } from '@ms/api'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					let Sponge = Java.type('org.spongepowered.api.Sponge');
 | 
				
			||||||
 | 
					var Text = Java.type('org.spongepowered.api.text.Text');
 | 
				
			||||||
 | 
					let CommandSource = Java.type('org.spongepowered.api.command.CommandSource');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					export class SpongeConsole extends MiaoScriptConsole {
 | 
				
			||||||
 | 
					    sender(sender, ...args) {
 | 
				
			||||||
 | 
					        if (!(sender instanceof CommandSource)) {
 | 
				
			||||||
 | 
					            this.error('第一个参数未实现 org.spongepowered.api.command.CommandSource 无法发送消息!')
 | 
				
			||||||
 | 
					            return
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        if (args[0].toString() === '[object Array]') {
 | 
				
			||||||
 | 
					            args[0].forEach(line => sender.sendMessage(Text.of(this.prefix + line)))
 | 
				
			||||||
 | 
					        } else {
 | 
				
			||||||
 | 
					            sender.sendMessage(Text.of(this.prefix + args.join(' ')));
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    console(...args): void {
 | 
				
			||||||
 | 
					        this.sender(Sponge.server.console, args.join(' '));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    warn(...args) {
 | 
				
			||||||
 | 
					        this.logger.warn(this.name + args.join(' '));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					    error(...args) {
 | 
				
			||||||
 | 
					        this.logger.error(this.name + args.join(' '));
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1 +1,13 @@
 | 
				
			|||||||
export default {}
 | 
					import { server, plugin } from '@ms/api'
 | 
				
			||||||
 | 
					import { DefaultContainer as container } from '@ms/container'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import { SpongeConsole } from './console'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					let SpongeServerType = 'sponge';
 | 
				
			||||||
 | 
					let Sponge = Java.type("org.spongepowered.api.Sponge");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					console.debug(`Detect Sponge Compatible set ServerType to ${SpongeServerType} ...`)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					container.bind(server.Console).toConstantValue(SpongeConsole);
 | 
				
			||||||
 | 
					container.bind(server.ServerType).toConstantValue(SpongeServerType);
 | 
				
			||||||
 | 
					container.bind(plugin.PluginInstance).toConstantValue(Sponge.pluginManager.getPlugin('MiaoScript').orElse(null));
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user