Projet de " mod Lantien "



  • Bien le bonjour,
    étant passé par la case présentations je m'attelle a la présentations de mon projet en terme de modding.
    donc, pour un server a but " rp " sur  le thème de stargate-atlantis, nous avons besoin de quelques ajouts simple pour commencer

    - déployeur de porte automatique
            " description  littéraire "
    si le signal de redstone s'allume
    remplacer le type de block renseigné (dans le gui) par de l'air et ce sur la hauteur renseigné (aussi sur le gui)

    si le signal de redstone s’éteint 
    si c'est de l'air
    remplacer l'air par le type de block renseigné (dans le gui) et ce sur la hauteur renseigné (aussi renseigné sur le gui)
    si ce n'est pas de l'air
    ne rien faire.

    - détecteur de joueur avec rayon configurable
    comme son nom l'indique un bête block de détection de joueur configurable (via gui aussi)

    voici donc mon humble projet de mod.
    il faut savoir que j'ai déjà réussi par le passé ( 1.2.5) a faire les deployeur porte
    mais sans gui, ça regardai juste 4 block au dessus de lui et si c’était de l'air il le remplace par un block custom, et vice versa.
    je pousse donc le défi un peu plus loin cette fois !!!

    a[size=x-largevancement actuel (30/11/2015)]
    base du deployeur de porte vitrée sans gui / fini

    classe BlockDeployeurVitre

    package aaa.modding.modlantien;
    
    import cpw.mods.fml.relauncher.Side;
    import cpw.mods.fml.relauncher.SideOnly;
    import java.util.Random;
    
    import net.minecraft.block.Block;
    import net.minecraft.block.BlockContainer;
    import net.minecraft.block.material.Material;
    import net.minecraft.init.Blocks;
    import net.minecraft.item.Item;
    import net.minecraft.item.ItemStack;
    import net.minecraft.world.World;
    
    public class BlockDeployeurVitre extends Block
    {
       private final boolean power;
       private static final String __OBFID = "CL_00000297";
    
       public BlockDeployeurVitre(boolean p_i45421_1_)
       {
           super(Material.rock);
           this.power = p_i45421_1_;
    
       }
       /**
        * Lets the block know when one of its neighbor changes. Doesn't know which neighbor changed (coordinates passed are
        * their own) Args: x, y, z, neighbor Block
        */
       public void breakBlock(World world, int x, int y, int z, Block p_149749_5_, int p_149749_6_)
       {
        if (!world.isRemote)
           {
            generationoff(world, x, y, z);
                System.out.println("block detruit");
               }
       }
       public void onBlockAdded(World world, int x, int y, int z)
       {
    
           if (!world.isRemote)
           {
            if (!world.isBlockIndirectlyGettingPowered(x, y, z) && world.getBlock(x, y + 2, z) == Blocks.air)
               {
            generationon(world, x, y, z);
                System.out.println("posé si eteint");
               }
            else if (world.isBlockIndirectlyGettingPowered(x, y, z) && world.getBlock(x, y + 2, z) == Blocks.glass_pane)
            {
            generationoff(world, x, y, z);
                System.out.println("posé si allumé");
               }
           }
       }
       public void onNeighborBlockChange(World world, int x, int y, int z, Block p_149695_5_)
       {
           if (!world.isRemote)
           {
               if (!world.isBlockIndirectlyGettingPowered(x, y, z) && world.getBlock(x, y + 2, z) == Blocks.air)
               {
                generationon(world, x, y, z);
                System.out.println("si eteint");
               }
               else if (world.isBlockIndirectlyGettingPowered(x, y, z) && world.getBlock(x, y + 2, z) == Blocks.glass_pane)
                {
                generationoff(world, x, y, z);
                System.out.println("si allumé");
                }
           }
       }
       /**
        * Ticks the block if it's been scheduled
        */
       public void updateTick(World world, int x, int y, int z, Random p_149674_5_)
       {
           if (!world.isRemote && !world.isBlockIndirectlyGettingPowered(x, y, z))
           {
    
               System.out.println("updatetick");
           }
       }
    
       public void generationon(World world, int x, int y, int z)
       {
        if (world.getBlock(x, y + 2, z) == Blocks.air)
        {
        world.setBlock(x, y + 2, z, Blocks.glass_pane);
        }
        if (world.getBlock(x, y + 3, z) == Blocks.air)
        {
        world.setBlock(x, y + 3, z, Blocks.glass_pane);
        }
        if (world.getBlock(x, y + 4, z) == Blocks.air)
        {
        world.setBlock(x, y + 4, z, Blocks.glass_pane);
        }
    
       }
       public void generationoff(World world, int x, int y, int z)
       {
        if (world.getBlock(x, y + 2, z) == Blocks.glass_pane)
        {
        world.setBlock(x, y + 2, z, Blocks.air);
        }
        if (world.getBlock(x, y + 3, z) == Blocks.glass_pane)
        {
        world.setBlock(x, y + 3, z, Blocks.air);
        }
        if (world.getBlock(x, y + 4, z) == Blocks.glass_pane)
        {
        world.setBlock(x, y + 4, z, Blocks.air);
        }
    
       }
    }
    
    

    et voila ce que ingame ca donne :

    old