#home system
1 messages · Page 1 of 1 (latest)
no
const homeForm = new ActionFormData()
.title("Home")
.body("Select one")
.button("Create")
.button("Teleport")
.button("Home")
Can a player have more than one home?
Yes
I know it
function createHome(player) {
const createForm = new ModalFormData()
.title("Create Home")
.textField("Home Name")
createForm.show(player).then(r => {
if (r.canceled) return;
player.addTag(`HOME:${r.formValues[0]}:${Object.values(player.location).join(" ")}`)
player.sendMessage(`Successfully create home "${r.formValues[0]}"`)
})
}
function teleportHome(player) {
const tags = player.getTags().map(tag => tag.startsWith("HOME:"))
const teleportForm = new ActionFormData()
.title("Teleport Home")
.body("Select one to teleport")
for (const tag of tags) {
const [_, name, loc] = tag.split(":")
teleportForm.button(`Home: ${name}\n${loc}`)
}
teleportForm.show(player).then(r => {
if (r.canceled) return;
const [_, name, loc] = tags[r.selection]
player.teleport(new Vector(...loc.split(" "), player.dimension, player.rotation.x, player.rotation.y, true))
player.sendMessage("Successfully teleport to ${name}")
})
}
function deleteHome(player) {
const tags = player.getTags().map(tag => tag.startsWith("HOME:"))
const deleteForm = new ActionFormData()
.title("Delete Home")
.body("Select one to delete")
for (const tag of tags) {
const [_, name, loc] = tag.split(":")
teleportForm.button(`Home: ${name}\n${loc}`)
}
deleteForm.show(player).then(r => {
if (r.canceled) return;
player.removeTag(tags[r.selection])
player.sendMessage("Successfully delete home")
})
}
Done
it didn't open, I put it in another menu to open the 3 and it didn't
Show your code
Hmmm you run exgui(player), not exgui4
I know
But you still run exgui, not exgui4
world.events.beforeItemUse.subscribe(eventData => {
let player = eventData.source
let item = eventData.item
if (item.typeId == "m:carteira") {
// This one
exgui(player)
}
})
Try change to exgui4
In exgui there is a "home" button that goes to exgui4
Oh
Does anythiny except exgui4 works?
There are 6 errors in this [code](#1091911274914381865 message):
[36mmain.js[0m:[33m1[0m:[33m26[0m - [31merror[0m[30m TS2307: [0mCannot find module 'functions.js' or its corresponding type declarations.
[7m1[0m import { getScore } from "functions.js";
[7m [0m [31m ~~~~~~~~~~~~~~[0m
[36mmain.js[0m:[33m125[0m:[33m43[0m - [31merror[0m[30m TS2731: [0mImplicit conversion of a 'symbol' to a 'string' will fail at runtime. Consider wrapping this expression in 'String(...)'.
[7m125[0m `scoreboard players set @s "${property}" ${value}`
[7m [0m [31m ~~~~~~~~[0m
[36mmain.js[0m:[33m157[0m:[33m10[0m - [31merror[0m[30m TS2339: [0mProperty 'scores' does not exist on type 'Player'.
[7m157[0m target.scores["money"] += amount;
[7m [0m [31m ~~~~~~[0m
[36mmain.js[0m:[33m185[0m:[33m6[0m - [31merror[0m[30m TS2554: [0mExpected 2-3 arguments, but got 1.
[7m185[0m .textField("Home Name")
[7m [0m [31m ~~~~~~~~~~~~~~~~~~~~~~[0m
[36m@minecraft/server-ui.d.ts[0m:[33m235[0m:[33m30[0m
[7m235[0m textField(label: string, placeholderText: string, defaultValue?: string): ModalFormData;
[7m [0m [36m ~~~~~~~~~~~~~~~~~~~~~~~[0m
An argument for 'placeholderText' was not provided.
[36mmain.js[0m:[33m210[0m:[33m25[0m - [31merror[0m[30m TS2304: [0mCannot find name 'Vector'.
[7m210[0m player.teleport(new Vector(...loc.split(" "), player.dimension, player.rotation.x, player.rotation.y, true))
[7m [0m [31m ~~~~~~[0m
[36mmain.js[0m:[33m223[0m:[33m5[0m - [31merror[0m[30m TS2552: [0mCannot find name 'teleportForm'. Did you mean 'teleportHome'?
[7m223[0m teleportForm.button(`Home: ${name}\n${loc}`)
[7m [0m [31m ~~~~~~~~~~~~[0m
[36mmain.js[0m:[33m195[0m:[33m10[0m
[7m195[0m function teleportHome(player) {
[7m [0m [36m ~~~~~~~~~~~~[0m
'teleportHome' is declared here.
the 3 codes you sent that are not working
Does the main home form open?
Yes
Okay, I know the issue
Oh
On createForm, there's textField, add another string as a description
.textField("Home Name", "Name")
I was already testing calm down there
Okay
the one to create home opened
You can add these on teleportForm and deleteForm under const tags
if (tags.length === 0) {
new MessageFormData()
.title("Error")
.body("You don't have any home! Create new one")
.button1("Ok")
.button2("Cancel")
.show(player)
.then()
return;
}
Try change with this
player.addTag(`HOME:${r.formValues[0]}:${Object.values(player.location).map(Math.floor).join(" ")}`)
.
I think when you input the name, you use your alphabet
Like maybe é doesn't accepted on tag
Is it works?
Yes
Huh
const [name] = r.formValues
player.addTag(`HOME:${name}:${Object.values(player.location).map(Math.floor).join(" ")}`)
it was not
Very weird
const tags = player.getTags().filter(tag => tag.startsWith("HOME:"))
menu opens but does not teleport
does anyone know what's wrong?
I'm sorry, I have something to do rn
player.teleport(new Vector(...loc.split(" ")), player.dimension, player.rotation.x, player.rotation.y, true)
```There's missing `)` there, so maybe try it
const tags = player.getTags().filter(tag => tag.startsWith("HOME:"))
const teleportForm = new ActionFormData()
.title("Teleport Home")
.body("Select one to teleport")
for (const tag of tags) {
const [_, name, loc] = tag.split(":")
teleportForm.button(`Home: ${name}\n${loc}`)
}
teleportForm.show(player).then(r => {
if (r.canceled) return;
const [_, name, loc] = tags[r.selection]
player.teleport(new Vector(...loc.split(" ")), player.dimension, player.rotation.x, player.rotation.y, true)
player.sendMessage("Successfully teleport to ${name}")
})
}
Here have a test bot dedicated towards debuging script-api code blocks within discord by yourself.
Usage
1. Make sure to use JS Code Block formating
`
console.warn("like this")
2. ` Long press Code Block message
3. Click Apps from the menu
4. Select Debug (Preview) for beta and Debug (Stable) for stable
5. Pog! you should be seeing all the issues, if any
There are 9 errors in this [code](#1091911274914381865 message):
[36m<repl>.js[0m:[33m1[0m:[33m14[0m - [31merror[0m[30m TS2552: [0mCannot find name 'player'. Did you mean 'Player'?
[7m1[0m const tags = player.getTags().filter(tag => tag.startsWith("HOME:"))
[7m [0m [31m ~~~~~~[0m
[36m@minecraft/server.d.ts[0m:[33m3318[0m:[33m15[0m
[7m3318[0m class Player extends Entity {
[7m [0m [36m ~~~~~~[0m
'Player' is declared here.
[36m<repl>.js[0m:[33m11[0m:[33m21[0m - [31merror[0m[30m TS2552: [0mCannot find name 'player'. Did you mean 'Player'?
[7m11[0m teleportForm.show(player).then(r => {
[7m [0m [31m ~~~~~~[0m
[36m@minecraft/server.d.ts[0m:[33m3318[0m:[33m15[0m
[7m3318[0m class Player extends Entity {
[7m [0m [36m ~~~~~~[0m
'Player' is declared here.
[36m<repl>.js[0m:[33m15[0m:[33m1[0m - [31merror[0m[30m TS2552: [0mCannot find name 'player'. Did you mean 'Player'?
[7m15[0m player.teleport(new Vector(...loc.split(" ")), player.dimension, player.rotation.x, player.rotation.y, true)
[7m [0m [31m~~~~~~[0m
[36m@minecraft/server.d.ts[0m:[33m3318[0m:[33m15[0m
[7m3318[0m class Player extends Entity {
[7m [0m [36m ~~~~~~[0m
'Player' is declared here.
[36m<repl>.js[0m:[33m15[0m:[33m28[0m - [31merror[0m[30m TS2556: [0mA spread argument must either have a tuple type or be passed to a rest parameter.
[7m15[0m player.teleport(new Vector(...loc.split(" ")), player.dimension, player.rotation.x, player.rotation.y, true)
[7m [0m [31m ~~~~~~~~~~~~~~~~~[0m
[36m<repl>.js[0m:[33m15[0m:[33m48[0m - [31merror[0m[30m TS2552: [0mCannot find name 'player'. Did you mean 'Player'?
[7m15[0m player.teleport(new Vector(...loc.split(" ")), player.dimension, player.rotation.x, player.rotation.y, true)
[7m [0m [31m ~~~~~~[0m
[36m@minecraft/server.d.ts[0m:[33m3318[0m:[33m15[0m
[7m3318[0m class Player extends Entity {
[7m [0m [36m ~~~~~~[0m
'Player' is declared here.
[36m<repl>.js[0m:[33m15[0m:[33m66[0m - [31merror[0m[30m TS2552: [0mCannot find name 'player'. Did you mean 'Player'?
[7m15[0m player.teleport(new Vector(...loc.split(" ")), player.dimension, player.rotation.x, player.rotation.y, true)
[7m [0m [31m ~~~~~~[0m
[36m@minecraft/server.d.ts[0m:[33m3318[0m:[33m15[0m
[7m3318[0m class Player extends Entity {
[7m [0m [36m ~~~~~~[0m
'Player' is declared here.
[36m<repl>.js[0m:[33m15[0m:[33m85[0m - [31merror[0m[30m TS2552: [0mCannot find name 'player'. Did you mean 'Player'?
[7m15[0m player.teleport(new Vector(...loc.split(" ")), player.dimension, player.rotation.x, player.rotation.y, true)
[7m [0m [31m ~~~~~~[0m
[36m@minecraft/server.d.ts[0m:[33m3318[0m:[33m15[0m
[7m3318[0m class Player extends Entity {
[7m [0m [36m ~~~~~~[0m
'Player' is declared here.
[36m<repl>.js[0m:[33m16[0m:[33m5[0m - [31merror[0m[30m TS2552: [0mCannot find name 'player'. Did you mean 'Player'?
[7m16[0m player.sendMessage("Successfully teleport to ${name}")
[7m [0m [31m ~~~~~~[0m
[36m@minecraft/server.d.ts[0m:[33m3318[0m:[33m15[0m
[7m3318[0m class Player extends Entity {
[7m [0m [36m ~~~~~~[0m
'Player' is declared here.
@muted rapids
everything seems right
does anyone know what's wrong?
ha, I was wondering what this vector would be
even so it wasn't
No
with
?
do tags[r.selection].split(" ")
i did it like this```js
for (const tag of tags) {
const loc = tag.split(" ")
const home = loc[0].split(":")[1]
const x = loc[1]
const y = loc[2]
const z = loc[3]
tp.button(§a${home} \n§b ${x} ${y} ${z})
}
tp.show(player).then(result => {
const r = tags[result.selection].split(" ")
const home = r[0].split(":")[1]
const x = r[1]
const y = r[2]
const z = r[3]
player.runCommandAsync(`tp @s ${x} ${y} ${z}`)
player.tell(`§aSuccessfully teleported to §b${home}!`)
player.runCommandAsync(`playsound random.orb @s`)
})
thanks @rough quarry @cloud kelp
Thanks to that I learned other things I didn't know
like I want to put a switch that when activated the home is public that is general can teleport