MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Creation d'un arme a distance

    Planifier Épinglé Verrouillé Déplacé Non résolu Sans suite
    1.14.4
    4 Messages 2 Publieurs 314 Vues 2 Watching
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • AlasDiabloA Hors-ligne
      AlasDiablo
      dernière édition par

      Bonjour, j’ai actuellement un problème, je ne trouve pas comment faire une arme custom (type arc) mais qui utilisé ces propre munition et ces propre entité(balle), ça fait actuellement plus 1h30 que je testé des truc avec le code de minecraft et de la forge, j’ai regarde en ligne et il y a pas encore de mod de ce type pour s’aidé avec leurs code source.
      Si quelle qu’un a des idée je suis preneurs.

      Au niveau du code j’ai un item qui extend ShootableItem (l’arme), un autre item qui extend Item (la munition) et j’ai aussi une etité qui extend de DamagingProjectileEntity (la balle), et à partir de la je sais plus quoi faire…

      Merci de votre aide en avance. 🙂

      mes mod actulle:

      • JANOEO
      1 réponse Dernière réponse Répondre Citer 0
      • robin4002R Hors-ligne
        robin4002 Moddeurs confirmés Rédacteurs Administrateurs
        dernière édition par

        Bonsoir,

        Concrètement quels sont les problèmes rencontrés ? L’armure ne tire pas ? Le projectile est invisible ? Le jeu crash ?

        1 réponse Dernière réponse Répondre Citer 0
        • AlasDiabloA Hors-ligne
          AlasDiablo
          dernière édition par

          Euh, déjà le jeux ne se lance pas enfin il dit (Mon mod) encountered an error during the load_registries event phase et je me demande aussi comment on fait pour relié le projectile a l’arme et comment la faire tiré, j’ai lus le code de l’arc et de la crossbow mais c’est asse complexe a comprends et il y a en plus de ça encore du code offusqué.

          j’ai regsiter les entité comme ça et je suis pas sur que se soit le bon truc car j’ai pas encors fait des entité (je me suis inpiré du code mc)… 😐

          @Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
          public static class RegistryEvents {
              @SubscribeEvent
              public static void onEntityRegistry(final RegistryEvent.Register<EntityType<?>> event) {
                  event.getRegistry().register(EntityType.Builder.<SmallFireballEntity>create(SmallFireballEntity::new, EntityClassification.MISC).size(0.3125F, 0.3125F).build("test_bullet"));
              }
          }
          

          mes mod actulle:

          • JANOEO
          1 réponse Dernière réponse Répondre Citer 0
          • robin4002R Hors-ligne
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs
            dernière édition par

            Il faut le rapport de crash complet.

            Pour les entités, personnellement j’ai ça :

                public static final EntityType<EntityBomberArrow> BOMBER_ARROW = EntityType.Builder.<EntityBomberArrow>create(EntityBomberArrow::new, EntityClassification.MISC).size(0.5F, 0.5F)
                        .setShouldReceiveVelocityUpdates(true).setUpdateInterval(2).setTrackingRange(64).setCustomClientFactory((spawnEntity, world) -> new 
            
                @SubscribeEvent
                public static void registerEntity(RegistryEvent.Register<EntityType<?>> event) {
                    event.getRegistry().register(BOMBER_ARROW.setRegistryName("bomber_arrow"));
                }
            

            Tu peux garder comme tu as actuellement et utiliser un ObjectHolder (comme montré dans le tutoriel bloc / item 1.13) ça fonctionne aussi. Par contre faut que tu ajoutes les fonctions pour le tracking et le spawn côté client.

            Pour mon item d’arc, j’ai une classe qui hérite de BowItem avec cette fonction :

                @Override
                public void onPlayerStoppedUsing(ItemStack stack, World world, LivingEntity entityLiving, int timeLeft) {
                    if(entityLiving instanceof PlayerEntity) {
                        PlayerEntity player = (PlayerEntity)entityLiving;
                        boolean flag = player.abilities.isCreativeMode || EnchantmentHelper.getEnchantmentLevel(Enchantments.INFINITY, stack) > 0;
            
                        int j = this.getUseDuration(stack) - timeLeft;
                        j = ForgeEventFactory.onArrowLoose(stack, world, player, j, true);
            
                        if(flag || player.inventory.hasItemStack(new ItemStack(SGItem.BOMBER_ARROW))) {
                            float f = j / 20.0F;
                            f = (f * f + f * 2.0F) / 3.0F;
            
                            if(f < 1.0F) {
                                return;
                            }
            
                            if(f > 1.0F) {
                                f = 1.0F;
                            }
            
                            EntityBomberArrow entityBomberArrow = new EntityBomberArrow(world, player);
                            entityBomberArrow.shoot(player, player.rotationPitch, player.rotationYaw, 0.0F, f * 1.0F, 2.0F);
                            stack.damageItem(1, player, p -> {
                                p.sendBreakAnimation(p.getActiveHand());
                            });
                            world.playSound(null, player.posX, player.posY, player.posZ, SoundEvents.ENTITY_ARROW_SHOOT, SoundCategory.NEUTRAL, 1.0F, 1.0F / (random.nextFloat() * 0.4F + 1.2F) + f + 0.5F);
            
                            int flame = EnchantmentHelper.getEnchantmentLevel(Enchantments.FLAME, stack);
                            if(flame > 0) {
                                entityBomberArrow.setFlame(true);
                            }
                            if(!flag) {
                                CommonUtil.consumeItem(player, new ItemStack(SGItem.BOMBER_ARROW));
                            }
            
                            if(!world.isRemote()) {
                                world.addEntity(entityBomberArrow);
                            }
                        }
                    }
                }
            

            Le but ici est d’ajouter dans le monde l’entité avec joueur qui tire et la puissance en argument du constructeur, ensuite la classe EntityBomberArrow qui hérite de AbstractArrowEntity se charge de tout.

            1 réponse Dernière réponse Répondre Citer 0
            • 1 / 1
            • Premier message
              Dernier message
            Design by Woryk
            ContactMentions Légales

            MINECRAFT FORGE FRANCE © 2024

            Powered by NodeBB