minecraft Crear plugin pocketmine

1) descargar el server de pocketmine e instalar con el wizard
http://www.pocketmine.net/

2) descargar los fuentes que nos serviran para extender nuestras clases
https://github.com/pmmp/pocketmine-mp

En ECLIPSE:
3) crear un proyecto PHP

4)  agregar los fuentes para extender nuestras clases
click derecho ->include parh->configure path

en la pestaña de libraries, click en el boton "add external source folder"
y seleccionar la carpeta entera extraida en el paso (2) o la subcarpeta "src"

5) crear nuestra carpeta source

click derecho ->build path->new source folder

llamarla "src" .

6) en src crear nuestra estructura de directorios (p.e: si es ar\com\cmd\mc\bugreport crear esas 5 carpetas)

7) crear nuestro archivo main , crearemos un archivo llamado BugReport.php

<?php
namespace ar\com\cmd\mc\bugreport;
use pocketmine\plugin\PluginBase;
use pocketmine\command\Command;
use pocketmine\command\CommandSender;

class BugReport extends PluginBase{
    public function onEnable(){
        $this->getLogger()->info("onEnable() has been called!");
    }
    public function onDisable(){
        $this->getLogger()->info("onDisable() has been called!");
    }
    public function onLoad(){
        $this->getLogger()->info("onLoad() has been called!");
    }
    public function onCommand(CommandSender $sender, Command $command, $label, array $args){
        $commandName = $command->getName();
        $this->getLogger()->info("commando: ".$commandName);
        if($commandName === "bugs"){
           
       
            return true;
        }
        return false;
    }
}

8) en la raiz del proyecto crear el archivo plugin.yml

name: BugReport
main: ar\com\cmd\mc\bugreport\BugReport
version: 1.0.0
api: 1.0.0
commands:
  bugs:
    description: show latest bugs reported
    usage: /bugs <limit>

9) exportar el proyecto

click derecho-> export

seleccionar PHP/Phar export

y en la sgt pantalla seleccionar como destino la carpeta donde instalamos el pocket mine server (paso #1)
en mi caso será

C:\Users\ibazan\PocketMine-MP\plugins\bugreport.phar

10) si el server esta ejecutandose, recargarlo con el comando:

reload

fuente:
https://github.com/PocketMine/Documentation/wiki/Plugin-Tutorial


yii2 file input kartik widget

ejecutar este par de sentencias:
composer require kartik-v/bootstrap-fileinput "@dev"
composer require kartik-v/yii2-widget-fileinput "@dev"

la idea es poder guardar  una imagen en una carpeta del sitio:

nuestro modelo tiene una campo que guarda solo el nombre del archivo: $image_name

vamos a crear un campo virtual llamado $image que hace referencia al archivo de imagen que se envia desde el formulario:

class Notifications extends \yii\db\ActiveRecord
{

    var $image;




para usarlo en una vista:

use kartik\file\FileInput;

<?= $form->field($model, 'image')->widget(FileInput::classname(), [
              'options' => ['accept' => 'image/*'],
               'pluginOptions'=>['allowedFileExtensions'=>['jpg','gif','png'],'showUpload' => false,],
          ]);   ?>

en el controller:

use yii\web\UploadedFile;

public function actionCreate() {
        $model = new Notifications ();
      
        if ($model->load ( Yii::$app->request->post () )) {
            $image = UploadedFile::getInstance ( $model, 'image' );
            if (!is_null( $image )) {
                $model->full_image_url = $image->name;
                $ext = end ( (explode ( ".", $image->name )) );
                // generate a unique file name to prevent duplicate filenames
                $model->full_image_url = Yii::$app->security->generateRandomString () . ".{$ext}";
                // the path to save file, you can set an uploadPath
                $uploadPath = Yii::$app->basePath . '/upload-folder/';
                $path = $uploadPath. $model->image_name;
                $image->saveAs ( $path );
            }
            if ($model->save ()) {
                return $this->redirect ( [
                        'view',
                        'id' => $model->id
                ] );
            }
        }

fuente:
https://github.com/kartik-v/yii2-widget-fileinput


yii2 materialize

1) usando widget de wiisoft

fuente:
https://github.com/wiisoft/yii2-materialize

desde consola y dentro de la carpeta de tu proyecto recientemente creado ejecutar la sgt sentencia

composer require --prefer-dist wiisoft/yii2-materialize "*"
 
listo, ahora se debe cambiar hacer los sgts cambios en views/layouts/main.php
 
use wii\materialize\Nav;
use wii\materialize\NavBar;
 
<body>
<?php $this->beginBody() ?>

  <header>
      <?php
      NavBar::begin([... 
         ...
      NavBar::end();
      ?> 
  </header>
  <main>
     <div class="container">
      ... 
     <?= $content ?>
     </div>
  </main>
  <footer class="page-footer">

     <div class="container">
      ...
     </div>
     ...
  </footer> 




linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable