パーティクルの表示
((CraftWorld) ワールド).getHandle().a("パーティクル名",X,Y,Z,パーティクルの個数,DX,DY,DZ,0);
X,Y,Zにはパーティクルを表示させる座標を、DX,DY,DZはパーティクルをどの範囲に分散させるかです。
実際の使い方を見ていきましょう。
public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){ if(sender instanceof Player){//コマンドの発行元はプレイヤーか? if(cmd.getName().equalsIgnoreCase("playheart")){ playheart((Player)sender,Integer.valueOf(args[0])); return true; } } return false; } public void playheart(Player player,int num){ Location loc=player.getLocation(); ((CraftWorld) player.getWorld()).getHandle().a("heart", loc.getX(), loc.getY()+2, loc.getZ(), num, 0.32D, 0.32D, 0.32D, 0); }
このプログラムでは/playheart <個数>を打ったプレイヤーの頭の辺りにハートマークを出します。
分散の値は0.32Dがちょうどよいようです。
パーティクル一覧
パーティクル | コード名 |
---|---|
煙 | "smoke" |
ブロック破壊アニメーション | "iconcrack_" |
雪玉/卵の破壊/アイアンゴーレム召喚時 | "snowballpoof" |
ツール破壊時 | "tilecrack_" |
ネザーポータル/エンダーアイ/ドラゴンの卵/エンダーマン/エンダーチェスト | "portal" |
水しぶき | "splash" |
水泡 | "bubble" |
菌糸の胞子 | "townaura" |
爆発 | "hugeexplosion" |
炎 | "flame" |
ハートマーク | "heart" |
クリティカルヒットの閃光 | "crit" |
エンチャント武器のクリティカルの閃光 | "magicCrit" |
音符ブロック | "note" |
文字 | "enchantmenttable" |
溶岩の火の粉 | "lava" |
足跡 | "footstep" |
レッドストーンの煙 | "reddust" |
水の滴 | "dripWater" |
溶岩の滴 | "dripLava" |
スライムのしぶき | "slime" |
※wikiより引用。
ビーム
public static void hatudou(Player player,String s,Entity e){ Location loc2=player.getLocation(); Location l=player.getLocation(); Location loc=e.getLocation(); loc2.add(0,1.2,0); loc.add(0,0.5,0); l.add(0,1.2,0); int _distance=(int) loc.distance(loc2)*20; loc.subtract(loc2.getX(), loc2.getY(), loc2.getZ()); double d=1D/_distance; double x=loc.getX()*d; double y=loc.getY()*d; double z=loc.getZ()*d; for(int i=0;i<_distance;i++){ ((CraftWorld) player.getWorld()).getHandle().a(s, l.getX()+x*i, l.getY()+y*i,l.getZ()+z*i, 10, 0,0,0,0); } }
円
public void playboy(Player player,String s){ Location loc=player.getLocation(); for(float i=0;i<360;i=(float) (i+0.5)){ ((CraftWorld) player.getWorld()).getHandle().a(s, loc.getX()+Math.sin(Math.toRadians(i))*3, loc.getY()+0.3, loc.getZ()+Math.cos(Math.toRadians(i))*3, 1, 0, 0, 0, 0); } }
魔方陣