提供: Minecraft Modding Wiki
移動先: 案内検索

警告: ログインしていません。編集を行うと、あなたの IP アドレスが公開されます。ログインまたはアカウントを作成すれば、あなたの編集はその利用者名とともに表示されるほか、その他の利点もあります。

この編集を取り消せます。 下記の差分を確認して、本当に取り消していいか検証してください。よろしければ変更を保存して取り消しを完了してください。
最新版 編集中の文章
99行目: 99行目:
  
 
===HandlePacket===
 
===HandlePacket===
Packetを受信した際の処理を行わせるためのメソッドです。<br/>
+
Packetを受信した際の処理を行わせるためのメソッドです。
サンプルを以下に書いておきます。<br/>
+
サンプルを以下に書いておきます。
  
 
クライアント側
 
クライアント側
137行目: 137行目:
 
ModLoaderMp.SendKey(instance, key);
 
ModLoaderMp.SendKey(instance, key);
 
</source>
 
</source>
instance:クラスファイルでの静的インスタンス<br/>
+
instance:クラスファイルでの静的インスタンス
 
key:キーコードリストを参照してください。<br/>
 
key:キーコードリストを参照してください。<br/>
 
 URL:http://lwjgl.org/javadoc/constant-values.html#org.lwjgl.input.Keyboard.EVENT_SIZE
 
 URL:http://lwjgl.org/javadoc/constant-values.html#org.lwjgl.input.Keyboard.EVENT_SIZE
157行目: 157行目:
 
}
 
}
 
</source>
 
</source>
ただの適当に作ったサンプルですが、<br/>
+
ただの適当に作ったサンプルですが、
mod_hogehogeをINSERTキー(210がInsertキー)入力時にパケット送信します。<br/>
+
mod_hogehogeをINSERTキー(210がInsertキー)入力時にパケット送信します。
  
別として以下のように<br/>
+
別として以下のように
 
<source lang="java">
 
<source lang="java">
 
import org.lwjgl.input.Keyboard;
 
import org.lwjgl.input.Keyboard;
168行目: 168行目:
 
Keyboard.KEY_....
 
Keyboard.KEY_....
 
</source>
 
</source>
で使用も可能です。<br/>
+
で使用も可能です。
  
 
サーバー側の受信はHandleSendKeyメソッドを使用します。
 
サーバー側の受信はHandleSendKeyメソッドを使用します。
176行目: 176行目:
 
}
 
}
 
</source>
 
</source>
entityplayermpはkeyを押したプレイヤーです。<br/>
+
entityplayermpはkeyを押したプレイヤーです。
  
'''注意'''<br/>
+
'''注意'''
このSendKeyメソッドを使う場合は、ユーザーのMinecraftでのキーコンフィグに出て来ませんので<br/>
+
このSendKeyメソッドを使う場合は
(キー設定変更がユーザーにできないので)注意してください。<br/>
+
ユーザーのMinecraftでのキーコンフィグに出て来ませんので
 +
(キー設定変更がユーザーにできないので)
 +
注意してください。
  
  
 
===コマンドによるPacket送信処理===
 
===コマンドによるPacket送信処理===
  
ModLoaderMpにはOPコマンドやサーバーコンソールコマンドを追加する機能が含まれています。<br/>
+
執筆中...
Server側のmod_***クラスに2つメソッドを追加します。<br/>
 
ちなみに筆者は「これを使って作ったことはありません」ので間違ってた場合修正願います。<br/>
 
 
 
1.getCommandInfo<br/>
 
 利用可能なコンソールをクライアントのログに記載します。
 
 
 
<source lang="java">
 
public void GetCommandInfo(ICommandListener icommandlistener)
 
{
 
  icommandlistener.log("MpUtils : Op only commands");
 
  icommandlistener.log("  i <id> [num] [meta]      gives you [num] of <id> with damage [meta]");
 
  icommandlistener.log("  heal                      heals you to full health");
 
  icommandlistener.log("  warp <x> <y> <z>              moves you to x,y,z");
 
}
 
