Nukkit の日本語非公式wikiですNukkitに関する情報を発信しています

注意事項

一部動作しない可能性があります
大変申し訳ありません。import文などほとんど間違っていました。

文のミス/掲載してほしいコード等ございましたらコメント欄にてお気軽にお申し付けください。


※NukkitにおけるPHPとの違い
※String , int , Object(3つは最低限覚えましょう)といった。String player = event.getPlayer().getName();などを取得するのに必要です

目次



Nukkitサンプルコード集

プレイヤー関連


以下のimport文が必要です。
import cn.nukkit.Player;

Playerオブジェクトの取得

プレイヤー名から取得
Player player = (Player)Server().getPlayer("プレイヤー名");
Playerイベントから取得(PlayerJoinEventなど)
(注) eventにはeventオブジェクトが入っている状態です。
Player player = event.getPlayer();
Entityイベントから取得(EntitySpawnEventなど)
(注) eventにはeventオブジェクトが入っている状態です。
Player player = event.getPlayer("プレイヤー名");

Entityオブジェクトから取得して、getNameなどをする場合は必ずPlayerオブジェクトか確認しないとクラッシュします。
if (player instanceof Player){
  ///プレイヤーだった場合の処理
}
コマンド処理から取得
コマンド処理の場合、すでにsenderに送信したプレイヤーのデータが入っています。
ただし、コンソールなどから実行した場合もありますので、必ずプレイヤーオブジェクトか確認してください。
送った人がプレイヤーか確認する
if (sender instanceof Player){
  /// プレイヤーだった場合
}else{
  /// プレイヤーオブジェクトではない場合
}
送った人がコンソールか確認する
以下のimport文が必要です
import cn.nukkit.command.ConsoleCommandSender;
if (sender instanceof ConsoleCommandSender){
  /// コンソールだった場合
}else{
  /// コンソールではない場合
}
プレーヤーオブジェクトかの確認
if (player instanceof Player) {  ///プレイヤーオブジェクトかの条件分岐
  ///プレイヤー
}else{
  ///プレイヤーではない
}

プレイヤーにメッセージを送る

チャット上(Message)
player.sendMessage("メッセージ");
アイテムスロットの上(Popup)
player.sendPopup("メッセージ");
Popupの上(Tip)
player.sendTip("メッセージ");

プレイヤー全員にメッセージを送る

チャット上(Message)
this.getServer().broadcastMessage("メッセージ");

this.getServer().broadcastPopup("メッセージ");
Popupの上(Tip)現在使えません
this.getServer().broadcastTip("メッセージ");

プレイヤーをBANする

NameBan
player.getServer().getNameBans().addBan(player, "理由", null, "BANした人の名前");   ///名前BAN
IPBan
player.getServer().getIPBans().addBan(IPアドレス, "理由", null, "BANした人の名前");  ///IPBAN
NameBan解除
player.getServer().getNameBans().remove(player);  ///名前BAN解除
IPBan解除
player.getServer().getIPBans().remove(player);  ///IPBAN解除

プレイヤーをKICKする

player.kick("理由", true);  ///trueをfalseにすることで"Kicked by admin."と表示されなくなります
player.close("", "理由");  ///kickの使用を推奨します。
(1番目の引数をplayer.getLeaveMessage()にすることで、プレイヤーの退出がブロードキャストされます)
リスポン地点の変更
import文
import cn.nukkit.math.Vector3;

Vector3 pos = new Vector3(int x座標, int y座標,int z座標); //intは整数のみ使用可能です
player.setSpawn(pos);

プレイヤーの情報を取得する

