iPortalTeam / ImmersivePortalsMod

Non-Euclidean in Minecraft. See through portals and teleport seamlessly.
https://qouteall.fun/immptl/
Apache License 2.0
445 stars 107 forks source link

Commands improvements #1229

Open qouteall opened 1 year ago

qouteall commented 1 year ago

https://discord.com/channels/662271867431682058/671895772265971712/1057659434064695336

qouteall commented 1 year ago
  1. directly create a portal without using extra entities
/portal cb_make_portal {x} {y} {z} {x destination} {y destination} {z destination} {x rot} {y rot} {z rot} {optional: portal nbt data} {optional: destination dim} {optional: scale}
qouteall commented 1 year ago

Rotation: allow using euler angle and copy entity's rotation

Vexxen1 commented 1 year ago

If you want the commands simple, i got a idea to shorten the number of commands down to just 2 for basic interactions. With some cool interactions.

/portal cb_make_portal {x} {y} {z} {x rot} {y rot} {z rot} {x size} {y size} {optional: portal nbt data}
/portal cb_set_pos {destination/portal} {x} {y} {z} {scale} {x rot} {y rot} {optional: z rot}
Vexxen1 commented 1 year ago

Here are some other ideas for command changes: portal specific accessor

/portal set_portal_specific_accessor {entities}
/portal set_portal_specific_accessor @e[type=pig,name=guy]
/portal clear_portal_specific_accessor

For Box Portals

/portal cb_box {x1} {y1} {z1} {x2} {y2} {z2} {out facing/in facing} {optional: north data} {optional: south data} {optional: east data} {optional: west data} {optional: top data} {optional: bottom data} {optional: empty}

Shape Commands another idea, is to add the ability to edit portal shape more then just making it round like:

/portal reset_shape
/portal make_circle
/portal set_shape <list of shape points, <x> <y>>
/portal set_shape 0.5 0.5 -0.5 0.5 -0.5 -0.5 0.5 -0.5 0.5 0.5 # this would make the portal a square or rectangle. 
Vexxen1 commented 1 year ago

As another idea: Outputs

/portal get_value {value} {scale}
/portal get_value x_rot 1
/portal get_value y_rot 1
/portal get_value z_rot 1
/portal get_value x_rot_des 1
/portal get_value y_rot_des 1
/portal get_value z_rot_des 1
/portal get_value x_size 1
/portal get_value y_size 1
/execute store result score @s num run portal get_value x_rot 10
qouteall commented 1 year ago

My current design: As it's using euler angles, I want to put it into the euler subcommand. And there is already /portal set_portal_position that changes only position. To avoid confusion, I am going to change that to "this side" and "other side"

/portal euler make_portal <x> <y> <z> <pitch> <yaw> <width> <height> <scale> <nbt>
/portal euler set_this_side <x> <y> <z> <pitch> <yaw> <width> <height> <nbt>
/portal euler set_other_side <x> <y> <z> <pitch> <yaw> <nbt>
/portal euler set_this_side_roll <scoreHolder> <objective>
/portal euler set_other_side_roll <scoreHolder> <objective>

The dimension is grabbed from source.

Vexxen1 commented 1 year ago

Yeah, looks great!

Vexxen1 commented 1 year ago

@qouteall https://github.com/iPortalTeam/ImmersivePortalsMod/issues/1236