Jump to content

[1.12.2] Checking if a player is looking at another player


PapaVinny

Recommended Posts

Hello, I implemented a way to check if the player is looking at another player. I have to lead my cross-hair because it is only server-side (checks where player is on the server instead of the client's view). Any way I can check what the player is looking at client-side without being easily hackable? Here is what I did: 

https://github.com/PapaVinny/HelpWithCombat/blob/master/java/mod/papavinny/swordfight/SwordfightEvents.java

The aiming part comes in on line 58.

Edited by PapaVinny
Link to comment
Share on other sites

9 hours ago, PapaVinny said:

Any way I can check what the player is looking at client-side without being easily hackable?

What do you mean here?

 

And let's approach this problem in a different way what are you trying to do exactly?

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

Thanks for responding. After the event goes off, I am trying to have that if-statement true if the player is looking at another player with their crosshair. I made this part of the mod solely server driven, the if-statement will only go true if you lead you crosshair (if the player you're looking at is moving). I have to aim where the server has its data of the player (I think). I am trying to have this if-statement true based on where the client sees the player. I think the problem falls along the same lines of how hit registration works client-side on most shooter games as far as I know.

Edited by PapaVinny
Link to comment
Share on other sites

18 minutes ago, PapaVinny said:

After the event goes off, I am trying to have that if-statement true if the player is looking at another player with their crosshair. 

No I am asking why are you doing this it might not be that complicated. Plus if the player hits another player with damage that isn't potions or an entity like an arrow. They had to have been looking at the player in question unless they are using hacks.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

OH! If the player you attacked has their crosshair on you, they block your attack at the cost of stamina. For them, an arm swing animation goes off and it makes the appropriate sound depending on what's in their hands.

Edited by PapaVinny
Link to comment
Share on other sites

You can simulate what ray tracing does on the server side.

You can also obtain the position of the two players and the pitch and yaw of the defending player, then do some trigonometry to figure out if the defending player is looking in the direction of the attacker.

Some tips:

Spoiler

Modder Support:

Spoiler

1. Do not follow tutorials on YouTube, especially TechnoVision (previously called Loremaster) and HarryTalks, due to their promotion of bad practice and usage of outdated code.

2. Always post your code.

3. Never copy and paste code. You won't learn anything from doing that.

4. 

Quote

Programming via Eclipse's hotfixes will get you nowhere

5. Learn to use your IDE, especially the debugger.

6.

Quote

The "picture that's worth 1000 words" only works if there's an obvious problem or a freehand red circle around it.

Support & Bug Reports:

Spoiler

1. Read the EAQ before asking for help. Remember to provide the appropriate log(s).

2. Versions below 1.11 are no longer supported due to their age. Update to a modern version of Minecraft to receive support.

 

 

Link to comment
Share on other sites

15 minutes ago, DavidM said:

You can simulate what ray tracing does on the server side.

You can also obtain the position of the two players and the pitch and yaw of the defending player, then do some trigonometry to figure out if the defending player is looking in the direction of the attacker.

The problem is that the data isn't always the same between clients and the server. Ping an all.

2 hours ago, PapaVinny said:

OH! If the player you attacked has their crosshair on you, they block your attack at the cost of stamina. For them, an arm swing animation goes off and it makes the appropriate sound depending on what's in their hands

You will either have to keep with what you have and have that little leading thing or trust the client with no way to know if they are being cheaty unless you add some sort of check like if the rotation on the server is definitely not what the client says it was.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

9 hours ago, DavidM said:

You can simulate what ray tracing does on the server side.

 You can also obtain the position of the two players and the pitch and yaw of the defending player, then do some trigonometry to figure out if the defending player is looking in the direction of the attacker.

I thought what I wrote does simulate ray tracing?

Link to comment
Share on other sites

16 minutes ago, PapaVinny said:

This may be a weird question but is there a way to check where the player was, say, (thier ping in ms) ago?

You could track it by storing values yes.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

14 minutes ago, PapaVinny said:

Maybe in there? 

Yeah and every player tick using the PlayerTickEvent you'll have to update the values.

VANILLA MINECRAFT CLASSES ARE THE BEST RESOURCES WHEN MODDING

I will be posting 1.15.2 modding tutorials on this channel. If you want to be notified of it do the normal YouTube stuff like subscribing, ect.

Forge and vanilla BlockState generator.

Link to comment
Share on other sites

18 minutes ago, Animefan8888 said:

Yeah and every player tick using the PlayerTickEvent you'll have to update the values.

Thanks, I'll keep that in mind. But I think I want to do the client one. Seems the most accurate. Know where I can start because I'm not sure?

Link to comment
Share on other sites

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

    • Hello everyone, I'm making this post to seek help for my modded block, It's a special block called FrozenBlock supposed to take the place of an old block, then after a set amount of ticks, it's supposed to revert its Block State, Entity, data... to the old block like this :  The problem I have is that the system breaks when handling multi blocks (I tried some fix but none of them worked) :  The bug I have identified is that the function "setOldBlockFields" in the item's "setFrozenBlock" function gets called once for the 1st block of multiblock getting frozen (as it should), but gets called a second time BEFORE creating the first FrozenBlock with the data of the 1st block, hence giving the same data to the two FrozenBlock :   Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=head] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@73681674 BlockEntityData : id:"minecraft:bed",x:3,y:-60,z:-6} Old Block Fields set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=3, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} Frozen Block Entity set BlockState : Block{minecraft:black_bed}[facing=east,occupied=false,part=foot] BlockPos{x=2, y=-60, z=-6} BlockEntity : net.minecraft.world.level.block.entity.BedBlockEntity@6d1aa3da BlockEntityData : {id:"minecraft:bed",x:2,y:-60,z:-6} here is the code inside my custom "freeze" item :    @Override     public @NotNull InteractionResult useOn(@NotNull UseOnContext pContext) {         if (!pContext.getLevel().isClientSide() && pContext.getHand() == InteractionHand.MAIN_HAND) {             BlockPos blockPos = pContext.getClickedPos();             BlockPos secondBlockPos = getMultiblockPos(blockPos, pContext.getLevel().getBlockState(blockPos));             if (secondBlockPos != null) {                 createFrozenBlock(pContext, secondBlockPos);             }             createFrozenBlock(pContext, blockPos);             return InteractionResult.SUCCESS;         }         return super.useOn(pContext);     }     public static void createFrozenBlock(UseOnContext pContext, BlockPos blockPos) {         BlockState oldState = pContext.getLevel().getBlockState(blockPos);         BlockEntity oldBlockEntity = oldState.hasBlockEntity() ? pContext.getLevel().getBlockEntity(blockPos) : null;         CompoundTag oldBlockEntityData = oldState.hasBlockEntity() ? oldBlockEntity.serializeNBT() : null;         if (oldBlockEntity != null) {             pContext.getLevel().removeBlockEntity(blockPos);         }         BlockState FrozenBlock = setFrozenBlock(oldState, oldBlockEntity, oldBlockEntityData);         pContext.getLevel().setBlockAndUpdate(blockPos, FrozenBlock);     }     public static BlockState setFrozenBlock(BlockState blockState, @Nullable BlockEntity blockEntity, @Nullable CompoundTag blockEntityData) {         BlockState FrozenBlock = BlockRegister.FROZEN_BLOCK.get().defaultBlockState();         ((FrozenBlock) FrozenBlock.getBlock()).setOldBlockFields(blockState, blockEntity, blockEntityData);         return FrozenBlock;     }  
    • It is an issue with quark - update it to this build: https://www.curseforge.com/minecraft/mc-mods/quark/files/3642325
    • Remove Instant Massive Structures Mod from your server     Add new crash-reports with sites like https://paste.ee/  
    • Update your drivers: https://www.amd.com/en/support/graphics/amd-radeon-r9-series/amd-radeon-r9-200-series/amd-radeon-r9-280x
  • Topics

×
×
  • Create New...

Important Information

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