ユーザー名
String name = player.getName();
IPアドレス
String ip = player.getAddress();
クライアントID
player.getClientID();
ゲームモード
player gamemode = player.getGamemode();  /// 戻り値(int)0=サバイバル, 1=クリエイティブ, 2,アドベンチャー,3 スペクテイター
//プラスアルファ<数値からString型の名前を作る>
String gamemode;//名前が入る変数
switch(player.getGamemode()){
    case 0:
        gamemode = "サバイバル";
    case 1:
        gamemode = "クリエイティブ";
    case 2:
        gamemode = "アドベンチャー";
    case 3:
        gamemode = "スペクテイター";
}
プレイヤーのいるワールド(レベル)のオブジェクト
Level level = player.getLevel();
座標取得
int x = player.getX();  ///X座標、getXのXを変更すればY、Z座標も取得可能
player.getDirection();  ///方向 0=南,1=西,2=北,3=東
プレイヤーの体力
player.getHealth();  ///プレイヤーの現在の体力
player.getMaxHealth();  ///プレイヤーの最大体力
チャットをした時に表示される名前を取得
player.getDisplayName();
プレイヤーの上に表示される名前を取得
player.getNameTag();
プレイヤーが燃えているか取得
player.isOnFire();  ///燃えていればtrue
プレイヤーがスニークしているか取得
player.isSneaking();  ///スニーク中であればtrue
プレイヤーが走っているか取得
player.isSprinting();  ///走っていればtrue
プレイヤーがopかどうか取得
player.isOp();  ///opならtrue
//プラスアルファ<opかどうかで条件分岐>
if(player.isOp()){
    //opだったときの処理
}else{
    //opではなかったときの処理
}

プレイヤーの情報を変更する

ゲームモード変更
player.setGamemode(0);  /// 0=サバイバル, 1=クリエイティブ, 2,アドベンチャー,3 スペクテイター
プレイヤーの体力を変更
player.setHealth(10); ///プレイヤーの体力を変更
player.setMaxHealth(30);  ///最大体力を変更
プレイヤーを倒す
player.kill();
プレイヤーにダメージを与える
player.attack(1, event);  ///1番目の引数にダメージ数を、2番目にEntityDamageEventが必要です(EntityDamageEventについては省略)
player.setOnFire(10);  ///プレイヤーを燃やす(秒数)
権限を付与する
player.setOp(true);  ///引数をfalseにすることで剥奪できます
プレイヤーをホワイトリストに追加
player.setWhitelisted(true);  ///引数をfalseにすることで削除できます
クリエイティブモードのような飛行できるように
player.setAllowFlight(true);  ///引数をfalseでクリエイティブでも飛べなくなります
オートジャンプができるように
player.setAutoJump(true);  ///引数をfalseでオートジャンプができなくなります
プレイヤーの上に表示される名前を変更
player.setNameTag("名前");
チャットをした時に表示される名前を変更
player.setDisplayName("名前");
プレイヤー情報をセーブ
player.save();
プレイヤーにダメージを与える
以下のimport文が必要です。
import cn.nukkit.event.entity.EntityDamageEvent;
コード
ev = new EntityDamageEvent(entity, 1 , X);  ///Xを変えることでダメージの強さが変更できます
entity.attack(ev.getFinalDamage(), ev);

先頭へ戻る

プレイヤーへの設定

プレイヤーがドロップするアイテムを変更
以下のimport文が必要です。
import cn.nukkit.event.entity.EntityDeathEvent;
import cn.nukkit.item.Item;


以下のimport文が必要です。
import cn.nukkit.event.player.PlayerDeathEvent;
プレイヤーが死んでドロップ(持っていた)したアイテムを取得
event.getDrops();
プレイヤーが死んでドロップするアイテムを指定
以下のimport文が必要です。
import cn.nukkit.event.entity.EntityDeathEvent;
import cn.nukkit.item.Item;

itema = Item.get(アイテムID, メタデータ, 数);
itemb = Item.get(アイテムID, メタデータ, 数);
Item[] item = {itema, itemb};  ///指定したアイテムを配列に格納
event.setDrops(item);  ///指定アイテムをドロップ
プレイヤーの体力を回復
以下のimport文が必要です。
import Nukkit.event.entity.EntityRegainHealthEvent;

he = new EntityRegainHealthEvent(player, 回復量, EntityRegainHealthEvent::CAimport_EATING);
player.heal(回復量, he);
プレイヤーのインベントリを操作
以下のコードが必要です。
import cn.Nukkit.item.Item;

