• Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    Projet de " mod Lantien "

    Idées & projets
    1.7.10
    1
    1
    942
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • O
      omabeach last edited by

      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
      :::

      j’ai deja commencé les deployeur sans gui pour l’instant afin de (me remettre dans le bain déjà…) créer la base du block, capter la redstone que faire si redstone allumer etc etc ^^
      voila ou j’en suis :

      examplemod
      (je n’ai meme pas pris la peine de changer le package de l’exemple de forge^^)

      package com.example.examplemod;
      
      import com.example.examplemod.proxy.CommonProxy;
      
      import cpw.mods.fml.common.Mod;
      import cpw.mods.fml.common.Mod.EventHandler;
      import cpw.mods.fml.common.SidedProxy;
      import cpw.mods.fml.common.event.FMLInitializationEvent;
      import cpw.mods.fml.common.event.FMLPostInitializationEvent;
      import cpw.mods.fml.common.event.FMLPreInitializationEvent;
      import cpw.mods.fml.common.registry.GameRegistry;
      import net.minecraft.block.Block;
      import net.minecraft.block.material.Material;
      import net.minecraft.creativetab.CreativeTabs;
      
      @Mod(modid = ExampleMod.MODID, version = ExampleMod.VERSION)
      public class ExampleMod
      {
         public static final String MODID = "modlantia";
         public static final String VERSION = "1.0";
      
         @SidedProxy(clientSide = "com.example.examplemod.proxy.ClientProxy", serverSide = "com.example.examplemod.proxy.CommonProxy")
      public static CommonProxy proxy;
         public static Block blockdeployeurvitre;
         public static Block blockdeployeurporte;
      
         @EventHandler
      public void preInit(FMLPreInitializationEvent event)
      {
      blockdeployeurvitre = new BlockDeployeurVitre(Material.rock).setBlockName("deployeur1").setBlockTextureName(MODID + ":deployeur_vitre").setCreativeTab(CreativeTabs.tabBlock);
      blockdeployeurporte = new BlockDeployeurPorte(Material.rock).setBlockName("deployeur2").setBlockTextureName(MODID + ":deployeur_porte").setCreativeTab(CreativeTabs.tabBlock);
      
      GameRegistry.registerBlock(blockdeployeurvitre, "deployeur_vitre");
      GameRegistry.registerBlock(blockdeployeurporte, "deployeur_porte");
      
      }
      
      @EventHandler
      public void init(FMLInitializationEvent event)
      {
      proxy.registerRender();
      }
      
      @EventHandler
      public void postInit(FMLPostInitializationEvent event)
      {
      
      }
      }
      
      

      BlockDeployeurVitre

      package com.example.examplemod;
      
      import java.util.Random;
      
      import net.minecraft.block.Block;
      import net.minecraft.block.material.Material;
      import net.minecraft.init.Blocks;
      import net.minecraft.world.World;
      
      public class BlockDeployeurVitre extends Block
      {
      
      protected BlockDeployeurVitre(Material material)
      {
      super(material);
      
      }
      public boolean isOpaqueCube()
         {
             return false;
         }
      
      public void onNeighborBlockChange(World world, int x, int y, int z, Block p_149695_5_)
         {
             if (!world.isRemote)
             {
              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);
              }
              if (world.getBlock(x, y + 5, z) == Blocks.glass_pane)
              {
              world.setBlock(x, y + 5, z, Blocks.air);
              }
                 else if (!this.canBlockGrass && world.isBlockIndirectlyGettingPowered(x, y, 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);
                  }
                  if (world.getBlock(x, y + 5, z) == Blocks.air)
                  {
                  world.setBlock(x, y + 5, z, Blocks.glass_pane);
                 }
             }
         }
      }
      }
      
      

      tout ça fonctionne, 
      enfin faut le dire vite…
      si je met un levier ou un block de redstone juste a coté du block ça n’active pas le block en revanche avec le fil de redstone ça fonctionne.
      si vous souhaitez aider ^^  
      sinon, je trouverai !=)
      de plus sur ce que j’avais fait en 1.2.5 j’avais recuperer un bout de code de la torche redstone, 
      ce qui faisait que le fil de redstone se connectais au deployeur,

      exemple :
      si je faisais une longue ligne de deployeur et que je l’alimentais avec juste un long fil de redstone parallèle aux deployeurs ça se connectais et les activais

      je vais viser ça pour la premières ébauche de mes deployeur sans gui.
      une foi fait je ferais un autre indépendant avec le gui de réglages

      voila, j’ouvre éclipse !
      bonne soirée !

      :::

      https://www.youtube.com/channel/UC74HKvv67kvm8and7xkQfbg

      1 Reply Last reply Reply Quote 0
      • 1 / 1
      • First post
        Last post
      Design by Woryk
      Contact / Mentions Légales

      MINECRAFT FORGE FRANCE © 2018

      Powered by NodeBB