Jump to content

Recommended Posts

Posted

I made a basic homing arrow, which I am going to refine further, but as of now I have the problem of the Arrow not rendering properly.

It works fine on the server side, but on the client it always appears as if the arrow was flying normally, until it synchs and teleports around.
 

[https://gemoo.com/tools/upload-video/share/661346070437036032?codeId=MpmzxaW0pBpE1&card=661346066800603136&origin=videolinkgenerator]
the white particles are created by the entity every tick on the server side and represent its actual flying path.

 

My best guess is that this behaviour is caused, because minecraft appears to try to predict the projectiles path on the client side instead of constantly synching (perhaps something to do with it implementing the TracableEntity interface??).
I am thinking I need help with either
1. Getting the client to use my custom Tick function in its path prediction, or
2. (the less elegant solution) getting the game to synch up the direction, position and movement etc. every tick.

 

 

Note that my custom arrow class extends AbstractArrow.

everything important it does:

private static final EntityDataAccessor<Integer> TARGET_ENTITY = SynchedEntityData.defineId(ReachArrow.class, EntityDataSerializers.INT);

    @Override
    public void addAdditionalSaveData(CompoundTag pCompound) {
        super.addAdditionalSaveData(pCompound);
        pCompound.putInt("TargetEntity", this.getTargetEntity());
    }

    @Override
    public void readAdditionalSaveData(CompoundTag pCompound) {
        super.readAdditionalSaveData(pCompound);
        this.setTargetEntity(pCompound.getInt("TargetEntity"));
    }

    @Override
    protected void defineSynchedData() {
        super.defineSynchedData();
        this.entityData.define(TARGET_ENTITY, -1);
    }

    @Override
    public void shootFromRotation(Entity pShooter, float pX, float pY, float pZ, float pVelocity, float pInaccuracy) {
        LivingEntity target = ReachArrow.findNearestTarget(this.level(),(LivingEntity) pShooter,50d);
        if(pShooter instanceof LivingEntity && target !=null){
            //pShooter.sendSystemMessage(Component.literal("setting id "+target.getId()+" as target"));
            setTargetEntity(target.getId());
            //pShooter.sendSystemMessage(Component.literal("target set"));
        }
        super.shootFromRotation(pShooter, pX, pY, pZ, pVelocity, pInaccuracy);
    }


    public static LivingEntity findNearestTarget(Level world, LivingEntity shooter, double range) {
        AABB searchBox = shooter.getBoundingBox().inflate(range);
        List<LivingEntity> potentialTargets = world.getEntitiesOfClass(LivingEntity.class, searchBox, EntitySelector.NO_SPECTATORS);

        LivingEntity nearestTarget = null;
        double closestDistance = Double.MAX_VALUE;

        for (LivingEntity potentialTarget : potentialTargets) {
            if (potentialTarget != shooter && potentialTarget.isAlive()) {
                double distance = shooter.distanceToSqr(potentialTarget);
                if (distance < closestDistance) {
                    closestDistance = distance;
                    nearestTarget = potentialTarget;
                }
            }
        }

        return nearestTarget;
    }

I tried fixing the problem by storing the Target using SynchedEntityData, which not only didn't fix the problem, but also added unwanted, blue particles to the arrow (like on tipped arrow)


Thank you in advance for any help or hints, I am quite new at this so you could probably help me a lot. :)

Posted
  Quote

 

Expand  

yes you are right

"""My best guess is that this behaviour is caused, because minecraft appears to try to predict the projectiles path on the client side instead of constantly synching (perhaps something to do with it implementing the TracableEntity interface??).
I am thinking I need help with either"""

 

