dotnet new install TShock.Plugin.ProjectTemplates
using System.Reflection;
using Terraria;
using TerrariaApi.Server;
using TShockAPI;
namespace MyFirstPlugin;
[ApiVersion(2, 1)]
public class Plugin : TerrariaPlugin
{
//插件的名称
public override string Name => "MyFirstPlugin";
//插件作者名字
public override string Author => "You Name";
//插件功能的一句话描述
public override string Description => "Plugin Description";
//插件的版本, 可以采用日期来命名, eg: 2024年1月4日第1个版本 -> new(2024, 1,4,1)
public override Version Version => new(2024, 1,4,1);
//插件的构造器
public Plugin(Main game) : base(game)
{
}
//插件加载时执行的代码
public override void Initialize()
{
/*
添加一个TShock命令,下面这句的意思是: (看不懂没关系,下面有专门的章节讲解命令)
添加一个命令: 权限为`plugin.perm`,执行这条命令时调用`HelloWorldCommand`方法,命令的名字是`helloworld`,别名是`hw`
*/
Commands.ChatCommands.Add(new Command("plugin.perm" , HelloWorldCommand, "helloworld", "hw"));
}
//插件卸载时执行的代码
protected override void Dispose(bool disposing)
{
if (disposing)
{
//移除所有由本插件添加的所有指令
var asm = Assembly.GetExecutingAssembly();
Commands.ChatCommands.RemoveAll(c => c.CommandDelegate.Method?.DeclaringType?.Assembly == asm);
}
base.Dispose(disposing);
}
//执行指令时对指令进行处理的方法
private void HelloWorldCommand(CommandArgs args)
{
//向触发事件的玩家发送一条绿色的消息 "Hello world!"
args.Player.SendSuccessMessage("Hello world!");
}
}
29 public void KoKoLoveYou()
30 {
//抛出错误,模拟报错 :(
31 throw new Exception("别做梦了Cai");
32 }
33
34 //插件加载时执行的代码
35 public override void Initialize()
36 {
37 if ("Cai"=="SB") //Cai不是SB, 所以KoKoLoveYou不会在这里被执行
38 {
39 KoKoLoveYou();
40 }
41
42 if (1 + 1 == 2) //1+1=2 所以KoKoLoveYou在这里被执行
43 {
44 KoKoLoveYou();
45 }
46 }
命令 | 作用 |
---|---|
/load load | 加载所有PluginLoader所管理的插件 |
/load unload | 卸载PluginLoader所管理的插件 |
/load reload | 重载PluginLoader所管理的插件 |
/load plugins | 显示PluginLoader已加载的插件 |
//执行指令时对指令进行处理的方法
private void HelloWorldCommand(CommandArgs args)
{
//显示 “Hello 玩家的名字!”
args.Player.SendSuccessMessage($"Hello {args.Player.Name}!");
}