item = Item::get(アイテムid, メタデータ, 数);  ///itemオブジェクトの生成
player.getInventory().addItem(item);  ///アイテムを追加
player.getInventory().removeItem(item);  ///アイテムを消去

以下のimport文が必要です。
import cn.Nukkit.inventory.PlayerInventory;

player.getInventory().clearAll();  ///アイテムをすべて消去(装備されている防具も消されます)
プレイヤーに革装備をセット
以下のimport文が必要です。
import cn.Nukkit.item.Item;

player.getInventory().setArmorItem(0,Item::get(298,0,1));  ///ヘルメット
player.getInventory().setArmorItem(1,Item::get(299,0,1));  ///チェストプレート
player.getInventory().setArmorItem(2,Item::get(300,0,1));  ///レギンス
player.getInventory().setArmorItem(3,Item::get(301,0,1));  ///ブーツ
player.getInventory().sendArmorContents(player);  ///防具の変更を反映
プレイヤーのリスポーン地点を変更する
以下のimport文が必要です。
import cn.Nukkit.math.Vector3;
Vector3 or Player [稼働しない場合どちらかを使用してください] 稼働しない可能正あり vector = new Vector3(x座標, y座標, z座標);  ///座標を指定
player.setSpawn(vector);  ///スポーンをセット
プレイヤー全員に特定の処理をする
以下のimport文が必要です。

import cn.Nukkit.Server;

//修正しておきました itsu
Player players[] = Server.getInstance().getOnlinePlayers();
for(int i=0;players[].getlength;i++;) {
  ///処理
}
プレーヤーをテレポートさせる
以下のimport文が必要です
import cn.Nukkit.math.Vector3;

Vector3 vector = new Vector3(x座標, y座標, z座標);  ///座標を指定
player.teleport(vector);

//ワールド(Level)を指定したい場合は座標指定にPositionクラスを指定して下さい
//以下のimport文が必要です
import cn.Nukkit.level.Position;

Position pos = new Position(x座標, y座標, z座標, Levelオブジェクト);  ///座標を指定
player.teleport(pos);


以下のimport文が必要です。
import cn.Nukkit.entity.Effect;
エフェクトを付与する
Effect effect = Effect::getEffect(1);  ///effectID
effect.setDuration(30*20);  ///効果の時間*20
effect.setAmplifier(0);  ///効果の強さ
effect.setVisible(true);  ///パーティクルを表示するかどうか
player.addEffect(effect);

1行で書く場合
player.addEffect(Effect.getEffect(1).setDuration(30*20).setAmplifier(0).setVisible(true));
※EffectIDの指定はEffectクラスのオブジェクト定数で指定することを推奨します。(今後EffectIDが変わる可能性があるため)
例:
Effect.SPEED
エフェクトを除去する
player.removeEffect(1);  ///指定したEffectIDのエフェクトを除去
player.removeAllEffects();  ///すべてのエフェクトを除去
エフェクトが付与されているか
if(player.hasEffect(1)){
  ///付与されている場合
}else{
  ///されていない場合
}
プレイヤーを動かす
以下のimport文が必要です。
import Nukkit.math.Vector3;
ジャンプさせる
MotionJ = new Vector3(0,0,0);
jump = 0.8;  ///高さ
MotionJ.y = jump;
player.setMotion(MotionJ);  ///ジャンプ
前に動かす
MotionA = new Vector3(0,0,0);
dir=player.getDirection();  ///向いている方向
move = 3;  ///動かしたいブロック数
if(dir === 0){MotionA.x=move;}  ///南
if(dir === 1){MotionA.z=move;}  ///西
if(dir === 2){MotionA.x=-move;}  ///北
if(dir === 3){MotionA.z=-move;}  ///東
player.setMotion(MotionA);  ///動かす

以下のimport文が必要です。
import Nukkit.level.Level;
import Nukkit.block.Block;
import Nukkit.math.Vector3;
※level変数に必ずLevelオブジェクトを入れておいてください

オブジェクトの取得

Levelオブジェクトの取得
デフォルトで使用されているワールドのレベルオブジェクト取得
level = this.getServer().getDefaultLevel();  ///Levelオブジェクトの取得

Playerオブジェクトから取得
=JAVA|
level = player.getLevel(); ///Levelオブジェクトの取得
||=

ワールド名から取得
以下のimport文が必要です。
import Nukkit.import Nukkit.Server;

if(this.getServer().getInstance().isLevelLoaded("ワールド名")){  ///レベルオブジェクトかを条件分岐
level = Server::getInstance().getLevelByName("ワールド名");  ///Levelオブジェクトの取得
}

Level/ワールド関係

Levelの読み込み
this.getServer().loadLevel("ワールド名");
Levelのアンロード
this.getServer().unloadLevel(level);
※ワールド名ではなくレベルオブジェクトを渡してください。
 以前書かれていた情報ではmust be an instance of Nukkit.level.Level, string givenになってしまいます。
Levelの保存
level.save();
ワールドの生成
Server.getInstance().generateLevel("ワールド名");

ブロック/アイテム関係 +爆破

ブロックの情報を取得する
x = block.getX();  ///X座標
y = block.getY();  ///Y座標
z = block.getZ();  ///Z座標


x = block.x;  ///X座標
y = block.y;  ///Y座標
z = block.z;  ///Z座標
指定した座標のブロックの情報を取得する
block = level.getBlock(vector);   ///Blockオブジェクトの取得
block.getID();   ///ブロックID
block.getMetadata();   ///メタ値
block.getName();   ///ブロック名
ブロックを設置する
破壊したい際はブロックidを0にして空気ブロックと置き換えてください

block = Block.get(ブロックid,メタ値);  ///Blockオブジェクトの生成
vector = new Vector3(x座標, y座標, z座標);
level.setBlock(vector, block);

アイテムドロップ
以下のimport文が必要です。
import Nukkit.item.Item;

item = Item.get(アイテムid, メタデータ, 数);  ///itemオブジェクトの生成
vector = new Vector3(x座標, y座標, z座標);  ///座標を指定
level.dropItem(vector,item);  ///アイテムをドロップする

指定した地点を爆破する
以下のimport文が必要です。
import Nukkit.level.Explosion;
import Nukkit.level.Position;

explosion = new Explosion(new Position(x座標, y座標, z座標, level), 3);   ///Explosionオブジェクトの生成
explosion.explode();

看板関係

看板の文字を取得する
以下のimport文が必要です。
import Nukkit.tile.Sign;

pos = new Vector3(X座標, Y座標, Z座標);  ///座標をセット
sign = level.getTile(pos);  ///Tileオブジェクト取得
if(sign instanceof Sign){  ///Signオブジェクトかの判定
text = sign.getText();  ///テキストを取得
}
看板に文字をセットする
以下のimport文が必要です。
import Nukkit.tile.Sign;

pos = new Vector3(X座標, Y座標, Z座標);  ///座標をセット
sign = level.getTile(pos);  ///Tileオブジェクトを取得
if(sign instanceof Sign){  ///Signオブジェクトかの判定
sign.setText("Text1", "Text2", "Text3", "Text4");  ///文字をセット sign.saveNBT();  ///データ(NBT)を保存
}

その他(チェスト/サウンド等)

チェストのインベントリを操作する
以下のimport文が必要です。
import Nukkit.tile.Tile;
import Nukkit.tile.Chest as TileChest;

pos = new Vector3(X座標, Y座標, Z座標);  ///座標をセット
chest = level.getTile(pos);  ///Tileオブジェクトを取得

if(chest instanceof TileChest){  ///TileChestオブジェクトかの判定

chest.getInventory().getItem(1);  ///特定のスロットのアイテムを取得   ///itemにはitemオブジェクトを入れておいてください chest.getInventory().setItem(1, item);  ///特定のスロットにアイテムを入れる chest.getInventory().getContents();  ///すべてのアイテムを取得   ///itemにはitemオブジェクトを配列に入れたものを入れてください chest.getInventory().setContents(item);  ///アイテムを上書き chest.saveNBT();  ///データ(NBT)を保存
}
特定の座標にサウンド(効果音)を再生する