</source>
 
上記メソッドを呼び出した場合、<br/>
 
クライアント側にlog("")で設定したテキストが書き出されます。<br/>
 
 
 
2.HandleCommand
 
 サーバーに送信されるコマンドを制御します。
 
 
 
<source lang="java">
 
public boolean HandleCommand(String command, String username, Logger logger, boolean isOp)
 
{
 
{
 
}
 
</source>
 
command:入力されるコマンド文字列(上記GetCommandInfoの例でいうと heal)最初の"/"は除かれるので注意<br/>
 
username:其名の通りユーザーの名前(またはコンソール)<br/>
 
Logger:使用されたコマンドのメッセージを他のプレイヤーに伝える文章<br/>
 
isOp:Op権限を有してるかどうか判定<br/>
 
 
 
送られたコマンドを検出・処理する方法として
 
<source lang="java">
 
if(command.toLowerCase().startsWith("command "))
 
{
 
</source>
 
で判定しifの中に処理内容を書くといいと思います。
 
 
 
また、ほとんどのコマンドが複数の引数を取るので、<br/>
 
コマンドの文字列を分割する必要があります。<br/>
 
下記サンプルではスペースで分割し長さを判定します。<br/>
 
コマンドが間違ってた場合Falseを返す形になります。<br/>
 
<source lang="java">
 
String commandSplit[] = command.split(" ");
 
  if(commandSplit.length != 2)
 
  {
 
      return false;
 
  }
 
</source>
 
1行目でスペース分割<br/>
 
2行目のifで分割した文字列の長さを判定<br/>
 
おかしかったら return false<br/>
 
 
 
次に文字列配列のcomandSplit[]を使用します。<br/>
 
コマンドはエラーが発生した場合、下記メソッドを使用する必要があります。
 
<source lang="java">
 
logger.fine((new StringBuilder()).append("There's no item with id ").append(itemID).toString());
 
</source>
 
StringBuilderは"There's no item with id "を受け取り、<br/>
 
(commandSplitから取得した)ItemIDをつけて送ります。<br/>
 
toString()を末尾に忘れると、文字列にならないので注意<br/>
 
 
 
正常にコマンドが実行された場合はTrueを返してOPに通知させます。
 
<source lang="java">
 
ModLoaderMp.sendChatToOps(username, (new StringBuilder()).append("Giving ").append(player.username).append(" some ").append(itemID).toString());
 
</source>
 
上記はGiveコマンドを想定したOPへの通知内容です。<br/>
 
 
 
また、コマンド作成に使えると思われるメソッドが<br/>
 
hasClientSide()
 
です。
 
<source lang="java">
 
public boolean hasClientSide()
 
{
 
  return false;
 
}
 
</source>
 
 
 
参考:http://www.minecraftforum.net/topic/352121-smp-mods-modloadermp-modding-310511/
 
 
 
<comments />
 
----
 
* ModLoaderMp.SendPacketを使い、左クリックすると変数に値が入るようにして、そのデータを送る形にすればいいかと思います。 --[[利用者:Nagisawa|Nagisawa]] 2012年4月11日 (水) 13:38 (JST)
 
----
 
* sendkeyのかわりにマウスのクリックを送信するにはどうすればいいでしょうか? --[[特別:投稿記録/221.170.40.37|221.170.40.37]] 2012年4月11日 (水) 00:27 (JST)
 

Minecraft Modding Wikiへの投稿はすべて、他の投稿者によって編集、変更、除去される場合があります。 自分が書いたものが他の人に容赦なく編集されるのを望まない場合は、ここに投稿しないでください。
また、投稿するのは、自分で書いたものか、パブリック ドメインまたはそれに類するフリーな資料からの複製であることを約束してください(詳細はMinecraft Modding Wiki:著作権を参照)。 著作権保護されている作品は、許諾なしに投稿しないでください!

このページを編集するには、下記の確認用の質問に回答してください (詳細):

取り消し 編集の仕方 (新しいウィンドウで開きます)

このページで使用されているテンプレート: