[Bukkit] Runnable Method, "Tot" Teleport

03/14/2013 17:54 __Sandor__#1
Hii,
Ich habe ein Problem und eine Frage.

Erstmal das Problem:
Ich habe einen RepeatingTask der eine Method ausführt
PHP Code:
Bukkit.getScheduler().scheduleSyncRepeatingTask(pluginrand_item(p), 30 *  20L60 20L); 
Die Method sieht so aus
PHP Code:
    private Runnable rand_item(Player p) {
        final List<
String> list = this.item.getStringList("items");
        
int number = (int) (Math.random()*list.size());
        
PlayerInventory pi p.getInventory();
        
Material mat Material.getMaterial(list.get(number).toUpperCase());
        if(
mat != null){
            
pi.addItem(new ItemStack(mat1));
        }
        
p.sendMessage("Neues Item: " + list.get(number));
        return 
null
Der sagt da ich darf kein null zurück geben. Was muss ich da returnen?



Jetzt komm ich zu meiner Frage:
Ich habe es bei Fun Plugins schon gesehen, dass wenn man kein Leben mehr hat, man nicht stirbt sonder in die Lobby hinteleportiert wird. Ich habe es mit PlayerDeathEvent und mit EntityDamageEvent veruscht aber erfolglos.
03/14/2013 18:04 Howaner#2
einfach EntityDamageEvent und da reinschreiben:
Code:
if (event.getEntity().getType() == EntityType.PLAYER)
{
Player player = (Player)event.getEntity();
if (player.getHealth()-event.getDamage() <= 0)
{
player.setHealth(20);
player.teleport(loc);
event.setCancelled(true);
}
}
Zu deinem null Problem:
Die Funktion muss so aussehen:
Code:
    private void rand_item(Player p) { 
        final List<String> list = this.item.getStringList("items"); 
        int number = (int) (Math.random()*list.size()); 
        PlayerInventory pi = p.getInventory(); 
        Material mat = Material.getMaterial(list.get(number).toUpperCase()); 
        if(mat != null){ 
            pi.addItem(new ItemStack(mat, 1)); 
        } 
        p.sendMessage("Neues Item: " + list.get(number)); 
}
Und dein Runnable so:
Code:
final Player player_final = p;
Bukkit.getScheduler().scheduleSyncRepeatingTask(plugin, new Runnable() {
@Override
public void run() {
rand_item(player_final)
}
}, 30 *  20L, 60 * 20L);
03/14/2013 19:35 __Sandor__#3
Funktioniert ich danke dir