Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

How to get the coordinates of a block the player is looking at


Bobblacksmith
 Share

Recommended Posts

I am trying to make a sword that can teleport you to the block you are looking at, except I keep teleporting into the void. I think what I am doing wrong is teleporting past the blocks, but I am not sure how to get the coords of a block the player is looking at. Here is what I have currently...

 

 	@Override
public ItemStack onItemRightClick(ItemStack item, World world, EntityPlayer user) {
	if(world.isDaytime() || !world.isDaytime() ){
		double x = user.getLookVec().xCoord;
		double y = user.getLookVec().yCoord;
		double z = user.getLookVec().zCoord;
		user.setPosition(x, y, z);
	}
	else if(world.isRaining()){
		user.addChatMessage("You may not use this Item in the rain!");
	}
	return item; 

I am Bobblacksmith and I approve this message!

Link to comment
Share on other sites

Not entirely sure whats wrong, but why are you checking if it is day or night and the else is if it is raining? Would it not just teleport the player anyway because you checked if it is day or night, which it will always be.

Don't be afraid to ask question when modding, there are no stupid question! Unless you don't know java then all your questions are stupid!

Link to comment
Share on other sites

1. I wanted it to not be allowed while it is raining

 

2. Currently this code teleports me into the void, I think I am not actually teleporting to a block with the code, I want to know how to teleport to a block. I need to know how to get a block's coordinates.

I am Bobblacksmith and I approve this message!

Link to comment
Share on other sites

Not sure why the getLookVec stuff isn't working right, but you've still structured your conditional wrong. Saying world.isDaytime() || !world.isDaytime() will always evaluate to true, so you may as well be writing:

 

if (true) {
    // teleport code
} else if (world.isRaining()) {
    // chat code
}

 

You want this instead:

 

if (!world.isRaining()) {
    // teleport code
} else {
    // chat code
}

I like to make mods, just like you. Here's one worth checking out

Link to comment
Share on other sites

50 is equal to 50D it is just 50 doubles.

I don't know, why don't you try Twinklez's method, by sending an object.

 

Have you even checked that you are looking at a block?

You could however send a MovingObjectPosition and get the coordinates of what it hits, whilst checking if it hits a block.

 

Psuedo code - open by Twinklez -- you can remove the print statements.

https://gist.github.com/Twinklez/9905161

 

Link to comment
Share on other sites

Hi there,

 

getLookVec() returns a normalized look vector, so all the coordinates (xCoord etc) squared and added together will equal one. It is not a real world position, but relative to your current position, so you need to add these values to your initial position (e.g. player.posX += vec.xCoord * 50D, etc.).

 

Like mentioned earlier, you can multiply each vector coordinate by some value that will extend the distance, so if you multiply by 50 you will be teleporting 50 blocks along the player's look vector, but that might be inside of a block.

 

You can either manually iterate along the vector path until you hit a block, or you can use the World#clip method with your multiplied look vector (plus the initial coordinates), and the player's initial position as a vector. This will return a moving object position which may be null or may contain the information on the block hit.

Link to comment
Share on other sites

*snip*

 

Ah, normalized vectors. Oh so handy!

 

Actually they are handy as they can be resolved into an actual direction.  The problem here is that the look vector is wrong for this purpose, there is other methods for returning the block your cursor is actually targeting.

 

I haven't used it in a while, but I think something like Minecraft.getMinecraft().objectMouseOver would be better.

 

In any case, Minecraft of course has methods for figuring out the block that you can interact with and you need to invoke those, rather than a look vector.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

*snip*

 

Ah, normalized vectors. Oh so handy!

 

Actually they are handy as they can be resolved into an actual direction.  The problem here is that the look vector is wrong for this purpose, there is other methods for returning the block your cursor is actually targeting.

 

I haven't used it in a while, but I think something like Minecraft.getMinecraft().objectMouseOver would be better.

 

In any case, Minecraft of course has methods for figuring out the block that you can interact with and you need to invoke those, rather than a look vector.

 

This crashed my game.

I am Bobblacksmith and I approve this message!

Link to comment
Share on other sites

Actually they are handy as they can be resolved into an actual direction.  The problem here is that the look vector is wrong for this purpose, there is other methods for returning the block your cursor is actually targeting.

 

I haven't used it in a while, but I think something like Minecraft.getMinecraft().objectMouseOver would be better.

 

In any case, Minecraft of course has methods for figuring out the block that you can interact with and you need to invoke those, rather than a look vector.

I beg to differ. Look vectors are exactly what is needed here. objectMouseOver is useful, but can only be used on the client, so if you want to be able to teleport on the server without sending a packet, the look vector is perfect. I've used it lots of times.

 

@OP accessing Minecraft.getMinecraft().anything will crash your game if you try to access it on the server side (i.e. when the world is NOT remote), since getMinecraft() is all client-side only. If you want to use objectMouseOver, you will need to do so only on the client and send a packet containing the coordinates you need, then resolve the teleport from the server side; otherwise, you can try using the look vector.

Link to comment
Share on other sites

Actually they are handy as they can be resolved into an actual direction.  The problem here is that the look vector is wrong for this purpose, there is other methods for returning the block your cursor is actually targeting.

 

I haven't used it in a while, but I think something like Minecraft.getMinecraft().objectMouseOver would be better.

 

In any case, Minecraft of course has methods for figuring out the block that you can interact with and you need to invoke those, rather than a look vector.

I beg to differ. Look vectors are exactly what is needed here. objectMouseOver is useful, but can only be used on the client, so if you want to be able to teleport on the server without sending a packet, the look vector is perfect. I've used it lots of times.

 

@OP accessing Minecraft.getMinecraft().anything will crash your game if you try to access it on the server side (i.e. when the world is NOT remote), since getMinecraft() is all client-side only. If you want to use objectMouseOver, you will need to do so only on the client and send a packet containing the coordinates you need, then resolve the teleport from the server side; otherwise, you can try using the look vector.

 

Yeah, this is the same mistake I made on separate topic you just helped me with (i.e. client versus server side)

 

I still think that the mouseOver is more specifically what this person wants though (says he wants to teleport to a block located in direction looking, not just in direction looking), so maybe doing it like you said -- use mouseOver in client but send packet from client to server.  I say this because the look vector doesn't directly give you a block position, whereas mouseOver already has all the "goodness" of figuring out if there is an object under your cursor that has a meaningful position in the world.  If you use lookvector then you'll have to do something to check positions in direction of the look until you find something.

 

I guess neither way is hard, but when modding since I'm a noob to Minecraft (obviously) I tend to try to make use of any vanilla code that is useful and it seems that mouseOver is sort of sophisticated.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

Figuring out the coordinates on the client would be a security hole though, because how do you know that the client is not just sending arbitrary coordinates? If you don't verify client data your mod becomes a target for hackers.

 

Yeah, but what the player is looking at is a client side thing so even the look vector at some point must accept client data, right?  But I guess you're saying that the look vector is somehow more secure?

 

(I'm not trying to be argumentative, as I'm pretty new to Minecraft and the server stuff still trips me up.  I just want to understand fully so I don't make the mistake later myself).

 

Maybe you're saying that the look vector isn't itself more secure, but rather it is relative to the player position so it couldn't be hacked to cause arbitrary teleport except to legitimate things that could be seen by the player anyway?

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Link to comment
Share on other sites

Yes, the look vector on the server is based on client information. But this information is already validated as much as possible. It is based on the player position (which is validated, you can only move "properly", that is as much as your current move-speed/gamemode will allow) and it's rotation.

Link to comment
Share on other sites

Method to find the block that a player is looking at: -- mostly adapted/copied from some old code in Item class so that it could be accessed outside of an item.

 

You can change reachLength to the maximum length you want to check.  If nothing is found in that range, it will return null.

 

If you don't want to hit entities, you can remove that section entirely leaving only the blocks portion.

 

offset parameter is if you want to offset for side hit, such as if you are placing a block (get the block clicked IN instead of the one clicked ON)

 

BlockPosition is a simple tuple/triplet class --- three int fields, x, y, z, and some utility methods.  Change this to your prefferred return data-type

 

(its actually been awhile since I've looked at that code...no idea what scaleFactor was supposed to do...but the rest should be fairly obvious)

 

 

/**
* will return null if nothing is in range
* @param player
* @param world
* @param offset
* @return
*/
public static BlockPosition getBlockClickedOn(EntityPlayer player, World world, boolean offset)
  {
  float scaleFactor = 1.0F;
  float rotPitch = player.prevRotationPitch + (player.rotationPitch - player.prevRotationPitch) * scaleFactor;
  float rotYaw = player.prevRotationYaw + (player.rotationYaw - player.prevRotationYaw) * scaleFactor;
  double testX = player.prevPosX + (player.posX - player.prevPosX) * scaleFactor;
  double testY = player.prevPosY + (player.posY - player.prevPosY) * scaleFactor + 1.62D - player.yOffset;//1.62 is player eye height
  double testZ = player.prevPosZ + (player.posZ - player.prevPosZ) * scaleFactor;
  Vec3 testVector = Vec3.createVectorHelper(testX, testY, testZ);
  float var14 = MathHelper.cos(-rotYaw * 0.017453292F - (float)Math.PI);
  float var15 = MathHelper.sin(-rotYaw * 0.017453292F - (float)Math.PI);
  float var16 = -MathHelper.cos(-rotPitch * 0.017453292F);
  float vectorY = MathHelper.sin(-rotPitch * 0.017453292F);
  float vectorX = var15 * var16;
  float vectorZ = var14 * var16;
  double reachLength = 5.0D;
  Vec3 testVectorFar = testVector.addVector(vectorX * reachLength, vectorY * reachLength, vectorZ * reachLength);
  MovingObjectPosition testHitPosition = world.rayTraceBlocks(testVector, testVectorFar, true);

  /**
   * if nothing was hit, return null
   */
  if (testHitPosition == null)
    {
    return null;
    }

  Vec3 var25 = player.getLook(scaleFactor);
  float var27 = 1.0F;
  List entitiesPossiblyHitByVector = world.getEntitiesWithinAABBExcludingEntity(player, player.boundingBox.addCoord(var25.xCoord * reachLength, var25.yCoord * reachLength, var25.zCoord * reachLength).expand(var27, var27, var27));
  Iterator entityIterator = entitiesPossiblyHitByVector.iterator();
  while (entityIterator.hasNext())
    {
    Entity testEntity = (Entity)entityIterator.next();
    if (testEntity.canBeCollidedWith())
      {
      float bbExpansionSize = testEntity.getCollisionBorderSize();
      AxisAlignedBB entityBB = testEntity.boundingBox.expand(bbExpansionSize, bbExpansionSize, bbExpansionSize);
      /**
       * if an entity is hit, return its position
       */
      if (entityBB.isVecInside(testVector))
        {
        return new BlockPosition(testEntity.posX, testEntity.posY, testEntity.posZ);         
        }
      }
    }
  /**
   * if no entity was hit, return the position impacted.
   */
  int var42 = testHitPosition.blockX;
  int var43 = testHitPosition.blockY;
  int var44 = testHitPosition.blockZ;
  /**
   * if should offset for side hit (block clicked IN)
   */
  if(offset)
    {
    switch (testHitPosition.sideHit)
      {
      case 0:
      --var43;
      break;
      case 1:
      ++var43;
      break;
      case 2:
      --var44;
      break;
      case 3:
      ++var44;
      break;
      case 4:
      --var42;
      break;
      case 5:
      ++var42;
      }
    }      
  return new BlockPosition(var42, var43, var44); 
  }

 

 

Link to comment
Share on other sites

Making this way more complicated than it is - there is no reason to copy the entire getLookVec method... just look at EntityLivingBase#canEntityBeSeen for inspiration on how to do it in a simple fashion:

public boolean canEntityBeSeen(Entity par1Entity) {
return this.worldObj.clip(
this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY + (double)this.getEyeHeight(), this.posZ),
this.worldObj.getWorldVec3Pool().getVecFromPool(par1Entity.posX, par1Entity.posY + (double)par1Entity.getEyeHeight(), par1Entity.posZ)) == null;
}

There you can see how one could easily modify this to return what you want; World#clip(Vec3, Vec3) returns a MovingObjectPosition if something was in the line of sight, either an entity or block, or null if the player is looking at air.

 

The first Vec3 is based on the player's current position, the second the position you want to teleport to. For that you can use the vector from the player's position (yes, the same one as the first) and add the normalized EntityPlayer#getLookVec() coordinates multiplied by whatever distance you want.

 

In sum, you have 2 Vec3, both based on player position and one modified by the look vector, and you throw those into World#clip. Done in 3-4 lines of code, using tools already available in Minecraft.

Link to comment
Share on other sites

Making this way more complicated than it is - there is no reason to copy the entire getLookVec method... just look at EntityLivingBase#canEntityBeSeen for inspiration on how to do it in a simple fashion:

public boolean canEntityBeSeen(Entity par1Entity) {
return this.worldObj.clip(
this.worldObj.getWorldVec3Pool().getVecFromPool(this.posX, this.posY + (double)this.getEyeHeight(), this.posZ),
this.worldObj.getWorldVec3Pool().getVecFromPool(par1Entity.posX, par1Entity.posY + (double)par1Entity.getEyeHeight(), par1Entity.posZ)) == null;
}

There you can see how one could easily modify this to return what you want; World#clip(Vec3, Vec3) returns a MovingObjectPosition if something was in the line of sight, either an entity or block, or null if the player is looking at air.

 

The first Vec3 is based on the player's current position, the second the position you want to teleport to. For that you can use the vector from the player's position (yes, the same one as the first) and add the normalized EntityPlayer#getLookVec() coordinates multiplied by whatever distance you want.

 

In sum, you have 2 Vec3, both based on player position and one modified by the look vector, and you throw those into World#clip. Done in 3-4 lines of code, using tools already available in Minecraft.

 

So how would you go about using this to extract block data to, say, teleport to using the x y z coords, or even spawn something like lightning, if its returning a boolean value? Would it go something like:

 

if(canEntityBeSeen(player) == true){
    //teleport/spawn entity code here?
}

 

I'm just not sure how this would work.

Link to comment
Share on other sites

Not sure if this has been answered already but I've found by far the easiest method to doing this is like so:

 

//entity player
    MovingObjectPosition lastPosition = player.rayTrace(100, 1.0F);
    player.addChatMessage(new ChatComponentText(EnumChatFormatting.AQUA + "Position [ X: " + lastPosition.blockX + " Y: " + lastPosition.blockY + 1 + " Z: " + lastPosition.blockZ + " ]"));
    //I add 1 because when spawning things, it makes more sense to get the block above where they are focused so that the entity isn't spawned in the block

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
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.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • What you posted looks like the latest.log, not debug.log. It also does not show any error, but a successful join of a single player world. Please answer this question.
    • [29Nov2021 13:35:13.629] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher running: args [--username, Alsefri1423, --version, 1.17.1-forge-37.0.126, --gameDir, C:\Users\Gaming\AppData\Roaming\.minecraft, --assetsDir, C:\Users\Gaming\AppData\Roaming\.minecraft\assets, --assetIndex, 1.17, --uuid, a889dee5cd184fe7b91ede11d2acd85f, --accessToken, ????????, --userType, msa, --versionType, release, --launchTarget, forgeclient, --fml.forgeVersion, 37.0.126, --fml.mcVersion, 1.17.1, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20210706.113038] [29Nov2021 13:35:13.633] [main/INFO] [cpw.mods.modlauncher.Launcher/MODLAUNCHER]: ModLauncher 9.0.7+91+master.8569cdf starting: java version 16.0.1 by Microsoft [29Nov2021 13:35:13.746] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.4 Source=union:/C:/Users/Gaming/AppData/Roaming/.minecraft/libraries/org/spongepowered/mixin/0.8.4/mixin-0.8.4.jar%2318! Service=ModLauncher Env=CLIENT [29Nov2021 13:35:15.296] [main/INFO] [cpw.mods.modlauncher.LaunchServiceHandler/MODLAUNCHER]: Launching target 'forgeclient' with arguments [--version, 1.17.1-forge-37.0.126, --gameDir, C:\Users\Gaming\AppData\Roaming\.minecraft, --assetsDir, C:\Users\Gaming\AppData\Roaming\.minecraft\assets, --uuid, a889dee5cd184fe7b91ede11d2acd85f, --username, Alsefri1423, --assetIndex, 1.17, --accessToken, ????????, --userType, msa, --versionType, release] [13:35:21] [Render thread/WARN]: Assets URL 'union:/C:/Users/Gaming/AppData/Roaming/.minecraft/libraries/net/minecraft/client/1.17.1-20210706.113038/client-1.17.1-20210706.113038-srg.jar%2353!/assets/.mcassetsroot' uses unexpected schema [13:35:21] [Render thread/WARN]: Assets URL 'union:/C:/Users/Gaming/AppData/Roaming/.minecraft/libraries/net/minecraft/client/1.17.1-20210706.113038/client-1.17.1-20210706.113038-srg.jar%2353!/data/.mcassetsroot' uses unexpected schema [29Nov2021 13:35:21.370] [Render thread/INFO] [com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService/]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD' [13:35:22] [Render thread/INFO]: Setting user: Alsefri1423 [13:35:22] [Render thread/INFO]: Backend library: LWJGL version 3.2.2 SNAPSHOT [13:35:24] [modloading-worker-2/INFO]: Forge mod loading, version 37.0.126, for MC 1.17.1 with MCP 20210706.113038 [13:35:24] [modloading-worker-2/INFO]: MinecraftForge v37.0.126 Initialized [13:35:24] [Render thread/WARN]: Removed resource pack Fabric Mods from options because it doesn't seem to exist anymore [29Nov2021 13:35:26.011] [Render thread/INFO] [com.mojang.text2speech.NarratorWindows/]: Narrator library for x64 successfully loaded [13:35:26] [Render thread/INFO]: Reloading ResourceManager: Default, Mod Resources [13:35:26] [modloading-worker-2/WARN]: Configuration file C:\Users\Gaming\AppData\Roaming\.minecraft\config\forge-client.toml is not correct. Correcting [13:35:26] [modloading-worker-2/WARN]: Incorrect key client.forceSystemNanoTime was corrected from null to its default, false.  [13:35:26] [modloading-worker-2/WARN]: Incorrect key client.disableStairSlabCulling was corrected from false to its default, null.  [13:35:26] [modloading-worker-2/WARN]: Incorrect key client.zoomInMissingModelTextInGui was corrected from false to its default, null.  [13:35:26] [modloading-worker-2/WARN]: Incorrect key client.forgeLightPipelineEnabled was corrected from true to its default, null.  [13:35:26] [modloading-worker-2/WARN]: Incorrect key client.forgeCloudsEnabled was corrected from true to its default, null.  [29Nov2021 13:35:26.669] [Forge Version Check/INFO] [net.minecraftforge.fml.VersionChecker/]: [forge] Starting version check at https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json [13:35:38] [Render thread/INFO]: OpenAL initialized. [13:35:38] [Render thread/INFO]: Sound engine started [13:35:38] [Render thread/INFO]: Created: 1024x512x4 minecraft:textures/atlas/blocks.png-atlas [13:35:38] [Render thread/INFO]: Created: 256x128x4 minecraft:textures/atlas/signs.png-atlas [13:35:38] [Render thread/INFO]: Created: 512x512x4 minecraft:textures/atlas/banner_patterns.png-atlas [13:35:38] [Render thread/INFO]: Created: 512x512x4 minecraft:textures/atlas/shield_patterns.png-atlas [13:35:38] [Render thread/INFO]: Created: 256x256x4 minecraft:textures/atlas/chest.png-atlas [13:35:38] [Render thread/INFO]: Created: 512x256x4 minecraft:textures/atlas/beds.png-atlas [13:35:38] [Render thread/INFO]: Created: 512x256x4 minecraft:textures/atlas/shulker_boxes.png-atlas [29Nov2021 13:35:38.817] [Forge Version Check/INFO] [net.minecraftforge.fml.VersionChecker/]: [forge] Found status: BETA Current: 37.0.126 Target: 37.0.126 [13:35:40] [Render thread/INFO]: Created: 256x256x0 minecraft:textures/atlas/particles.png-atlas [13:35:40] [Render thread/INFO]: Created: 256x256x0 minecraft:textures/atlas/paintings.png-atlas [13:35:40] [Render thread/INFO]: Created: 128x128x0 minecraft:textures/atlas/mob_effects.png-atlas [13:35:51] [Render thread/WARN]: Ambiguity between arguments [teleport, location] and [teleport, destination] with inputs: [0.1 -0.5 .9, 0 0 0] [13:35:51] [Render thread/WARN]: Ambiguity between arguments [teleport, location] and [teleport, targets] with inputs: [0.1 -0.5 .9, 0 0 0] [13:35:51] [Render thread/WARN]: Ambiguity between arguments [teleport, destination] and [teleport, targets] with inputs: [Player, 0123, @e, dd12be42-52a9-4a91-a8a1-11c01849e498] [13:35:51] [Render thread/WARN]: Ambiguity between arguments [teleport, targets] and [teleport, destination] with inputs: [Player, 0123, dd12be42-52a9-4a91-a8a1-11c01849e498] [13:35:51] [Render thread/WARN]: Ambiguity between arguments [teleport, targets, location] and [teleport, targets, destination] with inputs: [0.1 -0.5 .9, 0 0 0] [13:35:51] [Render thread/INFO]: Reloading ResourceManager: Default, forge-1.17.1-37.0.126-universal.jar [13:35:54] [Render thread/INFO]: Loaded 7 recipes [13:35:55] [Render thread/INFO]: Loaded 1137 advancements [13:35:55] [Render thread/INFO]: Injecting existing registry data into this CLIENT instance [13:35:56] [Render thread/WARN]: Ambiguity between arguments [teleport, location] and [teleport, destination] with inputs: [0.1 -0.5 .9, 0 0 0] [13:35:56] [Render thread/WARN]: Ambiguity between arguments [teleport, location] and [teleport, targets] with inputs: [0.1 -0.5 .9, 0 0 0] [13:35:56] [Render thread/WARN]: Ambiguity between arguments [teleport, destination] and [teleport, targets] with inputs: [Player, 0123, @e, dd12be42-52a9-4a91-a8a1-11c01849e498] [13:35:56] [Render thread/WARN]: Ambiguity between arguments [teleport, targets] and [teleport, destination] with inputs: [Player, 0123, dd12be42-52a9-4a91-a8a1-11c01849e498] [13:35:56] [Render thread/WARN]: Ambiguity between arguments [teleport, targets, location] and [teleport, targets, destination] with inputs: [0.1 -0.5 .9, 0 0 0] [13:35:56] [Render thread/INFO]: Reloading ResourceManager: Default, forge-1.17.1-37.0.126-universal.jar [13:35:58] [Render thread/INFO]: Loaded 7 recipes [13:35:59] [Render thread/INFO]: Loaded 1137 advancements [13:36:00] [Render thread/INFO]: Injecting existing registry data into this CLIENT instance [29Nov2021 13:36:00.780] [Render thread/INFO] [com.mojang.authlib.yggdrasil.YggdrasilAuthenticationService/]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD' [13:36:00] [Server thread/INFO]: Starting integrated minecraft server version 1.17.1 [13:36:00] [Server thread/INFO]: Generating keypair [13:36:01] [Server thread/INFO]: Preparing start region for dimension minecraft:overworld [13:36:01] [Render thread/INFO]: Preparing spawn area: 0% [13:36:05] [Render thread/INFO]: Preparing spawn area: 0% [13:36:05] [Render thread/INFO]: Preparing spawn area: 0% [13:36:05] [Render thread/INFO]: Preparing spawn area: 0% [13:36:05] [Render thread/INFO]: Preparing spawn area: 0% [13:36:05] [Render thread/INFO]: Preparing spawn area: 0% [13:36:05] [Render thread/INFO]: Preparing spawn area: 0% [13:36:05] [Render thread/INFO]: Preparing spawn area: 0% [13:36:05] [Render thread/INFO]: Preparing spawn area: 0% [13:36:06] [Render thread/INFO]: Preparing spawn area: 56% [13:36:06] [Render thread/INFO]: Preparing spawn area: 76% [13:36:06] [Render thread/INFO]: Preparing spawn area: 88% [13:36:06] [Render thread/INFO]: Time elapsed: 5638 ms [13:36:06] [Server thread/INFO]: Changing view distance to 31, from 10 [13:36:08] [Netty Local Client IO #0/INFO]: Connected to a modded server. [13:36:08] [Server thread/INFO]: Using new advancement loading for net.minecraft.server.PlayerAdvancements@334a2b19 [13:36:08] [Server thread/INFO]: Alsefri1423[local:E:9ebcee60] logged in with entity id 113 at (-1414.803438468965, 64.0, 25.132433578510874) [13:36:08] [Server thread/INFO]: Alsefri1423 joined the game [13:36:09] [Server thread/INFO]: Saving and pausing game... [13:36:09] [Server thread/INFO]: Saving chunks for level 'ServerLevel[New World]'/minecraft:overworld [13:36:09] [Server thread/INFO]: Saving chunks for level 'ServerLevel[New World]'/minecraft:the_nether [13:36:09] [Server thread/INFO]: Saving chunks for level 'ServerLevel[New World]'/minecraft:the_end [13:36:09] [Server thread/WARN]: Can't keep up! Is the server overloaded? Running 2136ms or 42 ticks behind [13:36:10] [Render thread/INFO]: Loaded 174 advancements   My OS is Windows 10
    • Hello, I know I've been quite active here lately and I promise I'll get out of your hair once i can work out this final thing. Essentially I'm looking for a way to get the player's Position on a specific axis and use its value in an if statement. I've experimented with classes vec3 and vec3i as the method getY() seemed promising, but i didn't know how to use it with the player and I had issues with the method being non-static. Any help would be appreciated. 
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.