Problèmes avec un bloc de circuit redstone



  • Bonjour,
    L'éditeur est bugué, j'ai dû tout réécrire.
    Alors, j'ai créé des bottes qui, quand on marche sur de la redstone, l'active. Pour cela, j'ai créé un bloc qui extends BlockRedstoneWire, et qui override isProvidingWeakPower pour retourner 15. Mais j'ai plusieurs problèmes :
    1. Le modèle ne fonctionne pas, j'ai pris celui de la redstone où j'ai modifier le nom.
    2. Je veux que il  n'y est pas d'item associé au bloc, comme pour le feu et l'eau.
    3. Le bloc n'est pas enlevé après que je sois sorti du bloc :

    
    private static ArrayList <blockpos>boltwires = new ArrayList<blockpos>();
    private static Object boltwiresLock = new Object();
    
    @SubscribeEvent
     public void onWorldTick(WorldTickEvent e) {
      if(!e.world.isRemote && e.phase == Phase.START) {
       synchronized (boltwiresLock) {
        ArrayList <blockpos>toRemove = new ArrayList<blockpos>();
        for(BlockPos pos : boltwires) {
    
         if(e.world.getBlockState(pos).getBlock() == ModElemental.blockBoltWire) {
          ((BoltWireBlock) ModElemental.blockBoltWire).updateBlock(e.world, pos, e.world.getBlockState(pos));
         } else {
          toRemove.add(pos);
          System.out.println("Block at " + pos + " deleted");
         }
        }
        for(BlockPos pos : toRemove) {
         boltwires.remove(pos);
        }
       }
      }
    

    la position des blocs est enregistré après que j'en pose un dans l'arraylist "boltwires".
    Mais à chaque fois que je marche sur de la redstone, dans le log il y a "Block at […] deleted". Le if n'est jamais valide.</blockpos></blockpos></blockpos></blockpos>


  • Administrateurs

    Salut,

    1. car c'est géré dans le json
    2. les blocs cachés sont hardcodé, je ne suis pas sûr qu'on puisse cacher le bloc d'un mod
    3. Normal, tu le retires de la liste mais tu ne fais jamais de world.setBlockToAir(pos);


  • 1)J'ai pris le blockstates/redstone_wire.json (du minecraft.jar), copié dans le blockstates/boltwire.json (du mod), modifié les "redstone" en "elementalmod:blotwire" avec CTRL+F dans npp, et copié tous les modèles utilisés dans mon mod en modifiant leur nom. Ducoup il est censé avoir la même texture que la redstone de base. Mais c'est un carré noir et violet.
    2) Il fallait juste mettre le paramètre itemBlock à null dans le GameRegistry.registerBlock
    3) En fait, à chaque tick, je vérifie si le bloc est toujours un boltWire si oui, dans la fonction updateBlock, je vérifie si il y a un joueur avec mes bottes dessus, si non, je le remplace par de la redstone. Cette fonction fonctionne bien. Si le bloc n'est pas un boltwire, je ne ferais plus de vérifications dessus. Je n'ai pas besoin de faire un World.setBlockToAir(pos)…


  • Administrateurs

    1. Regardes s'il y a quelque chose dans les logs ?
    2. ok
    3. Je ne comprends pas l'intérêt de l'event alors.


    1. Il y a écrit qu'il ne trouve pas les modèles avec des différentes "power"
    2. L'event est la base de tout : Je vérifie à chaque tick.

  • Administrateurs

    Il y a déjà une fonction dans la classe bloc appelé régulièrement.
    Tu peux envoyer les logs complet et ton fichier json ?



  • Il y en a une qui ne fonctionne pas et l'autre n'est pas appelée assez souvent.
    J'enverrais les logs et le JSON demain matin.


  • Administrateurs

    tile entity -> implements IUpdatePlayerList -> fonction updateTick dans ce cas.



    1. Alors, d'abord mon log : http://pastebin.com/mR2RwEbW (C'est celui du dossier log, le tout ne rentrait pas dans la console et puis du coup il y a tous les debug)
      Et mon JSON (blockstates) :
    {
        "variants": {
            "east=none,north=none,south=none,west=none": { "model": "elementalmod:boltwire_none" },
    
            "east=none,north=side,south=none,west=none": { "model": "elementalmod:boltwire_n" },
            "east=none,north=none,south=side,west=none": { "model": "elementalmod:boltwire_n" },
            "east=side,north=none,south=none,west=none": { "model": "elementalmod:boltwire_n", "y": 90 },
            "east=none,north=none,south=none,west=side": { "model": "elementalmod:boltwire_n", "y": 90 },
    
            "east=none,north=up,south=none,west=none": { "model": "elementalmod:boltwire_uns" },
            "east=none,north=none,south=up,west=none": { "model": "elementalmod:boltwire_uns", "y": 180, "uvlock": true },
            "east=up,north=none,south=none,west=none": { "model": "elementalmod:boltwire_uew" },
            "east=none,north=none,south=none,west=up": { "model": "elementalmod:boltwire_uew", "y": 180, "uvlock": true },
    
            "east=side,north=side,south=none,west=none":   { "model": "elementalmod:boltwire_ne", "uvlock": true },
            "east=side,north=up,south=none,west=none":  { "model": "elementalmod:boltwire_une", "uvlock": true },
            "east=up,north=side,south=none,west=none":  { "model": "elementalmod:boltwire_nue", "uvlock": true },
            "east=up,north=up,south=none,west=none": { "model": "elementalmod:boltwire_unue", "uvlock": true },
    
            "east=side,north=none,south=side,west=none":   { "model": "elementalmod:boltwire_ne", "y": 90, "uvlock": true },
            "east=up,north=none,south=side,west=none":  { "model": "elementalmod:boltwire_une", "y": 90, "uvlock": true },
            "east=side,north=none,south=up,west=none":  { "model": "elementalmod:boltwire_nue", "y": 90, "uvlock": true },
            "east=up,north=none,south=up,west=none": { "model": "elementalmod:boltwire_unue", "y": 90, "uvlock": true },
    
            "east=none,north=none,south=side,west=side":   { "model": "elementalmod:boltwire_ne", "y": 180, "uvlock": true },
            "east=none,north=none,south=up,west=side":  { "model": "elementalmod:boltwire_une", "y": 180, "uvlock": true },
            "east=none,north=none,south=side,west=up":  { "model": "elementalmod:boltwire_nue", "y": 180, "uvlock": true },
            "east=none,north=none,south=up,west=up": { "model": "elementalmod:boltwire_unue", "y": 180, "uvlock": true },
    
            "east=none,north=side,south=none,west=side":   { "model": "elementalmod:boltwire_ne", "y": 270, "uvlock": true },
            "east=none,north=side,south=none,west=up":  { "model": "elementalmod:boltwire_une", "y": 270, "uvlock": true },
            "east=none,north=up,south=none,west=side":  { "model": "elementalmod:boltwire_nue", "y": 270, "uvlock": true },
            "east=none,north=up,south=none,west=up": { "model": "elementalmod:boltwire_unue", "y": 270, "uvlock": true },
    
            "east=none,north=side,south=side,west=none":  { "model": "elementalmod:boltwire_n" },
            "east=none,north=up,south=side,west=none": { "model": "elementalmod:boltwire_uns" },
            "east=none,north=side,south=up,west=none": { "model": "elementalmod:boltwire_uns", "y": 180 },
            "east=none,north=up,south=up,west=none": { "model": "elementalmod:boltwire_unus" },
    
            "east=side,north=none,south=none,west=side":  { "model": "elementalmod:boltwire_n", "y": 90 },
            "east=up,north=none,south=none,west=side": { "model": "elementalmod:boltwire_uns", "y": 90 },
            "east=side,north=none,south=none,west=up": { "model": "elementalmod:boltwire_uns", "y": 270 },
            "east=up,north=none,south=none,west=up": { "model": "elementalmod:boltwire_ueuw" },
    
            "east=side,north=side,south=side,west=none":    { "model": "elementalmod:boltwire_nse", "uvlock": true },
            "east=side,north=up,south=side,west=none":   { "model": "elementalmod:boltwire_unse", "uvlock": true },
            "east=side,north=side,south=up,west=none":   { "model": "elementalmod:boltwire_nuse", "uvlock": true },
            "east=up,north=side,south=side,west=none":   { "model": "elementalmod:boltwire_nsue", "uvlock": true },
            "east=up,north=side,south=up,west=none":  { "model": "elementalmod:boltwire_nusue", "uvlock": true },
            "east=side,north=up,south=up,west=none":  { "model": "elementalmod:boltwire_unuse", "uvlock": true },
            "east=up,north=up,south=side,west=none":  { "model": "elementalmod:boltwire_unsue", "uvlock": true },
            "east=up,north=up,south=up,west=none": { "model": "elementalmod:boltwire_unusue", "uvlock": true },
    
            "east=side,north=none,south=side,west=side":    { "model": "elementalmod:boltwire_nse", "y": 90, "uvlock": true },
            "east=up,north=none,south=side,west=side":   { "model": "elementalmod:boltwire_unse", "y": 90, "uvlock": true },
            "east=side,north=none,south=side,west=up":   { "model": "elementalmod:boltwire_nuse", "y": 90, "uvlock": true },
            "east=side,north=none,south=up,west=side":   { "model": "elementalmod:boltwire_nsue", "y": 90, "uvlock": true },
            "east=side,north=none,south=up,west=up":  { "model": "elementalmod:boltwire_nusue", "y": 90, "uvlock": true },
            "east=up,north=none,south=side,west=up":  { "model": "elementalmod:boltwire_unuse", "y": 90, "uvlock": true },
            "east=up,north=none,south=up,west=side":  { "model": "elementalmod:boltwire_unsue", "y": 90, "uvlock": true },
            "east=up,north=none,south=up,west=up": { "model": "elementalmod:boltwire_unusue", "y": 90, "uvlock": true },
    
            "east=none,north=side,south=side,west=side":    { "model": "elementalmod:boltwire_nse", "y": 180, "uvlock": true },
            "east=none,north=side,south=up,west=side":   { "model": "elementalmod:boltwire_unse", "y": 180, "uvlock": true },
            "east=none,north=up,south=side,west=side":   { "model": "elementalmod:boltwire_nuse", "y": 180, "uvlock": true },
            "east=none,north=side,south=side,west=up":   { "model": "elementalmod:boltwire_nsue", "y": 180, "uvlock": true },
            "east=none,north=up,south=side,west=up":  { "model": "elementalmod:boltwire_nusue", "y": 180, "uvlock": true },
            "east=none,north=up,south=up,west=side":  { "model": "elementalmod:boltwire_unuse", "y": 180, "uvlock": true },
            "east=none,north=side,south=up,west=up":  { "model": "elementalmod:boltwire_unsue", "y": 180, "uvlock": true },
            "east=none,north=up,south=up,west=up": { "model": "elementalmod:boltwire_unusue", "y": 180, "uvlock": true },
    
            "east=side,north=side,south=none,west=side":    { "model": "elementalmod:boltwire_nse", "y": 270, "uvlock": true },
            "east=side,north=side,south=none,west=up":   { "model": "elementalmod:boltwire_unse", "y": 270, "uvlock": true },
            "east=up,north=side,south=none,west=side":   { "model": "elementalmod:boltwire_nuse", "y": 270, "uvlock": true },
            "east=side,north=up,south=none,west=side":   { "model": "elementalmod:boltwire_nsue", "y": 270, "uvlock": true },
            "east=up,north=up,south=none,west=side":  { "model": "elementalmod:boltwire_nusue", "y": 270, "uvlock": true },
            "east=up,north=side,south=none,west=up":  { "model": "elementalmod:boltwire_unuse", "y": 270, "uvlock": true },
            "east=side,north=up,south=none,west=up":  { "model": "elementalmod:boltwire_unsue", "y": 270, "uvlock": true },
            "east=up,north=up,south=none,west=up": { "model": "elementalmod:boltwire_unusue", "y": 270, "uvlock": true },
    
            "east=side,north=side,south=side,west=side": { "model": "elementalmod:boltwire_nsew", "uvlock": true },
    
            "east=side,north=up,south=side,west=side": { "model": "elementalmod:boltwire_unsew", "uvlock": true },
            "east=side,north=side,south=up,west=side": { "model": "elementalmod:boltwire_unsew", "y": 180, "uvlock": true },
            "east=up,north=side,south=side,west=side": { "model": "elementalmod:boltwire_unsew", "y": 90, "uvlock": true },
            "east=side,north=side,south=side,west=up": { "model": "elementalmod:boltwire_unsew", "y": 270, "uvlock": true },
    
            "east=side,north=up,south=up,west=side": { "model": "elementalmod:boltwire_unusew", "uvlock": true },
            "east=up,north=side,south=side,west=up": { "model": "elementalmod:boltwire_unusew", "y": 90, "uvlock": true },
    
            "east=up,north=up,south=side,west=side": { "model": "elementalmod:boltwire_unsuew", "uvlock": true },
            "east=up,north=side,south=up,west=side": { "model": "elementalmod:boltwire_unsuew", "y": 90, "uvlock": true },
            "east=side,north=side,south=up,west=up": { "model": "elementalmod:boltwire_unsuew", "y": 180, "uvlock": true },
            "east=side,north=up,south=side,west=up": { "model": "elementalmod:boltwire_unsuew", "y": 270, "uvlock": true },
    
            "east=up,north=up,south=up,west=side": { "model": "elementalmod:boltwire_unusuew", "uvlock": true },
            "east=up,north=side,south=up,west=up": { "model": "elementalmod:boltwire_unusuew", "y": 90, "uvlock": true },
            "east=side,north=up,south=up,west=up": { "model": "elementalmod:boltwire_unusuew", "y": 180, "uvlock": true },
            "east=up,north=up,south=side,west=up": { "model": "elementalmod:boltwire_unusuew", "y": 270, "uvlock": true },
    
            "east=up,north=up,south=up,west=up": { "model": "elementalmod:boltwire_unusueuw", "uvlock": true }
        }
    }
    
    1. Je vais donc faire un tile entity
      EDIT : c'est bon, çafonctionne avec le Tile Entity 🙂

  • Administrateurs

    [10:34:37] [Client thread/ERROR] [FML/]: Model definition for location elementalmod:boltwire#east=up,north=side,power=8,south=up,west=up not found
    Il cherche chaque variante pour les différentes valeurs de power.
    Il faut ajouter quelque chose pour lui dire d'ignorer ça. Je cherches

    Retrouvé :
            this.registerBlockWithStateMapper(Blocks.redstone_wire, (new StateMap.Builder()).ignore(new IProperty[] {BlockRedstoneWire.POWER}).build());
    C'est dans la classe BlockModelShapes. Maintenant pour l'utiliser avec Forge, c'est :
    ModelLoader.setCustomStateMapper(tonBlock, (new StateMap.Builder()).ignore(new IProperty[] {ClasseDeTonTonBlock.POWER}).build());
    À mettre dans preInit après l'initialisation (et enregistrement) du bloc !



  • Merci, je teste ça tout de suite !
    EDIT : The method ignore(IProperty[]) is undefined for The type StateMap.Builder
    EDIT2 : Ok, c'est addPropertiesToIgnore()


  • Administrateurs

    Ah tu as sûrement des mapping plus recentes que moi ^^