2016-04-19 8 views
0

プラグインをプログラミングして、特定のテキストの記号を右クリックしてもテキストを見つけることができます。ブロッククラスを記号に変換する必要がありますここgetTextOnLine();機能をクラスと使用し、私のJavaコード パブリッククラスCowShooterはEZPluginがPluginListener {ブロックをクラスに変換する-Canarymod

@Override 
public boolean enable() { 
Canary.hooks().registerListener(this, this); 
return super.enable(); // Call parent class's version too. 
} 

@HookHandler 
public void SignChangeHook(BlockRightClickHook event) { 
Player player = event.getPlayer(); 
Block block = event.getBlockClicked(); 

if (block.getType() == BlockType.SignPost || block.getType() == BlockType.WallSign) { 

悪いコード Sign sign = event.getBlockClicked();

if (sign.getTextOnLine(1) == "TP") { 
Location loc = player.getLocation(); 
int playerX = (int) loc.getX(); 
int playerY = (int) loc.getY(); 
int playerZ = (int) loc.getZ(); 
loc.setY(playerY+10); 
player.teleportTo(loc); 
} 
}   


} 
} 

を実装して延びている。ここFOがありますソースコードはSource code for canarymod

+0

'サイン記号=(ログイン)event.getBlockClicked()でそれらを設定し、'? – Pokechu22

+0

はいthx関数が統合されているかどうかチェックしますlol canaryはbukkitよりも良い – MinecraftBoxGuy

+0

いいえ変換できませんjavaは動作すると思っていますがcanaryはこのerrowをスローしますjava.lang.ClassCastException:net.canarymod.api.world.blocks .CanaryBlockはnet.canarymod.api.world.blocks.Signにキャストできません。 – MinecraftBoxGuy

答えて

0
であるlder

は、ブロックの座標を取得し、符号クラス

Location loc = player.getLocation(); 
loc.setX(event.getBlockClicked().getX()); 
loc.setZ(event.getBlockClicked().getZ()); 
loc.setY(event.getBlockClicked().getY()); 
World world = loc.getWorld(); 

Sign sign = (Sign)world.getTileEntity(world.getBlockAt(loc)); 
関連する問題