MFF

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

    Entity montable

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    23 Messages 6 Publieurs 5.0k Vues 1 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.
    • SCAREXS Hors-ligne
      SCAREX
      dernière édition par

      Maintenant l’entité apparaît bien côté client et je peux m’asseoir dessus, mais il y a encore un problème de synchronisation : le getMountedYOffset ne s’applique que côté serveur.

      package fr.scarex.hilium.block;
      
      import net.minecraft.block.Block;
      import net.minecraft.block.material.Material;
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.world.World;
      import fr.scarex.hilium.Hilium;
      import fr.scarex.hilium.entity.EntitySit;
      import fr.scarex.hilium.tileentity.TileEntitySit;
      
      /**
      * @author SCAREX
      *
      */
      public class BlockSit extends Block
      {
      protected BlockSit(Material material) {
      super(material);
      }
      
      @Override
      public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
      if (this.canSit(world, x, y, z, player, side, hitX, hitY, hitZ)) {
      EntitySit entity = new EntitySit(world, x + 0.5D, y + 0.5D, z + 0.5D, this.getOffsetY(world, x, y, z));
      world.spawnEntityInWorld(entity);
      entity.interactFirst(player);
      return true;
      }
      return false;
      }
      
      public boolean canSit(World world, int x, int y, int z, EntityPlayer player, int side, float hitX, float hitY, float hitZ) {
      return true;
      }
      
      public double getOffsetY(World world, int x, int y, int z) {
      return 0.5D;
      }
      }
      
      
      package fr.scarex.hilium.entity;
      
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.nbt.NBTTagCompound;
      import net.minecraft.util.MathHelper;
      import net.minecraft.world.World;
      import fr.scarex.hilium.Hilium;
      import fr.scarex.hilium.block.BlockSit;
      
      /**
      * @author SCAREX
      *
      */
      public class EntitySit extends Entity
      {
      protected double offsetY;
      
      public EntitySit(World world) {
      super(world);
      this.noClip = true;
      this.preventEntitySpawning = true;
      this.setSize(0.0F, 0.0F);
      this.offsetY = 0.0F;
      }
      
      public EntitySit(World world, double x, double y, double z, double offsetY) {
      this(world);
      this.setPosition(x, y, z);
      this.offsetY = offsetY;
      }
      
      @Override
      protected void entityInit() {}
      
      @Override
      protected void readEntityFromNBT(NBTTagCompound comp) {}
      
      @Override
      protected void writeEntityToNBT(NBTTagCompound comp) {}
      
      @Override
      public void onEntityUpdate() {
      if (this.riddenByEntity == null || this.riddenByEntity.isDead) this.setDead();
      super.onEntityUpdate();
      }
      
      @Override
      public boolean interactFirst(EntityPlayer p) {
      if (this.riddenByEntity != null) return true;
      if (!this.worldObj.isRemote) p.mountEntity(this);
      return true;
      }
      
      @Override
      public double getMountedYOffset() {
      return this.offsetY;
      }
      }
      
      
      package fr.scarex.hilium.block;
      
      import net.minecraft.block.material.Material;
      import net.minecraft.client.renderer.texture.IIconRegister;
      import net.minecraft.creativetab.CreativeTabs;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.item.ItemStack;
      import net.minecraft.tileentity.TileEntity;
      import net.minecraft.util.MathHelper;
      import net.minecraft.world.World;
      import cpw.mods.fml.common.registry.GameRegistry;
      import fr.scarex.hilium.Hilium;
      import fr.scarex.hilium.client.ClientProxy;
      import fr.scarex.hilium.tileentity.TileEntitySit;
      import fr.scarex.hilium.tileentity.TileEntityUseless;
      
      /**
      * @author SCAREX
      *
      */
      public class BlockToilet extends BlockSit
      {
      public static final String NAME = "toilet";
      
      protected BlockToilet() {
      super(Material.glass);
      this.setHardness(0.5F);
      this.setResistance(5.0F);
      
      this.setStepSound(this.soundTypeGlass);
      this.setCreativeTab(CreativeTabs.tabDecorations);
      
      this.setBlockName(Hilium.MODID + "_" + NAME);
      this.setBlockTextureName(Hilium.MODID + ":" + NAME);
      
      this.register();
      }
      
      private void register() {
      GameRegistry.registerBlock(this, NAME);
      GameRegistry.registerTileEntity(TileEntitySit.class, Hilium.MODID + ":" + NAME);
      }
      
      @Override
      public boolean renderAsNormalBlock() {
      return false;
      }
      
      @Override
      public int getRenderType() {
      return ClientProxy.RENDER_ID;
      }
      
      @Override
      public boolean isOpaqueCube() {
      return false;
      }
      
      @Override
      public boolean hasTileEntity(int metadata) {
      return true;
      }
      
      @Override
      public TileEntity createTileEntity(World world, int metadata) {
      return new TileEntitySit();
      }
      
      @Override
      public void setBlockBoundsForItemRender() {
      this.setBlockBounds(0.05F, 0.0F, 0.05F, 0.95F, 0.88F, 0.95F);
      }
      
      @Override
      public void registerBlockIcons(IIconRegister register) {
      this.blockIcon = register.registerIcon("glass");
      }
      
      @Override
      public boolean canPlaceBlockAt(World world, int x, int y, int z) {
      return super.canPlaceBlockAt(world, x, y, z) && World.doesBlockHaveSolidTopSurface(world, x, y - 1, z);
      }
      
      @Override
      public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack) {
      int direction = MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 2.5D) & 3;
      world.setBlockMetadataWithNotify(x, y, z, direction == 3 ? 0 : direction + 1, 2);
      }
      
      @Override
      public double getOffsetY(World world, int x, int y, int z) {
      return 0.3D;
      }
      }
      
      

      Site web contenant mes scripts : http://SCAREXgaming.github.io

      Pas de demandes de support par MP ni par skype SVP.
      Je n'accepte sur skype que l…

      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

        Ajoute implements IEntityAdditionalSpawnData et avec writeSpawnData et readSpawnData synchro la valeur de offsetY.

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

          Merci, je connaissais pas du tout cette interface, problème résolu. Mis à part le fait qu’il faut un certain temps pour que le joueur soit à la bonne hauteur :

          Ensuite :

          Site web contenant mes scripts : http://SCAREXgaming.github.io

          Pas de demandes de support par MP ni par skype SVP.
          Je n'accepte sur skype que l…

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

            Mdr des toilettes x), je me demande à quoi servira ce mod.

            Si tu as trouvé la solution tu pourrait faire un tutoriel dans ton temps libre s’il te plait ? Je pense sa en satisfera plus d’un ( moi le premier ).

            Aucune signature n'est disponible pour une barre chocolatée.

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

              Si tu veux, si j’arrives à corriger ce bug… #MojangCorrectYourBugs (je suis pas censé publier de screenshots du model que j’utilise)

              Site web contenant mes scripts : http://SCAREXgaming.github.io

              Pas de demandes de support par MP ni par skype SVP.
              Je n'accepte sur skype que l…

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

                Tkt Scarex, c’est correct pour les photos, juste pas donner le model 😛

                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

                  Quand tu dis certains temps, c’est combien environ ?

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

                    30/40 secondes

                    Site web contenant mes scripts : http://SCAREXgaming.github.io

                    Pas de demandes de support par MP ni par skype SVP.
                    Je n'accepte sur skype que l…

                    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

                      À mon avis quand il reçoit le paquet il ne rafraichie pas directement la position du joueur, faudrait voir pour forcer ça.

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

                        Pas grave, je mets en résolu

                        Site web contenant mes scripts : http://SCAREXgaming.github.io

                        Pas de demandes de support par MP ni par skype SVP.
                        Je n'accepte sur skype que l…

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

                        MINECRAFT FORGE FRANCE © 2024

                        Powered by NodeBB