1. The forums will be archived and moved to a read only mode in about 2 weeks (mid march).

Error with my plugin

Discussion in 'Development' started by DanielYTK, Feb 9, 2017.

  1. DanielYTK

    DanielYTK Zombie

    Messages:
    227
    the code: ("this code is a edit of RealVanish")
    PHP:
    use pocketmine\command\CommandSender;
    use 
    pocketmine\command\Command;
    use 
    pocketmine\event\Listener;
    use 
    pocketmine\plugin\PluginBase;
    use 
    pocketmine\Server;

     use 
    pocketmine\Player;
     use 
    pocketmine\event\entity\EntityDamageByEntityEvent;
     use 
    pocketmine\event\entity\EntityDamageEvent;
     use 
    pocketmine\entity\Entity;

     use 
    pocketmine\utils\TextFormat as C;
     use 
    pocketmine\utils\Config;
     use  
    pocketmine\network\protocol\DisconnectPacket;
     use 
    pocketmine\Server\ConsoleCommandSender;
     use 
    pocketmine\inventory\PlayerInventory;
     use 
    pocketmine\inventory\Inventory;

     use 
    pocketmine\event\player\PlayerQuitEvent;
     use 
    pocketmine\event\player\PlayerInteractEvent;
     use 
    pocketmine\event\player\PlayerPreLoginEvent;

     use 
    pocketmine\item\enchantment\Enchantment;
     use 
    pocketmine\item\enchantment\EnchantmentEntry;
     use 
    pocketmine\item\enchantment\EnchantmentList;

     use 
    pocketmine\item\Item;

     use 
    pocketmine\math\Vector3;

     use 
    pocketmine\event\block\BlockPlaceEvent;


    class 
    code extends PluginBase implements Listener{
    public function 
    onEnable(){
     
    $this->getServer()->getPluginManager()->registerEvents($this$this);
     
    $this->getServer()->getPluginManager("EconomyAPI");
     
    $this->admin = [];
     }
    public function 
    onLoad(){
    }
     public function 
    onCommand(CommandSender $senderCommand $cmd$label, array $args){
    switch(
    $cmd->getName()){
        case 
    "eadmin":
        
    $this->admin[$sender->getName()];
        
    $inv $sender->getInventory();
        
    $inv->clearAll();
        
    $itens = [
        
    Item::get(28001), //Graveto
        
    Item::get(34001), //Livro
        
    Item::get(35201), //Osso
        
    Item::get(28801), //Pena
        
    Item::get(101064),//Grade de iron
        
    Item::get(101064),//Grade de iron
        
    Item::get(101064),//Grade de iron
        
    Item::get(101064),//Grade de iron
        
    Item::get(101064),//Grade de iron
        
    Item::get(1010,64),//Grade de iron
        
    ];
        
    $knockback Enchantment::getEnchantment(12);
        
    $knockback->setLevel(25);
        
    $itens[0]->addEnchantment($knockback);
        
    $itens[0]->setCustomName("§e§lAnti-Knockback §r/n§7(Toque em um jogador)");
        
    $sender->getInventory()->addItem($itens[0]);
        
    $itens[6]->setCustomName("§c§lNull");
        
    $sender->getInventory()->addItem($itens[6]);
        
    $itens[5]->setCustomName("§c§lNull");
        
    $sender->getInventory()->addItem($itens[5]);
        
    $itens[1]->setCustomName("§e§lInfo §r/n§7(Mostrar as informações do jogador)");
        
    $sender->getInventory()->addItem($itens[1]);
        
    $itens[7]->setCustomName("§c§lNull");
        
    $sender->getInventory()->addItem($itens[7]);
        
    $itens[8]->setCustomName("§c§lNull");
        
    $sender->getInventory()->addItem($itens[8]);
        
    $itens[2]->setCustomName("§e§lCrashador §r/n§7(Crashar o minecraft do jogador)");
        
    $sender->getInventory()->addItem($itens[2]);
        
    $itens[3]->setCustomName("§e§lGlide / No-Fall§r§7 /n(Ver se o jogador está de Glide ou No-Fall)");
        
    $sender->getInventory()->addItem($itens[3]);
        
    $itens[4]->setCustomName("§c§lNull");
        
    $sender->getInventory()->addItem($itens[4]);
        
    $itens[9]->setCustomName("§c§lNull");
        
    $sender->getInventory()->addItem($itens[9]);
        
    $sender->getInventory()->setHotbarSlotIndex(3801);
        
    $sender->getInventory()->setHotbarSlotIndex(3402);
        
    $sender->getInventory()->setHotbarSlotIndex(1013);
        
    $sender->getInventory()->setHotbarSlotIndex(3524);
        
    $sender->getInventory()->setHotbarSlotIndex(2885);
        
    $sender->getInventory()->setHotbarSlotIndex(1016);
        
    $sender->getInventory()->setHotbarSlotIndex(1017);
        
    $sender->getInventory()->setHotbarSlotIndex(1018);
        
    $sender->getInventory()->setHotbarSlotIndex(1019);
        
    $sender->getInventory()->setHotbarSlotIndex(10110);
        
    $this->getServer()->removeOnlinePlayer($sender);
        
    $this->getServer()->removePlayer($sender);
        foreach(
    $this->getServer()->getOnlinePlayers() as $player){
                    if(
    $player->canSee($sender)){
                        if(!
    $player->hasPermission("admin.ver")){
                        
    $player->hidePlayer($sender);
                        }
                    }
        }
        
    Server::getInstance()->dispatchCommand($sender"sc §aAcabei de entrar em modo admin!");
        unset(
    $sender->buffer);
        
    $sender->sendMessage("§cAdmin>§f Você entrou no modo admin");
        
    $this->getServer()->broadcastMessage($sender->getLeaveMessage());
        return 
    true;
        break;
        case 
    "sadmin":
        
    $sender->getInventory()->clearAll();
        unset(
    $this->admin[$sender->getName()]);
        
    Server::getInstance()->dispatchCommand($sender"sc §aAcabei de sair do modo admin, só falta relogar");
        
    $pk = new DisconnectPacket();
        
    $pk->message "§cAdmin>§f Para sair do modo admin, basta relogar";
        
    $sender->directDataPacket($pk);
        return 
    true;
        break;
    }
    return 
    false;
     }
     public function 
    onDamage(EntityDamageEvent $ev){
        
    $eco $this->getServer()->getPluginManager("EconomyAPI"); //Pega o plugin economy
        
    $entity $ev->getEntity();
        if(
    $entity instanceof Player){
            if(
    $entity instanceof EntityDamageByEntityEvent){
                
    $player $ev->getDamager();
                if(
    $player instanceof Player){
            
    $id $player->getInventory()->getIteminHand()->getId();
            if(
    $player->isAdmin()){
                if(
    $id == 340){
                    
    $name $entity->getName();
                    
    $gamemode $entity->getGamemode();
                    
    $life $entity->getHealth();
                    
    $xp $entity->getXpLevel();
                    
    $admin $entity->isAdmin();
                    
    $money $eco->myMoney($entity);
                    
    $player->sendMessage(" ");
                    
    $player->sendMessage("§7Nick: §a".$name ."\n§7Gamemode:§a ".$gamemode ."\n§7Vida:§a ".$life ."\n§7XP:§a ".$xp ."\n§7Modo Admin: ".$admin ."\n§7Money:§a ".$money);
                    
    $player->sendMessage(" ");
                    return;
                }
                if(
    $id == 352){
                        
    $entity->close("""§cThis server has crashed");
                        return;
                }
                if(
    $id == 288){
                        
    $x $entity->getX();
                        
    $y $entity->getY();
                        
    $z $entity->getZ();
                        
    $entity->teleport(new Vector3($entity->getX(), $entity->getY() + 15$entity->getZ()));
                        if(
    $entity->getLastDamageCause()->getCause() === EntityDamageEvent::CAUSE_FALL){ //Verificar a causa do dano, no caso "queda"
                            
    $player->sendMessage(" ");
                            
    $player->sendMessage("§7A vida do §a".$entity->getName() ." §7agora é: §a".$entity->getHealth);
                            
    $player->sendMessage(" ");
                             
                            }
                        }
                    }
                }
            }
        }
     }
     public function 
    aoQuebrar(BlockPlaceEvent $ev){
        
    $player $ev->getPlayer();
        
    $id $ev->getBlock()->getId();
        if(isset(
    $this->admin[$player->getName()])){
            if(
    $id === 101){
                
    $ev->setCancelled(true);
            }
        }
     }
     public function 
    aoSair(PlayerQuitEvent $ev){
        
    $player $ev->getPlayer();
        if(isset(
    $this->admin[$player->getName()])){
            
    $player->getInventory()->clearAll();
            unset(
    $this->admin[$player->getName()]);
        }
     }

     public function 
    isAdmin(Player $sender){
        if(isset(
    $this->admin[$sender->getName()])){
            
    $player->sendMessage("§aVerdadeiro");
            return 
    true;
        } else {
            
    $player->sendMessage("§cFalso");
            return;
        }
     }
     public function 
    onDisable(){}
    I can not do anything with the EntityDamageEvent items, and the BlockPlaceEvent block can be placed on the floor, even the event being canceled '-'
     
    StuntzCo likes this.
  2. wolfdale

    wolfdale Zombie Pigman

    Messages:
    535
    GitHub:
    diamond-gold
    Can you try to add echos to make sure that the events are called and that they are cancelled?
     
    StuntzCo likes this.
  3. DanielYTK

    DanielYTK Zombie

    Messages:
    227
    BlockPlaceEvent as called, but $event->setCancelled(true); is not called '-'
     
  4. DanielYTK

    DanielYTK Zombie

    Messages:
    227
    I think there must be something wrong with the function isAdmin () and $ this-> admin [$ sender-> getName ()]
     
  5. DanielYTK

    DanielYTK Zombie

    Messages:
    227
    for this:
    Code:
     Notice: Undefined index: DanielYTK in C:\Users\DanielYTK\Documents\PocketMine-MP\plugins\Admin\src\DanielYTK\Coder\code.php on line 57 
    line 57:
    PHP:
    switch($cmd->getName()){
        case 
    "eadmin":
        
    $this->admin[$sender->getName()];  -- line 55
        $inv 
    $sender->getInventory();
        
    $inv->clearAll();
        
    $itens = [
        
    Item::get(28001), //Graveto
        
    Item::get(34001), //Livro
        
    Item::get(35201), //Osso
        
    Item::get(28801), //Pena
        
    Item::get(101064),//Grade de iron
        
    Item::get(101064),//Grade de iron
        
    Item::get(101064),//Grade de iron
        
    Item::get(101064),//Grade de iron
        
    Item::get(101064),//Grade de iron
        
    Item::get(1010,64),//Grade de iron
        
    ];
     
     
  6. DanielYTK

    DanielYTK Zombie

    Messages:
    227
    ops, $this->admin[$sender->getName()]; is line 57
     
  7. Marabou

    Marabou Baby Zombie

    Messages:
    137
    GitHub:
    wiligangster
    Do
    PHP:
    if(isset($this->admin[$sender->getName()])){
     
    corytortoise likes this.
  8. DanielYTK

    DanielYTK Zombie

    Messages:
    227
    No guy in this line 57 I'm setting up a player like admin, so I can check later ...
     
  9. corytortoise

    corytortoise Skeleton

    Messages:
    825
    GitHub:
    corytortoise
    Your code there doesn't do anything. If you want to set it, you need to use something like this:

    PHP:
    $this->admin[$sender->getName()] = $value;

    //or? Never used this:
    set($this->admin[$sender->getName(), $value);
    Keep in mind that the value can be anything, numeric or not, and isset() will then return true(This is my understanding, anyway. Feel free to correct me if I am wrong.)
     
    Marabou likes this.
  10. DanielYTK

    DanielYTK Zombie

    Messages:
    227
    Ohh, thanks man.
     
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.