i have this problem but left it behind coze many other thing to do 
Mi plan was to sync the local word arrow position just the first tick using the EntityDataAccessor 
and let it go from there 

 


	    private static final EntityDataAccessor<Vector3f> VI =
            SynchedEntityData.defineId(lance_entity.class, EntityDataSerializers.VECTOR3);            
            
            
            
    // #################### #################### ####################
    @Override
    protected void defineSynchedData() {
        this.entityData.define(VI, new Vector3f(0f,0f,0f) );
    }
    
    
    
        @Override
    public void tick() {
    //do some code to update the posicion just one time 
        this.entityData.set(VI, this.position() );
	
if( vi is not [0,0,0] )
    
    this.setPos( this.entityData.get(VI) );
	 
	when you make it work lend me your code 
	 
	

 

 

 

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • EDIT: put this in the wrong forum, Im SO sorry So I recently made my own modpack to mess around and it plays normally, besides the fact that I cannot break any blocks with a pickaxe. I don't know what mod is affecting this seeing as I don't have a vein miner mod (I did and I deleted it to see if it would fix the issue, it didn't) and I don't have any mods that change the start of the game (That I know of) Mods Included are: Another Furniture Appleskin Architectury API Beginner Survival House Blueprint Carry On Cherry Hut Cloth Config API Clumps Collective Comforts Controlling Critters n' Crawlers Curios API Embeddium Essential Geckolib Geode+ Immersive Weatherting Iris/Oculus & Geckolib Compat Jade JEI JER Macaw's bridges Macaw's Doors Macaw;s Fences and walls Macaw's lights and lamps Macaw's paintings Macaw's Paths and pavings Macaw's roofs Macaw's stairs Macaw's trapdoors Macaw's windows Moonlight lib Mouse tweaks Natures Spirit NewWorld Polymorph Pretty Rain Sawmill Searchables Snowy Tents Sodium/Embeddium Dynamic Lights Sodium/Embeddium Extras Sodium/embeddium options API Sophisticated Backpacks Sophisticated Core Supplementaries Swamp Boat TerraBlender Tree Harvester Wetland Whimsy I don't know whats causing this as there are no mentions that I can find of any of these mods causing this issue, so im confused on why its doing this. Please help lol
    • This is what I mean when I say I cant break anything using a pickaxe, Its just the red bar and nothing drops. Any block, even furnaces and modded blocks, that needs a pickaxe. EDIT: I know this is in the wrong Forum, I cant figure out how to delete it
    • EDIT: I know this is in the wrong Forum, I cant figure out how to delete it IM SO SORRY So I recently made my own modpack to mess around and it plays normally, besides the fact that I cannot break any blocks with a pickaxe. I don't know what mod is affecting this seeing as I don't have a vein miner mod (I did and I deleted it to see if it would fix the issue, it didn't) and I don't have any mods that change the start of the game (That I know of) Mods Included are: Another Furniture Appleskin Architectury API Beginner Survival House Blueprint Carry On Cherry Hut Cloth Config API Clumps Collective Comforts Controlling Critters n' Crawlers Curios API Embeddium Essential Geckolib Geode+ Immersive Weatherting Iris/Oculus & Geckolib Compat Jade JEI JER Macaw's bridges Macaw's Doors Macaw;s Fences and walls Macaw's lights and lamps Macaw's paintings Macaw's Paths and pavings Macaw's roofs Macaw's stairs Macaw's trapdoors Macaw's windows Moonlight lib Mouse tweaks Natures Spirit NewWorld Polymorph Pretty Rain Sawmill Searchables Snowy Tents Sodium/Embeddium Dynamic Lights Sodium/Embeddium Extras Sodium/embeddium options API Sophisticated Backpacks Sophisticated Core Supplementaries Swamp Boat TerraBlender Tree Harvester Wetland Whimsy I don't know whats causing this as there are no mentions that I can find of any of these mods causing this issue, so im confused on why its doing this. Please help lol
    • Delete the forge-client.toml file in your config folder and test it again
    • Try an alternative mod like Tree Harvester https://www.curseforge.com/minecraft/mc-mods/tree-harvester
  • Topics

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.