Dimension, structures.



  • Salut tout le monde, comme à mon habitude je regroupe mes différents problèmes
    tout d'abord désolé de mon absence, quelques projets m'ont pris beaucoup de temps,
    je me remets donc à coder et je me heurte à quelques soucis.

    #Une dimension sans jour?(Une dimension sans jour?)

    J'ai créé une dimension dite "bleu" c'est à dire que l'herbe tend vers un vert bleu, le ciel est bleu foncé, les zombies sont bleus les arbres aussi. Mon but était initialement de créer une dimension hardcore. je n'ai pas la mùoindre idée de comment je pourrais faire en sorte que le jour n'existe pas. (ou sinon plutot que la nuit, faire en sorte que les mobs spawn tout le temps)

    en cas de besoin voici le code actuelle de ma dimension:

    WorldProvider: http://pastebin.com/TXwfPuzY
    WorldGenerator: http://pastebin.com/X0dsNHyF
    BiomeGen: http://pastebin.com/qADaCHiB

    également j'ai quelques difficultés pour équilibré le spawn des mobs et je me retrouve avec de nombreux blazes.

    #Un gamerule actif?(Un gamerule actif?)
    Le but recherché est le suivant lorsque l'on meut:

    • Ne jamais perdre son inventaire (soit activé le gamerule keeepInventory)
    • perdre un pourcentage d'xp en fonction du nombre d'xp
    • Ne jamais respawn avec toute sa faim

    je n'ai aucune idée quant à ça, c'est pour cela que je vous en fait part.

    #Une structure refuse de se générer(Une structure refuse de se générer)

    Mon code marchait autrefois et je ne comprends pas pourquoi ma structure ne se génère plus, en effet d'habitude un bloc faisait respawn la structure à des heures précises à condition qu'un joueur se trouve à proximité (pour que le chunk soit chargé). Or cela ne fonctionne plus maintenant, voici le code du bloc:

    http://pastebin.com/zn25qz99
    je ne mets pas le code de la génération car inutile ici.

    Edit: Quel c** j'ai avant toute chose oublié de vous remercier de votre aide dans ce post ^^



  • Il me semble qu'il faut modifier le code de Minecraft lui même pour les gamerules


  • Moddeurs confirmés Rédacteurs Administrateurs

    Salut,
    C'est pas (new MommyDungeon(this.worldObj, rand, this.xCoord, this.yCoord, this.zCoord)).generate(); normalement ?
    La classe ressemble à quoi ?

    Pour la nuit, dans ton world provider essaye de mettre :

    public boolean isDaytime()
    {
    return false;
    }
    

    Pour le gamerule, aucune idée.



  • @utybo, non merci, pas de mod sur du vanilla :3
    @robin, cette classe est faite avec je ne sais plus quelle tool, sa principale est ainsi:

    
    public MommyDungeon(World world, Random rand, int i, int j, int k)
    {
    this.generate(world, rand, i, j, k);
    }
    
    

    visiblement le soucis vient de la condition car il ne me fais pas de print.
    serai-ce l'update qui pose un soucis?
    je suis en train de test pour la nuit je vais edit après


  • Moddeurs confirmés Rédacteurs Administrateurs

    ça devrait fonctionner alors oui, donc le problème vient de la fonction update.



  • la nuit passe et le soleil se lève toujours.
    le problème vient visiblement des conditions. j'ai viré toutes les conditions, ils la fait respawn à chaque tick.


  • Moddeurs confirmés Rédacteurs Administrateurs

    Il y a une variable skylightSubtracted dans la classe World, faudrait voir pour la garder sur un nombre voulu (genre 4 ou 5) depuis un tick handler de type world.

    Après pour les games rules tu as la fonction getGameRules dans la classe world, donc dans le constructeur du provider tu peux tenter de faire :
    this.worldObj.getGameRules().setOrCreateGameRule("keepInventory", "true");



  • pour la nuit, j'ai simplement mis la variable hasnosky sur true 🙂
    pour le gamerule où mettre ça, pck je voudrais que ça s'applique à tout les mondes.
    j'ai test dans le worldprovider de la dimension que j'ai créé, je perd ma stuff.


  • Moddeurs confirmés Rédacteurs Administrateurs

    Essaye depuis WorldEvent.Load dans ce cas.


  • Administrateurs

    @'robin4002':

    Pour la nuit, dans ton world provider essaye de mettre :

    public boolean isDaytime()
    {
    return false;
    }
    

    Pour le gamerule, aucune idée.

    Pour ma dimension ça ne marche pas, le cycle jour/nuit continue de défiler. Il faut procéder autrement, je l'ai fait sur ma dimension.

    https://github.com/elias54/FakeOres/blob/master/common/fr/elias/fakeores/dimension/FD_WorldProvider.java



  • oui le cycle continue de défiler mais en mettant ce bout de code + hasnosky sur true, il continue de défiler mais il fait toujours sombre.


  • Administrateurs

    Pour la lumière regarde mon code ^^



  • J'ai fait quelques test au sujet du bloc quid oit faire spawn la maman creeper.
    j'ai utilisé ce code:

    
    public class TileEntityCreepyBlock extends TileEntity
    {
    public Random rand;
    public int count = 0;
    public Date D = new java.util.Date();;
    public int H = 0;
    public int M = 0;
    public int S = 0;
    
    @Override
    public void updateEntity()
    {
    H = D.getHours();
    M = D.getMinutes();
    S = D.getSeconds();
    System.out.println(H + "h");
    System.out.println(M + "m");
    System.out.println(S + "s");
    
    if (H == 12 && H == 16 && H == 20 && H == 22)
    {
    if (M == 49)
    {
    if (S == 0)
    {
    if (count == 0)
    {
    System.out.println("Mommy Creepy Respawn!");
    final IEntitySelector livingFilter = new MommyFilter();
    AxisAlignedBB Axis = AxisAlignedBB.getAABBPool().getAABB(this.xCoord - 24, this.yCoord - 2, this.zCoord - 25, this.xCoord + 24, this.yCoord + 2, this.zCoord + 25);
    List entityTargetList = this.worldObj.selectEntitiesWithinAABB(Entity.class, Axis, livingFilter);
    for (int i = 0; i < entityTargetList.size(); i++)
    {
    Entity entityTarget = (Entity)entityTargetList.get(i);
    if (entityTarget instanceof EntityMommyCreepy)
    {
    entityTarget.setDead();
    }
    }
    new MommyDungeon(this.worldObj, rand, this.xCoord, this.yCoord, this.zCoord);
    if(!worldObj.isRemote)
    {
    spawnMommyCreepy(this.worldObj, (double)(this.xCoord + 23), (double)(this.yCoord + 1), (double)(this.zCoord + 24));
    }
    count++;
    }
    
    }
    if (S == 1)
    {
    count = 0;
    }
    }
    }
    }
    
    public void spawnMommyCreepy(World world, double posX, double posY, double posZ)
    {
    Entity entity = new EntityMommyCreepy(world);
    entity.setPosition(posX, posY, posZ);
    world.spawnEntityInWorld(entity);
    }
    }
    
    

    et le résultat dans la console est le suivant:

    
    2014-06-12 11:02:05 [Infos] [STDOUT] 11h
    2014-06-12 11:02:05 [Infos] [STDOUT] 1m
    2014-06-12 11:02:05 [Infos] [STDOUT] 54s
    2014-06-12 11:02:05 [Infos] [STDOUT] 11h
    2014-06-12 11:02:05 [Infos] [STDOUT] 1m
    2014-06-12 11:02:05 [Infos] [STDOUT] 54s
    2014-06-12 11:02:05 [Infos] [STDOUT] 11h
    2014-06-12 11:02:05 [Infos] [STDOUT] 1m
    2014-06-12 11:02:05 [Infos] [STDOUT] 53s
    2014-06-12 11:02:05 [Infos] [STDOUT] 11h
    2014-06-12 11:02:05 [Infos] [STDOUT] 1m
    2014-06-12 11:02:05 [Infos] [STDOUT] 53s
    2014-06-12 11:02:05 [Infos] [STDOUT] 11h
    2014-06-12 11:02:05 [Infos] [STDOUT] 1m
    2014-06-12 11:02:05 [Infos] [STDOUT] 54s
    2014-06-12 11:02:05 [Infos] [STDOUT] 11h
    2014-06-12 11:02:05 [Infos] [STDOUT] 1m
    2014-06-12 11:02:05 [Infos] [STDOUT] 53s
    2014-06-12 11:02:05 [Infos] [STDOUT] 11h
    2014-06-12 11:02:05 [Infos] [STDOUT] 1m
    2014-06-12 11:02:05 [Infos] [STDOUT] 54s
    2014-06-12 11:02:05 [Infos] [STDOUT] 11h
    2014-06-12 11:02:05 [Infos] [STDOUT] 1m
    2014-06-12 11:02:05 [Infos] [STDOUT] 53s
    
    

    il semblerait, que la valeur est attribué une fois, puis n'est jamais modifié à partir du lancement du jeu.
    Autre chose, quand j'avais pas mis les ' = 0' à ce code:

    
    public int H = 0;
    public int M = 0;
    public int S = 0;
    
    

    mes print ne se faisait pas du tout, est ce normal?

    quelqu'un a t'il une idée? moi concrétement je sèche.


  • Moddeurs confirmés Rédacteurs Administrateurs

    Normal, puisque tu instancie l'objet Date dans le constructeur, donc il n'est jamais mit à jour.


Log in to reply