Open Table Of Contents

Sample_Stack02_PassingObjects:スタックサンプル2

(コンテンツ準備中)

ダウンロード

このプラグインをダウンロードする場合は、以下のリンクを右クリックして「名前を付けて保存」で保存してください。

Sample_Stack02_PassingObjects_Read.js

Sample_Stack02_PassingObjects_Write.js

ソースコード

Sample_Stack02_PassingObjects_Read.js

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
// ファイル形式はUTF-8で保存すること
// Please file format to UTF-8.
importPackage(com.tojc.minecraft.mod.ChatLoggerPlusPlugin.v1);

var name = "Passing Objects(read)";
var version = "1.0.0";
var description = "sample plugin";
var auther = "Jaken";

var plugin = new PluginInterface()
{
    onInitialize: function(settings)
    {
        // Stack Passing への読み込み権限登録
        settings.registerPermissionReadStack("Passing");
    },

    onChatMessage: function(env, chat)
    {
        // Stack Passing から結果を読み込み(PassingItemオブジェクト)
        var value = chat.readStack("Passing");
        if(value != null)
        {
            // デバッグに値を表示して確認する。
            debug.log(name, "PassingItem: " + value.toString());
            debug.log(name, "PassingItem.name: " + value.name);
            debug.log(name, "PassingItem.length: " + value.length);

            // 出力例
            // [ SCRIPT    ]: {Passing Objects(read)}: PassingItem: Name: Player977, Length: 9
            // [ SCRIPT    ]: {Passing Objects(read)}: PassingItem.name: Player977
            // [ SCRIPT    ]: {Passing Objects(read)}: PassingItem.length: 9

            // ここでの注目ポイントは、このスクリプト内には定義していないPassingItemオブジェクトの
            // ・メンバー変数のnameやlengthにアクセス出来ている事(1つのスタックで複数の値を渡すことが出来る)
            // ・toStringメソッドにアクセス出来ている事(処理をWrite側で定義できる)
            // です。これを活用すれば、プラグイン間でのAPI提供も可能です。
        }
    },

    onFinalize: function()
    {
    },
};

Sample_Stack02_PassingObjects_Write.js

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
// ファイル形式はUTF-8で保存すること
// Please file format to UTF-8.
importPackage(com.tojc.minecraft.mod.ChatLoggerPlusPlugin.v1);

var name = "Passing Objects(write)";
var version = "1.0.0";
var description = "sample plugin";
var auther = "Jaken";

// 受け渡すPassingItemオブジェクトを定義する。
function PassingItem(name)
{
    this.name = name;
    this.length = name.length;
}
// プロトタイプでtoStringメソッドを定義する。
PassingItem.prototype.toString = function()
{
    return "Name: " + this.name + ", Length: " + this.length;
};

var plugin = new PluginInterface()
{
    onInitialize: function(settings)
    {
        // Stack Passing への書き込み権限登録
        settings.registerPermissionWriteStack("Passing");
    },

    onChatMessage: function(env, chat)
    {
        // ユーザー名の取得(発言者)
        var username = chat.getUserName();

        // デバッグに値を表示して確認する。
        debug.log(name, "username: " + username);

        var value = null;

        // ユーザー名がnullの場合は、ユーザーの発言ではないので無視する。
        if(username != null)
        {
            // JavaのStringからJavaScriptのStringに型変換
            username = String(username);

            // 受け渡すPassingItemオブジェクトを生成する。
            value = new PassingItem(username);

            // デバッグに値を表示して確認する。
            debug.log(name, "PassingItem: " + value.toString());
        }

        // Stack Passing へ書き込む。
        chat.writeStack("Passing", value);
    },

    onFinalize: function()
    {
    },
};