Soucis d'exactitude avec Calendar


  • Correcteurs

    Plop les gens,

    Aujourd'hui j'écris ici concernant un event TickWorld qui serait appelée à une heure précise de la journée, ici afin de faire spawn un bloc à une coordonnée random parmi plusieurs possibles.

    Mon soucis se trouve au niveau des millisecondes qui sont… compliquées à gérer car le println ne rend jamais les mêmes valeurs à un nombre de ticks identiques.
    Ce qui fait que je ne peux mettre sa valeur en condition, ce qui fait que la méthode est appelée 20 fois, donc mon random est saccagé.

    Voici le code, peut-être que ma mise en condition n'est pas bonne, mais ça fonctionne jusqu'à certaines limites dont nous parlons justement:

    @SubscribeEvent
        public void tileFourgonSpawnEvent(TickEvent.WorldTickEvent event)
        {
            Calendar calendar = Calendar.getInstance();
            Random rand = new Random();
    
            System.out.println(calendar.getTime());
            System.out.println(calendar.get(Calendar.MILLISECOND));
    
            if(calendar.get(Calendar.HOUR_OF_DAY) == 12 && calendar.get(Calendar.MINUTE) == 4 && calendar.get(Calendar.SECOND) == 50)
            {
                int randInt = rand.nextInt(3);
                System.out.println(randInt);
                if(randInt == 0)
                {
                    Block block = event.world.getBlock(-430, 5, 360);
                    if(block == Blocks.air)
                    {
                        event.world.setBlock(-430, 8, 360, Blocks.obsidian);
                    }
                }
                if(randInt == 1)
                {
                    Block block = event.world.getBlock(-430, 5, 360);
                    if(block == Blocks.air)
                    {
                        event.world.setBlock(-430, 9, 360, Blocks.obsidian);
                    }
                }
                if(randInt == 2)
                {
                    Block block = event.world.getBlock(-430, 5, 360);
                    if(block == Blocks.air)
                    {
                        event.world.setBlock(-430, 10, 360, Blocks.obsidian);
                    }
                }
            }
        }
    

  • Rédacteurs

    Tu pourrais faire ça :

    
    private boolean done = false;
    
    @SubscribeEvent
    public void tileFourgonSpawnEvent(TickEvent.WorldTickEvent event)
    {
    Calendar calendar = Calendar.getInstance();
    Random rand = new Random();
    
    System.out.println(calendar.getTime());
    System.out.println(calendar.get(Calendar.MILLISECOND));
    
    if(calendar.get(Calendar.HOUR_OF_DAY) == 12 && !done)
    {
    done = true;
    int randInt = rand.nextInt(3);
    System.out.println(randInt);
    if(randInt == 0)
    {
    Block block = event.world.getBlock(-430, 5, 360);
    if(block == Blocks.air)
    {
    event.world.setBlock(-430, 8, 360, Blocks.obsidian);
    }
    }
    if(randInt == 1)
    {
    Block block = event.world.getBlock(-430, 5, 360);
    if(block == Blocks.air)
    {
    event.world.setBlock(-430, 9, 360, Blocks.obsidian);
    }
    }
    if(randInt == 2)
    {
    Block block = event.world.getBlock(-430, 5, 360);
    if(block == Blocks.air)
    {
    event.world.setBlock(-430, 10, 360, Blocks.obsidian);
    }
    }
    } else {
    done = false;
    }
    }
    
    

    Cependant, si ton serveur redémarre entre 12h et 13h, tu aura deux fois la génération (après tu peux toujours enregistrer cette valeur quelque part).


  • Correcteurs

    Mmmh nope le code passe false/true/false/true/… pendant 20ticks, c'pas trop ça 😃

    Edit:Et d'après ton code ça devrait faire ça pendant une heure ^^' car le calendar renvoie 12 pendant une heure. Et non pas une seule fois


  • Rédacteurs

    Mince, j'ai loupé, désolé :

    
    private boolean done = false;
    
    @SubscribeEvent
    public void tileFourgonSpawnEvent(TickEvent.WorldTickEvent event)
    {
    Calendar calendar = Calendar.getInstance();
    Random rand = new Random();
    
    System.out.println(calendar.getTime());
    System.out.println(calendar.get(Calendar.MILLISECOND));
    
    if(calendar.get(Calendar.HOUR_OF_DAY) == 12)
    {
    if(!done) {
    done = true;
    int randInt = rand.nextInt(3);
    System.out.println(randInt);
    if(randInt == 0)
    {
    Block block = event.world.getBlock(-430, 5, 360);
    if(block == Blocks.air)
    {
    event.world.setBlock(-430, 8, 360, Blocks.obsidian);
    }
    }
    if(randInt == 1)
    {
    Block block = event.world.getBlock(-430, 5, 360);
    if(block == Blocks.air)
    {
    event.world.setBlock(-430, 9, 360, Blocks.obsidian);
    }
    }
    if(randInt == 2)
    {
    Block block = event.world.getBlock(-430, 5, 360);
    if(block == Blocks.air)
    {
    event.world.setBlock(-430, 10, 360, Blocks.obsidian);
    }
    }
    }
    } else {
    done = false;
    }
    }
    
    

    Bon j'ai pas formaté le code mais bon


  • Correcteurs

    D'accord mais ça n'enlève en rien le fait que la fonction est appelée au moins 20fois si je fais à la seconde près (si je mets en condition les secondes).

    Ce code:

    public class ServerEvents
    {
        private boolean done = false;
    
        @SubscribeEvent
        public void tileFourgonSpawnEvent(TickEvent.WorldTickEvent event)
        {
            Calendar calendar = Calendar.getInstance();
            Random rand = new Random();
    
            System.out.println(calendar.getTime());
            System.out.println(done);
    
            if(calendar.get(Calendar.HOUR_OF_DAY) == 14 && calendar.get(Calendar.MINUTE) == 17 && calendar.get(Calendar.SECOND) == 10)
            {
                if(!done)
                {
                    done = true;
                    int randInt = rand.nextInt(3);
                    if(randInt == 0)
                    {
                        Block block = event.world.getBlock(-430, 5, 360);
                        if(block == Blocks.air)
                        {
                            event.world.setBlock(-430, 8, 360, Blocks.obsidian);
                        }
                    }
                    if(randInt == 1)
                    {
                        Block block = event.world.getBlock(-430, 5, 360);
                        if(block == Blocks.air)
                        {
                            event.world.setBlock(-430, 9, 360, Blocks.obsidian);
                        }
                    }
                    if(randInt == 2)
                    {
                        Block block = event.world.getBlock(-430, 5, 360);
                        if(block == Blocks.air)
                        {
                            event.world.setBlock(-430, 10, 360, Blocks.obsidian);
                        }
                    }
                }
            }
            else
            {
                done = false;
            }
        }
    }
    

    Donne ça:

    [14:17:09] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:09 CET 2016
    false
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    false
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:10] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:10 CET 2016
    true
    [14:17:11] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:11 CET 2016
    true
    [14:17:11] [Server thread/INFO] [STDOUT]: [fr.powergame.modpg2.common.ServerEvents:tileFourgonSpawnEvent:21]: Tue Nov 15 14:17:11 CET 2016
    false
    

    Avec un tel nombre d'appels…


  • Rédacteurs

    Bien sûr que la fonction est appelée 20 fois par seconde …


  • Correcteurs

    Ce qui m'empêche de faire un random, ça me cantonne à une horaire/une position


  • Rédacteurs

    @'Toutoune1008':

    Plop les gens,

    Aujourd'hui j'écris ici concernant un event TickWorld qui serait appelée à une heure précise de la journée, ici afin de faire spawn un bloc à une coordonnée random parmi plusieurs possibles.

    Ton heure est prédéfinie, je me trompe ?


  • Correcteurs

    Oui genre à 19h30 pile un bloc apparait à l'une des X coordonnées possibles, disons X = 8 pour l'exemple.

    Mais si la méthode est appelée 20fois, le random est lancé 20fois et donc le bloc a trèèèèèès peu de chance de ne spawn qu'à un seul des points prévus ^^'


  • Rédacteurs

    
    /** Sert à savoir si l'action a déjà été faite */
    private boolean done = false;
    
    @SubscribeEvent
    public void tileFourgonSpawnEvent(TickEvent.WorldTickEvent event)
    {
    Calendar calendar = Calendar.getInstance();
    
    if(calendar.get(Calendar.HOUR_OF_DAY) == 14 && calendar.get(Calendar.MINUTE) == 17 && calendar.get(Calendar.SECOND) == 10)
    {
    if(!done) //Si et seulement si l'action n'a pas encore été faite
    {
    done = true; //On va faire l'action donc on dit qu'elle a étét faite
    Random rand = new Random(); //On crée le nombre aléatoire
    
    //C'est ton code je ne vais pas te l'expliquer
    int randInt = rand.nextInt(3);
    if(randInt == 0)
    {
    Block block = event.world.getBlock(-430, 5, 360);
    if(block == Blocks.air)
    {
    event.world.setBlock(-430, 8, 360, Blocks.obsidian);
    }
    }
    if(randInt == 1)
    {
    Block block = event.world.getBlock(-430, 5, 360);
    if(block == Blocks.air)
    {
    event.world.setBlock(-430, 9, 360, Blocks.obsidian);
    }
    }
    if(randInt == 2)
    {
    Block block = event.world.getBlock(-430, 5, 360);
    if(block == Blocks.air)
    {
    event.world.setBlock(-430, 10, 360, Blocks.obsidian);
    }
    }
    
    //Quand on est ici on a done qui vaut true donc sur les 19 prochain ticks, l'action ne va pas se réaliser
    }
    }
    else
    {
    //Et là c'est quand on a dépassé la date, la prochaine fois que la date sera bonne on fera l'action
    done = false;
    }
    }
    
    

  • Correcteurs

    Merci de m'avoir aidé pour ce léger soucis de compréhension.