From 71d58a4e485af538103a830293f539d16713e646 Mon Sep 17 00:00:00 2001 From: Signal Date: Thu, 18 Sep 2025 02:15:24 -0400 Subject: [PATCH] Add teleport spell --- mods/rgt_misc/init.lua | 2 + mods/rgt_misc/mod.conf | 2 + mods/rgt_misc/models/teleport_beacon.gltf | 1 + mods/rgt_misc/models/teleport_box.gltf | 1 + mods/rgt_misc/teleport.lua | 129 +++++++++++++++++++++ mods/rgt_misc/textures/teleport_beacon.png | Bin 0 -> 196 bytes mods/rgt_misc/textures/teleport_box.png | Bin 0 -> 165 bytes mods/rgt_player/init.lua | 12 +- 8 files changed, 143 insertions(+), 4 deletions(-) create mode 100644 mods/rgt_misc/init.lua create mode 100644 mods/rgt_misc/mod.conf create mode 100644 mods/rgt_misc/models/teleport_beacon.gltf create mode 100644 mods/rgt_misc/models/teleport_box.gltf create mode 100644 mods/rgt_misc/teleport.lua create mode 100644 mods/rgt_misc/textures/teleport_beacon.png create mode 100644 mods/rgt_misc/textures/teleport_box.png diff --git a/mods/rgt_misc/init.lua b/mods/rgt_misc/init.lua new file mode 100644 index 0000000..4e309b8 --- /dev/null +++ b/mods/rgt_misc/init.lua @@ -0,0 +1,2 @@ + +include "teleport.lua" diff --git a/mods/rgt_misc/mod.conf b/mods/rgt_misc/mod.conf new file mode 100644 index 0000000..5cc9b2c --- /dev/null +++ b/mods/rgt_misc/mod.conf @@ -0,0 +1,2 @@ +name = rgt_misc +depends = rgt_player \ No newline at end of file diff --git a/mods/rgt_misc/models/teleport_beacon.gltf b/mods/rgt_misc/models/teleport_beacon.gltf new file mode 100644 index 0000000..fa7afde --- /dev/null +++ b/mods/rgt_misc/models/teleport_beacon.gltf @@ -0,0 +1 @@ +{"asset":{"version":"2.0","generator":"Blockbench 4.12.5 glTF exporter"},"scenes":[{"nodes":[3],"name":"blockbench_export"}],"scene":0,"nodes":[{"translation":[0,2.03125,0],"name":"cube","mesh":0},{"translation":[0,2.03125,0],"name":"cube","mesh":1},{"translation":[0,-2.03125,0],"name":"root","children":[0,1]},{"children":[2]}],"bufferViews":[{"buffer":0,"byteOffset":0,"byteLength":288,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":288,"byteLength":288,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":576,"byteLength":192,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":768,"byteLength":72,"target":34963},{"buffer":0,"byteOffset":840,"byteLength":288,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":1128,"byteLength":288,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":1416,"byteLength":192,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":1608,"byteLength":72,"target":34963},{"buffer":0,"byteOffset":1680,"byteLength":60},{"buffer":0,"byteOffset":1740,"byteLength":240},{"buffer":0,"byteOffset":1980,"byteLength":56},{"buffer":0,"byteOffset":2036,"byteLength":168},{"buffer":0,"byteOffset":2204,"byteLength":36},{"buffer":0,"byteOffset":2240,"byteLength":108}],"buffers":[{"byteLength":2348,"uri":"data:application/octet-stream;base64,AACgPwAAoL8AAKA/AACgPwAAoL8AAKC/AACgPwAAoMAAAKA/AACgPwAAoMAAAKC/AACgvwAAoL8AAKC/AACgvwAAoL8AAKA/AACgvwAAoMAAAKC/AACgvwAAoMAAAKA/AACgvwAAoL8AAKC/AACgPwAAoL8AAKC/AACgvwAAoL8AAKA/AACgPwAAoL8AAKA/AACgvwAAoMAAAKA/AACgPwAAoMAAAKA/AACgvwAAoMAAAKC/AACgPwAAoMAAAKC/AACgvwAAoL8AAKA/AACgPwAAoL8AAKA/AACgvwAAoMAAAKA/AACgPwAAoMAAAKA/AACgPwAAoL8AAKC/AACgvwAAoL8AAKC/AACgPwAAoMAAAKC/AACgvwAAoMAAAKC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AACAPgAAAAAAAAA/AAAAAAAAgD4AAMA+AAAAPwAAwD4AAIA+AADAPgAAAD8AAMA+AACAPgAAQD8AAAA/AABAPwAAQD8AAIA+AAAAPwAAgD4AAEA/AAAAAAAAAD8AAAAAAABAPwAAgD4AAAA/AACAPgAAQD8AAAA/AAAAPwAAAD8AAAAAAADAPgAAgD4AAMA+AAAAAAAAQD8AAIA+AABAPwAAAAAAAAAAAACAPgAAAAAAAAAAAADAPgAAgD4AAMA+AAACAAEAAgADAAEABAAGAAUABgAHAAUACAAKAAkACgALAAkADAAOAA0ADgAPAA0AEAASABEAEgATABEAFAAWABUAFgAXABUAAAAgPwAAIL8AACA/AAAgPwAAIL8AACC/AAAgPwAAoL8AACA/AAAgPwAAoL8AACC/AAAgvwAAIL8AACC/AAAgvwAAIL8AACA/AAAgvwAAoL8AACC/AAAgvwAAoL8AACA/AAAgvwAAIL8AACC/AAAgPwAAIL8AACC/AAAgvwAAIL8AACA/AAAgPwAAIL8AACA/AAAgvwAAoL8AACA/AAAgPwAAoL8AACA/AAAgvwAAoL8AACC/AAAgPwAAoL8AACC/AAAgvwAAIL8AACA/AAAgPwAAIL8AACA/AAAgvwAAoL8AACA/AAAgPwAAoL8AACA/AAAgPwAAIL8AACC/AAAgvwAAIL8AACC/AAAgPwAAoL8AACC/AAAgvwAAoL8AACC/AACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAACAvwAAAAAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAgL8AAAAAAAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAAAAAAAAAAAIC/AAAgPwAAED8AAEA/AAAQPwAAID8AACA/AABAPwAAID8AACA/AAAwPwAAQD8AADA/AAAgPwAAQD8AAEA/AABAPwAAID8AACA/AAAAPwAAID8AACA/AAAAPwAAAD8AAAA/AAAgPwAAID8AAAA/AAAgPwAAID8AAEA/AAAAPwAAQD8AACA/AAAgPwAAQD8AACA/AAAgPwAAMD8AAEA/AAAwPwAAID8AAAA/AABAPwAAAD8AACA/AAAQPwAAQD8AABA/AAACAAEAAgADAAEABAAGAAUABgAHAAUACAAKAAkACgALAAkADAAOAA0ADgAPAA0AEAASABEAEgATABEAFAAWABUAFgAXABUAAAAAAKuqKj2rqqo9AAAAPlVVVT5VVZU+q6qqPgAAwD5VVdU+q6rqPquqCj8AACA/q6oqP1VVNT+rqko/AAAAAAAAAAAAAAAAAACAPzjaAbsAAAAAAAAAAN//fz9F96G7AAAAAAAAAAAz/38/jkYLvAAAAAAAAAAAov1/P4YFgrwAAAAAAAAAAL/3fz9VQKy8AAAAAAAAAACD8X8/IbWyvAAAAAAAAAAAZ/B/PwAAAAAAAAAAAAAAAAAAgD8EE686AAAAAAAAAADx/38/KeUROwAAAAAAAAAA1v9/P/oSLzsAAAAAAAAAAMT/fz8EE686AAAAAAAAAADx/38/AAAAAAAAAAAAAAAAAACAPyG1srwAAAAAAAAAAGfwfz8AAAAAAAAAAAAAAAAAAIA/AAAAAKuqKj2rqqo9AAAAPlVVVT5VVZU+q6qqPgAAwD6rquo+AAAAP1VVFT+rqio/AABAP6uqSj8AAAAAAADcPwAAAAAAAAAAAAnaP3f3PjcAAAAAkdnYP0HfKzgAAAAAEvvXP5ffqzgAAAAAWFbVP9YIMzkAAAAAxGXOPx7waTkAAAAAcyjIP+YpZTkAAAAARnS/P1VbQTkAAAAAzcykPwAAAAAAAAAAy/NlP+9xBboAAAAAQ5hZvv81CrsAAAAA9jKXvzOURrsAAAAAY3fvv8tihLoAAAAAAAACwAAAAAAAAAAAq6oqPauqqj0AAAA+VVVVPlVVlT6rqqo+AADAPquq6j7NzMw9zczMPc3MzD32BRs+9gUbPvYFGz55V2I+eVdiPnlXYj6yGZw+shmcPrIZnD4idv8+Inb/PiJ2/z4PfTM/D30zPw99Mz/AjEs/wIxLP8CMSz+7A2E/uwNhP7sDYT8AAIA/AACAPwAAgD8="}],"accessors":[{"bufferView":0,"componentType":5126,"count":24,"max":[1.25,-1.25,1.25],"min":[-1.25,-5,-1.25],"type":"VEC3"},{"bufferView":1,"componentType":5126,"count":24,"max":[1,1,1],"min":[-1,-1,-1],"type":"VEC3"},{"bufferView":2,"componentType":5126,"count":24,"max":[0.75,0.75],"min":[0,0],"type":"VEC2"},{"bufferView":3,"componentType":5123,"count":36,"max":[23],"min":[0],"type":"SCALAR"},{"bufferView":4,"componentType":5126,"count":24,"max":[0.625,-0.625,0.625],"min":[-0.625,-1.25,-0.625],"type":"VEC3"},{"bufferView":5,"componentType":5126,"count":24,"max":[1,1,1],"min":[-1,-1,-1],"type":"VEC3"},{"bufferView":6,"componentType":5126,"count":24,"max":[0.75,0.75],"min":[0.5,0.5],"type":"VEC2"},{"bufferView":7,"componentType":5123,"count":36,"max":[23],"min":[0],"type":"SCALAR"},{"bufferView":8,"componentType":5126,"count":15,"max":[0.7916666865348816],"min":[0],"type":"SCALAR"},{"bufferView":9,"componentType":5126,"count":15,"max":[0.0026714191772043705,0,0,1],"min":[-0.02181488461792469,0,0,0.9997619986534119],"type":"VEC4"},{"bufferView":10,"componentType":5126,"count":14,"max":[0.7916666865348816],"min":[0],"type":"SCALAR"},{"bufferView":11,"componentType":5126,"count":14,"max":[0,1.71875,0.00022310062195174396],"min":[0,-2.03125,-0.003030073596164584],"type":"VEC3"},{"bufferView":12,"componentType":5126,"count":9,"max":[0.4583333432674408],"min":[0],"type":"SCALAR"},{"bufferView":13,"componentType":5126,"count":9,"max":[1,1,1],"min":[0.10000000149011612,0.10000000149011612,0.10000000149011612],"type":"VEC3"}],"materials":[{"pbrMetallicRoughness":{"metallicFactor":0,"roughnessFactor":1,"baseColorTexture":{"index":0}},"alphaMode":"MASK","alphaCutoff":0.05,"doubleSided":true}],"textures":[{"sampler":0,"source":0,"name":"teleport_beacon"}],"samplers":[{"magFilter":9728,"minFilter":9728,"wrapS":33071,"wrapT":33071}],"images":[{"mimeType":"image/png","name":"teleport_beacon.png","uri":"teleport_beacon.png"}],"meshes":[{"primitives":[{"mode":4,"attributes":{"POSITION":0,"NORMAL":1,"TEXCOORD_0":2},"indices":3,"material":0}]},{"primitives":[{"mode":4,"attributes":{"POSITION":4,"NORMAL":5,"TEXCOORD_0":6},"indices":7,"material":0}]}],"animations":[{"name":"animation","samplers":[{"input":8,"output":9,"interpolation":"LINEAR"},{"input":10,"output":11,"interpolation":"LINEAR"},{"input":12,"output":13,"interpolation":"LINEAR"}],"channels":[{"sampler":0,"target":{"node":2,"path":"rotation"}},{"sampler":1,"target":{"node":2,"path":"translation"}},{"sampler":2,"target":{"node":2,"path":"scale"}}]}]} \ No newline at end of file diff --git a/mods/rgt_misc/models/teleport_box.gltf b/mods/rgt_misc/models/teleport_box.gltf new file mode 100644 index 0000000..b49b595 --- /dev/null +++ b/mods/rgt_misc/models/teleport_box.gltf @@ -0,0 +1 @@ +{"asset":{"version":"2.0","generator":"Blockbench 4.12.5 glTF exporter"},"scenes":[{"nodes":[13],"name":"blockbench_export"}],"scene":0,"nodes":[{"name":"plane","mesh":0},{"translation":[0,-5,0],"name":"down","children":[0]},{"translation":[0,-5,5],"name":"plane","mesh":1},{"translation":[0,0,-5],"name":"n","children":[2]},{"translation":[0,-5,-5],"name":"plane","mesh":2},{"translation":[0,0,5],"name":"s","children":[4]},{"name":"plane","mesh":3},{"translation":[-5,0,0],"name":"w","children":[6]},{"translation":[-5,-5,0],"name":"plane","mesh":4},{"translation":[5,0,0],"name":"e","children":[8]},{"translation":[0,-10,0],"name":"plane","mesh":5},{"translation":[0,5,0],"name":"up","children":[10]},{"name":"root","children":[1,3,5,7,9,11]},{"children":[12]}],"bufferViews":[{"buffer":0,"byteOffset":0,"byteLength":48,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":48,"byteLength":48,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":96,"byteLength":32,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":128,"byteLength":12,"target":34963},{"buffer":0,"byteOffset":140,"byteLength":48,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":188,"byteLength":48,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":236,"byteLength":32,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":268,"byteLength":12,"target":34963},{"buffer":0,"byteOffset":280,"byteLength":48,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":328,"byteLength":48,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":376,"byteLength":32,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":408,"byteLength":12,"target":34963},{"buffer":0,"byteOffset":420,"byteLength":48,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":468,"byteLength":48,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":516,"byteLength":32,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":548,"byteLength":12,"target":34963},{"buffer":0,"byteOffset":560,"byteLength":48,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":608,"byteLength":48,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":656,"byteLength":32,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":688,"byteLength":12,"target":34963},{"buffer":0,"byteOffset":700,"byteLength":48,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":748,"byteLength":48,"target":34962,"byteStride":12},{"buffer":0,"byteOffset":796,"byteLength":32,"target":34962,"byteStride":8},{"buffer":0,"byteOffset":828,"byteLength":12,"target":34963},{"buffer":0,"byteOffset":840,"byteLength":176},{"buffer":0,"byteOffset":1016,"byteLength":528},{"buffer":0,"byteOffset":1544,"byteLength":16},{"buffer":0,"byteOffset":1560,"byteLength":48},{"buffer":0,"byteOffset":1608,"byteLength":184},{"buffer":0,"byteOffset":1792,"byteLength":552},{"buffer":0,"byteOffset":2344,"byteLength":16},{"buffer":0,"byteOffset":2360,"byteLength":48},{"buffer":0,"byteOffset":2408,"byteLength":176},{"buffer":0,"byteOffset":2584,"byteLength":528},{"buffer":0,"byteOffset":3112,"byteLength":16},{"buffer":0,"byteOffset":3128,"byteLength":48},{"buffer":0,"byteOffset":3176,"byteLength":184},{"buffer":0,"byteOffset":3360,"byteLength":552},{"buffer":0,"byteOffset":3912,"byteLength":16},{"buffer":0,"byteOffset":3928,"byteLength":48},{"buffer":0,"byteOffset":3976,"byteLength":176},{"buffer":0,"byteOffset":4152,"byteLength":528},{"buffer":0,"byteOffset":4680,"byteLength":16},{"buffer":0,"byteOffset":4696,"byteLength":48},{"buffer":0,"byteOffset":4744,"byteLength":184},{"buffer":0,"byteOffset":4928,"byteLength":552},{"buffer":0,"byteOffset":5480,"byteLength":16},{"buffer":0,"byteOffset":5496,"byteLength":48},{"buffer":0,"byteOffset":5544,"byteLength":4},{"buffer":0,"byteOffset":5548,"byteLength":16},{"buffer":0,"byteOffset":5564,"byteLength":8},{"buffer":0,"byteOffset":5572,"byteLength":24},{"buffer":0,"byteOffset":5596,"byteLength":92},{"buffer":0,"byteOffset":5688,"byteLength":276}],"buffers":[{"byteLength":5964,"uri":"data:application/octet-stream;base64,AACgQAAAAAAAAKBAAACgQAAAAAAAAKDAAACgwAAAAAAAAKDAAACgwAAAAAAAAKBAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAACAPwAAgD8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAEAAgAAAAIAAwAAAKBAAAAAAAAAoMAAAKBAAAAgQQAAoMAAAKDAAAAgQQAAoMAAAKDAAAAAAAAAoMAAAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAAAAAAAAAAAAgD8AAIA/AACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAQACAAAAAgADAAAAoEAAAAAAAACgQAAAoEAAACBBAACgQAAAoMAAACBBAACgQAAAoMAAAAAAAACgQAAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAgD8AAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAABAAIAAAACAAMAAAAAAAAAoMAAAKDAAAAAAAAAoEAAAKDAAAAAAAAAoEAAAKBAAAAAAAAAoMAAAKBAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAAAAAAAAAAACAPwAAgD8AAIA/AAAAAAAAAAAAAAAAAAAAAAAAgD8AAAEAAgAAAAIAAwAAAKBAAAAAAAAAoMAAAKBAAAAgQQAAoMAAAKBAAAAgQQAAoEAAAKBAAAAAAAAAoEAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AACAPwAAgD8AAAAAAAAAAAAAAAAAAAAAAACAPwAAAQACAAAAAgADAAAAoEAAACBBAACgQAAAoEAAACBBAACgwAAAoMAAACBBAACgwAAAoMAAACBBAACgQAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAAAAAAIA/AAAAAAAAgD8AAIA/AACAPwAAAAAAAAAAAAAAAAAAAAAAAIA/AAABAAIAAAACAAMAAAAAAKuqKj2rqqo9AAAAPlVVVT5VVZU+q6qqPgAAwD5VVdU+q6rqPquqCj8AACA/VVU1PwAAQD8AAIA/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"}],"accessors":[{"bufferView":0,"componentType":5126,"count":4,"max":[5,0,5],"min":[-5,0,-5],"type":"VEC3"},{"bufferView":1,"componentType":5126,"count":4,"max":[0,1,0],"min":[0,1,0],"type":"VEC3"},{"bufferView":2,"componentType":5126,"count":4,"max":[1,1],"min":[0,0],"type":"VEC2"},{"bufferView":3,"componentType":5123,"count":6,"max":[3],"min":[0],"type":"SCALAR"},{"bufferView":4,"componentType":5126,"count":4,"max":[5,10,-5],"min":[-5,0,-5],"type":"VEC3"},{"bufferView":5,"componentType":5126,"count":4,"max":[0,0,1],"min":[0,0,1],"type":"VEC3"},{"bufferView":6,"componentType":5126,"count":4,"max":[1,1],"min":[0,0],"type":"VEC2"},{"bufferView":7,"componentType":5123,"count":6,"max":[3],"min":[0],"type":"SCALAR"},{"bufferView":8,"componentType":5126,"count":4,"max":[5,10,5],"min":[-5,0,5],"type":"VEC3"},{"bufferView":9,"componentType":5126,"count":4,"max":[0,0,1],"min":[0,0,1],"type":"VEC3"},{"bufferView":10,"componentType":5126,"count":4,"max":[1,1],"min":[0,0],"type":"VEC2"},{"bufferView":11,"componentType":5123,"count":6,"max":[3],"min":[0],"type":"SCALAR"},{"bufferView":12,"componentType":5126,"count":4,"max":[0,5,5],"min":[0,-5,-5],"type":"VEC3"},{"bufferView":13,"componentType":5126,"count":4,"max":[1,0,0],"min":[1,0,0],"type":"VEC3"},{"bufferView":14,"componentType":5126,"count":4,"max":[1,1],"min":[0,0],"type":"VEC2"},{"bufferView":15,"componentType":5123,"count":6,"max":[3],"min":[0],"type":"SCALAR"},{"bufferView":16,"componentType":5126,"count":4,"max":[5,10,5],"min":[5,0,-5],"type":"VEC3"},{"bufferView":17,"componentType":5126,"count":4,"max":[1,0,0],"min":[1,0,0],"type":"VEC3"},{"bufferView":18,"componentType":5126,"count":4,"max":[1,1],"min":[0,0],"type":"VEC2"},{"bufferView":19,"componentType":5123,"count":6,"max":[3],"min":[0],"type":"SCALAR"},{"bufferView":20,"componentType":5126,"count":4,"max":[5,10,5],"min":[-5,10,-5],"type":"VEC3"},{"bufferView":21,"componentType":5126,"count":4,"max":[0,1,0],"min":[0,1,0],"type":"VEC3"},{"bufferView":22,"componentType":5126,"count":4,"max":[1,1],"min":[0,0],"type":"VEC2"},{"bufferView":23,"componentType":5123,"count":6,"max":[3],"min":[0],"type":"SCALAR"},{"bufferView":24,"componentType":5126,"count":44,"max":[2.5],"min":[0],"type":"SCALAR"},{"bufferView":25,"componentType":5126,"count":44,"max":[0,-4.907407283782959,0],"min":[0,-7.5,0],"type":"VEC3"},{"bufferView":26,"componentType":5126,"count":4,"max":[2.25],"min":[0],"type":"SCALAR"},{"bufferView":27,"componentType":5126,"count":4,"max":[1,1,1],"min":[1,1,1],"type":"VEC3"},{"bufferView":28,"componentType":5126,"count":46,"max":[2.5],"min":[0],"type":"SCALAR"},{"bufferView":29,"componentType":5126,"count":46,"max":[0,0,-4.907407283782959],"min":[0,0,-7.5],"type":"VEC3"},{"bufferView":30,"componentType":5126,"count":4,"max":[2.25],"min":[0],"type":"SCALAR"},{"bufferView":31,"componentType":5126,"count":4,"max":[1,1,1],"min":[1,1,1],"type":"VEC3"},{"bufferView":32,"componentType":5126,"count":44,"max":[2.5],"min":[0],"type":"SCALAR"},{"bufferView":33,"componentType":5126,"count":44,"max":[0,0,7.5],"min":[0,0,4.907407283782959],"type":"VEC3"},{"bufferView":34,"componentType":5126,"count":4,"max":[2.25],"min":[0],"type":"SCALAR"},{"bufferView":35,"componentType":5126,"count":4,"max":[1,1,1],"min":[1,1,1],"type":"VEC3"},{"bufferView":36,"componentType":5126,"count":46,"max":[2.5],"min":[0],"type":"SCALAR"},{"bufferView":37,"componentType":5126,"count":46,"max":[-4.907407283782959,0,0],"min":[-7.5,0,0],"type":"VEC3"},{"bufferView":38,"componentType":5126,"count":4,"max":[2.25],"min":[0],"type":"SCALAR"},{"bufferView":39,"componentType":5126,"count":4,"max":[1,1,1],"min":[1,1,1],"type":"VEC3"},{"bufferView":40,"componentType":5126,"count":44,"max":[2.5],"min":[0],"type":"SCALAR"},{"bufferView":41,"componentType":5126,"count":44,"max":[7.5,0,0],"min":[4.907407283782959,0,0],"type":"VEC3"},{"bufferView":42,"componentType":5126,"count":4,"max":[2.25],"min":[0],"type":"SCALAR"},{"bufferView":43,"componentType":5126,"count":4,"max":[1,1,1],"min":[1,1,1],"type":"VEC3"},{"bufferView":44,"componentType":5126,"count":46,"max":[2.5],"min":[0],"type":"SCALAR"},{"bufferView":45,"componentType":5126,"count":46,"max":[0,7.5,0],"min":[0,4.907407283782959,0],"type":"VEC3"},{"bufferView":46,"componentType":5126,"count":4,"max":[2.25],"min":[0],"type":"SCALAR"},{"bufferView":47,"componentType":5126,"count":4,"max":[1,1,1],"min":[1,1,1],"type":"VEC3"},{"bufferView":48,"componentType":5126,"count":1,"max":[0],"min":[0],"type":"SCALAR"},{"bufferView":49,"componentType":5126,"count":1,"max":[0,0,0,1],"min":[0,0,0,1],"type":"VEC4"},{"bufferView":50,"componentType":5126,"count":2,"max":[1],"min":[0],"type":"SCALAR"},{"bufferView":51,"componentType":5126,"count":2,"max":[0,0,0],"min":[0,0,0],"type":"VEC3"},{"bufferView":52,"componentType":5126,"count":23,"max":[3],"min":[0],"type":"SCALAR"},{"bufferView":53,"componentType":5126,"count":23,"max":[1.3074073791503906,1.3074073791503906,1.3074073791503906],"min":[0,0,0],"type":"VEC3"}],"materials":[{"pbrMetallicRoughness":{"metallicFactor":0,"roughnessFactor":1,"baseColorTexture":{"index":0}},"alphaMode":"MASK","alphaCutoff":0.05,"doubleSided":true}],"textures":[{"sampler":0,"source":0,"name":"teleport_box"}],"samplers":[{"magFilter":9728,"minFilter":9728,"wrapS":33071,"wrapT":33071}],"images":[{"mimeType":"image/png","name":"teleport_box.png","uri":"teleport_box.png"}],"meshes":[{"primitives":[{"mode":4,"attributes":{"POSITION":0,"NORMAL":1,"TEXCOORD_0":2},"indices":3,"material":0}]},{"primitives":[{"mode":4,"attributes":{"POSITION":4,"NORMAL":5,"TEXCOORD_0":6},"indices":7,"material":0}]},{"primitives":[{"mode":4,"attributes":{"POSITION":8,"NORMAL":9,"TEXCOORD_0":10},"indices":11,"material":0}]},{"primitives":[{"mode":4,"attributes":{"POSITION":12,"NORMAL":13,"TEXCOORD_0":14},"indices":15,"material":0}]},{"primitives":[{"mode":4,"attributes":{"POSITION":16,"NORMAL":17,"TEXCOORD_0":18},"indices":19,"material":0}]},{"primitives":[{"mode":4,"attributes":{"POSITION":20,"NORMAL":21,"TEXCOORD_0":22},"indices":23,"material":0}]}],"animations":[{"name":"animation","samplers":[{"input":24,"output":25,"interpolation":"LINEAR"},{"input":26,"output":27,"interpolation":"LINEAR"},{"input":28,"output":29,"interpolation":"LINEAR"},{"input":30,"output":31,"interpolation":"LINEAR"},{"input":32,"output":33,"interpolation":"LINEAR"},{"input":34,"output":35,"interpolation":"LINEAR"},{"input":36,"output":37,"interpolation":"LINEAR"},{"input":38,"output":39,"interpolation":"LINEAR"},{"input":40,"output":41,"interpolation":"LINEAR"},{"input":42,"output":43,"interpolation":"LINEAR"},{"input":44,"output":45,"interpolation":"LINEAR"},{"input":46,"output":47,"interpolation":"LINEAR"},{"input":48,"output":49,"interpolation":"LINEAR"},{"input":50,"output":51,"interpolation":"LINEAR"},{"input":52,"output":53,"interpolation":"LINEAR"}],"channels":[{"sampler":0,"target":{"node":1,"path":"translation"}},{"sampler":1,"target":{"node":1,"path":"scale"}},{"sampler":2,"target":{"node":3,"path":"translation"}},{"sampler":3,"target":{"node":3,"path":"scale"}},{"sampler":4,"target":{"node":5,"path":"translation"}},{"sampler":5,"target":{"node":5,"path":"scale"}},{"sampler":6,"target":{"node":7,"path":"translation"}},{"sampler":7,"target":{"node":7,"path":"scale"}},{"sampler":8,"target":{"node":9,"path":"translation"}},{"sampler":9,"target":{"node":9,"path":"scale"}},{"sampler":10,"target":{"node":11,"path":"translation"}},{"sampler":11,"target":{"node":11,"path":"scale"}},{"sampler":12,"target":{"node":12,"path":"rotation"}},{"sampler":13,"target":{"node":12,"path":"translation"}},{"sampler":14,"target":{"node":12,"path":"scale"}}]}]} \ No newline at end of file diff --git a/mods/rgt_misc/teleport.lua b/mods/rgt_misc/teleport.lua new file mode 100644 index 0000000..6726e44 --- /dev/null +++ b/mods/rgt_misc/teleport.lua @@ -0,0 +1,129 @@ +local ns = { + beacons = {}, + teleports = {} +} + +minetest.register_entity(":teleport_box", { + initial_properties = { + visual = "mesh", + mesh = "teleport_box.gltf", + textures = {"teleport_box.png"}, + visual_size = vector.new(1,1,1) *5, + static_save = false, + use_texture_alpha = true, + backface_culling = false, + pointable = false, + glow = 14 + }, + on_activate = function(e) + e.object:set_armor_groups{immortal = 1} + end, + on_step = function(e, dtime) + + end +}) + +minetest.register_entity(":teleport_beacon", { + initial_properties = { + visual = "mesh", + mesh = "teleport_beacon.gltf", + textures = {"teleport_beacon.png"}, + use_texture_alpha = true, + backface_culling = false, + pointable = false, + glow = 14 + }, + on_activate = function(e, name) + if name then e.owner = name end + if not ns.beacons[e.owner] or ns.beacons[e.owner].marker then + e.object:remove() + return + end + ns.beacons[e.owner].marker = e.object + e.object:set_armor_groups{immortal = 1} + e.object:set_animation({x=1,y=1}, 1.5, 0, false) + end, + get_staticdata = function(e) + return e.owner + end +}) + +-- HACK: Override the builtin item to be teleportable, so that +-- entity teleportation can remain opt-in. +local def = table.copy(minetest.registered_entities["__builtin:item"]) +def._teleportable = true +minetest.register_entity(":__builtin:item", def) + +function ns.do_teleport(from, to, radius) + for obj in minetest.objects_in_area(from:offset(-radius, -radius, -radius), from:offset(radius, radius, radius)) do + if obj:is_player() or obj:get_luaentity()._teleportable then + obj:set_pos(obj:get_pos() -from +to) + end + end +end + +function ns.begin_teleport(from, to, radius) + ns.teleports[to:to_string()] = true + radius = radius or 2.5 + local box1 = minetest.add_entity(from, "teleport_box") + local box2 = minetest.add_entity(to, "teleport_box") + box1:set_animation({x=0,y=1.25}, 1, 0, false) + box2:set_animation({x=0,y=1.25}, 1, 0, false) + minetest.after(1, function() + box1:set_animation({x=1.25,y=2.25}, 1, 0, true) + box2:set_animation({x=1.25,y=2.25}, 1, 0, true) + end) + minetest.after(10, function() + box1:set_animation({x=2.25,y=2.5}, 1, 0, false) + box2:set_animation({x=2.25,y=2.5}, 1, 0, false) + minetest.after(0.25, function() + box1:set_animation({x=2.5,y=2.5}, 1, 0, false) + box2:set_animation({x=2.5,y=2.5}, 1, 0, false) + box1:set_properties{use_texture_alpha = false} + box2:set_properties{use_texture_alpha = false} + end) + minetest.after(1, function() + ns.do_teleport(from, to, radius) + minetest.after(0.5, function() + box1:set_animation({x=2.5,y=3}, 1, 0, false) + box2:set_animation({x=2.5,y=3}, 1, 0, false) + minetest.after(0.5, function() + box1:remove() + box2:remove() + ns.teleports[to:to_string()] = nil + end) + end) + end) + end) +end + +function ns.place_beacon(name, pos) + if ns.beacons[name] and ns.beacons[name].marker then + ns.beacons[name].marker:remove() + end + ns.beacons[name] = { + pos = pos + } + local obj = minetest.add_entity(pos, "teleport_beacon", name) + obj:set_animation({x=0,y=1}, 1.5, 0, false) +end + +minetest.register_craftitem(":teleport", { + inventory_image = "rgt_acacia_planks.png", + on_place = function(s, p, pt) + ns.place_beacon(p:get_player_name(), pt.above) + end, + on_use = function(s, p, pt) + local name = p:get_player_name() + if not pt.above then return end + if ns.beacons[name] then + if ns.teleports[ns.beacons[name].pos:to_string()] then + tell(name, "This destination is currently is use by another spell.") + else + ns.begin_teleport(pt.above, ns.beacons[name].pos) + end + else + tell(name, "No beacon placed.") + end + end +}) diff --git a/mods/rgt_misc/textures/teleport_beacon.png b/mods/rgt_misc/textures/teleport_beacon.png new file mode 100644 index 0000000000000000000000000000000000000000..d6445eeea47e860544e32f8f1c724d51c93e35b6 GIT binary patch literal 196 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|>O5T>Lo9le zO+Mt_JMX}>W5dpCf-}z_IRFGF4ju$zMsbxR#|;`9fuMD+tSi&pe(ntdi(mZjm$!I2 zqu`VPXGDV8AGb}cbNN5pn@tZm&icY^!RL>yj5Y$1H*N;b;eGu7??>VF+#27Q9GN3n nenbP0l+XkKv7br6 literal 0 HcmV?d00001 diff --git a/mods/rgt_misc/textures/teleport_box.png b/mods/rgt_misc/textures/teleport_box.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c273f4ab8e890a8408d46a9c11910416e1d440 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|;yqm)Lo9le zO+Mt_JMX}lkeHB=@ZEpI5Y9k5u!Fk`9CiKZSI8JEm|{~xo@IoqUn@=)J> z)%vFVdQ&MBb@0MRHqrT_o{ literal 0 HcmV?d00001 diff --git a/mods/rgt_player/init.lua b/mods/rgt_player/init.lua index cf50dda..a1f3054 100644 --- a/mods/rgt_player/init.lua +++ b/mods/rgt_player/init.lua @@ -49,18 +49,18 @@ Player = { local pos = m.object:get_pos() if not pos then return end m.health_display = minetest.add_entity(pos, "rgt_player:health_display") - m.health_display:set_attach(m.object, nil, vector.new(0, 17, 0)) + m.health_display:set_attach(m.object, nil, vector.new(0, 22, 0)) m.health_display:get_luaentity().owner = m end local tx = "[combine:90x90" for i = math.floor(hp /2), math.floor(m.props.hp_max /2) -1 do - tx = tx..":"..(i *9)..",0=rgt_heart_empty.png" + tx = tx..":"..(i *9)..",40=rgt_heart_empty.png" end for i = 0, math.floor(hp /2) -1 do - tx = tx..":"..(i *9)..",0=rgt_heart.png" + tx = tx..":"..(i *9)..",40=rgt_heart.png" end if hp %2 ~= 0 then - tx = tx..":"..((math.floor(hp /2)) *9)..",0=rgt_heart.png\\^[fill\\:5x9\\:4,0\\:#000\\^[makealpha\\:#000" + tx = tx..":"..((math.floor(hp /2)) *9)..",40=rgt_heart.png\\^[fill\\:5x9\\:4,0\\:#000\\^[makealpha\\:#000" end m.health_display:set_properties { visual = "sprite", @@ -341,8 +341,12 @@ minetest.register_entity("rgt_player:health_display", { initial_properties = { visual = "sprite", textures = {"blank.png"}, + pointable = false, static_save = false }, + on_activate = function(e) + e.object:set_armor_groups{immortal = 1} + end, on_detach = function(e) e.object:remove() end,