2016-04-19 16 views
0

Ich habe ein Plugin programmiert, um jemanden nach rechts zu bewegen, wenn er mit einem bestimmten Text darauf klickt, aber um den Text zu finden, muss ich die Block-Klasse in das Zeichen konvertieren Klasse und verwenden Sie die getTextOnLine(); Funktion hier ist mein Java-Code public class CowShooter erweitert EZPlugin PluginListener implementiert {Wie man einen Block in seine Klasse konvertiert - 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) { 

Bad Code 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); 
} 
}   


} 
} 

hier ist die fo lder, dass der Quellcode ist in Source code for canarymod

+0

'Zeichen Zeichen = (Zeichen) event.getBlockClicked();'? – Pokechu22

+0

Ja thx Ich werde überprüfen, ob die Funktionen integriert sind lol canary ist besser als bukkit – MinecraftBoxGuy

+0

Nein, es kann nicht konvertiert werden Java denkt, es funktioniert, aber canary wirft diese errow java.lang.ClassCastException: net.canarymod.api.world.blocks .CanaryBlock kann nicht in net.canarymod.api.world.blocks.Sign umgewandelt werden – MinecraftBoxGuy

Antwort

0

Holen Sie sich die Koordinaten des Blocks und stellte sie im Zeichen Klasse

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)); 
Verwandte Themen