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

Tool or Armor Enchant if

Discussion in 'Development' started by Loostac, May 10, 2020.

  1. Loostac

    Loostac Spider

    Messages:
    10
    Hello, I want to put a enchant on an item if it is Tool and Armor. Can you help me? (My English bad :p)
     
  2. KinokiYT

    KinokiYT Spider Jockey

    Messages:
    25
    GitHub:
    kinokiyt
    Can you further explain of what you need?
     
  3. Loostac

    Loostac Spider

    Messages:
    10
    if the item in the player's hand is repairable, continue processing if not send message player ("Not repairable item")
     
  4. KinokiYT

    KinokiYT Spider Jockey

    Messages:
    25
    GitHub:
    kinokiyt
    You're trying to check if the has a item in their inventory that can been repaired. If it can be repaired, it repairs the item. If it can't be repaired, it sends a message to the player "Not repairable item". Correct? I am making sure.
     
    Loostac likes this.
  5. Loostac

    Loostac Spider

    Messages:
    10
    yes
     
  6. mlsdmitry0

    mlsdmitry0 Spider

    Messages:
    12
    PHP:
    <?php


    namespace mlsdmitry\ForumThreads;


    use 
    pocketmine\event\Listener;
    use 
    pocketmine\event\player\PlayerInteractEvent;
    use 
    pocketmine\event\player\PlayerJoinEvent;
    use 
    pocketmine\item\Durable;
    use 
    pocketmine\item\Item;

    class 
    EnchantIf implements Listener
    {

        
    /*
         * Let's take PlayerInteractEvent
         * When player interact with item in hand, if item repairable -> repair else -> message player ("Not repairable item")
         */
        
    public function onInteract(PlayerInteractEvent $event) {
            
    $p $event->getPlayer();
            
    $inv $p->getInventory(); //! Get inventory to get the item in hand
            
    $itemInHand $inv->getItemInHand(); // ? That's it!
            
    if ($itemInHand instanceof Durable) { //! oops i forgot about armor. Now it should work correctly
                
    if ($itemInHand->getDamage() == 0//! Just pass it, because of item already fully repaired
                    
    return true;
                
    $itemInHand->setDamage(0);
                
    $inv->setItemInHand($itemInHand);
                
    $p->sendMessage("Item repaired");
            } else {
                
    $p->sendMessage("Not repairable item");
            }
            return 
    true;
        }


        
    /*
         * To test our code
         */
        
    public function onJoin(PlayerJoinEvent $event) {
            
    $p $event->getPlayer();
            
    $item = new Item(Item::DIAMOND_AXE50);
            
    $p->getInventory()->addItem($item);
        }

    }
     
  7. Loostac

    Loostac Spider

    Messages:
    10
    PHP:
    <?php

    namespace loostac2;

    use 
    pocketmine\Player;
    use 
    pocketmine\Server;
    use 
    pocketmine\command\CommandSender;
    use 
    pocketmine\command\Command;
    use 
    pocketmine\plugin\Plugin;
    use 
    pocketmine\level\sound\AnvilUseSound;
    use 
    pocketmine\plugin\PluginBase;
    use 
    onebone\economyapi\EconomyAPI

    class 
    Main extends PluginBase{

        public function 
    onEnable(){
            
    $this->getLogger()->info("§7> §aAktif");
        }

        public function 
    onDisable(){
            
    $this->getLogger()->info("§7> §cDe-Aktif");
        }
        public function 
    onCommand(CommandSender $senderCommand $kmtstring $label, array $args): bool {
            switch(
    $kmt->getName()){
                case 
    "ptamir":
                if(
    $sender instanceof Player) {
                    
    $this->tamirForm($sender);
                }
            break;
        }
        return 
    true;
     }
     public function 
    tamirForm($player){
        
    $api $this->getServer()->getPluginManager()->getPlugin("FormAPI");
        
    $this->eco EconomyAPI::getInstance();
        
    $form $api->createSimpleForm(function (Player $playerint $data null){
            
    $result $data;
            if(
    $result === null){
                return 
    true;
            }             
            switch(
    $result){
                case 
    0:
                    
    $item $player->getPlayer()->getInventory()->getItemInHand();
                    if(
    $item instanceof {
                        if(
    $this->eco->myMoney($player->getName()) >= 10000){
                            
    $this->eco->reduceMoney($player10000);
                    
    $player->sendPopUp("§8»§fEşya Başarıyla Tamir Edildi.");
                    
    $item $player->getPlayer()->getInventory()->getItemInHand();
                    
    $item->setDamage(0);
                    
    $player->getPlayer()->getInventory()->setItemInHand($item);
                    
    $player->getLevel()->addSound(new AnvilUseSound($player));
                    
                    }else{
                        
    $player->sendMessage("§8»§cEşyanı tamir etmek istiyorsan minimum §710000§5TL §cparan olmalı!");
                    }
                }else{
                    
    $player->sendMessage("§8»§cElindeki eşya tamir edilebilir değil!");
                }
            
                break;
                    
                case 
    1:

                break;
            }
            
            });
            
    $form->setTitle("Tamir Menüsü");
            
    $form->setContent("§8»§fTamir etmek istediğin eşyayı eline al!\n\n§8»§cİşlem Ücreti §710000§5TL§c'dir");
            
    $form->addButton("§f-§aEvet§f-");
            
    $form->addButton("§f-§cHayır§f-");
            
    $form->sendToPlayer($player);
            return 
    $form;                   


                
         }
    }
     
  8. Loostac

    Loostac Spider

    Messages:
    10
    This My Code
     
  9. mlsdmitry0

    mlsdmitry0 Spider

    Messages:
    12
    Replace with this code
    Don't forget to import this
    PHP:
    use pocketmine\item\Durable;
    PHP:
    case 0:
                    
    $item $player->getPlayer()->getInventory()->getItemInHand();
                    if(
    $item instanceof Durable) {
                        if(
    $this->eco->myMoney($player->getName()) >= 10000){
                            
    $this->eco->reduceMoney($player10000);
                            
    $player->sendPopUp("§8»§fEşya Başarıyla Tamir Edildi.");
                            
    $item $player->getPlayer()->getInventory()->getItemInHand();
                            
    $item->setDamage(0);
                            
    $player->getPlayer()->getInventory()->setItemInHand($item);
                            
    $player->getLevel()->addSound(new AnvilUseSound($player));

                        }else{
                            
    $player->sendMessage("§8»§cEşyanı tamir etmek istiyorsan minimum §710000§5TL §cparan olmalı!");
                        }
                    }else{
                        
    $player->sendMessage("§8»§cElindeki eşya tamir edilebilir değil!");
                    }

     
  10. Loostac

    Loostac Spider

    Messages:
    10
  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.