• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Non résolu Enregistrer des items à la volée [MC 1.12]

    Sans suite
    1.12.2
    2
    5
    372
    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.
    • D
      darkestblack47 dernière édition par

      Bonjour,
      Je souhaite créer de nouveaux record. Jusque là, tout va bien, je peux en créer autant que je veux et modifier de manière simple la musique de chacun. Mon problème, au lancement d’un monde, je ne sais pas combien d’item doivent être créer.
      Existe-t-il un moyen de les créer à la volée ?

      Merci.

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

        Salut,
        Le moteur n’est pas prévu pour ajouter des items à la volé.

        Par contre ce que tu peux faire sans trop de difficulté, c’est utilisé le tab nbt de l’item, dans celui-ci tu pourra mettre des valeurs à la volés.
        Ensuite tu pourra les utiliser, par exemple pour le nom du cd ou pour avoir le nom de la musique à jouer.

        1 réponse Dernière réponse Répondre Citer 0
        • D
          darkestblack47 dernière édition par

          Pourrais-tu préciser un peu ? Ou aurais-tu un exemple ?

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

            Je viens de regarder la classe ItemRecord pour te proposer un exemple, mais visiblement ce que je propose ne va pas non plus.
            Pour le nom du cd pas de soucis vu les arguments de la fonction addInformation. Par contre pour jouer du son cela passer par la fonction getSound qui n’a aucun argument, donc impossible de jouer un son différent en fonction du nbt ou du metadata de l’item 😕

            1 réponse Dernière réponse Répondre Citer 0
            • D
              darkestblack47 dernière édition par

              J’ai fait un peu de filoutage pour ma class recordItem:

              public class ItemBeatRecord extends ItemRecord {
              	
                  private static final Map<SoundEvent, ItemBeatRecord> RECORDS = Maps.<SoundEvent, ItemBeatRecord>newHashMap();
                  private static SoundEvent sound ;
                  public static final String NAME = "item_beat_record";
                  public static final SoundEvent soundIn = new SoundEvent(new ResourceLocation(BeatboxMod.MODID, "default"));
                  private final String displayName;
              	
              	public ItemBeatRecord() {
              		super(NAME, soundIn);
              		
              		this.displayName = "item.record." + NAME+ ".desc";
              		BeatboxItems.setItemName(this, NAME);
              		setCreativeTab(CreativeTabs.MISC);
              		setMaxStackSize(1);
              		this.sound = soundIn;
              		RECORDS.put(this.sound, this);
              	}
              	
              	public ItemBeatRecord(String Name, SoundEvent soundOut) {
              		super(Name, soundOut);
              		
              		this.displayName = Name;
              		BeatboxItems.setItemName(this, Name);
              		setCreativeTab(CreativeTabs.MISC);
              		setMaxStackSize(1);
              		this.sound = soundOut;
              		RECORDS.put(this.sound, this);
              		System.out.println("Item registred");
              		BeatboxItems.registerModel(this, 0);
              	}
              	
              	public static void setSound(SoundEvent music) {
              		sound = music;
              	}
              	
              	public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
                  {
                      IBlockState iblockstate = worldIn.getBlockState(pos);
              
                      if (iblockstate.getBlock() == Blocks.JUKEBOX && !((Boolean)iblockstate.getValue(BlockJukebox.HAS_RECORD)).booleanValue())
                      {
                          if (!worldIn.isRemote)
                          {
                              ItemStack itemstack = player.getHeldItem(hand);
                              ((BlockJukebox)Blocks.JUKEBOX).insertRecord(worldIn, pos, iblockstate, itemstack);
                              worldIn.playEvent((EntityPlayer)null, 1010, pos, Item.getIdFromItem(this));
                              itemstack.shrink(1);
                              player.addStat(StatList.RECORD_PLAYED);
                          }
              
                          return EnumActionResult.SUCCESS;
                      }
                      else
                      {
                          return EnumActionResult.PASS;
                      }
                  }
              	
              	/**
                   * allows items to add custom lines of information to the mouseover description
                   */
                  @SideOnly(Side.CLIENT)
                  public void addInformation(ItemStack stack, @Nullable World worldIn, List<String> tooltip, ITooltipFlag flagIn)
                  {
                      tooltip.add(this.getRecordNameLocal());
                  }
              
                  @SideOnly(Side.CLIENT)
                  public String getRecordNameLocal()
                  {
                      return I18n.translateToLocal(this.displayName);
                  }
              
                  /**
                   * Return an item rarity from EnumRarity
                   */
                  public EnumRarity getRarity(ItemStack stack)
                  {
                      return EnumRarity.RARE;
                  }
              
                  @Nullable
                  @SideOnly(Side.CLIENT)
                  public static ItemBeatRecord getBySound(SoundEvent soundIn)
                  {
                      return RECORDS.get(soundIn);
                  }
              
                  @SideOnly(Side.CLIENT)
                  public SoundEvent getSound()
                  {
                      return this.sound;
                  }
              
              }
              

              Pour le moment sa fonctionne si sa peut t’aider à visualiser en fonction de ton idée.

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

              MINECRAFT FORGE FRANCE © 2018

              Powered by NodeBB