現在対応しているサウンド一覧
以下のimport文が必要です。
import Nukkit.level.sound.(サウンド名)Sound;

pos = new Vector3(X座標, Y座標, Z座標);  ///再生する座標
sound = new <サウンド名>Sound(pos);  ///サウンドオブジェクトの生成
level.addSound(sound);  ///サウンドを再生

パーティクル関係

特定の座標にパーティクルを表示する
以下のimport文が必要です。
import Nukkit.level.particle.(パーティクル名)Particle;

pos = new Vector3(X座標, Y座標, Z座標);  ///座標
particle = new <パーティクル名>Particle(pos);
count = 20;  ///回数
for(i = 0;i < count; ++i){
level.addParticle(particle);
}
特定の座標周辺にパーティクルを表示
以下のimport文が必要です。
import Nukkit.utils.Random;

particle = new <パーティクル名>Particle(new Vector3(X座標, Y座標, Z座標));
xd = 3 * 100;  ///調整
yd = 3 * 100;
zd = 3 * 100;
random = new Random*1;
count = 25;  ///回数
for(i = 0; i < count; ++i){
particle.setComponents( particle.x + random.nextSignedFloat() * xd, particle.y + random.nextSignedFloat() * yd, particle.z + random.nextSignedFloat() * zd ); level.addParticle(particle);
}

先頭へ戻る

このページへのコメント

恒心教大法師檜垣幸人

【毒入り危険】食べたら死ぬナリ

恒心教尊師弁護士唐澤貴洋弁護士が神戸山口組がバックにいる愛媛県今治市波止浜169の恒心教大師中島大士と
山口県柳井市柳井白潟西787のゴロゴロウこと広幸三郎と宮川拓と
三重県四日市市茂福町32 ピセスロイヤル富田105号室の藤原太一と共に
今治造船社長恒心教大法師檜垣幸人にちなんで商品名のどこかに「ひ」「が」「き」「ゆ」「き」「と」の
どれかが入った169種の菓子に毒薬を入れて全国のどこかの店にいつとは言わんが810個仕掛けるナリ
実は当職は店の前で東京大学院生の平敬君と記念写真を撮っているナリ
シバターこと神奈川県横浜市中区根岸町2丁目80−2 2Fの斎藤光の動画ほどでもないナリが
プレデターラットのフォトショおばさんうしじまいい肉以上に証拠能力のある写真でふ

もしもお前らが隠蔽を続けるのならそれをネット上のハセカラキッズ速報内で公開するナリ
北海道旭川市川端町4条7丁目1−16の小関直哉君の勤めるコープみたいな小売側も通報義務があるはずナリ
当職の暴露から発覚したら中島大士の女のナカシマンフェが謝罪記者会見を開く破目になるナリ
食べたらお茶の水女子大学附属中学校の宮川拓君みたいなキッズがrock or dieナリ
あとついでにいつとは言わんが全国どこかの小中学生にトラックか車かバイクで突っ込むナリ
名前に「ひ」「が」「き」「ゆ」「き」「と」のどれかが入った子共を中心に狙うナリ
あとついでにいつとは言わんが両国国技館と全国全ての空港と小中学校と高校とバリシップと
東京オリンピックの会場と被災地とタイシの名前にちなんで全大使館を爆破するなどのテロをするナリ

ワシは口先だけの無能ドルオタパッカマンとは違うんぞなもし
「ひ」「が」「き」「ゆ」「き」「と」関連の菓子を売ってはだめぞなもし
さもなくば2783億円と2783億ナカシマタイシコインを今治造船支社まで持参するぞなもし
お前らに忠告しとくぞ ワイはキレたらガチで何するか分からんから

毒入り危険食べたら死ぬナリ 怪人2783面相
連絡先 0898−41−8338

0
Posted by 名無し(ID:suEYXFyuPA) 2018年04月22日(日) 01:12:19 返信

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

×

この広告は60日間更新がないwikiに表示されております。

メンバーのみ編集できます

メンバー募集!