Started by
lanto
on
Topic category: Help with Minecraft modding (Java Edition)
Heyyy, i'm trying to make a mob teleport when hit, Enderman-style teleport.
I have two issues:
1.- I'm not sure how to limit how far it could teleport.
2.- I don't know how to make it not teleport inside blocks. (I don't want it to teleport inside the walls and suffocate if i hit him inside a cave or something.)
How could i do this? Is it too hard?
If none of this makes since to you then I would do more research like watch videos on MCREATOR basic coding.
There are ways to make this a little better but this is the basic idea of what you would need to do.
# The basic concept here is you have a max Distance that you want the entity to teleport to.
# So what you do is keep that number persistent with the other values you already updated/changed.
# So for example:
# Lets say you have a max distance of 3. Lets also say your coordinates are: X: 0 Y: 0 Z: 0.
# Okay so an example of something we could do is: [ X: 1 Y: -1 Z: 1 or X: -1 Y: 1 Z: -1 ]
# notice how many changes were made in the examples above, We made 3 changes and we either added 1 or subtracted 1 from each.
# so the idea in this example is you could either:
change 3 numbers 1 time,
change 1 number 3 times,
change 1 number 2 times and another number 1 time,
or also not change any.
# This code is a little sloppy but would work
x = x position of target
y = y position of target
z = z position of target
maxDistance = 50 # set this to be your max distance
maxDistanceSelected = 0 # don't change this value
random number generated from 0 to maxDistance every time you define the x, y, z coordinates
maxDistanceSelected = x + ((random [0,1]) * maxDistance)
x = maxDistanceSelected
maxDistance = maxDistance - maxDistanceSelected
maxDistanceSelected = y + ((random [0,1]) * maxDistance)
y = maxDistanceSelected
maxDistance = maxDistance - maxDistanceSelected
maxDistanceSelected = z + ((random [0,1]) * maxDistance)
z = maxDistanceSelected
maxDistance = maxDistance - maxDistanceSelected
then you need a loop.
H = get the entities height
counter= 0
isGoodTp = False
if get block at [x] ([y] - 1) [z] is air then call the code again. if not then
# We will now check if the block meets are standards of the parameters we have.
repeat H times # this is a loop
counter = counter + 1 # this will help us keep track of how many blocks we have already check to see if it's air.
if get block at [x] [y] [z] is air block then continue.
if get block at [x] ([y] + counter ) [z] is air block then continue if else break loop.
if counter == H then (isGoodTp = True)
# We have now made sure the that the location has something other than air at the bottom
#and also made sure the entity would not tp inside of a block.
if isGoodTp == True then set entities location to [X] [Y] [Z]