[Abandonné] Régler plusieurs problèmes (génération de minerais + outils + id fixe)



  • Bonjour/Bonsoir tout le monde 😄

    Suite aux dèrniers post (qui ne m'ont pas forcément aider), je retente ma chance.

    Pour commencer, je voudrais générer des minerais dans des mondes multivers, voici mon code :

    package fr.browneez.gen;
    
    import cpw.mods.fml.common.IWorldGenerator;
    import fr.browneez.locky.Main;
    import java.util.Random;
    import net.minecraft.block.Block;
    import net.minecraft.init.Blocks;
    import net.minecraft.world.World;
    import net.minecraft.world.chunk.IChunkProvider;
    import net.minecraft.world.gen.feature.WorldGenMinable;
    
    public class GenStats
    implements IWorldGenerator
    {
    public void generate(Random random, int chunkX, int chunkZ, World world, IChunkProvider chunkGenerator, IChunkProvider chunkProvider)
    {
       addOre(Main.Lockyumore, Blocks.stone, random, world, chunkX, chunkZ, 4, 13, 3, 5, 2);
       addOre(Main.Titaniumore, Blocks.stone, random, world, chunkX, chunkZ, 4, 20, 4, 5, 3);
       addOre(Main.Thoriumore, Blocks.stone, random, world, chunkX, chunkZ, 4, 45, 4, 10, 15);
    }
    
    private void addOre(Block block, Block blockSpawn, Random random, World world, int posX, int posZ, int minY, int maxY, int minVeinSize, int maxVeinSize, int spawnChance)
    {
      for (int i = 0; i < spawnChance; i++)
      {
        int defaultChunkSize = 16;
    
        int xPos = posX + random.nextInt(defaultChunkSize);
        int yPos = minY + random.nextInt(maxY - minY);
        int zPos = posZ + random.nextInt(defaultChunkSize);
    
        new WorldGenMinable(block, minVeinSize + random.nextInt(maxVeinSize - minVeinSize), blockSpawn).generate(world, random, xPos, yPos, zPos);
      }
    }
    }
    

    Deuxièmement, L'enchantement efficacité n'affecte pas ma pioche par exemple ( quand je fais /enchant efficiency 5 sur ma pioche, la vitesse de minage n'augmente pas ou n'est pas flagrante)

    Mon code:

    public static ToolMaterial lockyump = EnumHelper.addToolMaterial("lockyump", 3, 2500, 16F, 5F, 10);
    

    Enfin, quand j'ajoute/supprime un mod sur le serveur, mes items changent d'id ( par exemple si mon item à l'id 500 et que j'enlève un mod, il va changer en 450)

    Mon Code :

    Obsidianstick = new Obsidianstick(6300).setTextureName(Reg.MODID + ":ObsidianStick");
    

    Merci pour votre aide, BrowNeez.


  • Administrateurs

    1. ça devrait fonctionner
    2. Tu as une valeur déjà très élevé, c'est pour ça que n'observe pas de différence.
    3. L'id n'est pas sensé changer sauf si tu changes de monde.


  • Pour la génération, je ne retrouve aucuns minerais 😕 (ni avec xray ni avec worldedit)

    Pour les outils, il n'y a pas un moyen d'augmenter leurs vitesse de minage avec les enchantement ( je voudrais des pioches asse abusé)

    Et pour les id, mon item est passé de 450 à 448 par exemple (j'ai enlever 1 mod sur le serveur)


  • Administrateurs

    1. pas normal.
    2. Le seul moyen que je vois pour ça c'est passer par l'event PlayerEvent.BreakSpeed. Si l'item que le joueur a en main est ta pioche et qu'elle est enchanté tu mets la variable newSpeed sur une grosse valeur.
    3. pas normal non plus


  • Pour les outils j'ai pas trop compris 😕

    en gros faut faire ça :

    public void OnBreakEvent(PlayerBreakEvent e)
    {
    if p.getItemHolding == main.montool
    {
    la on fait un truc avec le speed break
    }
    }
    
    ps: j'ai rien tester sur eclipse je fais ça à l'improvisation
    

    et pour les id c'est pas très grave, merci quand même


  • Administrateurs

    @SubscribeEvent
    public void onBreakSpeed(PlayerEvent.BreakSpeed event)
    {
    if(event.player.inventory.getCurrentItem() != null && event.player.inventory.getCurrentItem().getItem() == tonItem && EnchantmentHelper.getEnchantmentLevel(Enchantment.efficiency, event.player.inventory.getCurrentItem() == 5) // pour un enchantement de 5
    {
    event.newSpeed = 100000F;
    }
    }
    


  • Le PlayerEvent, j'importe lequel :

    Parce que si j'importe le premier, j'ai une erreur qui dit "change to entityplayer"

    le deuxième me dit "fix project setup"


  • Administrateurs

    Le premier.
    L'erreur change to entityPlayer se trouve où ?



  • if(event.player.inventory.getCurrentItem() != null && event.player.inventory.getCurrentItem().getItem() == this && EnchantmentHelper.getEnchantmentLevel(Enchantment.efficiency, event.player.inventory.getCurrentItem() == 5) // pour un enchantement de 5

    Les erreurs sont en rouge


  • Administrateurs

    Heu oui remplace par entityplayer



  • J'ai encore des erreurs :

    if(event.entityPlayer.inventory.getCurrentItem() != null && event.entityPlayer.inventory.getCurrentItem().getItem() == this && EnchantmentHelper.getEnchantmentLevel(Enchantment.efficiency, %(#ff3333)[event.entityPlayer.inventory.getCurrentItem() == 5))

    J'ai une erreur : Incompatible operand types itemstack and int]


  • Rédacteurs

    
    if(event.entityPlayer.inventory.getCurrentItem() != null && event.entityPlayer.inventory.getCurrentItem().getItem() == this && EnchantmentHelper.getEnchantmentLevel(Enchantment.efficiency, event.entityPlayer.inventory.getCurrentItem()) == 5)
    
    


  • @'bodri':

    
    if(event.entityPlayer.inventory.getCurrentItem() != null && event.entityPlayer.inventory.getCurrentItem().getItem() == this && EnchantmentHelper.getEnchantmentLevel(Enchantment.efficiency, event.entityPlayer.inventory.getCurrentItem()) == 5)
    
    

    Erreur à : .getEnchantmentLevel


  • Administrateurs

    Oui j'ai oublié une parenthèse.
    Et j'ai aussi oublié de mettre .effectId après Enchantment.efficiency



  • Je vais peut être passer pour un casse cou mais quand j'utilise le code, j'ai pas le rendu voulus, j'aurais voulut une vitesse proche de la cadence d'une mitraillette ( une comparaison très bizarre mais ça résume bien ce que je veut) et quand j'augmente la event.newspeed ça ne bouge pas.

    Pour en revenir avec un problème lié aux mods ( je sais c'est cauldron mais je vais pas refaire un post juste pour ça), quand j'utilise cauldron + bungeecord, ça me met une erreur qui me dit que l'échange d'informations entre le lobby et le cauldron sont pas compatible (je résume car je n'ai pas accès à bungeecord pour le moment)

    Au passage, un grand merci à ceux qui m'ont aider 😄


  • Correcteurs

    Si tu parles bien de la vitesse d'utilisation de ton outil, c'est réglable sur le ToolMaterial.



  • @'Toutoune1008':

    Si tu parles bien de la vitesse d'utilisation de ton outil, c'est réglable sur le ToolMaterial.

    Oui mais je veux changer la vitesse de minage quand mes outils sont enchanté 😕


  • Administrateurs

    En gros tu veux limite qu'on puisse casser plusieurs blocs en un coup ?
    Ça doit être possible mais je ne sais pas du tout où gérer ça.



  • En gros (très gros) oui je voudrais une cadence de minage très élevé avec efficacité 5

    Mais je vais abandonner puisque je trouve rien 😕

    Un énorme merci à vous 😄